名校操作系统历年考研试题(含解答) 联系客服

发布时间 : 星期四 文章名校操作系统历年考研试题(含解答)更新完毕开始阅读9a50b72651e79b89680226e0

进程调度是根据CPU的使用情况及时地把CPU分配给一个\就绪\的进程,使其从\就绪\状态变为\运行\状态。

3.在页式存储管理系统中,把每个作业的地址空间划分成大小相等的页,把内存的存储空间分成与页大小相同的物理块。存储分配以块为单位,一个作业的地址空间可以分配到内存不连续的物理块中。系统为每个作业建立一张页面变换表(简写为PMT,简称为页表),记录相应页在内存中对应的物理块号。页表(PMT)是用来完成逻辑地址到物理地址变换的一个重要数据结构。当进程访问逻辑地址时,地址变换机构自动地将逻辑地址分为页号和页内地址两部分,再以页号为索引去检索页表,得到该页的物理块号。把该物理块号与页内地址拼接便得到了物理地址。请求分页是指作业的所有页面并不一定都在实存,在作业运行过程中再请求调入所用的虚页。分页管理系统根据请求装入页面的方法,称为请求分页存储管理。

段式管理允许用户将作业的逻辑关系进行自然分段,段数不限且各段的大小可不同。逻辑段内的地址是由两部分(S:段号,dz段内位移量)组成的,即分段地址空间是用户定义的三维空间。内存分配以段为单位,整个作业的地址空间可装配在若干个互不连续的内存区域。在分段存储管理系统中,可以用类似于分页管理用过的地址变换机构,实现分段管理的地址变换,只不过使用的是段变换表SMT。段也可以根据请求而动态地调入内存。

段式与页式存储管理的主要区别为:

(1)分页的作业地址空间是单一的线性地址空间,而分段的作业地址空间是二维的。 (2)页是信息的物理单位,页的大小固定。而段是信息的逻辑单位,其长度不定。 (3)分页的活动是看不见的,分段是用户可见的活动。

(4)请求分页管理实现单段式虚存,而分段管理实现多段式虚存。

4.系统在创建进程时就确定了它的优先数,该优先数在进程的整个生存期内不再改变,这种优先数属于静态优先数。

系统在创建进程时确定了它的优先数,但该优先数在进程的整个生存期内可以随着情况的变化而发生改变,这种优先数属于动态优先数。

5.命令接口与程序接口是操作系统为用户提供的两类接口。 按命令接口对作业控制方式的不同,可将命令接口分为两种:

(1)联机命令接口:不同的系统提供的联机用户命令不同,但一般可提供一种或几种方式:命令驱动方式、菜单驱动方式和命令文件方式。

(2)脱机命令接口:把批处理系统中的接口称为脱机命令接口。

程序接口是操作系统专门为用户程序设计的,也是用户程序取得操作系统服务的唯一途径。程序接口通常由一组系统调用组成。用户通过在程序中使用系统调用命令来请求操作系统服务。不同的操作系统其系统调用的表现形式也不相同,但其所提供的主要功能大致相同。 (二)(10分)

1.A和B两个进程的相互制约关系是既有互斥又有同步:对缓冲区的访问必须互斥,并且,当缓冲区满时,A进程不可以写,必须等待:当缓冲区空时,B进程不可以读,必须等待。 2.用P、V操作表示A、B进程的同步算法如下: BEGIN

Buffer: ARRAY [0..N-1] of interger; m,out: Interger; S0,S1i S21Semaphore; SO:=1; S1:=0; S2:=N; in :=out:=0; Cobegin

Process PROCEDURE A:

BEGIN

L1: 生产数据m;

P(S2); P(SO);

Buffer(in):=m; in :=(in+1)MOD N; V(S1) V(SO); Goto L1 END

Process PROCEDURE B: BEGIN

L2: P(S1);

P(SO);

m:=buffer(out); out :=(out+1)MOD N; V(S2); V(SO); 消费m; goto L2 END Coend

END

(三)(10分〉

1.为创建一个进程,首先需要启动UNIX操作系统。系统初启时,会自动建立0#进程,0#进程又创建1#进程,此后0#进程就变为对换进程,而1#进程就变为系统的始祖进程。 2.UNIX利用fork为每个终端创建一个子进程为用户服务,如等待用户登录、执行shell命令解释程序等。此后,每个终端子进程又可利用fork来创建它的子进程,从而可形成一棵进程树。

3.Fork()的主要工作流程如图2.4所示:

fork()

↓ 统计fork次数

生成子进程

=1 =0 返回值 置返回值为子进程标识号 将子进程运行时间置成“0”, 置返回值为“0”

子进程返回 父进程返回

图2.4 fork()的主要工作流程

(四)(10分)

消息缓冲通信机制不仅能较好地解决进程间的同步互斥问题,还能交换大量消息,是理想的进程通信工具。而且操作系统隐藏了进程通信的实现细节,即通信过程对用户是透明的。这样就大大地简化了通信程序编制上的复杂性。 1.消息缓冲通信的过程如下:

当某个进程需要向另一个进程发送消息时,便向系统申请一个消息缓冲区,并把要发送的数据送到消息缓冲区,然后把该消息缓冲区插入到接受进程的消息队列中。接受进程在接受消息时,只要从本进程的消息队列中摘下该消息缓冲区,即可从中取下所需的信息, 2.高级通讯原语SEND相RECEIVE的逻辑框图如图2.5所示。

P(Sm) 申请一消息区

P(S) 消息送消息瞧

P(S) 从消息链上摘下一个消息

V(S) 消息区挂如消息链

V(Sm) 消息送接受区

V(S) 释放消息区

图 2.5

(五)(10分)

1.局部页面置换只在当前进程分配的页面中选择一个被置换的页面:全局页面置换从整个存储器用户区的所有页面中选择一个被置换的页面。

在多道程序系统中,采用局部页面置换策略进行页面置换,即使某个进程出现了抖动现象,不致引起其他进程也产生抖动,-可以将抖动局限在较小的范围内。

2.可以在MBT表中增设一个\引用位\当MBT表中的页被访问时\引用位\置1,在MBT表中再增设一个指针域,用于记录进入内存的页面顺序,另设一个替换指针指向最近刚刚进入内存的页面。可以根据引用位的状态来判别各页面最近的使用情况,当需要置换一页时,选择其引用位为0的页淘汰。该算法的程序流程图如图2.6所示:

入口

替换指针前进一步 指向下一存储块 引用位置0

N 其引用位=0 Y

选择该也淘汰

出口

图2.6 LUR近似算法的流程图i (六)(15分)

为了提高系统的适应性和均衡性,避免死锁的产生,设备分配必须考虑安全性问题。设备无关性使得用户的应用程序独立于实际的物理设备,不仅方便了用户,而且设备分配比较灵活,也便于实现I/O重定向。

所谓安全状态是指: 当多个进程动态地申请资源时,系统按某种顺序逐次地为每个进程分配所需的资源,使每个进程都可以在最终得到最大需求量后,依次顺利地完成。反之,如果不存在这样一种分配顺序使进程都能顺利完成,则称系统处于不安全状态。

当然,在系统处于不安全状态下时未必一定发生死锁,但是处于安全状态下的系统是一定不会发生死锁的。所以,避免死锁的关键就是:让系统在动态分配资源的过程中,不要进入不安全状态。银行家算法就是实现上述思想的一个典型算法。

银行家算法的基本思想是把操作系统比作银行家,操作系统管理的各种资源比为周转资金,申请资源的进程比作借款的主顾(即借款人)。银行家占杳有限的资金,他不可能满足所有借款人的请求,但可以满足一部分人的借款请求,等这些人归还后,又可把这笔资金借给他人,其原则是不能使银行家的钱被借完,使资金无法周转。 (七)(10分)

1.将一个文件目录分为基本目录项和名号目录项的好处是可以加快文件目录的检索速度。其原理是减少因查找文件内部号而产生的访问磁盘次数。因为在进行查找文件内部号的过程中不需要把文件控制块(即目录项)的所有内容都读入内存,所以在查找过程中减少所需读入的存储块就有可能减少访问磁盘的次数。但是,采用这种方法访问文件,当找到匹配的文件控制块后,还需要访问一次磁盘,才能读出全部的文件控制块信息。这就是为何采用这种方法在一定条件下并不能减少访问磁盘的次数的原因。

2.UNIX操作系统的打开文件系统调用open的处理过程可以分成以下四步:

(1)检索目录: 从根目录或当前目录开始,沿目录树查找指定文件名的文件的i节点。若未找到或不允许访问,则转出错处理,否则执行第(2)步。

(2)分配内存i节点: 如果该文件己被其他用户打开,则引用计数加1,否则分配内存i节点,并将磁盘i节点内容拷贝到内存i节点,引用计数置为1。

(3)分配文件表项: 在系统打开文件表中,分配一个文件表项,指向内存i节点,并置其他初值。

(4)分配用户文件描述表项:在用户文件描述符表(即用户打开文件表)中分配一个表项,指向第(3)步中分配的表项,返回。 (八)(10分)

1.可以从以下几个方面来比较文件存储器(即外存)与内存的管理: