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。
1.UNIX系统内核的大部分是用C语言实现的。
这使得操作系统的移植工作变得比较容易。
2.UNIX系统是一种通用、多用户、分时操作系统。
3.UNIX系统有哪些特性?1)用简单的设计技术和方法去完成较复杂、较全面的功能。
2)支持多用户、多任务的运行环境。
3)文件系统可随意装卸。
4)良好的开放性和可移植性。
5)强大的命令功能6)完善的安全机制7)具有网络特性4.虚拟计算机:操作系统在计算机系统体系结构中所处的位置很特别,它的一边面对的是应用程序和用户,另一边面对的是计算机系统的硬件。
操作系统的职责是协调计算机内部所有的活动,为用户和应用程序构造一个开发和运行的虚拟环境,这个虚拟环境比计算机的实际环境具有更加友好、便利、有效等多种性能,把这种环境称作虚拟计算机。
5.请说明UNIX系统内部完成用户登录及用户退出的简要处理过程。
1)当UNIX系统正常启动完成后,系统就可以接纳用户的登录。
这时系统中有一个初始化程序init为系统中的每一个用户终端的端口激活一个getty程序,getty在用户终端上显示“login:”提示符号,并等待用户的输入。
2)用户输入用户名后,由getty读取用户的输入然后启动login程序,由login程序完成完成用户的登录过程。
3)login程序开始执行并在终端上显示“password:”提示,等待用户输入口令。
4)用户输入口令后,login程序完成用户名及口令的核实,无误时调入shell程序,它显示“$”或“%”提示符表示shell 程序准备就绪,等待用户输入命令。
5)当用户退出系统系统时,shell程序终止运行,UNIX系统将会在终端上启动一个新的getty程序,等待新的用户登录。
6.UNIX的命令格式中通常包括哪些内容?UNIX命令使用格式比较统一:Command [-options] [arguments],其中Command表示UNIX命令名,options 表示命令的执行选项,可以默认。
1-2章1.Linux系统的应用主要涉及4个方面:应用服务器、嵌入式领域、软件开发和桌面应用。
2.Linux具有开放性是指它遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。
Linux系统一般有4个主要部分:内核、Shell、文件系统和应用程序。
3.简述Linux系统的以下特点:多用户;多任务;设备独立性;良好可移植性。
4.简述Linux系统的组成。
5.试比较Linux与windows系统的区别。
6.Linux的版本号分为两部分,即内核版本与发行版本。
内核版本号由3个数字组成:r.x.y。
r:目前发布的内核主版本。
x:偶数表示稳定版本;奇数表示开发中版本。
y:错误修补的次数。
Linux内核版本号2.1.11表明这是一个可以使用的稳定版本。
(错)7.一些组织和厂家,将Linux系统的内核、应用软件和文档包装起来,并提供一些系统安装界面、系统配置设定管理工具,就构成了Linux发行版本。
Linux系统内核的版本号相对独立,根据GPL准则,虽然各发行版本都源自一个内核,但都没有自己的版权。
Linux的各个发行版本都是使用Linus主导开发并发布的同一个Linux内核。
8.Linux系统使用较灵活的分区名方案,该方案基于文件,文件名的格式为/dev/xxyN,其中:/dev/是Linux系统下所用设备文件所在的目录名。
xx:分区名的前两个字母表示分区所在设备的、类型,通常是hd(IDE硬盘)或sd(SCSI硬盘)。
y:这个字母表示分区所在的设备。
如:/dev/had(第一个IDE硬盘)或/dev/sdb(第二个SCSI硬盘)。
N:最后的数字白代表分区。
前4个分区(主分区或扩展分区)用数字1~4表示,逻辑驱动器从5开始。
如:/dev/hda3是第1个IDE硬盘上的第3个主分区或扩展分区;/dev/sdb6是第2个SCSI硬盘上的第二个逻辑驱动器。
9.说明你所使用的计算机的硬盘及内存容量,并为自己的计算机设计一个合理的分区方案。
UNIXLINUX⼤学教程重点整理终极版第⼀、⼆章1.第⼀个Unix系统是什么时候,由谁开发的?AT&T贝尔实验室1969年Ken Thompso开发2.⾃由软件基⾦会(Free Software Foundation,FSF):Stallman(MIT AI实验室⼈员)启动了⾃由软件基⾦会,其指导原则是:“计算机⽤户应该能够⾃由地修改软件以适应⾃⼰的需求,并⾃由共享。
”⾃由的含义不是免费,是指修改和共享的⾃由。
为了避免误解free的含义,⾃由软件现在称为“Open Source Software”。
3.GNU:FSF开发的⼀个类Unix操作系统,全称是GNU`s Not Unix; Richard Stallman《GNU宣⾔》解释为何发起该计划的⽂章,其中⼀个理由就是要“重现当年软件界合作互助的团结精神”。
为保证GNU软件可以⾃由地“使⽤、复制、修改和发布”4.GPL:Stallman编写的通⽤公共许可证(general public license, GPL)。
(1)两个促使GPL出现的原因:FSF开发了⼤量⾼质量的OSS;不是只有FSF⼀家在倡导OSS。
(2)GPL中最重要的⼀点:任何⼈以OSS为基础创建⼀个新产品时,新产品也必须在GPL协议下发⾏,也就是必须公开源码。
在OSS上应⽤GPL,则允许任何⼈发⾏该软件、查看其源码、修改该软件并发⾏修改后的软件。
GPL和OSS对于计算机软件技术的发展具有深远的意义。
5.unix发展:(1)20世纪70年代的Unix:Unix技术由贝尔实验室扩散到Berkeley,1977年,Bill Joy装配了第⼀版的Berkeley Unix,被称为Berkeley Software Distribution(BSD);1979年,AT&T公司开始商业化包装Unix进⾏销售,第⼀个商业版本的Unix称为UNIX System III,并很快就升级到System V。
unix复习文件终极版1. 显示当前目录所有的文件和目录信息> ls //list> ls XX目录//查看指定目录下边的文件信息2. 显示当前文件目录位置> pwd3. 目录之间切换> cd 目录名字> cd .. 切换到上级目录4. 切换到完全命令模式> init 3 进入命令模式> init 5 进入可视化操作界面5. 用户切换到超级管理员> su - root //$是普通用户#是超级管理员> su -> su root //也可以切换到root用户,但是没有超级管理员权限6. 超级管理员切换回普通用户> exit7. 查看当前用户是谁> whoami8. 输出一个文件内容> cat 具体文件9. 创建目录make directory> mkdir hello> mkdir hello/world> mkdir -p first/second/third //递归创建3个目录10. 给目录改名字move移动> mv 旧名字新名字> mv book.ods bread.ods> mv first/second first/six //把second改名字为six11. 移动目录操作move> mv 目标新的地址> mv bread.ods 目录> mv ten/bread.ods first //移动,因为first目录存在mv ten/bread.ods firstt //改名字,并且移动文件到当前目录mv 目标地址//移动,只要地址是存在的目录就是移动mv 目标地址//改名字,地址只要不存在就是改名字12. 复制操作copy> cp 源文件复制文件> cp -R 目录目标目录//复制"目录"需要添加参数-R> cp 源文件目标/新的名字//复制的同时给起一个新的名字13. 删除目录、文件> rm 文件//删除单个文件> rmdir 目录//删除单个目录> rm -rf 文件//可以删除一切普通的目录或文件递归recursive 强制forcerm -rf / // kill your self14. 输出文件内容> cat 文件//一次性输出文件全部内容> more 文件//分页显示文件内容敲回车查看下边的内容,不支持回看中间停止:q显示内容百分比> less 文件//分页显示文件内容可以通过上、下、左、右查看文件具体内容停止:q没有百分比显示> head -n 文件//查看文件前n行内容> tail -n 文件//查看文件末尾n行内容15. 计算文件行数> wc 文件//计算文件行数16. 创建文件> touch filename //创建文件17. 给文件添加内容> echo content > filename //给文件添加内容[覆盖添加内容,原内容被删除]> echo 内容>> filename //给文件追加内容> echo 内容>/>> newfilename //会创建一个新的文件,并且有添加内容[重定向方式]18. 给系统增加一个用户user add/mod/del> useradd username //添加一个用户该方式创建用户,并没有显示设置用户的组> useradd -g NNN 用户名//添加用户并设置组别> useradd -g NNN -d 目录用户名//添加用户并设置家目录、组别> useradd -u XXX 用户名//添加用户并显示设置用户编号18.1 修改用户> usermod -u 用户编号-g 组编号-d 家目录用户名//修改用户18.2 删除用户> userdel -r 用户//删除用户,并且删除家目录19. 给系统创建组group add/mod/delgroupadd moviegroupadd musicgroupadd -g XXX 组名//添加组并设置组编号19.1 修改组> groupmod -n 新名字旧名字//修改组的名字19.2 删除组> groupdel 组名20. 查看系统用户信息> cat /etc/passwd 用户信息> cat /etc/group 组的信息21. 查看具体指令使用参数方法> man 指令22. 给用户设置密码> passwd 用户名问题:1:what are the two major UNIX system versions?`AT&T UNIX version`berkeley UNIX2:what is the general format of a unix command?$ command [options] [arguments]3:name the different types UNIX shells whatare the prompt signs for UNIX shell? Bourne shell (sh)$267页Korn shell (ksh)$C shell (csh)%Bourne again shell (bash)$4:what are the editor in UNIX operting system?Line editors55页56页Full screen editors5:what is the different between a relative and absolutepathname?www.ECIT.arg/software/jiao/jiao.c (absolute)software/john/jiao.java (relative)6:UNIX is mostly written in the (assembly) language7:BSD stand :Berkeley software distribution8(head) command is used to display the top of the file9:(pipe)and (socket)are special file types10:in vi (7j )command is used to go to the 7th line11:explain the following commands with description.optionand exampleWc:Head:first line of fileTail :last line of fileWc—to find out the number of lines,words or characters-1:lines-w:words-c:charactersTail-Head-12:what is shell script?write a shell script program that will do the following tasks in order `shows the current date and time $date`shows the number of users on the system$who`display the current month calendax$cal 6 2015Display the files and directories$lsClose the terminalexit13:explain the operating system model?`kernel layera:inner most layerb:direct access to hardwarec:loading executing and allocate resource`servicea:access to output devicesb:access to storage devicesc:fail manipulation`command layera:shell programb:user directry accessc:set of commandd:command language14:explain the following command with description option and example a:ls—list of all the filesb:pwd—print working directoryc:cd—change directory15:select path which helps avoid complete paths all the time in linux Relative pathname16:which of the following vi editing command to delete characterKey17:shell scripting is process of (program)18:explain the ls and-lsoption with suitable example120页$lsBb desk exam music public student19:what are the operating system environment?15页System :sco UNIX :HP unix :solaris AIXBSD: free BSD :open BSD :net BSD ;MAC qs BSD20:what are quit command keys ?it usage of each keys79页21:what are the text input made keys?215页22:what is shell redirection operator?213页>the greater sign>> double greater sign23:what is the command to look at the last 10 linesof a files $ tail -10filename24:what are the shell variables?Environment variable and local variable18.which command is used to sort the lines of data in a file in reverse19.Supercomputer are fastest and the most expensive computers 1000 times fastest thanmainframe computers.20.ASCIIstands for:American Standard Code0 for Information Interchange.21.Key0 opens a blank line above the current line and places the cursor at the beginning of thenew line.22. find Command which cab be used to find strings and values in a text document.23. :wq Key writes save the contents of the file and quits the25.The UNIX os was the brainchild of Ken and Dennis Ritchir26.grep stands for :Global Regual Expression Print.27.Tail Command is used to display the button of the file.28.bash is a built-in shell command.29.In vi -U command is used to undose all the changes on the1.What are the differences between Windows and UNIX operating system?UNIX is used for servers or professionsWindows is used for PC2.What are navigation keys? Mention it usage of each keys.key operationh or [Left Arrow] Mores the cursor position one space to the left.j or [Dawn Arrow ] Mores the cursor position one line down.k or [Up Arrow] Mores the cursor position one line up.l or [Right Arrow] Mores the cursor position one space to the right.3.How do you charge File Access Permissions?--rw-e-e-- 1,tyy group 0 Jane.4.what are the differences between primary memory and secondary memory?Type Location UsagePrimary storage Actside of the CPU Entire programs or part of the programsHigh-speed derices(RAM) currently being executed part of theSecondary storage Low-speed clerices Programs not currently being executed Electro magnetic or optial Large amunt of data.5.how to creat and save a file in vi editor?create: vi filenamesave :wq/doc/2a1389934.html,mand which can be used to find strings can values in a text document?find11.which of the following commands can be used to information about all users are loggeal intothe12.which command will be used with vi editor to insert text beginning of current line?i13.which key cursor position forward are word.Key w14.which permission gives you cuthority to modify the contents of a line?x-eneecure.hxpew→Not perirsion15.Symbol which indicates that user in directory in Linux?pwd16.which of the following commands can be used to get information about all users who arecurrently logged into the system?Who am I17.which command will be used with vi editor to insert text to left of cursor?i1.Explain the following commands with description ,options and examples.a) grep:The grep command to secarch for a specrfied pattern in a file or list of fileb) more:Is another pager provided for your conveniancec) less:another pager that is provided under Linuxa) -c Displays only the count of the mathing lines in each file that contains the-n Displays a line number before each output line-v Displays only those lines that do not match the patten-help Displays help page and exitsb) -lines: Display the indicated number of lines per+line-number stants up at line-number+/potlern stants two lines above the line containing the per-c cleans the screen before display each page insert of scrolling -d Display the promptc) less-? Display usage and list of optionsless--help Display usage and list of optionsmore less Display manual pages2.what is shell script ? Write a shell script that will do the following task inclear the screenClear.print the current diretorypwdDisplay the text East China Institute of Universityecho East China Institute of Technologycreat directory called software-engineeringmkdir soft-engineeringDisplay the life and directory list。
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。
UNIX操作系统+闭卷+A一、单选1、Unix系统文件安全及权限管理中,文件的权限不包括()A、用户属主B、管理员C、其他用户D、同组用户2、下列命令不可以显示文件内容的是A、CatB、LsC、PgD、More•·A、hog•B、hug•C、huge•D、thug5、rm的功能是()文件A、创建B、移动C、复制D、删除6、可以给变制定文件或目录的访问权限的命令是()A、findB、chownC、chgrpD、chmod7、返回用户主目录的命令是()A、FindB、ChownC、ChgrpD、Chmod8、对于文件的权限-rwxr-xrw-表示含义A、改文件所有者只有读、执行权限B、改文件所有者有读、写、执行权限C、改文件所有者只有读、写权限D、改文件所有者只有写、执行权限•·A、-•B、p•·A、8.3•B、256•C、8•D、25511、要消除单引号的特殊含义使用()A、后引号B、单引号C、双引号D、反斜杠12、如果当前目录为/home,进入目录/home/stud1/test的命令是()A、cd /stud1/testB、cd stud1/testC、Cd homeD、Cd test13、在vi 命令方式下,恢复被删除内容的操作命令是()。
A、rmB、oC.ddD.u•·A、使用•B、授权•C、开机•D、上网16、修改口令的命令是()A、PasswordB、Who•·A、huge•B、hog•C、hug•D、thugA、#•B、?•C、[]•D、*•·A、-rw-r-x---•B、-r-xr-xr-x•C、-rw-rw-rw-•D、-rwxr-xr-x22、在vi编辑器中,将光标移动到屏幕最下行所使用的命令是A、MB、qC、HD、L23、执行完命令chmod 664 file 2后,以字母形式(r,w,x)列出文件的读写保护模式A、-rw-rw-r-B、-r-xrwxrwxC、-rwxe-r--D、-rw-r-xr-x24、在UNIX下,要终止一个后台进程可用()命令。
一、UNIX操作系统及常用操作1.DOS操作系统是单任务单用户的操作系统;UNIX是多任务,多用户的操作系统。
分时(time sharing),实时(real-time)2.管道UNIX允许一个程序的输出作为另外一个程序输入,多个程序串起来看起来好象一条管道一样。
通过各个简单任务的组合,就可以完成更大更复杂的任务,并极大提高了操作的方便性。
后来DOS操作系统也借鉴并提供了这种机制。
3. UNIX的命令解释器由Shell实现。
UNIX提供了三种功能强大的Shell,每种Shell本身就是一种解释型高级语言,通过用户编程就可创造无数命令,使用方便。
4. UNIX具有很强的联网功能,目前流行的TCP/IP协议就是UNIX的缺省网络协议,正是因为UNIX和TCP/IP的完美结合,促进了UNIX、TCP/IP以及Internet的推广和普及。
目前UNIX一直是Internet上各种服务器的首选操作系统。
5.Unix由3部分组成:Kernel(内核),Shell(外壳),工具及应用程序。
6.控制台(Console)这是一种特殊的终端,由显示器、键盘(和鼠标)组成,分别连到主机的专用接口(监视器接口、键盘接口、鼠标接口)上。
一般一台主机只能接一个控制台,控制台可以完成普通终端不能完成的工作:非常重要的信息(如严重的错误信息)只能在控制台上显示,有些特殊的任务(如执行修复工作)也只能在控制台上完成。
除了实现以上特殊功能外,控制台还可以象其它终端那样工作。
7.一般用户的UNIX操作系统提示符一般为”$”。
root用户的UNIX操作系统提示符一般为”#”。
8.前台进程(Foreground process)可以和用户直接进行人机交互的进程。
前台进程序可以接收键盘输入并将结果显示在显示器上。
缺省状态下用户启动的UNIX程序运行在前台。
9.后台进程(Background process)不直接和用户进行交互的进程。
用户一般是感觉不到后台进程程序的运行。
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。