操作系统复习
操作系统复习题
一、操作系统引论
1.试说明推动OS发展的主要动力是什么?
- 计算机系统资源的利用率不断提高;
- 方便用户
- 器件不断更新换代
- 计算机体系结构不断发展
- 新的应用需求不断被提出
2.微机OS按运行方式来分,可分为哪几类?举例说明。
- 单用户多任务OS: 只允许一个用户上机(使用计算机),但允许用户程序作为一个任务运行,主要配置在8位和1位微机上。最具代表性的单用户单任务OS是CP/M(8位)和MS-DOS(16位)。
- 单用户多任务OS:只允许一个用户上机,但允许用户把程序分为若干任务并发执行,从而有效地改善了系统性能。最具代表性的单用户任务OS是由微软Win3.1、Win95、Win98等。
- 多用户多任务OS:允许多个用户通过各自的终端使用一台机器,共享主机系统中的各种资源,而每个用户程序又可进一步分为若干个任务并发执行,从而可以进一步提高资源利用率和系统吞吐量。最具代表性的多用户多任务OS是UNIX系统,各种类UNIX系统(Solaris、Linux系统等)以及Windows NT/Server系列的系统。
二、进程的描述与控制
1.什么是前驱图?请画出下列4条语句的前驱图。
S1: a = x + y;
S2: b = z + 1;
S3: c = a + b;
S4: w = c + 1;
2.在创建一个进程时,OS需要完成的主要工作是什么?
OS 发现请求创建新进程后,首先,调用进程创建原语;其次,申请一个空白PCB,并向该PCB中填写用于控制和管理进程的信息;再次,为该进程分配运行时所需的资源;最后,把该进程的PCB转入就绪状态并插入就绪队列中。
3.试说明引起进程阻塞或被唤醒的主要事件。
引起进程阻塞或被唤醒的主要事件介绍如下。
- ① 向系统请求共享资源失败。进程在向系统请求共享资源时,由于系统已无足够的资源分配给它,此时进程会因不能继续运行而转变为阻塞状态。
- ② 等待完成某种操作。当进程启动某种操作后,如果该进程必须在操作完成之后才能继续执行,则应先阻塞该进程。
- ③ 尚未到达新数据。对于相互合作的进程,如果一个进程需要获得另一个进程提供的数据后才能处理该数据。但所需数据尚未到达,则进程阻塞。
- ④ 等待到达新任务。在某些系统中,特别是在网络环境下的OS中,往往会设置一定量的系统进程,这种进程每当完成任务后便会把自己阻塞起来,等待新任务的到来。
三、 处理机调度与死锁
1.什么是死锁?产生死锁的原因和必要条件是什么?如何预防死锁?
死锁是指多个进程在运行过程中因争夺资源造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,他们都将无法向前推进。产生死锁的原因有:
- ① 竞争不可抢占性资源
- ② 竞争可消耗资源
- ③ 进程间推进顺序不当
产生死锁必须同时具备4个必要条件:
- ① 互斥条件
- ② 请求和保持条件
- ③ 不可抢占条件
- ④ 循环等待条件
预防死锁是通过破坏产生死锁的4个必要条件中的一个或多个来实现的。其中互斥条件是设备固有属性,不能改变,因此主要破坏产生死锁的其他3个必要条件。
- ① 破坏 “请求和保持”条件。当一个进程在请求资源时,它不能持有不可抢占资源。
- ② 破坏“不可抢占”条件。当一个已经保持了某些不可抢占性资源的进程提出新的资源请求而不能得到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请。
- ③ 破坏“循环等待”条件。对系统所有资源类型进行线性排序,并赋予他们不同的序号,规定每个进程必须按序号递增的方式请求资源。
四、进程同步
1. 利用信号量机制实现进程互斥时,对互斥信号量的wait()和signal()操作为什么要成对出现?
利用信号量机制实现进程互斥时,对互斥信号量mutex的wait()和signal()操作必须成对出现,缺少wait(mutex)将会导致系统混乱,不能保证进程对临届资源的互斥访问;而缺少signal(mutex)则将会使临界资源永远不被释放,从而使因等待该资源而阻塞的进程不能被唤醒。
五、存储器管理
一、为什么说分段系统较分页系统更易实现信息共享与保护?
① 对于分页系统,每个页面是分散存储的,为了实现信息共享与保护,页面之间需要一一对应起来,为此需要建立大量的页表项。
②对于分段系统,每个段都从0开始编址,并采用一段连续的地址空间,这样在实现信息共享与保护时,只须为所要共享与保护的程序设置一个段表项,将其中的起始地址与内存一一对应起来即可。
七、输入/输出系统
1、I/O 软件一般分为用户层软件、设备独立性软件、设备驱动程序和中断处理程序这4个层次,它们的基本功能分别是什么?请说明下列工作分别是在哪一层完成的?
(1)向设备寄存器写命令
在设备驱动程序中完成的。
(2) 检查用户是否有权使用设备
检查用户是否有权使用设备,属于设备保护,因此其在设备独立性软件中完成。
(3) 将二进制整数转换成ASCII 的格式打印
将二进制整数转换成ASCII格式打印是通过I/O库函数完成的,如C语言的库函数printf中就有打印格式的控制字符串,因此在其用户层软件中完成。
(4)缓冲管理
缓冲管理属于I/O的公有操作,因此是在设备独立性软件中完成的。