计算机操作系统(第四版)汤小丹课后答案完整版

(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、gds

>>闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻楠炴垿濮€閵堝懐顔婂┑掳鍊愰崑鎾剁棯閹岀吋闁哄矉缍侀獮鍥敍閿濆棌鎸呮繝鐢靛仜濡﹥绂嶅⿰鍫濈闁逞屽墮椤啴濡堕崱妤€衼缂傚倸绉村Λ妤€鐜婚崸妤佸亜闁稿繐鐨烽幏铏圭磼缂併垹骞栭柟鍐茬箺閵囨劘顦寸紒杈ㄥ浮閹晠宕橀懠顑挎偅缂傚倷绶¢崰鏍偋閹惧磭鏆﹂柟鐑橆殕閸婄兘鎮楅悽鐧诲湱鏁幆褉鏀介柣妯虹仛閺嗏晛鈹戦纰卞殶闁瑰箍鍨硅灒濞撴凹鍨抽埀顒冨煐閵囧嫰寮村Δ鈧禍楣冩⒑閸濆嫮鐒跨紒鏌ョ畺楠炲棝寮崼顐f櫖濠电偞鍨堕敃鈺傚閿燂拷<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4