完整版佛山科学技术学院期末总复习学长整理终极版操作系统.docx
《完整版佛山科学技术学院期末总复习学长整理终极版操作系统.docx》由会员分享,可在线阅读,更多相关《完整版佛山科学技术学院期末总复习学长整理终极版操作系统.docx(37页珍藏版)》请在冰豆网上搜索。
![完整版佛山科学技术学院期末总复习学长整理终极版操作系统.docx](https://file1.bdocx.com/fileroot1/2022-12/31/0b62b060-bdbf-4ae3-9b6c-6cefb73d6a56/0b62b060-bdbf-4ae3-9b6c-6cefb73d6a561.gif)
完整版佛山科学技术学院期末总复习学长整理终极版操作系统
●什么是进程?
什么是线程?
进程与线程有何区别?
答:
(1)进程是具有独立功能程序在某个数据集合上的一次执行过程。
(2分)
(2)线程是进程内的一个执行实体或执行单元。
(2分)
(3)进程和线程的区别:
(a)不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。
一个进程的线程在另一个进程内是不可见的。
(b)在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。
(2分)
1)请叙述分段式存储管理的基本原理,通过绘制地址变换原理图说明分段式存储管理中逻辑地址到物理地址的变换过程。
(10分)
2)请叙述SPOOLING系统的概念和组成。
(10分)
1)请叙述段式存储管理的基本原理,结合动态段式管理说明地址变换过程。
答:
段式存储管理的基本思想是:
把程序按照内容或过程(函数)关系分成段,每个段由自己的名字。
一个用户作业或进程所包含的段对应一个二维线性虚拟空间,即一个二维虚拟存储器。
段式存储管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟存储器地址转换成实际的内存物理地址。
段式存储管理把那些机场访问的段驻留内存,而把那些不经常访问的段存放到外存,需要的时候再调到内存。
段式管理技术通过段表实现内存分配和回收工作。
下面以进程某条指令访问数据为例说明地址变换过程。
当进程的某条指令发出数据访问指令,系统根据指令中给定的虚拟地址,虚拟地址中包括段号和段内偏移,首先通过段表地址寄存器查找该段号的内存物理起始地址,如果该段不在内存则将该段调入内存,然后将得到的段的内存起始地址加上指令中的页内偏移,至此得到该指令访问数据的物理地址。
参见下图。
2)请叙述SPOOLING系统的概念和组成。
答:
为了缓和CPU的高速与I/O设备的低速之间的矛盾,引入了脱机输入、脱机输出,使外围设备操作与CPU数据处理同时进行,实现了联机情况下的同时外围设备操作的技术称为SPOOLING.其组成主要有三部分:
1)输入输出井:
在磁盘上开辟的用于缓存进程数据的输入、输出存储空间;2)输入、输出缓冲区:
在内存开辟的用于缓和CPU与磁盘速度不匹配的矛盾;3)输入、输出处理进程:
用于处理输入、输出过程。
组成如下图:
1、操作系统:
操作系统是计算机系统中的一个系统软件,它是这样一些程序的集合:
它们管理和控制计算机系统中的硬件及软件资源,合理地组织计算机工作流程,以便有效地利用这些资源为用户提供一个功能强大、使用方便和可扩展的工作环境,从而在计算机与用户之间起到接口的作用。
2、原语:
操作系统中将具有特殊功能的、不可中断或不能并发的程序段成为原语。
3、访问控制表:
把系统的保护矩阵按照列向量进行分解并进行存储的表。
描述了客体能够被主体进行操作的权限。
4、死锁:
一组并发进程中的每个进程都在等待只能由该集合中的其它一个进程才能引发的事件,称这一组进程产生了死锁。
5、文件:
是一组赋名的相关联字符流的集合。
进程:
一个具有独立功能程序在某个特定数据集上在处理机上的执行过程和分配资源的基本单位。
权能表:
把系统的保护矩阵按照行向量进行分解并进行存储的表。
描述了主体能够操作客体的相关权限。
虚拟存储器:
虚拟存储器将进程的指令和数据的地址称作虚拟地址,不考虑实际物理存储空间的大小和信息存放位置,只规定进程中互相关联的信息的相对位置。
进程同步:
把异步环境下的一组并发进程,因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按照一定的速度执行的过程,称为进程同步。
文件系统:
操作系统中与管理文件有关的程序和数据称作文件系统。
●简述系统调用与过程(函数)调用的区别(7分)
答:
⑴调用形式不同。
过程使用一般调用指令,其转向地址是固定不变的,包含在跳转语句中,但系统调用中不包含处理程序入口,而仅提供功能号,按功能号调用。
⑵被调用代码的位置不同。
过程调用是一种静态调用,调用程序和被调用代码在同一程序内,经过连接编辑后作为目标代码的一部分。
当过程升级或修改时,必须重新编译连接。
而系统调用是一种动态调用,系统调用的处理代码在调用程序之外(在操作系统中),这样一来,系统调用处理代码升级或修改时,与调用程序无关,而且调用程序也大大缩短,减少了调用程序占用的存储空间。
⑶提供方式不同。
过程往往由编译系统提供,不同编译系统提供的过程可以不同;系统调用由操作系统提供,一旦操作系统设计好,系统调用的功能、种类与数量固定不变了。
⑷调用的实现不同。
程序使用一般机器指令(调转指令)来调用过程,是在用户态运行的;程序执行系统调用,是通过中断机构来实现,需要从用户态转变到核心态,在管理状态执行。
因此程序执行系统调用安全性好。
●程序跟进程的区别
程序:
1.顺序性
2.封闭性
3.可再现性
进程:
1.动态性
2.并发性
3.独立性
4.异步性
●什么是死锁?
产生死锁的原因和必要条件是什么?
答:
(1)在多道程序系统中,当一组进程中的每个进程均无限期地等待被该组进程中的另一进程所占有且永远不会释放的资源,此时的系统处于死锁状态,简称死锁。
(2分)
(2)死锁产生的原因:
(a)系统提供的资源有限;
(b)进程推进顺序不当。
(2分)
(3)产生死锁的必要条件:
互斥条件:
进程对所分配到的资源进行排他性使用
不可剥夺条件:
进程在保持资源的同时,又去申请新的资源。
请求和保持条件:
进程已获得的资源,在未使用完之前,不能被剥夺。
循环等待条件:
存在资源-进程的循环链。
●简述死锁的防止与死锁的避免的区别。
死锁的防止是系统预先确定一些资源分配策略,进程按规定申请资源,系统按预先规定的策略进行分配,从而防止死锁的发生。
(3分)
而死锁的避免是当进程提出资源申请时系统测试资源分配,仅当能确保系统安全时才把资源分配给进程,使系统一直处于安全状态之中,从而避免死锁。
●说明作业调度,中级调度和进程调度的区别,并分析下述问题应由哪一级调度程序负责。
(1)在可获得处理机时,应将它分给哪个就绪进程;
(2)在短期繁重负载下,应将哪个进程暂时挂起。
答:
(1)
作业调度用于决定把外存中处于后备队列中的哪些作业调入内存,并为它们创建进程,分配资源,然后将新创建进程插入就绪队列;
中级调度负责将内存中暂时不具备运行条件的进程换到外存交换区存放,但内存空闲时,又将外存中具备运行条件的进程重新换入内存;
进程调度决定将处理机分配给就绪进程队列的哪个进程。
(4分)
(2)进程调度、中级调度(2分)
●说明进程在三个基本状态之间转换的典型原因?
(1)处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程就由就绪状态变为执行状态
(2)正在执行的进程因发生某事件而无法执行,如暂时无法取得所需资源,则由执行状态转变为阻塞状态。
(3)正在执行的进程,如因时间片用完或被高优先级的进程抢占处理机而被暂停执行,该进程便由执行转变为就绪状态。
●什么是虚拟存储器,其特点是什么?
(5分)
答:
虚拟存储器是一种存储管理技术,其思想是把辅助存储器作为对主存储器的扩充,向用户提供一个比实际主存大得多的逻辑地址空间。
其特点是:
(1)程序装入时,不必将其全部读入到内存,而只需将当前需要执行的部分页或段读入到内存,就可让程序开始执行;
(2)在程序执行过程中,如果需执行的指令或访问的数据尚未在内存(称为缺页或缺段),则由处理器通知操作系统将相应的页或段调入到内存,然后继续执行程序;
(3)操作系统将内存中暂时不使用的页或段调出保存在外存上,从而腾出空间存放将要装入的程序以及将要调入的页或段(即具有请求调入和置换功能,只需程序的一部分在内存就可执行)。
●Spooling系统由几部分组成?
Spooling系统有哪些特点?
Spooling系统由输入井和输出井、输入缓冲区和输出缓冲区、输入进程和输出进程共3部分组成。
Spooling系统的优点有:
(1)提高了I/O速度。
I/O操作时针对输入井和输出井,避免了操作低速I/O设备的速度不匹配。
(2)将独占设备改造为共享设备。
Spooling系统没有为任何进程实际分配设备,只是在输入井或输出井中为进程分配一个存储区和建立一张I/O请求表。
(3)实现了虚拟设备功能。
宏观上有多个进程在同时使用一台独占设备,但对于每一个进程而言,他们认为自己独占了一个设备。
●在一个分页存储管理系统中,页长为4KB,某一作业的页表如图1所示,虚拟地址3000对应的物理地址为152888
3000=0*4096+3000
3*4K+3000=152888
页号
页面号(块号)
0
3
1
4
2
6
●某虚拟存储器中的用户空间共有32个页面,每页2KB。
假定某时刻系统为用户的第0、1、2、3页分别分配的物理块号为5、10、4、7,虚拟地址1A6F对应的物理地址是多少?
页号
页面号(块号)
0
5
1
10
2
4
3
7
解答:
1A6F=6767
6767=3*2048+623
7*2K+623=14959
●某操作系统采用可变分区分配存储管理方法,用户区为512K且始址为0,用空闲分区表管理空闲分区。
若分配时采用分配空闲区低地址部分的方案,且初始时用户区的512K空间空闲,对下述申请序列:
Req(300K),req(100K),release(300K),req(150K),req(30K),req(40K),req(60K),release(30K)
回答下列问题:
(1)采用首次适应算法,空闲分区中有哪些空闲块(给出图示,并给出始址、大小)?
(2)采用最佳适应算法,空闲分区中有哪些空闲块(给出图示,并给出始址、大小)?
●假定某移动磁盘上,磁头的当前位置为100磁道,磁头正向磁道号增加方向移动。
现有一磁盘读写请求队列:
23,376,205,132,19,61,190,398,29,4,18,40。
请写出:
(1)用最短寻道时间优先算法,列出响应的次序,并计算平均寻道长度。
(2)用电梯调度算法,列出响应的次序,并计算平均寻道长度
●某系统有R1、R2和R3共三种资源,在T0时刻P1、P2、P3和P4这4个进程对资源的占用和需求情况如下表所示,此时系统的可用资源向量为(2,1,2)。
进程
最大资源需求量
已分配资源数量
R1
R2
R3
R1
R2
R3
P1
3
2
2
1
0
0
P2
6
1
3
4
1
1
P3
3
1
4
2
1
1
P4
4
2
2
0
0
2
问题2:
如果此时P1和P2均发出资源请求向量request(1,0,1),为了保证系统的安全性,应该如何分配资源给这两个进程?
说明你所采用策略的原因。
若此时P1发出资源请求request1(1,0,1),按银行家算法进行检查:
request1(1,0,1)<=need1(2,2,2)
request1(1,0,1)<=available(2,1,2)
试分配并修改相应数据结构,资源分配情况如下:
进程
allocation
need
available
P1
P2
P3
P4
2,0,1
4,1,1
2,1,1
0,0,2
1,2,1
2,0,2
1,0,3
4,2,0
1,1,1
再利用安全性算法检查系统是否安全,可用资源Available(1,1,1)已不能满足任何进程,故系统进入不安全状态,此时系统不能将资源分配给P1。
(2分)
若此时P2发出资源请求request2(1,0,1),按银行家算法进行检查:
Request2(1,0,1)<=need2(2,0,2)
Request2(1,0,1)<=available(2,1,2)
试分配并修改相应数据结构,资源分配情况如下:
进程
allocation
need
available
P1
P2
P3
P4
1,0,0
5,1,2
2,1,1
0,0,2
2,2,2
1,0,1
1,0,3
4,2,0
1,1,1
再利用安全性算法检查系统是否安全,可得此时刻的安全性分析情况:
进程
Work
Need
Allocation
Work+Allocation
Finish
P2
P3
P4
P1
1,1,1
6,2,3
8,3,4
8,3,6
1,0,1
1,0,3
4,2,0
2,2,2
5,1,2
2,1,1
0,0,2
1,0,0
6,2,3
8,3,4
8,3,6
9,3,6
True
True
True
true
●设有一缓冲池P,P中含有20个可用缓冲区,一个输入进程将外部数据读入P,另有一个输出进程将P中数据取出并输出。
若讲程每次操作均以一个缓冲区为单位,试用记录型信号量写出两个进程的同步算法,要求写出信号量的初值。
解:
semaphoremutex=1;
semaphoreempty=20;
semaphorefull=0;
intin,out=0;
itemp[20];
voidProducer(){
while(ture){
produceraniteminnextp;
wait(empty);
wait(mutex);
p[in]:
=nextp;
in:
=(in+1)mod20;
signal(mutex);
signal(full);
}
}
voidConsumer(){
while(ture){
wait(full);
wait(mutex);
nextc:
=p[out];
out:
=(out+1)mod20;
signal(mutex);
signal(empty);
}
}
●有一只最多能装2只兔子的铁笼子,猎人仅能向笼子中放入兔子(每次只能放入1只),若笼子是满的,则猎人必须等待;饭店老板仅能从笼子中取兔子(每次只能取出1只),若笼子是空的则他也必须等待。
假设初始时笼子是空的。
定义信号量并初始化,使用P、V操作模拟猎人和饭店老板进程之间的同步与互斥。
mutex,empty,fullsemaphore;1分
mutex=1,empty=2;full=0;2分
以下内容7分
cobegin
pcocedureHunter(x)
begin:
P(empty);
P(mutex);
//放兔子;
V(mutex);
V(full);
Gotobegin;
pcocedureBoss(x)
begin:
P(full);
P(mutex);
//放兔子;
V(mutex);
V(empty);
Gotobegin;
coend;
●有三个进程PA、PB和PC合作解决文件打印问题:
PA将文件记录从磁盘读入主存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。
缓冲区的大小等于一个记录的大小。
请用PV操作来保证文件的正确打印。
Empty1,empty2,full1,full2:
semaphore;(1分)
Empty1=empty2=1;(1分)
Full1=full2=0;(1分)
Main()(1分)
{
Cobegin
PA();
PB();
PC();
coend;
}
PA()(2分)
{
While
(1)
{
从磁盘读一个记录;
P(empty1);
将记录存入缓冲区1;
V(full1);
}
}
PB()(2分)
{
While
(1)
{
P(full1);
从缓冲区1中取出记录;
V(empty1);
P(empty2);
将记录存入缓冲区2;
V(full2);
}}
PC()(2分)
{
While
(1)
{
P(full2);
从缓冲区2中取出记录;
V(empty2);
打印记录;
}
}
●有两组进程分别为生产者与消费者,它们共享可以存放K个产品的缓冲区。
要求
1)生产者、消费者对缓冲区进行互斥访问
2)生产者不能往满的缓冲区中存放产品
3)消费者不能从空的缓冲区中取产品
请用信号量机制解决生产者进与消费者进程的并发问题。
说明:
Empty:
semaphore:
=k;
Fuul:
semaphore:
=0
Mutex:
semaphore:
1
Conbegin
//生产者进程
Prodessproducer
Begin
L1:
producem=product;
wait(empty);
wait(mutex);
Putmtobuffer;
signal(mutex);
signal(full);
GotoL1;
END
//消费者进程
Prodessconsumer
Begin
L2:
wait(full);
wait(mutex);
Getmfrombuffer;
signal(mutex);
signal(empty);
Consumeminapplication;
GotoL2;
END
Coend
●现有两组并发进程分别为读者与写者两种角色,它们共享一个文件。
要求
1)共享读:
同一时刻允许至多N个读者对文件进行只读操作;
2)排它写:
任何时刻只允许一个写者进行写文件操作,写文件操作时不允许其它任何读者或写者对文件进行操作。
请用信号量机制解决读者与写者进程的并发问题。
说明:
Mutex,L:
semaphore
Mutex=1;
L=N;
读者进程:
reader(data):
begin
REPEAT
Swait(L,1,1);
Swait(Mutex,1,0);
//访问文件
Ssignal(L,1);
UNTILfalse
end
写者进程
writer(data):
begin
//产生数据
REPEAT
Swait(L,N,0;Mutex,1,1);
//在文件中存入数据
Ssignal(Mutex,1);
UNTILfalse
end
●两个程序,其中A请求系统服务时间5s,B请求系统服务时间为100s,设第0到第5秒前,CPU运行C进程。
在第1秒时B进入系统内存,第2秒时A进入内存。
当CPU空闲,需要调度进程时根据不同的算法选择A或B。
问:
分别计算FCFS算法下和SJF算法下,A和B的周转时间、带权周转时间。
FCFS
Job
进入时间
运行时间
开始时刻
完成时刻
周转时间
带权周转时间
A
2
5
105
110
110-2=108
108/5=21.6
B
1
100
5
105
105-1=104
104/100=1.04
周转时间=(104+108)/2=106带权周转时间=(21.6+1.04)/2=11.32
SJF
Job
进入时间
运行时间
开始时刻
完成时刻
周转时间
带权周转时间
A
2
5
5
10
10-2=8
8/5=1.6
B
1
100
10
110
110-1=109
109/100=1.09
周转时间=(8+109)/2=58.8
带权周转时间=(1.6+1.09)/2=1.345
●设系统中有三种类型的资源(A,B,C)和五个进程(P1,P2,P3,P4,P5),A资源的数量17,B资源的数量为5,C资源的数量为20。
在T0时刻系统状态如下表所示。
系统采用银行家算法来避免死锁。
请回答下列问题:
(1)T0时刻是否为安全状态?
若是,请给出安全序列。
(2)若进程P4请求资源(2,0,1),能否实现资源分配?
为什么?
(3)在
(2)的基础上,若进程P1请求资源(0,2,0),能否实现资源分配?
为什么?
T0时刻系统状态
进程
最大资源需求量
已分配资源量
系统剩余资源数量
A
B
C
A
B
C
A
B
C
P1
5
5
9
2
1
2
2
3
3
P2
5
3
6
4
0
2
P3
4
0
11
4
0
5
P4
4
2
5
2
0
4
P5
4
2
4
3
1
4
(1)T0时刻为安全状态。
其中的一个安全序列为(P4,P5,P3,P2,P1)
(其他可能的安全序列有:
(P4,P5,X,X,X),(P4,P2,X,X,X),(P4,P3,X,X,X),(P5,X,X,X,X))
(2)可以为P4分配资源,因为分配后的状态还是安全的,其安全序列的分析如下表:
WORK
NEED
ALLOCATION
新WORK
FINISH
2,3,3
分配给P4:
(2,0,1)
0,3,2
P4
0,3,2
0,2,0
4,0,5
4,3,7
True
P5
4,3,7
1,1,0
3,1,4
7,4,11
True
P1
7,4,11
3,4,7
2,1,2
9,5,13
True
P2
9,5,13
1,3,4
4,0,2
13,5,15
True
P3
13,5,15
0,0,6
4,0,5
17,5,20
True
(3)进程P1再请求资源(0,2,0),则不能为之分配资源。
因为分配资源后,不存在安全序列,其分析如下表:
WORK
NEED
ALLOCATION
新WORK
FINISH
0,3,2
分配给P1:
(0,2,0)
0,1,2
P4
0,2,0
此时,WORK不能满足任何一个进程的请求使之运行结束,即进入了不安全状态。
False
P5
1,1,0
False
P1
3,2,7
False
P2
1,3,4
False
P3
0,0,6
False
●考虑下面的页访问串:
1,2,3,4,2,1,5,6,2,1,2,3,7,6,3。
假定物理块数为3,若应用下面的页面替换算法,分别会出现多少次缺页?
Optimal算法的情况如下表:
页面走向
1
2
3
4
2
1
5
6
2
1
2
3
7
6
3
物理页0
1
1
1
1
1
1
3
3
物理页1
2
2
2
2
2
2
7
物理页2
3
4
5
6
6
6