Unix复习记要详细
- 格式:doc
- 大小:216.50 KB
- 文档页数:28
Unix必备知识精华版⼀、注意事项命令和参数之间必需⽤空格隔开,参数和参数之间也必需⽤空格隔开。
⼀⾏不能超过256个字符;⼤⼩写有区分。
⼆、特殊字符含义⽂件名以“.”开头的都是隐藏⽂件/⽬录,只需在⽂件/⽬录名前加“.”就可隐藏它。
~/ 表⽰主⽬录。
./ 当前⽬录(⼀个点)。
../ 上⼀级⽬录(两个点)。
; 多个命令⼀起⽤。
> >> 输出重定向。
将⼀个命令的输出内容写⼊到⼀个⽂件⾥⾯。
如果该⽂件存在,就将该⽂件的内容覆盖;如果不存在就先创建该⽂件,然后再写⼊内容。
输出重定向,意思就是说,将原来屏幕输出变为⽂件输出,即将内容输到⽂件中。
< << 输⼊重定向。
本来命令是通过键盘得到输⼊的,但是⽤⼩于号,就能够使命令从⽂件中得到输⼊。
\ 表⽰未写完,回车换⾏再继续。
* 匹配零个或者多个字符。
匹配⼀个字符。
[] 匹配中括号⾥的内容[a-z][A-Z][0-9]。
!事件。
$ 取环境变量的值。
| 管道。
把前⼀命令的输出作为后⼀命令的输⼊,把⼏个命令连接起来。
|经常跟tee连⽤,tee 把内容保存到⽂档并显⽰出来。
三、通⽤后接命令符-a 所有(all)。
-e 所有(every),⽐a更详细。
-f 取消保护。
-i 添加提⽰。
-p 强制执⾏。
-r ⽬录管理。
分屏显⽰的中途操作空格<space> 继续打开下⼀屏;回车<return> 继续打开下⼀⾏;b 另外开上⼀屏;f 另外开下⼀屏;h 帮助;q或Ctrl+C 退出;/字符串从上往下查找匹配的字符串;?字符串从下往上查找匹配的字符串;n 继续查找。
四、退出命令exit 退出; DOS内部命令⽤于退出当前的命令处理器() 恢复前⼀个命令处理器。
Ctrl+d 跟exit⼀样效果,表中⽌本次操作。
logout 当csh时可⽤来退出,其他shell不可⽤。
clear 清屏,清除(之前的内容并未删除,只是没看到,拉回上⾯可以看回)。
1.关于shell的说法不正确的是【一种和C类似的程序语言】,正确的是【操作系统的外壳、用户与linux内核之间的接口程序、一个命令语言解释器】2.linux内核版本中,属于稳定版本的是【2.0.36、2.4.0】不稳定版本【2.1.23、2.3.11】3.Red Hat Enterprise Linux版本分别为【Red Hat Enterprise Linux AS、Red Hat EnterpriseLinux ES、Red Hat Enterprise Linux WS】4.Linux内核说法正确的是【Linux内核是Linux系统的核心部分、如今Linux内核已发展到2.6X版本、Linux内核主要由内存管理程序.进程管理程序.虚拟文件系统构成】5.在Linux中把声卡当做何种设备【输出设备】6.Linux内核管理系统不包括的子系统是【硬件管理子系统】7.不是Linux支持的是【超进程】是Linux支持的是【多用户、可移植、多进程】8.Linux是所谓的“free software”,这个free的含义是【Linux可自由修改和发布】9.Linux系统各部分的组成部分中,【内核】是基础10.Linux中充当虚拟内存的是【swap】分区11.Linux中第2个IDE接口硬盘可以表示为【/dev/hdb】?【/dev/sdb】?12.Red Hat Linux支持的硬盘接口有【IDE、SCSI】13.Red Hat Linux使用的X Windows软件有【GNOME、KDE】14.Red Hat Linux自带的两个引导装载软件是【LILO、CRUB】15.Linux分区类型默认的是【ext2】16.Red Hat Linux 9.0安装启动盘的映像文件名是【bootdisk.img】17.在Red Hat Linux 9.0安装程序中自带的图形分区工具是【Disk Druid】18.安装Red Hat Linux一般需要准备3个分区,它们是【/分区、/boot分区、swap分区】19.可以从【光盘、硬盘、FTP服务器、NFS服务器】方式安装Red Hat Linux 9.020.一般来说,Red Hat Linux内核的源程序可以在【/usr/src】目录下找到21.Linux中配置文件放在系统的【/etc】22.Linux中图像文件属于【二进制文件】23.在默认情况下,使用ls-color命令显示当前目录下的所有文件时,对于可执行文件一般显示为【绿】24.在使用ln建立文件符号链接时,为了跨越不同的文件系统,需要使用【软链接】25.系统管理常用的二进制文件,一般放置在【/sbin】目录下26.ls[abc]*表示【显示a开头的文件、显示b开头的文件、显示c开头的文件】27.用来显示文件内容的命令有【cat、more、less、head】28.使用$cd~命令后,我们会进入【用户的主目录】29.建立一个新文件可以使用的命令为【touch】30.删除文件命令为【rm】31.在给定文件中查找与设定条件相符字符串的命令为【grep】32.不能显示文本文件内容的命令是【tail】33.vi的3种工作模式是【末行模式、插入模式、命令模式】34.vi编辑器的区域可以分为【编辑区、命令区】35.vi的3种模式之间不能直接转换的是【文本编辑模式——末行模式】36.在vi编辑器中需要删除4~7行之间的内容,应在末行模式下使用【4, 7d】命令37.在使用vi编辑器时,在命令模式下,【4dw】命令的结果是删除4个单词38.存盘并退出vi可用命令:wq,还可以用【:x】命令39.要给所有的人读取权限,用数字表示【444】40.root用户的UID和GID为【0和0】41.创建一个用户指定用户的自家目录,参数为【-d】42.为了修改文件test的许可模式,使其文件属主具有读、写和运行的权限,组和其他用户可以读和运行,可以采用的方法【chmod 755 test】43.使用chmod命令修改文件权限时,可以使用有关用户的选项参数有【g、u、a、o】44.现在将/目录下的www文件权限改为只有主用户有执行的权限,其他人都没有【chmod 100 /www、chmod u+x ,g-x,o-x/www】45./etc/passwd文件中包含的信息有【uid、gid、用户主目录、shell】46.如果现在要新增一个用户叫china,则应用【adduser china、useradd china】47.一个文件名字为rr.Z,可以用来解压缩的命令是【uncompress】48.【tar】命令可以在Linux的安全系统中完成文件向磁带备份的工作49.有关归档和压缩命令,描述正确的是【unzip命令和gzip命令可以解压缩相同类型的文件】描述错误的是【用uncompress命令解压缩由compress命令生成的后缀为.zip的压缩文件、tar归档且压缩的文件可以由gizp命令解压缩、tar命令归档后的文件也是一种压缩文件】50.为了将当前目录下的归档文件myfile.Tar.gz解压缩到/tmp目录下,可以使用【tar xzvfmyfile.tar.gz-C /tmp】51.【rpm –q1 test.rpm】命令可以了解test.rmp软件包将在系统里安装哪些文件52.如果要找出/etc/inittab文件属于哪个软件包,可以执行下列【rpm –q /etc/inittab、rpm–qf/etc/inittab】53.进程和程序的区别是【程序可以长期保存,进程是暂时的】54.ps命令显示结果中STAT的s代表【休眠】55.从后台启动进程,应在命令的结尾加上【&】56.终止一个前台进程,可用【Ctrl+Z】组合键57.希望把某个在后台挂历起的作业转到后台继续运行,可使用【bg】58.at 8:00 pm是指【每天晚上8点】59.在cron中若指定00 07 * * 2,4,6则2,4,6代表【每月的2,4,6、每天的2,4,6、每小时的2,4,6、每周的2,4,6】60.Linux中自动安排任务可使用【at】61.在shell中,当用户准备结束登陆对话进程时,可用【exit、Ctrl+d、shutdown】62.一般关机的命令有【init 0、shutdown now、poweroff】63.光盘的文件系统是【iso9660】64.用户一般用【mkfs】工具来建立分区上的文件系统?65.在shell中,使用【df、du】命令可显示磁盘空间66.登陆后希望重新加载fstab文件中的所有条目,用户可以以root身份执行【mount-a】命令67.当一个目录作为挂载点被使用后,该目录上的原文件会【被隐藏,待计算机重新启动后恢复】68.从当前文件系统中卸载一个已挂载的文件系统的命令【umout】69.quotacheck的功能是【检查启动了配额的文件系统,并可建立配额管理文件】70.强制用户使用组群软配额时,设置用户超过此数额的过渡期的命令是【edquota-t】71.关于文件系统的挂载和卸载,正确的有【启动时系统按照fstab文件描述的内容加载文件系统】错误的有【挂载U盘时只能挂载到/media目录、不管光驱中是否光盘,系统都可以挂载光盘、mount –t iso9660/dev/cdrom/cdrom中的cdrom目录会自动生成】72./etc/fstab文件中其中一行如下显示,在此文件中表示挂载点的是第【2】列信息/dev/hda1 /ext3 defaults 1 273.Linux中/etc/sysconfig/network文件中hostname是指【DNS名、netbios名】74.route命令中-net是指【目标是一个网段】75.存放Linux主机名的文件是【/etc/sysconfig/network】76.快速启动网卡“eth0”的命令是【ifup eth0】77.指定系统主机名的配置文件是【/etc/syconfig/network】78.在Linux中,给计算机分配IP地址正确方法是【ifconfig eth0 166.111.219.150 netmask255.255.255.0、在Linux窗口配置中配置】错误的是【ipconfig eth0 166.111.219.150 255.255.255.0、ifconfig eth0 166.111.219.150 255.255.255.0】79.RedHat Linux 9.0下可以设置每个运行级别启动服务的工具有【ntsysv】80.配置主机网卡IP地址的配置文件是【/etc/sysconfig/network-scripts/ifcfg-eth0】81.需要写在ifcfg-eth0文件中的有【IPADDP=192.168.0.1、BOOTPROTO=DHCP、DEVICE=eth0】82.Red Hat Linux 9.0中,显示内核路由表的命令是【netstat】83.某主机的IP地址为202.120.90.13,那么其默认的子网掩码是【255.255.255.0】84.TCP/IP给临时端口号为【1024以上】85.eth1表示的设备为【网卡】86.与“ifup eth0”命令功能相同的命令是【ifconfig eth0 up】87.欲发送10个分组报文测试于主机的连通性,应使用的命令是【】88.匿名FTP站点的主目录是【/var/ftp】89.vsftpd服务器为匿名服务器时可从哪个目录下载文件【/var/ftp】90.暂时退出FTP命令回到shell中时应键入以下哪个命令【quit】91.在TCP/IP模型中,应用层包含了所有的高层协议,【FTP】能够实现本地与远程主机之间的文件传输工作92.vsftpd在默认情况下监听【21】号端口93.Red Hat Linux 9.0中默认的FTP服务器是【vsftpd】94.vsftpd服务器的启动脚本是【vsftpd】95.某个vsftpd服务器配置文件的部分内容如下,正确的是【只有/etc/vsftpd/ user_list文件中指定的用户才能访问vsftpd服务器】Anonymous_enable=noLacal_nanble=yesuserlist_enable=YESUSER_file=/etc/vsftpd/user_list96.属于FTP客户端命令的有【ls、get、put、bye】97.vsftpd出了安全、高速、稳定之外,还具有【支持虚拟用户、支持PAM或xinetd/tcp_wrappers认证方式、支持两种运行方式:独立的和xinetd、支持带宽限制等】98.DNS中ptr记录是在【主机记录】99.可用来测试NDS配置的命令是【nslookup】100.BIND DNS默认情况具有三个资源记录文件是【localhost.zone、named.local、named.ca】101.Linux中DNS调试工具有【nslookup、dig】102.是DNS资源记录类型的有【SOA、MX、NS、A】103.Red Hat Linux 9.0中的NDS使用的软件是【bind】104.DNS别名记录的标志是【CNAME】105.能启动DNS服务的是【service named start、/etc/init.d/named start】不能启动的是【service dns start、/etc/int.d/dns restart】106.DNS域名系统主要负责主机名和【IP地址】之间的解析107.Apache的守护进程是【httpd】108.浏览器与Web服务器之间通信采用的协议为【FTP】109.错误的是【Apache核心配置文件是www.confd】正确的是【Apahce可以实现模块动态加载、Apache的核心模块是不可以卸载的、实现用户主页的模块是mod_userdir.so】110.让Apahce2.0支持中文网页,可以在httpd.conf文件中设置以下选项【DefaultLanguage zh-cn、Add DefaultCharset GB2312】111.在默认的安装中,Apache把自己的配置文件放在了以下哪个目录中【/etc/httpd/conf/】A.管理员想在每天22:00让Linux自动关机,请给出相应的命令。
unixlinux期末复习
UNIX/Linux期末复习(一)_centos7可以有几个虚拟终端-CSDN博客
内核:基本操作系统,负责管理所有与硬件相关的功能,用户不能直接访问
常驻模块:提供执行用户请求服务的例程(输入/输出控制服务;文件/磁盘访问服务;进程创建和终止服务)
shell:是工具层(UNIX用户接口),shell和其他命令和工具都是独立程序,不属于内核,能够向用户和应用程序提供各种类型的服务;shell本身是一个应用程序,在用户登陆时载入内存,用户通过shell与系统通信(显示命令提示符,准备接受命令;接受命令后检测命令,然后启动相应的UNIX程序)
UNIX向每个用户指定一个执行环境(虚拟计算机),通过进程给用户分配资源。
1.csh启动时,自动执行的shell文件:CSH启动时自动执行用户主目录下.CSHRC文件中命令。
如果它作为登录SHELL运行,再执行主目录中.login文件中命令。
csh的历史机制;所谓历史机制,指的是CSH将最近一段时间内输入的命令保存起来,这样就可以重复使用前面已经输入的命令,或者前面的命令有错时,用一种简化的方法修改,而不需要将命令重新输入一遍Unix系统中常用的shell{/bin/sh;/bin/csh;/bin/ksh;/bin/bash}及其缺省shell;2.正则表达式及其特殊符号(* 、[、]、^)的作用使用正则表达式描述一个字符串模式,在模式匹配操作中使用。
在中括号之间的字符为集合的内容,如[abcd]表示与a,b,c,d中任一字符匹配。
可以用减号定义一个区间如:[a-d]表示与a,b,c,d中任一匹配,若为[ad-]表示与a,d,-,三个字符中的任一匹配^可以表示补集。
若^在开头,则表示与集合内字符之外的任一其他单字符匹配,如[^a-z]表示匹配任一非小写的字母。
若不在开头则失去表示补集的意义如[a-z^]表示可以匹配27个单字符。
3. 文件通配符;星号 * 匹配任意长度的文件名字符串(包括空字符串)点字符(.),当它作为文件名或路径名分量的第一个字符时,必须显式匹配斜线(/)也必须显式匹配例:*file匹配file,makefile,不匹配.profile文件try*c 匹配try1.c try.c try.basic问号 ? 匹配任一单字符方括号 [ ] 匹配括号内任一字符,也可以用减号指定一个范围例: [A-Z]* *.[ch] [Mm]akefile注意文件名通配符规则与正则表达式的规则不同,应用场合不同不同种类shell通配符规则会略有些差别文件目录、文件的i节点、文件的内容三者之间的关系;文件目录就是一个包含i节点和文件名的表,如果两个文件指的是同一个物理文件,则目录文件的i节点是同一个。
unix操作系统复习资料一、单选1. UNIX系统是一个(多用户、多任务)的操作系统2. UNIX 系统中,设备作为(设备文件)存在,除占据相应的节点位置外,并不占据实际的物理存储块,设备可采用文件的读写和保护方法。
3. 在UNIX系统中,用于查看系统中正在运行的进程的状态的命令是(ps)4. 为当前目录下的文件/etc/hosts创建名为myfile的符号链接文件的命令是(ln –s /etc/hosts myfile )5. UNIX系统中,用户源程序经过编译后得到的可执行文件属于(普通文件)6. 下列关于UNIX的叙述中,不正确的是(UNIX把普通文件、目录文件和设备文件分别以不同方式进行管理)7.在UNIX系统中,组成UNIX执行环境的是一系列(环境变量)8. 下列哪一个是Bournel Shell的合法的变量名(FRUIT_BASKET )。
9. UNIX命令的一般格式是([命令名] [选项] [参数] )10. 删除用户“user”及其主目录下所有文件的命令是(userdel –r user )11. UNIX文件名的长度不得超过(256 )个字符。
12. 当前目录下有一名叫jed的程序文件,要使所有人都能执行该程序,应执行(chmod a+x jed)命令。
13.显示abc.txt文件前5行的命令是(head -5 abc.txt)。
14. 输入重定向的符号是(< )15. 权限741为rwxr----x,那么权限652是(rw-r-x-w-)16. shell允许将一个进程的输出用做另一个进程的输入,命令之间使用(>)操作符17. fdisk -l /dev/hda命令的作用是(显示hda上的分区表信息)18. /etc/passwd文件用来存储(用户帐户信息和帐户的参数)信息19. 特殊变量($#)保存命令行参数的个数20. 在vi编辑器中,要从编辑模式切换到指令模式,应按(Esc )键。
计算机三级复习知识点:UNIX操作系统计算机三级复习知识点:UNIX操作系统UNIX操作系统,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,同时也是计算机三级考试的重要内容,店铺整理了相关知识点,一起来复习下吧:1.UNIX的发展长期以来,网络操作系统有老的三大阵营:UNIX、NetWare和Windows。
目前,网络操作系统新的三大阵营是Windows、UNIX和Linux。
各大公司的UNIX系统有:IBM公司的AIX系统、Sun公司的Solaris系统、HP公司的HP-UX系统等。
2.UNIX的标准化UNIX的版本众多,到了20世纪90年代,多达100多个,这使UNIX的标准化变得非常复杂。
UNIX用户协会最早从20世纪80年代开始制定UNIX标准,1984年颁布了试用标准,后来此工作由IEEE继承,制定了POSIX标准(POSD(含义是可移植操作系统接口),即IEEE 1003标准,国际标准名称为IS0/IEC 9945。
而计算机厂家在UNIX标准上划分为两大阵营:一是UNIX国际(UI),以AT&T和Sun公司为首,二是开放系统基金会(OSF),以IBM、HP和DEC公司为首。
1993年两大阵营合并,成立了公共开放软件环境(COSE)组织。
1995年,两个UNIX标准正式颁布:CDE(规定UNIX 的图形界面)和UNIX 95(规定UNIX的`应用程序界面,也称为Spec.1170)。
3.UNIX的特性UNIX的有以下8点主要特性:①多用户、多任务的分时操作系统。
②系统结构分为两部分:操作系统内核和系统外壳;内核部分由文件子系统和进程控制子系统两部分组成。
③大部分是用C语言编写,易读、易修改、易移植。
④提供了丰富的、经过精心挑选的系统调用,整个系统的实现十分紧凑、简洁。
⑤提供了功能强大的可编程Shell语言,即外壳语言。
作为用户界面,具有简洁、高效的特点。
简单题:1、操作系统的定义?5大类型?5大功能?(1)计算机操作系统是方便用户、管理和控制计算机软、硬件资源的系统(或程序集合);地位:是裸机之上的第一层软件,是建立其他所有软件的基础。
(2)五大类型(批处理、分时、实时、网络和分布式)五大功能:界面管理、文件管理、存储管理、设备管理、进程管理。
2、图1-1,描述一下内核、shell、系统调用、库函数以及应用程序之间的体系结构?UNIX可以分为内核层和外壳层两部分。
内核是UNIX操作系统的核心,它实现存储管理、文件管理、设备管理、进程管理等功能并为外壳层提供系统调用。
外壳层为用户提供各种操作命令(UNIX把它们称为shell命令)和程序设计环境。
外壳层由shell解释程序、支持程序设计的各种语言(如C、PASCAL和BASIC等)、编译程序和解释程序、实用程序和系统库等组成。
系统调用是内核提供给UNIX的程序员的接口,也是内核为外壳用户程序提供的唯一入口。
但是用户不能直接使用系统调用,所以只能在外壳终端通过内核提供的shell命令与UNIX进行交互。
3、Unix启动过程?(1)BIOS自检。
计算机通电后首先由BIOS进行POST自检,然后根据BIOS内设置以引导顺序从指定存储设备中读入引导块,并将控制权交给相应引导加载程序。
(2)启动引导程序。
引导加载程序,用于引导操作系统启动。
(3)加载内核。
引导加载程序将内核映像加载到内存中,然后该例程会调用内核,并开始启动内核引导的过程。
(4)执行init进程。
内核在完成核内引导以后,即在本进程空间中加载init进程,init 进程是系统所有进程的起点,它有两个作用:一个是扮演终结父进程的角色。
第二个是进入某个特定的运行级别时运行相应的程序。
(5)通过/etc/inittab文件进行初始化。
init的式作是根据/etc/inittab来执行相应的脚本进行系统初始化的。
(6)执行/bin/login程序。
login程序等待用户登录,若登录成功,刚将控制权交给shell,到此整个启动过程结束。
第一单元: 网络操作系统概述1、操作系统(OS,Operating System)是若干程序模块的集合,它们能有效地组织和管理计算机系统中的硬件及软件资源,合理地组织计算机工作流程,控制程序的执行,并向用户提供各种服务功能,使得用户能够灵活、方便、有效地使用计算机,使整个计算机系统能够高效运行。
2、操作系统的特征:①并发性、②共享性、③随机性。
3、网络操作系统(NOS-Network Operating System)是网络的心脏和灵魂。
4、操作系统(OS)是最靠近硬件的低层软件。
5、网络操作系统(NOS)是网络用户和计算机网络的接口,它除了提供标准OS的功能外,还管理计算机与网络相关的硬件和软件资源,为用户提供文件共享、打印共享等各种网络服务以及电子邮件、WWW等专项服务。
6、Netware 操作系统其特长是文件服务和打印服务。
作业:1、网络操作系统的主要功能。
答:一、文件服务;二、打印服务;三、数据库服务;四、通信服务;五、分布式服务;六、网络管理服务;七、Internet/Intranet服务。
2、常用的网络操作系统有哪几种?答:一、UNIX操作系统;二、Windows操作系统(1.Windows 2000 Server 操作系统,2.Windows Server 2003操作系统);三、Netware 操作系统;四、Linux 操作系统。
第二单元: Unix操作系统1、unix是一种操作系统;是一种多用户、多任务的分时操作系统。
2、unix系统一般分为三个层次,每一个层次具有不同的任务:(1)内层是核心层,即unix操作系统常驻内存的部分,该层直接与计算机硬件打交道。
(2)中间层为shell层,即命令层该层有实用性程序集,包括解释程序、汇编工具等,是用户与系统核心的接口。
(3)用户应用层是最外层,包括实用程序及除unix系统之外的其它工具软件等。
3、Unix的诞生:1969年,贝尔实验室4、Unix发展过程中,两大流派:(1)一个是最早于1983年发表的Unix System V,最新的版本是Release 4,简写为SVR4。
UNIX复习记要●Chapter 1 系统概貌⏹UNIX系统可分为两个部分(1)第一部分由一些程序和服务组成,其中包括shell程序,邮件程序,正文处理程序包以及源代码控制系统(2)第二步分由支持这些程序和服务的操作系统组成.⏹UNIX系统的普及与成功可以归结如下:该系统以高级语言书写,使之易读,易懂,易修改,易移植到其他机器上.⏹系统结构操作系统直接与硬件交互,向程序提供公共服务,并使他们同硬件特性隔离.当我们把整个系统看成层的集合时,操作系统称为系统内核,此时强调的是它同用户程序的隔离.⏹对一个文件的存取许可权由与该文件相联系的存取许可权所控制.⏹构件原语UNIX系统的宗旨是提供操作系统原语,使用户能书写小的,模块化的程序.并把他们称为构件,去构筑更复杂的程序 --- 系统的所有命令都是原语.重定向I/0原语管道原语⏹操作系统服务(OS服务)内核提供的服务有:(1)通过允许进程创建,终止,挂起及通信来控制进程的执行;(2)对进程在CPU上的执行进行公平调度;(3)对正在执行的进程分配主存;(4)为实现用户数据的有效存储和检索而分配二级存储;(5)允许进程对诸如终端,磁带机,磁盘机以及网络设备进行有控制的存取;→内核提供的服务是透明的---它能够识别一个正规文件和设备文件.⏹关于硬件UNIX系统上用户进程的执行分为两个级别:(1)用户态(2)核心态当一个进程执行一个系统调用时,进程的执行状态从用户态变为核心态:由操作系统执行并试图为用户的请求服务,如果失败,则返回一个错误代码.两态之间的区别:用户态下的进程能存取它们自己的指令与数据,但不能存取内核指令和数据(或其他进程的指令和数据---否则会导致栈溢出).然而核心态下的进程能够存取内核和用户地址,一个进程的虚地址空间可划分成仅在核心态可存取及在核心态与用户态都可存取的两部分.某些机器指令时特权指令,在用户态执行特权指令会引起错误.→内核不是与用户进程平行运行的孤立的进程集合,而是每个用户进程的一部分.⏹中断与例外✓UNIX系统允许I/0外围设备或系统时钟异步地终端CPU.✓例外条件(Exception condiction),指的是由一个进程引起的非期望事件.--->例外发生在一条指令执行的过程中;--->中断发生在两条指令执行之间.UNIX处理中断和例外的机制:(1)处理机执行级在关键活动期间,内核必须阻止中断的发生,因为如果这时允许中断,可能会引起数据的误用.(2)存储管理内核与机器硬件一起协作,建立虚地址到物理地址的转换,把编译程序生成的地址映射为物理的机器地址.该映射依赖与机器硬件的能力,----某些机器具有特殊的硬件以支持请求调页.●Chapter 2 内核导言⏹文件和进程这两类实体是UNIX系统模型中两个中心概念系统内核框图⏹系统概念◆文件子系统一个文件的内部表示由一个索引节点(inode—index node)给出,索引节点描述了文件数据在磁盘上的布局,并且包含诸如文件所有者,存取许可权及存取时间等其他信息.当进程使用名字访问一个文件时,内核每次分析文件名中的一个分量,检查该进程是否有权搜索路径中的目录,并且最终检索到该文件所有对应的索引节点.当一个进程建立一个新文件时,内核分配给它一个尚未使用的索引节点.索引节点被储存在文件系统中,但是当操纵文件时,内核把他们读到内存(in-core)索引节点表中.--->内核还包括另外两个数据结构,文件表(file table)和用户文件描述表(user file descriptor talbe).当一个进程打开或建立一个文件时,内核在每个表中为相应于该文件的索引节点分配一个表项. 一个有三个结构表:用户文件描述表,文件表,索引节点表(inode table),用这三种结构表中的表项来维护文件的状态及用户对它的存取. ◆文件系统的结构:(1) 引导块,占据文件系统的开头,是一个扇区.它可以含有被读入机器中起引导或初启操作系统作用的引导代码. (2) 超级块,描述了文件系统的状态---文件系统的大小,能够存储文件的数量,空闲空间的分布和其他信息. (3) 索引节点表,是一张装有索引节点的表,它在文件系统中跟在超级块的后面.(4) 数据块,在索引节点表结束后开始,并且包含文件数据与管理数据.一个已被分配的数据块,能且仅能属于文件系统中的一个文件. ◆文件每个文件唯一对应一个inode.Inode 描述文件详细信息,(文件名在inode 中) 目录项中包括:文件名,inode 编号 目录项的集合构成目录,目录也是文件. 打开文件--->把文件的inode写到内存 (open,fp=open();打开文件涉及到的表: (1) 进程表; (2) 打开文件表; (3) 内存inode 表. ◆进程概念:一个进程是一个程序的执行,它由一系列有格式字节组成,这些有格式字节被解释成指令(“正文”text,数据和栈区stack).UNIX 系统上的进程是被系统调用fork 所创建的实体.除了0进程以外,每个进程都被另一个进程执行系统调用fork 时创建.调用fork 的进程为父进程,被创建的进程为子进程.每个进程都有一个父进程,但一个进程可以有多个子进程.0进程在系统引导时被”手工”创建;当它创建了一个子进程(1进程)后,0进程就编程对换进程,1进程被称为init 进程,时系统中其他每个进程的祖先,并享有他们之间的特殊关系. 进程包括4部分:(1) 正文—-进程的程序代码 (2) 数据 (3) 栈(4)进程控制块(PCB)进程树:最早的进程如何创建?可执行文件的组成部分:(1)一组头标(header)--->描述文件的属性;(2)程序正文(程序代码);(3)数据段(4)其它段,如符号表信息.由于UNIX系统中进程有两种状态:核心态/用户态,所以UNIX系统的栈区也分为核心栈与用户栈.核心态--->可执行任何操作和指令;用户态--->只能执行普通操作和指令;硬件必须能够区分用户态和核心态.用户栈--->含有在用户态下执行函数调用的参数;核心栈--->含有在核心态下执行函数的栈帧.每个进程在内核进程表中都有一个表项,并且每个进程都被分配一个u区(用户区ublock),u区包含仅被内核操纵的私用数据.进程表包含一个本进程区表,本进程区表的表项指向区表的表项.区表登记项描述区的属性,诸如它是否包含正文或数据,它是共享的还是私用的,以及区的”数据”位于主存何处,等等.总结:进程表指向本进程区表,本进程区表指向该进程的正文区,数据区或栈区的区表表项的指针.本进程区表区表进程的数据结构进程表(proc)--->常驻内存-→核心通过proc可以知道进程的存在u区--->通过proc可以查到u区,反之亦然.进程表表项及u区包含进程的控制信息和状态信息.u区是进程表表项的扩展.进程表中的字段包括:(1)状态字段;(2)表示符---指示拥有该进程的用户---进程的所有者;(3)当一个进程被挂起时的事件描述符集合---阻塞的原因;(4)指向当前正在执行的进程的进程表项的指针---指针;(5)当前系统调用的参数,返回值及错误码---调用的参数;(6)所有的打开文件的文件描述符;(7)内部I/0参数;(8)当前目录和当前根root;(9)进程的线程和大小限制.✓进程的上下文.一个进程的上下文包括被进程正文定义的进程状态,进程的全局用户变量和数据结构的值,它使用的机器寄存器的值,存储在它的进程表项与u区中的值以及它的用户栈和核心栈的内容.---->相当于进程执行的某一点时的瞬间状态.---->系统调度时,进程进行上下文切换.----->当从用户态切换到核心态时,内核保留足够的信息以便调度返回能够回到用户态.✓进程的状态(1)运行状态核心态下运行;用户态下运行.(2)阻塞(3)就绪✓睡眠与唤醒进程会因为它们正在等待某些事件的发生而进入睡眠,例如:等待来自外围设备的I/O完成;等待一个进程的退出;等待获得系统资源.当我们说进程在一个事件上睡眠时,就意味着,直到该事件发生时,它们一直处于睡眠状态;当事件发生时它们被唤醒,并且进入”就绪”状态.当一个进程被唤醒时,它完成了一个从”睡眠”状态到”就绪”状态的状态转换.核心状态下执行的进程能暂停他们的执行而进入睡眠状态,但没有哪一个进程能把另一个进程投入到睡眠状态.✓内核的数据结构使用固定长度的表,而不是动态地分配空间.Chapter 3 高速缓冲(相对于块设备)✓缓冲头部缓冲区的组成:(1)头部--->(控制信息)--->描述缓冲区的状态头部的结构:1.设备号2.块号3.状态0:上锁→缓冲是否正被使用→是否包含有效数据→是否延迟写→正在写→等待变为空闲.4.散列队列指针(双向链表)某个或某几个设备共用一个散列;系统中可能有多个散列;散列的数据查询最快.5.空闲队列指针(双向)设备空闲时放入;空闲队列只有一个.(2)数据区--->放数据的地方(与块的大小相同)头部到数据区数组是一对一的映射关系.头部和数据区统称为”缓冲区”✓缓冲池的结构内核按最近最少使用的算法把数据缓存于缓冲池中.当系统启动时,每个缓冲区都放在空闲表中,当内核想要一个任意的空一个闲缓冲区时,它从空闲表的头部取一个缓冲区.内核把一个缓冲区还给缓冲池时,它通常把该缓冲区附在空闲表的尾部,(除非出错),但不插到中间.因此,离空闲表头部近的缓冲区比离空闲表头远的缓冲区时最近最少使用的.✓缓冲区的检索--->如何访问磁盘地址?--->设备号+块号→散列地址把一个缓冲区分配给磁盘块时可能出现的5种情况.(1)访问对象在散列中,而且空闲;指该对象以前曾被访问过,但现在无人使用处理办法:打断空闲链(2)散列队列中无处理办法:分配一个空闲缓冲区,改变列表(3)散列队列中找不到,试图分配空闲缓冲区时,发现被标识为”延迟写”处理办法:把”延迟写”的缓冲区内容写到磁盘上,并分配另一个缓冲区.(4)散列队列中找不到,并且空闲缓冲区已用完解决办法:睡眠(5)散列队列中找到,但它的缓冲区当前忙解决办法:睡眠✓释放缓冲区链表操作→如果有等待缓冲的进程→唤醒进程✓磁盘块的读写进程在高速缓冲区中搜索某个磁盘块.如果它就在高速缓冲中,则内核不必物理地从磁盘上读该块,就可以立即返回之;如果它不在高速缓冲区中,则内核调用磁盘驱动程序,以”安排”一个读请求,而后去睡眠.当一个进程顺序地读一个文件时,较高层次的内核模块(比如文件子系统)可能会预期到对另一个磁盘块的需要,因而该模块异步地请求第二个I/O,希望一旦需要这部分数据时,已经在主存中----->内核执行提前读磁盘块的算法.--->访问某块时,其周围的若干块也一病被读入.✓高速缓冲的优缺点(1)缓冲区的使用提供了统一的磁盘存取方法,因为内核不需要知道I/O的原因.(2)系统对进行I/O的用户进程没有做数据对齐限制,因为内核在内部实现了数据对齐.(3)高速缓存的使用可减少磁盘访问的次数,从而提高整个系统的吞吐量,减少了响应时以间.(4)缓冲区算法有助于保证文件系统的完整性,因为他们维护一个公共的,包含在高速缓冲中的磁盘块的单一映象.(5)访问磁盘次数的减少对于良好的吞吐量与响应时间是很重要的,但是高速缓冲策略也引进了一些缺点.由于延迟写使得内核没有立即把数据写入磁盘,所以当系统发生瘫痪使磁盘数据处于错误状态时,系统显得无能为力.(6)高速缓冲的使用,使得当往用户进程中读或写时需要因此额外的数据拷贝过程.Chapter 4 文件子系统(文件系统/文件的内部表示)每个文件都有一个唯一的索引节点(inode).Inode中包括:(1)文件所有者(2)时间(何时创建,修改,访问)(3)文件类型(正规文件/目录—目录也做文件处理/设备-字符设备,块设备/管道-有名,无名/连接)(4)存取权限(5)文件长度(6)文件地址(7) 连接计数器(文件名的个数) (8) 文件数据在文件系统中的位置文件名不在inode 中,文件名在目录中,内核把路径名转换成文件的inode内存inode 除了复制磁盘inode 的字段外,还包括: (1) 内存inode 的状态a) 是否为安装点 b) 数据是否一致c) 内存inode 是否与磁盘inode 一致 d) 上锁---是否允许其他用户使用 e) 是否等待开锁的进程 (2) 逻辑设备号 (3) 指针 (4) 细数—引用数a) 有多少各进程打开文件b) 多用户打开同一个文件时,内存inode 相同,节省空间打开一个文件时,inode 就是活跃的,当inode 引用数为0时它才处于空闲表上,以表示内核可以把这个内存inode 重新分配给另一个磁盘inode✓ 对inode 的存取(1)与在高速缓冲中找到一个磁盘块的算法几乎完全相同--->建立散列内存把设备号和inode 映射到一个散列队列上,并且搜索该队列以便找到此inode.(3) 内存申请空闲inode,内核从空闲表中分配一个空闲inode,并上锁.如果无空闲inode,则返回错误高速缓冲控制中--->等待✓ 正规文件结构—普通文件结构二次间接空闲块一次间接直接 索引块Inodeinode包含文件数据在磁盘上的位置明细表,因为磁盘上的每一块都有编号,所以明细表是磁盘号的集合.如果文件中的数据被储存到一个连续的磁盘段上,只要把起始块地址与文件大小存储在inode中就足以存取文件中的所有数据了.如果不把磁盘上的空闲存储区分割成碎片,则文件系统中的文件便无法扩展与收缩.上图中,直接索引块含有实际数据的磁盘块号,一次间接的那些块则指向一个含有直接块号的磁盘块.若要通过间接块存取数据,内核必须先把间接块读出,找到相应的直接块号,然后读出直接块找到数据.二次间接的块包含一个间接块表,三次间接的块包含一个二次间接的块表,依此类推……✓目录目录在数据区,在结构上与一般文件相同目录是使文件系统具有数型结构的那些文件;目录在文件名到inode的转换中扮演重要角色.目录是文件,只是它的数据是一系列目录表项,每个目录表项由一个inode号和一个包含在这个目录中的文件名组成.目录项表的结构:内核就像为普通文件存储数据那样来为目录存储数据,也使用inode结构和直接块级,间接块级.✓路径名到inode号之间的转换.Eg./home/wangyimin/example.txt操作系统并不能直接访问文件名.必须查找到相应的inode号.系统调用函数:manei();--->把目录项中的分量转换为inode号;返回输入的路径名对应的inode号✓超级块超级块的结构:(1)文件系统的规模---文件系统有多大;(2)文件系统中空闲块的数目;(3)在文件系统上可用的空闲表块;(4)空闲表中下一个空闲块的下标;(5)inode表的大小;(6)文件系统中空闲inode的数目;(7)文件系统中的空闲inode节点表;(8)空闲inode表中效益个空闲inode的下标;(9)空闲表快的锁定字段和空闲inode标的锁定字段.(10)用来指示出超级块已经被修改了的标志.(11)碎片的大小(Fragment)✓为新文件分配inode内核申请inode→在空闲的inode表中,取一个空闲inode号→如果成功→返回ok;如果不成功→搜索inode区→空闲inode区写入SB的空闲inode表.✓磁盘块的分配空闲块表:当进程向文件写入数据时,内核必须从文件系统中分配磁盘块,以直接用作数据块(有时也用作间接数据块),文件系统超级块包含了一个用来把文件系统中的空闲磁盘块高速缓冲起来的数组.实用程序mkfs(文件系统生成)把一个文件系统的数据块组织到一张链表中,表中的每个链都是一个磁盘块,块中包含的是一个数组,数组的分量是空闲磁盘块号,并且,数组中有一个分量是链表上的下一块的块号.空闲磁盘块号的链接表上图中,第一块是超级块空闲表,耳链表上的位于后面的块包含更多的空闲块号.✓其它文件类型UNIX还支持另外两种文件类型:管道文件和特殊文件.(1)管道文件(fifo)的数据是短暂的,在这一点上不同于正规文件.一旦数据从管道上读出,就不再能从管道上读它了.另外,管道的读取是有严格次序要求的.管道文件只使用直接索引.(3)特殊文件.块设备特殊文件和字符设备特殊文件.两种文件都指明了设备,因此文件索引节点不引用任何数据,而是含有两个称为主与次的设备号.设备:---->块设备/字符设备设备号:--->主类型/次类型Chapter 5 文件系统的系统调用.系统调用open是进程存取一个文件中的数据必须采取的第一步.Fd=open(pathname,flags,modes)下图给出inode表数据结构,文件表数据结构和用户文件描述符数据结构之间的关系:用户文件描述表文件表Inode表文件打开后的数据结构每个open返回给进程一个文件描述符,它在用于文件描述符表中对应的表项指向文件表中唯一的表项,即使同一文件(/etc/passwd)被打开两次.一个被打开文件的所有实例对应的那些文件表项都指向内存inode表中的同一表项.上述进程能够读写文件/etc/passwd,但只能通过图中的文件描述符3和5.内核在open调用所分配的文件项中记下读/写能力.下图给出两个进程打开文件期间(没有其他进程),相应的各数据结构之间的关系.用户文件描述表(进程A) 文件表Inode表文件被引用一次,inode中的引用数+1文件关闭时,inode中的引用数-1inode中的引用数=0时,关闭文件管道管道允许在进程之间按先进先出(fifo)的方式传递数据,管道也使进程能够同步执行.管道的传统实现方法是采用文件系统作为数据存储.有两种类型的管道:有名管道和无名管道除了进程最初存取他们的方式不同外,两者是一样的.进程对有名管道使用系统调用open,使用系统调用pipe建立无名管道.无名管道在子进程间使用.只有相关进程发出pipe调用后,才能共享无名管道的存取.✓系统调用dup系统调用dup将一个文件描述符拷贝到该用户文件描述符表中的第一个空槽中,给用户返回一个新的文件描述符.用户文件描述表文件表Inode表系统调用dup之后的数据结构因为dup复制了文件描述符,所以它对应的文件表项引用数+1如上图,如果某进程复制了文件描述符3,原文件描述符对应的文件表项的引用数+1,同时该文件描述符被复制到了用户文件描述符的第一个空槽6中,即dup返回的新的文件描述符为6✓文件系统的安装和拆卸一个物理的磁盘设备由一些被磁盘驱动程序划分的逻辑段(disk section)组成.每个逻辑段有一个设备文件名,通过打开适当的设备文件名,然后读写该”文件”,进程就能存取一个段中的数据.进程将这个”文件”视为一个磁盘块序列.磁盘的一个段可以含有一个逻辑的文件系统.系统调用mount将在一个磁盘的指定段中的文件系统连到一个已存在的文件系统目录树中,而系统调用umount将一个文件系统从该文件目录树中拆卸下来.因此,系统调用mount允许用户以文件系统的方式存取磁盘段中的数据,而不是按磁盘块序列的方式存取数据.Mount(special pathname,directory pathname,options)只有系统调用link才检查一个文件的文件系统,因为系统V允许文件的联结扩展到多个文件系统.⏹安装文件系统的安装表包括:(1)设备号,用来标识被安装的文件系统(逻辑文件系统)(2)指向含有被安装的文件系统超级块的缓冲区的指针;(3)指向被安装的文件系统的根inode;(4)指向安装点的目录的inode的指针.安装过程(算法)(1)权限判定---内核只允许属于超级用户的那些进程安装或拆卸文件系统;(2)取inode---内核查找特殊文件的inode,它代表了要被安装的文件系统;(3)在安装表中找一个安装位填写---找出文件系统要安装到的目录inode;(4)在安装点inode上作标记---内核在安装表中分配一个自由槽,标记该槽为已使用,并将安装表中的设备号字段赋值.在文件路径名中跨越安装点跨越安装点的情况有2种:(1)从原安装点的文件系统跨越到被安装的文件系统(方向是从整个系统的根到某个叶节点)内核需要检查inode是否是安装点:如果是,内核便知道它是一个安装点(2)从安装的文件系统跨越到安装点的文件系统.内核在找出目录种一个路径名分量的inode号之后,内核要检查该inode号是否为一个文件系统的根节点.如果是,而且当前inode也是根,路径名分量是点点”..”,那么内核便识别出该节点是个安装点.如:mount /dev/dsk1/usrcd /usr/scr/utscd ../../命令mount在作了一致性检查后,调用系统调用mount,并将磁盘段”/dev/dsk1”上的文件系统安装到”/usr”上.第一个cd命令使shell执行系统调用chdir,内核分析路径名,在”/usr”处跨越安装点.第二个cd命令使内核分析路径名,并在第三个”..”处跨越安装点.如果当前分量不是namei安装点,则算法不变,否则,内核查找文件系统安装表,在新的文件系统种开始解析.⏹拆卸umount(special filename);内核取要拆卸的设备的inode节点,查找特殊文件的设备号,释放对应的inode,并在安装表中查找设备号等于该特殊文件的设备号的表项.在内核真正拆卸一个文件系统之前,它要在inode表中查找设备号等于被拆卸的文件系统的设备号的所有文件,以便确认在该文件系统中没有正在使用的文件.(1)内核删除安装表中的内容,同时将无效的缓冲区移到缓冲区自由链表的表头,是高速缓存中的其他有效块能在高速缓存中保留的时间更长些.(2)内核在安装点的inode中,清除系统调用mount所设置的”安装点”标志并释放该inode.✓系统调用link系统调用link在文件系统结构中将一个文件联结到另一个新名字上,从而为一个已存在的索引节点创建一个新的目录项.文件系统中对该文件的每个联结(link)都有一个路径名.进程可以通过其中的任意一个路径名存取该文件.内核并不知道哪个名字是最初的文件名,所以对任何文件名都不作特殊对待.✓文件系统的可靠性(1)一致性当系统发生故障时,使文件系统的破坏达到最小程度,内核要按照某种次序来进行磁盘操作→设计OS时尽量考虑内核从一个目录中清除一个文件名时,它要在清除该文件的内容及释放其inode之前,同步地将父目录写到磁盘上.否则,磁盘上的该目录表项就有可能指向了一个已归还(或已重新分配)的inode。