操作系统笔记2
l 进程
l 并发:多个程序在一段时间内同时发生
l 进程是什么?与程序区别
进程就是用于描述、控制程序在内存中并发运行的一个东东
程序的一次执行
是一个程序与其数据一道通过处理机的执行所发生的活动
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
¡ 动与静:
l 进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。
¡ 永久与暂时:
l 进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存。
¡ 结构:
l 进程的组成包括程序、数据和进程控制块(进程各种控制信息)。
¡ 进程与程序的对应关系:
l 都可1对n。通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
l 进程的基本状态
(1)就绪状态(Ready)
进程获得除CPU之外的所有必需资源,一旦得到CPU控制权,可立即运行。
(2)运行状态(Running)
进程已获得所有运行必需的资源,正在处理机上执行。
(3)阻塞状态(Blocked)
正在执行的进程由于发生某事件(请求I/O、申请缓冲、时间片到)而暂时无法执行时,便放弃CPU后暂停
l 进程控制块PCB.
进程实体:代码段+数据段+PCB
Pcb存放进程的管理和控制信息的数据结构
进程控制块中的信息(pcb内):
进程标识符信息
处理机状态信息
进程调度信息
进程控制信息
l 进程的创建、阻塞、终止过程
创建过程:
(1) 申请空白PCB
(2) 为新进程分配资源
主要是内存资源的处理
(3) 初始化进程控制块
标识符(包括父进程的)、程序计数器指向程序入口地址,就绪态、优先级等信息的填写。
(4) 将新进程插入就绪队列
阻塞过程:
(1)将PCB中的状态改为阻塞
(2)该PCB加入到阻塞队列中
(3)转进程调度,将处理机分配给另一进程
(4)进行进程切换,即根据两切换进程的PCB,保护与重新设置处理机状态
(阻塞原因了解:)
请求系统服务的满足情况
启动某种需等待(I/O)操作
合作需要的新数据尚未到达
执行某功能的进程暂时无新工作可做(如发送数据进程)
终止过程:
(1) 根据进程标示符,检索出该进程PCB,读其状态。
*IF 执行态,立即终止该进程,置调度标志为真,指示重新进行调度。
*IF 有子孙进程,亦应予以终止,以防成为不可控进程。
(2) 归还全部资源至其父进程或系统。
(3) 将该进程PCB从所在队列或链表中移出。
l 进程同步问题:源于进程的相互制约关系:资源共享,有序合作
l 同步的概念:并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。
l 控制同步的四大原则
空闲让进:资源使用最基本原则
忙则等待:保证互斥
有限等待:合适时被唤醒防止死等
让权等待:能主动释放CPU防止忙等
l 临界资源、临界区
一次仅允许一个进程使用的资源
每个进程中访问临界资源的那段代码叫临界区。
为了正确同步,对临界区的代码要增加控制
l 信号量机制
最初的信号量机制,两个原子操作对一个共享整型量进行操作。
信号量定义为一个整型量;
根据初始情况赋相应的值;
仅能通过两个原子操作来访问。
l 信号量操作原语wait、signal
P操作 wait(S):
While S<=0 do no-op;
S:=S-1;
V操作 signal(S):
S:=S+1;
互斥:在操作系统中,当一个进程进入临界区使用临界资源时,另一个进程必须等待,直到占用临界资源的进程退出临界区,我们称进程之间的这种相互制约关系为“互斥”。
同步:多个相互合作的进程,在一些关键点上可能需要互相等待或互相交换信息,这种相互制约关系称为进程同步关系。可理解为“有序”。
l 典型同步题目:
l 生产者-消费者 互斥-同步
一群生产者进程生产产品供给消费者进程消费,在两者之间设置具有n个缓冲区的缓冲池,生产者进程所生产的产品放入一个缓冲区中,消费者进程可从一个缓冲区中取走产品去消费。
生产者和消费者都以异步方式运行,但它们之间必须保持同步:没有产品不能取,没有空间不能放。也不能同时对一个空间进行取和放
type item=……;表示一个产品
Var n, integer;缓冲区大小
counter:0, 1, …, n; 缓冲区内产品计数的变量
var buffer: array[0, 1, …, n-1] of item;该数组代表具有n个缓冲区的缓冲池
in, out: 0, 1, …, n-1指示生产者和消费者放或取的下一个缓冲区位置指针,初值均为0。
in加1表示为in:=(in+1)mod n
out加1表示为out:=(out+1)mod n
当(in+1)mod n=out时表示缓冲池满
in=out表示缓冲池空
Producer:
repeat
…
生产 an item in nextp;
…
while counter= n
do no-op;
buffer[in]:=nextp;
in:=in+1 mod n;
counter:=counter+1;
until false;
Consumer:
repeat
while counter= 0
do no-op;
nextc:=buffer[out];
out:=out+1 mod n;
counter:=counter-1;
…
消费产品item in nextc;
until false;
取、用类,计数控制+互斥
l 哲学家进餐 互斥
计数类、死锁相关
l 读者-写者
l 有条件的互斥 类似典型题目:单行路,同方向的不互斥;异向互斥
Writer :
repeat
wait(wmutex);
写入文件;
signal(wmutex);
until false;
l 信号量规律:
l 分析同步关系、设置信号量初值、PV操作顺序
1. P、V操作成对出现
2. 多个进程对互斥同步,PV操作成对出现的同进程中,初值为1
3. 多个进程的有序同步,PV操作成对出现在不同进程中,有V操作的进程可通过控制先于有P操作的进程执行。初值根据应用情况设置。
l 一阅览室最多容纳100人,读者进入和离开都要在登记表上登记,每次只允许一个人登记。如何编写进程间的同步关系。
l 资源:空数N,登记表S
l 信号量n=N,mutex=1
l 进程:读者进程
u wait(n)
u wait(mutex)
l 进入
u signal(mutex)
l 阅读后离开
u signal(n)
l 有一只铁笼子,每次只能放入一只动物,猎手向笼中放入老虎,农民向笼中放入猪,动物园等待取笼中的老虎,饭店等待取笼中的猪,试用信号量机制实现猎手、农民、动物园、饭店之间同步执行的程序。(解释其中的信号量含义,并给出合适的初值。)
l 设有一自助餐厅,可容纳10名顾客就餐,餐厅满时顾客需在门外排队等候;顾客若能进入则自取食物后到款台付款;收款员负责在收款台等待顾客付款,付款完毕顾客自行就餐后离开。分析该问题中的同步关系,试写出顾客进程和收款员进程信号量机制下的同步算法,注意写明信号量的初值和作用。
l 【分析】顾客存在争抢进店的竞争关系,设置一个资源信号量r,初值为10;
收款员与顾客间存在双向有序合作关系,收款员需等待顾客付款,顾客需等待收款员确认付款完毕,需设置两个同步信号量money,ok,初值均为0.
【算法伪代码如下】
semaphore r=10,money=0,ok=0;
l 顾客:
l void custom(){
u while(true){
l wait(r);
u //资源信号量操作成对正确
l enter;
l take something;
l signal(money);
l pay money;
l wait(ok);
l signal(r);
l leave;
u }}
l 售货员:
l void seller(){
u while(true){
n wait(money);
u //同步信号操作配对正确
n accept money,give changes
n signal(ok);
u //同步信号操作配对正确
u }}
l CPU调度
l 三级调度
高级调度:主要在早期批处理阶段,处理在外存上的作业
低级调度: 决定内存就绪队列中的哪个进程获得处理机,进行分配工作。是最基本的一种调度
中级调度:提高内存利用率和系统吞吐量。根据条件将一些进程调出或再调入内存
l 调度时机\抢占\算法计算
l 调度程序的运行时机:
程序正常完成
IO\PV阻塞
时间片到
新任务产生
调度算法
基本调度算法:
a) 先来先服务调度算法FCFS,不利于短作业
b) 短作业(进程)优先调度算法SJF/SPF,降低作业的平均等待时间,提高系统吞吐量。
c) 高优先权优先调度算法HPF,
d) 高响应比优先调度算法HRRN,
e) 基于时间片的轮转调度算法RR,
f) 多级反馈队列算法FB
* 实时调度
l 某系统的进程请求如右图,画出RR调度下的调度过程图。并计算平均周转时间。设时间片为2。
进程名 |
开始时刻 |
执行时间 |
A |
0 |
3 |
B |
2 |
3 |
C |
3 |
4 |
D |
4 |
7 |
l 死锁的相关概念与认识
1. 四个必要条件
u 互斥条件:进程对所分配到的资源进行排他性使用
u 请求和保持条件:进程已经保持了至少一个资源,又提出新的资源请求,而新请求资源被其他进程占有只能造成自身进程阻塞,但对自己已获得的其他资源保持不放,必然影响其他进程。
u 不剥夺条件:进程已获得的资源未使用完之前不能被剥夺,只能在使用完时由自己释放。
u 环路等待条件
2. 处理死锁的各种方法
① 预防死锁
v 设置限制条件,破坏四个必要条件的一个或几个,预防发生死锁。
v 较易实现。限制条件的严格也会导致系统资源利用率和系统吞吐量降低。
② 避免死锁
v 不须事先限制,破坏四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。
v 这种事先加以较弱限制的方法,实现上有一定难度,但可获较高的资源利用率及系统吞吐量,目前在较完善的系统中,常用此方法来避免发生死锁。
③ 检测死锁。
v 允许系统运行过程中发生死锁,但通过系统检测机构可及时的检测出,能精确确定与死锁有关的进程和资源;然后采取适当的措施,从系统中将已发生的死锁清除掉。
④ 解除死锁。
v 与死锁检测配套的一种措施。
v 常用的实施方法:撤销或挂起一些进程,以便回收一些资源并将他们分配给已阻塞进程,使之转为就绪以继续运行。
v 死锁的检测与解除措施,有可能使系统获得较好的资源利用率和吞吐量(死锁几率不一定很高),但在实现上难度也最大。
l 避免死锁的银行家算法(相对预防死锁,是一种软限制。)
下面出现P1请求资源的操作,具体请求向量为Request1(1,0,2),利用银行家算法进行检查该操作是否是安全可行的:
1)两个基本判断
Request1(1,0,2)<=Need1(1,2,2)
Request1(1,0,2)<=Available1(3,3,2)
2)先假设为P1分配资源,并修改Available,Allocation1和Need1向量。
向量Available
最大需求、已获得的、还需要的
最大需求矩阵Max
已分配矩阵Allocation
还需求的矩阵Need
1. 安全状态
2. 算法、计算
a) 系统中有m个进程,出现死锁时死锁进程的个数k: 2≤k≤m
b) 某类资源m个,n个进程都需要此种资源a个,如何不死锁:n*(a-1)+1≤m
l 存储器管理
l 连续分配
1. 单一连续、固定分区
2. 动态分区分配
3. 可重定位动态分区(有紧凑功能)
l 离散分配
1. 分页,地址转换过程,计算
内存划分成多个小单元,每个单元K大小,称(物理)块。作业也按K单位大小划分成片,称为页面。
① 物理划分块的大小 = 逻辑划分的页的大小
②
内存位数=页面大小(位数)+页表项(块号位数)
大小:内存=页面大小x页面个数
2. 分段
虚拟
概念:虚拟、局部性
先进先出置换算法(FIFO)Belady现象(出现分配的页面数增多,缺页率反而提高的异常现象)的原因:FIFO算法的置换特征与进程访问内存的动态特征矛盾,即被置换的页面并不是进程不会访问的
1. 置换调度算法:最近最久未使用(LRU)置换算法, 最近未使用算法CLOCK:
2. 缺页次数(掉入次数)
u 缺页率=缺页次数/总的页面数
l 例
l 分页系统,主存容量64K,页面大小1K。
l 一个4K大的作业,0-3页分别分配到物理块2、4、6、7中。
1. 该作业的逻辑地址格式如何?
2. 十进制的逻辑地址1023(B)转换为物理地址
3. 画出地址变换过程。
答:
即页号与页内地址位数大小
该作业的4个页面编号需要2位;每页1K大小,即1K条指令编号需10位
l 逻辑地址1023
1023/1K=0 余 1023
0页对应物理块2,所以物理地址是
2 * 1K + 1023 = 2048+1023=3071
l 例
l 虚拟内存管理中的LRU页面置换算法
l 设页面走向如下,分配给该作业3个内存块,画出置换过程图,并计算缺页率。
4 5 8 1 3 4 4 6 5 1 2 7 6 1 3
文件管理
l 文件的结构
l 逻辑结构:
u 有结构文件:顺序,链接,索引
l 物理结构: 已分配空间的记录
u 连续、链接、索引、混合索引分配方式
l FAT表计算,索引文件大小的计算,UNIX下的混合索引
l 空闲空间管理
l 表、盘区\盘块链、成组链接、位示图
l 目录、共享
l 例:FAT与索引的计算
l FAT表的计算
1. 物理空间容量/盘块大小 = FAT表项个数
2. 个数决定位数,决定每项大小
3. 个数*每项大小
l 索引结点
1. 盘块大小/盘块号大小 = 可记录的盘块个数
2. 单索引下,一个索引结点能记录N个盘块,则文件最大长度为:N*盘块大小
l 例:混合索引分配方式的计算
l FCB有13个地址项,0-9为直接地址,10为一次间接地址,11为二次间接地址,12为三次间接地址。若盘块大小为512B,盘块号需3B记录,每个盘块最多存放170个盘块地址。
l 该文件系统文件最大允许多长?
u 10+170+170*170+170*170*170 = 4942080块
u = 4942080*512B = 2471040 KB
l 将文件字节偏移量15000转换为物理块号和块内偏移。
u 15000/512 = 29 余152。10=<29<=10+170.
u 所以文件使用的第29块盘块号,记录在FCB中的10项,即一次间接地址的索引盘块中。从10项记录的地址找到索引表,第19项即是要找的物理块。
l 若FCB已存在内存,其他信息均在外存,访问该文件某位置的内容,最少/最多需要几次访问磁盘?
最少需访问磁盘的情况是直接寻址,直接读FCB中记录的地址,访问磁盘1次即可
最多需访问磁盘的情况是三次间接寻址的过程,需读三次间接索引块中的内容,然后读它里面记录的二次接索引块中的内容,再一次的,最后才能获得文件信息的实际地址。姑,最多情况需4次访问磁盘。
l 外存空间的管理
空闲空间的三种分配方式:连续、链接、索引
空闲空间的管理
1. 空闲表/链、位示土图、成组链接
2. 成组链接
l 例:某系统采用成组链接法管理磁盘空闲空间,目前状态如下图,问:
l 还有多少空闲盘块?
l 若从当前状态下,系统分配3个盘块给某文件后,又删除另一文件,回收了第700,711,703,788,701这5个盘块。则磁盘空间的状态图中的链接情况又如何?
l 空闲盘块成组链接示意图
l 设备管理
l I\0 系统的组成
CPU\通道\控制器\设备
l 磁盘缓冲管理的作用、方式
l 虚拟:spooling
l I\O软件层次
中断处理程序\设备驱动程序\设备独立性程序\用户应用程序
l 磁盘调度
电梯调度算法等p233