搜索
您的当前位置:首页正文

操作系统课堂练习(期末必考)

来源:尚佳旅游分享网
操作系统课堂练习

2011年6月8日

Contents

第一章练习题 第二章练习题 第三章练习题 第四章练习题 第五章练习题 第六章练习题 第十一章练习题 第十二章练习题 第十三、十四、十五章练习题

第一章练习题

1.网络操作系统与分布操作系统主要区别是什么

答:网络操作系统与分布操作系统主要不同是它不是一个集中、统一的操作系统(它基本上是在各种各样自治的计算机原有操作系统基础上加上具有各种网络访问功能的模块)。

2.允许多个用户以交互式方式使用计算机系统的操作系统称为 B系统。 A)批处理 C) 实时 D)

B) 分时 多处理机 第二章练习题

1.简述可变分区存储管理算法中的首次适应法的分配算法

答:首次适应法为作业分配大小为size的内存空间时,总是从表的始端的低地址部分开始查找,当第一次找到大于或等于申请大小的空闲区时,就按所需大小分配给作业。如果分配后原空闲区还有剩余空间,就修改原存储区表项的m_size和m_addr,使它记录余下的“零头”。如果作业所需空间正好等于该空闲区大小,那么该空闲区表项的m_size就成为0,接下来要删除表中这个“空洞”。

2.根据作业在本次分配到的内存起始地址将可执行目标代码装到指定内存地址中,并修改所有有关地址部分的值的方法称为 B 方式。 A) 固定定位 B) 静态重定位 C) 动态重定位 D) 单一连续重定位

3.下列程序设计技术和数据结构在请求分页的环境中,哪些是“好的”,哪些是“不好的” 1)向量 2)链接表 3)栈 4)队列 5)散列表 6)顺序查找

7)二分排查找 8)合并排序 9)快速排序 10)堆排序 11)散列排序 答:

1)向量(数组) (对于一个大的向量)顺序存取时是好的,随机存取时是不好的; 2)链接表 不好的;

3)栈 顺序实现时是好的,链接实现时是不好的; 4)队列 顺序实现时是好的,链接实现时是不好的; 5)散列表 不好的;

6)顺序查找 顺序实现时是好的;链接实现时是不好的; 7)二分查找 不好的;

8)合并排序 顺序实现时好的,链接实现时是不好的;

9)快速排序 非递归实现时由于从两头向中间顺序地比较和交换,是好的; 10)堆排序 不好的; 11)散列排序 不好的。

第三章练习题

1.为什么在操作系统中要引进进程的概念

答:在多道程序系统中,系统中的硬软件资源不再为单个用户程序所垄断,而由若干道程序共同使用。一个程序也不能自始至终地运行到底,中间会穿插很多其他的活动,这些活动间存在着相互依赖和相互制约的关系。由于程序并发执行所产生的一系列新的动态的特征,已不能由程序这种静态的概念来描述,为此,引入了“进程”(process)这个概念。我们在进程创建这一节知道,一个程序可以对应多个独立的活动——进程。

2.进程所请求的输入数据到达后,将使进程状态从 D 。 A) 运行态变为就绪态 B) 运行态变为等待态 C) 就绪态变为运行态 D) 等待态变为就绪态

说明:进程要读入数据,应当同步等待。进程状态为等待状态(睡眠状态)。进程所请求的输入数据到达后,将唤醒该进程,使进程状态从等待状态变为就绪状态 ,使其有被调度程序挑选的资格。也不可能直接从等待状态变为运行态。

3. 某系统的状态转换图如图所示,

(1)分别说明引起状态转换1、2、3、4的原因,并各举一个事件。 (2)为什么在转换图中没有就绪到阻塞和阻塞到运行的转换方向

(3)一个进程的状态变换能够引起另一个进程的状态变换,说明下列因果变迁是否可能发生,原因是什么(a)3→1 (b)2→1 (c)3→2 (d)3→4 (e)4→1 答: (1)

1: 就绪->执行, 当前运行进程阻塞,调度程序选一个优先权最高的进程占有处理机; 2: 执行->就绪, 当前运行进程时间片用完;

3:执行->阻塞,当前运行进程等待键盘输入,进入了睡眠状态。 4:阻塞->就绪,I/O操作完成,被中断处理程序唤醒。

(2) 就绪进程没有占有处理机,也即没有经过运行,其状态就不会改变。

阻塞状态进程唤醒后先要进入就绪队列,才会被调度程序选中,进入了执行状态。

(3)

(a) 3→1: 可能,当前运行进程阻塞,调度程序选一个优先级最高的进程占有处理机。 (b)2→1:可能,当前运行进程优先级下降,调度程序选一个优先级最高的进程占有处理机。

(c)3→2: 不可能,占有CPU的一个进程不能同时进入两个状态;在单CPU的系统中,状态3发生后,cpu没有执行进程,故不会发生状态转换2。

(d)3→4:一般不可能,不相干的两个事件。状态转换3是由于运行进程等待资源而发生的,这并不会使得阻塞队列中的进程得到资源而进入就绪队列。但在Unix中,当系统的0#进程因runin标志而睡眠时,有(在内存)进程睡眠,就会唤醒0#进程,使其进入就绪状态,以便将该进程和在盘交换区就绪进程交换位置。

(e)4→1:一般无关,但当就绪队列为空时,一个进程被唤醒转入就绪队列后,调度程序使该进程占有处理机(但是同一个进程)。

第四章练习题

1.假如一个阅览室最多可容纳N个人,读者进入和离开阅览室时,都必须在每次只允许一个人写的登记表上做进入登记和离开登记,试用semWait、semSignal操作实现读者间的协调关系。

答:信号灯含义和初值:

chair: 阅览室椅子数,即最多可容纳人数,初值为N register: 进入登记和离开登记的互斥信号灯,初值为1

2. 用ls命令以长格式列目录信息时,若某一文件的特征在文件列表中按如下顺序显示在屏幕上:

-rwxr-xr-- 2 user gk 3564 OCT 2003 8:18 /user/asdh 则同组用户的访问权限是 读和执行 。

3.用semWait、semSignal操作实现同步和互斥时有什么差别 答:见第5题。

4.在Unix系统中, A 可用于通知进程发生了异常的事件。 A) 信号机构 B) 管道机构 C) 消息机构 D) 信号灯

5.互斥和同步对信号灯操作方法的差异。 答:

互斥和同步都是通过对信号灯的semWait、semSignal操作来实现的,但这两种控制机制对信号灯的操作策略是不同的。

互斥的实现是不同的进程对同一信号灯进行semWait 、 semSignal 操作,一个进程在成功地对信号灯执行了semWait操作后进入临界段,并在退出临界段后,由该进程本身对这信号灯执行semSignal操作,表示没有进程处于临界段,可让其它进程进入。 同步的实现由一个进程Pa对一个信号灯进行semWait操作后,只能由另一个进程Pb对同一

个信号灯进行semSignal操作,使Pa能继续前进,在这种情况下,进程Pa要同步等待Pb。如进程Pb也要同步等待Pa,则要设置另一个信号灯。

6.某系统中有m个同类资源被n个进程共享,请分别讨论当m>n和m≤n时,每个进程最多可以请求多少个资源才能保证系统不会发生死锁

答:例如11个同类资源被5个进程共享,每个进程最多可以请求多3个资源才能保证系统不会发生死锁。

因为如每个进程都已分配到2个资源,系统还剩下一个资源,就能保证某一个进程能分配到全部3个资源,并能运行到底,最终释放这3个资源。

第五章练习题

1.说明UNIX为块设备I/O设置多缓冲区的目的、缓存管理采用的主要算法以及实施方法。 答:

设置多缓冲区的目的: UNIX系统采用多重缓冲技术。用于快速地暂存程序的输出数据,缓和CPU与I/O设备间速度不匹配的矛盾。提高CPU与I/O设备间的并行操作程度。减少对磁盘的读写操作。当从盘上读数据时,如果数据已经在缓冲区中,则核心就直接从中读出,而不必从盘上读;仅当所需数据不在缓冲区中时,核心才把数据从盘上读到缓冲区,然后再由缓冲区读出。核心尽量使数据在缓冲区停留较长时间,以减少磁盘I/O的次数。

缓存管理采用的主要算法 (1)设备缓冲区队列

设备缓冲区队列连接所有各类设备使用过的缓冲区,这是一个双向队列,指针为b_forw和b_back。

一个缓冲区被分配用于读、写某个设备的字符块时,其相应的buf就进入该设备的设备buf队列,并一直保留在该设备buf队列中,以尽量重复使用原设备队列中该缓存内容,除非被移作它用。

(2)自由队列的淘汰算法

系统把空闲缓冲区的buf组成空闲buf队列。这个队列是双向链结构,队首块为bfreelist,av_forw和av_back作为双向指针。

选择适当的缓冲区管理方法是非常重要的,其中最关键的是淘汰算法,UNIX系统中采用了极为精确的最久未使用算法(LRU) 。 实施方法

(1) 一个缓存刚分配用于读写某一块设备,buf的b_flags含有B_BUSY标志。它一定位于相应设备buf队列,不在自由队列。

(2) 一旦读写完成,就释放缓存,清B_BUSY标志。送入自由队列尾,但仍留在原设备队列。

(3) 分配作它用缓存从自由队列首取。

(4) 当一个buf在自由队列中移动时,只要原设备队列又重新使用它,立即将其从自由队列中间抽取,使用完毕,再次送入自由队列尾(LRU算法)。

(5) 对于写,如一块未写满,在b_flags中设置B_DELWRI标志,推迟写,再清B_BUSY,释放至自由队列尾。

(6) 当设置B_DELWRI标志的缓存排到自由队列首时,不能立即淘汰,而是提出I/O请求,将其内容复制到块设备后,再次释放到自由队列尾并清B_DELWRI标志。

2.通道又称I/O处理机,它能完成 A之间的信息传输。 A)主存和外设 B) CPU和外设 C)外存和外设 D) 主存和CPU

说明:I/O通道带有专用处理器的、有很强I/O处理功能的智能部件,它可以独立地完成系统处理器交付的I/O操作任务,此时,I/O总线直接与通道相连而不与处理器相连。通道具有自己专门的指令集,在设备与存储器之间传送数据。系统主处理器只需进行I/O操作的委

托,其后的所有I/O操作均由通道自己进行。完成后只需向系统处理器发出中断,请求结束。可见,这种方式可以形成系统处理器与I/O设备之间的并行操作。

第六章练习题

1.一个进程独立打开一个文件后画出打开文件结构,标出与打开文件有关的各部分数据结构名称。

的rm命令使用了系统调用 B 。

A) close B) unlink C) fcntl D) umask

3.在UNIX中超级块filsys的当前情况如图6-19所示,某文件顺序释放了物理盘块号为1150、1151、1175、1050的四个盘块,画出释放后有关部分的变化结果。

答:

4.说明UNIX文件的地址索引结构,并描述如何由文件的逻辑块号n找到文件的物理块号。 答:

(1) 0<=n<9: 物理块号blkno = i_a[n]

(2) 9(3) 10+341直接索引的blkno = 一级间接索引块的第(n-10-341)/341项内容; 物理块号blkno =直接索引块的第(n-10-341)%341项内容; (4) 10+341+341*341 < n < 10+341+341*341+341*341*341: 二级间接索引的blkno = i_a[12];

一级索引的blkno = 二级间接索引块的第(n-10-341-341*341)/(341*341)项内容; 其余情况可以从情况3类推。

5. Unix的打开文件结构涉及到 A 这三种结构。

A) ofile,file,inode B) ofile ,file,addr[40] C) file,direct,inode D) file,inode,filsys

第十一章练习题

1.基于符号链接与普通链接的文件共享方式各有什么优点 答:

普通链接(硬链接):在UNIX同一个文件系统中,同一层次或不同层次的目录项可指向同一个文件的I节点,这就是目录结构的勾连。由此,不同用户或同用户可以在不同的位置上用不同的文件名(或相同的文件名)访问同一个文件。这为文件的共享提供了方便。

符号链接:硬链接有两个局限,第一是不能为一个目录创建一个链接;第二是不能在不同文件系统中建立文件链接。使用符号链接就能实现上述两个功能。符号链接建立了新的文件或目录与原来文件或目录的路径名映照。当你访问一个符号链接时,UNIX靠这个映照找到原文件的路径,所以这种链接方法又称为软链接。通过软链接访问文件的速度比硬链接稍慢一些。

2.用find命令和grep命令的组合显示当前目录树下所有C源程序中含有main( )的行。 答:

find . –name \\*.c | grep ‘main( )’ –

find . –name \\*.c –exec grep ‘main( )’ {} \\;

3. 用于确定字符串模式的一个规则集称为 A 。 A) 正则表达式 B) 字符串匹配 C) 文件名匹配 D) 过滤器

第十二章练习题

1.写出用当前目录中所有的C目标代码生成档案库arch的命令。 ar rv ./*.o

2.根据一些说明和文件的修改时间自动地维护模块间的关系的程序是 D 。 A) sdb B) sccs C) ar D) make

3.决定Makefile依赖行中依赖关系的是文件的 A 。 A)修改时间 B) 创建时间 C) 大小 D) 存取权限

第十三、十四、十五章练习题

1.可以在不同系统之间传送文件的程序是 A 。

(A) ftp B) rcp C) write D) telnet

2.普通用户可以利用文件的系统调用 A 实现锁功能。

A) creat B) open C) write D) stat

3.在下面的Socket远程通信的系统调用中 D 是顾客方程序中要用到的系统调用。 A) bind B) listen C) accept D) connect

4.在下面的shell命令中, A 命令与其他命令输出不同。 A) echo ‘$x’ B) echo “$x” C) echo ${x} D) echo $x

中的可由用户配置的登录初始化文件是 A 。 A) .bash_profile B) profile C) .bashrc D) .login

6. 下面的Shell程序recg具有两个位置参数,第一个位置参数为字符串模式,第二个位置参数为目录名。该程序在参数2指定的整个目录树中对所有的C语言程序搜索参数1指定的字符串模式。参数1不可缺省,如参数2缺省,搜索当前目录这一层。例:recg string dir表示在dir目录树的C程序中搜索模式 string的字符串。在下面程序的下划线上填写适当的语句。 答:

if [ $# -lt 1 ]; then

echo \"parameter error\" exit fi

if [ $# -eq 1 ]; then recg $1 . fi

if test -d $2 ; then cd $2

grep $1 *.c

for i in * ; do

if test -d $i ; then recg $1 $i

fi done fi

因篇幅问题不能全部显示,请点此查看更多更全内容

Top