我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:全民彩票 > 多级中断 >

操作系统课后答案-罗宇第四版剖析doc

归档日期:05-02       文本归类:多级中断      文章编辑:爱尚语录

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  1.2 操作系统以什么方式组织用户使用计算机? 答:操作系统以进程的方式组织用户使用计算机.用户所需完成的各种任务必须由相应的程序来表达出来。为了实现用户的任务,必须让相应功能的程序执行。而进程就是指程序的运行,操作系统的进程调度程序决定CPU在各进程间的切换。操作系统为用户提供进程创建和结束等的系统调用功能,使用户能够创建新进程。操作系统在初始化后,会为每个可能的系统用户创建第一个用户进程,用户的其他进程则可以由母进程通过“进程创建”系统调用进行创建。 1.4 早期监督程序(Monitor)的功能是什么? 答:早期监督程序的功能是代替系统操作员的部分工作,自动控制作业的运行。监督程序首先把第一道作业调入主存,并启动该作业。运行结束后,再把下一道作业调入主存启动运行。它如同一个系统操作员,负责批作业的I/O,并自动根据作业控制说明书以单道串行的方式控制作业运行,同时在程序运行过程中通过提供各种系统调用,控制使用计算机资源。 1.7 试述多道程序设计技术的基本思想。为什么采用多道程序设计技术可以提高资源利用率? 答:多道程序设计技术的基本思想是,在主存同时保持多道程序,主机以交替的方式同时处理多道程序。从宏观上看,主机内同时保持和处理若干道已开始运行但尚未结束的程序。从微观上看,某一时刻处理机只运行某道程序。 可以提高资源利用率的原因:由于任何一道作业的运行总是交替地串行使用CPU、外设等资源,即使用一段时间的CPU,然后使用一段时间的I/O设备,由于采用多道程序设计技术,加之对多道程序实施合理的运行调度,则可以实现CPU和I/O设备的高度并行,可以大大提高CPU与外设的利用率。 1.8 什么是分时系统?其主要特征是什么?适用于哪些应用? 答:分时系统是以多道程序设计技术为基础的交互式系统,在此系统中,一台计算机与多台终端相连接,用户通过各自的终端和终端命令以交互的方式使用计算机系统。每个用户都感觉到好像是自己在独占计算机系统,而在系统内部则由操作系统以时间片轮转的方式负责协调多个用户分享CPU。主要特征是: 并行性:系统能协调多个终端用户同时使用计算机系统,能控制多道程序同时运行。 共享性:对资源而言,系统在宏观上使各终端用户共享计算机系统中的各种资源,而在微观上它们则分时使用这些资源。 交互性:人与计算机以交互的方式进行工作。 独占性:使用户感觉到他在独占使用计算机。 现在的系统大部分都是分时系统,主要应用于人机交互的方面。 2.1 什么是中断?什么是异常?它们有何区别? 答:中断是指来自CPU执行指令以外的事件发生后,处理机暂停正在运行的程序,转去执行处理该事件的程序的过程。 异常是指源自CPU执行指令内部的事件发生后,处理机暂停正在执行的程序,转去处理该事件的过程。 区别:广义的中断包括中断和异常,统一称为中断。狭义的中断和异常的区别在于是否与正在执行的指令有关,中断可以屏蔽,而异常不可屏蔽。 2.2什么是多级中断?为什么要把中断分级?试述多级中断的处理原则。 答:中断分级是根据中断的轻重缓急来排序,把紧迫程度大致相当的中断源归并在同一级,而把紧迫程度差别较大的中断源放在不同的级别。一般来说,高速设备的中断优先级高,慢速设备的中断优先级低。这就是多级中断。这所以引入多级中断是因为:为使系统能及时的响应和处理所发生的紧迫中断,同时又不至于发生中断信号丢失,计算机发展早起在设计中断系统硬件时根据各种中断的轻重在线路上作出安排,从而使中断响应能有一个优先次序。 多级中断的处理原则:当多级中断同时发生时,CPU按照由高到低的顺序响应。高级中断可以打断低级中断处理程序的运行,转而执行高级中断处理程序。当同级中断同时到时,则按位响应。 2.6 什么是中断向量?其内容是什么?试述中断的处理过程。 答:中断向量:为处理方便,一般为系统中每个中断信号编制一个相应的中断处理程序,并把这些程序的入口地址放在特定的主存单元中。通常将这一片存放中断处理程序入口地址的主存单元称为中断向量。 中断向量的内容:对不同的系统,中断向量中的内容也不尽相同。一般每一个中断信号占用连续的两个单元:一个用来存放中断处理程序的入口地址,另一个用来保存在处理中断时CPU应具有的状态。 中断的处理过程:一般包括保存现场,分析中断原因,进入相应的中断处理程序,最后重新选择程序运行,恢复现场等过程。 2.7 中断/异常处理为什么要保存现场和恢复现场?现场应包括哪几方面的内容? 答:因为中断处理是一项短暂性的工作,逻辑上处理完后还要回到被中断的程序,从其恢复点继续运行。为了能实现正确的返回,并继续运行下去,在中断处理前后必须保存和恢复被中断的程序现场。 现场应包括:PC寄存器的内容,通用寄存器以及一些与程序运行相关的特殊寄存器中的内容。 2.8 操作系统内核的主要功能模块有哪些?如果采用微内核模型,原来在内核的功能中,哪些功能在微内核中实现?哪些由用户态运行的进程实现? 答:操作系统内核的主要功能模块有:1、系统初始化模块 2、进程管理模块 3、存储管理模块 4、I/O设备管理模块 5、文件管理模块 采用微内核模型,原来在内核的功能中,少量的进程调度切换代码和中断处理程序在微内核中实现,原来由内核态实现的大部分操作系统系统调用处理等功能转由用户态运行的进程实现。 2.9 从控制轨迹上看,系统调用和程序级的过程调用都相当于在断点处插入一段程序执行,但它们却有质的区别,试述这种差别。 答:这种差别主要在于处理机运行状态的变化。发生系统调用时,处理机由用户态进入核心态;而程序调用时,运行状态不发生变化,其状态仍然保持在用户态。 2.11 试述终端命令解释程序的处理过程。 答:终端命令解释程序的处理过程如下: ①判断命令的合法性 ②识别命令,如果是简单命令则处理命令,然后继续读取下一条命令 ③如果是不认识的命令关键字,则在约定目录下查找与命令关键字同名的执行文件,创建子进程去执行“执行文件”程序,等待子进程结束后转继续读取下一条命令。 3.1 什么是进程?为什么要引入此概念?试述进程的特点及它与程序的区别。 答:进程是支持程序执行的机制,是程序针对某一数据集合的执行过程。引入此概念的原因:随着操作系统的发展而产生。在监督程序时代以作业形式表示程序运行,那时,作业以同步方式串行地运行每个作业步,当操作系统发展到分时系统时,为了开发同一作业中不同作业步之间的并发,作业机制已经不能满足需要,因而引入了进程机制。 进程的特点: 动态性:可动态创建,结束,也可是被调度进程 并发性:可以被独立调度,占用处理机运行 独立性:尽量把并发事务安排到不同的进程 制约性:因访问共享数据或进程间同步而产生制约. 与程序的区别:进程是程序的执行过程,程序是静态的,进程是动态的。一个进程至少是一个可执行程序,同一个程序可以由多个进程分别执行。 3.2 进程控制块的作用是什么?PCB中应包括哪些信息? 答:进程控制块的作用是:进程控制块用于保存每个进程和资源的相关信息,包括进程标识、空间、运行状态、资源等信息。以便于操作系统管理和控制进程和资源。 PCB中应包括:1、进程标识信息:本进程的标识、父进程的标识、进程所属用户的标识。2、处理机状态信息。保存进程的运行现场信息,包括用户可用寄存器的信息;控制和状态寄存器的信息;栈指针。 3.4 为什么进程状态会发生变化?何时变化?(P54) 答:进程在它的生存周期中,由于系统中各进程并发运行及相互制约的结果,使得它的状态不断发生变化。 状态变化的时机: 空→创建:当一个新进程被产生来执行一个程序时。 创建→就绪:当进程被创建完成,初始化后,一切就绪准备运行时。 就绪→运行:当处于就绪状态的进程被进程调度程序选中后。 运行→结束:当进程指示它已经完成或者因错流产时。 运行→就绪:处于运行状态的进程在其运行过程中,分给它的处理机时间片用完而让出处理机;或者在可剥夺的操作系统中,当有更高优先级的进程就绪时。 运行→阻塞:当进程请求某样东西且必须等待时。 阻塞→就绪:当进程要等待事件到来时。 3.5 进程创建的主要工作是什么?(P54) 答:进程创建时的主要工作如下: 1、接收进程运行现场初始值,初始优先级,初始执行程序描述,其它资源等参数。 2、请求分配进程描述块PCB空间,得到一个内部数字进程标识。 3、用从父进程传来的参数初始化PCB表。 4、产生描述进程空间的数据结构,用初始执行文件初始化进程空间,建立程序段,数据段、栈段等。 5、用进程运行现场初始值设置处理机现场保护区。造一个进程运行栈帧。 6、置好父进程等关系域。 7、将进程置成就绪状态。 8、将PCB表挂入就绪队列,等待时机被调度运行。 3.7 详细说明几个引起进程调度的原因。(P62) 答:1、进程主动放弃处理机时: 正在执行的进程执行完毕。操作系统在处理进程结束系统调用后应请求重新调度。 正在执行的进程发出I/O请求,当操作系统代其启动外设I/O后,在I/O请求没有完成前要将进程变成阻塞状态,应该请求重新调度。 正在执行的进程要等待其它进程或系统发出的事件时。如等待另一个进程通讯数据,这时操作系统应将现运行进程挂到等待队列,并且请求重新调度。 正在执行的进程得不到所要的系统资源,如要求进入临界区,但没有得到锁时,这时等锁的进程应自动放弃处理机或者阻塞到等锁队列上,并且请求重新调度。 2、为了支持可剥夺的进程调度方式,在以下情况发生时,因为新就绪的进程可能会按某种调度原则剥夺正运行的进程,因此也应该申请进行进程调度: 当中断处理程序处理完中断,如I/O中断、通讯中断,引起某个阻塞进程变成就绪状态时,应该请求重新调度。 当进程释放资源,走出临界区,引起其他等待该资源进程从阻塞状态进入就绪状态时,应该请求重新调度。 当进程发系统调用,引起某个事件发生,导致等待事件的进程就绪时。 其它任何原因引起有进程从其它状态变成就绪状态,如进程被中调选中时。 3、为了支持可剥夺调度,即使没有新就绪进程,为了让所有就绪进程轮流占用处理机,可在下述情况下申请进行进程调度: 当时钟中断发生,时钟中断处理程序调用有关时间片的处理程序,发现正运行进程时间片到,应请求重新调度。以便让其他进程占用处理机。 在按进程优先级进行进程调度的操作系统中,任何原因引起进程的优先级发生变化时,应请求重新调度。如进程通过系统调用自愿改变优先级时或者系统处理时钟中断时,根据各进程等待处理机的时间长短而调整进程的优先级。 3.8 什么时候进行进程调度最为合适?请说明理由。(P63) 答:进程调度的时机: 当发生引起调度条件,且当前进程无法继续运行下去时(如发生各种进程放弃处理机的条件)可以马上进行调度与切换。 当中断处理结束或自陷处理结束返回被中断进程的用户态程序执行前,若请求调度标志置上,即可马上进行进程调度与切换。如果操作系统支持这种情况下运行调度程序,即实现了剥夺方式的调度。 3.10 对于三类进程(I/O为主、CPU为主和I/O与CPU均衡),应如何赋予它们的运行优先级并说明理由。(P67) 答:对于这三类进程,赋予的优先级由高到低分别为:I/O为主、I/O与CPU均衡、CPU为主。 理由:为了充分利用外部设备,以及对终端交互用户及时地予以响应,通常将I/O型进程列为最高优先级队列。 3.11 假设在单处理机上有五个进程(1、2、3、4、5)争夺运行,其运行时间分别为10,1,2,1,5秒,其优先级分别为3,1,3,4,2,这些进程几乎同时到达,但在就绪队列中的次序依次为1,2,3,4,5,试回答: ①给出这些进程分别适用轮转法、SPF和非剥夺优先级调度法调度时的运行进度表,其中,轮转法中的时间片取值为2。 ②在上述各算法的调度下每个进程的周转时间和等待时间为多少? ③具有最短平均等待时间的算法是哪个? 答:轮转法: 时间片 2 1 2 1 2 2 2 2 1 2 2 进程 1 2 3 4 5 1 5 1 5 1 1 进程的周转时间:进程1:19,进程2:3,进程3:5,进程4:6,进程5:15 进程的等待时间:进程1:9,进程2:2,进程3:3,进程4:5,进程5:10 平均等待时间(9+2+3+5+10)/5=5.8 SPF算法: 进程 提交时间 结束时间 等待时间 周转时间 1 0 1 0 1 2 9 19 9 19 3 2 4 2 4 4 1 2 1 2 5 4 9 4 9 平均等待时间:16/5=3.2 非剥夺优先级算法 进程 提交时间 结束时间 等待时间 周转时间 1 1 11 1 11 2 18 19 18 19 3 11 13 11 13 4 0 1 0 1 5 13 18 13 18 平均等待时间:43/5=8.6 SPF算法具有最短平均等待时间。 3.19 什么是批处理作业和交互式作业?它们的特点是什么?系统如何管理? 答:批处理作业是指用户将若干用户任务合成一批,一起提交给系统进行处理的任务集合。交互式作业是指用户的一次上机交互过程,用户通过命令语言逐条地与系统进行应答式的交互,提交作业步。 特点:批处理作业的处理过程由计算机自动运行,不需人为干预,用户也看不到中间结果。交互式作业需要系统提供终端供用户与系统交互,作业的运行由人控制,便于作业的调试以及将作业按人预想的方向进行。 4.1 并行任务如何在程序中表示?(P74) 答:并行任务在程序中主要通过并发语句来表示。如Parbegin/Parend语句 4.2 并行任务并行(并发)运行的操作系统支持基础是什么? 答:支持基础是进程和线程的引入。在多道程序设计系统中,进程之间可以并发执行,这就使多任务并行执行成为可能。同时,线程的引入,同一进程内的多个线程也可以并行运行,这也提供了任务内部的并行。提高了效率。 4.3 题略 答:答:进程P0在flag[0]=false后,进程P1跳出循环,此时刚好来了一个中断。中断使得进程P0又再次执行,此时由于P1并没有给turn赋值,从而P0可以顺利进入临界段,在P0进入临界段时产生中断,P1恢复执行,将turn赋值为1,从而P1也可以进入临界段。从而产生错误。 4.4 何谓原语?它与系统调用有何区别?如何实现原语执行的不可分割性? 答:原语是指完成某种功能且不被分割、不被中断执行的操作序列。有时也称为原子操作。 它与系统调用的区别:原语和系统调用是两个不同的概念,原语主要强调操作的不可分割性,可以认为是一个不可中断的子程序调用,但是系统调用是由用户态进入核心态,虽然系统调用一般也不被中断,但是如果有更高更紧迫的系统调用的话,还是能够打断原来的系统调用的。 实现原语执行的不可分割性:通常由硬件来实现,也可以由软件通过中断屏蔽的方法来实现。 4.6 如果P,V操作不作为原语(可分割执行),那么是否还可用于解决互斥问题?如果不能,则举例说明。 答:如果P,V操作不作为原语,那么不可用于解决互斥问题。因为如果那样的话,则:程序语言s = s-1;翻译成机器语言为:load R1, s; load R2, 1; sub R1, R2; 此时,他们之间的操作可以分割执行,假设有两个进程P1、P2,s初值为1,当P1进入P操作时,s大于0,可以进入,因此会执行上面的机器语言,将s的值取出来,放入R1寄存器中,而此时,有可能P2进程要进入临界段,因此,它也比较s的值是否小于0,因为此时s的值仍为1,所以P2也进入临界段,出现错误。 4.13 题略 答:① empty1=1; empty2=1; full1=0; full2=0; parbegin P: While(1) {P(empty1); put to buffer1; V(full1); } Q: While(1) {P(full1); get from buffer1; V(empty1); P(empty2); put to buffer2; V(full2); } R: While(1) { P(full2); get from buffer2; V(empty2); } parend; ② empty1=m; empty2=n; full1=0; full2=0;mutex1=1;mutex2=1; parbegin P: While(1) { P(empty1); P(mutex1); put to buffer1; V(full1); V(mutex1); } Q: While(1) { P(full1); P(mutex1); get from buffer1; V(empty1); V(mutex1); P(empty2); P(mutex2); put to buffer2; V(full2); V(mutex2); } R: While(1) { P(full2); P(mutex2); get from buffer2; V(empty2); V(mutex2); } parend; 4.14 题略 答:P1: Sa; V(ac); V(ae); Sb; P(cd); Sd; P(fe); Sf; V(fh); Sg; P2: P(ac); Sc; V(cd); P3: P(ae); Se; V(fe); P(fh); Sh; 4.23 题略 答:解题方法,找出可能死锁的资源最多的情况。假设n个进程需要的资源数分别为:a1,a2,…. an,则占有资源数最多却刚好形成死锁的情况是:每个进程都占有比所需资源数少一个的资源数量,而此时刚好资源用光。所以是:(a1-1)+(a2-1)+……+(an-1)=m,整理得a1+a2+…+an=m+n,而要想使得系统无死锁,则必须有a1+a2+…+anm+n。命题得证。 4.28 题略 答:1、Need的内容为:[0000,0750,1002,0020,0642] 2、系统是处于安全状态。 3、进程2请求0420,不能立即得到满足,因为如果给进程2分配了0420的话,系统将处于不安全状态。所以不能立即得到满足。 4.11 多元信号量机构允许P,V操作同时对多个信号量进行操作。这种机构对同时申请或释放若干个资源是非常有用的。假设二元信号量机构中的P原语定义为: P(S,R) : While(S≤0 or R≤0); S=S-1; R=R-1; 试用一元信号量机构加以实现。 答:mutex: semaphore P(mutex); P(S); P(R); V(mutex); 4.15 “理发师睡觉”问题 答:可以将此题看作N个生产者和一个消费者问题。顾客作为生产者,每到来一个,就将自己放入计数器RC,以便让理发师消费至最后一个产品(顾客),因此顾客进程执行的第一个语句便是RC=RC+1。而第一个到来的顾客应该负责唤醒理发师,理发师此时正在信号量WAKEUP上等待((P(WAKEUP);该信号量的初值为0),由第一个顾客执行V(WAKEUP)。若顾客不是第一个到达,则在信号量WAIT上等待(P(WAIT)该信号量的初值为0),等理发师理完一个顾客后,执行V(WAIT)操作便可叫出该顾客理发。以上过程循环反复,理发师没每理完一个顾客,就令计数器减1,RC=0时便知此时无顾客,理发师可以继续睡觉,等待下一批顾客到达。在设信号量MUTEX(初值为1),保证对计数器RC的互斥作用。 parbegin 顾客进程: begin P(mutex); rc=rc+1; if rc=1 then V(wakeup); elseP(wait); V(mutex); 理发; end; 理发师进程: begin P(wakeup); repeat 理发; P(mutex); rc=rc-1; if(rc!=0) then V(wait); V(mutex); until rc=0; end; parend; 4.21 题略 进程数 资源总数 是否可能死锁 1 1 不会 1 2 不会 2 1 不会 2 2 可能会 2 3 可能会 进程数 资源总数 是否可能死锁 1 2 不会 2 2 可能会 2 3 不会 3 3 可能会 3 4 不会 5.5 答:需要的硬件支持可以选择两种:1、上、下界寄存器和地址检查机制;2、基地址寄存器、长度寄存器和动态地址转换机制。 地址转换的过程也即是地址重定位的过程,也有两种方法实现地址重定位: 1、静态重定位,用户代码中使用相对地址,在将目标代码加载到主存时,装配链接程序通过如下的方法将其装配成绝对地址:原地址+目标代码所在主存起始地址; 2、动态重定位,它首先将程序在主存的起始地址及其总长度存放于基地址寄存器和长度寄存器,当在执行访存指令时,首先进行越界检查,若不越界,则将地址改成“原地址+目标代码所在主存起始地址”,然后进行访问。 实现存储保护: 当使用第一种硬件机制时,每访问一次主存,地址检查机制将CPU提供的访存地址与上、下界寄存器的值进行比较。若介乎上下界之间,则可用该地址访问存储器,否则终止程序的运行。 当使用第二种硬件机制时,,每访问一次主存,它将CPU提供的访存地址与长度寄存器的值进行比较。若越界,则终止程序,否则与基地址寄存器中的值相加成为访问贮存的绝对物理地址。 5.6为什么要引进页式存储管理方法?在这种管理方法中硬件应提供哪些支持? 答:原因在于连续分配存储空间存在许多存储碎片和空间管理复杂的问题,而连续分配要求把作业放在主存的一片连续区域中,这往往容易出现连续空间因不能容纳作业或进程而不可用。而页式存储管理方法可以避免这种情况的发生。 硬件应提供的支持:动态地址转换机构,页表长度寄存器,联想存储器(页表以及访问权限域均在主存中)。 5.7 题略 答:(1)访问一次页面单元需要访问两次主存,因此访问时间为:1.2*2=2.4us; (2)等效存储访问时间为:1.2*75%+2.4*25%=1.5us; 5.11 在页式存储管理系统中怎样使多个作业共享一个程序或数据? 答:在每个作业的页表中,将需要共享的程序映射到存放该共享程序或数据的相同的物理页帧上。 5.17 题略 答:系统得到物理地址的过程: 由题设可得,虚存地址的逻辑页号为:11123,页内偏移为456; 从联想存储器中查找逻辑页号为11123对应的物理页帧号,如果有,则将物理页帧号和页内偏移合成成物理地址进行访问,否则从页表中查找。 在页表中找到相应项,查看该页的合法位是否置上,若为1,则将该项指出的页帧号和页内偏移合成成物理地址进行访问,若合法位为0,则产生页故障,系统将页表项所指的辅存块号调入主存,然后合成物理地址进行访问。 硬件完成的工作:获得页帧号,合成物理地址,以及合法位是否置上等。软件完成的工作:接收缺页异常,对缺页故障进行处理,返回现场。 5.18 题略 答:访问的相应逻辑页号为:0,0,1,1,0,3,1,2,2,4,4,3。 采用FIFO:故障数:6;页故障率:6/12=50% 采用LRU,淘汰上次使用距当前最远的页 :故障数:7;页故障率为:7/12=58.3% 采用OPT,淘汰下次访问距当前最远的那些页中序号最小的一页 :故障数:5;页故障率:5/12=41.7% 5.19 题略 答:①栈结构对数据的访问一般在栈顶附近,或者离栈顶不远,符合程序的局部性行态; ②杂凑技术取决于Hash值的大小,如果太大,则会频繁出现缺页,不利于程序的局部性行态; ③顺序搜索是根据当前项向前或向后逐个搜索,符合程序的局部性行态; ④goto语句往往使程序从一个地方跳到另一个地方,空间跨度往往比较大,少用或不用goto语句使程序能够在局部范围内执行,符合程序的局部性行态。 5.24 题略 答:驻留集大小为2个页帧,但是程序要长期驻留在主存中,必须占用一页,所以驻留集中只有一页留给数据使用。假设数组中每一个元素占一个字的空间,因为每一页有100个字,而且数组是按行主顺序存放,当采用1策略时,赋值顺序为:A(1,1),A(2,1),…A(100,1)…,每一次赋值都产生缺页异常,因此页故障数为100*100=10000,而采用2策略时,只在第一维产生变化时才产生缺页故障,因此页故障数为100。 5.31 设有如下访问串:6,9,2,1,0,3,5,4,3,2,1,0,2,1。取△=4,给出用WS与VMIN两种算法控制该访问串驻留集的变化情况。 答:用WS方法,有△个时间未被引用则将其淘汰; 用VMIN方法,若某页下次访问的距离大于△,则将其淘汰。 5.33 如果主存中的某页正在与外部设备交换信息,那么在页故障中断时可以将这一页淘汰吗?对于这种情况应如何解决?(P110-111) 答:不能将这一页淘汰,,因为如果淘汰出去的话,则新进入的页将代替正在交换信息的页,而I/O数据区将被新换入的页所代替,从而导致错误。因此,应该等该、页与外部设备交换信息结束之后,才能将该页淘汰。 5.34 题略 答:访问虚地址(233)8时不会发生缺页故障,因为根据虚地址可得,它的页号为2,页内偏移为(33)8,而在页表中页号为2的页有效位为1,说明在主存中,相应的页帧号为20,所以物理地址为(20)8*82+(33)8=(2033)8,而访问(345)8时会发生缺页中断,根据虚地址可得它的页号为3,页内偏移为(45)8,查页表可得,该页的有效位为0,因此不在主存中,产生缺页中断,它首先向主存申请一个可用的页帧,然后检查该故障页的页类型,为零页,因此将刚申请到的页帧清零,将页帧号填入页表项中,将合法位置为1,然后返回。 6.2 设备控制器与处理机如何通信? 答: CPU通过向控制器寄存器写命令字来发出I/O命令, 控制器接到命令后,完成具体的I/O操作, CPU则反复读取控制器的状态,测试控制器是否完成操作。 或者转向其他工作,当控制器完成相应操作后向CPU发出中断信号。 6.3 简述各种不同的I/O控制方式? 答:主要有三种不同的I/O控制方式: 1、程序直接控制方式。当遇到一条与I/O相关的指令时,CPU向相应的设备控制器发命令,设备控制器执行相应的操作,将I/O状态寄存器的相应位置上,然后CPU周期性地检查设备控制器的状态寄存器,直到发现I/O操作完成为止。CPU直接控制I/O操作过程,包括测试设备状态,发送读/写命令与数据。 2、中断驱动方式。CPU向设备控制器发出命令后,继续做其他工作。当设备控制器准备好CPU交换数据时,设备控制器中断CPU,要求服务。CPU被中断后,执行CPU寄存器和设备控制器之间的数据传输,然后恢复被中断的工作。 3、DMA方式:当CPU需要读/写数据块时,它给DMA部件发命令,然后继续执行其他的工作。DMA负责此次I/O的完成,DMA部件每次一个字地将整个数据块直接读取或写入主存,而不需经过CPU寄存器。当传送过程完成后,DMA部件向CPU发中断信号。 6.4 什么是独占型设备和分时共享型设备?如何保证独占型设备的独占使用?(P147) 答:独占型设备是指在申请设备时,如果设备空闲,就将其独占,不再允许其他进程申请使用,一直等到该设备被释放,才允许被其他进程申请使用。 分时共享型设备:设备接受多个I/O请求,并将其放在请求队列中,不同进程的I/O操作请求以排队的方式分时地占用设备进行I/O。 如何保证独占使用:对独占型设备进行独占申请,即在申请时,如果申请成功,就对该设备进行加锁操作,直到该I/O完成后,才释放锁,从而释放该设备。 6.5 以SPOOLing方式使用设备是如何实现的? 答:SPOOLing技术是在批处理操作系统时代引入的,即假脱机I/O技术,它主要针对独占型设备的使用。以打印机为例,首先为每个打印机建立一个打印服务进程,和一个打印队列。打印服务进程循环地获取打印队列中的表项,对每一个要输出的文件副本,服务进程从文件副本中读取数据,再成批地调用写打印机的系统调用将该文件的数据打印在纸上。 6.6 以下的工作各在3个I/O软件层的哪一层完成? 答:①涉及到具体的磁道、扇区、磁头的计算,这属于设备驱动与中断处理层。 ②属于缓冲I/O的功能,因此属于与设备无关的I/O层。 ③中涉及到设备寄存器的操作,而能操作设备寄存器的只有设备驱动与中断处理层。 ④是对设备使用权限的内容,因此属于与设备无关的I/O层。 ⑤用户请求,他请求系统将二进制整数转换成ASCII码再输出,属于用户层I/O。 6.8 如何使用缓冲区实现“预先读”和“延迟写”?这两种读/写方式的优缺点是什么? 答:预先读就是:将从设备控制器来的数据先送入系统缓冲区,该数据块送完后,用户进程将此数据块移到用户进程空间。并且立即请求下一个数据块。 延迟写就是:当需要将数据写出时,首先将数据块从用户进程空间拷贝到系统缓冲区,这时可继续执行用户进程,并可在需要时换出主存。操作系统会安排最终将系统缓冲区的内容输出到设备上。 优点是:减少CPU访问目标存储部件的次数。提高了慢速I/O设备和快速CPU交互的速度,提高输入输出速度。 缺点:预先读是基于“下一数据块最终将被使用”这一猜测。因此,当这一猜测失败时,系统将耗费更多的时间来处理,猜测失败的代价是很大的。同时,增加了操作系统的复杂度。 延迟写也增加了操作系统的复杂度,同时延迟写还可能出现数据丢失的情况。 6.11 假设对磁盘的请求串为95,180,35,120,10,122,64,68,磁头初始位置为30,试分别画出FCFS,SSTF,SCAN,C-SCAN调度算法的磁头移动轨迹及磁头移动的磁道数(磁道号:0~199)。 答:FCFS:First Come First Served, SSTF:Shortest Seek Time First, SCAN:扫描 C-SCAN:单向扫描 6.16 在磁盘管理程序中何时进行磁盘调度? 答:当有多个进程请求读取磁盘中的数据,而这些数据散布在磁盘的不同位置的时候,应该进行磁盘调度。此时磁盘驱动程序应维持一个磁盘I/O请求队列,对已有请求和新到来请求进行排队优化,确保相邻请求其磁道相距最近。 6.18 RAID级别0+1有何特点?可用于什么应用环境? 答:RAID级别0+1是指RAID级别0和1的结合。RAID级别0提供性能,RAID级别1提供可靠性。特点是性能高、可靠性好、价格高(需要2倍磁盘数目) 应用环境:通常用于性能和可靠性都很重要的环境中。 7.2 一个可以支持随机访问的文件应该用什么方式放在辅存中? 答:一个可以支持随机访问的文件应该用索引结构的方式将其放在辅存中。 7.4 试述文件控制块的作用,请设计在树形文件目录中快速查找文件控制块的方法。 答:文件控制块是一张用于存放文件的标识、定位、说明和控制等信息的表格,用于管理和控制文件系统中的全部文件。 快速查找文件控制块的方法:引入“当前目录”,用户可指定某级目录作为用户“当前目录”,当前目录的文件控制块事先已读入并保存在主存。当用户注册时,操作系统在记账文件中查找与该用户所对应的信息项。记账文件中保存了一个指向用户初始“当前目录”的路径名。“当前目录”最初在用户登录时自动置为该用户的初始“当前目录”。操作系统提供专门的系统调用供用户随时改变“当前目录”。在查找时,操作系统从根目录或“当前目录”进行查找,因为当前目录的FCB通常是放在主存中的,所以查找速度会比较快。 7.7 无环图目录结构与树形目录结构相比,优势在哪里?如何删除一个节点? 答:无环图目录结构的优势是利于文件的共享,因为当树形目录结构想共享某个文件时,需要在不同的路径保存多个副本,这样浪费了存储空间。而无环图目录结构只需增加一个称为链的新目录项,让其指向需要共享的文件即可。节省了空间,管理更灵活。 如何删除节点:为每个节点设置一个共享计数器,每当增加了一条共享链时,就将其共享计数器加1,每当要删除某个节点时,其共享计数器减1,当计数器为0时,就线 请比较辅存空间分配和主存空间分配的特点。 答:辅存空间的特点是容量大,如何在大量的文件中快速查找和定位你所需的文件是辅存空间分配需要考虑的主要问题。在逻辑空间,通常将文件组织成目录结构,在物理存储时,将其组织成链表结构或索引结构存放在辅存中,文件系统对未分配空间保持一个“自由空间表”的数据结构,通常组织成位向量的形式,每一个柱面对应一个位向量,所有位向量组成一个位图数组,它记录了整个磁盘空间的使用情况。 而主存空间容量小,访问速度快,因此主存空间分配主要考虑的是如何提高主存空间的访问速度、利用率和命中率。因此,在主存空间分配之前,将所有的主存空间分页,并将每一页登记在页表中,将用户的逻辑页对应着主存的物理页帧,分配主存空间时在页表中登记,当需替换页时,采用好的替换策略提高主存的命中率。 7.10 试述“打开文件”所做的工作。 答:根据参数所指出的文件名和卷名找到相应文件。 将该文件的文件控制块存入主存的活跃文件目录表。 建立该文件的读/写状态信息表。 将该文件的信息存入用户的“打开文件表”中。 7.11 写文件系统调用处理时超过文件已有空间系统,应如何处理?可以让文件大小动态增长吗? 答:当超过文件已有空间系统时,应为文件系统申请更大的辅存空间。可以让文件大小动态增长。 7.13 请说明UNIX操作系统文件访问控制的方法。 答:将使用文件的用户分为三类:文件主,同组的若干用户,其他用户。在访问表中列出这三类用户的访问权限,然后直接保存在文件控制块中。当用户需要访问文件时,系统根据进程用户所述的类型,在访问表中验证此次访问的权限。如果拥有此权限则访问,否则拒绝访问。 7.15 文件控制块中的文件定位信息用于文件系统层次结构的哪一层? 答:用于文件系统层次结构的第四层:物理文件系统层。因为文件控制块中的文件定位信息主要是为了操作系统根据文件的逻辑地址来找到存储该文件的物理地址,而这正是物理文件系统要做的工作。 8.2 利用多线程编程的好处有哪些? 答:多线程能够共享程序和数据空间,使得系统的开销变小,并行程序设计性能更好,程序设计界面更规范,比多进程及异步调用等并行方式更易编程。如果在多处理机上进行多线程编程,则可以使线程之间完全并行,大大加速进程的运行。 8.3 比较用户级和内核级线程实现方法的优缺点。 答:采用用户级线程实现的优点: 为用户提供一个简明的同步并行编程环境。 开销小。 无需该县操作系统内核,完全由用户级库程序实现。 用户无需考虑系统资源限制。 缺点: 不能做到进程内线程在多处理机上真正并行运行。 若因某种原因所在进程被阻塞,多线库无法知道刚运行的线程被阻塞,不能转到其他线程运行。 内核级线程实现的优点: 可以支持进程内多线程在多处理机上真正的并行。 不会出现在用户级线程实现方式下,线程在内核被阻塞但多线库调度器一无所知的情形。 缺点: 内核级线程与用户级线程相比开销要大一些。 内核级线程占用系统空间及资源,并不适合用户根据其任务的并行度来创建相应多的线 试描述线程的组调度的实现方法。 答:线程的组调度主要有以下两种方法: 引导型组调度:在自调度系统中,当某个处理机调度到某一用户的进程的线程时,处理机通过机间中断机制进行机间通信,来通知并引导其他处理机去调度同一用户的其他进程。 浮动型组调度:在共享主存的对称式多机系统中,可采用浮动型组调度。首先为每个处理机设计一个待运行线程TCB指针域,当内核调度程序进行组调度时将被选进程的所有线程TCB表指针依次填入各处理机的待运行线程TCB指针域中,这样就替其他处理机完成了调度。再依次向处理机发送机间中断,其他处理机在进行内核调度程序运行时发现已有待运行线程,表明已由其他处理机上运行的调度程序帮助本处理机进行调度。 8.7 如果一个线程要等待另一个线程传数据给它,请问如何实现?要用到哪些线程函数? 答:当同一个进程内部的两个线程时,由于这两个线程共享了同一片用户进程空间,因此可以在共享变量间进行同步与通信。当采用硬件锁、信号量来同步时,用户编程如果不安排进行其他工作,则线程在原地占用处理机,执行循环以判断数据是否到了,从而引起空等。 需要用到的线、线程加锁/解锁:pthread_mutex_lock(pthread_mutex_t *mutex); pthread_mutex_unlock(pthread_mutex_t *mutex); 2、等待线程结束:pthread_join(pthread_t tid, void**status); 当不同进程之间的两个线程通信时,变成了两个进程间通信,可以采用消息传递的方法。函数就是Send(),Receive()

本文链接:http://jomsell.com/duojizhongduan/79.html