操作系统笔记2

 

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 常用的实施方法:撤销或挂起一些进程,以便回收一些资源并将他们分配给已阻塞进程,使之转为就绪以继续运行。

死锁的检测与解除措施,有可能使系统获得较好的资源利用率和吞吐量(死锁几率不一定很高),但在实现上难度也最大。

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

猜你喜欢

转载自www.cnblogs.com/-dabai/p/10085468.html