1.,什么是计算机的操作系统?
计算机系统是由硬件和软件两部分组成的。操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。·
2.操作系统管理计算机系统的那些资源?
计算机系统中,可将资源分为四类:处理器,存储器,I/O设备及信息。相应的OS的主要功能也正是管理这四类资源。即:处理器管理,用于分配和控制处理器;存储器管理,主要负责内存的分配和回收;IO设备管理,负责IO设备的分配和操纵;文件管理,负责文件的存取,共享和保护。
3.为什么要引进分时系统?分时系统的主要特点是什么?
主要特点:多路性。允许一台主机上同时联接多台联机终端。
独立性。每个用户各占一个终端,彼此独立操作,互不干扰。
及时性。用户的请求能在很短的时间内获得响应。
交互性。用户可通过终端与系统进行广泛的人机对话。
4说明分时系统和多终端实时系统的差别。
多路性。实时系统处理系统也按分时原则为多个终端用户服务。实时控制系统的多路性则主要表现在系统周期性的对多路现场信息进行采集,以及对多个对象获多个执行机构进行控制。而分时系统中的多路性则与用户情况有关,时多时少、
独立性。实时信息处理系统中的每个终端用户在向实时系统提出服务请求时,是批次独立地操作,互不干扰;而实时控制系统中,对信息的采集和对对象的控制也都是彼此互不干扰‘
及时性。实时信息处理系统对实时性的要求和分时系统类似,都是以人所能接受的等待时机啊来确定的;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,
交互性。实时信息处理系统虽然也具有交互性,但这里人与系统的交互仅限于访问系统
中某些特定的专用服务程序。它不像分时系统那样能向终端用户提供数据处理和资源共享服务。
可靠性。分时系统虽然也要求系统可靠,但相比之下,实时系统则要求系统是具有高度的可靠性。
1.5 什么是系统功能调用。
系统调用是操作系统提供给用户的程序级的接口。用户可以在自己编写的程序中调用 操作系统的功能。
1.6 网络操作系统与分布式操作系统的区别是什么?
1.7 微型计算机与大型计算机的硬件组织有何不同特点?
l.8 试述虚拟处理机的概念。
在虚拟处理机技术中,利用多道程序设计技术,为每道程序建立一个进程,让多道程序并发的执行,以此来分时使用一台处理器。此时,虽然操作系统中只有一台处理机,但它却能同时为多个用户服务,是每个终端用户都认为是有一个处理机在专门的服务。
即利用多道程序设计技术,把一台物理上的处理机虚拟为多台逻辑上的处理机,在每台逻辑处理机上运行一道程序。把用户所感觉到的处理机成为虚拟处理器。
1.9 操作系统与系统中的其它软件以及与硬件是什么关系?
1.10什么是网络操作系统,它与通常的操作系统有何不同?
网络操作系统是在原来各自计算机操作系统的基础上研制开发的,用以对整个网络资 源进行统一管理和协调控制。它要按照网络系统结构的各个协议标准,为通信双方建立和 拆除通信链路;对传输错误进行检验和校正等等。用户可以通过网络访问远地资源。由网 络操作系统实现协调用户需求,分配系统资源的工作,至于具体的资源管理和控制仍由用 户的主机操作系统完成。
l.11定义、比较下列名词,并写出其反义词。
(1)联机;
是指用户在控制台 或终端前直接控制其作业的运行,也就是说用户和他的作业之间有着交互作用。
脱机。
(2)分时;
是把处理机时间划分成很短的时间片,轮流地分配 给各个联机作业使用。如果某个作业在时间片结束之前计算还未完成,那么该作业就被暂 时中断,等待下一轮再继续计算,此时CPU让给另一个作业使用。
实时
(3)实时;
所谓“实时”是指对随机发生的外部事件做出及时的响应并对其进行处理。实时操作 系统通常指这样一类系统:计算机能及时响应外部事件的请求,在规定的时间内完成对该 事件的处理,并控制所有实时设备和实时任务协调一致地运行。
分时
(4)交互式计算
1.12操作系统的主要作用和功能是什么?
从一般用户的观点,可把OS、看作是用户与计算机硬件系统之间的接口;从资源管理的观点看,则可把OS视为计算机系统资源的管理者。另外,OS、实现了对计算机资源的抽象,隐藏了对硬件操作的细节,使用户能更方便的使用机器。
1.13什么是多道程序设计技术,引入多道程序设计技术的起因和目的是什么?
用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使他们共享CPU和系统的各种资源。、
原因:单批道处理系统中,内存中仅有一道作业,它
无法充分利用系统中的素有资源,致使系统性能较差,为了进一步提高资源的利用率和系统吞吐量,引入多道程序设计技术。
1.14试画出三道作业的运行情况。列举多道程序系统中存在哪些并行运行情况。
1.15多道程序系统具有哪些特性,并设想一下这些特性对操作系统设计将带来什么 影响? 1.16比较批处理系统、分时系统和实时系统的特点
2-1 操作系统的运行环境指什么?
操作系统的运行环境主要包括系统的硬件环境和由其它的系统软件组成的软件环境, 同时操作系统与使用它的操作者之间也有一定相互关系.
2-2 现代计算机为什么设置目态/管态这两种不同的机器状态?现在的 Intel 80386 设置了 四级不同的机器状态(把管态又分为三个特权级),你能说出自己的理解吗?
处理机有时执行用户程序,有时执行操作系统的程序。在什么时候执行哪个指令集由机 器的状态确定。有些系统将处理机工作状态划分为核心状态,管理状态和用户程序状态(又 称目标状态)三种。但多数系统将处理机工作状态较简单地划分为管态(一般指操作系统管 理程序运行的状态)和目态(用户程序运行时的状态)。
为了让计算机工作于多用户或多任务的多道程序设计环境中,保证操作系统有充分的 协调和管理能力,必须把指令系统中的指令分为特权指令和普通指令。
2-3 什么叫特权指令?为什么要把指令分为特权指令和非特权指令?
为了让计算机工作于多用户或多任务的多道程序设计环境中,保证操作系统有充分的 协调和管理能力,必须把指令系统中的指令分为特权指令和普通指令。 所谓特权指令是指只能由操作系统使用的指令,如启动某设备指令,设置时钟指令, 控制中断屏蔽的某些指令,清主存指令,建立存储保护指令等等。
2-4 说明以下各条指令是特权指令还是非特权指令,并说明理由:
(1)启动磁带机; (2)求的 n 次幂; (3)停止 CPU; (4)读时钟; (5)清主存; (6)屏蔽一切中断; (7)修改指令地址寄存器内容。
(1) (3) (4) (5) (6)
(2) (7)
2-5 CPU 如何判断可否执行当前的特权指令?
2-6 什么是程序状态字?主要包括什么内容?
程序状态字是处理机中的重要寄存器。用以指明 CPU 的工作状态,保证程序顺序执行。
2-7 存储保护的目的是什么?常用的存储保护机构有哪两种?指出它们的要点。
常用的存储保护手段包括界寄存器和存储保护键。
2-8 针对图 2-3 所示的主存各存储块的情况,请回答以下两种情况对 A,B,C 各块访问合 法? (1)存储保护键的钥为“0000” ; (2)存储保护键的钥为“0100” 。
2-9 存储保护键的取“保护位”是做什么用的?如何起作用?
2-10 什么是双缓冲?详述什么是三缓冲模式的操作。在什么环境下,三缓冲是有效益的? 2-11 CPU如何发现中断事件?发现中断事件后应做什么工作?
2-12 说明中断屏蔽的作用。
2-13 何谓中断优先级?为什么要对中断事件分级?
2-14CPU 响应中断时,为什么要交换程序状态字?怎样进行?
处理机一旦接受某 中断请求时,系统进行如下操作: (1)将程序状态字 PSW 压入堆栈; (2)将指令指针 IP(相当于程序代码段的段内相对地址)和程序代码段基地址寄存器 CS 的内容压入堆栈,以保存被中断程序的返回地址; (3)取出中断请求的中断向量地址(其中包含有中断处理程序的 IP,CS 的内容),以 便转入中断处理程序; (4)按中断向量地址把中断处理程序的程序状态字取来,放入处理机的程序状态字寄 存器中。
2-15 什么是软时钟(虚拟时钟)?有何作用?
。可能有很多进程要求 在某时间间隔后,或在指定时刻唤醒它运行,因此,每个进程要有自己的间隔时钟。在没有 足够多的硬件时钟时,可以用软件为每个进程提供软时钟(或称虚拟时钟) 。时钟队列就是 实现这种技术的方法之一。
2-16 有四个作业 A,B,C,D,要求定时唤醒运行,其要求如下: A 20 秒后运行,经过 40 秒后再次运行。 B 30 秒后运行。 C 30 秒后运行,经过 25 秒后再次运行。 D 65 秒后运行。 请建立相应的时钟队列。
2-17 列举出提出基地址加位移编址的原因。
由于程序要放入主存中才能执行,因此,指令、数据都要 与主存绝对地址发生联系。由于在多道程序系统中,主存存放多道作业,所以,程序员在编 写程序时不能确定程序在主存中的地址空间,所以不能用绝对地址编写程序。用相对于某个 基准地址来编写程序、安排指令和数据的位置,就形成了相对地址。所以相对地址是用于程 序编写和编译中的地址系统。
2-18 什么叫重定位?有哪几种重定位技术?有何区别?
重定位是多道程序系统中最基本的概念。它涉及绝对地址、相对地址和逻辑地址空间等 概念。
绝对地址、相对地址和逻辑地址空间
绝对地址是指存储控制部件能够识别的主存单元编号(或字节地址),也就是主存单元 的实际地址。 相对地址是指相对于某个基准量(通常用零作基准量)编写程序时使用的地址。相对地 址常用于程序编写和编译过程中。逻辑地址空间是指一个经汇编、编译或连接装配后的目标程序的地址集合。
2-19 本书第 7 章的图 7-10 中,图(a)表示了一个作业的地址空间,该作业被连接装入程
序装入主存中,起始地址为 10000(绝对地址),请表示出该作业装入主存后的 情况(存储空间足够作业装入)。
2-20 对比绝对地址装入程序与连接装入程序。
在个人计算机(如 IBM-PC)中,用户可以使用的主存起始地址是固定的。这种机器 上的编译和汇编程序往往把源程序翻译成绝对地址形式的目标程序(以该机器的用户可用的 起始地址作为基准地址)。因此,当需要再次装入目标程序时,就十分简单,没有重定位问 题。只要按给出的起始地址,依次将程序读入即可。
多数多道程序系统使用相对装入程序(或连接装入程序)。这种程序的主要功能是把主 程序同各子程序连接装配成一个大的完整的程序,并装入主存运行。
2-21 说明硬件、软件与固件的区别,固件对操作系统的意义何在?
许多原属软件的功能,通过微程序设计技术可以转化为硬件, 也就是通常所说的固化,人们也把这些具有软件功能的硬件称为固件。
2-22 硬件必须具备哪些条件后,操作系统才可能提供多道程序设计的功能?
8.1 什么是临界区?试举一个临界区的例子。临界区设计原则是什么?
临界区:每个进程中,访问临界资源的那段代码称为临界区。例如多台电脑共享一台打印机时,条用打印机执行打印的程序就是临界区。
设计原则:空闲让进,忙则等待,有限等待,让权等待;
8.2 并发进程之间的制约关系有哪两种?引起制约的原因是什么?
进程之间存在两种制约关系,即同步和互斥。
同步是由于并发进程之间需要协调完成同一个任务时引起的一种关系,为一个进程等待另一个进程向它直接发送消息或数据时的一种制约关系。
互斥是由于并发进程之间竞争系统的临界资源引起的,为一个进程等待另一个进程已经占有的必须互斥使用的资源时的一种制约关系。
8.3 信号量的物理意义是什么?应如何设置其初值?并说明信号量的数据结构。
物理意义:
当信号量 s≥0 时,s 表示系统中可供使用的资源的数量;
当信号量 s<0 时,│s│表示处于等待 s 的队列中进程的数量。
设置初值:
在描述临界区的问题时,由于临界区是互斥使用的,所以,对于各个进程而言,就是
只有一个资源,因此,信号量的初值是 1。
数据结构:
用于表示资源数目的整型变量value,一个进程链表 L,用于构成等待进程队列。
8.4 现有 P、Q、R 三个进程。P 负责把数据读入缓冲区,Q 负责从缓冲区中取出数据,进 行加工计算,结果仍然写入缓冲区中,R 负责把进程 Q 得到的结果输出。分别考虑有 一个容量为 K 的缓冲区和两个容量分别 K 的缓冲区的情况。
semaphoresp,sq,sr;
intbuf;sp=1;sq=0;sr=0;
cobegin
process P() {
while(true) {
从磁带读入数据;
P(sp);
Buf=data;
V(sq);
}
}
process Q() {
while(true) {
P(sq);
data=buf;
加工 data;
buf=data;
V(sr);
}
}
process R() {
while(true) {
P(sr);
data=buf;
打印数据;
}
}
coend.
8.5 考虑一个公共汽车的运营情况。 司机负责开车、 到站停车、 当售票员关门后才能再次启动车; 售票员负责售票、 当车停稳后开车门、 乘客下完车后关好车门。 试用 P、 V 原语实现司机和售票员的同步过程。
semaphore s1,s2; s1=0;s2=0;
cobegin
司机();
售票员();
coend
process 司机() {
while(true) {
P(s1);
启动车辆;
正常行车;
到站停车;
V(s2);
}
}
process 售票员() {
while(true) {
关车门;
V(s1);
售票;
P(s2);
开车门;
上下乘客;
}
}
8.6 何谓死锁?产生死锁的原因和必要条件是什么?
所谓死锁是指两个或两个以上进程处于无休止地等待永远不成立的条件的状态。
死锁的原因,可以归结为两点:
(l)资源不足。当系统中的共享资源不足以满足多个进程运行需要时,会由于竞争资源产
生死锁;
(2)进程推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,可以导致进
程死锁
产生死锁的必要条件:
1.互斥条件
指进程对资源的排它性使用,即在一段时间内某资源只能由一个进程占有。如果此时还
有其它进程要求该资源,要求者进程只能阻塞,直至占有该资源的进程释放资源为止。
2.部分分配条件
进程已经占有了至少一个资源,但又提出了新的资源要求,而该资源又已被其它进程占
有,此时请求进程阻塞,但又对已经获得的其它资源保持不放。
3.不可剥夺条件
进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
4.环路等待条件
8.7 在解决死锁问题的几个方法中,哪种方法最容易实现?哪种方法使资源的利用率最高?
解决/处理死锁的方法有预防死锁、避免死锁、检测和解除死锁,其中预防死锁方法最容易实现,但由于所施加的限制条件过于严格,会导致系统资源利用率和系统吞吐量降低;而检测和解除死锁方法可是系统获得较好的资源利用率和系统吞吐量。
8.8 请详细说明可通过哪些途径预防死锁?
摈弃“请求和保持”条件,就是如果系统有足够资源,便一次性把进程需要的所有资源分配给它;
摈弃“不剥夺”条件,就是已经拥有资源的进程,当它提出新资源请求而不能立即满足时,必须释放它已保持的所有资源,待以后需要时再重新申请;
摈弃“环路等待”条件,就是将所有资源按类型排序标号,所有进程对资源的请求必须严格按序号递增的次序提出。
8.9 在银行家算法的例子中,如果 P0 发出的请求向量由 Request0(0,2,0)改为 Request0( 0,1,0),问系统可否将资源分配给它?
可以分配,存在p1,p3,p4,p2,p0的安全序列。
8.10 顺序程序设计和共行程序设计的特点有何不同?
传统的顺序程序具有如下特征:
1. 顺序性:包含两个方面的含义,一条指令的执行一定在前一指令执行结束之后才能
开始;一条指令的执行以它前一指令执行的结果为前提。
2. 封闭性:程序运行的环境只能被程序本身修改,不能受任何外在因素影响。所谓程
序的运行环境包括寄存器、内存数据、各种堆栈等。
3. 确定性:程序的运行结果与运行速度无关。只要采用同样的初始值,无论程序一气
哈成地执行,还是断断续续的执行,都能得到相同的运行结果。
4. 可再现性:只要给出同样的数据输入,无论什么时刻执行该程序均会得到同样的运
行结果。
由于并行程序的特殊性,往往不具备顺序程序的特征。
8.11 什么叫与时间有关的错误?表现在哪些方面?举例说明之
在操作系统中引入进程、线程的概念后,虽然能够改善系统资源利用率,提高系统效
率,但是由于进程、线程等对资源的竞争与共享等因素,给系统运行造成混乱,我们称之为
与时间有关的错误。
主要表现在对共享资源的使用上。多个进程对共享区域的读写会导致其他进程的读取错误。
8.12 若进程 A 和 B 在临界段上互斥,那么当 A 处于临界段内时不能打断它的执行,这说法对吗?为什么?
这种说法不对,临界段上互斥是表明,两个进程不能同时执行临界段的代码,但是进程是可以被中断的,B中断进程A,B可以执行临界段代码,依然满足互斥。
8.13 同步与互斥这两个概念有何区别?
在操作系统中,当某一进程正在访问某一存储区域时,就不允许其他进程进行读写或者修改该存储区的内容,否则就会发生后果无法估计的错误。进程之间的这种相互制约的关系成为进程互斥。并发进程在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通信息称为进程同步。实际上进程互斥也是一种同步,他协调多个进程互斥进入同一个临界资源对应的临界区。
8.14 信号量是一个初值为非负的整形变量,可在其上做加“1”和减“1”的操作。这说法对
吗?如何改正之?
错,只可以做PV操作。
8.15 使用 cobegin/coend 改写下面的表达式以获得最大程度的并行性。
(3ab+4)/(c+d)(e-f)
t1:=3ab; t2:=c+d; t3:=e-f
t4:=t1+4; t5:=t2t3; t6:=t4/t5;
BEGIN
COBEGIN
BEGIN
COBEGIN
t1:=3ab;
t2:=c+d;
t3:=e-f
COEND;
t4:=t1+4;
END
t5:=t2**t3;
COEND;
t6:=t4/t5;
END;
8.16 把下列并行计算改写成顺序计算序列。
a:=b+c;
cobegln
d:==bc-x;
e:=(a/b)+n2
coend
8.17 为什么下面的并行计算程序是不正确的?
cobegin
a:=b+c;
d:=bc-x;
e:=(a/b)+n**2
Coend
假设
S1: a:=b+c;
S2: d:=bc-x;
S3: e:=(a/b)+n*2
R(S1) = {b,c} W(S1)={a};
R(S2) = {b,c,x} W(S1)={d};
R(S1) = {a,b,n} W(S1)={e};
R(S1) = {b,c} W(S1)={a};
R(S2) = {b,c,x} W(S2)={d};
R(S3) = {a,b,n} W(S3)={e};
R(S1)∩W(S3) ∪R(S3)∩W(S1) ∪ W(S1)∩W(S3)={a},不满足 Bernstein 条件,无法并行。
8.18 说明下面的说法是不正确的理由:当几个进程访问主存中的共享数据时,必须实行互斥以防止产生不确定的结果。
当多个进程对共享数据进行只读操作时,是可以并行操作的,因为不会修改数据,所以不会造成数据不同步的情况。
8.19 下面是两个并发执行的进程,它们能正确执行吗?若不能正确执行,请举例说明,并改正之(X 是公共变量)。
cobegin
var x:integer;
procecc P1(进程 P1)
var y, z: integer;
begin
x:=1;
y:=0;
If x>=l then y:=y+1;
z:=y
end
Procecc P2(进程 P2)
var t,u:integer;
begin
x:=0;
t:=0;
if x<1 then t:=t+z;
u:=t
end
coend
不能正确执行。进程P2中使用了进程P1中的结果z,如果按照x:=1;x:=0;的顺序执行,且进程2先与进程1的z:=y语句执行了if x<1 then t:=t+z;则此时z值未知,进程会得到一个无法预知的结果。
改进:设置信号量mutex,对z实施互斥访问. 在执行t:=t+z;前,一定要先执行z:=y
mutex:= 0
cobegin
var x:integer;
procecc P1(进程 P1)
var y, z: integer;
begin
x:=1;
y:=0;
If x>=l then y:=y+1;
z:=y
V(mutex);
end
Procecc P2(进程 P2)
var t,u:integer;
begin
x:=0;
t:=0;
if x<1 then P(mutex); t:=t+z;
u:=t
end
coend
8.20 因修路使 A 地到 B 地的多路并行车道变为单车道,请问在此问题中,什么是临界资源?
单行道
8.21 没有几个进程共享一互斥段, 对于如下两种情况:
(1) 每次只允许一个进程进入互斥段;
(2) 最多允许 m 个进程(m<n=同时进入互斥段; 所采用的信号量是否相同? 信号量值的变化范围如何?
(1)互斥信号量初值为 1 ,变化范围为[ -n + l , 1 ]。
(2)互斥信号量初值为 m ,变化范围为[ -n + m , m ]。
以上引
8.23 用银行家算法判断下述每个状态是否安全。 如果一个状态是安全的, 说明所有进程是如
何能够运行完毕的。 如果一个状态是不安全的, 说明为什么可能出现死锁。
状态 A 状态 B
占有台数 最大需求 占有台数 最大需求
用户 1 2 6 用户 1 4 8
用户 2 4 7 用户 2 3 9
用户 3 5 6 用户 3 5 8
用户 4 0 2 可供分配的台数 2
可供分配的台数 1
状态A安全,状态B不安全。
状态A中,将可分配的1台给用户3,然后用户3可以运行,当用户3结束释放资源,其他用户就可以运行完毕。
状态B中可分配台数只有2,用户1、2、3的需求都不止2,所以不论怎么样分配,3个用户的需求都不能满足,因此会出现死锁。
8.24 给出一个涉及三个进程和三个不同资源的死锁例子, 并画出相应的资源分配图。
进程P1已经分配了资源r3,请求资源r1;进程P2已经分配了资源r1,请求资源r2;进程P3已经分配了资源r2,请求资源r3;三个进程相互等待,形成死锁。
8.25 没有两个进程 A 和 B 各自按以下顺序使用 P, V 操作并行运行(S; 和 S。 代表系统中
一台打印机和一台扫瞄仪资源信号量):
A 进程 B 进程
P(Sl) P(S。)
… …
P(S2) P(Sl)
… …
V(S2) V(Sl)
… …
V(S1) V(S2)
… …
(1) 分析各种推进速度可能引起的情况, 并画出死锁的图形表示,
A:P(Sl);
B:P(S2);
A:P(S2);等待
B:P(Sl);等待,死锁
A:P(Sl);
A:P(S2);
B:P(S2);等待
B:P(Sl);等待,死锁
A:V(S2);A:V(S1);B:V(Sl);B:V(S2);执行结束
(2) 用死锁的必要条件说明产生死锁和不产生死锁的原因。
死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立。
8.26 某系统有同类资源 m 个, 被 n 个进程共享, 请分别讨论当 m>n 和 m<=n 时每个进程最多可以请求多少个这类资源, 才能使系统一定不会发生死锁?
那么当m>n时,m>n*(x-1)时 使系统不会死锁,
m<=n时,x=1 使系统不会死锁
8.27 某系统中有六台打印机, N 个进程共享打印机资源, 每个进程要求两台, 试问 N 取哪些值时, 系统才不会发生死锁?
N≤5;
计算题: