当前位置:文档之家› 第2、3章 处理器管理复习

第2、3章 处理器管理复习

第2、3章处理器管理复习2.1处理器管理概述1. 处理器管理的主要任务:是对处理器进行分配,并对其运行进行有效地控制和管理。

处理器管理的主要功能⏹进程控制⏹进程同步⏹进程通信⏹进程调度 :包括作业调度和进程调度。

作业调度:从后备队列中按照一定的算法,选择若干个作业,为它们分配必要的资源,将它们调入主存,然后为它们建立进程,并按照一定的算法将其插入就绪队列。

进程调度:从进程的就绪队列中,按照一定的算法选出一新进程,把处理器分配给它,并为它设置运行现场,使进程投入运行。

2. 程序的顺序执行程序在执行时,必须按某种先后次序逐个执行操作,只有当前一个操作执行完后,才能执行后一个操作。

特征:⏹顺序性⏹封闭性⏹可再现性3.程序的并发执行是指在一个时间段内执行多个程序。

特征:⏹间断性⏹失去封闭性⏹不可再现性2.2 进程描述1.进程的定义一个程序在一个数据集合上的一次运行过程。

所以一个程序在不同数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。

进程是程序的一次执行进程是一个程序及其数据在处理机上顺序执行时所发生的活动。

进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

2.进程的特征⏹动态性 :是进程的最基本的特征,它由创建而产生,由调度而执行,由撤消而消亡。

⏹并发性⏹独立性:指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。

⏹异步性⏹结构性3.进程的状态进程的三种基本状态就绪状态:当进程以分配到除处理器(CPU)以外的所有必要资源后,只要再获得处理器就可以立即执行,这时进程的状态称为就绪状态。

执行状态:处于就绪状态的进程一旦获得了处理器,就可以运行,进程状态也就处于执行状态。

阻塞状态:正在执行的进程因为发生某些事件(如请求输入/输出、申请额外空间等)而暂停运行,这种受阻暂停的状态称为阻塞状态,也可以称为等待状态。

就绪态阻塞态执行态I/O完成进程调度时间片完I/O请求进程的挂起状态引入挂起状态后的进程状态转换⏹执行状态→静止就绪⏹活动就绪→静止就绪⏹静止就绪→活动就绪⏹活动阻塞→静止阻塞⏹静止阻塞→活动阻塞⏹静止阻塞→静止就绪活动就绪活动阻塞执行态激活挂起I/O请求静止就绪静止阻塞挂起挂起激活唤醒唤醒通过PCB,使得原来不能独立运行的程序(数据),成为一个可以独立运行的基本单位,一个能够并发执行的进程。

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

进程控制块的内容:进程标识符、处理器状态、进程调度信息、进程控制信息链接指针:给出了本进程(PCB)所在队列中的下一个进程的PCB 的首地址。

进程控制块的组织方式:链接方式、索引方式2. 进程控制原语原语的概念原语是指具有特定功能的不可被中断的过程。

它主要用于实现操作系统的一些专门控制操作。

原语的分类创建原语:用于为一个进程分配工作区和建立PCB,置该进程为就绪状态。

撤消原语:用于一个进程工作完后,收回它的工作区和PCB。

阻塞原语:用于进程在运行过程中发生等待事件时,把进程的状态改为等待态。

唤醒原语:用于当进程等待的事件结束时,把进程的状态改为就绪态。

3. 进程的创建引起进程创建的事件⏹用户登录⏹作业调度⏹提供服务⏹应用请求2.4 线程的基本概念线程的概念:线程是进程中的一个实体,是被系统独立调度和执行的基本单位。

线程与进程的区别:●调度单位不同:线程是独立调度和执行的基本单位,进程只作为资源分配和拥有的基本单位。

●并发形式不同:在一个进程中的各个线程,可以并发执行。

不同进程中的线程也能并发执行。

●拥有资源不同:线程中的实体基本上不拥有系统资源,进程拥有资源。

●共享方式:在同一进程中的各个线程,都可以共享该进程所拥有的资源。

进程的基本属性:(1)进程是一个可拥有资源的独立单位。

(2)进程同时又是一个可独立调度和分派的基本单位。

一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。

线程的属性:⏹轻型实体。

线程中的实体基本上不拥有系统资源。

⏹独立调度和分派的基本单位。

⏹可并发执行⏹共享进程资源。

线程的类型:系统级线程:是依赖于系统控制的,即无论是用户进程中的线程,还是系统进程中的线程,它们的创建、撤消、切换都是由系统控制实现的。

用户级线程:是由用户控制,对于用户级线程的创建、撤消、切换,都与系统控制无关,完全由用户自己管理。

超线程的概念超线程技术就是利用特殊的硬件指令,在一颗实体处理器中放入两个逻辑处理单元,从而模拟成两个工作环境,让单个处理器都能使用线程级并行计算,同时处理多项任务,提升处理器资源的使用率。

2.5 进程同步与互斥1. 进程的并发性:在并发执行的系统中,若干个作业可以同时执行,而每个作业又需要有多个进程协作完成。

在这些同时存在的进程间具有并发性进程同步的主要任务:使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。

临界资源:在系统中有许多硬件或软件资源,在一段时间内只允许一个进程访问或使用,这种资源称为临界资源。

临界区:每个进程中访问临界资源的那段代码称为临界区进程同步:进程同步是指多个相关进程在执行次序上的协调,这些进程相互合作,在一些关键点上需要相互等待或相互通信。

进程互斥:进程互斥是指当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一个进程才被允许使用临界资源。

进程同步机制应遵循的原则⏹空闲让进⏹忙则等待⏹有限等待⏹让权等待2. 利用PV操作实现互斥与同步信号量就是一种特殊变量,它用来表示系统中资源的使用情况。

而整型信号量就是一个整型变量。

说明:当其值大于“0”时,表示系统中对应可用资源的数目;当其值小于“0”时,其绝对值表示因该类资源而被阻塞的进程的数目;当其值等于“0”时,表示系统中对应资源已经都被占用,并且没有因该类资源而被阻塞的进程。

信号量的操作P操作:记为P(S),描述为:P(S){ S=S-1;if (S<0)W(S);}W(s):将调用过程的进程插入到等待信号量S的等待队列中V操作:记为V(S),描述为:V(S){ S=S+1;if (S<=0)R(S);}R(s):从该信号量的等待队列中释放第一个进程。

Wait(s)操作:procedure wait(s)var S:semaphore;begins.value:=S.value-1;if s.value<0 then block(S,L);end.wait(s):将调用过程的进程插入到等待信号量S的等待队列中Signal(s)操作:procedure Signa (s)var S:semaphore;begins.value:=S.value+1;if s.value<=0 then wakeup(S,L);end.wakeup(s):从该信号量的等待队列中释放第一个进程。

解:S:表示临界资源十字路口,S=1int S=1;main(){ pew(); psn();}pew() psn(){ {p(s); wait(s) p(s);由东向西通过十字路口;由南向北通过十字路口;v(s); signal(s) v(s); } }【例2-2】有4位哲学家围着一个圆桌在思考和进餐,每人思考时手中什么都不拿,当需要进餐时,每人需要用刀和叉各一把,餐桌上的布置如图2-12所示,共有2把刀和2把叉,每把刀或叉供相邻的两个人使用。

请用信号量及PV操作说明4位哲学家的同步过程。

Int fork1=1,fork2=1,knife1=1,knife2=1;Pa(){ while(1){ p(knife1);p(fork1);进餐;v(knife1);v(fork1);}}利用PV操作实现同步同步信号量是根据进程的数量设置的。

一般情况下,有几个进程就设置几个同步信号量,表示该进程是否可以执行,或表示该进程是否执行结束。

其初值一般为“0”。

【例2-3】桌上有一个空盘子,只允许放一个水果。

爸爸可以向盘中放苹果,也可以向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。

规定当盘空时,一次只能放一只水果,请用PV操作实现爸爸、儿子、女儿3个并发进程的同步。

Int sp=1; sa=0;so=0;Main(){ father(); son();daughter();}Father() son(){ while(1) {while(1){ p(sp); {p(so);将水果放入盘中;从盘中取出桔子;if (放入的是桔子)v(sp);v(so); 吃桔子;elsev(sa); }}}}【例2-4】生产者与消费者问题(1:1:1)Sp:是否可以把物品存入缓冲区;sg:缓冲区是否存有物品。

Int sp=1, sg=0;Producer(){ while(1){ 生产一个产品;p(sp);buffer=产品;v(sg);}}Consumer(){ while(1)取产品从仓库中;v(sp)消费}}【例2-6】生产者与消费者问题(1:n:1)Int sp=n, sg=0;b[n],k=0,t=0Producer(){ while(1){ 生产一个产品;p(sp);b[k ]=产品;k=(k+1) mod n;v(sg);}}Consumer(){ while(1){ p(sg);取产品从b[t];t=(t+1) mod n消费}}【例2-7】生产者与消费者问题(m:n:r)Sp:是否可以把物品存入缓冲区;sg:缓冲区是否存有物品。

S1:m个生产者之间互斥地往缓冲区中存入物品;S2:r个消费者之间互斥地从缓冲区取物品Int sp=n, sg=0;b[n],k=0,t=0,s1=1,s2=1;Producer(){ while(1){ 生产一个产品;p(sp);p(s1)b[k ]=产品;k=(k+1) mod n;v(s1)v(sg);}}Consumer(){ while(1)p(s2)取产品从b[t];t=(t+1) mod nv(s2)v(sp)消费}}同步与互斥的解题思路①分清哪些是互斥问题(互斥访问临界资源的),哪些是同步问题(具有前后执行顺序要求的)。

②对互斥问题要设置互斥信号量,不管有互斥关系的进程有几个或几类,通常只设置一个互斥信号量,且初值为1,代表一次只允许一个进程对临界资源访问。

③对同步问题要设置同步信号量,通常同步信号量的个数与参与同步的进程种类有关,即同步关系涉及几类进程,就有几个同步信号量。

同步信号量表示该进程是否可以开始或该进程是否已经结束。

④在每个进程中用于实现互斥的PV操作必须成对出现;用于实现同步的PV操作也必须成对出现,但可以分别出现在不同的进程中;在某个进程中如果同时存在互斥与同步的P操作,则其顺序不能颠倒,必须先执行对同步信号量的P操作,再执行对互斥信号量的P操作,但V操作的顺序没有严格要求。

相关主题