
二章节进程线程与作业.ppt
43页软件教研室软件教研室第二章 进程、线程与作业•多道程序设计–Multi-programming• 进程的引入–Process • 线程与轻进程–Thread and light-weighted process•作业–Job软件教研室软件教研室2.1 多道程序设计•单道程序设计的缺点•多道程序设计的提出•多道程序设计的问题软件教研室软件教研室2.1.1 单道程序设计•处理机利用率低•设备利用率低•内存利用率低t运行程序ACPU设备1运行程序At1t2t5t6设备2软件教研室软件教研室2.1.2 多道程序设计的提出t•设计目标:提高系统效率(吞吐量)CPU设备1程序At1t2t5t6设备2程序B程序At3t4软件教研室软件教研室2.1.3 多道程序设计的问题•处理机资源的管理–程序个数处理机个数(如何分配?)•存储资源的管理–地址空间的相对独立性、共享性–内存、外存的分配与去配•设备资源管理–分配策略–IO控制软件教研室软件教研室2.2 进程的引入•进程的概念•进程状态及状态转换•进程控制块•进程的组成与上下文•进程的队列•进程的类型与特征•进程间相互联系与相互作用•进程的创建与撤销•进程与程序间的联系与差别软件教研室软件教研室2.2.1 进程的概念•定义:–进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。
•定义强调两个方面:–动态:执行中的程序;–并发:可与其他进程同时执行软件教研室软件教研室2.2.2 进程状态及转换•进程状态(基本状态)–运行态(RUN): 占有CPU正在向前推进–就绪态(READY): 可以运行,但未得到CPU–等待态(WAIT): 等待某一事件发生软件教研室软件教研室就绪就绪等待等待运行运行获得处理机剥夺处理机等待事件事件发生进程状态转换图软件教研室软件教研室进程状态转换图2初创初创终止终止创建结束就绪就绪等待等待运行运行获得处理机剥夺处理机等待事件事件发生软件教研室软件教研室2.2.3 进程控制块(PCB)•标志进程存在的数据结构,其中保存系统管理进程所需的全部信息•PCB 内容:–进程标识(pid) 家族联系–进程状态 地址信息–现场信息 打开文件–调度参数 消息指针–所属用户(uid) 队列指针软件教研室软件教研室2.2.4 进程的组成与上下文•进程的组成–进程控制块(process control block)•建立进程建立PCB•撤销PCB撤销进程–程序•代码(code)•数据(data)•堆栈(stack+heap)软件教研室软件教研室2.2.4 进程的组成与上下文•进程的表记PCB程序程序PCB代码代码数据数据+堆栈堆栈表记1表记2系统空间用户空间软件教研室软件教研室2.2.4 进程的组成与上下文l进程上下文:进程的物理实体与支持进程运行的物理环境,包括: PCB+程序 系统环境:地址空间,系统栈,打开文件表,…l上下文切换:由一个进程的上下文转到另一个进程的上下文l系统开销:运行操作系统程序完成系统管理工作所花费的时间和空间软件教研室软件教研室2.2.5 进程的队列PCBPCBPCB……head1. 就绪队列:系统一个或若干个(根据调度算法确定)2. 等待队列:每个等待事件一个3. 运行队列:每个处理机一个PCB构成的队列:(不一定FIFO)软件教研室软件教研室2.2.6 进程的类型与特征•进程类型–系统进程运行操作系统程序,完成系统管理(服务)功能.–用户进程•运行用户(应用)程序,为用户服务。
软件教研室软件教研室2.2.6 进程的类型与特征(Cont.)•进程的特征–并发性:可以与其它进程一道向前推进;–动态性:动态产生、消亡,生存期内状态动态变化;–独立性:一个进程是可以调度的基本单位;–交往性:同时运行的进程可能发生相互作用;–异步性:进程以各自独立,不可预知的速度向前推进;–结构性:每个进程有一个PCB软件教研室软件教研室2.2.7 进程间相互联系与相互作用•相互联系–相关进程•同一家族的进程•可以共享文件,需要相互通讯,协调推进速度…•父进程可以监视子进程,子进程完成父进程交给的任务–无关进程•没有逻辑关系、同时执行的进程•有资源竞争关系,互斥、死锁、饿死软件教研室软件教研室2.2.7 进程间相互联系与作用•相互作用1. 直接相互作用:发生在相关进程之间直接相互作用:发生在相关进程之间2. 间接相互作用:发生在任何进程之间间接相互作用:发生在任何进程之间syncsendreceiveP1:P2:RP2P1holdwait软件教研室软件教研室2.2.8 进程的创建与撤销•进程的创建–建立PCB,分配内存,加载程序,入就绪链–UNIX:pid=fork(),exec(prog,args) •进程的撤销–去配资源,撤销PCB,通知父进程–UNIX:exit() vs. kill•除初始进程外,其它进程由(父)进程创建,并形成进程家族。
软件教研室软件教研室2.2.9 进程与程序的联系与差别•进程与程序的联系–进程包括一个程序–进程存在的目的就是执行这个程序•进程与程序的差别–程序静态,进程动态–程序可长期保存,进程有生存期–一个程序可对应多个进程,一个进程只能执行一个程序软件教研室软件教研室2.3 线程与轻进程•2.3.1 线程的引入•2.3.2 线程的概念•2.3.3 线程的结构•2.3.4 线程的实现•2.3.5 线程的应用•2.3.6 Java线程软件教研室软件教研室2.3.1 线程的引入•进程切换–上下文涉及内容多,开销大,“笨重”–相关进程之间耦合关系差•解决方案–Multi-threading–同一进程中包含多个线程–上下文只涉及寄存器和用户栈,切换速度快–相关线程之间通讯方便、快捷软件教研室软件教研室2.3.2 线程的概念•进程中一个相对独立的执行流•进程 /线程–进程是资源分配单位–线程是执行单位•多线程优点–切换速度快(地址空间不变)(light weighted)–系统开销小–通讯容易(共享数据空间)软件教研室软件教研室线程控制块•TCB(Thread control block)–标志线程存在的数据结构, 其中包含对线程管理需要的全部信息.•内容–线程标识、线程状态–调度参数、现场(通用寄存器,PC,SP)•存放位置–用户级线程:目态空间(运行系统)–核心级线程:系统空间软件教研室软件教研室2.3.3 线程结构寄存器静态数据程序代码 栈寄存器进程2动 态 堆内存多进程结构(用户视图)静态数据程序代码 栈进程1动 态 堆内存寄存器软件教研室软件教研室2.3.3 线程结构静态数据程序代码 栈栈寄存器寄存器线程1:线程2:进程动 态 堆内存多线程结构(用户视图)软件教研室软件教研室2.3.4 线程的实现•2.3.1 用户级别线程–User-level thread•2.3.2 核心级别线程–Kernel-level thread•2.3.3 混合线程–Hybrid approach 软件教研室软件教研室2.3.4.1 用户级别线程•实现方法:–基于library函数,系统不可见–线程创建、撤销、状态转换在目态完成–TCB在用户空间,每个进程一个系统栈•优点:–不依赖于操作系统,调度灵活–切换速度快•缺点:同一进程中多个线程不能真正并行,一个线程进入系统受阻,进程中其它线程不能执行软件教研室软件教研室2.3.4.1 用户级别线程运行系统TCB进程线程核心栈进程表用户空间系统空间软件教研室软件教研室2.3.4.2 核心级别线程•实现方法:–基于系统调用–创建、撤销、状态转换由操作系统完成•优点:–同一进程内多线程可以并行执行–一线程进入核心等待,其它线程仍可执行•缺点:–系统开销大,同一进程内多线程切换速度慢–调度算法不能灵活控制软件教研室软件教研室2.3.4.2 核心级别线程进程线程核心栈进程表用户空间系统空间TCB软件教研室软件教研室2.3.4.3 混合线程•Solaris例子•User level thread:–由由Lib程序支持(创建.调度)程序支持(创建.调度)•Light weighted process(LWP):–由由Lib程序支持程序支持–每个每个task至少一个至少一个LWP–用戶级别线程与用戶级别线程与LWP可以多对多可以多对多–只有与只有与LWP相联系的用户线程向前推进相联系的用户线程向前推进•Kernel level thread:–由由kernel 支持支持–每个核心线程与唯一一个每个核心线程与唯一一个LWP对应对应–核心线程可与核心线程可与CPU多对多,可对一多对多,可对一软件教研室软件教研室2.3.4.3 混合线程(Solaris)CPUtask1task2task3kernelUser level threadLightweight processKernel thread软件教研室软件教研室2.3.5 线程的应用•内在的多控制流–生产-消费问题•多线程优于多进程–快100倍!•提高处理机与设备的并行性•多处理机环境–提高处理机利用率,加快进程推进速度软件教研室软件教研室2.3.5 线程的应用•例子:–Word字处理(不同代码)•交互编辑(T1)•词法检查(T2)•定时保存(T3)–HTTP server(相同代码)•对每个http请求,pop up一个线程软件教研室软件教研室2.4 作业(Job)•作业概念–用户要求计算机系统为其完成的计算任务集合。
•作业步(job step)–作业处理过程中一个相对独立的步骤–一般一个作业步可由一个进程完成–某些作业步之间可以并行•作业分类–批处理作业–交互式作业软件教研室软件教研室2.4.1 批处理作业•作业控制语言(JCL)–描述批处理作业控制意图的语言•作业说明书(JCL语句的序列)–一般以特殊符号起始•$JOB J1•$FORTN …•$LINK …•$ENDJOB•作业控制程序:解释并处理作业说明书的程序•作业控制进程:执行作业控制程序的进程软件教研室软件教研室作业控制进程读入读入作业内容作业内容释放输入井空间释放输入井空间顺取顺取作业控制语句作业控制语句是是结束语句结束语句 执行该作业步执行该作业步(可能创建子进程可能创建子进程)申请输出井空间申请输出井空间输出作业结果输出作业结果进程自我终止进程自我终止FT软件教研室软件教研室2.4.2 交互式作业 •帐户管理:/etc/passwd文件•创建与撤销–创建:•用户提供(用户名,口令,资金)•系统操作员建立(根目录/usr/zhang, 填写passwd文件)–撤销:•删除该用户目录及所有文件•在passwd文件中清除对应entry软件教研室软件教研室2.4.2 交互式作业•注册与注销–注册:•logon: 用户名•password: ********–注销:•显示注销:–logout•隐式注销:–(如5分钟无输入命令)软件教研室软件教研室命令解释程序提示符$读入终端命令分析Logout内部命令处理建立子进程后台命令等子进程结束输出子进程号记帐TFTFFT软件教研室软件教研室小结:作业、进程、线程•作业与进程–作业进入内存后变为进程–一个作业通常与多个进程相对应•进程与线程–不支持多线程的系统,可视为单线程进程–一个进程一般包含多个线程,至少包含一个线程。
