操作系统试题(绝密)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档