操作系统考试课程重点 中国海洋大学.docx

上传人:b****6 文档编号:8414768 上传时间:2023-01-31 格式:DOCX 页数:10 大小:24.83KB
下载 相关 举报
操作系统考试课程重点 中国海洋大学.docx_第1页
第1页 / 共10页
操作系统考试课程重点 中国海洋大学.docx_第2页
第2页 / 共10页
操作系统考试课程重点 中国海洋大学.docx_第3页
第3页 / 共10页
操作系统考试课程重点 中国海洋大学.docx_第4页
第4页 / 共10页
操作系统考试课程重点 中国海洋大学.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

操作系统考试课程重点 中国海洋大学.docx

《操作系统考试课程重点 中国海洋大学.docx》由会员分享,可在线阅读,更多相关《操作系统考试课程重点 中国海洋大学.docx(10页珍藏版)》请在冰豆网上搜索。

操作系统考试课程重点 中国海洋大学.docx

操作系统考试课程重点中国海洋大学

1.进程的同步与应用(第二章):

生产者——消费者问题

in:

=(in+1)modn;输入指针加1;(in+1)modn=out;缓冲池满;

out:

=(out+1)modn;输出指针加1;in=out;缓冲池空;

count=0,生产者向缓冲池中投放一个产品count+1,反之消费者从缓冲池中取走有一个产品则count-1;

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

思路2

利用AND信号量解决

可避免因为wait顺序书写错误,引发的死锁问题

方法

生产者:

Swait(empty,mutex);

buffer[in]:

=nextp;

in:

=(in+1)modn;

Ssignal(mutex,full);

消费者:

Swait(full,mutex);

nextc:

=buffer[out];

out:

=(out+1)modn;

Ssignal(mutex,empty);

哲学家问题:

思路1

利用记录型信号量

方法

varchopstick:

array[0,…,4]ofsemaphore;

所有信号量初始值为1;

repeat//第i个哲学家的活动

wait(chopstick[i]);//拿左筷子

wait(chopstick[(i+1)mod5]);//拿右筷子

吃饭;

signal(chopstick[i]);//放左筷子

signal(chopstick[(i+1)mod5]);//放右筷子

思考;

untilfalse;

思路2

利用AND型信号量

方法

varchopstick:

array[0,…,4]ofsemaphore;

所有信号量全部初始化为1;

repeat

Swait(chopstick[i],chopstick[(i+1)mod5]);

吃饭;

Ssignal(chopstick[(i+1)mod5],chopstick[i]);

思考;

untilfalse;

读者——写者问题:

rmutex,wmutex:

semaphore:

=1,1;

readcount:

integer:

=0;

读者进程:

begin

repeat

wait(rmutex);

ifreadcount=0then

wait(wmutex);

readcount:

=readcount+1;

signal(rmutex);

读操作;

wait(rmutex);

readcount:

=readcount–1;

ifreadcount=0then

signal(wmutex);

signal(rmutex);

untilfalse;

end;

写者进程:

begin

repeat

wait(wmutex);

写操作;

signal(wmutex);

untilfalse;

End;

利用信号量集解决

VarL,mx:

semaphore:

=RN,1;

读者进程:

begin

repeat

swait(L,1,1);

swait(mx,1,0);

读操作;

ssignal(L,1);

untilfalse;

end;

写者进程:

begin

repeat

swait(mx,1,1,L,RN,0);

写操作;

ssignal(mx,1);

untilfalse;

end;

2.进程互斥与同步(第二章):

1.进程间的同步关系是必然的,而进程间的互斥关系是偶然的。

在一般情况下,互斥的进程并不知道对方的存在,而同步的进程不仅知道其他进程的存在,还要通过与其他进程的通信来达到相互的协调。

2.互斥的各个进程在各自单独执行是时都可以得到正确的结果,但是当他们在临街区内交叉执行时就可能出现问题。

而同步的各个进程,如果各自单独执行将不会完成作业的特定任务,只有当他们互相配合、相互协调推进是才能得到正确的结果

3.互斥的进程只要求她们不能同时进入临界区,而至于哪个先进入则不会产生运行的错误。

但同步进程的协调关系是建立在它们之间执行时序的基础上的,所以各个进程必须按照严格的先后次序执行

4.互斥是一种特殊的同步。

3.银行家算法(第三章):

Available:

系统中现有资源;Max:

进程所需最大资源;

Allocation:

进程已得到资源;Need:

进程还需要的资源

Request:

进程需要资源数(进程发出的请求)

(1)Request<=Need则判断如果

(2)Request<=Available

则(3)Available[j]:

=Available[j]-Request[j];

Allocation[i,j]:

=Allocation[i,j]+Request[j];

Need[i,j]:

=Need[i,j]-Request[j];

否则等待

(4)安全性检查,如果安全的正式分配资源,不安全就作废资源分配状态,让进程等待:

Work:

=Available系统中现有各类资源的数目

Finish[i]:

=false初始状态;

Finish[i]:

=true判断系统有足够的资源给进程;

安全性检查:

2从进程合集中找到进程

(1)Finish[i]:

=false

(2)Need[i,j]<=Work[j];找到则3Work[j]:

=Work[j]+Allocation[i,j];

Finish[i]:

=true

Gotothestep2;否则4如果所有进程的Finish[i]:

=true都满足,则系统安全;否则不安全。

4.连续内存分配各种算法(第四章):

单一连续分配P121

把内存分为系统区和用户区两部分

系统区:

仅提供给OS使用

用户区:

除系统区以外的全部内存空间,供用户使用

单一连续分配的特点

把整个用户区分配给一个程序使用

实际上,用户区又被分为“使用区”和“空闲区”

由于任何时刻用户区中只有一个程序运行,因此只适用于

单道OS

单一连续分配的缺点

由于每次只能有一个程序进入内存,故整个系统的工作效

率不高,资源利用率低

若程序比用户区大,那么它就无法运行。

即大任务无法在

小内存上运行

固定分区分配P122

把用户区划分成若干个大小固定的分区

每个分区只放一个进程

因此,有几个分区就允许几个进程并发

当一个分区空闲时,可选择一个新的进程进入那里运行

由于这些区域是在系统启动时划定的,在进程运行过程中,所获得的区域是不能改变的

划分固定分区的方法

分区大小相等

方法:

所有的分区都大小相等

缺点:

缺乏灵活性,程序太小时,内存浪费;太大时,又无法装入

应用:

控制多个相同的对象(如工业控制机床、锅炉等),因为它们所需的内存空间是大小相等的

分区大小不等

目的:

克服“分区大小相等”的缺点

方法:

把内存划分成多个较小分区、适量中等分区和少量大分区

动态分区分配P123

首次适应算法(FF)

以地址递增次序链接空闲分区

从链首开始查找,找到第一个满足请求大小的分区,从中划出请求大小的空间,余下的仍留在链中(一般从低地址开始划分)

循环首次适应算法

由FF算法演变而成

从上次找到的空闲分区的下一个空闲分区查找

需设置起始查找指针,以指示下次从哪开始查找

最佳适应算法

找能满足分配的最小空闲分区

这要求分区按容量递增顺序排列

动态重定位分配P127

5.分页系统与地址转换(第四章):

分页:

P130

地址转换:

P132

逻辑地址0=>页号0

偏移量0

物理地址=对应块号*页大小

+偏移量

=2*4K+0

=8K

=8*1024

=8192

6.页面淘汰算法(第四章):

P149

最佳置换算法:

从内存中移出永远不再需要的页面;如无这样的页面存在,则应选择最长时间不需要访问的页面

先进先出置换算法(FIFO):

总是选择进程中驻留时间最长的一页淘汰。

即:

先进入内存的页面先淘汰出内存

最近最久未使用(LRU)置换算法:

选择最近一段时间内最久不用的页面进行淘汰。

实现这种技术,是利用页表项的“页面访问位”来记录一个页面自上次访问以来所经历的时间t,并淘汰t最大的页

7.快表(第四章):

P132

具有快表的地址变换机构

因为页表存储在内存中,这使得每次访问一个数据,必须访问两次内存:

一次是访问页表:

确定数据所在的物理地址

另一次才是访问真正的数据

这使得访问内存的次数加倍,导致系统总的处理速度明显下降

解决的方法

增设一个具有并行查寻能力的特殊高速缓冲寄存器,用于存放当前访问的那些表项

这个高速缓存在IBM系统中取名为快表(TLB),又称为联想存储器

8.SPOOLing技术(第五章):

P189-P191

SPOOLing技术

脱机输入/输出技术是利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上;或者相反。

SPOOLing技术的实质是模拟脱机输入/输出

基本方法

用一个进程将设备输入的数据暂存到磁盘上,用另一个进程把暂存在磁盘上的数据传送到设备上;这样,便可在主机的直接控制下,实现脱机输入/输出功能.此时的外围操作与CPU对数据的处理同时进行,这种在联机情况下实现的同时外围操作称为SPOOLing,或称为假脱机操作

SPOOLing系统的组成

SPOOLing系统必须建立在具有多道程序功能的OS上

而且应有高速随机外存的支持,这通常是采用磁盘存储技术来实现。

SPOOLing系统主要有以下三部分:

输入井、输出井

磁盘上的两块大存储区,用于暂存输入、输出的数据

输入缓冲区、输出缓冲区

位于内存中,作用是缓和CPU、设备之间的速度差异

输入进程、输出进程

输入进程:

利用输入缓冲区为中介,把输入设备的数据存入输入井

输出进程:

将用户数据存入输出井,设备空闲时,再将输出井中的数据利用输出缓冲区送入设备

利用SPOOLing技术实现共享打印机

SPOOLing系统的特点

提高了I/O的速度

将独占设备改造为共享设备

实现了虚拟设备功能

9.磁盘调度算法(第五章):

P191-P196

平均寻道长度=移动距离之和/寻道次数

先来先服务(FCFS)

一种最简单的磁盘调度算法。

它根据进程请求访问磁盘的先后次序进行调度。

优点:

公平、简单,且每个进程的请求都能依次地得到处理,不会出现某一进程的请求长期得不到满足的情况。

缺点:

由于未对寻道进行优化,致使平均寻道时间可能较长。

该算法仅适用于请求磁盘I/O的进程数目较少的场合。

最短寻道时间优先(SSTF,ShortestSeekTimeFirst)

该算法首先满足“要求访问的磁道与当前所在磁道之间距离最短”的进程,以使每次的寻道时间最短。

总是优先访问离当前磁头最近的磁道

SSTF算法的平均磁头移动距离明显低于FCFS,因而SSTF较之FCFS有更好的寻道性能,故过去曾一度被广泛采用。

但这种算法不能保证平均寻道时间最短。

进程“饥饿”现象

扫描(SCAN)算法

它是对SSTF算法的改进,以防止老进程出现“饥饿”现象。

该算法不仅考虑到要访问的磁道与当前磁道之间的距离,更优先考虑的是磁头当前的移动方向。

例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象,应是要访问的磁道既在当前磁道之外,又是距离最近的。

这样自里向外地访问,直至再无更外的磁道需要访问时,才将磁头换向为自外向里移动。

由于该算法的磁头移动规律颇似电梯的运行,因而又常称之为“电梯调度算法”。

循环扫描(CSCAN)算法

减少SCAN算法造成的这种延迟,CSCAN算法规定磁头只做单向移动。

例如,总是自里向外移动,当磁头移到最外的磁道并访问完后,磁头立即返回到最里的要访问磁道,亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1