首页 > 代码库 > *处理机管理-2

*处理机管理-2

2.2处理机管理

处理机管理也称为进程管理核心是如何合理地分配处理机的时间,提高系统的效率。

1.      程序执行时的特征

 这是单道程序设计技术    

(1)      顺序性。程序和各程序段严格按照规定的顺序执行

(2)      封闭性。程序运行时系统内的资源只受该程序控制而改变

(3)      可再现性:只要程序执行环境和初始条件相同,程序多冷执行的结果相同

 采用多道程序设计技术

 程序并发时执行时的主要特征如下 :

(1)      失去了程序的封闭性

(2)      程序和机器执行程序的活动不再一一对应

(3)      并发程序间具有相互制约性

2.      进程的组成:

进程是程序的一次执行,通常由程序、数据和进程控制块(PCB)组成

进程控制块是进程存在的唯一标志


1.      进程的状态及其状态间的切换

1)  三态模型(线程的基本状态):运行就绪阻塞


说明:进程5态模型是3态模型的升级,优化

新建态:进程刚刚被创建且没有被提交的状态,并等待系统完成创建进程的所有必要作息,

有了新建态,操作系统就可以根据系统的性能和内存容量的限制推迟新建态进程的提交

 

22..2进程控制

主要功能:创建一个新的新进程,撤销一个已经运行完的进程,改变进程的状态,实现进程音的通信,进程控制是由操作系统内核(Kemel)中的原码实现的

原语(Primitive)是指由若干条机器指令组成的、用于完成特定功能的程序段。

特点:是一个事务,要不做,要么都做

主要有:进程控制原语、进程撤销原语、进程扶起原语、进程激活原语、进程阻塞原语等

2.2.3进程通信

进程通信是指各个进程交换信息的过程

1.      同步与互斥

1)  进程间的同步

例:进程A完成了向缓冲区送数据的操作,进程B从缓冲区取数据加工,当进程B取数据加工时,必须是进程A完成了向缓冲区送数据的操作,否则进程B必须停下来等待进程A的操作结束。

进程间的同步是指进程间完成一项任务时直接发生相互作用的关系

2)  进程间的互斥

在多道程序系统环境中,各进程可以共享各类资源 ,但有些资源 一次只能 供一个进程 使用,称为临界资源,如打印机、共享变量。

进程间的互斥是指系统中各个进程互斥使用临界资源

3) 临界区管理的原则

有空即进

无空则等

有限等待

让权等待

2.       *信号量机制  

信号量机制是一种有效的进程同步互斥工具。目前信用量机制有了很多的发展,主要有整形信号量、记录型信号量和信号量集机制。

1) 整形信号量与PV操作

信号量是一个整形变量,分为如下两类

公用信号量。实现进程间的互斥,初值为1或资源的数目

私用信号量。实现进程间的同步。初值为0或某个正整数

信号量的物理意义:若S>=0;表示某资源的可用数

                  S<0,则其绝对值表示阻塞队列中等待该资源的进程数

PV操作是实现进程同步与互斥的常用方法,P操作和v操作是低级通信原语。在执行期间不可分割。其中,P操作表示申请一个资源,V操作表示释放一个资源。

P操作的定义:S=S-1,若S>=0; 则执行P操作的进程继续执行;

                    若S<0;则置该进程为阻塞状态(因为无可用资源)并为其插入阻塞队列中。

P操作可用如下过程表示 ,其中Semaphore表示所定义的变量是信号量

ProcedureP(Var S:Semaphore);

Begin

  S:=S-1;

If S<0then W(S){

执行P操作的进程插入等待队列

}

End;

V操作的定义:S:=S+1; 若S>0; 则执行V操作的进程继续执行

                      若S<=0;则从阻塞状态唤醒一个进程,并将其插入就绪队列,

                      然后执行V操作的进程继续。

V操作可用 如下过程表示

ProcedureV(Var S:Semaphore):

Begin ;

S=S+1;

If S<=0then R(S){

从阻塞队列中唤醒一个进程

}

End;

2)利用PV操作实现进程的互斥

 令信号量mutex的初值为1;进入临界区执行P操作,退出临界区时执行V操作。这

样,进入临界区的代码如下

P(mutex)

临界区

V(mutex)

例两个并发执行的程序完成交通流量的统计,其中 观察者 P1识别 通过的车辆数,

报告都 P2定时将观察都的计数值清 0;

用PV操作实现的交通流量统计程序如下:

P1

L1:if 有车通过 then

Begin

P(mutex)

Count ++;

V(coutex)

End

Goto L1;

 

P2

L2:begin

P(mutex);

Print count;

Count:=0;

V(mutex);

End

GOTO L2;                   

 

3)利用PV操作实现进程的同步

进程的同步是由于进程间的合作而引起的相互制约问题,实现进程同步的一种方法是将

一个信号量与消息相联系,当信号量的值为0时表示希望的消息未产生,否则表示希望

的消息已经来到,假定用信号量S表示某条消息,进程可能通过调用P操作测试消息是

否到达,调用V操作通知消息忆准备好,典型的应用是单缓冲区的生产者和消费者同

步问题!

例:生产者进程P1不断地生产产品送入缓冲区,消费者进程P2不断地从缓冲区中取

出产品消费。为了实现进程P1与P2之间的同步问题,需要设置一个信号量S1,表示缓

冲区是否空闲,初值为1;表示可以将产品送入缓冲区,设置另一个信号量S2,表示缓

冲区有无产品,初值为0;


假设有一个生产者和一个消费者,缓冲区可存放 n件产品,生产者不断地生产产品,

消费者不断地消费产品,可以设置三个信号量

 

1.      高级通信

进程通信的方式分为低级方式和高级方式,

Pv操作属于低级通信方式,若用PV操作实现进程间的通信,则存在如下问题:

(1)。编程难度大

 (2)效率低

所以引入高级通信方式

主要分为共享存储模式,消息传递模式,管道通信

(1)。共享存储模式:相互通信的进程共享某些数据结构,实现进程之间的通信

 (2)。消息传递模式:进程间的数据交换以消息为单位,程序员直接利用系统提供的一组通信命令(原语),来实现通信

 

(2)      管道通信。管道是用于连接一个读进程和一个写进程。

4.。直接和间接通信

直接通信是将消息直接发送给指定进程。因此,Send 和Receive原语中应指出进程名字。

其调用格式如下:

Send(Who, Meessage) 发送消息给指定进程或一组进程

Receive(Who ,Message) 从约定进程接收消息

 间接通信是以信箱为媒体来实现通信的,接收信件的进程只需要设立一个信箱,若干个进程都可以向同一个进程发送信件,

Send (N,M)将信件M发送到信箱N中

Receive(N,X)从信箱N中取一封信存入X

 

2.2.4进程调度

 进程调度方式是指当有更高优先级的进程到来时如何分配CPU

分为:可剥夺和不可剥夺两种。

1.      三级调度

在某些操作系统中,一个作业从提交到完成需要经历 高、中、低 三级调度

(1)      高级调度,又称为长调度、作业调度、接纳调度,它决定处于输入池中的

哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。

系统中一个作业只需经过一次高级调度。

(2)      中级调度。又称为 中程调度 或 对换调度,它决定处于交换区中的就绪进程哪个可以调入内存,以便直接参与对cpu的竞争,在内存资源紧张时,为了将进程调入内存,必须将内存中处于阻塞状态的进程调出至交换区,以便为调入进程腾出空间,这相当于使处于内存的进程和处于盘交换区的进程交换了位置。

(3)      低级调度,又称 短程调度 或 进程 调度 ,它决定处于内存中就绪进程哪个可以占用CPU,是操作系统 中最活跃、最重要的高度程序,对系统的影响很大。

2.      常用的进程高度算法有先来先服务、时间片轮转、优先数调度和多级扤调度算法

1),先来先服务(first come first served,FCFS)

 FCFS有利于长作业,有利用CPU繁忙的作业,而不利于I/O繁忙的作业。

1)  时间片轮转

时间片轮转算法主要用于微观高度,其设计目标是提高资源利用率。通过时间片轮转

,提高进程并发性和响应时间特性。方法一般有如下两种

(1)      固定时间片。

(2)      可变时间片

2)  优先级调度

优先级调度算法是让每一个进程都拥有一个优先数,数值大的表示优先级高,系统在

调度时总选择优先级高的占用CPU,分为静态优先级和动态优先级

(1)。静态优先级:进程的优先级在创建时确定,直到进程终止都不会改变。

 (2)。动态优先级:在创建一个进程时赋予一个优先级,在进程运行过程中还可以改变。

4)多级反馈调度

多级后馈队列算法是时间片轮转和优先级算法的综合与发展,其优点是照顾短进程以提高系统吞吐量,缩短了平均周转时间,照顾I/O型进程以获得较好的I/O设备利用率和缩短响应时间,不必估计进程的执行时间,动态调节优先级。

2.2.5死锁

 在计算机系统中有各种互斥资源(如磁带机、打印机和绘图仪等)和软件资源等,若两个进程互相要求对方已占用的资源,或同时进入临界区则会出现问题,所谓死锁,是指两个以上的进程互相要求使用对方已经占有的资源而导致无法断续运行的现象。

常见死锁:

(1)       进程推进顺序不当引起死锁

(2)       同类资源分配不当

(3)       PV操作使用不当

3.       产生死锁的原因及条件

可以看出,产生死锁的原因是竞争资源或非法的里程推进顺序,当系统中有多个进程共享的资源不足以同时满足它们的需求时,引起这些进程对资源的竞争导致死锁。

产生死锁的4个必要条件为 互斥条件、请求保持条件、不可剥夺条件和环路条件

(1)      互斥条件。进程对其所要求的资源进行排他性控制,即一次只允许一个进程使用

(2)      请求保持条件。零星的请求资源,即已获得部分资源又请求资源被阻塞。

(3)      不可剥夺条件。进程已获得的资源在未使用完之前不能被剥夺,只能在使用完成时自己释放。

(4)      环路条件。当发生死锁时,在进程资源有向图中必然构成环路,其中每个进程占有了下一个进程申请的一个或多个资源,如图2-8所示。方框表示资源,圆圈表示进程,


2.2.6线程

 传统的进程有两个基本属性:

 可拥有资源的独立单位

 可独立调度和分配的基本单位

由于在进程的创建、撤销和切换中,系统必须为之付出较大的时间开销,因此在系统中设置的进程数目不多、进程切换的频率不宜过高,这就限制了并发程度的提高。引入线程后,将传统进程的两个基本属性分开,线程作为调度和分配资源的基本单位,进程作为独立分配资源的单位。用户可以通过创建线程来完成任务,以减少程序并发执行时付出的时空开销。

特点说明:

线程是进程中的一个实体,是被系统独立分配和调度的基本单位,线程基本上不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈)。它可与同属一个进程的其他线程共享进程拥有的全部资源。由于线程具有许多传统进程所具有的特性,故称为轻型进程,传统进程称为重型进程。




*处理机管理-2