操作系统文件管理练习及答案

时间:2019-05-14 19:55:13下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《操作系统文件管理练习及答案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《操作系统文件管理练习及答案》。

第一篇:操作系统文件管理练习及答案

文件管理 练习题(一)单项选择题

1.操作系统对文件实行统一管理,最基本的是为用户提供()功能。A.按名存取 B.文件共享 C.文件保护 D.提高文件的存取速度

2.按文件用途分类,编译程序是()。A.系统文件 B.库文件 C.用户文件 D.档案文件

3.()是指将信息加工形成具有保留价值的文件。A.库文件 B.档案文件 C.系统文件 D.临时文件 4.把一个文件保存在多个卷上称为()。A.单文件卷 B.多文件卷 C.多卷文件 D.多卷多文件

5.采取哪种文件存取方式,主要取决于()。A.用户的使用要求 B.存储介质的特性 C.用户的使用要求和存储介质的特性 D.文件的逻辑结构 6.文件系统的按名存取主要是通过()实现的。A.存储空间管理 B.目录管理 C.文件安全性管理 D.文件读写管理

7.文件管理实际上是对()的管理。A.主存空间 B.辅助存储空间 C.逻辑地址空间 D.物理地址空间

8.如果文件系统中有两个文件重名,不应采用()结构。A.一级目录 B.二级目录 C.树形目录 D.一级目录和二级目录

9.树形目录中的主文件目录称为()。A.父目录 B.子目录 C.根目录 D.用户文件目录

10.绝对路径是从()开始跟随的一条指向制定文件的路径。A.用户文件目录 B.根目录 C.当前目录 D.父目录 11.逻辑文件可分为流式文件和()两类。A.索引文件 B.链接文件 C.记录式文件 D.只读文件 12.由一串信息组成,文件内信息不再划分可独立的单位,这是指()。A.流式文件 B.记录式文件 C.连续文件 D.串联文件

13.记录式文件内可以独立存取的最小单位是由()组成的。A.字 B.字节 C.数据项 D.物理块

14.在随机存储方式中,用户以()为单位对文件进行存取和检索。A.字符串 B.数据项 C.字节 D.逻辑记录 15.数据库文件的逻辑结构形式是()。A.链接文件 B.流式文件 C.记录式文件 D.只读文件

16.文件的逻辑记录的大小是()。A.恒定的 B.相同的 C.不相同的 D.可相同也可不同

17.能用来唯一标识某个逻辑记录的数据项为记录的()。A.主键 B.次键 C.索引 D.指针 18.在文件系统中,()要求逻辑记录顺序与磁盘块顺序一致。A.顺序文件 B.链接文件 C.索引文件 D.串联文件

19.下列文件中,()的物理结构不便于文件的扩充。A.顺序文件 B.链接文件 C.索引文件 D.多级索引文件 20.()的物理结构对文件随机存取时必须按指针进行,效率较低。A.连续文件 B.链接文件 C.索引文件 D.多级索引文件 2l.链接文件解决了顺序结构中存在的问题,它()。A.提高了存储空间的利用率 B.适合于随机存取方式 C不适用于顺序存取 D.指针存入主存,速度快 22.索引结构为每个文件建立一张索引表,用来存放()。A,逻辑记录的地址 B.部分数据信息 C.主键内容 D.逻辑记录存放位置的指针 23,文件系统可以为某个文件建立一张(),其中存放每个逻辑记录存放位置的指针。A.位示图 B.索引表 C.打开文件表 D.链接指针表 24.文件系统中,要求物理块必须连续的物理文件是()。A.顺序文件 B.链接文件 C.串联文件 D.索引文件

25.进行成组操作时必须使用主存缓冲区,缓冲区的长度等于()。A.逻辑记录长度 B.最小逻辑记录长度乘以成组块因子 c.最大逻辑记录长度乘以成组块因子 D.平均逻辑记录长度乘以成组块因子

26.记录的成组和分解提高了存储介质的利用率和减少启动设备的次数,但()为代价。A.以设立主存缓冲区 B.以操作系统增加成组分解功能 c.以设立主存缓冲区和操作系统增加成组分解功能 D.没有额外系统消耗 27.在文件系统中设置一张(),它利用二进制的一位表示磁盘中一个块的使用情况。A.空闲块表 B.位示图 c.链接指针表 D.索引表 28.“打开文件”操作要在系统设置的()中登记该文件的有关信息。A.索引表 B.链接指针表 c.已开文件表 D.空闲块表

29.对顺序文件做读文件操作时,总是从()按顺序读出信息。A文件头部向后 B.文件尾部向前 c.文件中部开始 D.当前位置开始

30.有的系统为了方便用户,提供一种隐式使用文件的方法,但用户对()还是必须显式地提出。A.建立文件 B.打开文件 c.关闭文件 D.读文件

31.允许多个用户同时使用同—个共享文件时,下列()做法是不对的。A.允许多个用户同时打开共享文件执行读操作 B.允许读者和写者同时使用共享文件 c.不允许读者和写者同时使用共享文件 D.不允许多个写者同时对共享文件执行写操作

32.用()可以防止共享文件可能造成的破坏,但实现起来系统开销太大。A.用户对树形目录结构中目录和文件的许可权规定 B.存取控制表 c.定义不同用户对文件的使用权 D.隐蔽文件目录

33.uNIX系统中,对新建的文件默认的许可权力为:文件主一可读可写,伙伴一可读,一般用户一可读,则表示这种使用权限的3位8进制数为()。A.755 B,644 C.522 D.622 34.单靠()并不能达到文件保密的目的。A.隐蔽文件目录 B.设置口令 c使用密码 D.规定文件使用权限

35.为了文件的保密,可以用()的方法使某些文件的目录不在显示器上显示出来。A.存取控制表 B.隐蔽文件目录 C.设置口令 D.使用密码(二)填空题

1.文件系统是操作系统中的重要组成部分,它对___进行管理。2.文件管理的主要工作是管理用户信息的存储、___、更新、___和保护。3.文件管理为用户提供___存取文件的功能。4.文件是逻辑上具有完整意义的___. 5.文件存取有多种方式,采用哪一种方式与用户的使用要求和___ 的特征有关. 6.存储介质上连续信息所组成的—个区域称为___,它是存储设备与主存之间信息交换的物理单位。7.从对文件信息的存取次序考虑,存取方法可分为___和___两类。8.磁带机是适合于___的存储设备,而磁盘上的文件既能___又能___.9.文件系统对文件统一管理的目的是方便用户且保证___。10.用户按信息的使用和处理方式组成文件,称为___。11.当用户要求读写文件时,文件系统实现___和___之间的转换。12.文件目录是用于___文件的,它是文件系统实现按名存取的重要手段。13一级目录结构在文件目录中登记的各个文件都有___文件名。14.在二级目录结构中,第一级为___,第二级为___。15.在树形目录结构中,___是从根目录出发到某文件的通路上所有各级子目录名和该文件名的顺序组合。16.___指出了从当前日录出发到指定文件的路径。17.逻辑文件可分为的___和___两类。18___是指用户对文件内的信息不再划分可独立的单位,整个文件由依次的一串信息组成。19.记录式文件中,___是文件内可以独立存取的最小信息单位. 20.磁带上的每个文件都有文件头标、___都___三部分组成。21.在磁盘上常用的组织方式有顺序结构、___和___。22___ 是具有逻辑记录顺序与磁盘块顺序相一致的文件结构的文件。23.顺序文件把逻辑上连续的信息存放在磁盘相邻的块上,所以它不适于文件的___.24.用指针把不连续的磁盘块按所存放的逻辑记录的顺序链接起来,形成文件的___结构。25.链接文件采用___方式是高效的,而采用___方式是低效的。26.索引结构为每个文件建立一张___,把指示每个逻辑记录存放位置的指针集中在这张表中。27.对索引文件,既可采用___方式,又可采用___方式。28.在索引文件中随机存取某一记录时,根据___在主存中的起始地址找到该记录的登记项,再按其中的___找到该逻辑记录。29.把若干逻辑记录合成一组存入一块的工作称___,每块中的逻辑记录个数称___。30.进行成组操作时必须使用主存缓冲区,缓冲区的长度等于___乘以成组的___. 31.记录的成组不仅提高了存储空间的___,而且还提高了系统的___。32.从一组逻辑记录中把一个逻辑记录分离出来的操作称为___。33.当用户要求存储文件时,文件管理要为他___;当删除文件时又要___文件占用的存储空间。34用___指示磁盘空间使用情况时,其中的每一位与一个___对应。35.空闲块表中每个登记项记录一组连续空闲块的___和___。36.空闲块的连接方式有___ 和___。37.采用空闲块成组连接方式时,把空闲块分成若干组,把指向一组空闲块的___集中在—起。38.用户可以用访管指令调用建立文件、___、读文件、___、关闭文件和___等文件操作功能模块。39.文件被打开后要在系统设置的___中登记该文件的有关信息。40.只有文件的___或___才有权关闭文件。41.删除文件操作要把用户指定的文件在文件目录中___,___文件所占用的存储空间。42用户在读、写文件操作以后要调用___ 操作模块。43.用户在请求删除文件操作时必须先调用___操作模块。44.允许多个用户同时使用同一个共享文件时,系统必须实现对共享文件的___ 45.多用户同时使用某个共享文件时,___多个写者同时对该文件执行写操作。46.为防止系统故障造成文件被破坏,常采用___和___的方法来保护文件。47.为了防止用户共享文件可能造成的破坏,一般要规定各用户对文件的___. 48.在uNIx系统中,若文件A的存取权限被规定为751则文件主的伙伴对此文件的存取权限为___. 49.文件的___是防止文件被破坏,而文件的___是防止不经文件拥有者授权而窃取文件。50.常用的文件保密措施有___、___都___。(三)简答题

1.什么是文件? 2.简述按名存取的含义。3.按用途分类,主要有哪几种文件? 4.什么叫卷?什么叫块? 5.文件的存取方式有哪几种?怎样确定文件的存取方式? 6简述文件系统的结构。7.文件目录中一般包含什么内容? 8.在二级目录结构中,如何实现文件共享? 9何谓绝对路径名和相对路径名?相对路径名有何优点? 10.树形目录有何优点? 11.文件的逻辑结构有哪几种形式? 12.记录式文件在磁盘上有哪几种组织形式? 13什么是记录的成组和分解?采用这种技术是否有额外的开销? 14.文件系统提供哪几种操作功能?用户怎样才能调用这些功能? 15.打开文件、建立文件和关闭文件各起什么作用? 16.用户在显式和隐式使用文件时有何不同? 17当多个用户同时使用共享文件时,如何进行同步控制? 18.区分文件保护和保密的异同。(四)计算题 1.现有三名学生s1,s2和s3上机实习,程序和数据都存放在同一磁盘上。若三人编写的程序分别为P1,P2和P3,要求这三个学生用自编的程序调用同一个数据文件A进行运算。请问1)若文件A作为共享文件,系统应采用何种目录结构?画出示意图。(2)若这三位学生不约而同地把自己的程序名都起为P,利用(1)答案中的目录结构能否满足要求?(3)针对(2)的要求,简要说明系统如何为每个学生索取他们的程序和数据? 2.假设磁带的记录密度为1600bPi(字节/英寸),每个逻辑记录长为200字节,块与块之间的间隔为0.5英寸,请回答下列问题:(1)不采用成组操作时,磁带空间的利用率是多少?(2)采用块因子为6作成组操作时,磁带空间的利用率为百分之几?(3)为了使磁带空间的利用率大于80%,采用记录成组时其块因子至少为多少? 3.假设一个磁盘组共有l00个柱面,每键面有8个磁道,每个盘面被分成4个扇区。若逻辑记录的大小与扇区大小一致,柱面、磁道、扇区的编号均从“0”开始,现用字长为16位的200个字(第0字~第199字)组成位示图来指示磁盘空间的使用情况。请问:(1)文件系统发现位示图中第15字第7位为0而准备分配给某一记录时,该记录会存放到磁盘的哪一块上?此块的物理位置(柱面号,磁头号和扇区号)如何?(2)删除文件时要归还存储空间,第56柱面第6磁道第3扇区的块就变成了空闲块,此时,位示图中第几字第几位应由1改为0? 4.现有一文件FILE _x,其逻辑记录的大小为125字节,共有20个逻辑记录,文件系统把这个文件存储到磁盘上时采用链接结构,磁盘的分块大小为5l2个字节,请问:(1)采用什么方法可有效地利用磁盘空间?(2)画出文件FILE _x在磁盘上的链接结构示意图(磁盘块号自定)。(3)若用户要求读包含第1285字节的逻辑记录,文件系统将如何工作?

第五章 文件管理 练习题参考答案(一)单项选择题

1.A 2.A 3.B 4 C 5.C 6.B 7.B 8.A 9.C l0.B 11.C 12.A 13.C 14.D 15.C 16.D 17.A 18.A l 9.A 20.B 21.A 22.D 23.B 24.A 25.C 26.C 27 B 28 C 29 D 30.D 31.B 32.B 33 B 34.D 35 B(二)填空题

1.信息 2.检索,共享 3.按文件名 4.信息集合 5.存储介质 6.块(或物理记录)7.顺序存取,随机存取 8.顺序存取,顺序存取,随机存取 9.文件的安全可靠 10.逻辑结构(或逻辑文件)11.逻辑文件,物理文件 12.搜索 13.不同 14.主文件目录,用户文件目录 15路径名(或绝对路径名)16.相对路径名 l 7.流式文件,记录式文件 18流式文件 l9.逻辑记录 20.文件信息,文件尾标 21.链接结构,索引结构 22.顺序文件(或连续文件)23.随机存取 24.链接 25.顺序存取,随机存取 26.索引表 27.顺序存取,随机存取 28.索引表,指针

29.记录的成组,块因子 30.最大逻辑记录长度,块因子 31.利用率,工作效率 32.记录的分解 33.分配磁盘存储空间,收回 34位示图,磁盘块 35.首块号,块数 36.单块连接,成组连接 37.指针 38.打开文件,写文件,删除文件 39.已开文件表 40.建立者,打开者 41.除名,收回 42.关闭文件 43.关闭文件 44.同步控制 45.不允许 46.建立副本,定时转储 47.使用权限 48.可读和可执行 49.保护,保密 50.隐蔽文件目录,设置口令,使用密码(三)简答题

1.文件是逻辑上具有完整意义的信息集合。

2.用户不必考虑文件存储在哪里,怎样组织输入输出等工作,只要提供文件名,操作系统通过去查找目录,就能对文件进行存取。

3.按用途分类,文件主要能分成系统文件、库文件和用户文件。4.卷是存储介质的物理单位。如一盘磁带、一张软盘片、一个硬盘组都可称为一个卷。块是存储介质上连续信息所组成的一个区域,它是存储设备与主存储器之间进行信息交流的物理单位。5.存取方式可分两类:顺序存取和随机存取。顺序存取是指对文件中的信息按顺序进行读写;随机存取是指按任意次序读写文件中的信息。采取哪一种存取方式与用户的使用要求和存储介质的特性有关。如源程序总是按顺序布取,数据库文件常用随机存取;磁带上的文件适合于顺序存取;磁盘中的文件既可顺序存取,也可以随机存取。

6.文件系统主要由以下五部分组成:(1)目录管理。利用目录结构检索文件,并能保证文件的安全。(2)文件的组织。文件组织分两类:逻祖结构和物理结构,前者是从用户使用的角度织织文件,后者是存储介质上的文件构造方式。当用户请求读写文件时,文件系统必须实现文件逻辑结构与物理结构之间的转换。(3)文件存储空间的管理。主要是对磁盘空闲区的管理,执行分配和回收工作。(4)文件操作,为用户提供文件操作功能。主要有建立文件、打开文件、读文件、写文件、关闭文件和删除文件等。(5)文件共享、保护和保密。对共亭文件进行同步控制,防止文件被破坏,被剽窃。

7.文件目录由若干目录项组成,每个目录项一般应包含以下内容

1)有文件存取控制的信息,如用户名、文件名、文件类型和文件属性。(2)有关文件结构的信息,如文件的逻辑结构、物理结构、记录个数、文件在存储介质的份量等。(3)有关文件管理的信息,如建立日期、文件被修改的日期、文件保留期限和记账信息等。

8.如果多个用户要共享某个文件,只要让各个用户文件目录中的某个目录项指向同一个文件存放地址。对共享文件,各个用户可以定义相同的文件名,或不同的文件名。

9.绝对路径名是指从根目录开始跟随着的一条指向文件的路径;相对路径名是指从当前目录出发到指定文件的路径。文件系统用绝对路径名和相对路径名都能找到指定的某个文件,但使用相对路径可以减少查找文件所花费的时间。

10.树形目录结构的优点有:解决了重名问题,有利于文件的分类;提高检索文件的速度;能进行存取权限的控制。

11.文件的逻辑结构有两种形式,流式文件和记录式文件。流式文件是指用户对文件内的信息不再划分可独立的单位,整个文件由依次的一串信息组成;记录式文件是由若干个逻辑记录组成。用户对文件内的信息按逻辑上独立的含义再划分的信息单位称为逻辑记录。12.记录式文件在磁盘上常用的组织形式有:顺序结构、链接结构和索引结构。13把若干个逻辑记录合并成一组存入一块的工作称记录的成组。从一组逻辑记录中把一个逻辑记录分离出来的操作称为记录的分解。采用这种技术有额外的开销,即要设立主缓冲区,操作系统还要增加成组分解的操作功能。

14.文件系统主要提供以下六种操作功能;建立文件、打开文件、读文件、写文件、关闭文件和删除文件。用户可以用访管指令使用这些功能。15.打开文件和建立文件实际上起着用户申请对文件使用权的作用。经文件系统验证符合使用权时才允许用户使用文件,并适当地为用户做好使用文件前的准备。关闭文件操作的作用是让用户向系统归还文件的使用权。

16.用户在显式使用文件时.必须道循以下规定:读文件时要依次调用打开文件、读文件和关闭文件操作;写文件时要依次调用建立文件、写文件和关闭文件操作。而在隐式调用时,允许用户可直接调用读文件或写文件.不必调用打开文件、建立文件和关闭文件操作,这些操作由文件系统自动完成。

17.当多个用户同时使用某个共享文件时,常用三种规则实现共享文件的同步控制:(1)允许多个用户同时打开共享文件,执行读操作;(2)不允许读者和写者同时使用共享文件;(3)不允许多个写者同时对共享文件执行写操作。

18.文件保护是防止文件被破坏,文件的保密是防止不经拥有者授权而窃取文件。文件保护根据引起文件被破坏的原因----系统故障或非法使用共享文件----而采用不同的措施。前者采用建立副本和定时转储等方法;后者则采用树形目录结构、存取控制表和文件使用权限。文件保密措施主要有隐蔽文件目录、设置口令和使用密码.(四)计算题

l.(1)系统采用二级目录结构就能满足需要,其示意图为下图。文件目录

(2)利用上图的二级目录结构能满足此要求,只要在用户目录中把Pl、P2、P3都改为P,但这些P都是指向各自不同的程序。

(3)存取程序和数据时,文件系统会先搜索主文件目录,找到该学生的用户目录,然后在用户目录中查找指定的文件。比如对学生S1.由路径/S1/P找到的文件是他的程序文件。因为它与/S2/P不会指向同一个文件,不会冲突。而/S1/A和/s2/A是同一个文件,所以学生S1能取到所需的数据。当然这里A文件可以由三个学生同时打开,一起执行读操作。2.(1)间隔=l600×0.5=800(字节); 200/(200+800)=20%;所以不采用成组操作时磁带空间的利用率为20%、(2)(200×6)/(200×6+800)=60%;所以采用成组操作时磁带空间的利用率为60%。

(3)设块因子为x,则200x/(200X+800)>0.8; 250X>200X+800; 50X>800;X>16;所以块因子至少为17。

3.(1)块号=15×字长+7=15×16+7=247;柱面号=[块号/每柱面扇区数]=[247/(8×4)]=7; 磁头号=[(块号mod每柱面扇区数)/每盘面扇区数]=[(247 mod 32)/4]=5;扇区号=(块号mod每柱面扇区数)mod每盘面扇区数=(247 mod 32)mod 4=3;所以该记录会存放在第247块上,即在第7个柱面,第5磁头,第3个扇区上。

(2)块号=柱面号×每柱面扇区数+磁头号×每盘面扇区数+扇区号=56×(8×4)+6×4+3=1819; 字号=[块号/字长]=[1819/16]=113;位号=块号mod字长=1819 mod 16=11;所以位示图中第113字第11位应由1变成0。

4.(1)采用记录成组的方法能有效地利用磁盘空间,这里拟选用块因子为4。

(2)采用块因子为4,进行记录成组时,将占5个磁盘块.不妨设这5个磁盘块依次为6、2、9、l 5、18。文件FILE—x在磁盘上的链接结构示意图见下图。文件目录

文件名

始址

末址 FILE-X

18

块 号 6 2

链接指针 2 9 15 18-1(3)第一步,由[1285/(125×4)]=2可知包含1285字节的逻辑记录在链接结构的第三个块上,即块9中,为此文件系统把块9读入主存缓冲区。第二步,由1285 MOD(125×4)=285且 125×2<285<125×3;所以可知文件系统从主存缓冲区中取出第3个记录传输给用户。

第二篇:操作系统第八章 文件复习题(答案)

第八章 文件

一、选择题

1、在下列文件的外存分配方式中,不利于文件长度动态增长的文件物理结构是(A)A.连续分配 B.链接分配 C.索引分配 D.以上都不对

2、文件系统中若文件的外存分配方式采用连续分配,则文件控制块FCB中有关文件的物理位置的信息应包括(B)(Ⅰ)起始块号(Ⅱ)文件长度(Ⅲ)索引表地址 A.全部 B.(Ⅰ)和(Ⅱ)C.(Ⅰ)和(Ⅲ)D.(Ⅱ)和(Ⅲ)

3、操作系统为保证未经文件拥有者授权,任何其他用户不能使用该文件所提供的解决方法是(A)A.文件保护 B.文件保密 C.文件转储 D.文件共享

4、文件系统最基本的目标是((1)A),它主要是通过((2)B)功能实现的,文件系统所追求的最重要目标是((1)D)(1)A.按名存取

B.文件共享

C.文件保护

D.提高对文件的存取速度(2)A.存储空间管理 B.目录管理

C.文件读写管理 D.文件安全管理

5、按逻辑结构可把文件分为(E)和(F)两类。A.读、写文件 B.只读文件

C.索引文件

D.链式文件

E.记录式文件 F.流式文件

6、下面关于顺序文件和链接文件的论述中正确的是(C)A.顺序文件只能于建立在顺序存储设备上,而不能于建立在磁盘上。

B.在显式链接文件中是在每个盘块中设置一链接指针,用于将文件的所有盘块链接起来。C.顺序文件采用连续分配方式,而链接文件和索引文件则都可采用离散分配方式。D.在MS-DOS中采用的是隐式链接文件结构。

7、下面关于索引文件的论述中正确的是(B)A.在索引文件中,索引表的每个表项中必须含有相应记录的关键字和存放该记录的物理地址。

B.对顺序文件进行检索时,首先从FCB中读出文件的第一个盘块号,而对索引文件进行检索时,应先从FCB中读出文件索引表始址。

C.对于一个具有三级索引表的文件,存取一个记录必须要访问三次磁盘。D.在文件较大时,进行顺序存取比随机存取快。

8、在存取文件时,如果利用给定的记录值对链表或索引表进行检索,以找到指定记录的物理地址,则上述文件分别称为(B)或(C),如果根据给定的记录键值直接获得指定记录的物理地址,则把这种文件称为(D)A.顺序文件 B.链接文件 C.索引文件 D.直接文件

9、在文件管理中,位示图主要是用于(B)A.磁盘的驱动调动

B.磁盘空间的分配和回收 C.文件目录的查找

D.页面置换

10、用(B)可以防止共享文件可能造成的破坏,但实现起来系统开销太大。A.用户对树型目录结构中目录和文件的许可权规定 B.存取控制表 C.定义不同用户对文件的使用权 D.隐蔽文件目录

(11)下列___B___的物理结构对文件随机存取时必须按指针进行,其存取速度慢。A.顺序文件 B.链接文件 C.索引文件 D.多级索引文件(12)下面说法正确的是___D___。

A.文件系统要负责文件存储空间的管理,但不能完成文件名到物理地址的转换 B.多级文件目录中,对文件的访问是通过路径名和用户目录名来进行的 C.文件被划分为大小相等的若干个物理块,一般物理块的大小是不固定的 D.逻辑记录是对文件进行存取的基本单位

(13)在随机存取方式中,用户以__D____为单位对文件进行存取和检索。A.字符串 B.字节 C.数据项 D.逻辑记录 14.文件系统的主要目的是 A。a.实现对文件的按名存取 b.实现虚拟存储 c.提高外存的读写速度 d.用于存储系统文件 15.下列文件中属于逻辑结构的文件是 D。a.连续文件 b.系统文件 c.散列文件 d.流式文件 16.位示图法可用于 A。a.盘空间管理 b.盘的驱动调度

c.文件目录的查找 d.页式虚拟存储中的页面调度

17.在记录式文件中,一个文件由称为 C 的最小单位组成。a.物理文件 b.物理块 c.逻辑记录 d.数据项

18.文件物理结构一般有 ADE。a.连续结构 b.流式结构 c.记录式结构 d.链接结构 e.索引结构

19.两级目录结构由 C 和 D 组成。a.根目录 b.子目录 c.主文件目录 d.用户文件目录 e.当前目录(20)下面说法正确的是__AD______。

A.在磁带上的顺序文件中插入新的记录时,必须复制整个文件 B.在磁盘上的顺序文件中插入新的记录时,必须复制整个文件 C.在索引顺序文件的最后添加新的记录时,一定要复制整个文件 D.在磁带上的顺序文件的最后添加新的记录时,不必复制整个文件

1、在利用基本文件目录法实现文件共享时,文件系统必须设置一个(基本文件目录),每个用户都应具有一个(符号文件目录)。

2、文件管理的基本功能有(文件存储空间的管理)、(目录管理)、(文件的读/写管理)和(文件共享保护)。

3、记录是一组相关(数据项)的集合。文件是具有(文件名)的一组相关(元素)的集合。

(6)利用Hash法查找文件时,如果目录中相应的目录项是空的,则表示_系统中无指定文件名,如果目录中的文件名与指定文件名匹配,则表示_找到了指定的文件 ____,如果目录项中的文件名与指定文件名不匹配,则表示__发生了冲突_。

(7)文件的成组与分解操作___提高文件存储空间的利用率_和__减少启动存储设备次数__。8文件目录的作用是 实现文件名到物理地址的转换

11.一个文件在使用前必须先 的 打开,使用后需 关闭。

1.文件系统必须完成哪些工作? 1.答

(1)文件的存取。包括顺序存取和随机存取(2)目录管理

(3)文件组织。物理文件和逻辑文件的转换(4)文件存储空间管理

(5)文件操作。创建,打开,读,写,关闭(6)文件的共享与保护

2.文件有哪几种逻辑结构,哪几种物理结构 2.答

(1)逻辑结构是从用户观点看到的文件组织形式,用户可以直接处理的数据及其结构。分为无结构的流式文件和有结构的记录式文件

(2)物理结构是文件在存储设备上的存储组织形式。有连续式文件,链式文件(串联文件)和索引文件

3.文件顺序存取与随机存取的主要区别是什么? 3.答

(1)顺序存取是严格按照文件中的物理记录排列顺序依次存取

(2)随机存取则允许随意存取文件中的任何一个物理记录,而不管上次存取了哪一个记录(3)对于变长记录式文件,随机存取实际是退化为顺序存取

4.一个树形结构的文件系统如图所示,其中矩形表示目录,圆圈表示文件

(1)可否进行下列操作

①在目录D中建立一个文件,取名为A ②将目录C改为A(1)①本题中文件系统采用了多级目录的组织方式,由于目录D中没有已命名为A的文件,因此在目录D中可以建立一个取名为A的文件。②因为在文件系统的根目录下已有一个名为A的目录,所以目录C不能改为A(2)若E和G是两个用户各自的目录

①用户E欲共享文件Q应有什么条件,如何操作?②在一段时间内,用户G主要使用文件S和T,为简便操作和提高速度,应如何处理?③用户E欲对文件I加以保护,不许别人使用,能否实现,如何做?

①用户E欲共享文件Q需要有访问Q的权限。在权限许可的情况下,可通过相应的路径来访问文件Q。若用户E当前的目录为E,则访问路径为

../../D/G/K/O/Q ②可在目录G下建立两个链接文件,分别链接到文件S及T上,这样用户G就可以直接访问这两个文件了

③用户E可以通过修改文件I的存取控制表来对文件I加以保护,不让别的用户使用。具体实现方法是,在文件I的存取控制表中,只留下用户E的访问权限,其他用户对该文件无操作权限,从而达到不让其他用户访问的目的。

5.文件分配表FAT是管理磁盘空间的一种数据结构,用在以链接方式存储文件的系统中记录磁盘分配和跟踪空白磁盘块。其结构如图所示

设物理块大小为1K,对于540M硬盘,其FAT要占多少存储空间 5.(1)

磁盘共有盘块540M/1k=540k个,需要20位二进制表示,即FAT的每个表项应占2.5字节,2.5B*540k=1350KB

三、应用题

2.有一磁盘组共有10个盘面,每个盘面上有100磁道,每个磁道有16个扇区,假设分配以扇区为单位,若使用位示图管理磁盘空间,问位示图需要占用多少空间?若空白文件目录的每个表目占用5B,问什么时候空白文件目录大于位示图。解:扇区数:16×100×10 = 16000 用位示图表示扇区数状态需要的位数为16000位 = 2000B 因为空白文件目录的每个表目占用5B,所示位示图需要占用2000B,2000B可存放表目2000÷5 = 400 ∴当空白区数目大于400时,空白文件目录大于位示图。3.设某系统的磁盘有500块,块号为0,1,2,…,499。

(1)若用位示图法管理这500块的磁盘空间,当字长32位时,需要多少个字的位示图?(2)第i字的第j位对应的块号是多少? 答:(1)500÷32 = 15.625 ≈ 16

(2)块号:N = 32×(i-1)+ j。

4.一个磁盘组共有100个柱面,每个柱面8个盘面,每个盘面被分为4个扇区,若盘块大小与扇区大小相等,扇区编号从”0”开始,现用字长为16位的200个字(第0~199字)组成位示图来指示磁盘空间的使用情况,则,文件系统发现位示图中第15字第7位为0,分配出去时,盘块号为:_247__15×16 + 7 = 247

第三篇:操作系统课程设计文件管理

#include “stdio.h” #include “string.h” #include “malloc.h”

#include “stdlib.h”

#define MAX 1000 struct file/*普通文件的结构体*/ { //int type;//0无作用,当做一个空节点存在;1为记录型文件;2为执行文件

//前两个变量为文件的权限设置,1为允许操作,0为不允许操作

int write;//可写

int read;//可读

int length;//文件的长度

char ch[MAX];};typedef struct file File;

typedef struct ffile/*定义文件类型的结构体*/ { int type;//1为文件夹; 2为文件;

char name[20];//文件(夹)名字

int open;//文件打开标志,0为关,1为开

File iffile;//如果为文件时有的信息

struct ffile *parent;//指向上一级文件的指针

struct ffile *brother;//指向同级兄弟文件(夹)的指针

struct ffile *child;//指向下一级文件(夹)的指针 }Ffile;typedef Ffile *FFile;

/*typedef struct Open/*记录打开文件的结构体 { char name[20];//记录打开文件(夹)的名字

FFile* add;//记录打开文件上一级文件地址的指针 }Open;*/

//全局变量

FFile user1;//用户1 FFile user2;//用户2 FFile copyf;//记录被复制文件(夹)的上一级文件地址 //Open openf[20];//记录打开文件的队列

FFile init(void)/*初始化,创建根结点*/ { FFile c;c=(Ffile*)malloc(sizeof(Ffile));

c->type=2;c->open=0;//c->iffile.type=2;c->iffile.write=1;c->iffile.read=1;c->iffile.length=0;strcpy(c->name,“file1”);c->parent=NULL;c->child=NULL;c->brother=NULL;strcpy(c->iffile.ch,“NULL”);return(c);}

/*void initopen(){ int a,b;a=20;for(b=1;b<=a;b++){

openf[b].add=NULL;} }*/

//传递要显示文件的parent的地址

void show(FFile user)/*显示当前界面存在的文件*/ { user=user->child;if(user==NULL){

printf(“该文件内没有任何文件(夹)。n”);return;} printf(“n”);for(;user!=NULL;){ printf(“<%s”,user->name);if(user->type==2){

/*if(user->iffile.type==1)

printf(“/记录型文件/”);

else

printf(“/执行文件/”);*/

printf(“/%dk”,user->iffile.length);} else {

printf(“/文件夹”);

}

printf(“>n”);

user=user->brother;} }

void creatf(FFile user)/*创建文件 || 文件夹*/ { FFile parent;char ch[20];//FFile user0;//parent=(Ffile*)malloc(sizeof(Ffile));parent=user;printf(“输入要创建文件(夹)的名字:n”);

scanf(“%s”,ch);if(user->child==NULL){

user->child=(Ffile*)malloc(sizeof(Ffile));

user=user->child;}else {

user=user->child;

for(;;)

{

if(user->type==0)//开端的空结点,用新结点覆盖

break;

if(!strcmp(user->name,ch))

{

printf(“错误:该文件名已经存在,文件(夹)创建失败!n”);

return;

}

if(user->brother==NULL)

{

user->brother=(Ffile*)malloc(sizeof(Ffile));

user=user->brother;

break;

}

user=user->brother;

}

} }

//设置新文件(夹)的信息 strcpy(user->name,ch);printf(“选择创建对象:1文件夹; 2文件;n”);scanf(“%d”,&user->type);user->open=0;if(user->type==2)//添加文件信息 {

//printf(“选择文件类型:1记录型文件;2执行文件;n”);//scanf(“%d”,&user->iffile.type);printf(“能否对文件进行读:0禁止;1允许;n”);scanf(“%d”,&user->iffile.read);printf(“能否对文件进行写:0禁止;1允许;n”);scanf(“%d”,&user->iffile.write);//printf(“设置文件大小(单位:K):n”);//scanf(“%d”,&user->iffile.length);user->iffile.length=0;strcpy(user->iffile.ch,“NULL”);} user->brother=NULL;user->child=NULL;user->parent=parent;printf(“文件创建成功!n”);void deletechildtree(FFile user)/*删除子树--结合deletefile();使用*/ { if(user->brother!=NULL)//从下到上,从右到左删除

{

deletechildtree(user->brother);} if(user->child!=NULL){

deletechildtree(user->child);} if(user!=NULL){

free(user);} }

void deletefile(FFile user,char ch[20])/*删除文件 || 文件夹*/ { FFile p,parent;

int a;parent=user;if(user->child==NULL){ printf(“错误:删除失败,该目录下没有可删除的文件(夹)!n”);return;} user=user->child;p=user;for(a=1;;a++)//找出要删除文件的所在位置 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:删除失败,当前位置没有该文件!n”);

return;}

if(a>1)

p=user;user=user->brother;} if(user->open==1)//判断文件的开关情况 {

} printf(“错误:删除失败,选择文件处于打开状态!n”);return;if(p==user)//被删文件在文件队列的开头 { if(user->brother==NULL)//该文件队列只有有一个文件

{

parent->child=NULL;

if(user->child!=NULL)//删除的是文件(夹)子树

{

deletechildtree(user);}else {

free(user);//删除的是文件(夹)结点

} printf(“删除成功!n”);return;} //文件队列有多个文件 p=user->brother;

} parent->child=p;p->parent=parent;if(user->child!=NULL){ deletechildtree(user);}else { free(user);} printf(“删除成功!n”);return;else//被删文件不在队列开头 {

if(user->brother==NULL)//被删文件在文件队列最末尾 { p->brother=NULL;if(user->child!=NULL){

deletechildtree(user);}else {

free(user);}

} printf(“删除成功!n”);return;

//被删文件在文件队列中间

p->brother=user->brother;

if(user->child!=NULL)

{

deletechildtree(user);

}

else

{

free(user);

} } printf(“删除成功!n”);}

FFile openfolder(FFile user)/*打开文件夹*/ {

} //int a,b;//a=0;/*if(user->child==NULL){ user->child=(Ffile*)malloc(sizeof(Ffile));user->child->type=0;user->child->brother=NULL;user->child->parent=user;user->child->child=NULL;

} /*for(b=1;b<=20;b++){ if(openf[b].add!=NULL)

a++;} if(a==20){ printf(“错误:打开列表溢出!”);return(user);} for(b=1;;b++){ if(openf[b].add==NULL)

break;}*/

user->open=1;//设置文件为打开 //strcpy(openf[b].name,user->name);//openf[b].add=user;printf(“文件夹打开成功。n”);return(user);//返回被打开的文件夹的地址

void openfile(FFile user)/*打开普通文件*/ { if(user->open==1){

printf(“错误:打开失败,此文件已经被打开!n”);

return;} user->open=1;printf(“普通文件打开成功!n”);}

FFile openff(FFile user)/*打开文件(夹)*/ {

char ch[20];FFile parent;

int a;printf(“选择要打开的文件名:n”);scanf(“%s”,ch);

parent=user;if(user->child==NULL){

printf(“错误:打开失败,该目录下没有可打开的文件(夹)!n”);return(parent);} user=user->child;for(a=1;;a++)//找出要打开文件的所在位置 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:打开失败,当前位置没有该文件!n”);

return(parent);}

user=user->brother;} if(user->type==1){

printf(“开始打开文件夹。。n”);user=openfolder(user);} else if(user->type==2){

printf(“开始打开普通文件。。n”);

openfile(user);

user=user->parent;} return(user);}

void closefile(FFile user)/*关闭普通文件*/ {

char ch[20];int a;printf(“选择要打开的文件名:n”);scanf(“%s”,ch);if(user->child==NULL){ printf(“错误:关闭失败,该目录下没有可关闭的文件!n”);return;} user=user->child;for(a=1;;a++)//找出要关闭文件的所在位置 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:关闭失败,当前位置没有该文件!n”);

return;}

user=user->brother;} if(user->open==0){

printf(“错误:关闭失败,该文件已经是关闭状态!n”);

return;} user->open=0;printf(“文件已经成功关闭!”);} /*没有文件夹关闭原因:

文件夹一打开就会跳向打开的新文件里 而文件夹关闭就会直接返回上一级的目录,若想整个文件夹都关闭,直接退出就可以了 因此不会直接关闭某个特定的文件*/

FFile backf(FFile user)/*返回上一层目录*/ { if(user->parent==NULL){

printf(“错误:返回失败,此处是最顶层目录!n”);

return(user);}

} user->open=0;user=user->parent;return(user);void readfile(FFile user)/*读文件*/ { char ch[20];int a;

printf(“选择要读取的文件名:n”);scanf(“%s”,ch);if(user->child==NULL){ printf(“错误:读取失败,该目录下没有可读取的文件!n”);return;} user=user->child;for(a=1;;a++)//找出要读取文件的所在位置 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:读取失败,当前位置没有该文件!n”);

return;}

user=user->brother;} if(user->open==0){ printf(“错误:文件读取失败,该文件处于关闭状态!n”);return;} else if(user->iffile.read==0){ printf(“错误:文件读取失败,该文件受保护,禁止读取!n”);return;} printf(“读操作,该文件中的内容:n”);if(!strcmp(user->iffile.ch,“NULL”)){ printf(“该文件内没有可读内容!n”);return;

} } printf(“%sn”,user->iffile.ch);printf(“文件读取成功!n”);void writefile(FFile user)/*写文件*/ { char ch[20];int a;

} printf(“选择要进行写操作的文件名:n”);scanf(“%s”,ch);if(user->child==NULL){ printf(“错误:写操作失败,该目录下没有可写的文件!n”);return;} user=user->child;for(a=1;;a++)//找出要读取文件的所在位置 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:写操作失败,当前位置没有该文件!n”);

return;}

user=user->brother;} if(user->open==0){ printf(“错误:文件写操作失败,该文件处于关闭状态!n”);return;} else if(user->iffile.write==0){ printf(“错误:文件写操作失败,该文件受保护,禁止写!n”);return;} printf(“写操作,输入内容:n”);scanf(“%s”,user->iffile.ch);user->iffile.length=strlen(user->iffile.ch);printf(“文件进行写操作成功!n”);

FFile copyfile(FFile user,FFile copyf)/*拷贝文件*/ { char ch[20];int a;printf(“选择要进行拷贝的文件(夹)名:n”);scanf(“%s”,ch);

if(user->child==NULL){

printf(“错误:拷贝失败,该目录下没有可拷贝的文件!n”);

return(NULL);} user=user->child;for(a=1;;a++)//找出要拷贝文件的所在位置,用user替代

{

if(!strcmp(user->name,ch))

break;

if(user->brother==NULL)

{

printf(“错误:拷贝失败,当前位置没有该文件!n”);

return(NULL);

}

user=user->brother;} copyf=user;

} printf(“拷贝成功!n”);return(copyf);FFile fenpei(FFile copyf,FFile user,FFile parent)/*粘贴时,给已拷贝项分配内存空间,以及给对应信息赋值*/ { user=(Ffile*)malloc(sizeof(Ffile));

//parent对child的连接,以及brother之间的连接已经完成if(copyf->brother==NULL && copyf->child==NULL){

user->parent=parent;

user->child=NULL;

user->brother=NULL;}

else{ if(copyf->brother!=NULL){

user->brother=fenpei(copyf->brother,user->brother,parent);//brother连接,兄弟节点有同一个父结点

user->brother->parent=user->parent;} else { user->brother=NULL;} if(copyf->child!=NULL){ //parent=p;user->child=fenpei(copyf->child,user->child,user);

user->child->parent=user;//完成child对parent的连接

//child连接,自己孩子的父结点就是自己

} else {

user->child=NULL;

user->child->parent=user;} }

//设置结点对应的信息

strcpy(user->name,copyf->name);user->open=copyf->open;user->type=copyf->type;if(user->type==2){

user->iffile.length=copyf->iffile.length;

user->iffile.read=copyf->iffile.read;

//user->iffile.type=copyf->iffile.type;

user->iffile.write=copyf->iffile.write;

strcpy(user->iffile.ch,copyf->iffile.ch);}

return(user);}

void prastefile(FFile user,FFile copyf)/*粘贴文件*/ //user是要粘贴的地方,copyf是要粘贴的内容,//有相同文件名的会判断会不会覆盖,或者是重命名 //在原树中进行新建操作 { int i,j;char ch[20];FFile p,user0,parent;parent=user;//记录父结点

user=user->child;

p=user;//记录当前结点的前一个brother结点 strcpy(ch,“NULL”);if(copyf==NULL)//判断有没有拷贝文件 {

printf(“错误:粘贴失败,还没有拷贝任何文件(夹)!n”);

return;}

//p=(Ffile*)malloc(sizeof(Ffile));//p->child=(Ffile*)malloc(sizeof(Ffile));//先给粘贴项分配内存空间

//p->child=fenpei(copyf,p->child,p);

if(user==NULL)//当前位置没有任何文件结点

{

} user=fenpei(copyf,user,parent);//是他自己要分配,不是孩子结点!!parent->child=user;user->brother=NULL;user->parent=parent;return;//该位置没有任何文件 for(j=1;;j++){ if(user->type==0)//开端的空结点,用新结点覆盖,即:当前位置没有文件结点

{

user=user->parent;

deletechildtree(p);

user=fenpei(copyf,user->child,user);//返还增加的结点

user->brother=NULL;

user->parent=parent;

parent->child=user;

} return;if(!strcmp(user->name,copyf->name)){

printf(“提示:该文件名已经存在!n”);

printf(“请重命名文件:n”);

printf(“输入新文件名:n”);

scanf(“%s”,ch);

} if(user->brother==NULL)//普通的退出条件

{

break;} p=user;user=user->brother;} user->brother=fenpei(copyf,user->brother,user->parent);user->brother->parent=user->parent;//若要更名,粘贴分配完内存空间返回时再改变

if(strcmp(ch,“NULL”))

strcpy(user->brother->name,ch);printf(“粘贴成功。n”);}

void showroute(FFile user)/*显示当前路径*/ { if(user->parent!=NULL){

showroute(user->parent);} printf(“%s/”,user->name);//路径中每个结点的输出项 }

void change(FFile user){ char ch[20];int a,b;

if(user->child==NULL)

{

} printf(“错误:属性修改失败,该目录下没有可修改的文件!n”);return;printf(“选择要进行属性修改的文件(夹)名:n”);scanf(“%s”,ch);user=user->child;for(a=1;;a++)//找出要拷贝文件的所在位置,用user替代 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:属性修改失败,当前位置没有该文件!n”);

return;}

user=user->brother;} if(user->type==1){ printf(“错误:文件夹不能进行属性修改!n”);return;} for(;;){

printf(“1.修改读权限;n”);printf(“2.修改写权限;n”);printf(“3.返回;n”);printf(“选择操作:n”);scanf(“%d”,&a);if(a==1){ printf(“0.禁止;

1.允许;n”);printf(“请选择:n”);scanf(“%d”,&b);user->iffile.read=b;printf(“修改成功!n”);} else if(a==2){ printf(“0.禁止;

1.允许;n”);printf(“请选择:n”);scanf(“%d”,&b);user->iffile.write=b;

}

} printf(“修改成功!n”);} else if(a==3){ return;} else { } printf(“错误:没有该操作!n”);void main()/*主函数*/ {

FFile d,e,f;//f记录当前显示界面父结点位置 int a,b,c;char ch[20];a=0;printf(“******************************目录******************************n”);printf(“

1.选择用户n”);printf(“

2.退出n”);

printf(“****************************************************************n”);for(;;){

printf(“选择操作:n”);scanf(“%d”,&a);if(a==1){ printf(“选择用户:n”);printf(“1.user1;n2.user2;n”);scanf(“%d”,&b);break;} else if(a==2){ printf(“欢迎使用。n”);exit(0);//系统退出的操作码 } else { printf(“错误:没有该操作!n”);

} } //初始化打开列表 //initopen();//初始化各个用户的信息

//copyf=(Ffile*)malloc(sizeof(Ffile));//copyf=NULL;copyf=NULL;user1=init();strcpy(user1->name,“user1”);user2=init();strcpy(user2->name,“user2”);d=init();e=init();user1->child=d;user2->child=e;d->parent=user1;e->parent=user2;printf(“%d”,user1->child->type);if(b==1){ printf(“已经进入user1系统n”);f=user1;show(user1);}else{

} printf(“已经进入user2系统n”);f=user2;show(user2);

for(;;){ printf(“****************************************************************n”);printf(“1.创建文件(夹)

5.读文件

9.显示当前路径

n”);printf(“2.删除文件(夹)

6.写文件

10.返回上一层目录

n”);printf(“3.打开文件(夹)

7.拷贝文件

11.改变普通文件属性n”);printf(“4.关闭普通文件

8.粘贴文件

12.退出n”);printf(“****************************************************************n”);printf(“选择操作:n”);scanf(“%d”,&c);if(c==12){

break;}else if(c==1){ creatf(f);} else if(c==2){

printf(“选择要删除的文件(夹)的名字:n”);scanf(“%s”,ch);deletefile(f,ch);} else if(c==3){ f=openff(f);} else if(c==4){ closefile(f);} else if(c==5){ readfile(f);} else if(c==6){ writefile(f);} else if(c==7){ copyf=copyfile(f,copyf);} else if(c==8){ prastefile(f,copyf);copyf=NULL;} else if(c==9){ printf(“路径为:n”);showroute(f);printf(“n”);} else if(c==10){

}

f=backf(f);

} else if(c==11){ change(f);} else { continue;} show(f);} printf(“欢迎使用!n”);

第四篇:操作系统复习题答案

第1章

计算机系统概述

1.1 列出并简要地定义计算机的四个主要组成部分。

主存储器,存储数据和程序;算术逻辑单元,能处理二进制数据;控制单元,解读存储器中的指令并且使他们得到执行;输入/输出设备,由控制单元管理。1.2 定义处理器寄存器的两种主要类别。

用户可见寄存器:优先使用这些寄存器,可以使机器语言或者汇编语言的程序员减少对主存储器的访问次数。对高级语言而言,由优化编译器负责决定把哪些变量应该分配给主存储器。一些高级语言,如C语言,允许程序言建议编译器把哪些变量保存在寄存器中。

控制和状态寄存器:用以控制处理器的操作,且主要被具有特权的操作系统例程使用,以控制程序的执行。

1.3 一般而言,一条机器指令能指定的四种不同操作是什么?

处理器-寄存器:数据可以从处理器传送到存储器,或者从存储器传送到处理器。

处理器-I/O:通过处理器和I/O模块间的数据传送,数据可以输出到外部设备,或者从外部设备输入数据。

数据处理:处理器可以执行很多关于数据的算术操作或逻辑操作。控制:某些指令可以改变执行顺序。1.4 什么是中断?

中断:其他模块(I/O,存储器)中断处理器正常处理过程的机制。1.5 多中断的处理方式是什么?

处理多中断有两种方法。第一种方法是当正在处理一个中断时,禁止再发生中断。第二种方法是定义中断优先级,允许高优先级的中断打断低优先级的中断处理器的运行。1.6 内存层次的各个元素间的特征是什么?

存储器的三个重要特性是:价格,容量和访问时间。1.7 什么是高速缓冲存储器?

高速缓冲存储器是比主存小而快的存储器,用以协调主存跟处理器,作为最近储存地址的缓冲区。1.8 列出并简要地定义I/O操作的三种技术。

可编程I/O:当处理器正在执行程序并遇到与I/O相关的指令时,它给相应的I/O模块发布命令(用以执行这个指令);在进一步的动作之前,处理器处于繁忙的等待中,直到该操作已经完成。

中断驱动I/O:当处理器正在执行程序并遇到与I/O相关的指令时,它给相应的I/O模块发布命令,并继续执行后续指令,直到后者完成,它将被I/O模块中断。如果它对于进程等待I/O的完成来说是不必要的,可能是由于后续指令处于相同的进程中。否则,此进程在中断之前将被挂起,其他工作将被执行。

直接存储访问:DMA模块控制主存与I/O模块间的数据交换。处理器向DMA模块发送一个传送数据块的请求,(处理器)只有当整个数据块传送完毕后才会被中断。1.9 空间局部性和临时局部性间的区别是什么?

空间局部性是指最近被访问的元素的周围的元素在不久的将来可能会被访问。临时局部性(即时间局部性)是指最近被访问的元素在不久的将来可能会被再次访问。1.10 开发空间局部性和时间局部性的策略是什么?

空间局部性的开发是利用更大的缓冲块并且在存储器控制逻辑中加入预处理机制。时间局部性的开发是利用在高速缓冲存储器中保留最近使用的指令及数据,并且定义缓冲存储的优先级。

第2章

操作系统概述

2.1 操作系统设计的三个目标是什么?

方便:操作系统使计算机更易于使用。有效:操作系统允许以更有效的方式使用计算机系统资源。

扩展的能力:在构造操作系统时,应该允许在不妨碍服务的前提下有效地开发、测试和引进新的系统功能。

2.2 什么是操作系统的内核?

内核是操作系统最常使用的部分,它存在于主存中并在特权模式下运行,响应进程调度和设备中断。2.3 什么是多道程序设计?

多道程序设计是一种处理操作,它在两个或多个程序间交错处理每个进程。2.4 什么是进程?

进程是一个正在执行的程序,它被操作系统控制和选择。2.5 操作系统是怎么使用进程上下文的?

执行上下文又称为进程状态,是操作系统用来管理和控制所需的内部数据。这种内部信息和进程是分开的,因为操作系统信息不允许被进程直接访问。上下文包括操作系统管理进程以及处理器正确执行进程所需要的所有信息,包括各种处理器寄存器的内容,如程序计数器和数据寄存器。它还包括操作系统使用的信息,如进程优先级以及进程是否在等待特定I/O事件的完成。2.6 列出并简要介绍操作系统的五种典型存储管理职责。

进程隔离:操作系统必须保护独立的进程,防止互相干涉数据和存储空间。

自动分配和管理:程序应该根据需要在存储层次间动态的分配,分配对程序员是透明的。因此,程序员无需关心与存储限制有关的问题,操作系统有效的实现分配问题,可以仅在需要时才给作业分配存储空间。

2.7 解释实地址和虚地址的区别。

虚地址指的是存在于虚拟内存中的地址,它有时候在磁盘中有时候在主存中。实地址指的是主存中的地址。2.8 描述轮循调度技术。

轮循调度是一种调度算法,所有的进程存放在一个环形队列中并按固定循序依次激活。因为等待一些事件(例如:等待一个子进程或一个I/O操作)的发生而不能被处理的进程将控制权交给调度器。2.9 解释单体内核和微内核的区别。

单体内核是一个提供操作系统应该提供的功能的大内核,包括调度、文件系统、网络、设备驱动程序、存储管理等。内核的所有功能成分都能够访问它的内部数据结构和程序。典型情况下,这个大内核是作为一个进程实现的,所有元素都共享相同的地址空间。

微内核是一个小的有特权的操作系统内核,只提供包括进程调度、内存管理、和进程间通信等基本功能,要依靠其他进程担当起和操作系统内核联系作用。2.10 什么是多线程?

多线程技术是指把执行一个应用程序的进程划分成可以同时运行的多个线程。

第3章 进程描述和控制

3.1 什么是指令跟踪?

指令跟踪是指为该进程而执行的指令序列。3.2 通常那些事件会导致创建一个进程?

新的批处理作业;交互登录;操作系统因为提供一项服务而创建;由现有的进程派生。(表3.1)3.3 对于图3.6中的进程模型,请简单定义每个状态。

运行态:该进程正在执行。就绪态:进程做好了准备,只要有机会就开始执行。阻塞态:进程在某些事件发生前不能执行,如I/O操作完成。

新建态:刚刚创建的进程,操作系统还没有把它加入到可执行进程组中。

退出态:操作系统从可执行进程组中释放出的进程,或者是因为它自身停止了,或者是因为某种原因被取消。3.4 抢占一个进程是什么意思?

处理器为了执行另外的进程而终止当前正在执行的进程,这就叫进程抢占。3.5 什么是交换,其目的是什么?

交换是指把主存中某个进程的一部分或者全部内容转移到磁盘。当主存中没有处于就绪态的进程时,操作系统就把一个阻塞的进程换出到磁盘中的挂起队列,从而使另一个进程可以进入主存执行。3.6 为什么图3.9(b)中有两个阻塞态?

有两个独立的概念:进程是否在等待一个事件(阻塞与否)以及进程是否已经被换出主存(挂起与否)。为适应这种2*2的组合,需要两个阻塞态和两个挂起态。3.7 列出挂起态进程的4个特点。

1.进程不能立即执行。

2.进程可能是或不是正在等待一个事件。如果是,阻塞条件不依赖于挂起条件,阻塞事件的发生不会使进程立即被执行。

3.为了阻止进程执行,可以通过代理把这个进程置于挂起态,代理可以是进程自己,也可以是父进程或操作系统。

4.除非代理显式地命令系统进行状态转换,否则进程无法从这个状态中转移。3.8 对于哪类实体,操作系统为了管理它而维护其信息表?

内存、I/O、文件和进程。

3.9 列出进程控制块中的三类信息。

进程标识,处理器状态信息,进程控制信息。3.10 为什么需要两种模式(用户模式和内核模式)?

用户模式下可以执行的指令和访问的内存区域都受到限制。这是为了防止操作系统受到破坏或者修改。而在内核模式下则没有这些限制,从而使它能够完成其功能。3.11 操作系统创建一个新进程所执行的步骤是什么?

1.给新进程分配一个唯一的进程标识号。2.给进程分配空间。3.初始化进程控制块。4.设置正确的连接。5.创建或扩充其他的数据结构。3.12 中断和陷阱有什么区别?

中断与当前正在运行的进程无关的某些类型的外部事件相关,如完成一次I/O操作。陷阱与当前正在运行的进程所产生的错误或异常条件相关,如非法的文件访问。3.13 举出中断的三个例子。

时钟终端,I/O终端,内存失效。3.14 模式切换和进程切换有什么区别?

发生模式切换可以不改变当前正处于运行态的进程的状态。发生进程切换时,一个正在执行的进程被中断,操作系统指定另一个进程为运行态。进程切换需要保存更多的状态信息。

第4章 线程、对称多处理和微内核

4.1 表3.5列出了在一个没有线程的操作系统中进程控制块的基本元素。对于多线程系统,这些元素中那些可能属于线程控制块,那些可能属于进程控制块?

这对于不同的系统来说通常是不同的,但一般来说,进程是资源的所有者,而每个线程都有它自己的执行状态。关于表3.5中的每一项的一些结论如下:进程标识:进程必须被标识,而进程中的每一个线程也必须有自己的ID。处理器状态信息:这些信息通常只与进程有关。进程控制信息:调度和状态信息主要处于线程级;数据结构在两级都可出现;进程间通信和线程间通信都可以得到支持;特权在两级都可以存在;存储管理通常在进程级;资源信息通常也在进程级。4.2 请列出线程间的模式切换比进程间的模式切换开销更低的原因。

包含的状态信息更少。

4.3 在进程概念中体现出的两个独立且无关的特点是什么? 资源所有权和调度/执行。

4.4 给出在单用户多处理系统中使用线程的四个例子。

前台和后台操作,异步处理,加速执行和模块化程序结构。4.5 哪些资源通常被一个进程中的所有线程共享?

例如地址空间,文件资源,执行特权等。4.6 列出用户级线程优于内核级线程的三个优点。

1.由于所有线程管理数据结构都在一个进程的用户地址空间中,线程切换不需要内核模式的特权,因此,进程不需要为了线程管理而切换到内核模式,这节省了在两种模式间进行切换(从用户模式到内核模式;从内核模式返回用户模式)的开销。

2.调用可以是应用程序专用的。一个应用程序可能倾向于简单的轮询调度算法,而另一个应用程序可能倾向于基于优先级的调度算法。调度算法可以去适应应用程序,而不会扰乱底层的操作系统调度器。3.用户级线程可以在任何操作系统中运行,不需要对底层内核进行修改以支持用户级线程。线程库是一组供所有应用程序共享的应用级软件包。4.7 列出用户级线程相对于内核级线程的两个缺点。

1.在典型的操作系统中,许多系统调用都会引起阻塞。因此,当用户级线程执行一个系统调用时,不仅这个线程会被阻塞,进程中的所有线程都会被阻塞。

2.在纯粹的用户级进程策略中,一个多线程应用程序不能利用多处理技术。内核一次只把一个进程分配给一个处理器,因此一次进程中只能有一个线程可以执行。4.8 定义jacketing。

Jacketing通过调用一个应用级的I/O例程来检查I/O设备的状态,从而将一个产生阻塞的系统调用转化为一个不产生阻塞的系统调用。4.9 简单定义图4.8中列出的各种结构。

SIMD:一个机器指令控制许多处理部件步伐一致地同时执行。每个处理部件都有一个相关的数据存储空间,因此,每条指令由不同的处理器在不同的数据集合上执行。

MIMD:一组处理器同时在不同的数据集上执行不同的指令序列。主/从:操作系统内核总是在某个特定的处理器上运行,其他处理器只用于执行用户程序,还可能执行一些操作系统实用程序。

SMP:内核可以在任何处理器上执行,并且通常是每个处理器从可用的进程或线程池中进行各自的调度工作。集群:每个处理器都有一个专用存储器,而且每个处理部件都是一个独立的计算机。4.10 列出SMP操作系统的主要设计问题。

同时的并发进程或线程,调度,同步,存储器管理,可靠性和容错。

4.11 给出在典型的单体结构操作系统中可以找到且可能是微内核操作系统外部子系统中的服务和功能。

设备驱动程序,文件系统,虚存管理程序,窗口系统和安全服务。4.12 列出并简单解释微内核设计相对于整体式设计的七个优点。

一致接口:进程不需要区分是内核级服务还是用户级服务,因为所有服务都是通过消息传递提供的。可扩展性:允许增加新的服务以及在同一个功能区域中提供多个服务。

灵活性:不仅可以在操作系统中增加新功能,还可以删减现有的功能,以产生一个更小、更有效的实现。

可移植性:所有或者至少大部分处理器专用代码都在微内核中。因此,当把系统移植到一个处理器上时只需要很少的变化,而且易于进行逻辑上的归类。

可靠性:小的微内核可以被严格地测试,它使用少量的应用程序编程接口(API),这就为内核外部的操作系统服务产生高质量的代码提供了机会。

分布式系统支持:微内核通信中消息的方向性决定了它对分布式系统的支持。

面向对象操作系统环境:在微内核设计和操作系统模块化扩展的开发中都可以借助面向对象方法的原理。

4.13 解释微内核操作系统可能存在的性能缺点。

通过微内核构造和发送信息、接受应答并解码所花费的时间比一次系统调用的时间要多。4.14 列出即使在最小的微内核操作系统中也可以找到的三个功能。

低级存储器管理,进程间通信(IPC)以及I/O和中断管理。4.15 在微内核操作系统中,进程或线程间通信的基本形式是什么?

消息。

第5章 并发性:互斥和同步

5.1 列出与并发相关的四种设计问题

进程间的交互,共享资源之间的竞争,多个进程的同步问题,对进程的处理器时间分配问题 5.2 列出并发的三种上下文

多个应用程序,结构化应用程序,操作系统结构 5.3 执行并发进程的最基本要求是什么?

加强互斥的能力

5.4 列出进程间的三种互相知道的程度,并简单地给出各自的定义。

进程间互相不知道对方:这是一些独立的进程,他们不会一起工作。

进程间间接知道对方:这些进程并不需要知道对方的进程ID号,但他们共享访问某些对象,如一个I/O缓冲区。

进程间直接知道对方:这些进程可以通过进程ID号互相通信,用于合作完成某些活动。5.5 竞争进程和合作进程进程间有什么区别。

竞争进程需要同时访问相同的资源,像磁盘,文件或打印机。合作进程要么共享访问一个共有的资源,像一个内存访问区,要么就与其他进程相互通信,在一些应用程序或活动上进行合作。5.6 列出与竞争进程相关的三种控制问题,并简单地给出各自的定义。

互斥:竞争进程仅可以访问一个临界资源(一次仅有一个进程可以访问临界资源),并发机制必须满足一次只有一个进程可以访问临界资源这个规则。

死锁:如果竞争进程需要唯一的访问多于一个资源,并且当一个进程控制着一个进程,且在等待另一个进程,死锁可能发生。

饥饿:一组进程的一个可能会无限期地拒绝进入到一个需要资源,因为其他 成员组成垄断这个资源。5.7 列出对互斥的要求。

1.必须强制实施互斥:在具有关于相同资源或共享对象的临界区的所有进程中,一次只允许一个进程进入临界区。

2.一个在临界区停止的进程必须不干涉其他进程。

3.绝不允许出现一个需要访问临界区的进程被无限延迟的情况,即不会饿死或饥饿。4.当没有进程在临界区中时,任何需要进入临界区的进程必须能够立即进入。5.对相关进程的速度和处理器的数目没有任何要求和限制。6.一个进程驻留在临界区中的时间是有限的。5.8 在信号量上可以执行什么操作。

1.一个信号量可以初始化成非负数。

2.wait操作使信号量减1,如果值为负数,那么进程执行wait就会受阻。3signal操作使信号量增加1,如果小于或等于0,则被wait操作阻塞的进程被解除阻塞。5.9 二元信号量与一般信号量有什么区别。

二元信号量只能取0或1,而一般信号量可以取任何整数。5.10 强信号量与弱信号量有什么区别。

强信号量要求在信号量上等待的进程按照先进先出的规则从队列中移出。弱信号量没有此规则。5.11.什么是管程。

管程是由一个或多个过程,一个初始化序列和局部数据组成的软件模块。5.12 对于消息,有阻塞和无阻塞有什么区别?

发送者和接收者任一方阻塞则消息传递需要等待,都无阻塞则不需等待。5.13 通常与读者-写者问题相关联的有哪些条件?

1.任意多的读进程可以同时读这个文件 2.一次只有一个写进程可以往文件中写

3.如果一个写进程正在往文件中写时,则禁止任何读进程读文件。

第6章 并发性:死锁和饥饿

6.1 给出可重用资源和可消费资源的例子。

可重用资源:处理器,I/O通道,主存和辅存,设备以及诸如文件,数据库和信号量之类的数据结构。

可消费资源:中断,信号,消息和I/O缓冲区中的信息。6.2 可能发生死锁所必须的三个条件是什么?

互斥,占有且等待,非抢占。6.3 产生死锁的第4个条件是什么?

循环等待。

6.4 如何防止占有且等待的条件?

可以要求进程一次性地请求所有需要的资源,并且阻塞这个资源直到所有请求都同时满足。6.5 给出防止无抢占条件的两种方法。

第一种,如果占有某些资源的一个进程进行进一步资源请求被拒绝,则该进程必须释放它最初占用的资源,如果有必要,可再次请求这些资源和另外的资源。

第二种,如果一个进程请求当前被另一个进程占有的一个资源,则操作系统可以抢占另一个进程,要求它释放资源。

6.6 如何防止循环等待条件?

可以通过定义资源类型的线性顺序来预防。如果一个进程已经分配到了R类型的资源,那么它接下来请求的资源只能是那些排在R类型之后的资源类型。6.7 死锁避免,检测和预防之间的区别是什么?

死锁预防是通过间接地限制三种死锁必要条件的至少一个或是直接地限制循环等待的发生来避免死锁的出现。死锁避免允许可能出现的必要条件发生,但是采取措施确保不会出现死锁的情况。而死锁检测允许资源的自由分配,采取周期性的措施来发现并处理可能存在的死锁情况。

第7章 内存管理

7.1 内存管理需要满足哪些需求?

重定位、保护、共享、逻辑组织和物理组织。7.2 为什么需要重定位进程的能力?

通常情况下,并不能事先知道在某个程序执行期间会有哪个程序驻留在主存中。此外还希望通过提供一个巨大的就绪进程池,能够把活动进程换入和换出主存,以便使处理器的利用率最大化。在这两种情况下,进程在主存中的确切位置是不可预知的。7.3 为什么不可能在编译时实施内存保护?

由于程序在主存中的位置是不可预测的,因而在编译时不可能检查绝对地址来确保保护。并且,大多数程序设计语言允许在运行时进行地址的动态计算(例如,通过计算数组下标或数据结构中的指针)。因此,必须在运行时检查进程产生的所有存储器访问,以便确保它们只访问了分配给该进程的存储空间。

7.4 允许两个或多个进程访问进程的某一特定区域的原因是什么? 如果许多进程正在执行同一程序,则允许每个进程访问该程序的同一个副本要比让每个进程有自己单独的副本更有优势。同样,合作完成同一任务的进程可能需要共享访问同一个数据结构。7.5 在固定分区方案中,使用大小不等的分区有什么好处?

通过使用大小不等的固定分区:1.可以在提供很多分区的同时提供一到两个非常大的分区。大的分区允许将很大的进程全部载入主存中。2.由于小的进程可以被放入小的分区中,从而减少了内部碎片。7.6 内部碎片和外部碎片有什么区别?

内部碎片是指由于被装入的数据块小于分区大小而导致的分区内部所浪费的空间。外部碎片是与动态分区相关的一种现象,它是指在所有分区外的存储空间会变成越来越多的碎片的。7.7 逻辑地址、相对地址和物理地址间有什么区别?

逻辑地址是指与当前数据在内存中的物理分配地址无关的访问地址,在执行对内存的访问之前必须把它转化成物理地址。相对地址是逻辑地址的一个特例,是相对于某些已知点(通常是程序的开始处)的存储单元。物理地址或绝对地址是数据在主存中的实际位置。7.8 页和帧之间有什么区别?

在分页系统中,进程和磁盘上存储的数据被分成大小固定相等的小块,叫做页。而主存被分成了同样大小的小块,叫做帧。一页恰好可以被装入一帧中。7.9 页和段之间有什么区别?

分段是细分用户程序的另一种可选方案。采用分段技术,程序和相关的数据被划分成一组段。尽管有一个最大段长度,但并不需要所有的程序的所有段的长度都相等。

第8章 虚拟内存

8.1 简单分页与虚拟分页有什么区别?

简单分页:一个程序中的所有的页都必须在主存储器中程序才能正常运行,除非使用覆盖技术。拟内存分页:不是程序的每一页都必须在主存储器的帧中来使程序运行,页在需要的时候进行读取。8.2 解释什么是抖动。

虚拟内存结构的震动现象,在这个过程中处理器大部分的时间都用于交换块,而不是执行指令。8.3 为什么在使用虚拟内存时,局部性原理是至关重要的?

可以根据局部性原理设计算法来避免抖动。总的来说,局部性原理允许算法预测哪一个当前页在最近的未来是最少可能被使用的,并由此就决定候选的替换出的页。8.4 哪些元素是页表项中可以找到的元素?简单定义每个元素。

帧号:用来表示主存中的页来按顺序排列的号码。存在位(P):表示这一页是否当前在主存中。修改位(M):表示这一页在放进主存后是否被修改过。8.5 转移后备缓冲器的目的是什么?

转移后备缓冲器(TLB)是一个包含最近经常被使用过的页表项的高速缓冲存储器。它的目的是为了减少从磁盘中恢复一个页表项所需的时间。8.6 简单定义两种可供选择的页读取策略。

在请求式分页中,只有当访问到某页中的一个单元时才将该页取入主存。在预约式分页中,读取的并不是页错误请求的页。8.7 驻留集管理和页替换策略有什么区别?

驻留集管理主要关注以下两个问题:(1)给每个活动进程分配多少个页帧。(2)被考虑替换的页集是仅限在引起页错误的进程的驻留集中选择还是在主存中所有的页帧中选择。

页替换策略关注的是以下问题:在考虑的页集中,哪一个特殊的页应该被选择替换。8.8 FIFO和Clock页替换算法有什么区别?

时钟算法与FIFO算法很接近,除了在时钟算法中,任何一个使用位为一的页被忽略。8.9 页缓冲实现的是什么?(1)被替换出驻留集的页不久又被访问到时,仍在主存中,减少了一次磁盘读写。

(2)被修改的页以簇的方式被写回,而不是一次只写一个,这就大大减少了I/O操作的数目,从而减少了磁盘访问的时间。

8.10 为什么不可能把全局替换策略和固定分配策略组合起来?

固定分配策略要求分配给一个进程的帧的数目是确定的,当一个进程中取入一个新的页时,这个进程驻留页集中的一页必须被替换出来(保持分配的帧的数目不变),这是一种局部替换策略。8.11 驻留集和工作集有什么区别?

一个进程的驻留集是指当前在主存中的这个进程的页的个数。一个进程的工作集是指这个进程最近被使用过的页的个数。

8.12 请求式清除和预约式清除有什么区别?

在请求式清除中,只有当一页被选择用于替换时才被写回辅存;

在预约式清除中,将这些被修改的多个页在需要用到它们所占据的页帧之前成批的写回辅存。

第9章 单处理器调度

9.1 简要描述三种类型的处理器调度。

长程调度:决定加入到待执行的进程池中;

中程调度:决定加入到部分或全部在主存中的进程集合中; 短程调度:决定哪一个可用进程将被处理器执行。9.2 在交互式操作系统中,通常最重要的性能要求是什么?

反应时间

9.3 周转时间和响应时间有什么区别?

周转时间是一个要求花费在系统上的包括等待时间和服务时间的总的时间。响应时间对一个交互进程,这是指从提交一个请求到开始接受响应之间的时间间隔。通常进程在处理该请求的同时,就开始给用户产生一些输出。

9.4 对进程调度,较小的优先级值表示较低的优先级还是较高的优先级?

在UNIX和许多其他系统中,大的优先级值表示低优先级进程。许多系统,比如WINDOWS,刚好相反,大数值表示高优先级。

9.5 抢占式和非抢占式调度有什么区别?

非抢占:在这种情况下,一旦进程处于运行态,他就不断执行直到终止,或者为等待I/O或请求某些操作系统服务而阻塞自己。

抢占:当前正在运行的进程可能被操作系统中断,并转移到就绪态。关于抢占的决策可能是在一个新进程到达时,或者在一个中断发生后把一个被阻塞的进程置为就绪态时,或者基于周期性的时间中断。9.6 简单定义FCFS调度。

当每个进程就绪后,它加入就绪队列。当当前正在运行的进程停止执行时,选择在就绪队列中存在时间最长的进程运行。9.7 简单定义轮转调度

以一个周期性间隔产生时钟中断,当中断产生时,当前正在运行的的进程被置于就绪队列中,然后基于FCFS策略选择下一个就绪作业运行。9.8 简单定义最短进程优先调度。

这是一个非抢占的策略,其原则是下一次选择所需处理时间最短的进程。9.9 简单定义最短剩余时间调度。

最短剩余时间是针对SPN增加了抢占机制的版本。在这种情况下,调度器总是选择预期剩余时间最短的进程。当一个新进程加入到就绪队列时,他可能比当前运行的进程具有更短的剩余时间,因此,只有新进程就绪,调度器就可能抢占当前正在运行的进程。9.10 简单定义最高响应比优先调度。在当前进程完成或被阻塞时,选择R值最大的就绪进程。R=(w+s)/s,w等待处理器的时间,s期待的服务时间。

9.1 1简单定义反馈调度。

调度基于抢占原则并且使用动态优先级机制。当一个进程第一次进入系统时,它被放置在RQ0。当它第一次被抢占后并返回就绪状态时,它被防止在RQ1。在随后的时间里,每当它被抢占时,它被降级到下一个低优先级队列中。一个短进程很快会执行完,不会在就绪队列中降很多级。一个长进程会逐级下降。因此,新到的进程和短进程优先于老进程和长进程。在每个队列中,除了在优先级最低的队列中,都使用简单的FCFS机制。一旦一个进程处于优先级最低的队列中,它就不可能再降低,但是会重复地返回该队列,直到运行结束。

第10章 多处理器和实时调度

10.1 列出并简单定义五种不同级别的同步粒度。

细粒度:单指令流中固有的并行;

中等粒度:在一个单独应用中的并行处理或多任务处理; 粗粒度:在多道程序环境中并发进程的多处理;

非常粗粒度:在网络节点上进行分布处理,以形成一个计算环境; 无约束粒度:多个无关进程。

10.2 列出并简单定义线程调度的四种技术。

加载共享:进程不是分配到一个特定的处理器,而是维护一个就绪进程的全局队列,每个处理器只要空闲就从队列中选择一个线程。这里使用术语加载共享来区分这种策略和加载平衡方案,加载平衡是基于一种比较永久的分配方案分配工作的。

组调度:一组相关的线程基于一对一的原则,同时调度到一组处理器上运行。

专用处理器分配:在程序执行过程中,每个程序被分配给一组处理器,处理器的数目与程序中的线程的数目相等。当程序终止是,处理器返回到总的处理器池中,可供分配给另一个程序。动态调度:在执行期间,进程中线程的数目可以改变。10.3 列出并简单定义三种版本的负载分配。

先来先服务(FCFS):当一个作业到达时,它的所有线程都被连续地放置在共享队列末尾。当一个处理器变得空闲时,它选择下一个就绪线程执行,直到完成或阻塞。最少线程数优先:共享就绪队列被组织成一个优先级队列,如果一个作业包含的未调度线程数目最少,则给它指定最高的优先级。具有同等优先级的队列按作业到达的顺序排队。和FCFS一样,被调度的线程一直运行到完成或阻塞。

可抢占的最少线程数优先:最高的的优先级给予包含的未被调度的线程数目最少的作业。刚到达的作业如果包含的线程数目少于正在执行的作业,它将抢占属于这个被调度作业的线程。10.硬实时任务和软实时任务有什么区别?

硬实时任务指必须满足最后期限的限制,否则会给系统带来不可接受的破坏或者致命的错误。

软实时任务也有一个与之相关联的最后期限,并希望能满足这个期限的要求,但是这并不是强制的,即使超过了最后期限,调度和完成这个任务仍然是有意义的。10.5 周期性实时任务和非周期性实时任务有什么区别?

非周期任务有一个必须结束或开始的最后期限,或者有一个关于开始时间和结束时间的约束。而对于周期任务,这个要求描述成“每隔周期T一次”或“每隔T个单位”。10.6 列出并简单定义对实时操作系统的五方面的要求。

可确定性:在某中程度上是指它可以按固定的、预先确定的时间或时间间隔执行操作。可响应性:它关注的是在知道中断之后操作系统未中断提供服务的时间

用户控制:用户应该能够区分硬实时任务和软实时任务,并且在每一类中确定相对优先级。实时系统还允许用户指定一些特性,例如使用分页还是进程交换、哪一个进程必须常驻主存、使用何种磁盘算法、不同的优先级的进程各有哪些权限等。

可靠性 :可靠性必须提供这样一种方式,以继续满足实时最后期限。

故障弱化操作:故障弱化操作指系统在故障时尽可能多的保存其性能和数据的能力。10.7 列出并简单定义四类实时调度算法。

静态表驱动法:执行关于可行调度的静态分析。分析的结果是一个调度,它用于确定在运行时一个任务何时必须开始执行。

静态优先级驱动抢占法:同样,执行一个静态分析,但是没有制定调度,而且用于给任务指定优先级,使得可以使用传统的优先级驱动的抢占式调度器。

基于动态规划调度法:在运行是动态地确定可行性,而不是在开始运行前离线的确定(静态)。一个到达的任务,只有当能够满足它的时间约束时,才可以被接受执行。可行性分析的结果是一个调度或规划,可用于确定何时分派这个任务。

动态尽力调度法:不执行可行性分析。系统试图满足所有的最后期限,并终止任何已经开始运行但错过最后期限的进程。

10.8 关于一个任务的哪些信息在实时调度是非常有用?

就绪时间:任务开始准备执行的时间。对于重复或周期性的任务,这实际上是一个事先知道的时间序列。而对于非周期性的任务,或者也事先知道这个时间,或者操作系统仅仅知道什么时候任务真正就绪。

启动最后期限:任务必须开始的时间。

完成最后期限:任务必须完成的时间。典型的实时应用程序或者有启动最后期限,或者有完成最后期限,但不会两者都存在。

处理时间:从执行任务直到完成任务所需的时间。在某些情况下,可以提供这个时间,而在另外一些情况下,操作系统度量指数平均值。其他调度系统没有使用这个信息。资源需求:任务在执行过程中所需的资源集合(处理器以外的资源)。

优先级:度量任务的相对重要性。硬实时任务可能具有绝对的优先级,因为如果错过最后期限则会导致系统失败。如果系统无论如何也要继续运行,则硬实时任务和软实时任务可以被指定相关的优先级,以指导调度器。

子任务结构:一个任务可以分解成一个必须执行的子任务和一个可选的子任务。只有必须执行的子任务拥有硬最后期限。

第11章 I/O管理和磁盘调度

11.1 列出并简单定义执行I/O的三种技术。

可编程I/O:处理器代表进程给I/O模块发送给一个I/O命令,该进程进入忙等待,等待操作的完成,然后才可以继续执行。

中断驱动I/O:处理器代表进程向I/O模块发送一个I/O命令,然后继续执行后续指令,当I/O模块完成工作后,处理器被该模块中断。如果该进程不需要等待I/O完成,则后续指令可以仍是该进程中的指令,否则,该进程在这个中断上被挂起,处理器执行其他工作。直接存储器访问(DMA):一个DMA模块控制主存和I/O模块之间的数据交换。为传送一块数据,处理器给DMA模块发送请求,只有当整个数据块传送完成后,处理器才被中断。11.2 逻辑I/O和设备I/O有什么区别?

逻辑I/O:逻辑I/O模块把设备当作一个逻辑资源来处理,它并不关心实际控制设备的细节。逻辑I/O模块代表用户进程管理的一般I/O功能,允许它们根据设备标识符以及诸如打开、关闭、读、写之类的简单命令与设备打交道。

设备I/O:请求的操作和数据(缓冲的数据、记录等)被转换成适当的I/O指令序列、通道命令和控制器命令。可以使用缓冲技术,以提高使用率。

11.3 面向块的设备和面向流的设备有什么区别?请举例说明。面向块的设备将信息保存在块中,块的大小通常是固定的,传输过程中一次传送一块。通常可以通过块号访问数据。磁盘和磁带都是面向块的设备。

面向流的设备以字节流的方式输入输出数据,其末使用块结构。终端、打印机通信端口、鼠标和其他指示设备以及大多数非辅存的其他设备,都属于面向流的设备。11.4 为什么希望用双缓冲区而不是单缓冲区来提高I/O的性能?

双缓冲允许两个操作并行处理,而不是依次处理。典型的,在一个进程往一个缓冲区中传送数据(从这个缓冲区中取数据)的同时,操作系统正在清空(或者填充)另一个缓冲区。11.5 在磁盘读或写时有哪些延迟因素?

寻道时间,旋转延迟,传送时间

11.6 简单定义图11.7中描述的磁盘调度策略。

FIFO:按照先来先服务的顺序处理队列中的项目。

SSTF:选择使磁头臂从当前位置开始移动最少的磁盘I/O请求。

SCAN:磁头臂仅仅沿一个方向移动,并在途中满足所有未完成的请求,直到它到达这个方向上最后一个磁道,或者在这个方向上没有其他请求为止。接着反转服务方向,沿相反方向扫描,同样按顺序完成所有请求。

C-SCAN:类似于SCAN,11.7 简单定义图7层RAID。

0:非冗余

1:被镜像;每个磁盘都有一个包含相同数据的镜像磁盘。

2:通过汉明码实现冗余;对每个数据磁盘中的相应都计算一个错误校正码,并且这个码位保存在多个奇偶校验磁盘中相应的文件。

3:交错位奇偶校验;类似于第二层,不同之处在于RAID3为所有数据磁盘中同一位置的位的集合计算一个简单的奇偶校验位,而不是错误校正码。

4:交错块分布奇偶校验;对每个数据磁盘中相应的条带计算一个逐位奇偶。5:交错块分布奇偶校验;类似于第四层,但把奇偶校验条带分布在所有磁盘中。6:交错块双重分布奇偶校验;两种不同的奇偶校验计算保存在不同磁盘的不同块中。11.8 典型的磁盘扇区大小是多少?

512比特

第12章 文件管理

12.1 域和记录有什么不同?

域(field)是基本数据单位。一个域包含一个值。

记录(record)是一组相关的域的集合,它可以看做是应用程序的一个单元。12.2 文件和数据库有什么不同?

文件(file)是一组相似记录的集合,它被用户和应用程序看做是一个实体,并可以通过名字访问。数据库(database)是一组相关的数据集合,它的本质特征是数据元素间存在着明确的关系,并且可供不同的应用程序使用。12.3 什么是文件管理系统?

文件管理系统是一组系统软件,为使用文件的用户和应用程序提供服务。12.4 选择文件组织时的重要原则是什么?

访问快速,易于修改,节约存储空间,维护简单,可靠性。12.5 列出并简单定义五种文件组织。

堆是最简单的文件组织形式。数据按它们到达的顺序被采集,每个记录由一串数据组成。

顺序文件是最常用的文件组织形式。在这类文件中,每个记录都使用一种固定的格式。所有记录都具有相同的长度,并且由相同数目、长度固定的域按特定的顺序组成。由于每个域的长度和位置已知,因此只需要保存各个域的值,每个域的域名和长度是该文件结构的属性。索引顺序文件保留了顺序文件的关键特征:记录按照关键域的顺序组织起来。但它还增加了两个特征:用于支持随机访问的文件索引和溢出文件。索引提供了快速接近目标记录的查找能力。溢出文件类似于顺序文件中使用的日志文件,但是溢出文件中的记录可以根据它前面记录的指针进行定位。

索引文件:只能通过索引来访问记录。其结果是对记录的放置位置不再有限制,只要至少有一个索引的指针指向这条记录即可。此外,还可以使用长度可变的记录。直接文件或散列文件:直接文件使用基于关键字的散列。

12.6 为什么在索引顺序文件中查找一个记录的平均搜索时间小于在顺序文件中的平均搜索时间?

在顺序文件中,查找一个记录是按顺序检测每一个记录直到有一个包含符合条件的关键域值的记录被找到。索引顺序文件提供一个执行最小穷举搜索的索引结构。12.7 对目录执行的典型操作有哪些?

搜索,创建文件,删除文件,显示目录,修改目录。12.8 路径名和工作目录有什么关系?

路径名是由一系列从根目录或主目录向下到各个分支,最后直到该文件的路径中的目录名和最后到达的文件名组成。工作目录是一个这样的目录,它是含有用户正在使用的当前目录的树形结构。12.9 可以授予或拒绝的某个特定用户对某个特定文件的访问权限通常有哪些?

无(none),知道(knowledge),执行(execution),读(reading),追加(appending),更新(updating),改变保护(changing protection),删除(deletion)。12.10 列出并简单定义三种组块方式。

固定组块(fixed blocking):使用固定长度的记录,并且若干条完整的记录被保存在一个块中。在每个块的末尾可能会有一些未使用的空间,称为内部碎片。可变长度跨越式组块(variable-length spanned blocking):使用长度可变的记录,并且紧缩到块中,使得块中没有未使用空间。因此,某些记录可能会跨越两个块,通过一个指向后继块的指针连接。可变长度非跨越式组块(variable-length unspanned blocking):使用可变长度的记录,但并不采用跨越的方式。如果下一条记录比块中剩余的未使用空间大,则无法使用这一部分,因此在大多数块中都会有未使用的空间。

12.11 列出并简单定义三种文件分配方法。

连续分配是指在创建文件时,给文件分配一组连续的块。链式分配基于单个的块,链中的每一块都包含指向下一块的指针。索引分配:每个文件在文件分配表中有一个一级索引,分配给该文件的每个分区在索引中都有一个表项。

第13章 网 络

13.1 网络访问层的主要功能是什么?

网络层主要关注在两个端系统(服务器、工作站)之间的数据交换,以及端系统间的物理网络。13.2 传输层的任务是什么?

传输层关注的是数据的可靠性和保证数据能正确到达接收端应用程序。13.3 什么是协议?

协议是定义了用来管理两个单元间进行数据交换的一系列规则的集合。13.4 什么是协议体系结构?

这是一种实现通信功能的软件结构。典型地,协议结构包含了一个分层化的协议集,并且每个层中有一个或多个协议。13.5 什么是TCP/IP?

传输控制协议/互联网协议(TCP/IP)是两个最初为网际互连提供低层支持而设计的协议。TCP/IP协也被广泛应用于涉及由美国防卫部门和因特尔团体发展的比较广泛的协议集。13.6 使用套接字接口的目的是什么? 套接字接口是一个能够编写程序的API,从而利用TCP/IP 协议程序建立一个用户端和服务器之间的通信。

第14章

分布式处理、客户/服务器和集群

14.1 什么是客户/服务器计算?

客户/服务器计算是一个网络环境,在这个网络环境中包含着客户机和服务器,并由服务器来响应客户机的请求。

14.2 客户/服务器计算与任何其他形式的分布式数据处理的区别是什么?

1、在用户的本地系统上为该用户提供界面友好的应用程序,这样做可使系统具有更高的可靠性。这使得用户可以在很大程度上控制对计算机的使用方式和时间,并使得部门级管理者具有响应本地需求的能力。

2、尽管应用是分散开的,但仍然强调公司数据库的集中以及很多网络管理和使用功能的集中。这使公司的管理者能够对计算信息系统的投资总额进行总体控制,并提供互操作,以使多系统能够配合起来。同时,减少了各部门和单位在维护这些复杂的计算机设施时的开销,使他们能够选择他们需要的各种类型的机器和接口来访问那些数据和信息。

3、对于用户组织和厂商来说,他们有一个共同的承诺事项,即使系统开放和模块化。这意味着用户在选择产品和混和使用来自众多厂商的设备时具有很多选择。

4、网络互联是操作的基础,网络管理和网络安全在组织和操作信息系统中具有很高的优先权。14.3 像TCP/IP这样的通信结构在客户/服务器计算环境中的作用是什么?

它是使客户端和服务器能够协同工作的通信软件。

14.4 讨论将应用程序定位在客户上、服务器上或分开定位在客户和服务器上的基本原理。

基于服务器的处理:这种配置的基本原理是用户工作站最适宜于提供良好的用户界面,并且数据库和应用程序很容易在中心系统上维护。尽管用户获得了良好界面的好处,但是,这种配置类型并不总能有效提高处理效率或系统支持的实际商业功能上有本质的改变。基于客户的处理:它使用户能够使用适应本地需要的应用。合作处理:这种配置类型可以比其他客户/服务器方式为用户提供更高的生产效率和更高的网络效率。

14.5 什么是胖客户和瘦客户,两种方法在基本原理上的差别是什么?

胖客户:这是基于客户的处理,而大部分的软件都集中在客户端。胖客户模型的主要优点是它充分利用了桌面功能,分担了服务器上的应用处理并使它们更加有效,不容易产生瓶颈。

瘦客户:这是基于服务器的处理,而大部分的软件都集中在服务器。这种方式更近似地模拟了传统的以主机为中心的方式,常常是使将公司范围的应用程序从大型机环境迁移到分布式环境的途径。14.6 给出将pros和cons用于胖客户和瘦客户策略的建议。

胖客户:胖客户模型的主要优点是它充分利用了桌面功能,分担了服务器上的应用处理并使它们更加有效,不容易产生瓶颈。新增加的功能很快就超出了桌面机器的处理能力,迫使公司进行升级。如果模型扩充超出了部门的界限,合并了很多用户,则公司必须安装高容量局域网来支持在瘦服务器和胖客户之间进行大量的传输。最后,维护、升级或替换分布于数十台或数百台桌面机的应用程序将变得非常困难。瘦客户:这种方式更近似地模拟了传统的以主机为中心的方式,常常是使将公司范围的应用程序从大型机环境迁移到分布式环境的途径。但是它不能提供和胖客户策略一样的灵活性。14.7 解释三层客户/服务器体系结构的基本原理。

中间层机器基本上是位于用户客户和很多后端数据库服务器之间的网关。中间层机器能够转换协议,将对一种类型的数据库查询映像为另一种类型数据库的查询。另外,中间层机器能够融合来自不同数据源的结果。最后,中间层机器因介于两个层次之间而可以充当桌面应用程序和后端应用程序之间的网关。

14.8 什么是中间件?

中间件是在上层应用程序和下层通信软件和操作系统之间使用标准的编程接口和协议。它提供统一的方式和方法来跨越各种平台访问系统资源。

14.9 既然具有像TCP/IP这样的标准,为什么还需要中间件?

TCP/IP不提供API和中间层协定来支持应用于不同的硬件和操作系统的多种应用程序平台。14.10 列出消息传递的阻塞原语和无阻塞原语的优缺点。

无阻塞原语为进程提供了对消息传递机制高效而灵活的使用,这种方法的缺点是难于测试和调试使用这些原语的程序。问题的不可再现性与时间顺序相关性往往导致产生很多奇怪而麻烦的问题。阻塞原语有与无阻塞原语相反的优缺点。

14.11 列出远程过程调用的非永久性和永久性绑定的优缺点。

非永久绑定:因为连接需要维持两端的状态信息,因此需要消耗资源,非永久绑定类型用于保存这些资源。另一方面,建立连接所带来的开销使非永久绑定对同一个调用者频繁调用远程过程的情况不太适用。

永久绑定:对于对远程过程进行多次重复调用的应用程序,永久绑定保持着逻辑连接,并支持使用同一连接进行一系列的调用和返回。

14.12 列出同步远程过程调用和异步远程过程调用的优缺点。

同步远程过程调用易于理解和编程,因为它的行为是可以预期的。然而,它未能发挥分布式应用中固有的全部并行性。这就限制了分布式应用所能具有的交互性,降低了性能。为了提供更大的灵活性,各种异步远程过程调用机制已经得到实现,以获得更大程度的并行性而同时又保留了远程过程调用的通俗性和简易性。异步远程过程调用并不阻塞调用者,应答也可以在需要它们时接收到,这使客户在本地的执行可以与对服务器的调用并行进行。14.13 列出并简短定义四种不同的构建集群的方法。

被动等待:当主服务器出现故障时,由从服务器来接管。

分离服务器:各服务器具有独自的磁盘,数据可连续地从主服务器复制至从服务器。

各服务器连接到磁盘:所有服务器都连接到同一磁盘,但每台服务器仍拥有自己的磁盘,一旦某台服务器发生故障,则其磁盘被其他服务器接管。共享磁盘:多台服务器同时共享对磁盘的访问。

第15章

分布式进程管理

15.1 讨论实现进程迁移的原因。

负载共享:通过将进程从负载较重的系统迁移到负载较轻的系统,负载就会得到平衡,从而提高整体性能。通信性能:可以将交互密集的多个进程移动到同一节点上,以减少因为它们之间的交互而带来的通信开销。同样,当一个进程在某些文件或某组文件上执行数据分析,且文件的大小比进程要大很多时,将该进程移动到数据端也许是更有利的。可用性:需要长时间运行的进程,在得到错误的预先通知时,或者在预定的关机时间之前,为了能够存活下来,可能需要迁移到其他机器中。如果操作系统提供了这样的通知,则那些需要继续运行的进程可以迁移到另一个系统上,或者保证在稍后的某个时间在当前系统上能重新启动。特殊功能的使用:进程的迁移可以充分利用特定节点上独特的硬件或软件功能。

15.2 在进程迁移过程中,进程地址空间是如何处理的?

下列策略可能被采用:Eager(all):在迁移时转移整个地址空间。预先复制(precopy):进程继续在源节点上执行,而地址空间已经复制到了目标节点上。在预先复制的过程中,源节点上的某些页有可能又被修改,这些页必须被复制第二次。Eager(dirty):仅仅转移那些位于主存中且已被修改了的地址空间的页。虚地址空间的所有其他块将在需要时才转移。

基于引用的复制(copy-on-reference):这是Eager(dirty)的变体,只有在引用某页时,该页才被取入。

刷新(flushing):通过把脏页写回磁盘,该进程的页可以从源机器的主存中清除。这样,在需要时可以从磁盘访问到页,而不是从源节点的存储器中访问。15.3 抢占式和非抢占式进程迁移的动机是什么?

非抢占式进程迁移对于负载平衡是很有用的,它的优点是能够避免全面性进程迁移的开销,缺点是该方法对于负载分布的突然变化反应不佳。15.4 为什么不可能确定真正的全局状态?

因为系统之间的通信延迟,不可能在系统范围内维护一个所有系统都随时可用的时钟。而且,维护一个中央时钟并让所有本地时钟与之保持精确同步,这在技术上也是不现实的,因为经过一段时间后,在各个本地时钟之间就会产生一些偏差,这将导致同步的丢失。15.5 集中式算法和分布式算法所实行的分布式互斥有何区别?

在完全集中式算法中,一个节点被指定为控制节点,它控制对所有共享对象的访问。当任何进程请求对一个临界资源进行访问时,就向本地资源控制进程发送一个请求,这个进程接着向控制节点发送一条请求消息,当共享对象可用时,将返回一条许可消息。当进程结束使用资源后,向控制节点发送一条释放消息。

在分布式算法中,互斥算法涉及到每个离散的实体之间的同步合作。15.6 定义两种类型的分布式死锁。

在资源分配中产生的死锁以及由于消息通信而产生的死锁。

第16章 安全

16.1 计算机安全的基础要求是什么?

机密性,完整性,可用性,可靠性。

16.2 主动安全攻击和被动安全攻击有什么不同?

被动攻击在本质上是对传输进行窃听或监视。对方的目标是获取正在传输的信息。主动攻击包括对数据或数据流的更改或者生成错误的数据或数据流。

16.3 列出并简单定义主动安全攻击和被动安全攻击的分类。

被动攻击:①释放消息内容:未被授权的人或程序了解了文件或消息的内容;②通信分析:通过分析数据传输模式来获取信息。

主动攻击:①伪装:一个实体假装成另一个不同的实体;②重放:被动地捕获一个数据单元,然后再把它重发以产生未经授权的结果;③更改消息:改变合法消息的某些部分,或者消息被延迟或记录下来,产生未授权的结果;④拒绝服务:阻止或禁止对通信设施的正确使用或管理。16.4 大多数通用的用户访问控制技术都要求有哪些元素?

在共享系统或服务器上,用户访问控制的最普遍的技术是用户登录,这需要一个用户标识符(ID)和一个口令。

16.5 在访问控制中,主体和对象有什么区别?

主体(subject):能够访问对象的实体。一般地,主体概念等同于进程。任何用户或应用程序获取对一个对象的访问,实际上是通过一个代表该用户或应用程序的进程。对象(object):访问控制所针对的一切。例如文件、文件的某些部分、程序、内存段以及软件对象。16.6 解释图16.6中salt的目的。

salt有三方面的作用:⑴防止在口令文件中出现相同的口令。即使有两个用户选择了相同的口令,那些口令也将被指定不同的时间,因此,两个用户的“扩展”口令是不同的。⑵有效地增加口令的长度,而不要求用户记住那两个额外的字符。因此,可能的口令个数增加了4096,从而增加了猜测口令的难度。⑶防止使用DES的硬件实现,硬件实现会使蛮力猜测攻击变得容易。16.7 解释统计异常入侵检测和基于规则的入侵检测有什么不同?

统计异常检测:包括收集在一段时间上与合法用户的行为有关的数据。然后对观察到的行为进行统计试验,以高度的信心来确定该行为是否是合法用户的行为。基于规则的检测:包括定义一组规则的工作,该组规则用于决定一个已知的行为是否是入侵者的行为。16.8 1999年和2000年开发的电子邮件附件和电子邮件VBS恶意软件(如Melissa、love letter)称为电子邮件病毒。请问用术语电子邮件蠕虫是否更正确一些?

这两种术语都合适。术语电子邮件蠕虫通常是一个独立的程序而不是嵌入其他程序的一个程序块,因此电子邮件病毒更正确一些。

16.9 加密在病毒设计中扮演着什么角色?

加密技术将以如下方式被使用:有一部分病毒,一般称为变种引擎,它生成一个随机的密钥来加密病毒剩余的部分。该密钥与病毒一起存储,变种引擎自身却改变了。当受到感染的程序唤起执行时,病毒使用这个存储的随机密钥来解密病毒。当病毒复制时,选择另一个不同的随机密钥。16.10 攻击常规加密方案的两种通用方法什么?

密码分析:依靠算法的本质和关于明文一般特点的知识,甚至一些“明文-密文对”来进行攻击。这类攻击利用算法的特性,试图推导出具体的明文,或者推导出使用的密钥。

强力攻击:它在一块密文上尝试每种可能的密钥,直到转换得到一个可理解的明文。16.11 什么是DES和三重DEA?

DES是被NIST标准化的一个广泛应用的传统编码标准。最初的DES指定了一个数据编码运算法则(DEA)。最近的标准的版本也包括使用三重DEA的选择项,用二或三个独立的密钥重复基本的DEA三次。16.12 AES是如何改进三重DEA的?

AES被期望在软件中运行得比TDEA更快。同时, AES使用更大的块尺寸,这可以提高安全性。16.13 在评估AES候选者时,将使用什么评估原则?

评估原则包括安全性、计算效率、需要的存储量、硬件和软件的适用性和灵活性。16.14 解释常规加密和公钥加密有什么不同。

在传统编码中,编码和解码使用相同的密钥。公钥编码中有一对密钥,一个用于编码而另一个用于解码。这二个密钥中只有一个需要被保留私用。16.15 术语公钥、私钥和密钥的区别是什么?

对称加密中的密钥通常称为密钥。公钥加密中使用的两个密钥称为公钥和私钥。私钥总是保密的,之所以将它称为私钥,是为了避免与对称加密中的密钥混淆。

第五篇:操作系统课程设计++模拟磁盘文件管理的程序

中南林业科技大学

操作系统课程设计

课程题目:模拟磁盘文件管理的程序

姓名: 学号:

专业: 计算机科学与技术 年级:

2006

计算机科学学院

2008年11月 模拟磁盘文件管理的程序

一、课程设计内容

⑴ 自定义磁盘文件管理的数据结构; ⑵ 能够自由创建、修改、删除文件; ⑶ 文件具有一定自定义的属性; ⑷ 能够显示当前系统文件的状态。

二、课程设计的数据结构说明

程序中定义了两个类: class file//文件类 {private: char name[10];//文件名 public: int tag;//删除标记 1:已删 0:未删 file(){ } char *getname(){return name;} //获取文件名

int gettag(){return tag;} //获取删除标记

int getlength(){return length;} //获取文件大小

int getblocknum(){return blocknum;} // 磁盘块数

int getblocksum1(){return blocksum1;} //磁盘块号的始点 int getblocksum2(){return blocksum2;} //磁盘块号的终点 int length,blocknum,blocksum1,blocksum2;

void setname(char na[ ]){strcpy(name,na);} //设置文件名 void delwenjian(){ tag=1;}//设置删除标记 1:已删 0:未删

void creatfile(char *na,int L,int num,int s1,int s2)//创建文件 void deltefile(char *na){tag=1;strcpy(name,na);} //删除文件 void disp()//输出文件信息 class fdatabase //文件库类 { private: int top;//文件记录指针 file f[50];public: fdatabase(){top=-1;} //构造函数 int search(char *fname)//按文件名查找

int creatfile(char *na,int L,int num,int s1,int s2)//创建文件时先查找是否存在

int deltefile(char *na)//删除文件时先查找是否存在 void disp()//输出所有文件信息 };

三、课程设计的模板说明

1、初始化,建立文件系统

输入磁盘大小(G),每个盘块大小(M),自动建立位示图,位示图字长定为32位

输出位示图的行数,以及行号、列号与磁盘块号的转换公式(都从0开始编号)。

2、循环选择执行以下功能

1、存储文件

输入建立的文件名和文件大小,如果该文件名已经存在,则输出不能建立的信息否则计算所需的磁盘块数

为其分配足够多的磁盘块,并记录下来 输出所占用的磁盘块号

2、删除文件

输入要删除的文件名,如果该文件名不存在,则输出删除错误信息,否则收回该文件所占用的磁盘块 删除该文件名

3、显示位示图情况

显示位示图的情况 显示剩余磁盘块的数目

4、显示文件列表

显示文件名,文件大小,占用的磁盘块数目和磁盘块号

四、课程设计的源代码

#include #include #include #include #include int i=0,j=0,sum=0,tt=0,r,ii,k,g,m;int a[100][32];class file//文件类 {private: int no;//文件编号

char name[10];//文件名 public: int tag;//删除标记 1:已删 0:未删 file(){ } char *getname(){return name;} //获取姓名

int gettag(){return tag;} //获取删除标记

int getno(){return no;} //获取文件编号

int getlength(){return length;} //获取文件大小

int getblocknum(){return blocknum;} // 磁盘块数 int getblocksum1()//磁盘块号的始点 { return blocksum1;} int getblocksum2()//磁盘块号的终点 { return blocksum2;} int length;//文件大小

int blocknum;//盘块数

int blocksum1;//所占盘块号的始点

int blocksum2;//所占盘块号的终点

void setname(char na[ ])//设置文件名

{strcpy(name,na);} void delwenjian(){ tag=1;}//设置删除标记 1:已删 0:未删

void creatfile(char *na,int L,int num,int s1,int s2)//创建文件 { tag=0;length=L;blocknum=num;blocksum1=s1;blocksum2=s2;strcpy(name,na);blocknum=length/m;//盘块数=文件大小/盘块大小 if(length%m!=0)//盘块数取上整 blocknum=blocknum+1;cout<<“ 所需磁盘块数:”<

for(;j<32;j++)

a[i][j]=1;i=i+1;for(j=0;j<(sum+blocknum)-32;j++)//再进行剩余项赋值

{

a[i][j]=1;} sum=sum+blocknum-32;} tt=tt+blocknum;//输出文件所占用的盘块号

cout<<“ 所占磁盘块号:”<

{

for(ii=0;ii<=top;ii++)

{ if(strcmp(f[ii].getname(),fname)==0 && f[ii].tag==0)

return 0;

}

return 1;} int creatfile(char *na,int L,int num,int s1,int s2)//创建文件时先查找是否存在

{ int p;p=search(na);

if(p==1)

{ top++;

f[top].creatfile(na,L,num,s1,s2);

return 1;}

else

{cout<<“!!该文件已存在,不能创建!!nn”;

return 0;} } int deltefile(char *na)//删除文件时先查找是否存在{int b,p,x=0,n1,n2,q1,q2,t;p=search(na);if(p==0)//若文件存在

{ //进行删除文件赋值

f[ii].tag=1;b=f[ii].length/m;//盘块数=当前文件大小/盘块大小

if(ii==0)// 对第一个删除文件进行赋值

for(k=0;k

a[x][k]=0;

else{ n1=(f[ii-1].blocksum2+1)/32;//被查找的文件之前文件所占用的盘块数

/32,//大于0表示跨行

n2=(f[ii].blocksum2+1)/32;//所有文件所占用的盘块数/32,大于0表示跨行

q1=(f[ii-1].blocksum2+1)-n1*32;// 当前文件的开始盘块号 q2=(f[ii].blocksum2+1)-n2*32;// 用于跨行后计算盘块号 t=n2-n1;if(t==0)//若n2与n1相等,表明当前所有被占用盘块在同一行

for(k=q1;k<1+b;k++)

a[n2][k]=0;

else { if((f[ii-1].blocksum2+1)%32==0)//前面所占用的盘块数是32倍数

{ x=x+n1;//当前文件赋值

for(;t-1>=0;t--,x++)//循环进行整行赋值

for(k=0;k<32;k++)

a[x][k]=0;

x=n2;//对剩余项赋值

for(k=0;k

a[x][k]=0;

} else //对当前文件前几项赋值

{ x=n1;

for(k=q1;k<32;k++)

a[x][k]=0;x=x+1;int t1=t;

for(;t-1>0;t--,x++)//中间整行赋值

for(k=0;k<32;k++)

a[x][k]=0;

x=n2;//最后剩余项赋值

for(k=0;k<(f[ii].blocksum2+1)-t1*32;k++)

a[x][k]=0;

}

} return 1;} } else

{cout<<“该文件不存在”;

return 0;}

} void disp()//输出所有文件信息 { for(int i=0;i<=top;i++)

if(f[i].tag==0)

f[i].disp();} };void bit_map(int I){ int s=0;cout<<“-”<

cout<

out<<“--”<>g;cout<>m;cout<

a[i][j]=0;

cout<<“ 建立的位示图为:”<

cout<<“ 行数:”<

cout <<“ttt1

存 储 文 件nnttt2

删 除 文 件 nnttt3 显示位示图情况 nnttt4 显示文件列表”<> choice;cout<

case '1':

cout <<“ 请输入文件名: ”;

cin>>fname;

cout<

if(q==0)

{ cout<<“!!该文件已存在,不能创建!!nn”;

break;}

cout <<“ 请输入文件大小MB: ”;

cin>>l;

cout<

if(l>g*1024)

{cout<<“!!文件大小超过磁盘最大容量,无法进行分配!!”<

break;}

p.creatfile(fname,l,b,ss1,ss2);

break;

case '2':

cout <<“ 请输入文件名: ”;

cin>>fname;

cout<

q=p.search(fname);

if(!q==0)

{

cout<<“!!该文件不存在,无法删除!!nn ”;

break;

} p.deltefile(fname);

break;case '3':

cout <<“tt**************显示位示图如下*********************n”;

bit_map(I);

cout<

break;

case '4': cout <<“tt*************文件列表如下************************n”;cout<<“-”<

p.disp();

cout<

break;default:

cout<<“输入错误,请从新输入: nn”;

break;} } }

五、课程设计程序运行结果

1、初始化,建立文件系统

(1)用户根据提示输入磁盘大小(GB)与每个盘块大小(MB);

(2)程序首先根据用户输入的磁盘大小(GB)与每个盘块大小(MB),自动建立位示图,即初始化位示图,位示图每一行长度固定为32位(即列固定为32);位示图中每一位表示一个盘块,取值0和1分别表示空闲和占用。初始化的位示图应全为0;

(3)程序再输出位示图的剩余盘块数,行数,以及行号、列号与磁盘块号的转换公式(行列皆从0开始编号);

这样,初始化,建立文件系统完成。运行结果:

2、选择执行:存储文件,删除文件,显示位示图情况,显示文件列表 【显示文件管理系统列表】显示文件系统管理列表,并提示输入信息1——4。用户输入文件操作命令1(存储文件),2(删除文件)、3(显示位示图情况)、4(显示文件列表);

格式如下:键入1,创建文件名为fname,大小为L(MB)的文件;

键入2,删除文件名为fname的文件;

键入3,显示位示图情况;

键入4,显示所有文件信息。

运行结果:

【存储文件】

用户输入文件操作命令是1(存储文件)。系统提示你输入你要建立的文件名和文件大小,如果该文件名已经存在,则系统提示输出不能建立此文件的信息,否则计算所需的磁盘块数和所占用的磁盘块号,并输出结果。相应的在位示图上,因为位示图是矩阵,可以用数组存储,根据所占用的磁盘块号和公式:

磁盘块号=行号*32+列号 行号=磁盘块号/32

列号=磁盘块号%32 计算出文件占用的磁盘块在位示图上的位置,现在是创建文件,所以将位示图该位置上的二进制数置1,表示已分配出去。

分别创建名为ll,zz和mm三个文件,文件大小分别为224MB,320MB和56MB。

此时对应的位示图如下:

文件列表如下:

若再创建一个已经创建过的文件,则显示如下信息:

若创建的文件大小超过磁盘的最大容量,则显示如下信息:

【删除文件】

用户输入文件操作命令是2(删除文件)。系统提示你输入要删除的文件名,如果该文件名不存在,则输出删除出错信息。在位示图上,根据所占用的磁盘块号和公式:

磁盘块号=行号*32+列号 行号=磁盘块号/32 列号=磁盘块号%32 计算出文件占用的磁盘块在位示图上的位置,现在是删除文件,所以将位示图该位置上的二进制数置0,表示收回该文件所占用的磁盘块。删除第二个文件zz,结果如下:

则相应的位示图和文件列表变为:

若删除一个不存在的文件,则显示如下信息:

【显示位示图情况】

如果用户输入文件操作命令是我wst()(显示位示图情况),系统输出此时位示图的情况,状态位为'0'表示对应盘块空闲,状态位为'1'表示该盘块已被分配出去。系统再显示剩余磁盘块的数目。

以下是删除zz文件,创建xx后和创建xx后,删除ll的位示图:

【显示文件列表】

如果用户输入文件操作命令是disp()(显示所有文件情况),系统会显示所有文件的文件名,文件大小,占用的盘块数和盘块号。

以下是删除zz文件,创建xx后和创建xx后,删除ll显示的文件列表:

下载操作系统文件管理练习及答案word格式文档
下载操作系统文件管理练习及答案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    操作系统绪论习题及答案

    操作系统绪论习题答案 一.选择题 1.操作系统是一种 。 A.通用软件 B.系统软件 C.应用软件 D.软件包 答:B 2.操作系统的 管理部分负责对进程进行调度。 A.主存储器 B.控制器 C.运算器 D.......

    操作系统课后题答案(5篇材料)

    课本课后题部分答案 第一章 1.设计现代OS的主要目标是什么? 答:(1)有效性 (2)方便性 (3)可扩充性 (4)开放性 2.OS的作用可表现在哪几个方面? 答:(1)OS作为用户与计算机硬件系统之间的接口 (2)O......

    计算机操作系统练习题及答案 第三章

    演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 计算机操作系统练习题及答案 第三章 单项选择 1. 两个进程合作完成一项任务。在并发执行中,一个进程要等待其......

    操作系统实习报告(磁盘文件操作)(含5篇)

    大学 操作系统课程综合实践 题目:磁盘文件操作 班级:姓名:学号:指导教师:2011年 12 月 23日 磁盘文件操作 摘要: 为了正确地实现文件的存取,文件系统设计了一组与存取文件有关的功......

    文件管理

    文件管理制度 档案管理亦称档案工作。是档案馆(室)直接对档案实体和档案信息进行管理并提供利用服务的各项业务工作的总称,也是国家档案事业最基本的组成部分。 第一章 总......

    文件管理

    文件收发处理程序 1. 目的规范外来文件及部门发文的管理,确保文件办理、签发程序有效控制。 2. 适用范围适用于外来文件及部门发文的接收、标识、登记、呈批、审核、执行、发......

    管理基础学实训练习答案

    管理学基础职业技能实训练习及答案单选题 企业战略是指企业为了适应未来环境的变化,寻求长期生存和稳定发展而制定的( 总体性和长远性 )的谋划与方略。  当整个行业日趋成熟......

    2017造价工程师《造价管理》多选题练习及答案

    1 在审查施工图预算时,有关费用项目计取的审查要注意。A.测试费是否按标准记取B.补充定额的编制符合相关编制原则C.预算外调增的材料价差是否记取了间接费D.有无乱摊费用......