操作系统试题(绝密)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“操作系统”复习提纲
2010-6-26
1.什么是操作系统?如何理解它的“机器扩展(extended machine)”和“资源
管理(resource management)”两个基本能力?
答:操作系统是计算机系统中的一个系统软件,是一些程序模块的集合
1、它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源
2、合理的组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能
3、使得用户能够灵活、方便、有效的使用计算机,使整个计算机系统能高效地运
行
作为扩展机器的操作系统,为程序员隐藏硬件的实际细节,并提供一个可以读写
的、简洁的命名文件视图的程序。它还隐藏了大量与中断、定时器、存储管理以
及其他与底层特征有关的令人烦恼的细节。
作为资源管理者的操作系统,主要任务是记录使用资源的情况、对资源的请求进
行授权、计算使用费用,并且为不同的程序和用户协调互相冲突的资源请求。在
时间和空间上实现共享资源的复用。
2.中断发生时,操作系统底层的运行框架(Skeleton)?
答:1)硬件压入堆栈技术器等
2)硬件从中断向量装入新的程序计数器
3)汇编语言过程保存寄存器值
4)汇编语言过程设置新的堆栈
5)C中断服务例程运行(典型的读和缓冲输入)
6)调度程序决定下一个将运行的进程
7)C过程返回至汇编代码
8)汇编语言过程开始运行新的当前进程。
3.什么是进程和线程,区别是什么?
答:线程是在进程内用于调度和占有处理机的基本单位,它由线程控制表、存储线程上下文的用户栈以及核心栈组成。进程是程序的一次动态执行过程,它也是系统资源分配的基本单位,它能和其他进程并发执行。
线程与进程的主要区别:进程是资源管理的基本单位,线程只是处理机调度的基本单位。进程进行处理机切换和调度时间较长,而线程进行处理机切换和调度时间较短,不发生资源的变化。线程和进程一样,都有自己的状态,也有相应的同步机制,不过由于线程没有单独的数据和程序空间,因此线程没有挂起状态。进程的调度、同步机制大多数由操作系统内核完成,而线程的控制既可以由操作系统内核进行,也可以由用户控制进行。
4.针对如下的多线程Web Server代码,图式说明进程和线程的结构关系。
5.两种主要的线程实现技术比较:1)在用户空间;2)在内核中。
解:在用户空间:
(1)由应用程序完成所有线程的管理
(2)核心不知道线程的存在,当线程调用系统调用时,整个进程阻塞
(3)线程切换不需要核心态特权
(4)调度是针对应用的,是特定的
(5)核心只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上在内核中:
(1)所有线程管理由核心完成
(2)没有线程库,但对核心线程工具提供API
(3)核心维护进程和线程的上下文
(4)线程之间的切换需要核心支持
(5)以线程为基础进行调度
(6)阻塞是在线程一级完成
(7)对多处理器,核心可以同时调度同一进程的多个线程
(8)在同一进程内的线程切换调用内核,导致速度下降
6.概念理解:竞争条件(Race conditions)、互斥(Mutual exclusion)、临界区
(critical regions)
答:1)竞争条件(Race conditions):两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,称为竞争条件
2)互斥(Mutual exclusion):以某种手段确保当一个进程在使用一个共享变量或文件时,其他进程不能做同样的操作。
3)临界区(critical regions):对共享内存进行访问的程序片段
7.基于信号量(semaphore)的生产者-消费者问题解决算法。
解:#define N 100 /*缓冲区中的槽数*/
Typedef int semaphore; /*信号量是一种特殊的整型数据*/
Semaphore mutex = 1; /*控制对临界区的访问*/
Semaphore empty = N; /*计数缓冲区的空槽数*/
Semaphore full = 0; /*计数缓冲区的满槽数*/
V oid producer(void)
{
Int item;
While(true){ /*true是常量1*/
Item = produce_item(); /*产生放在缓冲区的数据*/
Down(&empty); /*将空槽数目减1*/
Down(&mutex); /*进入临界区*/
Insert_item(item); /*将新的数据项放到缓冲区中*/
Up(mutex); /*离开临界区*/
Up(&full); /*将满槽的数目加1*/
}
V oid consumer(void)
{
Int item;
While(ture){
Down(&full)
Down(&mutex);
Item = remove_item();
Up(&mutex);
Up(&empty);
Consume_item(item);
}
}
8.基于线程、互斥锁(mutex)和条件变量(condition variables)的生产者-消费
者问题解决算法。
9.基于管程(Monitor)的生产者-消费者问题解决算法。
解:monitor ProducerConsumer
condition full,empty;
integer count;
Procedure insert(item:integer)
Begin
If count = N then wait(full);
Insert_item(item);
Count :=count +1;
If count =1 then signal(empty);
End
Function remove:integer;