操作系统整理.docx
- 文档编号:9739103
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:58
- 大小:823.54KB
操作系统整理.docx
《操作系统整理.docx》由会员分享,可在线阅读,更多相关《操作系统整理.docx(58页珍藏版)》请在冰豆网上搜索。
操作系统整理
操作系统知识点整理(汤,梁...四版)
心有猛虎细嗅蔷薇
第一章引论
1、在计算机上配置操作系统主要目标:
方便性:
体现在OS具有的编译功能和自带操作指令;
有效性:
资源利用率和系统吞吐量;
可扩充性:
体现在模块化和层次性;
开放性:
软硬件彼此兼容。
2、OS对四类资源进行四种管理:
处理机管理;存储器管理;I/O设备管理,文件管理。
3、多道批处理(为提高资源利用率,系统吞吐量而生)优缺点:
资源利用率高;系统吞吐量大;平均周转时间长;无交互能力;
4、分时系统(为满足人机交互而生)特性:
多路性(资源共享);
独立性(多用户互不干扰);
及时性(秒级响应)影响响应时间因素为时间片长度和用户数量;
交互性(广泛的人机交互)。
5、实时系统:
应用领域:
工业(武器)控制系统,信息查询系统,多媒体系统,嵌入式系统;
根据有无周期性分为周期性实时系统和非周期性实时系统;
根据对截止时间的要求分为硬实时任务和软实时任务对应于对截止时间的高要求和低要求。
6、分时系统和实时系统比较:
a、多路性:
分时系统表现在系统按分时原则为多个用户服务,实时系统则表现为周期性对多路现场进行采集,以及对多个执行对象或多个执行机构进行控制。
b、独立性:
都为多对象互不干扰。
c、交互性:
实时系统的交互较分时系统较弱。
d、可靠性:
实时系统可靠性要求更高。
7、操作系统基本特性:
并发,共享,虚拟,异步。
并发:
两个或多个事件在同一时间间隔内发生(并行:
同一时刻)。
共享:
对临界资源的互斥共享访问方式,宏观上的同时访问方式。
虚拟:
通过某种技术将一个物理实体变为若干个逻辑上对应物的功能。
异步:
进程的执行以“走走停停”的方式运行,因为要使用I/O等资源而暂停执行,处理机调度另外的进程执行,而原进程I/O处理结束后又得等待处理机的再次调度。
故进程在某个时刻的状态难以重现。
8、操作系统与用户接口:
用户接口(联机用户接口,脱机用户接口,图形用户接口);程序接口。
9、模块—接口法:
模块化是指按其功能将OS划分为若干个有一定独立性和大小的模块,接口用于模块间的交互。
10、模块独立性:
高内聚,低耦合
内聚:
指模块内部各部分间联系的紧密程度;
耦合:
模块间相互影响和联系的程度。
11、C/S模式:
客户/服务器模式,数据的分布处理和存储,便于集中管理,灵活性和可扩充性,易于改编应用软件。
12、微内核基本功能:
进程(线程)管理,低级存储器管理,中断和陷入管理。
13、微内核是建立在模块化和层次化基础之上的,采用了C/S模式和面向对象设计技术。
故具有可扩展性,可靠性,可移植性,支持分布式系统,融入了面向对象技术。
14、微内核操作系统优点:
提高了系统的可扩展性(OS许多功能是由相对独立的服务器实现的);增强了系统的可靠性(OS设计测试严格且提供了精简的应用程序接口);可移植性强(所有与特定CPU和I/O设备有关的代码均放在内核和内核下面的隐藏层中,其他绝大部分均与硬件平台无关);提供了对分布式系统的支持(客户和服务器之间,服务器和服务器之间通信采用消息传递通信机制,类似路由器式的消息转发方式)。
第二章进程的描述与控制
1、程序并发执行特征:
a、间断性:
表现在程序间的相互制约导致并发程序具有“执行—暂停—执行”特征;
b、失去分闭性:
体现在资源的互斥共享,所需资源被其他程序所占用时需要等待。
c、不可再现性:
程序的间断执行可能会使的结果经过不同程序不确定性顺序的改变。
2、进程与程序的区别
进程是动态的,程序是静态的:
程序是有序代码的集合;进程是程序的执行。
进程是暂时的,程序的永久的:
进程是一个状态变化的过程,程序可长久保存。
进程与程序的组成不同:
进程的组成包括程序、数据和进程控制块(即进程状态信息)。
进程与程序的对应关系:
通过多次执行,一个程序可对应多个进程。
3、进程:
程序段+相关数据段+PCB;创建进程实际是创建PCB,撤销进程实质是撤销PCB。
4、进程特征:
动态性:
进程实质是进程实体的执行过程,有创建而产生,由调度而执行,由撤销而消亡,具有一定的生命周期区别于程序的静态性和永久存在。
并发性:
多进程可在统一时间段内同时运行区别于程序的不参与并发执行(无PCB)。
独立性:
独立的运行和获取资源。
异步性:
各进程各自独立、以不可预知的速度向前推进,为使进程并发执行的结果具有可再现性,配置了相应进程同步机制。
结构化:
代码段,数据段和进程控制块组成。
5、进程状态及其相互转化(有挂起操作):
图一
图一是具有创建、终止和挂起状态的进程图,挂起状态的引入使得新增了静止就绪和静止阻塞状态。
6、PCB作用
✓记录系统管理进程全部信息。
✓一般常驻于内存,由OS维护。
✓每个进程都有唯一的一个PCB。
✓不能由应用程序自身的代码来直接访问。
7、PCB中包含信息
不同的操作系统差别很大,随系统复杂性而异共性的有:
1.进程描述信息:
进程标识符(processID,内部标识符,具有唯一性,通常是一个整数);
用户标识符(userID);
进程组标识符(processgroup)
2.在进程进行切换时的处理机及其相关现场。
(CPU,程序状态字,通用寄存器,栈指针)
3.为保证进程再次运行的:
进程调度信息、控制信息
8、PCB组织方式:
线性方式,链接方式(具有相同状态进程形成一个链),索引方式(建立若干个索引,诸如就绪索引,阻塞索引)。
9、进程控制状态术语:
1.核心态(系统态、管态、特权态):
可执行所有指令。
OS运行在核心态可以访问所有资源。
2.用户态(目态):
用户进程运行在用户态。
无法访问硬件资源,不可直接访问受保护的OS代码,只可以访问OS指定的寄存器和存储区域有关资源。
(转换指令trap,在trap指令执行后,状态位自动从用户态转到核心态)。
10、引发进程创建的事件:
a、用户登录;
b、作业调度;
c、提供服务;
d、应用请求。
11、引起进程阻塞和唤醒的事件:
a、资源请求失败;
b、等待某种操作的完成;
c、新数据尚未到达;
d、等待的新任务到来。
12、进程阻塞
进程自己调用block原语将自己阻塞。
进入block过程后,首先终止执行,然后将PCB中的现行状态改为阻塞,然后将这个PCB插入相应阻塞队列。
最后转调度程序进行重新调度,保留被阻塞进程处理机状态,按新进程的PCB中的处理机状态重新设置CPU环境。
13、进程唤醒
由相关进程调用唤醒原语weakup,首先将被阻塞进程等待该事件的队列中移出,然后改变PCB现行状态为就绪,后插入就绪队列。
14、进程挂起
OS使用挂起原语suspend,首先检查状态,若是活动就绪状态则改为静止就绪,活动阻塞改为静止阻塞。
为了方便用户或者父进程考察进程运行情况,而把进程的PCB复制到某指定的内存。
若被挂起的进程正在执行则转调度程序重新调度。
15、进程激活
OS使用active原语将指定进程激活;首先将进程从外存调入内存,检查该进程现行状态,按照上述状态转换转回去。
假如采用的是抢先调度策略,则立即检查是否要重新调度,检查被激活的静止就绪进程的优先级和正占用处理机进程的优先级,优先级高的获得处理机。
16、线程:
一个动态对象,他是处理机调度的基本单位,表示进程的一个控制点,执行一系列指令。
在OS中,进程的引入提高了计算机资源的利用率。
但在进一步提高并发性是,进程切换开销比重越来越大,同时进程通信效率也受到限制。
引入线程的目的是为了提高系统内程序的并发程度,提高系统效率,增大系统作业的吞吐量。
同一线程差异体现:
线程状态、寄存器上下文和堆栈等环境上。
17、线程优势
1)线程创建时间小于进程;
2)线程终止时间小于进程;
3)同一进程的线程切换时间比进程短;
4)同一进程的线程可以相互通信。
18、进程与线程的比较
1)不同进程的地址空间是相互独立的,而同一进程下的线程是共享同一地址空间。
一个进程中的线程在另一个进程中是不可见的。
2)同一经常下的线程可以通过读写进程数据段(如全局变量)来通信;进程间通信必须采用OS提供的进程间通信机制。
3)同一进程的线程切换时间比进程短;
19、用户线程和内核支持线程
1、由OS内核实现,内和线程,OS知道每个进程由多少个线程,一个线程阻塞是OS会选择另一个线程,他们可能属于同一个进程也可能来自不同进程。
2、OS感觉不到线程的存在,他们在用户空间进行管理—用户级线程。
3、性能差异:
用户线程的调度发生在同一个进程中,也不需要通过中断进
入核心,所以切换快,这有力的支持将线程管理放在用户级。
用户级线程阻塞后,整个进程堵塞,因为内核无法知道线程的存在,所以这种支持将线程管理放在核心。
20、进程的同步与通信
1)目的:
为了改善资源的利用率和提高系统的吞吐量,引入了进程,但同时失去了程序的封闭性和可再现性。
2)进程互斥:
由于共享资源所要求的排他性,进程之间要相互竞争,已获得这些资源的使用权。
3)进程同步:
多个进程中发生的事件存在某种时序关系,必须协同工作、相互配合、以共同完成一项任务。
21、临界资源
必须互斥的使用的资源。
可以是硬件也可以是是软件(外设、共享代码段、共享数据结构),多个进程在对它进行访问时,必须互斥的进行。
22、临界区(段)的定义
临界区:
在每个进程中,访问临界资源的一段代码。
23、同步机制遵循准则
1)空闲则入,其它进程均不处于临界区,则进入;
2)忙则等待,已有进程处于其临界区,则等待;
3)有限等待,等待进入临界区的进程不能“死等”;
4)让权等待,不能进入临界区的进程应释放CPU(如转换到阻塞状态)。
24、信号量机制
1)利用信号量实现互斥:
为临界资源设置一个互斥信号量mutex,初值为1;在每个进程中将代码置于P(mutex),V(mutex)之间。
另外必须成对的使用p,v操作,p操作的遗漏则不能保证是互斥访问,v操作的遗漏则不能再使用临界资源后将其释放;p,v操作的次序不能错,重复和遗漏。
2)PV同步的操作者:
对于独享设备由设备驱动程序做,设备使用前使用p操作,推出前使用v操作。
3)记录信号量的结构:
value+link
Value初始化为一个非负整数,表示空闲资源数,小于零时则为在改临界区阻塞的进程数。
Link为链表首指针,等待的进程利用它形成链表。
25、经典问题:
1.生产者—消费者问题
1)问题描述:
有一个生产者一个消费者,生产者生产商品并放在一个可以存放n件商品的仓库中,消费者在仓库中去除商品消费。
2)制约关系:
生产者与消费者之间不直接发生联系,他们通过仓库这个纽带发生制约关系,生产者生产商品,若仓库已满生产者等待,直到仓库有空为止;消费者在仓库空时,等待直到生产者的商品放入,否则,取一个商品消费。
3)实现考虑:
仓库可以用队列表示,队头front,队尾rear为了实现互相协调,设两个信号量,
full=0;表示当前队列中已有的数据个数
empty=n;表示当前队列中还可以放的数据个数
消费者:
p(full);
x=delqueue(front);
v(empty);
生产者:
生产商品x;
p(empty);
addqueue(rear,x);
v(full);
4)问题扩充:
若生产者与消费者变成多对多关系,我们要做什么变动?
消费者进程:
p(full);
p(mutex);
x=delqueue(front);
v(mutex);
v(empty);
生产者进程:
生产商品x;
p(empty);
p(mutex);
addqueue(rear,x);
v(mutex);
v(full);
5)生产者用rear指针进队,消费者利用front退队,两者实际无联系,但现在信号灯是封锁了整个队,生产者使用队,消费者就不能使用反之亦然。
消费者进程:
p(full);
p(mutex2);
x=delqueue(front);
v(mutex2);
v(empty);
生产者进程:
生产商品x;
p(empty);
p(mutex1);
addqueue(rear,x);
v(mutex1);
v(full);
2.读者—写者问题
1)问题描述:
一个公告版,许多人可以同时读,公告版有人负责维护。
2)制约关系:
多人可同时读,之间没有制约联系;维护者只有在没有人读的情况下才能修改公告版。
注:
类似问题,一个文件可能被多个进程共享,为了保证读写的正确性和文件的一致性,就要求,当有读进程读文件时,不允许任何写进程写,但允许多个读进程同时读;当有写进程写时,不允许任何读者进行读。
3)实现考虑:
读者具有高的优先级,Courtois等人的解法
A)一个记数器r_count,记录读者数,初值是0,来一个读者加1,走一个读者减1;在r_count不为0时,写者不能进行写。
B)wmutex信号灯,初值是1,控制写者
C)rmutex信号灯,初值是1,控制对r_count的修改,因为多个读者可能同时提出对r_count的修改。
if(r_count==0)
v(wmutex);
v(rmutex);
读者进程:
p(rmutex);
r_count++;
if(r_count==1)
p(wmutex);
v(rmutex);
读操作;
p(rmutex);
r_count--;
写进程:
p(wmutex);
写操作;
v(wmutex);
3.哲学家进餐问题
1)问题描述:
65年,Dijkstra提出并解决了一个他称之为哲学家进餐问题;
问题是:
5个哲学家围绕一张圆桌而坐,每个哲学家前面有一碟空心面,由于面很滑,所以要两把叉子才能夹住。
相邻两个碟子之间有一把叉子。
2)制约关系:
哲学家只有两种活动,在感觉到饿时,分两次取左边和右边的叉子(不分次序),如果成功的得到两把叉子,就吃饭,吃完后继续思考。
3)最佳解决方案:
在拿到左叉子后,若右叉不空,随机等待一段时间放下左叉子。
增加一个信号灯mutex,初值是1,拿叉子前执行p(mutex),放下叉子后执行v(mutex)。
增加数组state,state[i]代表第i个哲学家的状态,,一组信号灯s,s[i]对应第i个哲学家,在他想进餐时,而没有所需叉子时能阻塞,初值是0。
哲学家的编号为0到N-1。
哲学家i的左邻右舍分别由宏LEFT与RIGHT求得。
✧
#defineN5//哲学家数(哲学家编号0到N-1)
#defineLEFT(i!
=0)?
i-1:
N-1//哲学家i的左邻居号
#defineRIGHT(i+1)%N//哲学家i的右邻居号
enumSTATE{THINKING,HUNGRY,EATING};
//分别对应思考、饥饿想拿叉子、正在进餐
STATEstate[N];//记录每个人的状态数组
intmutex=1;//互斥信号灯,
ints[N];//全程量,初值是0,当信号灯用
voidphilosopher(i)//i代表哲学家号,从0到N-1,以下同
{
while
(1){//无限循环
思考;
take_forks(i);//需要叉子或阻塞
进餐;
put_forks(i);//把两把叉子放回桌上
}
}
voidtake_forks(i)
{p(mutex);//进入临界区,保证对state数组的互斥操作
state[i]=HUNGRY;//记录哲学家饥饿的事实
test(i);//试图得到两把叉子
v(mutex);//离开临界区
p(s[i]);//如果得不到叉子,在对应自己的信号灯上阻塞
}
voidput_forks(i)
{p(mutex);//进入临界区,保证对state数组的互斥操作
state[i]=THINKING;//哲学家进餐结束
test(LEFT);//检测左邻居现在能否进餐
test(RIGHT);//检测右邻居现在能否进餐
v(mutex);//离开临界区
}
voidtest(i)
{
if(state[i]==HUNGRY&&state[LEFT]!
=EATING\
&&state[RIGHT]!
=EATING)
{state[i]=EATING;
v(s[i]);
}
}
26、进程之间的通信
高级进程通讯由于数据量大,进程可采用多种通信方式:
消息缓冲、信箱、管道、共享文件和共享内存区等。
给进程间通信提供了灵活性。
并为计算机网络的开发控制奠定了基础。
一、消息缓冲
系统设置一个大的缓冲区,作为消息缓冲池,它又分成若干消息缓冲区,每个放一个消息。
两个进程之间的通信隐含着两者之间的同步方式:
首先接收者必须有进程向它发来信息后才能接收信息。
✧进程发送消息,有两个可能:
1)发送完信息后,不等信息被接收就继续前进;
2)发送完信息后,阻塞等待,直到收到接收者的回答消息才继续前进。
✧接收进程也存在两个可能:
1)若已有消息,则接收这个消息后继续前进;
2)若消息还沒有发来,它可能等待消息的到来,或者放弃接收而继续前进。
所以,接收者和发送者进程在采用消息通信方式时,有三种组合:
1)非阻塞发送,阻塞接收
发送进程发完消息后继续前进,接收进程接收消息时,若消息未到则阻塞等待。
在这种方式下,允许一个进程尽快地向各接收进程发送一个或多个消息,各接收进程要阻塞等待消息的到来。
2)非阻塞发送,非阻塞接收
这是目前多用户系统广泛采用的信件通信方式。
发送进程发完消息继续前进,接收进程在检测消息时,若有消息,它处理,否则继续前进。
(比如,UNIX系统在每次系统调用返回前,要检测有无消息到达)
这两种通信方式称为单向通信方式
3)阻塞发送,阻塞接收
发送进程在发送完消息后阻塞等待接收者进程发送应答信息后才能继续前进;接收者进程在接收到信息前,阻塞等待,直到接收到信息后再向发送者进程发送一个回答信息。
这称之为双向通信。
现在操作系统都提供有用于消息缓冲通信的系统调用接口(原语):
(1)发送信息
send(接收者,消息缓冲)
处理情况:
当发送进程要发送信息时,便申请一信息缓冲区存放信息。
然后将消息正文传送到该缓冲区中,并填入有关参数之后将信息始址及长度以及本进程的进程标识号一起发送给接收者进程。
(将该消息缓冲区挂到接收进程的消息链上)
(2)接收信息
receive(发送者,消息缓冲)
其中“发送者”是指发送信息的进程名。
接收原语receive的主要工作是检查消息链上是否有消息,若有,将消息接收到缓冲区;若无,则阻塞等待消息的到来。
receive(消息缓冲):
进程检查自己的消息链,若有消息处理,否则返回,进程继续。
两者差异:
前者进程主动发出后等消息,后者则在一些特定条件下执行(比如系统调用返回前检测有无消息到达)
二、信箱
高级通信第二种实现方法是系统为每个进程设立一个信箱。
每个信箱可容纳多封信件。
此信箱的信件由系统执行发送原语将信件投入指定信箱,由接收者自行接收信件并进行处理。
信箱一般用在用户级,系统提供了若干系统调用处理。
第三章调度与死锁
调度目的:
处理机调度的工作是对CPU资源进行合理的分配使用,以提高处理机利用率,并使各用户公平地得到处理机资源。
1、调度类型和模型
1)低级(短期)调度:
确定选择哪个就绪的进程占有CPU,所以也称为处理机调度,进程调度
2)高级(长期、作业)调度:
确定哪些作业从外存调入内存
2、作业:
(用户)利用计算机进行一次运行所需工作的集合(比如,编辑、编译,运行等)。
要执行一个程序,用户必须先提交一个作业。
3、作业提交方式:
批处理作业:
通过批输入设备(卡片、纸带、磁带);交互式作业:
通过终端启动的作业。
4、中级(中期)调度:
为提高效率,加快进程运行,调节系统的负荷,
有时需要在选择内存中阻塞或就绪的进程暂时放到外存(一般是硬盘),即所谓的挂起。
这种内外存的数据交换称为对换。
中级调度解决:
在阻塞或就绪的进程中选择哪个(些)进程挂起;在条件允许下,在外存挂起的进程集合中如何选进程激活并调回内存
5、调度目标:
1)公平——确保每个进程获得合理的CPU份额
2)效率——是百分之百地忙碌
3)响应时间——使交互用户的响应时间尽可能短
4)周转时间——使批处理用户等待输出的时间尽可能短
5)吞吐量——使每小时处理的作业数量多
6、周转时间:
批处理系统的一个重要指标。
指作业从提交到完成(得到结果)所经历的时间。
包括:
1)在外存后备队列中等待时间;
2)CPU上执行时间;
3)就绪队列和阻塞队列中等待时间;
4)结果输出等待时间。
周转时间常用以下参数衡量(原则上越小越好)
平均周转时间:
带权周转时间:
其中:
Ti/Tsi为第i个作业的带权周转时间,Tsi系统为第i个作业提供的实际服务时间
7、响应时间:
分时系统的一个重要指标。
用户输入一个请求(如击键)到系统给出首次响应(如屏幕显示)的时间。
包括:
1)从终端的键盘输入的一个请求信息传送到处理机的时间;2)处理机对请求的处理时间;3)处理结果送到终端显示器的时间。
8、吞吐量:
批处理系统的一个重要指标。
单位时间内所完成的作业数。
9、处理机利用率:
大中型主机多用户系统的性能指标,因为系统价格昂贵,所以非常重视其CPU利用率。
PC一般不考虑这个指标。
各种设备的均衡利用:
大中型主机多用户系统性能指标。
如CPU繁忙的作业和I/O繁忙的作业搭配。
对PC及实时系统该指标并不重要。
10、调度的时机
调度的时机是与调度方式有关,一般在以下情况下会发生进程调度:
(1)正在执行的进程正常结束或由于某种错误而终止运行;
(2)执行中的进程提出I/O请求,在等待I/O完成前,进程阻塞转进程调度;
(3)在分时系统中,按照时间片轮转,分给进程的时间片用完时;
(4)按照优先级调度,有更高优先级进程变为就绪时;
(5)在进程通讯中,执行中的进程执行了某种原语操作,如P操作、阻塞原语和唤醒原语时,都可能引起进程调度。
11、1.先来先服务(FCFS算法)
按照作业提交或进程变为就绪状态的先后次序,分派CPU;当前作业或进程占用CPU,直到执行完或阻塞,才主动地出让CPU。
特点:
非常简单,易于实现;但对短作业而言,带权周转时间可能太大。
12、短作业(进程)优先
对执行时间短的作业(进程)优先分派处理机。
特点:
比FCFS改善了平均周转时间和平均带权周转时间,缩短作业的等待时间,提高了系统的吞吐量;
对长作业非常不利,可能长时间得不到执行;
难以准确估计作业(进程)的执行时间,从而影响调度性能。
短作业:
由用户自己利用作业控制语言说明程序预计执行时间。
13、时间片轮转
主要用于低级调度,是一种最古老、最简单、最公平且使用最广泛的方法。
将系统中所有的就绪进程按照FCFS原则,排成一个队列。
每次调度时将CPU分派给队首进程,让其执行一个时间片。
在一个时间片结束时,发生时钟中断。
调度程序据此暂停当前进程的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 整理