操作系统--第十章--习题答案

操作系统第四版课后的全部习题答案,学习通作业答案。
说明:操作系统其他章节的习题答案也在此“操作系统”专栏。

第十章

1.UNIX系统具有哪些特征?

答:开放性、多用户多任务环境、功能强大高效、丰富网络功能、支持多处理器。

2.试说明UNIX系统的内核结构。

答:UNIX 内核结构分四层:最底层是硬件,次底层是OS 核心,第二层是OS 与用户接口shell及编译程序等,最高层是应用程序。

3.UNIX系统中的PCB含哪几部分?用图说明各部分之间的关系。

答:UNIX 系统中的PCB含进程表项、U区、系统区表、进程区表。

4.进程映像含哪几部分?其中系统级上、下文动态部分的作用是什么?

答:进程映像含用户上下文、寄存器上下文、系统级上下文。

系统级上下文动态部分的作用是当因中断或系统调用进入核心状态时,核心把一个寄存器上下文压入核心栈,退出系统调用时,核心又弹出寄存器上下文,在上下文切换时,核心将压入老进程的上下文,弹出新进程的上下文。

5.在UNIX系统中用于进程控制的主要系统调用有哪些?它们各自的主要功能是什么?

扫描二维码关注公众号,回复: 10044818 查看本文章

答:用于进程控制的主要系统调用有:
(1)fork系统调用:用于创建新进程
(2)exit系统调用:实现进程自我终止
(3)exec 系统调用:改变进程原有代码
(4)wait 系统调用:将调用进程挂起并等待子进程终止

6.为创建一个新进程,须做哪些工作?

答:为新进程分配一个进程表项和进程标志符;检查同时运行的进程数目;拷贝进程表项中的数据;子进程继承父进程的所有文件;为子进程创建进程上下文;子进程执行。

7.为何要采取进程自我终止方式?如何实现exit?

答:为了及时回收进程占用的资源,在进程任务完成后应尽快撤销。Unix 内核用exit 实现进程的自我终止。父进程在创建子进程时,应在子进程末尾安排exit使子进程能自我终止。

实现 exit的具体操作是:关闭软中断、回收资源、写记账信息和置进程为僵死状态。

8.在UNIX系统中采用了何种调度算法?如何确定进程的优先数?

答:UNIX 系统采用动态优先数轮转的进程调度算法。优先数确定公式:
优先数 =(最近使用CPU的时间/2)+基本用户优先数

9.在进入sleep过程后,内核应做哪些处理?

答:进入sleep过程后,核心首先保存进入睡眠时的处理机运行级,提高处理机的运行优先级屏蔽所有中断,将该进程置为睡眠状态,将睡眠地址保存在进程表项中,将该进程放入睡眠队列。如果进程的睡眠不可中断,在进程上下文切换后,进程便安稳睡眠。当进程被唤醒并被调度执行,将恢复处理机的运行级为进入睡眠时的值,此时允许中断处理机。

10.试说明信号与中断两种机制间的异同处。

答:不同点:中断有优先级,而信号没有,所有信号皆平等;信号处理程序在用户态运行,而中断处理程序是在核心态运行;还有中断响应及时,而信号响应通常都是延时的。
相同点:都采用异步通信方式;当检测出信号或中断请求时都暂停正在执行的程序而转去执行相应的处理程序;都在处理完毕返回到原来断点;对信号或中断都可进行屏蔽。

11.扼要说明信号机制中信号的发送和对信号的处理功能。

答:信号发送是指由发送进程把信号送到目标进程的proc 结构中信号域的某一位上。

对信号的处理功能:首先利用系统调用signal(sig,func)预置对信号的处理方式,func=1时屏蔽该类信号;func=0时,进程收到信号后终止自己;func为非0非1时,func值作为信号处理程序的指针,系统从核心态转为用户态并执行相应的处理程序,处理完毕再返回用户程序的断点处。

12.什么是管道?无名管道和有名管道的主要差别是什么?

答:管道是指能连接写进程和读进程,并允许它们以生产者消费者方式进行通信的一个共享文件或pipe 文件。无名管道是个临时文件,是利用系统调用pipe()建立起来的无路径名文件,只有调用pipe 的进程及其子孙进程才能识别此文件描述符而利用该文件(管道)进行通信;有名管道是利用mknod 系统调用建立的、可以在文件系统中长期存在的有路径名文件,其它进程可以知道其存在,并利用该路径名访问的文件。

13.在读、写管道时,应遵循哪些规则?

答:(1)对pipe 文件大小的限制
(2)进程互斥
(3)进程写管道时在管道空间上满足生产者操作规则
(4)进程读管道时在管道空间上满足消费者操作规则

14.在消息机制中有哪些系统调用?说明它们的用途。

答:在消息机制中的系统调用是msgctl( )、msgsnd( )、msgrcv( )。
msgctl( )系统调用于指定的消息队列进行操纵。
msgsnd( )系统调用来发送消息。
msgrcv( )系统调用从指定消息队列中读取一个消息。

15.在共享存储机制中有哪些系统调用?扼要说明它们的用途

答:在共享存储机制中的系统调用有shmget() 、shmctl()、shmat()。
shmget( )用于建立一块共享存储区,提供该区名字key和共享存储区长度size等参数。
shmctl( )系统调用于查询共享存储区的状态信息。
shmat( )系统调用于将该共享存储区附接到用户给定的某个进程虚地址shmaddr上,
并指定该存储区的访问属性是只读还是可读可写。

16.核心在执行shmget系统调用时需完成哪些工作?

答:(1)检查共享存储区表,若找到key 表项,表明该区已建立,返回共享区描述符shmid;
(2)若未找到指定key 表项,而flag 标志为IPC_CREAT 且参数size值在系统限制值内,则分配一系统空闲区作为共享区的页表区,分配相应的内存块,将这些块号填入页表中;
(3)核心在共享存______xîÿl/___储区和系统区表中,为新建立的共享区分配一空表项,并填上存储区的关键字及大小、共享区页表始址,指向系统区表项指针等,最后返回共享区描述符shmid。

17.在信号量机制中有哪些系统调用?说明它们的用途。

答:在信号量机制中的系统调用是senget( )和semop( )。semget()用于用户建立信号量集。
semop( )用来对信号量集进行操作。

18.核心是如何对信号量进行操作纵的?

答:核心根据sem_op改变信号量的值,分3 种情况:
若sem_op值为正,则将其值加到信号量值上,相当于V 操作;若sem_op值为负,相当于P 操作,若信号量值大于操作值的绝对值,则核心将一个负整数加到信号量值上,否则核心将已操作的信号量恢复到系统调用开始时的值;若(sem_flg&IPC_NOWAIT)为真,便立即返回,否则让进程睡眠等待.。

19.为实现请求调页管理,在UNIX系统中配置了那些数据结构?

答:UNIX 系统V 将进程的每个区分为若干个虚页,这些虚页可以分配到不邻接的页框中,为此设置了一张页表。其中每个表项中,记录了每个虚页和页框的对照关系。

20.当访问的缺页是在可执行文件上或在对换设备上时,应如何将它们调入内存?

答:(1)缺页在可执行文件上。如果欲访问虚页对应磁盘块描述表项类型是file,表示该缺页尚未运行,其拷贝在可执行文件中,核心应将该页调入内存。调入过程是:根据对应系统区表项中的索引结点指针,找到该文件的索引节点,把该页的逻辑块号作为偏移量,查找索引结点中的磁盘块号表,找到磁盘块号,将该页调入内存。

(2)缺页在对换设备上。核心先为缺页分配一内存页,修改该页表项,指向内存页,并将页面数据表项放入相应散列队列中,把该页从对换设备上调入内存,当I/O操作完成时,核心把请求调入该页的进程唤醒。

21.在将一页换出时,可分成哪几种情况?应如何处理这些情况?

答:分三种情况:
(1)若在对换设备上有被换出页的拷贝,内容未改,则核心只将该页页表项中的有效位清零,将引用计数减1,将该页框数据表项放入空闲链表中。
(2)若在对换设备上没有换出页的拷贝,则将该页写到对换设备上。先将所有要换出页链入到待换出页面链上。当链上页面数达到规定值时才将这些页面写到对换区中。
(3)在对换设备上有换出页副本,但页内容已修改,核心应释放该页在对换设备上原占有的空间,再重新将该页拷贝到对换设备上,使拷贝内容最新。

22.如何对字符缓冲区进行分配与回收?

答:在字符设备进行I/O 时,内核利用getcf过程从空闲字符缓冲区队列中取得空闲缓冲区,若队列空,则无缓冲区可分配,返回;否则从队首取得一个空闲缓冲区,把该缓冲区指针bp返给调用者。采取互斥访问措施,在过程开始处将处理机优先级提升为6,在取得空缓冲区之后再恢复处理机的优先级。
当不再需要缓冲区时,调用putcf 过程释放缓冲区。输入参数是指向已不再需要的缓冲区指针bp,把该缓冲区送回到空闲缓冲区队列的队首指针cfreelist指向的头部。此时若有申请空缓冲区而阻塞的进程,则唤醒它。对空闲缓冲区队列的访问应互斥进行。

23.试说明盘块缓冲区的组成和盘块缓冲池的构成。

答:UNIX系统的每一个盘块缓冲区均有两部分:一是用于存放数据的数据缓冲区;另一部分是缓冲控制块,用于存放对应缓冲区的管理信息。
盘块缓冲池结构:(1)空闲链表(2)散列队列。

24.getblk()和getblk(dev,blkno)进程的主要区别是什么?

答:getblk()用于从空闲缓冲区队列中获得任意空闲缓冲区。getblk(dev,blkno)用于为指定设备dev 和盘块号为blkno 的盘块申请一个缓冲区。仅当要把数据写入特定盘块的内容不在缓冲区时,才调用getblk过程分配一个空缓冲区。

25.试说明gdopen、gdstart、gdstartegy和gdintr过程的主要功能。

答:gdopen用于打开磁盘驱动器,输入参数是设备号,无输出参数。
gdstart 用于装配磁盘控制器中的各个寄存器,然后启动磁盘控制器。
gdstartegy 把指定缓冲首部排在磁盘控制器I/O 队列末尾,并启动磁盘控制器。
gdintr用于磁盘I/O传送完成并发出中断请求时的磁盘中断处理过程。

26.在UNIX系统中设置了哪些读和写过程?两者的主要区别是什么?

答:读过程有一般读过程bread和提前读过程breada。
写过程有一般写过程bwrite、异步写过程bawrite和延迟写过程bdwrite。

27.试说明UNIX文件系统的特点?

答:A.文件系统的组织是分级树形结构形式B.文件的物理结构为混合索引式文件结构
C.采用成组链接法管理空闲盘块。D.引入了索引结点的文件检索技术。

28.在UNIX系统中的文件物理结构采用了何种形式?试举例说明。

答:UNIX 文件物理结构采用混合索引式文件结构。
在查找文件时,只要找到了文件的索引结点,用直接或间接寻址方式获得该文件的盘块。

29.在UNIX系统中如何将文件的逻辑块号转换为物理盘块号?

答:寻址方式不同,转换方法也不同。

(1)直接寻址,仅当文件的逻辑块号不大于10时采用。如访问对象是字节偏移量9999处的数据。则9999/1024=9余783,则文件逻辑块号9,直接索引地址项i-addr(9)中的块号,其块内偏移地址为783字节处就是文件的9999字节处。

(2)一次间址,仅当文件的逻辑块号大于10而不大于10+256时采用。如访问对象是字节偏移量18000处的数据。则18000/1024=17余592,则逻辑块号为10<17<10+256,需要通过一次间接索引方式。先从i-addr(10)中得到一次间址盘块号,再将逻辑盘块号减10,根据一次间址中的逻辑块号得到间址块号地址项的下标,再从中得到最终的物理盘块号。这里的逻辑盘块号17,从i-addr(10)中得到的块号设为428,则17-10=7就是一次间址号,其对应的盘块号就是要找的物理盘块号,块内偏移地址为592处就是文件的18000字节处。

(3)多次间址,仅当文件的逻辑块号大于266而不大于64266时采用。如访问对象是字节偏移量420000处的数据。则逻辑块号为266<410<64266,通过二次间址索引。在i-addr(11)中得到一次间址盘块号,再将逻辑盘块号减266,根据一次间址中的逻辑块号得到间址块号地址项的下标,再从中得到二次间址,再找到对应的物理块号,块内偏移地址160处就是文件的420000字节处。

30.如何对磁盘索引节点进行分配与回收?

答:分配过程ialloc是:先检查超级块是否上锁,检索i 结点栈空否,从空闲i 结点编号栈中分配一个i结点并初始化,填写有关文件属性,分配内存i结点,将磁盘i结点总数减1,并置超级块修改标志后返回。
回收过程ifree是:先检查超级块上锁否;检查i结点编号栈满否;若i 结点编号栈未满,便使回收的i结点的编号进栈,并使当前空闲i 结点数加1;置超级块修改标志后返回。

31.何时需要构造目录项?核心需完成哪些工作?

答:当用户(进程)要创建新文件时,内核便应在其父目录文件中构造一个目录项;当某进程需要共享另一用户的某文件时内核也将为共享该文件的用户建立一个目录项。由系统调用creat过程完成目录项的构造。

32.何时需删除一个目录项?核心须完成哪些工作?

答:对于某用户独享的文件,当该用户不需要它时,应将它删除而腾出存储空间。核心须完成的工作是利用unlink断开连接,当nlink值为0 时,系统将自动删除该文件。

整理不易,如有帮助请点赞支持!谢谢!关注我,让你学到更多软件工程知识!

发布了51 篇原创文章 · 获赞 22 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_46218781/article/details/105023153