第二章 进程管理管理主讲:王凤广
Copyright 2003.2----2007.3
第一节 进程管理概述
1.处理机的硬件特性
2.进程管理的功能
复杂指令集计算机和精简指令集计算机
CISC Complex Instruction Set Computer
CPU的指令多、复杂,包含高级语言支持等高级指令,使用方便。
但设计复杂,消耗 CPU设计资源,降低指令执行效率。
第一节 进程管理概述
1.处理机的硬件特性
2.进程管理的功能
复杂指令集计算机和精简指令集计算机
RISC Reduced Instruction Set Computer
执行速度快需要更多的内存第一节 进程管理概述
1.处理机的硬件特性
2.进程管理的功能
CPU的并发程序支持特性
CPU的普通指令和特权指令
CPU的工作方式:普通方式和特权方式
CPU的保护机制
CPU的任务切换机制第一节 进程管理概述
1.处理机的硬件特性
2.进程管理的功能
启动程序的执行--将 CPU交给用户程序使用把程序装入内存按程序要求初始化寄存器程序的入口地址装入 PC
第一节 进程管理概述
1.处理机的硬件特性
2.进程管理的功能
启动程序的执行--将 CPU交给用户程序使用
处理程序的结束工作程序结束系统调用释放资源第一节 进程管理概述
1.处理机的硬件特性
2.进程管理的功能
启动程序的执行--将 CPU交给用户程序使用
处理程序的结束工作
提高 CPU的利用率,实现并发技术
--实现多个程序对 CPU的并发共享进程的调度进程的控制进程的同步进程的通信中断的处理第一节 进程管理概述
1.处理机的硬件特性
2.进程管理的功能
启动程序的执行--将 CPU交给用户程序使用
处理程序的结束工作
提高 CPU的利用率,实现并发技术
--实现多个程序对 CPU的并发共享进程的创建进程状态的控制进程的结束
向用户程序提供相关的用户接口第一节 进程管理概述
1.处理机的硬件特性
2.进程管理的功能
启动程序的执行--将 CPU交给用户程序使用
处理程序的结束工作
提高 CPU的利用率,实现并发技术
--实现多个程序对 CPU的并发共享
向用户程序提供相关的用户接口
多 CPU的管理第二节 进程的基本概念
1.进程定义
2.进程特征
3.进程状态及变迁
1,失去了程序的封闭性
2,程序并行执行的相互制约性
并发程序的特点
3,程序与程序的运行不再一一对应第二节 进程的基本概念
1.进程定义
2.进程特征
3.进程状态及变迁进程是为了描述程序的并发执行而引入的。
进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
进程的概念第二节 进程的基本概念
1.进程定义
2.进程特征
3.进程状态及变迁
动态性进程有一个产生、执行、死亡的生命周期。
并发性
独立性
结构特征只有进程才能并发执行每个进程都是一个独立的调度单位
异步性进程以独立的、不可预知的速度向前推进程序段 进程控制块 数据段第二节 进程的基本概念
1.进程定义
2.进程特征
3.进程状态及变迁进程在整个生命周期内有三种基本状态:
就绪态 进程已获得除 CPU以外的所有资源。
执行态 进程正在处理机上运行。
阻塞态 正在执行的进程,由于等待某个事件的发生而无法执行。
第二节 进程的基本概念
1.进程定义
2.进程特征
3.进程状态及变迁第三节 进程的实现
1.进程结构
2.PCB结构
3.PCB组织进程并不是虚无“缥缈”的,它是实在存在。
每一个进程在内存中都有一个实在存在的实体。一个进程一般有以下三部分组成:
程序段 进程所执行的程序
进程控制块 进程的状态信息
数据段 进程所处理的数据进程标示符第三节 进程的实现
1.进程结构
2.PCB结构
3.PCB组织进程控制块主要包含以下信息:
进程标示符
进程的状态
进程的环境
指向程序段和数据段的指针
进程优先级
进程的资源
进程的同步与通信机制
进程间的连接信息
进程其它控制信息第三节 进程的实现
1.进程结构
2.PCB结构
3.PCB组织
链接方式
索引方式第四节 进程控制和调度
1.进程控制
2.进程调度
1)概述进程控制就是对进程的生命周期进行控制,
以实现进程状态的转换。
进程控制由 OS的内核完成。内核提供了一系列进程控制原语。通过这些原语,实现进程状态的控制。
原语,不可中断的语句序列。
第四节 进程控制和调度
1.进程控制
2.进程调度
2)进程家族树第四节 进程控制和调度
1.进程控制
2.进程调度
3)进程进程控制原语创建原语,建立新进程分配 PCB
分配进程 ID
初始化 PCB的相关域建立程序段和数据段映象进程的状态设置为“就绪”
将进程插入就绪队列第四节 进程控制和调度
1.进程控制
2.进程调度
3)进程进程控制原语撤销原语,撤销进程。
处理其子进程释放进程的资源释放程序段和数据段占据的内存释放 PCB
第四节 进程控制和调度
1.进程控制
2.进程调度
3)进程进程控制原语阻塞原语,把进程的状态由运行态变成阻塞态。
PCB的状态域变成,阻塞,
把 PCB插入阻塞队列进程调度第四节 进程控制和调度
1.进程控制
2.进程调度
3)进程进程控制原语唤醒原语,把进程的状态由阻塞态变成就绪态。
在阻塞队列中查找指定进程
PCB的状态域变成,就绪,
把 PCB从阻塞队列中移出把进程插入就绪队列若当前进程的优先级比运行进程高则进程调度第四节 进程控制和调度
1.进程控制
2.进程调度
1)进程调度,是指剥夺当前进程的运行权,
从就绪队列中按一定策略选择一个进程运行。
2)进程调度的原因
进程的时间片用完;
有优先级更高的进程进入就绪队列;
进程执行结束;
进程由于等待某事件发生或等待 I/ O
操作而使之不能继续运行;
由于执行了某些原语操作。
第四节 进程控制和调度
1.进程控制
2.进程调度
3)进程调度考虑的几个问题
进程调度的方式不可剥夺方式 某一进程一旦占有了 CPU,
便一直运行下去,直到它运行结束或因某种原因被阻塞才交出 CPU,别的进程不能从该进程抢走 CPU。
可剥夺方式 进程在运行时,系统可基于某种原则,将其占用的 CPU剥夺,分配给其他其进程。
第四节 进程控制和调度
1.进程控制
2.进程调度
3)进程调度考虑的几个问题
进程调度的时机完全可剥夺方式 任何时间都能剥夺进程的运行权不完全可剥夺方式 只能在某些点(剥夺点)才能剥夺进程的运行权,其他时间不能剥夺。
第四节 进程控制和调度
1.进程控制
2.进程调度
3)进程调度考虑的几个问题
进程调度的算法时间片轮换法静态优先数动态优先数第五节 进程的互斥和同步
1.进程互斥
2.进程同步
3.两者关系进程的互斥,是解决资源的互斥访问的。
比如打印机的使用,必须保证一次只有一个进程使用。
第五节 进程的互斥和同步
1.进程互斥
2.进程同步
3.两者关系
1)临界资源 操作系统中,一次仅允许一个进程访问的资源。
2)临界区 操作系统中把进程访问理解资源的那段程序代码叫临界区。
3)互斥就是指 几个进程不能同时进入访问同一临界资源的临界区第五节 进程的互斥和同步
1.进程互斥
2.进程同步
3.两者关系
4)加锁、开锁原语
W=1
Lock(w)
A if (w==0)
goto a
w=w-1
unlock(w)
w=w+1
第五节 进程的互斥和同步
1.进程互斥
2.进程同步
3.两者关系进程互斥必须满足以下条件:
互斥性,不能有两个进程同时处于临界区中。
前进性,在临界区外的进程不能阻塞别的进程进入临界区。
有限等待,进程不能无休止地等待进入临界区。
通用性,对进程的执行条件不作任何假设。
第五节 进程的互斥和同步
1.进程互斥
2.进程同步
3.两者关系进程在未获得合作进程发来消息前等待,
消息到来之后才能继续运行的进程合作关系,叫进程的同步。
第五节 进程的互斥和同步
1.进程互斥
2.进程同步
3.两者关系进程互斥可以看成进程同步的一种特例。
对于互斥的进程,它们各自独立执行时都是正确的,只要是互斥地进行,至于那个进程先进入临界区则无所谓 。
同步进程单独执行会产生错误,它们必须相互配合共同推进;各合作进程对公共资源的那部分操作必须严格按一定的先后顺序执行 。
第五节 PV操作及应用
1.信号量
2.PV操作
3.应用信号量信号量是一个数据结构,用来表示资源的状态。
struct semaphore {
int value;
queue q;
}
信号量的值只能由 P,V操作来改变。
第五节 PV操作及应用
1.信号量
2.PV操作
3.应用
1) PV操作的算法
P( s),
s.value=s.value-1
if (s.value<0 ) block(s.p)
V( s),
s.value=s.value+1
if (s.value<=0) block(s.p) wakeup(s.p)
第五节 PV操作及应用
1.信号量
2.PV操作
3.应用
2) PV操作的物理意义
P操作是申请资源,V操作是释放资源
S.value的初始值,表示该资源的数量
S.value>0,该资源剩余的数量
s.value<0,其绝对值表示等待该资源进程的数量第五节 PV操作及应用
1.信号量
2.PV操作
3.应用
1,PV操作实现互斥
2、缓冲区 buffer的大小为 1,进程 p向 buffer送数据,进程 g从 buffer取数据。用 PV操作实现两进程的同步。
3、生产者消费者问题。
有一大小为 n的缓冲区 buffer,有 m个进程向里送数据,有 k个进程取数据,用 PV操作,时间进程的同步第六节 进程通信
1.概述
2.管道通信
3.消息传递
4.共享内存进程通信是指进程间的信息交换。
低级通信 进程间每次交换的信息量比较少。
同步 互斥高级通信 实现高效传送大量信息的通信方式第六节 进程通信
1.概述
2.管道通信
3.消息传递
4.共享内存管道 ( pipe) 是 UNIX中进程通信的一种手段 。
管道,就是流淌数据的一根,管子,,数据从,管子,的一端流入,从另一端流出 。
管道是进程间通信的一种手段,一个进程向管道中写数据,另一个进程从管道中读数据 。
管道是单向的 。 写进程只能向管道中写数据不能读,读进只能读 。
第六节 进程通信
1.概述
2.管道通信
3.消息传递
4.共享内存管道是通过文件的形式实现的 。 即输出进行把数据写到一个,文件,中,输出进程从这个文件中读数据,当然这个文件并不是直接存到磁盘上,而是存到内存中的一个区域内,即管道是建在内存中的,只不过在逻辑上是通过文件系统实现的 。
管道分无名管理和有名管道 。 无名管道没有文件名,有名管道在磁盘上存在一个实实在在的文件名,当然只存在一个名字而已,
在磁盘上不存在内容 。
第六节 进程通信
1.概述
2.管道通信
3.消息传递
4.共享内存直接通信方式(消息缓冲方式)
发送进程利用操作系统提供的发送原语,直接把消息发送到目标进程,挂在目标进程的消息队列中。
接收进程利用操作系统提供的接收原语,接收发送给他的消息。
第六节 进程通信
1.概述
2.管道通信
3.消息传递
4.共享内存间接通信方式(信箱方式)
信箱的创见和撤销
消息的发送和接收第六节 进程通信
1.概述
2.管道通信
3.消息传递
4.共享内存在内存中划出一片共享存储区,有关进程可以通过对该存储区的读写,实现进程通信。
操作层次低--在硬件层次上。
效率非常高。
安全性差,编程复杂。
第七节 线程的概念
1.线程定义
2.线程属性
3.线程和进程的比较线程是进程中可以独立执行的子任务。
一个进程中可以有一个或多个线程,既可以有一个或多个独立执行的子任务。
第七节 线程的概念
1.线程定义
2.线程属性
3.线程和进程的比较
线程有控制表
线程共享所属进程的资源
线程是处理器独立调度的执行单位
线程具有动态性第七节 线程的概念
1.线程定义
2.线程属性
3.线程和进程的比较
拥有资源
调度
并发行
系统开销第八节 死锁的处理
1.死锁定义
2.死锁原因
3.死锁必要条件
4.死锁处理两个或两个以上的进程循环等待对方释放资源的状态。
第八节 死锁的处理
1.死锁定义
2.死锁原因
3.死锁必要条件
4.死锁处理
系统资源不足
进程推进顺序不当第八节 死锁的处理
1.死锁定义
2.死锁原因
3.死锁的必要条件
4.死锁处理
互斥条件
不可剥夺条件
部分分配条件
循环等待条件第八节 死锁的处理
1.死锁定义
2.死锁原因
3.死锁的必要条件
4.死锁处理
死锁预防对资源分配设置一些限制条件,破坏死锁的四个必要条件之一或几个,从而绝对避免产生死锁。
死锁避免在资源的动态分配过程中,采取措施,
避免系统进入不安全状态,从而绝对避免死锁。
第八节 死锁的处理
1.死锁定义
2.死锁原因
3.死锁的必要条件
4.死锁处理
死锁的检测和解除对资源分配不作任何限制和假设,系统可能出现死锁。
系统定时对进程进行检测,发现死锁再采取措施解除。
第九节 Linux进程模型
1.进程状态
2.进程 PCB
3.进程树
4.进程命令运行态,获得 CPU正在运行,在 Linux中称作当前进程 。 (current)
可执行态 ( TASK_RUNING),即就绪态 。
不可中断睡眠态
( TASK_UNINTERRUPTIBLE),进程处于深度,睡眠,状态,不受信号 ( signal) 的打扰,即不对信号作出响应 。
可 中 断 睡 眠 态
( TASK_INTERRUPTIBLE),它可以因信号的到来而被唤醒,即可以对信号作出响应 。
第九节 Linux进程模型
1.进程状态
2.进程 PCB
3.进程树
4.进程命令僵死态 ( TASK_ZOMBIE),进程已经结束,但,户口,还未撤销,即它的 task_struct
在内存中还存在 。
停止状态 ( TASK_STOPPED),主要用于调试目的 。 进程收到一个 SIGSTOP信号时,
就把状态改成 TASK_STOPPED而进入,停止,
状态,在接收到一个 SIGCONT信号时,又恢复继续运行 。
状态转换图第九节 Linux进程模型
1.进程状态
2.进程 PCB
3.进程树
4.进程命令
Task_struct的主要域:
状态转换图大体可分为:状态、性质、资源、组织等几类
State 进程状态
need_sched CPU从系统空间返回用户空间前夕要进行一次调度
pid 进程号
uid euid 用户 id,有效用户 id
Cap_effective,cap_inheritable,cap_permitted
进程的权限第九节 Linux进程模型
1.进程状态
2.进程 PCB
3.进程树
4.进程命令
Task_struct的主要域:
状态转换图大体可分为:状态、性质、资源、组织等几类
rlim 对各种资源使用数量的限制
per_cpu_utime[],per_cpu_stime[]
p_pptr,p_osptr,p_ysptr
第九节 Linux进程模型
1.进程状态
2.进程 PCB
3.进程树
4.进程命令状态转换图第九节 Linux进程模型
1.进程状态
2.进程 PCB
3.进程树
4.进程命令状态转换图
idle
init
mingetty mingetty mingetty mingetty……
user1 user2
p1 p2 pn…

第九节 Linux进程模型
1.进程状态
2.进程 PCB
3.进程树
4.进程命令
ps,显示当前进程
top 监视系统运行状态程序名& 把进程变成后台运行
fg
kill
PV操作实现互斥 (例 )
Struct semaphore mutex=1;
Process1(void)
{ while (TRUE) {
P(mutex)
critical section 1
V(mutex)
remainder section }
}
Process2(void)
{ while (TRUE) {
P(mutex)
critical section 2
V(mutex)
remainder section }
}
Process3(void)
{ while (TRUE) {
P(mutex)
critical section 3
V(mutex)
remainder section }
}返回进程的同步(例)
P g
Buffer中有空才能送数据设置代表
Buffer大小的信号量 SC=1
Buffer中有数据才能取设置代表
Buffer中数据个数的信号量 SP= 0
Struct semaphore SC=1,SP=0
Message buffer
P(void) { message x;
while(TRUE) {
compute next message
into x;
P(SC)
buffer=x;
V( ) ;
}
}
SP
g(void) { message x;
while(TRUE) {
P(SP)
x=buffer;
V( ) ;
print message x;
}
}
SC
返回生产者消费者问题(例)
返回
Buffer=n
生产者 1
生产者 2
生产者 k
……
消费者 1
消费者 2
……
消费者 m
信号量,empty 缓冲区的数量
full 缓冲区中信息的数量
mutex 互斥量生产者消费者问题(例)
返回
Struct semaphore mutex=1,empty=n,full=0;
Message buffer[n];
Prodecer_I(void) (I=1,2,3…k){
{ message x;
while(TRUE) {
produce a message into x;
p(empty);
p(mutex);
x into buffer;
v(mutex);
v(full);
} }
consumer_I(void) (I=1,2,3…k){
{ message x;
while(TRUE) {
p(full);
p(mutex);
from buffer into x;
v(mutex);
v(empty);
consume message x;
} }
生产者消费者问题(例)
返回
P操作的顺序是固定的
V操作的顺序是任意的
Linux进程状态转换返回