诚毅学院操作系统期末复习(2014-2015)答案

更新时间:2023-12-26 05:33:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2014-2015学年第一学期操作系统思考题

第一章 操作系统概论

1、 在计算机系统中,操作系统有哪两个重要作用?

a) 管理系统中的各种资源 b) 为用户提供友好的界面

2、 根据操作系统的地位和作用,请给出操作系统的非形式化的定义。

操作系统是位于硬件层之上,所有其他系统软件层之下的一个系统软件,使得管理系统中的各种软件和硬件资源得以充分利用,方便用户使用计算机系统。

3、 操作系统引入的目标是什么?

为了方便而有效地使用硬件

4、 什么叫做“假脱机”?

作业由读卡机到磁带机的传输、结果由磁带机到打印机的传输,由通道完成,这种非联机、也非脱机的方式。

5、 操作系统有哪四个特征?其中哪两个是基本特征?

a) 并发性、共享性、异步性(不确定性)、虚拟性 b) 基本特征:并发性、共享性

6、 程序的并发性具体体现在哪三个方面?----程序与操作系统两两并发执行

用户程序与用户程序之间并发执行 用户程序与操作系统之间并发执行 操作系统与操作系统之间并发执行

7、 程序并发和并行有什么区别?--并行微观多程序同时推进(绝对),并发宏观上多程序推进

程序并行要求微观上的同时,即在绝对的同一时刻有多个程序同时向前推进;而程序的并发并不要求微观上的同时,只需从宏观上看多个程序都在向前推进。

8、 何谓资源共享性?

指操作系统与多个用户程序共有系统中的各种资源,这种共享是在操作系统的控制下实现的。

9、 在计算机系统中,为什么会呈现出程序运行的异步性?

a) 程序执行的结果的不确定性:同一程序,相同的输入、在相同的环境下,可能产生

不同的结果

b) 执行时间的不确定性:多道程序执行是以异步方式进行,什么时候、什么顺序、所

需时间均不确定 10、 何谓虚拟?操作系统如何体现其虚拟性?

a) 虚拟是指把一个物理上的实体变成若干个逻辑上的对应物

b) 通过分时使用,在一个CPU上同时执行多道程序;多道程序同时使用一台打印机

等 11、 操作系统应具备哪些基本功能?

处理机管理、存储器管理、设备管理、文件管理和作业管理 12、 为什么说操作系统是中断驱动的?

因为每当应用程序执行各种内部和外部事件时,都要通过中断机制产生中断信号并启动内核工作,可以说操作系统是“中断驱动”的。 13、 中断与程序并发之间有什么关系?操作系统何时获得控制权?

a) 中断是程序并发的必要条件。如果没有中断,操作系统不能获得系统控制权,无法

按调度算法对处理机进行重新分配,一个程序将一直运行到结束而不会被打断。 b) 发生中断后获得控制权 14、 系统栈有哪些作用?根据用途说明堆与栈的差别。

a) 保存中断现场

b) 保存操作系统子程序间相互调用的参数、返回值、返回点、局部变量

差别:栈是一块按后进先出规则访问的存储区域,用来实现中断嵌套和子程序嵌套(保存调用参数和返回断点)。堆虽然是一块存储区域,但是对堆的访问是任意的,没有后进先出的要求,堆主要用来为动态变量分配存储空间。 15、 在操作系统中把处理机划分成哪两个状态?它们分别可以执行哪类指令?两个状态如

何转换?

a) 管态、目态

b) 管态:可以执行硬件所提供的全部指令,包括特权指令和非特权指令 c) 目态:只能执行非特权指令

d) 处理机由目态转换为管态的唯一途径是中断

e) 管态到目态的转换可以通过修改程序状态字(置PSW)来实现;标志位置1 16、 操作系统提供给用户程序什么接口?

作业级接口、程序接口

第二章 进程、线程和作业

1、 为什么要引入多道程序设计?

引入多道程序设计技术是为了提高计算机系统资源的利用率

2、 引入多道程序设计需要解决哪三个问题?

处理器资源管理问题、内存资源管理问题、设备资源管理问题

3、 什么叫进程?

进程是具有一定独立功能的程序关于一个数据集合的一次运行活动

4、 进程有哪三个基本状态?并说明这三个基本状态是何时转换的?

a) 运行态、就绪态、等待态 b) 就绪?运行:获得处理机

运行?就绪:剥夺处理机

运行?等待:申请资源未得到,启动IO 等待?就绪:得到资源,IO中断 P28

5、 什么是PCB?

进程控制块(process control block)

进程控制块是标识进程存在的数据结构,其中包含系统管理进程所需要的全部信息

6、 一个进程由哪两部分组成?

进程控制块和程序,其中程序包括代码和数据等

7、 什么叫做进程映像?

进程的程序(代码和数据)被称为进程映像

8、 什么叫做系统开销?

一般是指运行操作系统程序、对系统进行管理所花费的时间和空间

9、 从操作系统角度,可以把进程划分成哪两类?

系统进程和用户进程

10、 什么叫做守护进程?

属于操作系统的一部分,它们运行操作系统程序,完成操作系统的某些功能

11、 进程具有哪些特征?

a) 并发性:可以与其它进程一道向前推进;

b) 动态性:动态产生、消亡,生存期内状态动态变化; c) 独立性:一个进程是可以调度的基本单位; d) 交往性:同时运行的进程可能发生相互作用;

e) 异步性:进程以各自独立,不可预知的速度向前推进; f) 结构性:每个进程有一个PCB

12、 下面程序运行过程中,操作系统共创建几个进程:(实验一)

main(){ fork(); fork(); fork(); } 8个进程

13、 进程和程序有什么联系?进程和程序有哪些差异?

程序是构成进程的组成部分之一,一个进程存在的目的就是执行其所对应的程序。如果

没有程序,进程就失去了其存在的意义。 差别:

a) 程序是静态的,进程是动态的

b) 程序可以长期保存,进程具有生命周期,创建后存在,撤销后消亡。 c) 一个程序可对应多个进程,一个进程只能执行一个程序

14、 什么是线程?为什么要引入线程?

进程内一个相对独立的执行流称为线程。

因为当处理器由一个进程切换到另一个进程时,整个上下文都要发生变化,系统开销较大,显得笨重,相关进程间的耦合度差。

15、 用图形表示进程与线程的区别。

进程是资源分配单位

线程是执行单位,是CPU的调度单位

16、 从实现角度看,有哪两类基本线程?

用户级别线程。核心级别线程

17、 从下面四个方面阐述用户级别线程和核心级别线程的差别、优缺点:

(1)创建速度 (2)切换速度 (3)并行性 (4)TCB存储位置

18、 用户级别线程在处理机什么状态实现的?核心级别线程在处理机什么状态下实现

的?

用户线程---目态 核心线程---操作系统

19、 什么叫做作业?

用户要求计算机系统为其完成的计算任务的集合称为作业

20、 分析作业、进程、线程三者的关系。

一个作业被调入内存执行时可能要为其创建多个进程,进程是资源分配的基本单位,一个进程可能对应若干个线程,线程是处理器调度的基本单位。

21、 请解析命令“ls -il”给出的信息。(实验一)

i节点 、文件类型、属主权限、组权限、其他权限

22、 在Linux系统中,如何区分普通文件、目录文件、块设备文件、字符设备文件?

普通文件(-)、目录文件(d)、字符设备文件(c)、块设备文件(b)、连接文件(l);

23、 在Linux系统中,如何区分硬链接文件和符号链接文件?

硬连接文件公用一个I节点,符号链接文件不公用

24、 熟练掌握用命令“chmod”修改各组用户对文件的操作权限。(实验一)

25、 掌握命令“ps -ax”查看Linux进程,解析该命令给出的信息,以及终止进程的操作。 26、 掌握用命令“gcc”编译链接一个程序。(实验一) 27、 请说明管道操作“|”、输入重定向“<”、输出重定向“>”和“>>”的区别和用法。 |:从一个命令中读取输出并将其写入另一个命令的输入中 <:从文件中而不是从键盘中读入命令输入

>:将命令输出写入到文件或设备(例如打印机)中,而不是写在命令提示符窗口中 >>:将命令输出添加到文件末尾而不删除文件中的信息

28、 请说明在shell中使用单引号、双引号、反撇号的用法。

单引号:由单引号括起来的字符都作为普通字符出现

双引号:由双引号括起来的字符,除$、/、’、和”这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待

反撇号:反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分

第三章 中断与处理机调度

1、 什么叫做中断?

在程序运行过程中出现某些紧急事件,必须中止当前正在运行的程序,转去处理此事件,然后再恢复原来运行的程序,这个过程称为中断。

2、 中断装置发现并响应中断有哪些基本步骤?

a) 识别中断源 b) 保存现场

c) 引出中断处理程序

3、 中断可以分为哪两大类?请举例说明。

强迫性中断:这类中断事件是正在运行的程序所不期望的。 特点:是否发生、什么时候发生事先无法知道。

自愿性中断:这类中断事件是程序中有意识安排的,执行访管指令引起的。 特点:什么时候发生、发生的位置事先知道。 目的:要求系统提供服务。

4、 什么叫做中断向量?

中断处理程序的运行环境(PSW)与入口地址(PC)

5、 为什么说中断向量的位置是由硬件决定的、其内容是系统初始化时确定的?

6、 什么叫做中断续元?用户栈和系统栈各自有什么用途?

中断续元:用户自编的中断处理程序

用户栈:保存函数之间相互调用的参数、返回断点、局部变量、返回值。

系统栈:保存函数之间相互调用的参数、返回断点、局部变量、返回值;保存中断现场(PSW和PC)。

7、 根据程序错误中断的性质,有哪两种处理策略?可以哪些类型的程序性错误中断,中

断续元会起作用?

两种策略:只能由系统处理的中断、可以由用户处理的中断 8、 处理机调度需要解决哪三个问题?

按照什么原则分配处理器、什么时候分配处理器、如何分配处理器

9、 什么叫做CPU阵发期?

进程对处理器的一次连续使用称为CPU阵发期 10、 什么叫做周转时间?什么叫做(平均)带权周转时间?

周转时间:作业等待时间与处理时间之和

平均带权周转时间:所有作业的带权周转时间与作业道数的比值 11、 什么叫做响应时间?

从提交第一个请求到产生第一个响应所用时间 12、 掌握FCFS、SJF、SRTN、HRN、HPF、RR调度算法,以及调度指标的计算。

13、 什么叫做剥夺式调度?什么叫做非剥夺式调度?

a) 剥夺式:就绪进程可以从运行进程手中抢占CPU b) 非剥夺式:就绪进程不可以从运行进程手中抢占CPU 14、 反馈排队调度算法有哪些特点?

1) 短进程优先处理 2) 设备资源利用率高 3) 系统开销小 15、 什么叫做“交换”?交换的目标是什么?

1) 交换是进程在内存和外存储器之间的调度

2) 目标:缓解内存空间等资源紧张的矛盾、减少并发度以降低系统开销。 3) 主要目标:控制并发度 16、 为什么要实施中级调度?

引入中级调度的主要目的是为了提高内存利用率和系统吞吐量。将内存中的某些进程暂时交换到外存储器,待以后系统并发度较低时再调回内存。

17、 什么是低级调度、中级调度、高级调度?各自的职能是什么?

1) 低级调度:负责分派处理器的调度,也称处理器调度;职能:使被选中的进程真正

进入运行状态。

2) 中级调度:介于低级调度与高级调度之间的调度;职能:负责进程在内存和外存之

间进行交换,以缓解内存资源紧张的矛盾。

3) 高级调度:又称作业调度;职能:负责将作业由输入井调入内存,并为其创建作业

控制进程。 18、 什么是实时调度?按发生的规律分,有哪两类实时任务?

1) 实时调度:满足实时任务各自时间约束条件的调度 2) 分类:随机性实时任务、周期性实时任务 19、 掌握EDF和RMS两个实时调度算法?

P74 20、 完成P79-80题31、32、35。

第四章 互斥、同步与通信

1、 程序顺序执行有哪些特性?

连续性、封闭性、可再现性

2、 程序并发执行有哪些特性?

间断性、非封闭性、不可再现性

3、 什么是Bernstein(伯恩斯坦)条件?并加以说明。

程序p1和p2满足下面条件,则能够保持可再现,因而可以并发执行 R(p1)W(p2)R(p2)W(p1)W(p1)W(p2)??例如: S1: a=x-y; S2: b=z+1; S3: v=a+b; S4: w=v+1;

请问S1和S2是否可并发执行?S3和S4是否可以并发执行?S2和S3是否可以并发执行?

4、 什么叫做与时间有关的错误?有时间有关的错误产生的原因是什么?

与时间有关的错误:由于具体交叉的形成与进程的推进速度有关,而速度是时间的函数,因而将这种错误称为与时间有关的错误。

原因:进程执行交叉、涉及公共变量

5、 什么叫做临界区?什么叫做临界资源?

临界区:访问共享变量的程序段

临界资源:一次只允许一个进程使用的资源

6、 什么叫做进程互斥?请写出进程互斥的基本框架。

进程互斥:多个进程不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误 基本框架: do { entry section //进入控制部分 临界区 exit section //退出控制部分 其余代码 } while (1);

7、 实现进程互斥,临界区管理应该满足哪三个正确性原则?

互斥性、进展性、有限等待性

8、 请分析Dekker互斥算法、Peterson互斥算法、Lamport面包店算法各自的互斥性、

进展性和有限等待性。 P89

9、 什么叫做忙式等待?其与阻塞式等待有哪些区别?

忙式等待:不进入等待状态的等待 区别:阻塞式等待---主动放弃CPU;

忙式等待---不主动放弃CPU,尽管CPU可能被剥夺;

10、 什么叫做原子指令?

该指令在执行时是不可分割的

11、 请写出“测试与设置”原子指令?并给出利用“测试与设置”指令实现互斥的算法。 int test_and_set(int *target){ int temp; temp=*target; *target=1; return(temp); }

互斥算法: int lock;

do{

while test_and_set(&lock) skip;

临界区

lock=0;

}while(1);

12、 请写出“交换”的原子指令?给出利用“交换”指令实现互斥的算法。

void swap(int *a,int *b){ int temp; temp=*a;

*a=*b; *b=temp;

}

互斥算法:

int lock=0(初始=false); int key; do{

key=1; do {

swap(&lock,&key); } while(key==1); 临界区 lock=0; }while(1);

13、 什么叫做进程同步?

一组进程,为了协调其推进速度,在某些点处需要相互等待或者唤醒,进程之间这种相互制约的关系称为进程同步。

14、 请给出信号量类型的定义。

“信号量”是一个具有非负初值的整型变量,并且有一个队列与它关联。

15、 信号量变量的初值有什么要求?

初值必须是非负整数

同步的信号量初值一般为0 互斥的信号量初值一般为1

16、 什么叫做原语?

一段不可间断执行的程序称为原语

17、 分别写出对信号量进行P操作和V操作的操作原语。

P操作原语:

void P(semaphore *s){ s->value--; If(s->value<0)

asleep(s->queue); }

V操作原语:

void V(semaphore *s){

s->value++; If(s->value<=0) wakeup(s->queue); }

18、 请给出信号量元素s.value与s.queue之间的关系。

19、 说出初值分别是0、1、n(>1的值)时信号量的作用。

0为同步 1为互斥

N为子资源个数

20、 某图书馆阅览室有50个座位。进入阅览室的读者需要在登记簿上登记,登记后,如

果有空座位,安排到对应位置上;如果没有空座位,要求在入口等待。当读者离开阅览室时,进行注销登记。此时,如果有读者等待,唤醒等待读者进行阅览室。使用信号量、PV操作实现对阅览室进行管理。 【参考答案】 公共变量:

enum seat[50];(free,used) semaphore S;(50) semaphore mutex;(1)

进入登记控制: int Enter(){ int i; P(S); P(mutex);

for(i=0;i<50;i++)

if(seat[i]==free) break; seat[i]=used; V(mutex); return i; }

离开注销登记控制: void Leave(int j){ P(mutex); seat[j]=free; V(mutex); V(S); }

每个读者的活动: void Reader(){ int k; k=enter(); 阅读; Leave(k); }

21、 某公共汽车上司机、售票员、乘客的活动如下:

司机活动: 售票员活动: Driver () { Conductor () { do{ do { 启动车辆; 关车门; 正常行车; 售票; 到站停车; 开车门; } while (1); } while (1); } } 乘客活动: Customer () { 乘客上车; 乘坐; 乘客下车; }; 为安全起见,要求:

(1) 必须乘客全部上车,才能关闭车门;假设车门只允许一个乘客通过,且有自动

判别第一个下车乘客和最后一个上车乘客的装置,且遵守先下、后上原则;

(2) 关闭车门,才能启动汽车; (3) 车辆到站停稳,才能打开车门。

初始时,车辆停靠在站点上,车门是打开着。

请用信号量与PV操作实现对司机、售票员和乘客之间的同步。 【参考答案】

semaphore dc1,dc2;(0,0) semaphore cc1,cc2;(1,0) semaphore metux;(1); 乘客活动: 司机活动: 售票员活动: Customer(){ Driver(){ Conductor(){ P(mutex); do{ do{ if(最后一个上车乘客?)V(cc2); P(dc1); P(cc2); 乘客上车; 启动车辆; 关车门; V(mutex); V(dc1) 正常行车; 乘坐; 到站停车; 售票; P(mutex); V(dc2); P(dc2); 乘客下车; }while(1); 开车门; if(是第一个下车乘客?) P(cc1);

22、 在Linux操作系统中,sem_wait(sem_t *s) 和sem_post(sem_t *s)分别表示对信号量

的什么操作?

sem_wait(sem_t *s):P操作 sem_post(sem_t *s):V操作

23、 假设有两个进程,P1和P2,其中P1有一个活动act1、P2有一个活动act2;要求

act1执行完成后才能执行act2,用信号量“semaphore S;”实现对两个活动进行控制。请给出其实现的一般规则。

24、 P1和P2为两个同步进程. 要求P2完成动作B后P1才能执行动作A. 请根据要求

填写S的初值、P操作和V操作。 semaphore S; (initial value_(1)_) P1:_(2)_动作AP2:动作B_(3)_

25、 请完成下面生产者-消费者程序。

itemtype B[n];//shared variables(n个空箱子)

semaphore S1,S2,mutex; (初值: S1.value=___; S2.value=_____; mutex.value=____) int in,out;//shared variables void producer( ){ while(1){

produceitem(&item); ________ P(mutex); B[in]:= item; in:=(in+1) % k; _________ V(S2); } }

void consumer( ){ while(1){ P(s2); P(mutex); x:=B[out];

out:=(out+1) % k; V(mutex); ________ consume x; } }

26、 请完成如下R-W问题的改进算法。

semaphore r_w_w= ,mutex= ,s= ; int count=0; void Reader() { do{ P(S); P(mutex); count++;

if( ) P(r_w_w); V(mutex) V(s); {读操作} P(mutex); count--;

If(count==0) V(r_w_w); }while(1); }

void Writer() { do{

P(s);

; {写操作}; P(r_w_w);

V(s); }while(1); }

参考P144题25)

27、 什么叫管程(Monitor ,Hansen管程)? 一个管程由哪几部分组成?

管程是一种高级同步机制,一个管程定义一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改善管程中的数据.。

一个管程由四个部分组成,它们是管程名称、局部与管程的共享数据的说明、对数据进行操作的一组过程和对该共享数据赋初值的语句。

28、 请用管程写出Scan和C-scan的磁头调度算法。

29、 请给出在Linux系统中采用共享内存进行进程间通信的一般步骤。(实验二)

第五章 死锁与饥饿

1、 什么叫死锁?在操作系统中,发生死锁有哪些特征?

在多道程序系统中,一组进程中的每一个进程均无限期的等待另一组进程所占有的且不会释放的资源,这种现象称为死锁

参加死锁的进程的数目至少为2,参与死锁的所有进程均等待资源,参与死锁的进程至少有2个占有资源,参与死锁的进程是系统中当前正在运行的进程集合的一个子集。 2、 有哪些类型的死锁?

竞争资源引起的死锁、进程通信引起的死锁、其他原因引起的死锁

3、 从资源分配过程的角度,说明死锁与饥饿的区别?

死锁进程处于等待状态,饥饿处于忙式等待; 死锁等待不会释放的资源,饥饿分配不到资源; 死锁循环等待,饥饿没有循环等待;

4、 参与死锁进程的个数至少几个?如果产生饥饿,发生饥饿的进程至少几个?

至少2个;1个

5、 请给出发生死锁的必要条件(Coffman条件)并加以解析。

资源独占(mutual exclusion) 不可抢占(non preemption) 保持申请(hold-while-applying) 循环等待(circular wait)

6、 有三种死锁的处理方式?

死锁预防---静态的 死锁避免---动态的 死锁检测与恢复

7、 熟悉资源分配图的绘制,以及资源分配图的约简。

8、 死锁预防有哪两种基本策略?

预先分配策略、有序分配策略

9、 请阐述预先分配法。它破坏发生死锁什么条件?

进程在运行前一次性地向系统申请它所需要的全部资源;破坏了保持申请。

10、 请阐述有序分配法。它破坏发生死锁什么条件?

事先将所有资源类完全排序;破坏了循环等待。

11、 如图所示,请给出采用有序分配法、用信号量和PV操作控制各个方向(W、E、

S方向)车辆进行临界区。

资源编号:F (D) =1; F (B) =2; F (A) =3; F(C) =4; Var S1, S2, S3, S4: semaphore; (1, 1, 1, 1)

12、 死锁避免中,什么叫做安全序列?

所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次地运行完毕,这种进程序列{P1,P2,…,Pn}就是安全序列。

13、 银行家算法:掌握p154例5-4、p170习题五第9题,及本章的作业。

14、 某系统有资源R={A,B,C}={10,5,7}和进程P={p0,p1,p2,p3,p4}。下面是该系统某进程

提出资源请求预分配后的两个状态,请分别用银行家算法检验是否为安全状态?

Claim Allocation Need Available Work Finish P0 P1 P2 P3 P4

A B C A B C A B C A B C A B C 7 5 3 0 1 0 7 4 3 3 3 2 3 2 2 2 0 0 1 2 2 9 0 2 3 0 2 6 0 0 2 2 2 2 1 1 0 1 1 4 3 3 0 0 2 4 3 1

(状态a)

Claim Allocation Need Available Work Finish P0 P1 P2 P3 P4

A B C A B C A B C A B C A B C 7 5 3 0 3 0 7 2 3 1 1 2 3 2 2 2 0 0 1 2 2 9 0 2 5 0 2 4 0 0 2 2 2 2 0 1 0 2 1 4 3 3 0 1 2 4 2 1

(状态b)

15、 在上述(13题)系统处于状态a下,进程P0提出Request(0)={3,2,0},请用银行家

死锁避免算法进行检测,是否可以分配?为什么?

16、 在上述(13题)系统处于状态a下,进程P0提出Request(0)={3,3,0},请用银行家

死锁避免算法进行检测,是否可以分配?为什么?

17、 死锁检测算法:p156例5-6,习题五第10题。

18、 有一系统拥有资源R={A,B,C}={7,3,6},现有进行P={p0,p1,p2,p3,p4}。当前的状态

如下所示。请用死锁检测算法检测系统当前是否发生死锁,如果发生死锁,有哪些进程参与死锁? Allocation Request Available Work Finish A B C A B C A B C A B C p0: 0 1 0 0 0 0 0 1 0 p1: 2 0 0 2 0 2 p2: 3 0 3 0 0 0 p3: 2 1 1 1 0 0 p4: 0 0 2 0 0 2

19、 同类组合资源死锁的必要条件:p165例5-8。

20、 死锁与饥饿有何相同点和不同点?

相同点:二者都是由于竞争资源而引起的。

不同点:

1) 从进程状态考虑,死锁进程都处于等待状态,忙等待(处于运行或就绪状态)的进程

并非处于等待状态,但却可能被饿死; 2) 死锁进程等待永远不会被释放的资源,饿死进程等待会被释放但却不会分配给自己

的资源,表现为等待时限没有上界(排队等待或忙式等待); 3) 死锁一定发生了循环等待,而饿死则不然。这也表明通过资源分配图可以检测死锁

存在与否,但却不能检测是否有进程饿死;

4) 死锁一定涉及多个进程,而饥饿或被饿死的进程可能只有一个。 5) 在饥饿的情形下,系统中有至少一个进程能正常运行,只是饥饿进程得不到执行机

会。而死锁则可能会最终使整个系统陷入死锁并崩溃。 1、 静态等长分区是在什么时候划分的?大小有什么要求?空闲内存有哪些管理方式?

划分时间:在系统初始化时划分的。 大小要求:每个区域长2iB

管理方式:字位映象图、空闲页面表、空闲页面链

2、 动态异长分区是什么时候划分的?其空闲区域表有什么特点?

划分时间:申请时划分

大小要求:依程序、程序单位、对象大小 特点:

3、 掌握动态异长分区分配的四种算法:最先适应算法、循环首次适应算法、最佳适应算

法和最坏适应算法。 P177

4、 动态异长分区去配是应该考虑哪四种情况?

Case 1: 前面区域空闲, 和前面区域合并; Case 2: 后面区域空闲, 和后面区域合并; Case 3: 前后均空闲, 和前后区域合并; Case 4: 前后区域均被进程占用, 直接释放

第六章 存储管理

PPT31

5、 在动态异长分区管理中,为什么要进行“紧凑”操作?

因为在动态异长分区存储分配可能形成很小的空闲区域,称为碎片,如果碎片很多,将会造成严重的存储资源浪费,因此要进行紧凑操作,移动所有的占有区域,以使所有的空闲区域连成一片。

6、 在界地址管理方式中,覆盖技术和交换技术要解决什么问题?它们有什么不同?

覆盖和交换技术都是为了解决存储管理中内存太小问题。 区别:

覆盖技术主要用于同一作业或进程,在彼此无关的不同覆盖段进行;而交换主要在进程或作业间进行。

交换是以进程为基本单位的交换。

覆盖是以进程的互不相关的局部为单位进行的交换。

7、 页表有什么作用?页表是什么时候创建的?应该包括哪些内容?

作业:用于记录进程的逻辑页面与内存页框之间的对应关系 创建时间:

包括:逻辑页号、页框号

8、 操作系统采用分页式存储管理方式,每个进程一个页表还是整个系统共享一个页表?

一个进程一个页表

9、 请分别给出页式存储管理、段式存储管理、段页式存储管理其进程的逻辑地址形式。

它们的进程地址空间分别是几维的? 页式存储管理:

一维地址

段式存储管理:

段页式存储管理:

二维地址

10、 假设操作采用页式存储管理方式,某进程的页表如下:

页面号 0 1 2 3

页架号 15 22 16 32

假设内存物理地址和进程逻辑地址均为16位的地址空间,每页的大小为1KB。请把逻辑地址为0A22H、0D75H、1E56H映射成对应的物理地址。

11、 如果没有快表,采用分别页式存储管理、段式存储管理、段页式存储管理三种方

式,其分别需要访问几次内存? 页式存储管理:要访问两次内存。第一次用来查找页表,将逻辑地址变换为物理地址;第二次完成真正的读写操作。

段式存储管理:要访问两次内存。第一次用来查找段表,将逻辑地址变换为物理地址;第二次完成真正的读写操作。

段页式存储管理:需要访问三次内存。

12、 操作系统采用分页式存储管理方式,要求_A_。

A)每个进程拥有一张页表,且进程的页表驻留在内存中; B)每个进程拥有一张页表,但只要执行进程的页表驻留在内存中,其他进程的页表不必驻留在内存中;

C)所有进程共享一张页表,以节约有限的内存空间,但页表必须驻留在内存中; D)所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中,以最大限度节约有限的内存空间;

13、 为何段式管理有段内越界,而页式管理无页内越界问题?

页式管理的划分是由操作系统完成的,每个地址由系统自动划分为页号和页内地址两部分,因此无页内越界问题。而段式管理的划分是由编译程序完成的,逻辑地址由段号和段内偏移量组成,因此,存在段内越界问题。

14、 为什么分段技术比分页技术更容易实现程序或数据的共享和保护?

1) 每一段在逻辑上是相对完整的一组信息,分段技术中共享信息是在段一级出现的。

因此,任何共享的信息可以单独作一个段; 2) 而页式信息的物理单位,在一个页面中可能存在逻辑上互相独立的两组或更多组信

息都各不相同的使用方式和存取权限。

15、 在段页式存储管理系统中,每个进程页表的个数由什么决定的?

一个进程有几个段就有几个页表

16、 试比较段式存储管理和页式存储管理的优缺点。

页式存储管理的优缺点:

1) 静态等长存储分配简单,有效地解决了内存碎片问题 2) 共享和保护不够方便 段式存储管理的优缺点:

1) 动态异长存储分配负责,存在碎片问题 2) 共享和保护方便

3) 可以实现动态连接和动态扩展

17、 设有一个段表如下: 段首址 90 219 1327 1952 2300 段长 100 600 580 96 80 分别给出逻辑地址(2,88)和(4,100)对应的物理地址。

18、 在内存管理模式中,内存利用率最高的是_______模式;动态扩充实现得最好的是

_______模式;内存利用率最高和共享容易的是_____模式。 A)分区管理 B)分页管理 C)分段管理 D)段页式管理

19、 熟悉如下页面淘汰算法:最佳淘汰算法、FIFO淘汰算法、LRU淘汰算法、NUR

淘汰算法。

20、 什么是 Belady异常?采用什么页面淘汰算法会产生Belady异常现象?

P202,采用先进先出算法

21、 考虑如下一个页面处理顺序,当内存的页面数为3时,分别计算各页面淘汰算法

的缺页次数。设内存初始时为空,每页装入都是请求式。 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6

始工作

2) 由制定单元取出通道程序的起始地址,送入CAW中?通道执行各条通道指令

13、 假设当前磁头的位置是53号磁道且磁头向下(小磁道号)移动,接下来要访问的

磁道序列是:130,42,180,15,108,68,97。请分别用FCFS、SSTF、SCAN、LOOK、C-SCAN、C-LOOK调度方式,给出磁头移动过程访问的磁道序列,并分别计算其磁头移动量。

14、 假设当前磁头处在45号磁道且向0号磁道移动,磁盘总磁道数为200,当其完成当

前磁道的I/O请求后,已经到达要求访问的磁道序列是: 179,134,32,41,160,122,184,151

请分别用FCFS、SSTF、SCAN、LOOK、C-SCAN、C-LOOK、N-SCAN、N-LOOK磁头调度算法,请分别给出磁头访问磁道的序列和总移动的磁道数。

15、 下面是采用Hansen管程实现SCAN算法,请把它修改成C-SCAN调度算法。

Type diskhead=MONITOR Var busy:boolean; headpos:0..199; direction:(up,down);

cylinder:Array[0..199] Of condition; count:Array[0..199] Of integer;

Define require, release;

Procedure require(dest:0..199); Begin

If busy Then Begin

count[dest]:=count[dest]+1; wait(cylinder[dest]) End busy:=true;

If dest

Else If dest>headpos Then direction:=up;

headpos:=dest End;

Procedure upscan; Var I:0..200; Begin

I:=headpos; C-LOOK插入一段: While (I<=199)and(count[I]=0) Do Else I:=I+1; Begin If I<=199 Then I=headpos; Begin direction=down; count[I]:=count[I]-1; end signal(cylinder[I]) End C-SCAN算法: End;

headpos=0; Procedure downscan; direction=up; Var I:-1..199; if count[0]>0 then Begin

begin I:=headpos; count[0]=count[0]-1; While (I>=0)and(count[I]=0) Do signal(cylinder[0]); I:=I-1; end If I>=0 Then Begin

count[I]:=count[I]-1; C-LOOK算法: Var I:-1..199; signal(cylinder[I])

K: integer; End

Begin End;

I=headpos; Procedure release;

While(I>=0) Do Begin

Begin busy:=false;

If count[I]>0 then If direction=up Then

K=I; Begin

I=I-1; upscan; downscan

End End

If K<>headpos then Else

Begin Begin

direction=up; downscan; upscan

count[K]=count[K]-1; End

signal(cylinder[K]); End;

end Procedure initialize;

Var I: 0..199; Begin

busy:=false; headpos:=0; direction:=up;

For I:=0 To 199 Do count[I]:=0; End

Begin initialize End;

16、 在磁盘的输入输出中,读写一个磁盘块由哪些时间组成?磁头优化调度主要减少那

部分时间?

寻道时间、旋转延迟、传输时间 减少寻道时间

17、 为什么要引入缓冲?软缓冲区设在内存什么区域?

为了缓解处理器与设备之间速度不匹配的矛盾,从而提高资源利用率和系统效率 软缓冲区通常设在内存系统空间中

18、 在系统缓冲池管理中,请给出用信号量和PV操作实现缓冲区申请和释放的过程。 1. 申请 2. 释放 (1) P(buf_num) (1) P(mutex)

(2) P(mutex) (2) 空缓冲区入链头 (3) 取链头空缓冲区 (3) V(mutex) (4) V(mutex) (4) V(buf_num)

19、 P276图8-19给出输入型设备缓冲实现算法。请问:

(1) 进程方面的算法中,处于等待状态的进程如何被唤醒?

(2) 中断程序何时执行?

20、 何谓RAID技术?

RAID:独立磁盘冗余阵列,是一个物理磁盘的集合,作为一个逻辑磁盘被管理和使用

21、 请用图形表示RAID0、RAID 1、RAID 5数据在各个磁盘的存放规则。

RAID0:

RAID1:

RAID5:

22、 SPOOLing系统有哪两部分组成?

假脱机输入和假脱机输出

23、 引入SPOOLing系统的目的是什么?

为了提高I/O设备的使用效率

24、 SPOOLing输入系统的硬件和软件有哪几部分组成?各自有什么作用?

硬件:输入机、通道、磁盘等

软件:假脱机输入程序、输入井管理程序等

25、 SPOOLing输出系统的硬件和软件有哪几部分组成?各自有什么作用?

硬件:通道、输出机、磁盘等

软件:假脱机输出程序、输出井管理程序

26、 下列有关SPOOLing系统的论述中,第 8 和第 9 条是正确的论述。 (1) 构成SPOOLing系统的基本条件,是具有外围输入机与外围输出机。 (2) 构成SPOOLing系统的基本条件,是只要具有大容量、高速硬盘作为输入井与输出井。

(3) 只要操作系统中采用了多道程序设计技术,就可以构成SPOOLing系统。 (4) SPOOLing系统是建立在分时系统中。 (5) SPOOLing系统是虚拟存储技术的体现。

(6) SPOOLing系统是在用户程序要读取数据时起动输入进程输入数据。

(7) 当输出设备忙时,SPOOLing系统中的用户程序暂停执行,待I/O 空闲时再被唤醒,去执行输出操作。

(8) SPOOLing系统实现了对I/O设备的虚拟,只要输入设备空闲,SPOOLing可预先将输入数据从设备传输到输入井中供用户程序随时读取。

(9) 在SPOOLing系统中,用户程序可以随时将输出数据送到输出井中,待输出设备空闲时再执行数据输出操作。

27、 磁盘属于 块 设备,信息存取是以 固定长度数据块 为单位进行的,磁盘的I/O控制主要采用 DMA 方式;打印机主要采用 程序中断 方式。

A: (1)字符设备;(2)独占设备;(3)块设备;(4)虚拟设备; B: (1)位;(2)字节;(3)帧;(4)固定长度数据块; C,D: (1) 循环测试;(2)程序中断;(3)DMA;(4)SPOOLing;

28、 在具有通道处理机的系统中,用户进行请求启动外设时,由 操作系统 根据

I/O请求构造通道程序以及通道状态字,并将通道程序保存在 内存 中,然后执行启动I/O命令。 A: (1) 用户程序;(2)应用程序;(3)通道;(4)操作系统; B: (1)内存;(2)硬盘;(3)通道;(4)外部设备;

29、 磁盘移动调度算法中, SSTF 的主要缺陷是具有高度局部化倾向,会推迟某些请求的服务,甚至引起饥饿。

A: (1)FCFS (2)SSTF (3)SCAN (4) C_SCAN 30、 在设备管理中,虚拟设备的引入和实现是为了充分利用设备,提高系统效率,采用 2 来模拟低速设备(输入机和打印机)的工作。

(1)SPOOLing技术,利用磁带; (2) SPOOLing技术,利用磁盘;

(3) 脱机批处理2系统; (4) 移动磁臂和旋转调度技术,利用磁盘;

31、 不通过CPU进行主存与I/O设备间大量的信息交换,可以是 DMA 方式。

(1) DMA (2) 中断 (3)查询等待 (4)程序控制

32、 什么叫做稳定存储器?如何构造稳定存储器?

不丢失信息的存储器称为稳定存储器。

并不存在绝对稳定可靠的存储介质,人们只能在诸如磁盘等相对稳定可靠的存储介质上利用多副本冗余技术来构造稳定存储器。通常的做法是:在两种失效独立的存储介质上构建稳定存储器。稳定存储器的稳定性取决于这两种存储介质同时发生错误的概率,当这个概率为0时,稳定存储器才是真正的稳定。

实验综合部分:

1、 在Linux系统中,如何创建自己的静态函数库?函数库有什么命名规则? 2、 在Linux系统中,把I/O设备看做什么文件?

3、 如何创建自己的共享函数库?共享函数库有什么命名规则?

4、 在gcc命令中,参数-l 和-L分别表示什么含义?假设在编译某程序fabc.c需要引用路

径:

/home/root/klib/libabcd.a

的静态函数库,并编译连接成可执行文件fabc,请给出完整的编译命令。 5、 在Linux系统中,如何实现硬链接?如何实现符号链接? 6、 用“ls -il”如何判断哪些文件采用硬链接在同一I节点上的? 7、 有如下一个shell程序:

cc –o$1 $1.c cp $1.c $2

./$1>>$2

请问其中的$1、$2什么含义?如果该shell程序名为by01.sh,则执行如下命令:

./by01.sh abc efg

则命令行参数abc和efg分别赋给那个变量?

8、 在一个shell程序中可以执行另一个shell程序,其执行方式有两种:

(1) . shell程序 (2) exec shell程序 请问两者有什么区别?

9、 假设有一字符设备驱动程序driver01.c。请给出其在Linux操作系统中安装的基本步

骤。

【参考答案】

(1) 把driver01.c用gcc编译成目标模块,假设为driver01.o; (2) 接着加载该目标模块:insmod –f driver01.o;假设其加载的主设备名为driver01. (3) 在/proc/devices文件中查看设备名为driver01对应的主设备号,假设为253; (4) 根据主设备号创建设备文件:mknod /dev/driver01 c 253 0;

这样可以在系统目录/dev中查找到driver01的设备,并可以在程序中使用该设备。

4、 在gcc命令中,参数-l 和-L分别表示什么含义?假设在编译某程序fabc.c需要引用路

径:

/home/root/klib/libabcd.a

的静态函数库,并编译连接成可执行文件fabc,请给出完整的编译命令。 5、 在Linux系统中,如何实现硬链接?如何实现符号链接? 6、 用“ls -il”如何判断哪些文件采用硬链接在同一I节点上的? 7、 有如下一个shell程序:

cc –o$1 $1.c cp $1.c $2

./$1>>$2

请问其中的$1、$2什么含义?如果该shell程序名为by01.sh,则执行如下命令:

./by01.sh abc efg

则命令行参数abc和efg分别赋给那个变量?

8、 在一个shell程序中可以执行另一个shell程序,其执行方式有两种:

(1) . shell程序 (2) exec shell程序 请问两者有什么区别?

9、 假设有一字符设备驱动程序driver01.c。请给出其在Linux操作系统中安装的基本步

骤。

【参考答案】

(1) 把driver01.c用gcc编译成目标模块,假设为driver01.o; (2) 接着加载该目标模块:insmod –f driver01.o;假设其加载的主设备名为driver01. (3) 在/proc/devices文件中查看设备名为driver01对应的主设备号,假设为253; (4) 根据主设备号创建设备文件:mknod /dev/driver01 c 253 0;

这样可以在系统目录/dev中查找到driver01的设备,并可以在程序中使用该设备。

本文来源:https://www.bwwdw.com/article/mv9x.html

Top