(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 时,系统将自动删除该文件。