《进程和线程》PPT课件.ppt
《《进程和线程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《进程和线程》PPT课件.ppt(119页珍藏版)》请在三一办公上搜索。
1、第2章 进程管理,本章内容提要,什么是进程进程的状态和组成进程间的同步与互斥进程通信对进程的管理线程和管程概念死锁概念,2.1 进程概念,2.1.1 程序顺序执行的特征 顺序程序设计,顺序程序活动特点 顺序性 封闭性 可再现性,程序并发执行及其特征,程序并发执行概念 非多道技术下作业执行过程,多道技术下作业执行过程,作业吞吐量是指在给定时间间隔内所完成作业的数量,程序并发执行的特征 失去封闭性 程序与计算不再一一对应 并发程序在执行期间相互制约,2.1.3 进程概念的引入和定义,引入进程概念 多道程序并发执行所引发的一系列新情况,必须引入新的概念来描述程序动态执行过程的性质。进程概念定义 定义
2、:程序在并发环境中的执行过程 进程最根本的属性是动态性和并发性“进程”是操作系统的最基本、最重要的概念之一。这是对正在运行程序的一个抽象。但还没有形成统一的定义。,生活中事例按菜谱做菜进程和程序的区别 动态性 并发性 非对应性 异步性,进程特征(1)动态性(2)并发性(3)调度性(4)异步性(5)结构性,2.2 进程状态描述及组织方式,2.2.1 进程的状态及其转换进程的状态 三种基本状态 运行状态(Running)就绪状态(Ready)阻塞状态(Blocked),进程的5种状态及其转换,进程状态的转换(1)就绪运行(2)运行阻塞(3)阻塞就绪(4)运行就绪,2.2.2 进程的组成,1进程映像
3、 进程映像通常就由程序、数据集合、栈和PCB等4部分组成,进程映像模型,进程描述,2进程控制块的组成进程控制块(PCB)也称进程描述块(Process Descriptor),它是进程组成中最关键的部分,其中含有进程的描述信息和控制信息,是进程动态特性的集中反映,是系统对进程施行识别和控制的依据。进程控制块一般应包括如下内容:进程名 特征信息 进程状态信息 调度优先权 通信信息 现场保护区 资源需求、分配和控制方面的信息 进程实体信息 族系关系 其它信息,3进程控制块的作用每个进程有惟一的进程控制块操作系统根据PCB对进程实施控制和管理进程的动态、并发等特征是利用PCB表现出来的PCB是进程存
4、在的唯一标识,2.2.3 进程组织方式,1线性方式,PCB线性队列示意图,进程队列,2链接方式,PCB链接队列示意图,PCB索引结构示意图,3索引方式,进程队列,2.3 进程管理和有关命令,2.3.1 进程图和进程管理进程图(Process Graph)是描述进程族系关系的有向树,进程创建的层次关系,进程创建 引发创建进程的事件:调度新作业 用户登录 操作系统提供特定服务 派生新进程创建新进程时要执行创建进程的系统调用(如UNIX/Linux系统中的fork)其主要操作过程有如下四步:(1)申请一个空闲的PCB(2)为新进程分配资源(3)将新进程的PCB初始化(4)将新进程加到就绪队列中,#i
5、nclude#include#include int main(int argc,char*argv)int pid;pid=fork();/*fork another process*/if(pid 0)/*error occurred*/fprintf(stderr,Fork Failed);exit(-1);else if(pid=0)/*child process*/execlp(/bin/ls,ls,NULL);else/*parent process*/wait(NULL);/*parent will wait for the child to complete*/printf(C
6、hild Complete);exit(0);,进程终止 导致进程终止的三种情况:正常终止 异常终止 外部干扰 终止进程的主要操作过程如下:找到指定进程的PCB,终止该进程的运行回收该进程所占用的全部资源终止其所有子孙进程,回收它们所占用的全部资源。将被终止进程的PCB从原来队列中摘走,进程阻塞进程阻塞的过程如下:立即停止当前进程的执行现行进程的CPU现场保存现行状态由“运行”改为“阻塞”转到进程调度程序,进程唤醒唤醒原语执行过程如下:把阻塞进程从相应的阻塞队列中摘下将现行状态改为就绪状态,然后把该进程插入就绪队列中如果被唤醒的进程比当前运行进程的优先级更高,则设置重新调度标志,进程映像的更换
7、 改变进程映像的工作很复杂,其主要过程是:释放子进程原来的程序和数据所占用的内存空间;从磁盘上找出子进程所要执行的程序和数据(通常以可执行文件的形式存放);分配内存空间,装入新的程序和数据;为子进程建立初始的运行环境主要是对各个寄存器初始化,返回到用户态,运行该进程的程序。,2.3.2 Linux进程管理,Linux进程状态,Linux进程状态的变化,进程的模式和类型,用户进程的两种运行模式,进程划分为两大类:一类是系统进程,只运行在内核模式,执行操作系统代码;另一类是用户进程。,Linux进程结构 task_struct结构 Linux系统中的每个进程都有一个名为task_struct的数据
8、结构,它相当于“进程控制块”。task_struct结构包含下列信息:进程状态 调度信息 标识符 内部进程通信 链接信息 时间和计时器 文件系统 虚拟内存 处理器信息 进程系统堆栈,2.3.3 有关进程操作的命令,1ps命令 查看进程状态 ps命令的一般格式是:ps 选项$ps PID TTY TIME CMD1788 pts/1 00:00:00 bashpts/1 00:00:00 ps2 kill命令 终止一个进程的运行 kill命令的一般格式是:kill-s 信号|-p-a 进程号kill-l 信号$kill 1651,3sleep命令 使进程暂停执行一段时间。一般使用格式是:slee
9、p 时间值$sleep 100;who|grep mengqc,2.3.4 有关进程管理的系统调用,系统调用的使用方式 在UNIX/Linux系统中,系统调用和库函数都是以C函数的形式提供给用户的,它有类型、名称、参数,并且要标明相应的文件包含。open系统调用可以打开一个指定文件,其函数原型说明如下:#include#include#include int open(const char*path,int oflags);例如:int fd;fd=open(/home/mengqc/myfile1,O_RDWR);,有关系统调用的格式和功能 常用的有关进程管理的系统调用有:fork,exec
10、,wait,exit,getpid,sleep,nice等应用示例/*proc1.c演示有关进程操作*/#include#include#include#include int main(int argc,char*argv)pid_t pid,old_ppid,new_ppid;pid_t child,parent;parent=getpid();/*获得本进程的PID*/if(child=fork()0)fprintf(stderr,%s:fork of child failed:%sn,argv0,strerror(errno);exit(1);else if(child=0)/*此时是
11、子进程被调度运行*/old_ppid=getppid();sleep(2);new_ppid=getppid();else sleep(1);exit(0);/*父进程退出*/*下面仅子进程运行*/printf(Original parent:%dn,parent);printf(Child:%dn,getpid();printf(Childs old ppid:%dn,old_ppid);printf(Childs new ppid:%dn,new_ppid);exit(0);程序运行的结果如下:$./proc1Original parent:2009Child:2010Childs old
12、 ppid:2009Childs new ppid:1,2.4 线程概念,2.4.1 什么是线程线程概念 现代操作系统中,进程只作为资源拥有者,而调度和运行的属性赋予新的实体线程。线程(Thread)是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。引入线程概念的理由主要有:使并行实体获得共享同一地址空间和所有可用数据的能力。易于切换,代价低。可以改善系统的性能。,线程的组成每个线程有一个thread结构,即线程控制块,用于保存自己私有的信息,主要由以下4个基本部分组成:一个唯一的线程标识符 一组寄存器 两个栈指针 一个私有存储区,thread结构示意图,线程的组成,线程必须在某个进程
13、内执行一个进程可以包含一个线程或多个线程,单线程和多线程的进程模型,线程的状态运行状态就绪状态 阻塞状态终止状态,线程和进程的关系 一个进程可以有多个线程,但至少要有一个线程;而一个线程只能在一个进程的地址空间内活动。资源分配给进程,同一进程的所有线程共享该进程的所有资源。处理机分配给线程,即真正在处理机上运行的是线程。线程在执行过程中需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。,2.4.2 线程的实现方式,用户级线程 在用户空间实现 优点:切换速度快;调度算法可专用;可运行在任何操作系统上 缺点:阻塞问题;多处理器利用问题,在用户空间和核心空间实现线程,核心级线程 优点:真正
14、实现并行操作 克服阻塞问题 本身也可以是多线程的 缺点:控制转移开销大 调度算法由核心确定,应用进程无法影响线程的切换组合方式,2.5 进程间的同步与互斥,进程间的相互关系主要分为如下三种形式:互斥竞争同一资源而发生相互制约 同步协同完成一项任务 通信交换信息,进程间的关系,1同步 日常事例:接力跑 工业生产流水作业 SPOOLing系统 同步进程通过共享资源来协调活动,在执行时间的次序上有一定约束。虽然彼此不直接知道对方的名字,但知道对方的存在和作用。在协调动作的情况下,多个进程可以共同完成一项任务。,2互斥 日常事例 进程争用某些资源 在逻辑上这两个进程本来完全独立,毫无关系,只是由于竞争
15、同一个物理资源而相互制约。它们的运行不具有时间次序的特征,互斥示例 假定进程Pa负责为用户作业分配打印机,进程Pb负责释放打印机。系统中设立一个打印机分配表,由各个进程共用。Pa进程分配打印机的过程是:逐项检查分配标志,找出标志为0的打印机号码;把该打印机的分配标志置1;把用户名和设备名填入分配表中相应的位置。Pb进程释放打印机的过程是:逐项检查分配表的各项信息,找出标志为1且用户名和设备名与被释放的名字相同的打印机编号;该打印机的标志清0;清除该打印机的用户名和设备名。,打印机分配表(初始情况),打印机分配表(出错情况),可见,Pa和Pb对分配表的使用必须互斥执行,2.5.2 竞争条件和临界
16、区,竞争条件(Race Condition)两个或多个进程同时访问和操纵相同的数据时,最后的执行结果取决于进程运行的精确时序。临界资源(Critical Resource)一次仅允许一个进程使用的共享资源临界区(Critical Section),简称CS区 在每个进程中访问临界资源的那段程序,典型进程进入临界区的一般结构,临界区进入准则独占临界区前进速度不确定区内进程不受干扰 有期等待,进程A和进程B互斥使用临界区的过程,2.5.3 进程同步机制,实现互斥方式 利用硬件方法解决进程互斥问题 禁止中断 进入临界区之后立即关闭所有的中断 专用机器指令 TSL(Test and Set Lock,
17、即测试并上锁)的指令:TSL RX,LOCK 汇编代码示例 enter_region:TSL REGISTER,LOCK CMP REGISTER,#0 JNE enter_region RET leave_region:MOVE LOCK,#0 RET,原语操作原语(primitive)是机器指令的延伸,往往是为完成某些特定的功能而编制的一段系统程序。原语操作也称做“原子操作”(atomic action),即一个操作中的所有动作要么全做,要么全不做。执行原语操作时,要屏蔽中断,以保证其操作的不可分割性。,利用软件方法解决进程互斥问题 可为每类临界区设置一把锁,该锁有打开和关闭两种状态。进程
18、执行临界区程序的操作按下列步骤进行:关锁 执行临界区程序 开锁 软件锁实现 关锁原语lock(W):while(W=1);W=1;开锁原语unlock(W):w=0;,进程A lock(W);打印信息S;CS区 unlock(W);,进程B lock(W);打印信息S;CS区 unlock(W);,用锁实现进程互斥设系统中有一台打印机,有两个进程A和B都要使用它,以变量W表示锁,预先把它的值置为0。,2信号量及P、V操作原语结构型信号量又称计数信号量,简称信号量 一般是由两个成员组成的数据结构。其中一个成员是整型变量,表示该信号量的值;另一个是指向PCB的指针。typedef struct i
19、nt value;struct PCB*list;semaphore;,结构型信号量,信号量的值与相应资源的使用情况有关信号量的一般结构及PCB队列,对信号量的操作有如下严格限制:信号量可以赋初值,且初值为非负数。在使用过程中,信号量的值可以修改,但只能由P和V操作来访问,不允许通过其他方式来查看或操纵信号量。设信号量为S,对S的P操作记为P(S),对S的V操作记为V(S)。,结构型信号量,P(S):顺序执行下述两个动作:信号量的值减1,即S=S-1;如果S0,则该进程继续执行;如果S0,则把该进程的状态置为阻塞态,把相应的PCB连入该信号量队列的末尾,并放弃处理机,进行等待(直至其它进程在S
20、上执行V操作,把它释放出来为止)。V(S):顺序执行下述两个动作:S值加1,即S=S+1;如果S0,则该进程继续运行;如果S0,则释放信号量队列上的第一个PCB(即信号量指针项所指向的PCB)所对应的进程(把阻塞态改为就绪态),执行V操作的进程继续运行。、操作都应作为一个整体实施,不允许分割或相互穿插执行。,2.5.4 信号量的一般应用,1.用信号量实现进程互斥 打印机分配表的互斥使用 Pa:Pb:P(mutex)P(mutex)分配打印机 释放打印机(读写分配表)(读写分配表)V(mutex)V(mutex),用信号量实现进程互斥,利用信号量实现互斥的一般模型是:进程P1 进程P2 进程Pn
21、 P(mutex);P(mutex);P(mutex);临界区 临界区 临界区 V(mutex);V(mutex);V(mutex);,用信号量实现进程互斥,注意点:在每个程序中用于实现互斥的P(mutex)和V(mutex)必须成对出现,即先做P,进入临界区;后做V,退出临界区。互斥信号量mutex的初值一般为1。,2用信号量实现进程简单同步 对缓冲区的同步使用问题,简单供者和用者对缓冲区的使用关系,供者和用者间要交换两个消息:缓冲区空 缓冲区满 设置两个信号量 S1表示缓冲区是否空(0表示不空,1表示空)。S2表示缓冲区是否满(0表示不满,1表示满)。规定S1和S2的初值分别为1和0 供者
22、进程 用者进程 L1:P(S1)L2:启动读卡机 P(S2);从缓冲区取出信息 收到输入结束中断 V(S1);V(S2);加工并且存盘 goto L1;goto L2;,用P和V操作实现同步时应注意如下三点:分析进程间的制约关系,确定信号量种类。信号量的初值与相应资源的数量有关,也与P,V操作在程序代码中出现的位置有关。同一信号量的P,V操作要“成对”出现,但是,它们分别出现在不同的进程代码中。,3.生产者消费者问题生产者:能产生并释放资源的进程消费者:单纯使用(消耗)资源的进程问题表述 一组生产者进程和一组消费者进程(设每组有多个进程)通过缓冲区发生联系。生产者进程将生产的产品(数据、消息等
23、统称为产品)送入缓冲区,消费者进程从中取出产品。假定缓冲区共有N个,不妨把它们设想成一个环形缓冲池。,生产者-消费者问题环形缓冲池,它们应满足如下同步条件:任一时刻所有生产者存放产品的单元数不能超过缓冲区的总容量(N)。所有消费者取出产品的总量不能超过所有生产者当前生产产品的总量。,生产者-消费者问题,设缓冲区的编号为0N-1,in和out分别是生产者进程和消费者进程使用的指针,指向下面可用的缓冲区,初值都是0。设置三个信号量:full:表示放有产品的缓冲区数,其初值为0。empty:表示可供使用的缓冲区数,其初值为N。mutex:互斥信号量,初值为1,表示各进程互斥进入临界区,保证任何时候只
24、有一个进程使用缓冲区。,生产者-消费者问题,生产者进程Producer:消费者进程Consumer:while(TRUE)while(TRUE)P(empty);P(full);P(mutex);P(mutex);产品送往buffer(in);从buffer(out)中取出产品;in=(in+1)mod N;out=(out+1)mod N;/*以N为模*/*以N为模*/V(mutex);V(mutex);V(full);V(empty);,应注意:在每个程序中必须先做P(mutex),后做V(mutex),二者要成对出现。对同步信号量full和empty的P,V操作同样必须成对出现,但它们分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程和线程 进程 线程 PPT 课件

链接地址:https://www.31ppt.com/p-5611271.html