1 / 16
文档名称:

操作系统复习知识点-你值得拥有.doc

格式:doc   大小:125KB   页数:16页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统复习知识点-你值得拥有.doc

上传人:莫比乌斯 2022/10/26 文件大小:125 KB

下载得到文件列表

操作系统复习知识点-你值得拥有.doc

文档介绍

文档介绍:该【操作系统复习知识点-你值得拥有 】是由【莫比乌斯】上传分享,文档一共【16】页,该文档可以免费在线阅读,需要了解更多关于【操作系统复习知识点-你值得拥有 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。重要的知识点:
进程与程序的差异。
(1)进程是动态的,而程序是静态的。
(2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程
的程序不能作为1个独立单位得到操作系统的认可。
(3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演
出和剧本的关系
进程的三种基本状态及其状态转换。
、V操作的概念及如何用其实现同步和互斥。
4处理机调度的概念。
在多道程序设计系统中,内存中有多道程序运行,他们相互争夺处理机这一重要的资源。处理机调度就是从就绪队列中,按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行。
处理机调度是把处理机分配给就绪队列中的一个进程。在许多系统中,这个调度活动分成三个层次:高级调度、中级调度和低级调度。
5操作系统的基本特征和功能
特征:
:平行性、引入进程、引入线程
:是指系统中的资源可供内存中多个并发执行的进程共同使用。互斥共享、同时访问方式
:是指通过某种技术把一个物理实体变为若干个逻辑上的对应物。分为时分复用和空分复用技术。
:进程是以人们不可预知的速度向前推进,此即进程的异步性。
功能:
:进程控制,进程同步,进程通信,调度
:内存分配、内存保护、地址映射、内存扩充
:缓冲管理、设备分配、设备处理
:文件存储空间的管理、目录管理、文件的读/管理和保护。操作系统与用户之间接口用户接口、程序接口
6当前的高级通信机制有哪些?
进程通信分类:
低级通信:
特点:交换的信息量少,仅仅是一些数据和状态的变化;通信由程序员完成。如P,V原语实现的进程互斥与同步。
2、高级通信;
特点:每次交换的信息量可以很大;系统提供高效、简捷的信息传输命令。
1、共享存储器系统(Shared-MemorySystem)
共享数据结构的通信方式:
公用数据结构的设置及对进程间同步的管理,都是由程序员完成,效率低,传递数据量少;
共享存储区的通信方式:
进程可随时向系统申请一块存储区,并指定该区的关键字,用于进程通信。
2、管道通信(PipeCommunication)用以连接一个读进程和写进程以实现他们之间的通信的一个共享文件
3、消息传递系统(MassagePassingSystem)格式化的消息为单位
7在生产者和消费者问题中,如果将两个wait操作即wait(full)和wait(mutex)互
换位置,或者将signal(mutex)和signal(full)互换位置,结果会如何?
在生产者—消费者问题中,如果将两个wait操作,即wait(full)和wait(mutex)互换位置后,可能引起死锁。考虑系统中缓冲区全满时,若一生产者进程先执行了wait(mutex)操作并获得成功,则当再执行wait(empty)操作时,它将因失败而进入阻塞状态,它期待消费者进程执行signal(empty)来唤醒自己,在此之前,它不可能执行signal(mutex)操作,从而使试图通过执行wait(mutex)操作而进入自己的临界区的其他生产者和所有消费者进程全部进入阻塞状态,这样容易引起系统死锁。
若signal(mutex)和signal(full)互换位置后只是影响进程对临界资源的释放次序,而不会引起系统死锁,因此可以互换位置。
8操作系统中采用缓冲技术的目的是什么?
//操作系统中采用缓冲技术的目的是为了增强系统并行操作的能力.
(如打印机缓冲区)。
,放宽对CPU中断响应时间的限制。
(加了打印机缓冲后打印机和CPU并行工作)。
9SPOOLing系统由哪几部分组成?以打印机为例说明如何利用SPOOLing技术实现多个进程对打印机的共享

SPOOling系统的组成:SPOOLIng系统是对脱机I/O工作的模拟,其必须有高速随机外存(通常采用磁盘)的支持SPOOLING系统有以下四个部分:,为磁盘上开辟的两大存储空间,分别模拟脱机输入/出时的磁盘并用于收容I/,在内存中开辟,,用于控制I/,由系统为各个I/O请求进程建立的I/:利用一台磁盘阵列控制器,来统一管理和控制一组磁盘驱动器,组成一个高度可靠的快速的大容量磁盘系统??
1输入井和输出井
2输入缓冲区和输出缓冲区
3输入进程SPi和输出进程SPo
4I/O请求队列
10外存文件区的管理应以什么为主要目标?
对外存对换区的管理应以提高换入换出速度为主要目标,对外存文件区的管理应以提高存储空间的利用率为主要目标。
11什么是FCB,它包含哪些信息,作用?
操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息。文件与文件控制块一一对应。文件控制块是文件存在的标志。一个FCB就是目录表中的一个目录项。
基本信息
文件名:标识一个文件的符号名。
文件物理位置:文件在外存上的存储位置,包括存放文件的设备名、起始盘块号、占用的盘块数
文件逻辑结构:流式文件还是记录式文件、记录数;定长记录还是变长记录等。
文件的物理结构:指示文件是顺序文件,还是链接式文件或索引文件等。
存取控制信息类:
文件主的存取权限、核准用户的存取权限以及一般用户的存取权限。
使用信息类:
文件的建立日期和时间、文件上一次修改的日期和时间及当前使用信息(如已打开该文件的进程数、是否被其它进程锁住、文件在内存中是否已被修改但尚未拷贝到盘上。)
12什么是地址变换?
如是是操作系统的存储器管理,则是
(1)保护方式的地址转换:处理器内部的分段单元将逻辑地址转换为线性地址,再由分页单元将线性地址转换为物理地址,物理地址通过地址总线输出选择存储器芯片中的具体存储单元。
(2)实地址方式的地址转换:实地址方式采用实地址存储模型,注意其的主存空间只有1MB=220字节),仅使用地址总线的低20位,其物理地址范围为00000H~FFFFFH。
实地址存储模型也进行分段管理,但有两个限制:
•每个段最大为64KB•段只能开始于低4位地址全为0的物理地址处
实地址方式的段寄存器直接保存20位段基地址的高16位,段内的偏移地址也用16位表示。
这样将逻辑地址转换为物理地址的方法是:
将段寄存器中的数值左移二进制4位(十六进制一位),加上偏移地址就得到20位物理地址。
基本地址变换机制
块表地址变换机制
13设备和内存间的数据传送控制方式有几种?
程序I/O方式
中断驱动I/O控制方式
直接存储器访问控制方式
I/O通道控制方式
14银行家算法
某系统中有10台打印机,有三个进程P1P2P3分别需要8台7台4台若P1P2,P3已申请到4台,2台和2台。试问:按银行家算法能安全分配吗?答:申请后系统把2台机分配给p3,p3完成后释放所有的资源4,再分配给p1,p1完成后释放8,再分配给p2安全状态:指体统能按着某种进程顺序(p1,p2,...pu)来为每个进程pi分配其所需资源,知道满足每个进程对资源的最大需求,是每个进程都可顺利的完成
15分页和分段存储管理方式的地址转换(逻辑地址转换为物理地址),见PPT中的内容。
16给出一个进程序列,会计算采用先来先服务、时间片轮转(q为轮转的时间片)调度算法的平均周转时间、平均带权周转时间。(见教材92的表)
17会计算FIFO、LRU两种置换算法的缺页次数。
18死锁产生的必要条件是什么?
互斥条件;;;。
生产者—消费者问题
—消费者问题
假定在生产者和消费者之间的公用缓冲池中,具有n个缓冲区,这时可利用互斥信号量mutex实现诸进程对缓冲池的互斥使用;利用信号量empty和full分别表示缓冲池中空缓冲区和满缓冲区的数量。又假定这些生产者和消费者相互等效,只要缓冲池未满,生产者便可将消息送入缓冲池;只要缓冲池未空,消费者便可从缓冲池中取走一个消息。
Varmutex,empty,full:semaphore∶=1,n,0;
buffer:array[0,…,n-1]ofitem;
in,out:integer∶=0,0;
begin
parbegin
proceducer:beginrepeat…
produceranitemnextp;…
wait(empty);wait(mutex);
buffer(in)∶=nextp;
in∶=(in+1)modn;
signal(mutex);signal(full);
untilfalse;
end
consumer:begin
repeat
wait(full);wait(mutex);
nextc∶=buffer(out);
out∶=(out+1)modn;
signal(mutex);signal(empty);
consumertheiteminnextc;untilfalse;end
parend
end
在生产者—消费者问题中应注意:首先,在每个程序中用于实现互斥的wait(mutex)和signal(mutex)必须成对地出现;其次,对资源信号量empty和full的wait和signal操作,同样需要成对地出现,但它们分别处于不同的程序中。例如,wait(empty)在计算进程中,而signal(empty)则在打印进程中,计算进程若因执行wait(empty)而阻塞,则以后将由打印进程将它唤醒;最后,在每个程序中的多个wait
操作顺序不能颠倒。应先执行对资源信号量的wait操作,然后再执行对互斥信号量的wait操作,否则可能引起进程死锁。
利用管程解决生产者——消费者问题
(1)put(item)过程。生产者利用该进程将自己生成的产品投入到缓冲池中,并用整型变量count来表示在缓冲池中已有的产品数目,当count>=n时,表示缓冲池已满。生产者等待。
(2)get(item)过程。消费者利用该进程从缓冲池中取出一个产品,当count<=0时,表示缓冲池中已无可取用的产品,消费者等待。
PC管程可描述如下:
typeproducer-consumer=monitor
varin,out,count:integer;
buffer:array[0,….,n-1]ofitem
notfull,notempty:condition;
procedureentryput(item)
begin
ifcount>=;
buffer(in):=nextp;in:=(in+1)modn;
count:=count+1;;
end
procedureentryget(item)
begin
ifcount<=;
nextc:=buffer(out);out:=(out+1)modn;count:=count-1;

end
beginin:=out:=0count:=0
end
利用管程解决生产者——消费者问题时。
produce:begin
(item)unitlfalse;
end
consumer:begin
(item)consumertheiteminnextc
unitlfalse;
end
PV原语的含义
P操作和V操作是不可中断的程序段,称为原语。。信号量sem是一整数,sem大于等于零时代表可供并发进程使用的资源实体数,但sem小于零时则表示正在等待使用临界区的进程数。
P原语操作的动作是:
(1)sem减1;
(2)若sem减1后仍大于或等于零,则进程继续执行;
(3)若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。
V原语操作的动作是:
(1)sem加1;
(2)若相加结果大于零,则进程继续执行;
(3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。
PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。在PV原语执行期间不允许有中断的发生。
用PV原语实现进程的互斥
由于用于互斥的信号量sem与所有的并发进程有关,所以称之为公有信号量。公有信号量的值反映了公有资源的数量。只要把临界区置于P(sem)和V(sem)之间,即可实现进程间的互斥。就象火车中的每节车厢只有一个卫生间,该车厢的所有旅客共享这个公有资源:卫生间,所以旅客间必须互斥进入卫生间,只要把卫生间放在P(sem)和V(sem)之间,就可以到达互斥的效果。以下例子说明进程的互斥实现。
例1
生产围棋的工人不小心把相等数量的黑子和白子混装载一个箱子里,现要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程组成,功能如下:
(1)进程A专门拣黑子,进程B专门拣白子;
(2)每个进程每次只拣一个子,当一个进程在拣子时不允许另一个进程去拣子;
分析:
第一步:确定进程间的关系。由功能(2)可知进程之间是互斥的关系。
第二步:确定信号量及其值。由于进程A和进程B要互斥进入箱子去拣棋子,箱子是两个进程的公有资源,所以设置一个信号量s,其值取决于公有资源的数目,由于箱子只有一个,s的初值就设为1。
实现:
begin
s:semaphore;
s:=1;
cobegin
processA
begin
L1:P(s);
拣黑子;
V(s);
gotoL1;
end;
processB
begin
L2:P(s);
拣白子;
V(s);
gotoL2;
end;
coend;
end;
判断进程间是否互斥,关键是看进程间是否共享某一公有资源,一个公有资源与一个信号量相对应。确定信号量的值是一个关键点,它代表了可用资源实体数。如下实例:
例2
某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待。每个购票者可看成一个进程。
分析:第一步:确定进程间的关系。售票厅是各进程共享的公有资源,当售票厅中多于20名购票者时,厅外的购票者需要在外面等待。所以进程间是互斥的关系。第二步:确定信号量及其值。只有一个公有资源:售票厅,所以设置一个信号量s。售票厅最多容纳20个进程,即可用资源实体数为20,s的初值就设为20。
实现:
begin
s:semaphore;
s:=20;
cobegin
processPI(I=1,2,……)
beginP(s);
进入售票厅;
购票;
退出;
V(s);
end;
coend
       当购票者进入售票厅前要执行P(s)操作,执行后若s大于或等于零,说明售票厅的人数还未满可进入。执行后若s小于零,则说明售票厅的人数已满不能进入。这个实现中同时最多允许20个进程进入售票厅购票,其余进程只能等待。
用PV原语实现进程的同步
与进程互斥不同,进程同步时的信号量只与制约进程及被制约进程有关而不是与整组并发进程有关,所以称该信号量为私有信号量。利用PV原语实现进程同步的方法是:首先判断进程间的关系为同步的,且为各并发进程设置私有信号量,然后为私有信号量赋初值,最后利用PV原语和私有信号量规定各进程的执行顺序。下面我们将例1增添一个条件,使其成为进程间是同步的。
例3
在例1的基础之上再添加一个功能:
(3)当一个进程拣了一个棋子(黑子或白子)以后,必让另一个进程拣一个棋子(黑子或白子)。
分析:
第一步:确定进程间的关系。由功能(1)(2)(3)可知,进程间的关系为同步关系。第二步:确定信号量及其值。进程A和B共享箱子这个公有资源,但规定两个进程必须轮流去取不同色的棋子,因而相互间要互通消息。对于进程A可设置一个私有信号量s1,该私有信号量用于判断进程A是否能去拣黑子,初值为1。对于进程B同样设置一个私有信号量s2,该私有信号量用于判断进程B是否能去拣白子,初值为0。当然你也可以设置s1初值为0,s2初值为1。
实现:
begin
s1,s2:semaphore;
s1:=1;s2:=0;
cobegin
processA
begin
L1:P(s1);
拣黑子;
V(s2);
gotoL1;
end;  
processB
begin
L2:P(s2);
拣白子;
V(s1);
gotoL2;
end;
coend;
end;
另外一个问题就是P原语是不是一定在V原语的前面?回答是否定的。下面看一个例子。
例4
设在公共汽车上,司机和售票员的活动分别是:司机:启动车辆,正常行车,到站停车。售票员:上乘客,关车门,售票,开车门,下乘客。用PV操作对其控制。
分析:
第一步:确定进程间的关系。司机到站停车后,售票员方可工作。同样,售票员关车门后,司机才能工作。所以司机与售票员之间是一种同步关系。
第二步:确定信号量及其值。由于司机与售票员之间要互通消息,司机进程设置一个私有信号量run,用于判断司机能否进行工作,初值为0。售票员进程设置一个私有信号量stop,用于判断是否停车,售票员是否能够开车门,初值为0。
实现:
beginstop,run:semaphore
stop:=0;run:=0;
cobegin
driver:begin
L1:P(run);
启动车辆;
正常行车;
到站停车;
V(stop);
goto L1;
end;
conductor:begin
L2:上乘客;
关车门;
V(run);
售票;
P(stop);
开车门;
下乘客;
gotoL2;
end;
coend;
end;
用PV操作还可以实现进程同步与互斥的混合问题,典型的如:多个生产者和多个消费者共享容量为n的缓存区。这个例子在很多书中都有介绍,在这里就不说了。
PV原语
PV原语通过操作信号量来处理进程间的同步与互斥的问题。其核心就是一段不可分割不可中断的程序。
信号量的概念1965年由著名的荷兰计算机科学家Dijkstra提出,其基本思路是用一种新的变量类型(semaphore)来记录当前可用资源的数量。有两种实现方式:1)semaphore的取值必须大于或等于0。0表示当前已没有空闲资源,而正数表示当前空闲资源的数量;2)semaphore的取值可正可负,负数的绝对值表示正在等待进入临界区的进程个数。
信号量是由操作系统来维护的,用户进程只能通过初始化和两个标准原语(P、V原语)来访问。初始化可指定一个非负整数,即空闲资源总数。
P原语:P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞;
V原语:V是荷兰语Verhogen(增加)的首字母。为唤醒原语,负责把一个被阻塞的进程唤醒,它有一个参数表,存放着等待被唤醒的进程信息。操作为:释放一个被占用的资源(把信号量加1),如果发现有被阻塞的进程,则选择一个唤醒之。
具体PV原语对信号量的操作可以分为三种情况:
1)把信号量视为一个加锁标志位,实现对一个共享变量的互斥访问。
实现过程:
P(mutex);//mutex的初始值为1访问该共享数据;
V(mutex);
非临界区
2)把信号量视为是某种类型的共享资源的剩余个数,实现对一类共享资源的访问。
实现过程:
P(resource);//resource的初始值为该资源的个数N使用该资源;
V(resource);非临界区
3)把信号量作为进程间的同步工具
实现过程:
临界区C1;
P(S);
V(S);
临界区C2;
PV原语操作
信号量
信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作。
本节将从以下几个方面进行介绍--
--------------------------------------------------------------------------------



--------------------------------------------------------------------------------