进程管理
l 程序顺序执行与并发执行比较
顺序执行
并发执行
程序顺序执行
间断执行,多个程序各自在“走走停停”种进行
程序具有封闭性
程序失去封闭性
独享资源
共享资源
具有可在现性
失去可再现性
有直接和简接的相互制约
l 多道程序设计概念及其优点
1. 多道程序设计:是在一台计算机上同时运行两个或更多个程序。
2. 多道程序设计的特点:多个程序共享系统资源、多个程序并发执行
3. 多道程序设计的优点:提高资源利用率、增加系统吞吐量
l 什么是进程,进程与程序的区别和关系
1. 进程的引入:
由于多道程序的特点,程序具有了并行、制约和动态的特征,就使得原来程序的概念已难以刻划和反映系统中的情况了。
2. 进程:程序在并发环境下的执行过程。
3. 进程与程序的主要区别:
1) 程序是永存的,进程是暂时的
2) 程序是静态的观念,进程是动态的观念
3) 进程由三部分组成
程序
数据
进程控制块(描述进程活动情况的数据结构)
4) 进程和程序不是一一对应的
Ø 一个程序可对应多个进程即多个进程可执行同一程序
Ø 一个进程可以执行一个或几个程序
4. 程序与进程的类比
程 序
进 程
唱歌的曲谱或音乐乐器的乐谱
演出或演奏
剧本
演出
菜谱
烹调
5. 进程特征:动态性、并发性、调度性、异步性、结构性
l 进程的基本状态及其转换
1. 进程基本状态:
1) 运行态(Running):进程正在占用CPU;
2) 就绪态(Ready):进程具备运行条件,但尚未占用CPU;
3) 阻塞态(Blocked):进程由于等待某一事件不能享用CPU。
2. 进程状态转换:
l 进程是由哪些部分组成, 进程控制块的作用
1. 进程的组成:由程序、数据集合和PCB三部分组成。
2. 进程控制块的作用:进程控制块是进程组成中最关键的部分。
1) 每个进程有唯一的PCB。
2) 操作系统根据PCB对进程实施控制和管理。
3) 进程的动态、并发等特征是利用PCB表现出来的。
4) PCB是进程存在的唯一标志。
l PCB组织方式
线性队列、链接表、索引表
l UNIX进程管理命令:
l UNIX进程管理命令:
1. ps--显示进程状态
功能:检查系统中当前存在的进程状态。
例如
$ ps 显示与控制中断相关进程的基本信息
2. sleep--使进程睡眠
功能:使进程暂停执行一段时间,其参数单位是秒。
例如
$ sleep 60 将等待60秒后,才重新回到$提示符
3. &--后台命令符
功能:命令行末尾加上&字符,此命令进程将在后台执行。
例如
$ ls –l/usr& 创建一个显示目录命令进程,它在后台执行,即没有前台进程运行时它才得以运行
4. wait--等待后台进程结束
功能:等待后台进程结束。
例如
$ wait 2080 等待PID为2080的后台进程终止
5. kill--终止进程
功能:终止一个进程执行。
例如 (在超级用户方式下)
# kill 678 停止PID为678的进程运行
6. nice--设置优先级
功能:是以不同的优先级执行一条命令
例如
普通用户只能降低优先级:
$ nice –n 10 cc f1.c 执行cc f1.c命令时的nice值为30(即20+10)
超级用户(root)可以提高进程的优先级(即:增量值可取不小于-20的负数)
# nice -n -10 vi abc 执行vi abc (编辑命令)的nice值为10(即20-10)
l 进程的同步与互斥
1. 同步:是进程间共同完成一项任务时直接发生相互作用的关系。
2. 互斥:排它性访问即竞争同一个物理资源而相互制约。
l 什么是临界资源、临界区?
1. 临界资源:一次仅允许一个进程使用的资源。
2. 临界区:在每个进程中访问临界资源的那段程序。
3. 互斥进入临界区的准则:
1) 如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。
2) 任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。
3) 进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。
4) 如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。
l 信号量
1. 信号量定义:
信号量(信号灯)=<信号量的值,指向PCB的指针>
2. 信号量的物理意义:
大于0:表示当前资源可用数量
1) 信号量的值
小于0:其绝对值表示等待使用该资源的进程个数
2) 信号量初值为非负的整数变量,代表资源数。
3) 信号量值可变,但仅能由P、V操作来改变。
l P,V操作原语
1. P操作原语P(S) :
1) P操作一次,S值减1,即S=S-1(请求分配一资源);
2) 如果S≥0,则该进程继续执行;
如果S<0表示无资源,则该进程的状态置为阻塞态,把相应的PCB连入该信号量队列的末尾,并放弃处理机,进行等待(直至另一个进程执行V(S)操作)。
2. V操作原语(荷兰语的等待)V(S) :
1) V操作一次,S值加1,即S=S+1(释放一单位量资源);
2) 如果S>0,表示有资源,则该进程继续执行;
如果S≤0,则释放信号量队列上的第一个PCB所对应的进程(阻塞态改为就绪态),执行V操作的进程继续执行。
l 进程间简单同步与互斥的实现
1. 用P,V原语实现互斥的一般模型:
设互斥信号量mutex初值为1
2. 用P、V原语操作实现简单同步的例子
供者和用者对缓冲区的使用关系如下图:
S1缓冲区是否空(0表示不空,1表示空),初值S1=0;
S2缓冲区是否满(0表示不满,1表示满),初值S2=0;
3. 生产者---消费者问题(OS典型例子)
mutex互斥信号量,初值为1;full满缓冲区数,初值为0;empty空缓冲区数,初值为N;
4. 应用举例
[例1] 设系统中只有一台打印机,有三个用户的程序在执行过程中都要使用打印机输出计算结果。设每个用户程序对应一个进程。问:这三个进程间有什么样的制约关系?使用P、V操作写出这些进程使用打印机的算法。
[解]
由于打印机是一种临界资源,故三个进程只能互斥使用这台打印机。设三个进程分别为PA、PB和PC,互斥信号量mutex初值为1,执行过程如下:
[例2] 判断下面的同步问题的算法是否正确?若有错,请指出错误原因并予以改正。
1) 设A、B两进程共用一个缓冲区Q,A向Q写入信息,B则从Q读出信息,算法框图如图所示。
注:信号量S的初值为0
[解] 该算法不正确。因为A、B两个进程共用一个缓冲区Q,如果A先运行,且信息数量足够多,则缓冲区Q中的信息就会发生后面的冲掉前面的,造成信息丢失,B就不能从Q中读出完整的信息。改正如下:
A、B两进程同步使用缓冲区Q,应设定两个信号量:
empty 表示缓冲区Q为空,初值为1;full表示缓冲区Q已满,初值为0
算法框图如下:
2) 设A、B为两个并发进程,它们共享一临界资源。其运行临界区的算法框图如图所示。
[解] 该算法不正确。因为A、B两个进程并发执行,且共享一临界资源,故A、B应互斥地使用该临界资源,即在某一时刻只允许一个进程进入该临界资源,无时序关系。
改正算法:A、B二进程应互斥进入临界区,设定一信号量mutex,初值为1。
[例2] 设有一台计算机,有两个I/O通道,分别接一台卡片输入机和一台打印机。卡片机把一叠卡片逐一输入到缓冲区B1中,加工处理后再搬到缓冲区B2中,并在打印机上印出,问:
1) 系统要设几个进程来完成这个任务?各自的工作是什么?
2) 这些进程间有什么样的相互制约关系?
3) 用P、V操作写出这些进程的同步算法。
[解]
1) 系统可设三个进程来完成该任务:Read进程负责从卡片输入机上读入卡片信息,输入到缓冲区B1中;Get进程负责从缓冲区B1中取出信息,进行加工处理,之后将结果送到缓冲区B2中;Print进程负责从缓冲区B2中取出信息,并在打印机上打印输出。
2) 操作过程:
? Read进程受Get进程的影响,B1缓冲区中放满信息后Read进程要等待get进程将其中信息全部取走后才能读入信息;
? Get进程受Read进程和Print进程的约束:B1缓冲区中信息放满后,Get进程才可从中取走信息,且B2缓冲区信息被取空后Get进程才能将加工结果送入其中;
? Print进程受Get进程的约束,B2缓冲区中信息放满后Print进程方可取出信息进行打印输出。
3) 信号量的含义及初值:
? B1full——缓冲区B1满,初值为0
? B1empty——缓冲区B1空,初值为0
? B2full——缓冲区B2满,初值为0
? B2empty——缓冲区B2空,初值为0
4) 操作框图如下:
l 进程简单通信
分类
低级通信机构
高级通信机构
特点
传递信息量非常有限
通信的效率低
方便高效地交换大量信息
应用
互斥和同步机构
共享存储器
消息传递
管道文件
参考资料:http://www.ahtvu.ah.cn/jxc1/zhykch/5103/kc2.htm