2018年扬州大学信息工程学院834软件基础(含数据结构、操作系统)之计算机操作系统考研仿真模拟五套题
● 摘要
一、选择题
1. 一个正在运行的进程,当发生某一事件,将其挂在( )。
A. 等待队列
B. 运行队列
C. 就绪队列
D. 任意一个队列
【答案】A
【解析】只有在分时系统时间片完时,进程由运行转为就绪状态。一般来说,有事件发生时,进程会被挂在等待队列。
2. 设与某资源相关联的信号量初值为3, 当前值为1,若M 表示该资源的可用个数,N 表示等待该资源的进程数,则M ,N 分别是( )。
A.0, 1
B.1, 0
C.1, 2
D.2, 0
【答案】B
【解析】首先应该明确资源型信号量的含义。资源型信号量可以用来表示某资源的当前可用数量,初值与对应资源的初始数量相同,题目中信号量初值为3, 表示该资源初始时有3个。
信号量当前值K>0时,表示此资源还有K 个资源可用,题目中信号量当前值为1,表示还有1个可用资源,M 应该为1。由于还存在可用资源,所以此时不应存在等待该资源的进程,N 应当为0。因此答案选B 项。
3. 有两个并发执行的进程P1和P2, 共享初值为1的变量x 。P1对x 加1,P2对x 减1。
两个操作完成后,x 的值( )。
A. 可能为-1或3
B. 只能为1
C. 可能为0、1或2
D. 可能为-1、0、1或2
【答案】C
【解析】执行①②③④⑤⑥结果为1,执行①②④⑤⑥③结果为2, 执行④⑤①②⑨⑥结果为0, 结果-1无法得到。这个题目的进程之间没有同步关系,因此通过分步尝试就可以得到答案。有的题目中两个进程会有同步关系,可以画出前趋图,以防推进顺序错误。
4. 目录文件所存放的信息是( )。
A. 某一文件存放的数据信息
B. 某一个文件的文件目录
C. 该目录中所有数据文件目录
D. 该目录中所有子目录文件和数据文件的目录
【答案】D
【解析】为实现“按名存取”,必须建立文件名与外存空间中的物理地址的对应关系,体现这种对应关系的数据结构称为文件目录。把若干文件目录组织在一起,以文件的形式保存在外存上,以备后用,这就形成了目录文件。
5. 下面不属于操作系统提供虚拟设备技术原因的是( )。
A. 独占设备可以作为共享设备来使用
B. 独占设备使用的静态分配技术既不能充分利用设备,又不利于提高系统效率
C. 在一定硬件和软件条件的基础上共享设备可以部分或全部地模拟独占设备的工作,提高独占设备的利用率和系统效率
D. 计算机系统具有多道处理功能,允许多道作业同时执行
【答案】D
【解析】D 项只是实现虚拟设备技术的条件,不是原因。
二、综合题
6. 名词解释:PCB 、LWP 。
【答案】为了便于系统控制和描述进程的基本情况以及进程的活动过程,在操作系统中为进程定义了一个专门的数据结构,称为进程控制块(PCB , ProcessControlBlock )。通常,进程PCB 包含以下信息:
(1)进程标识名或标识数。每个进程必须有一个而且是唯一的标识名或标识数;
(2)位置信息。它指出进程的程序和数据在内存或外存中的物理位置;
(3)状态信息。它指出进程当前所处的状态,作为进程调度、分配处理机的依据;
(4)进程的优先级。一般根据进程的轻重缓急程度为进程指定一个优先级,用优先数表示。
LWP 是Light Weighted Process的缩写,意为“轻量级进程”。它是内核内部的执行核代码和系统调用的内核线程,位于用户层和系统层之间。系统对线程资源的分配、对线程的控制是通过轻
进程来实现的,一个轻进程可以控制一个或多个线程。内核线程发生阻塞,则相连的多个LWP 阻塞,进而相应的用户线程阻塞,如进程只有一个LWP , 则进程阻塞。
7. 如何利用自旋锁来实现对总线的互斥访问?它与信号量的主要差别是什么?
【答案】(1)实现对总线互斥访问的方法
利用自旋锁实现对总线互斥访问的方法是:在总线上设置一个自旋锁,该锁最多只能被一个内核进程持有。当一个内核进程需要使用总线,对某个存储单元进行读写访问时,先请求自旋锁,以获得对总线的使用权。如果该锁被占用,那么这个进程就会一直进行“旋转”,循环测试锁的状态,直到自旋锁重新可用。如果锁未被占用,请求该锁的内核进程便能立刻得到它,并且继续执行,直到完成对指定存储单元的读写操作后,释放该锁。可见,自旋锁可以在任何时刻防止多个
内核进程同时进入临界区,因此可有效地避免多处理机上并发运行的内核进程对总线资源的竞争。
(2)自旋锁与信号量的主要差别
自旋锁与信号量的主要差别在于:自旋锁可避免调用进程阻塞。由于自旋锁使用者一般保持锁时间非常短,调用进程用“旋转”来取代进程切换。而我们知道进程切换需要花费一定开销,并且会使高速缓存失效,直接影响系统的性能,因此将自旋锁应用于对总线资源的竞争,其效率远高于信号量机制,且在多处理器环境中非常方便。
8. 为什么要引入动态重定位? 如何实现?
【答案】(1)引入动态重定位的原因
在连续分配方式中,必须把一个系统或用户程序装入一连续的内存空间。如果在系统中只有若干个小的分区,即使它们容量的总和大于要装入的程序,但由于这些分区不相邻接,也无法把该程序装入内存。若想把程序装入,可采用的一种方法是:将内存中的所有作业进行移动,使它们全都相邻接,这样,即可把原来分散的多个小分区拼接成一个大分区,这时就可把作业装入该区。这种通过移动内存中作业的位置,以把原来多个分散的小分区拼接成一个大分区的方法,称为“拼接”或“紧凑”。由于经过紧凑后的某些用户程序在内存中的位置发生了变化,此时若不对程序和数据的地址加以修改(变换),则程序必将无法执行。为此,在每次“紧凑”后,都必须对移动了的程序或数据进行重定位。
(2)引入动态重定位的实现
在动态运行时装入的方式中,作业装入内存后的所有地址都仍然是相对地址,将相对地址转换为物理地址的工作,被推迟到程序指令要真正执行时进行。为使地址的转换不会影响到指令的执行速度,必须有硬件地址变换机构的支持,即须在系统中増设一个重定位寄存器,用它来存放程序(数据)在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。当系统对内存进行了“紧凑”而使若干程序从内存的某处移至另一处时,不需对程序做任何修改,只要用该程序在内存的新起始地址去置换原来的起始地址即可。