1.操作系统功能、类型、层次结构
OS的作用:
1.作为用户和计算机间的接口
2.作为计算机系统资源的管理者
3.实现了对计算机资源的抽象
2.处理机管理(进程管理)
进程:程序关于某个数据集合的一次执行过程
特征:
1.进程控制块(PCB)+程序+数据=进程实体
2.进程实体的一次执行过程,有生命周期,是一个动态的概念; 程序是一组有序指令的集合,是静态的概念。
基本状态:
就绪状态(Ready):进程已获得除CPU之外的所有必须的资源,一旦得到CPU控制器,立即可以运行。
运行状态(Running):进程已获得运行所必须的资源,它正在处理机上运行
阻塞状态(Blocked):正在执行的进程,由于发生某事件而暂时无法执行时,便放弃处理机而处于暂停状态,称该进程处于阻塞状体、等待状态。
就绪态(n-1)有进程,则执行态(1)至少有一个进程(取决于处理机的个数)
进程的互斥与同步:
进程间的制约关系:1.直接制约,进程合作;2.间接制约,资源共享
临界资源(独占资源):一段时间内只允许一个进程访问的资源
临界区:进程中访问临界资源的那段代码
信号量机制:PV操作
同步:制约关系
互斥:临界资源。多缓冲区
信号量:OS提供的管理公有资源的有效手段
是一个整数。>=0,代表可供并发进程使用的资源数量;<0,表示阻塞态进程的个数。
p操作:wait操作,申请资源,--,<0,活动就绪挂起进入静止就绪
v操作:singnal操作,释放资源,++,<=0,阻塞状态进入就绪状态
pv必须成对出现。
<0,绝对值为等待的进程数;>=0,值为可用的进程数
应用:(上午必考)
实现进程互斥:初值:资源的个数;临界区在pv代码之间;
实现前驱关系:初值:0;有n个有向边,设置n个信号量;前驱代码后跟v,p后跟后继代码,即前驱后继中间加vp操作
实现同步关系:两进程合作完成一项任务而公用一个变量。
进程调度:短程调度
用来决定就绪队列中的哪个进程应获得处理机,然后由分派程序把处理机分配给该进程。
(1)非抢占式:适用于批处理OS。(1.执行完成;2.发成I/O请求),才允许其他程序使用CPU
(2)抢占式:适用于实时OS。(1.时间片原则;2.短作业(进程)优先原则;3.优先权原则,多用于实时系统)
调度算法:
(1)先来先服务:FCFS。最简单。利于长作业(进程),不利于短作业(进程)
(2)短作业(进程)优先:SJF,SPF。预估运行时间最短的作业(进程)。利于短作业(进程),不利于长作业(进程);有效降低平均等待时间,提高系统吞吐量;未考虑作业的紧迫程度;按估计时间定的,无法做到真正短作业优先;
(3)高优先权优先:FPF。常用于批处理OS,实时OS
(3)时间片轮转:最古老,最简单,最公平,最广泛。时间片结束时,进程未运行结束,CPU将被剥夺分配给另一个进程,该进程到就绪队列尾重新排队;如果进程在时间片内阻塞、结束,CPU当即进行切换。
优先权类型:
(1)静态优先权:0-7的优先数,进程的整个运行期间保持不变,创建进程时确定。值越小,优先级越高
(2)动态优先权:优先权随进程的推进、等待时间的增加而改变
如何确定进程优先权:
(1)高响应比优先调度算法:优先权=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间。优先级随等待时间的增加而以速率a提高。值越大,优先级越高
作业等待时间相同,要求服务的时间越短,优先权越高。利于短作业
要求服务时间相同,则等待时间决定优先权的高低。先来先服务
对于长作业,优先级随等待时间的增减而提高。等待足够时间,也可以获得处理
死锁:多个进程在运行过程中,因争夺资源而造成的一种僵局。需要外力作用,使其向前推进
原因:
(1)竞争资源:资源有限,不足以满足多个进程的需求时,引起多进程对资源的竞争而产生死死锁。
(2)进程间推进顺序非法:运行中,请求、释放资源的顺序不当
系统中资源的分类:
(1)可剥夺性资源:可以被高优先级的进程剥夺。CPU、内存……。不会引起死锁
(2)不可剥夺性资源:分配给进程后,只有进程用完后才释放的资源。磁带机、打印机……。临界资源,会引起死锁
死锁必要条件:
(1)互斥:临界资源。某一时间内,某资源只由一个进程占用。
(2)请求和保持:在请求新资源的同时,保持对已分配资源的占用。
(3)不剥夺:已获取的资源,未使用完成,不能被剥夺。只能在使用完由自己释放。
(4)环路等待:在发生死锁时,必然存在一个进程——资源的环行链。
不会发生死锁的最少资源数:m*(n-1)+1;m,并发进程数;n:每个进程所需同类资源数;
处理死锁:应当及时检测到,并采取适当措施来解除死锁。
(1)预防死锁:简单、直观,事先预防。设置某些限制,破坏死锁的四个必要条件的一个或几个,来预防。摈弃“请求和保持”(要么都申请,要么都不申请);摈弃“不剥夺”(如果后面资源无法申请,释放已有资源);摒弃“环路等待”(资源编号,只能申请比前面资源编号大的资源)
(2)避免死锁:事先预防。用某种方法去防止系统进入不安全状态。银行家算法
(3)检测死锁:系统运行过程中。及时检测死锁的发生,并精确定位于死锁有关的进程和资源,采取适当的措施,清除死锁进程。
(4)解除死锁:与检测死锁配套使用。撤销、挂起一些进程,回收资源,再将资源分配给处于阻塞状态的进程,使之进入就绪状态。可能使系统获得较好的资源利用率、吞吐量;但实现上难度大。