答:(1)有效性 (2)方便性 (3)可扩展性 (4)开放性
答:(1)OS作为用户与计算机硬件系统之间的界面
(2)OS作为计算机系统资源的管理者
(3)OS抽象计算机资源
答:OS首先在裸机上覆盖一层I/O设备管理软件实现了计算机硬件操作的第一级抽样
大象;在第一层软件上覆盖文件管理软件,实现硬件资源运行的第二层抽象。OS 通
多层系统软件安装在计算机硬件上,增强了系统功能,隐藏了硬件操作的细节
对计算机资源的抽象共同实现。
答:主要动力来自四个方面:社会需求和技术发展:
(1)计算机资源利用率不断提高;
(2)方便用户;
(3)设备的不断更新;
(4)计算机系统结构的不断发展。
答:脱机I/O 在纸带输入机或卡片机中提前安装用户程序和数据的纸带或卡片
在外围机的控制下,将纸带或卡片上的数据或程序输入磁带。此方法下的输入输出由外围输出
在脱离主机的情况下完成机器控制。
而联机I/O方式是指程序和数据的输入输出都是在主机的直接控制下进行的。
答:促进分时系统形成和发展的主要动力是更好地满足用户的需求。主要表现为:CPU 的
分时使用缩短了操作的平均周转时间;人机交互能力使用户能够直接控制操作;主机
多用户可以同时使用同一台计算机,独立处理作业。
A:关键问题是,当用户在终端上输入命令时,系统应能够及时接收和处理命令,
将结果返回到用户可接受的延迟。
解决方案:对于及时接收问题,可在系统中设置多路卡,使主机能够同时接收用户
端上输入的数据;为每个终端配置缓冲区,暂存用户输入的命令或数据。及时处理问题,
应使所有的用户作业都直接进入内存,并且为每个作业分配一个时间片,允许作业只在自己
时间片运行,这样每个作业都可以在短时间内运行一次。
答:实时操作系统是指系统能够在规定的时间内及时响应外部事件的要求,完成事件的处理
理性,并控制所有实时任务的协调运行。实时引入OS 为了满足应用程序的需要,更好地满足应用程序的需要
需要实时控制和实时信息处理。
答:硬实时任务是指系统必须满足任务对截止日期的要求,否则可能会出现不可预测的结果。
例如,运载火箭的控制等。
软实时任务是指其截止日期不严格,偶尔错过任务截止日期,对系统产生影响
声音不大。例如:网页内容更新,火车售票系统。
答:单用户单任务操作系统最具代表性CP/M和MS-DOS.
答:
(1)Microsoft Windows 1.0是微软首次尝试在个人电脑上开发图形界面。
(2)Windows 95是第一个支持32位的混合16位/32位系统。带来更强大、更稳定
桌面操作系统之间的竞争已经结束。
(3)Windows 98是微软16位/32位的混合Windows操作系统改进了硬件标准
内存管理的创新是一个多过程操作系统。
(4)Windows XP是基于Windows拥有新用户图形界面月神的2000产品Luna。简
防火墙整合了用户安全特性。
(5)Windows Vista 它包含数百个新功能,特别是新版图形用户界面和WindowsAero
新界面风格,强化搜索功能(Windows IndexingService)、新媒体创作工具和重新媒体创作工具
新设计的网络、音频、输出(打印)和显示子系统。
答:(1)及时性:实时信息处理系统对实时性的要求与分时系统相似,人们可以接受
确定等待时间;实时控制系统的及时性是控制对象要求的开始截止日期或完成时间
截止时间一般为秒级至毫秒级,有的甚至低于100微妙。
(2)交互性:实时信息处理系统是交互性的,但人与系统的交互仅限于访问系统中的某
一些特殊的服务程序。与分时系统不同,它可以为终端用户提供数据和资源共享。
(3)可靠性:分时系统也要求系统可靠,但相比之下,实时系统要求系统高度
可靠性。在实时系统中,因为任何错误都可能带来巨大的经济损失甚至灾难性后果
通常采取多级容错措施保系统安全和数据安全。
答:并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性。
答:处理机管理的主要功能是:过程管理、过程同步、过程通信和处理机调度;
流程管理:为操作创建流程,撤销已完成的流程,控制运行过程中的状态转换。
进程同步:运行多个过程(包括线程)______________进行协调。
通信:用于实现相互合作过程中的信息交换。
处理机调度:
(1)作业调度。根据一定的算法,从后备队选择几个作业,为他们分配所需的操作
资源(内存分配是首选)。
(2)过程调度:根据一定算法从过程的就绪队列中选择一个过程,并将处理器分配给处理器
并设置运行现场,使进程投入实施。
答:内存管理的主要功能有:内存分配、内存保护、地址映射和内存扩展。
内存分配:为每个程序分配内存。
内存保护:确保每个用户程序只在自己的内存空间中运行,不相互干扰。
地址映射:将地址空间的逻辑地址转换为内存空间和相应的物理地址。
内存扩展:用于实现请求调用功能、替换功能等。
答:主要功能有: 缓冲管理、设备分配、设备处理、虚拟设备等。
主要任务: 完成用户提出的I/O 请求,为用户分配I/O 设备;提高CPU 和I/O 设
提高准备利用率I/O速度;以及方便用户使用I/O设备.
答:文件管理的主要功能:文件存储空间管理、目录管理、文件读写管理和保护。
文件管理的主要任务:管理用户文件和系统文件,方便用户使用,确保文件安全。
答:操作系统的异步性体现在三个方面:一是过程的异步性,过程以不可预测的速度方向
前进,二是程序不可再现,即程序执行结果有时不确定,三是程序执行时间
不可预测性,即每个程序何时执行,执行顺序和完成时间不确定。
答:(1)模块接口法中存在的问题:①在OS在设计过程中,很难满足模块之间的界面规定
对接口的实际需求。②在OS 在设计阶段,设计师必须做出一系列的决定,每一个决定都必须做出
必须建立在上一个决定的基础上。然而,模块化结构设计的各种模块设计齐头并进,无法找到可靠的
顺序导致各种决策的混乱,使得程序设计师很难在设计中做出每一步的决策
因此,模块接口法被称为无序模块法。
(2)解决方案:将模块接口法的决定顺序无序变为有序,引入有序分层法。
答:C/S 该模式具有独特的优点:⑴处理和存储数据。⑵便于集中管理。⑶灵活性和
可扩充性。⑷应用软件很容易改编。
答:1)足够小的内核 2)基于客户/服务器模式
3)应用机制与战略分离原理 4)采用面向对象技术。
答:基于微内核结构的答:OS 采用面向对象的程序设汁技术。
答:把操作系统中更多的成分和功能放到更高的层次(即用户模式)中去运行,而留下一个
尽量小的内核,用它来完成操作系统最基本的核心功能,称这种技术为微内核技术。在微内
核中通常提供了进程(线程)管理、低级存储器管理、中断和陷入处理等功能。
答:1)提高了系统的可扩展性
2)增强了系统的可靠性
3)可移植性
4)提供了对分布式系统的支持
5)融入了面向对象技术
答:前趋图(Precedence Graph)是一个有向无循环图,记为DAG(DirectedAcyclic
Graph),用于描述进程之间执行的前后关系。
答:其前趋图为:
答:程序在并发执行时,由于它们共享系统资源,为完成同一项任务需要相互合作,致使这
些并发执行的进程之间,形成了相互制约关系,从而使得进程在执行期间出现间断性。
答:程序并发执行时,多个程序共享系统中的各种资源,因而这些资源的状态由多个程序改
变,致使程序运行失去了封闭性,也会导致其失去可再现性。
答:为了使程序在多道程序环境下能并发执行,并对并发执行的程序加以控制和描述,在操
作系统中引入了进程概念。
影响: 使程序的并发执行得以实行。
答:(1)动态性是进程最基本的特性,表现为由创建而产生,由调度而执行,因得不到资源
而暂停执行,由撤销而消亡。进程有一定的生命期,而程序只是一组有序的指令集合,是静
态实体。
(2)并发性是进程的重要特征,同时也是OS 的重要特征。引入进程的目的正是为了使
其程序能和其它进程的程序并发执行,而程序是不能并发执行的。
(3)独立性是指进程实体是一个能独立运行的基本单位,也是系统中独立获得资源和独
立调度的基本单位。对于未建立任何进程的程序,不能作为独立单位参加运行。
答:PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构。作用是使一个在
多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程
并发执行的进程。OS是根据PCB对并发执行的进程进行控制和管理的。
答: (1)就绪状态→执行状态:进程分配到CPU资源
(2)执行状态→就绪状态:时间片用完
(3)执行状态→阻塞状态:I/O请求
(4)阻塞状态→就绪状态:I/O完成
答:引入挂起状态处于五种不同的需要: 终端用户需要,父进程需要,操作系统需要,对换
需要和负荷调节需要。处于挂起状态的进程不能接收处理机调度。
答:进行进程切换时,所要保存的处理机状态信息有:
(1)进程当前暂存信息
(2)下一指令地址信息
(3)进程状态信息
(4)过程和系统调用参数及调用地址信息。
答:引起进程创建的主要事件有:用户登录、作业调度、提供服务、应用请求。
答:引起进程被撤销的主要事件有:正常结束、异常结束(越界错误、保护错、非法指令、
特权指令错、运行超时、等待超时、算术运算错、I/O 故障)、外界干预(操作员或操作系
统干预、父进程请求、父进程终止)。
答:
(1)OS 发现请求创建新进程事件后,调用进程创建原语Creat();
(2)申请空白PCB;
(3)为新进程分配资源;
(4)初始化进程控制块;
(5)将新进程插入就绪队列.
答:
(1)根据被终止进程标识符,从PCB 集中检索出进程PCB,读出该进程状态。
(2)若被终止进程处于执行状态,立即终止该进程的执行,置调度标志真,指示该进程被
终止后重新调度。
(3)若该进程还有子进程,应将所有子孙进程终止,以防它们成为不可控进程。
(4)将被终止进程拥有的全部资源,归还给父进程,或归还给系统。
(5)将被终止进程PCB 从所在队列或列表中移出,等待其它程序搜集信息。
答:a. 请求系统服务;b. 启动某种操作;c. 新数据尚未到达;d. 无新工作可做.
答:
(1)间接相互制约关系。举例:有两进程A 和B,如果A 提出打印请求,系统已把唯一的
一台打印机分配给了进程B,则进程A 只能阻塞;一旦B 释放打印机,A 才由阻塞改为就
绪。
(2)直接相互制约关系。举例:有输入进程A 通过单缓冲向进程B 提供数据。当缓冲空时,
计算进程因不能获得所需数据而阻塞,当进程A 把数据输入缓冲区后,便唤醒进程B;反
之,当缓冲区已满时,进程A 因没有缓冲区放数据而阻塞,进程B 将缓冲区数据取走后便
唤醒A。
答:为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问
的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,
并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码为"
进入区"代码;在退出临界区后,必须执行"退出区"代码,用于恢复未被访问标志,使其它进程能再访问此临界资源。
答:同步机构应遵循的基本准则是:空闲让进、忙则等待、有限等待、让权等待
原因:为实现进程互斥进入自己的临界区。
答:wait(S):当S.value>0时,表示目前系统中这类资源还有可用的。执行一次wait 操
作,意味着进程请求一个单位的该类资源,使系统中可供分配的该类资源减少一个,因此描
述为S.value:=S.value-1;当S.value<0时,表示该类资源已分配完毕,进程应调用block
原语自我阻塞,放弃处理机,并插入到信号量链表S.L中。
signal(S):执行一次signal操作,意味着释放一个单位的可用资源,使系统中可供分配
的该类资源数增加一个,故执行S.value:=S.value+1 操作。若加1后S.value≤0,则表
示在该信号量链表中,仍有等待该资源的进程被阻塞,因此应调用wakeup 原语,将S.L
链表中的第一个等待进程唤醒。
答:整型信号量机制不完全遵循同步机制的四条准则,它不满足“让权等待”准则。
答:为使多个进程互斥访问某临界资源,只需为该资源设置一互斥信号量mutex,并设其
初值为1,然后将各进程访问该资源的临界区CS置于wait(mutex)和signal(mutex)操作
之间即可。这样,每个欲访问该临界资源的进程在进入临界区之前,都要先对mutex 执行
wait 操作,若该资源此刻未被访问,本次wait 操作必然成功,进程便可进入自己的临界区,
这时若再有其他进程也欲进入自己的临界区,此时由于对mutex 执行wait操作定会失败,
因而该进程阻塞,从而保证了该临界资源能被互斥访问。当访问临界资源的进程退出临界区
后,应对mutex执行signal 操作,释放该临界资源。利用信号量实现进程互斥的进程描述
如下:
Var mutex: semaphore:=1;
begin
parbegin
process 1: begin
repeat
wait(mutex);
critical section
signal(mutex);
remainder section
until false;
end
process 2: begin
repeat
wait(mutex);
critical section
signal(mutex);
remainder section
until false;
end
parend
答:(a)Var a, b, c, d, e, f, g, h; semaphore:= 0, 0,0, 0, 0, 0, 0, 0;
begin
parbegin
begin S1; signal(a); signal(b); end;
begin wait(a); S2; signal(c); signal(d); end;
begin wait(b); S3; signal(e); end;
begin wait(c); S4; signal(f); end;
begin wait(d); S5; signal(g); end;
begin wait(e); S6; signal(h); end;
begin wait(f); wait(g); wait(h); S7; end;
parend
end
(b)Var a, b, c, d, e, f, g, h,i,j; semaphore:= 0,0, 0, 0, 0, 0, 0,0,0, 0;
begin
parbegin
begin S1; signal(a); signal(b); end;
begin wait(a); S2; signal(c); signal(d); end;
begin wait(b); S3; signal(e); signal(f); end;
begin wait(c); S4; signal(g); end;
begin wait(d); S5; signal(h); end;
begin wait(e); S6; signal(i); end;
begin wait(f); S7; signal(j); end;
begin wait(g);wait(h); wait(i); wait(j); S8;end;
parend
end
答:
如果缺少signal(full),那么表明从第一个生产者进程开始就没有改变信号量full 值,
即使缓冲池产品已满,但full值还是0,这样消费者进程执行wait(full)时认为缓冲池是空
而取不到产品,消费者进程一直处于等待状态。
如果缺少signal(empty),在生产者进程向n个缓冲区投满产品后消费者进程才开始从
中取产品,这时empty=0,full=n,那么每当消费者进程取走一个产品empty值并不改变,
直到缓冲池取空了,empty 值也是0,即使目前缓冲池有n 个空缓冲区,生产者进程要想
再往缓冲池中投放产品也会因为申请不到空缓冲区被阻塞。
答:将wait(full)和wait(mutex)互换位置后,可能引起死锁。考虑系统中缓冲区全满时,
若一生产者进程先执行了wait(mutex)操作并获得成功,则当再执行wait(empty)操作时,
它将因失败而进入阻塞状态,它期待消费者进程执行signal(empty)来唤醒自己,在此之前,
它不可能执行signal(mutex)操作,从而使试图通过执行wait(mutex)操作而进入自己的临
界区的其他生产者和所有消费者进程全部进入阻塞状态,这样容易引起系统死锁。
若signal(mutex)和signal(full)互换位置后只是影响进程对临界资源的释放次序,而
不会引起系统死锁,因此可以互换位置。
答:整型信号量:lock(W): while W=1 do no-op
W:=1;
unlock(W): W:=0;
记录型信号量:lock(W): W:=W+1;
if(W>1) then block(W, L)
unlock(W): W:=W-1;
if(W>0) then wakeup(W, L)
例子:
Var W:semaphore:=0;
begin
repeat
lock(W);
critical section
unlock(W);
remainder section
until false;
end
答: producer:
begin
repeat
…
producer an item in nextp;
wait(mutex);
wait(full);
buffer(in):=nextp;
signal(mutex);
until false;
end
consumer:
begin
repeat
wait(mutex);
wait(empty);
nextc:=buffer(out);
signal(mutex);
consumer item in nextc;
until false;
end
答:Var chopstick:array[0,…,4] of semaphore;
所有信号量均被初始化为1,第i 位哲学家的活动可描述为:
Repeat
Wait(chopstick[i]);
Wait(. chopstick[(i+1) mod 5]);
…
Ea.t ;
…
Signal(chopstick[i]);
Signal(chopstick[(i+1) mod 5])
Ea.t ;
…
Think;
Until false;
答:
a. Var mutex, empty, full: semaphore:=1, 1, 0;
gather:
begin
repeat
……
gather data in nextp;
wait(empty);
wait(mutex);
buffer:=nextp;
signal(mutex);
signal(full);
until false;
end
compute:
begin
repeat
……
wait(full);
wait(mutex);
nextc:=buffer;
signal(mutex);
signal(empty);
compute data in nextc;
until false;
end
b. Var empty, full: semaphore:=1, 0;
gather:
begin
repeat
……
gather data in nextp;
wait(empty);
buffer:=nextp;
signal(full);
until false;
end
compute:
begin
repeat
……
wait(full);
nextc:=buffer;
signal(empty);
compute data in nextc;
until false;
end
答:管程由四部分组成:①管程的名称;②局部于管程内部的共享数据结构说明;③对该数
据结构进行操作的一组过程;④对局部于管程内部的共享数据设置初始值的语句;
当一个进程调用了管程,在管程中时被阻塞或挂起,直到阻塞或挂起的原因解除,而在此期
间,如果该进程不释放管程,则其它进程无法进入管程,被迫长时间地等待。为了解决这个
问题,引入了条件变量condition。
答:首先建立一个管程,命名为ProclucerConsumer,包括两个过程:
(1)Put(item)过程。生产者利用该过程将自己生产的产品放到缓冲池,用整型变
量count 表示在缓冲池中已有的产品数目,当count≥n 时,表示缓冲池已满,生产者须
等待。
(2)get(item)过程。消费者利用该过程从缓冲池中取出一个产品,当count≤0
时,表示缓冲池中已无可取的产品,消费者应等待。
PC 管程可描述如下:
type producer-consumer =monitor
Var in,out,count:integer;
buffer:array[0,…,n-1]of item;
notfull,notempty:condition;
procedure entry dot(item)
begin
if count>=n then not full.wait;
buffer(in):=nextp;
in:=(in+1)mod n;
count:=count+1;
if notempty.queue then notempty.signal;
end
procedure entry get(item)
begin
if count<=0 then not full.wait;
nextc:=buffer(out);
out:=(out+1)mod n;
count:=count-1;
if notfull.quene then notfull.signal;
end
begin in:=out:=0;
count:=0
end
在利用管程解决生产者一消费者问题时,其中的生产者和消费者可描述为:
producer: begin
pepeat
produce an inem in nestp
PC.put(item);
until false;
end
consumer: begin
repeat
PC.get(item);
consume the item in enxtc;
until false;
end
答:为解决并行带来的死锁问题,在wait 操作中引入AND 条件,其基本思想是将进
程在整个运行过程中所需要的所有临界资源,一次性地全部分配给进程,用完后一次性释放。
解决生产者-消费者问题可描述如下:
var mutex,empty,full: semaphore:=1,n,0;
buffer: array[0,...,n-1] of item;
in,out: integer:=0,0;
begin
parbegin
producer: begin
repeat
…
produce an item in nextp;
…
wait(empty);
wait(s1,s2,s3,...,sn); //s1,s2,...,sn为执行生产者进程除empty外其余的条件
wait(mutex);
buffer(in):=nextp;
in:=(in+1) mod n;
signal(mutex);
signal(full);
signal(s1,s2,s3,...,sn);
until false;
end
consumer: begin
repeat
wait(full);
wait(k1,k2,k3,...,kn); //k1,k2,...,kn 为执行消费者进程除full外其余的条件
wait(mutex);
nextc:=buffer(out);
out:=(out+1) mod n;
signal(mutex);
signal(empty);
signal(k1,k2,k3,...,kn);
consume the item in nextc;
until false;
end
parend
end
答:对AND信号量加以扩充,形成的信号量集合的读写机制。
解法:Var RN integer;
L,mx: semaphore:=RN,1;
begin
parbegin
reader:begin
repeat
Swait(L,1,1);
Swait(mx,1,1);
…
perform read operation;
…
Ssignal(L,1);
until false
end
writer:begin
repeat
Swait(mx,1,1;L,RN,0);
perform write operation;
Ssignal(mx,1);
until false
end
parend
end
答:用户用低级通信工具实现进程通信很不方便,效率低,通信对用户不透明,所有操作都
必须由程序员来实现,而高级通信工具弥补了这些缺陷,用户直接利用操作系统提供的一组
通信命令,高效地传送大量的数据。
答:共享存储器系统、消息传递系统以及管道通信系统。
答:(1)构成消息(2)发送消息(3)接收梢息(4)互斥与同步。
答:在操作系统中引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具
有更好的并发性,提高CPU的利用率。进程是分配资源的基本单位,而线程则是系统调度的
基本单位。
答:(1)轻型实体(2)独立调度和分派的基本单位(3)可并发执行(4)共享进程资源。
答:
(1)调度性。线程在OS 中作为调度和分派的基本单位,进程只作为资源拥有的基本单位。
(2)并发性。进程可以并发执行,一个进程的多个线程也可并发执行。
(3)拥有资源。进程始终是拥有资源的基本单位,线程只拥有运行时必不可少的资源,本
身基本不拥有系统资源,但可以访问隶属进程的资源。
(4)系统开销。操作系统在创建、撤消和切换进程时付出的开销显著大于线程。
答:同步功能可以控制程序流并访问共享数据,从而并发执行多个线程。共有四种同步模型:
互斥锁、读写锁、条件变量和信号。
答:
(1)私用信号量。当某线程需利用信号量实现同一进程中各线程之间的同步时,可调用创
建信号量的命令来创建一个私用信号量,其数据结构存放在应用程序的地址空间中。
(2)公用信号量。公用信号量是为实现不同进程间或不同进程中各线程之间的同步而设置
的。其数据结构是存放在受保护的系统存储区中,由OS为它分配空间并进行管理。
答:
(1)用户级线程:仅存在于用户空间中的线程,无须内核支持。这种线程的创建、撤销、
线程间的同步与通信等功能,都无需利用系统调用实现。用户级线程的切换通常发生在一个
应用进程的诸多线程之间,同样无需内核支持。
(2)内核支持线程:在内核支持下运行的线程。无论是用户进程中的线程,还是系统线程
中的线程,其创建、撤销和切换等都是依靠内核,在内核空间中实现的。在内核空间里还
为每个内核支持线程设置了线程控制块,内核根据该控制块感知某线程的存在并实施控制。
答:用户级线程是在用户空间中的实现的,运行在“运行时系统”与“内核控制线程”的中
间系统上。运行时系统用于管理和控制线程的函数的集合。内核控制线程或轻型进程LWP
可通过系统调用获得内核提供服务,利用LWP进程作为中间系统。
答:系统在创建新进程时,分配一个任务数据区PTDA,其中包括若干个线程控制块TCB
空间。创建一个线程分配一个TCB,有关信息写入TCB,为之分配必要的资源。当PTDA
中的TCB 用完,而进程又有新线程时,只要所创建的线程数目未超过系统允许值,系统可
在为之分配新的TCB;在撤销一个线程时,也应回收线程的所有资源和TCB。
答:高级调度的主要任务是根据某种算法,把外存上处于后备队列中的那些作业调入内存。
低级调度是保存处理机的现场信息,按某种算法先取进程,再把处理器分配给进程。
引入中级调度的主要目的是为了提高内存利用率和系统吞吐量。使那些暂时不能运行的进程不再占用内存资源,将它们调至外存等待,把进程状态改为就绪驻外存状态或挂起状态。
答:作业包含通常的程序和数据,还配有作业说明书。系统根据该说明书对程序的运行进行控制。批处理系统中是以作业为基本单位从外存调入内存。
作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。
作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。
答:每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。
JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10)作业完成时间11) 作业退出时间12) 资源使用情况等
答:作业调度每次接纳进入内存的作业数,取决于多道程序度。应将哪些作业从外存调入内存,取决于采用的调度算法。最简单的是先来服务调度算法,较常用的是短作业优先调度算法和基于作业优先级的调度算法。
答:(1)保存处理机的现场信息(2)按某种算法选取进程(3)把处理机分配给进程。
答:抢占的原则有:时间片原则、优先权原则、短作业优先权原则等。
答:
(1)面向用户的准则:周转时间短、响应时间快、截止时间的保证、优先权准则。
(2)面向系统的准则:系统吞吐量高、处理机利用率好、各类资源的平衡利用。
答:批处理系统的调度算法:短作业优先、优先权、高响应比优先、多级反馈队列调度算法。
分时系统的调度算法:时间片轮转法。
实时系统的调度算法:最早截止时间优先即EDF、最低松弛度优先即LLF算法。
答:静态优先级是指在创建进程时确定且在进程的整个运行期间保持不变的优先级。
动态优先级是指在创建进程时赋予的优先权,可以随进程推进或随其等待时间增加而改变的优先级,可以获得更好的调度性能。
确定进程优先级的依据:进程类型、进程对资源的需求和用户要求。
答:相同点:两种调度算法都可以用于作业调度和进程调度。
不同点:FCFS调度算法每次都从后备队列中选择一个或多个最先进入该队列的作业,将它们调入内存、分配资源、创建进程、插入到就绪队列。该算法有利于长作业/进程,不利于短作业/进程。SPF算法每次调度都从后备队列中选择一个或若干个估计运行时间最短的作业,调入内存中运行。该算法有利于短作业/进程,不利于长作业/进程。
答:时间片应略大于一次典型的交互需要的时间。一般应考虑三个因素:系统对相应时间的
要求、就绪队列中进程的数目和系统的处理能力。
答:实时系统的调度算法很多,主要是基于任务的开始截止时间和任务紧急/松弛程度的任务优先级调度算法,通常的优先级调度算法不能满足实时系统的调度实时性要求而不适用。
答:(1)终端型作业用户提交的作业大多属于较小的交互型作业,系统只要使这些作业在第一队列规定的时间片内完成,终端作业用户就会感到满足。
(2)短批处理作业用户,开始时像终端型作业一样,如果在第一队列中执行一个时间片段即可完成,便可获得与终端作业一样的响应时间。对于稍长作业,通常只需在第二和第三队列各执行一时间片即可完成,其周转时间仍然较短。
(3)长批处理作业,它将依次在第1,2,…,n个队列中运行,然后再按轮转方式运行,用户不必担心其作业长期得不到处理。所以,多级反馈队列调度算法能满足多用户需求。
答:实时系统中通常有着多个实时任务。若处理机的处理能力不够强,有可能因为处理机忙不过来而使某些实时任务得不到及时处理,导致发生难以预料的后果。
答:可分为非抢占式和抢占式两种算法。而非抢占式算法又分为非抢占式轮转和优先调度算法;抢占式调度算法又分为基于时钟中断的抢占式优先权和立即抢占式优先权调度算法。
答:根据任务的开始截止时间确定的任务优先级调度算法。截止时间越早则优先级越高。该算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的先后排序。
举例:非抢占式调度方式用于非周期实时任务。图3-9是将该算法用于非抢占调度方式之例。该例中具有四个非周期任务,它们先后到达。系统首先调度任务1执行,在任务1执行期间,任务2、3又先后到达。由于任务3的开始截止时间早于任务2,故系统在任务1后将调度任务3执行。在此期间又到达作业4,其开始截止时间仍是早于任务2的,故在任务3执行完后,系统又调度任务4执行,最后才调度任务2执行。
答:该算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,
为该任务所赋予的优先级就愈高,以使之优先执行。例如,一个任务在200 ms 时必须完
成,而它本身所需的运行时间就有100 ms,因此,调度程序必须在100 ms 之前调度执行,
该任务的紧急程度(松弛程度)为100 ms。又如,另一任务在400 ms 时必须完成,它本身
需要运行 150 ms,则其松弛程度为 250 ms。
答:死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状
态时,若无外力作用,它们都将无法再向前推进。
产生死锁的原因为竞争资源和进程间推进顺序非法。其必要条件是:互斥条件、请求和
保持条件、不剥夺条件、环路等待条件。
答:解决死锁的四种方法即预防、避免、检测和解除死锁中,预防死锁最容易实现;
避免死锁使资源的利用率最高。
答:(1)摈弃“请求和保持”条件,就是如果系统有足够资源,便一次性把进程需要的所
有资源分配给它;
(2)摈弃“不剥夺”条件,就是已经拥有资源的进程,当它提出新资源请求而不能立即
满足时,必须释放它已保持的所有资源,待以后需要时再重新申请;
(3)摈弃“环路等待”条件,就是将所有资源按类型排序标号,所有进程对资源的请求
必须严格按序号递增的次序提出。
答:(1)可以。银行家算法各种资源数量分别为10、5、7,在T0时刻的资源分配如图所示:
(2)具体分析如下:
① Requst0(0,1,0)<=Need0(7,4,3);
②Requst0(0,1,0)<=Available(2,3,0);
系统先假定可为P0分配资源,并修改Available,Allocation和Need向量,由此形成
的资源变化情况如下图所示:
(3)P0请求资源:P0发出请求向量Requst0(0,1,0),系统按银行家算法进行检查:
① Requst0(0,1,0)<=Need0(7,4,3);
②Requst0(0,1,0)<=Available(2,3,0);
③ 系统暂时先假定可为P0分配资源,并修改______________有关数据,如下图所示
综上所述系统可以将资源分配给它。
答: (1)安全,因为存在安全序列{P0,P3,P4,P1,P2}
(2)系统能分配资源,分析如下。
① Request(1,2,2,2) <=Need2(2,3,5,6);
② Request(1,2,2,2) <=Available2(1,3,5,4)改成Available2(1,6,2,2);
③系统先假定可为P2分配资源,并修改Available2,Allocation2和Need2向量,
由此形成的资源变化情况如下图所示:
④ 再利用安全性算法检查此时系统是否安全。如下图
由此进行的安全性检查得知,可以找到一个安全序列{P2,P0,P1,P3,P4}。
答:设置多个存储器可以使存储器两端的硬件能并行工作;采用多级存储系统,特别是
Cache 技术,是减轻存储器带宽对系统性能影响的最佳结构方案;在微处理机内部设置各
种缓冲存储器,减轻对存储器存取的压力。增加CPU中寄存器数量大大缓解对存储器压力。
答: (1)绝对装入方式,只适用于单道程序环境。
(2)可重定位装入方式,适用于多道程序环境。
(3)动态运行时装入方式,用于多道程序环境;不允许程序运行时在内存中移位置。
答:静态链接是指在程序运行前,先将各目标模块及它们所需的库函数,链接成一个完整的
装配模块,以后不再拆开的链接方式。
装入时动态链接是指将用户源程序编译后得到的一组目标模块,在装入内存时采用边装
入边链接的链接方式。
运行时动态链接是指对某些目标模块的链接,是在程序执行中需要该目标模块时,才对
它进行的链接。
答:由链接程序Linker将编译后形成的一组目标模块,以及它们需要的库函数链接在一起,
形成一个完整的装入模块Load Module。主要工作是修改程序内的相对地址和修改目标程
序中的外部调用标号。
答:在每个分区的起始部分,设置一些控制分区分配的信息,以及用于链接各分区所用的前
向指针;在分区尾部设置一个后向指针,通过前后向链接指针,将所有空闲分区链成一个双
向链。当分区分配出去后,把状态位由“0”改为“1”。
答:在程序执行过程中,每当访问指令或数据时,将要访问的程序或数据的逻辑地址转换成
物理地址,引入了动态重定位;
具体实现方法是在系统中增加一个重定位寄存器,用来装入程序在内存中的起始地址,
程序执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加之和,从而实现
动态重定位。
答:在采用首次适应算法回收内存时可能出现4种情况:
(1)回收区前邻空闲区。将回收区与前邻空闲区合并,将前邻空闲区大小修改为两者之和。
(2)回收区后邻空闲区。将两区合并,改后邻空闲区始址为回收区始址,大小为两者之和。
(3)回收区前后均邻空闲区。将三个分区合并,修改前邻空闲区大小为三者之和。
(4)回收区前后均不邻空闲区。为回收区设置空闲区表项,填入回收区始址和大小并插入
空闲区队列。
答:当 时, ;当 时,
答:分区存储管理中的常用分配策略:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。
首次适应算法优缺点:保留了高址部分的大空闲区,有利于后来的大型作业分配;低址部分不断被划分,留下许多难以利用的小空闲区,每次查找都从低址开始增加了系统开销。
循环首次适应算法优缺点:内存空闲分区分布均匀,减少了查找系统开销;缺乏大空闲分区,导致不能装入大型作业。
最佳适应算法优缺点:每次分配给文件的都是最适合该文件大小的分区,内存中留下许多难以利用的小空闲区。
最坏适应算法优缺点:剩下空闲区不太小,产生碎片几率小,对中小型文件分配分区操作有利;存储器中缺乏大空闲区,对大型文件分区分配不利。
答:交换技术将暂不需要的作业移到外存,让出内存空间以调入其它作业,交换到外存的作
业也可以被再次调入。目的是解决内存紧张问题,带来的好处是进一步提高了内存利用率和
系统吞吐量。
答:系统应具备三方面功能:对换空间管理,进程换出,进程换入。
答:在以进程为单位进行对换时,并非每次都将整个进程换出。这是因为:
(1)从结构上讲,进程由程序段、数据段和进程控制块组成的,其中进程控制块总有部分或全部常驻内存,不被换出。
(2)程序段和数据段可能正被若干进程共享,此时它们也不能换出。
答:动态重定位技术、虚拟存储技术、多道程序设计技术。
答:
1) 方便编程。用户通常把自己的作业按照逻辑关系划分为若干段,每段都从0 编址,并
有自己名字和长度。因此,希望要访问的逻辑地址是由段名和段内偏移量决定。
2) 信息共享。在实现对程序和数据的共享时,是以信息逻辑单位为基础。分页系统中的页
是存放信息的物理单位,无完整意义,不便于共享;段是信息的逻辑单位。为了实现段
的共享,希望存储管理能与用户程序分段的组织方式相适应。
3) 信息保护。对信息的逻辑单位进行保护,分段能更有效方便地实现信息保护功能。
4) 动态增长。在实际应用中,有些段特别是数据段,在使用过程中会不断增长,事先又无
法确切知道增长多少。分段存储管理方式能较好解决这个问题。
5) 动态链接。运行时先将主程序对应的目标程序装入内存并启动运行,运行过程中又需要
调用某段时,才将该段调入内存链接。所以动态链接也要求以段作为管理单位。
答:在CPU给出有效地址后,由地址变换机构自动将页号P送入高速缓冲寄存器,并将此
页号与高速缓存中的所有页号比较,若找到匹配页号,表示要访问的页表项在快表中。可直
接从快表读出该页对应物理块号,送到物理地址寄存器中。如快表中没有对应页表项,则再
访问内存页表,找到后,把从页表项中读出物理块号送地址寄存器;同时修改快表,将此页
表项存入快表。但若寄存器已满,则OS必须找到合适的页表项换出。
答:分页系统的每个页面是分散存储的,为了实现信息共享和保护,页面之间需要一一对应,
为此需要建立大量的页表项;而分段系统的每个段都从0 编址,并采用一段连续的地址空
间,在实现共享和保护时,只需为要共享和保护的程序设置一个段表项,将其中的基址与内
存地址一一对应就能够实现。
答:
(1)页是信息的物理单位,分页是为了实现离散分配方式,以消减内存的外部零头,提高内存利用率。段则是信息的逻辑单位,它含有一组相对完整的信息。
(2)页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由
机械硬件实现的,因而在系统中只能有一种大小的的页面;而段的长度却不固定,决定于用户
所编写的程序,通常由编译程序在对原程序进行编译时,根据信息的性质来划分。
(3)分页的作业地址空间是一维的,而分段作业地址空间则是二维的。
答:
(1)连续分配是指为一个用户程序分配一个连续的地址空间,包括单一和分区两种分配方
式。单一方式将内存分为系统区和用户区,最简单,只用于单用户单任务操作系统;分区方
式分固定和动态分区。
(2)离散分配方式分为分页、分段和段页式存储管理。分页式存储管理旨在提高内存利用
率,分段式存储管理旨在满足用户(程序员)的需要,段页式存储管理则将两者结合起来,具
有分段系统便于实现、可共享、易于保护和动态链接等优点,又能像分页系统很好解决外部
碎片及为各段可离散分配内存等问题,是比较有效的存储管理方式;
答:虚拟存储器有多次性、对换性、虚拟性三大特征。最本质的特征是虚拟性。
答:(1)请求分页(段)的页(段)表机制(2)缺页(段)中断机构(3)地址变换机构
答:
(1)在分页请求系统中是在分页的基础上,增加了请求调页功能和页面置换功能所形成的
页式虚拟存储系统。允许只装入少数页面的程序(及数据),便启动运行。
(2)在请求分段系统中是在分段系统的基础上,增加了请求调段及分段置换功能后形成的
段式虚拟存储系统。允许只装入少数段(而非所有段)的用户程序和数据,即可启动运行。
答:页表应包括:页号、物理块号、状态位P、访问字段A、修改位M和外存地址。
其中状态位P 指示该页是否调入内存,供程序访问时参考;访问字段A 用于记录本页在一
段时间内被访问的次数,或最近已有多长时间未被访问,提供给置换算法选择换出页面时参
考;修改位M 表示该页在调入内存后是否被修改过;外存地址用于指出该页在外存上的地
址,通常是物理块号,供调入该页时使用。
答:请求分页系统中的缺页从何处调入内存分三种情况:
(1)系统拥有足够对换区空间时,可以全部从对换区调入所需页面,提高调页速度。在进程运行前将与该进程有关的文件从文件区拷贝到对换区。
(2)系统缺少足够对换区空间时,不被修改的文件直接从文件区调入;当换出这些页面时,未被修改的不必换出,再调入时,仍从文件区直接调入。对于可能修改的,在换出时便调到对换区,以后需要时再从对换区调入。
(3)UNIX 方式。未运行页面从文件区调入。曾经运行过但被换出页面,下次从对换区调入。UNIX系统允许页面共享,某进程请求的页面有可能已调入内存,直接使用不再调入。
答:采用的页面置换算法有:最佳置换算法和先进先出置换算法,最近最久未使用(LRU)置换算法,Clock置换算法,最少使用置换算法,页面缓冲算法等。
答:固定分配方式是基于进程的类型(交互型)或根据程序员、系统管理员的建议,为每个进程分配固定页数的内存空间,整个运行期间不再改变;采用可变分配方式有全局置换和局部置换两种,前者易于实现,后者效率高。
答:当分配给该作业的物理块数M为3时,缺页7次,缺页率: 7/12=0.583;
当分配给该作业的物理块数M为4时,缺页4次,缺页率: 4/12=0.333.
-------以上