考研帮 > 考研资料

2.9 本章真题解析

2.9.2 综合应用题

  例题1
  UNIX操作系统使用copy-on-write方式来实现fork()系统调用以便创建一个新进程。但在创建进程时并不能完全使用copy-on-write方式,因为进程的某些部分必须在创建时即时copy,请问进程的哪些部分必须在创建时即时copy,哪些部分可以采用copy-on-write方式而不用即时copy?这样做有什么好处?
  例题1解答
  每个进程执行时必须将页表始址或段表始址调到初始寄存器,并将页表调入内存,否则进程无法执行,所以页表部分必需在创建时即时copy,其他进程管理程序所需的进程信息如进程号等也需要在创建时即时copy,而那些运行暂时不需要的进程用户上下文及数据可以先不复制到子进程空间,而是采取copy-on-write策略,因为子进程以后很可能不会用到这部分内容,而是调用exec()用新的进程上下文覆盖其原有上下文,这样一来可以节省fork()调用开销,避免不必要的copy。
  例题2
  进程和线程的主要区别是什么?
  例题2解答
  线程具有许多传统进程所具有的特征,故又称为轻型进程或进程元;而把传统的进程称为重型进程,它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少也需要有一个线程。下面从调度、并发性、系统开销、拥有资源等方面,来比较线程与进程。
  (1)调度。在传统操作系统中,拥有资源的基本单位和独立调度、分派的基本单位都是进程。而在引入线程的操作系统中,则把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位,使传统进程的两个属性分开,线程便能轻装运行,从而提高系统的并发程度。在同一进程中,线程的切换不会引起进程的切换,在由一个进程中的线程切换到另一进程中的线程时,将会引起进程切换。
  (2)并发性。在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间,亦可并发执行,因而使操作系统具有更好的并发性,从而能更有效地使用系统资源和提高系统的吞吐量。
  (3)拥有资源。不论是传统的操作系统,还是设有线程的操作系统,进程都是拥有资源的一个独立单位,它可以拥有自己的资源。一般来说,线程不拥有系统资源(也有一点必不可少的资源),但它可以访问其隶属进程的资源。亦即,一个进程的代码段、数据段以及系统资源,如已打开的文件、I/O设备等,可供同一进程的所有线程共享。
  (4)系统开销。在创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等。因此,操作系统所付出的开销将显著地大于在创建或撤消线程时的开销。类似地,在进行进程切换时,涉及整个当前进程CPU环境的保存以及新被调度运行的进程CPU环境的设置。而进程切换只需保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。此外,由于同一进程中的多个线程具有相同的地址空间,使两者之间的同步和通信的实现也变得比较容易,在有的系统中,线程的切换、同步和通信都无须需操作系统内核干预。
  例题3
  某个操作系统的设计目标是同时支持实时任务和交互式任务,它的实现采用混合式多线程策略,处理器调度策略采用多队列策略,在系统资源匮乏时,可以采用中级调度来平衡系统负载。
  (1)该操作系统中存在着哪些与处理器调度有关的实体?
  (2)请设计一种合理的多队列进程调度策略,它既能满足实时任务调度的需要,又能从外设访问角度来满足交互式任务调度的需要。
  例题3解答
  (1)进程:系统进行资源管理和保护的单位,与处理器调度相关的实体。
  内核级线程:进程的一条执行路径,操作系统进行处理器调度的实体。
  用户级线程:进程的一条执行路径,操作系统不知道它的存在,在执行时映射到内核级线程上。
  (2)划分成实时优先级层次和交互式优先级层次,其中实时优先级层次较高。实时优先级层次包括多个优先级,可以组织成多个就绪线程队列,也可以组织成一个优先队列;可以采用抢占式优先数调度策略,如果分配时间片,应该分配较长的时间片。
  交互式优先级层次可以划分成3个就绪线程队列,按照优先级从高到低依次为:访问字符设备的就绪线程队列、访问块设备的就绪线程队列、时间片到的就绪线程队列;其中优先级较高的就绪线程队列具有较短的时间片。
  例题4
  某操作系统将消息缓冲通信作为进程之间通信的基本手段。Send和Receive分别为发送消息和接收消息原语。请设计一种方案,用于Send和Receive原语来实现基于信号量的P、V操作。
  例题4解答
  (1)所有信号量由一个叫同步的进程来完成,对应每个信号量设置一个计数器(记录信号量的值)和一个等待进程链表。
  (2)P、V操作通过调用P、V过程来完成。P和V过程将信号量S和操作作为消息发给同步进程,然后等待同步进程的回答。
  (3)同步进程接收到消息后,看所要求的操作能否完成。P操作当S的值为0时,同步进程把调用者推入队列,不发回消息,调用者处于等待状态;V操作总能完成,所以发回一空消息给调用者,将其解冻,同时检查S的值是否为1和相应等待队列是否为空。若S为1,且队列不空,则从队列中移出一个进程,向它发送一个空消息,将它解冻。
  例题5
  对基本的进程状态转换图2-11中的状态转换编号1、2、3、4。令I和J分别取值1、2、3、4(J不等于I)。请分别讨论在状态转换I和状态转换J之间是否存在因果关系;若存在,请指出这种关系是必然的,或是有条件的,条件是什么?

  例题5解答
  根据图2-11分析,状态转换1和2之间:没有2就不会有1,因为2是进程从就绪态被CPU调度进入运行态的,若没有这一转换过程,则不会存在运行状态的进程,因此也就不会出现从运行态进入就绪态的进程,即状态转换1不会出现;状态转换3和4之间:没有4就不会有3。因为4是进程因等待资源而从运行态进入阻塞态的,在得到资源后才从阻塞态进入就绪态(即状态转换3),因此可以说没有4就不会出现3。还可以认为没有2就不会有4,因为任何进程必须先运行才可以申请资源,所以没有进入运行态的进程,就不可能有进入阻塞状态的进程。
  例题6
  简述计算机系统的中断机制及其作用。中断装置如何判别发生的是自愿性中断还是强迫性中断?
  例题6解答
  中断机制包括硬件的中断装置和操作系统的中断处理服务程序。中断装置由一些特定的寄存器和控制线路组成,中央处理器和外围设备等识别到的事件保存在特定的寄存器中,中央处理器每执行完一条指令,均由中断装置判别是否有事件发生。若无事件发生,CPU继续执行;若有事件发生,则中断装置中断原占有CPU的程序的执行,让操作系统的处理事件服务程序占用CPU,对出现的事件进行处理,事件处理完后,再让原来的程序继续占用CPU执行。
  处理器执行指令时,根据操作码是否是访管指令,来确定是否有自愿性中断事件发生。若有,则通知中断装置;对于强迫性中断,中断装置只要检查中断寄存器的内容,若非“0”,表示有强迫性中断事件发生。
  例题7
  给出中断响应的系统流程。
  例题7解答
  每一个程序都要有一个程序状态字(PSW)来刻画本程序的执行状态,在单处理器的计算机系统中整个系统设置一个用来存放当前运行进程的PSW的寄存器,该寄存器称为“程序状态字寄存器”。为了说明中断响应过程,我们区分三种PSW:
  (1)存放在程序状态字寄存器中的PSW是当前正占用处理器的进程的PSW,称“当前PSW”。
  (2)出现中断事件后,要由操作系统的中断处理程序占用处理器,让中断处理程序处理出现的中断事件。我们把中断处理程序的PSW称为“新PSW”,新PSW中存放着中断处理程序的入口地址。
  (3)中断处理程序在占用处理器前,必须把被中断进程的PSW保护好,以便该进程在适当的时候能使被中断时的情况继续执行。把保护好的被中断进程的PSW称为“旧PSW”。
  当中断装置发现中断事件后,首先把出现的中断事件存放到程序状态字寄存器中的中断码位置,然后把程序状态字寄存器中的“当前PSW”作为“旧PSW”存放到预先约定好的主存固定单元中保护起来,再把已经确定好的操作系统处理程序的“新PSW”送到程序状态字寄存器,成为“当前PSW”,这一过程称为“交换PSW”。中断装置通过交换PSW使被中断进程让出处理器,且使处理器按照中断处理程序的“新PSW”控制执行。于是,中断处理程序就占用了处理器,它先从保存好的旧PSW中取出中断码,分析发生的具体事件,从而可完成对中断事件的处理。
  一个进程占有处理器运行时,可以由于各种不同的事件发生而被中断。对各类不同的事件操作系统的处理是不同的,一般来说,对每一类事件都要有该类事件的处理程序,每一类处理程序都有一个“新PSW”。中断装置发现中断事件后应按中断事件类让相应的中断处理程序占有处理器,为此,可预先约定一些主存固定单元用来分别存放各类中断处理程序的“新PSW”和由于各种不同原因被中断的进程的“旧 PSW”,发生哪类中断事件就交换哪一类的新、旧PSW。具体处理过程如下:
  中断装置发现中断事件后把中断事件存入程序状态字寄存器中当前PSW的中断码位置;
  把当前PSW保存起来,根据发生的事件类找出事件对应的旧PSW位置(假设发生的是外部中断事件),把当前的PSW保存到该位置上;
  把该类事件处理程序的新PSW送入程序状态字寄存器,处理器就按这个新PSW控制处理该事件的中断处理程序执行。
  例题8
  给出不同中断事件的中断处理程序的处理。
  例题8解答
  各类中断事件的处理原则大致如下。
  (1)硬件故障中断事件的处理
  排除这类故障必须进行人工干预,因此处理这类事件只能是输出一些故障信息。例如,当主存储器的奇偶校验或海明校验装置发现主存储器读/写错误时,产生故障中断事件,中断处理程序要把访问该主存单元的进程状态改成“等待干预”,向操作员报告出错主存单元的地址和错误性质。待操作员排除故障后重新启动进程,使“等待干预”状态的进程变成“就绪”状态。
  (2)程序中断事件的处理
  程序中断事件往往与程序的具体编制有关,不同的用户对出现的事件可以有不同的处理要求,所以,中断处理程序可把出现的事件转交给用户自行处理。如果用户对发生的事件没有提出处理办法,那么操作系统就把发生事件的进程名、程序断点、事件性质等报告给操作员。
  (3)外部中断事件的处理
  用户可以用控制板上的中断键请求调用操作系统的某个特定功能。所以,当按压了一个中断键产生一个外部中断事件时,处理该事件的程序根据中断键的编号把处理转交给一个特定的例行程序。时钟是操作系统进行调度工作的重要工具,在UNIX系统中,硬件按电源频率每隔20毫秒产生一次中断请求。处理程序累计时钟中断次数用来调整日历时钟时间。只要在开机时置好开机时刻的年、月、日、时、分、秒,以后根据时钟中断的次数可计算出当前的时间。也可把时钟作为定时闹钟,先确定一个定时的时间,只要把当前的日历时钟时间与定时的时间相加就得到唤醒时间,处理程序每隔一段时间(例如1秒钟)把日历时钟时间与唤醒时间比较,当日历时钟时间?唤醒时间,就表示定时的时间到了,起到闹钟的作用。
  (4)输入/输出中断事件的处理
  I/O中断通常包括I/O正常结束和I/O错误,不同的情况系统采用不同的处理方法,详见第5章的介绍。
  (5)访管中断事件的处理
  这类中断事件表示正在运行的进程要调用操作系统的功能,中断处理程序可设置一张“系统调用程序入口表”,中断处理程序按系统调用类型号查这张入口表,找到相应的系统调用程序的入口地址,把处理转交给实现调用功能的程序执行。
  综上所述,在多数情况下,中断处理程序只须做一些保护现场。分析事件性质等原则性的处理,具体的处理可由适当的例行程序来完成。因此,中断处理程序可以创建一些处理事件的进程,具体的处理就由这些进程来实现。
  例题9
  进程之间存在哪几种制约关系?各是什么原因引起的?
  下面活动分别属于哪种制约关系?
  (1)若干个同学去图书馆借书。
  (2)两队举行篮球赛。
  (3)流水线生产的各道工序。
  (4)商品生产和社会消费。
  例题9解答
  进程之间存在直接制约关系(即同步问题)和间接制约关系(即互斥问题);同步问题是存在逻辑关系的进程之间相互等待所产生的制约关系,互斥问题是相互逻辑关系的进程竞争使用资源所发生的制约关系。
  (1)属于互斥关系,因为书的个数是有限的,一本书只能借给一个同学。
  (2)属于互斥关系,篮球只有一个,两队都要竞争。
  (3)属于同步关系,各道工序的开始都依赖前道工序的完成。
  (4)属于同步关系,商品没生产出来,消费无法进行,商品未消费完,生产也无须进行。
  例题10
  试从物理概念上来说明记录型信号量和wait与signal操作。
  例题10解答
  信号量是具有整数值的对象,支持两种原子操作P0和V0。P操作减少信号量的值,若新的信号量的值小于0,则操作阻塞;V操作增加信号量的值,若结果值大于或等于0,V操作就要唤醒一个等待的线程或进程。例如考虑管理一个计数资源,也就是说,资源是一些固定数目的实例(如n个缓冲区),进程想获得资源的一个实例,当它使用完这个资源后释放它,这个资源能用信号量表示,该信号量可初始化为资源实例数。想获得资源时使用P操作,每次请求成功它都要减少信号量的值。信号量的值减少至0时(无空闲可用资源),下一个P操作将被阻塞。释放资源时使用V操作,它增加信号量的值,同时唤醒被阻塞的进程。x.wait操作意味着调用该操作的进程将被挂起,直至另一进程执行x.signal操作,故x.signal操作仅仅重新启动一个被挂起的进程,若无挂起进程,则signal操作相当于空操作,即不改变x的状态,这不同于V操作,V操作是总要影响信号量操作的。
  例题11
  假设有一台多道程序的计算机,每个作业都有相同的特征,即在一个计算周期T里,I/O占用第一和第四个1/4周期,处理器占有第二和第三个1/4周期。而各个作业占用的I/O设备各不相同。如果计算机被任何一个作业单独占用的话,完成作业总共需要1个计算周期。假设使用时间片轮转进程调度策略,而且I/O操作能与处理器操作重叠,不同的I/O设备可以同时运行。定义以下变量:
  周转时间=完成一个作业的实际时间
  吞吐量=每周期T完成的作业的数量的平均值
  处理器使用率=处理器处于活动状态(非等待)的时间在总时间中占的百分比
  若有两个作业同时要求运行,作业1的优先级较高,作业都只运行一次。进程状态转换时的操作系统开销忽略不计,且时间片的大小远小于T。
  计算:
  (1)作业1和作业2各自的周转时间。
  (2)从作业开始运行,到两个作业都已完成的瞬间,计算机系统的吞吐量和处理器使用率。
 

关于"最后阶段,真题的正确打开方式_备考经验_考研帮"15名研友在考研帮APP发表了观点

扫我下载考研帮

考研帮地方站更多

你可能会关心:

来考研帮提升效率

× 关闭