资源预览内容
第1页 / 共75页
第2页 / 共75页
第3页 / 共75页
第4页 / 共75页
第5页 / 共75页
第6页 / 共75页
第7页 / 共75页
第8页 / 共75页
第9页 / 共75页
第10页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第二章 进程、线程与作业,2.1 多道程序设计 Multi-programming 2.2 进程的引入 Process 2.3 线程与轻进程 Thread and light-weighted process 2.4 作业 Job,Active objects,2.1 多道程序设计,2.1.1 单道程序设计的缺点 2.1.2 多道程序设计的提出 2.1.3 多道程序设计的问题,Multi-programming,多道程序设计目标,提高系统效率(吞吐量),2.1.1 单道程序设计的缺点,处理机利用率低 设备利用率低 内存利用率低,运行程序A,CPU,设备1,运行程序A,t,t1,t2,t5,t6,设备2,2.1.2 多道程序设计的提出,CPU,设备1,程序A,t,t1,t2,t5,t6,设备2,程序B,提高处理机、设备、内存等各种资源的利用率,从而提高系统效率。,程序A,t3,t4,2.1.2 多道程序设计的提出(Cont.),增加同时运行程序的道数可以提高资源利用率,从而提高系统效率,但道数应与系统资源数量相当。 道数过少,系统资源利用率低。 道数过多,系统开销(system overhead)增大,程序响应速度下降。,2.1.3 多道程序设计的问题,处理机资源的管理 程序个数处理机个数(如何分配?) 存储资源的管理 地址空间的相对独立性、共享性 内存、外存(swap space)的分配与去配 设备资源管理 分配策略 IO控制,2.2 进程的引入,2.2.1 进程的概念 2.2.2 进程状态及状态转换 2.2.3 进程控制块 2.2.4 进程的组成与上下文 2.2.5 进程的队列,2.2.6 进程的类型与特征 2.2.7 进程间相互联系与相互作用 2.2.8 进程的创建与撤销 2.2.9 进程与程序间的联系与差别,多道系统中的程序: 推进,暂停,推进,暂停,. 暂停:保存现场(PSW+PC,寄存器) 推进:恢复现场(寄存器,PSW+PC) 暂停原因:(1) 自身原因:等待资源,启动IO (2) 剥夺CPU给其它程序运行机会,2.2 进程的引入(Cont.),2.2.1 进程的概念,定义: 可参与并发执行的程序称为进程。 进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。 定义强调两个方面: 动态:执行中的程序; 并发:可与其他进程同时执行。,并发 vs. 并行,并发:concurrent 宏观同时,“交替执行”,不要求多个CPU 并行:parallel 微观同时,要求多个CPU “并行算法”,2.2.2 进程状态及状态转换,2.2.2.1 进程状态(基本状态) 运行态(RUN): 占有CPU正在向前推进 就绪态(READY): 可以运行,但未得到CPU 等待态(WAIT): 等待某一事件发生 2.2.2.2 状态转换 就绪运行:获得处理机 运行就绪:剥夺处理机 运行等待:申请资源未得到,启动IO 等待就绪:得到资源,IO中断,就绪,等待,运行,获得处理机,剥夺处理机,等待事件,事件发生,2.2.2.2 进程状态转换图,Keep in Mind,进程状态转换由操作系统完成,对用户是透明的; 进程在其生存期内经过多次状态转换,体现了进程的动态性和并发性。,2.2.3 进程控制块(PCB),标志进程存在的数据结构,其中保存系统管理进程所需的全部信息 PCB内容:(不同系统不尽相同) 进程标识(pid) 家族联系 进程状态 地址信息 现场信息 打开文件 调度参数 消息指针 所属用户(uid) 队列指针,Process Control Block,2.2.4 进程的组成与上下文,进程的组成 进程控制块(process control block) 建立进程建立PCB 撤销PCB撤销进程 程序 代码(code) 数据(data) 堆栈(stack+heap) 栈:保存返回点、参数、返回值、局部变量 堆:动态变量,2.2.4 进程的组成与上下文,进程的表记,PCB,程序,PCB,代码,数据 + 堆栈,表记1,表记2,系统空间,用户空间,定义:进程的程序(代码和数据)称为进程影像(Process Image)。,2.2.4 进程的组成与上下文,进程上下文(process context) 进程的物理实体与支持进程运行的物理环境统称为进程上下文 PCB+程序 系统环境:地址空间,系统栈,打开文件表, 上下文切换(context switch) 由一个进程的上下文转到另外一个进程的上下文 系统开销(system overhead) 运行操作系统程序完成系统管理工作所花费的时间和空间,2.2.5 进程的队列,1. 就绪队列:系统一个或若干个(根据调度算法确定) 2. 等待队列:每个等待事件一个 3. 运行指示字:每个处理机一个,PCB构成的队列:(不一定FIFO,单向或双向),进程队列模型,等待队列1,等待队列2,等待队列n,CPU,创建,完成,时间片用完,等待事件1,等待事件2,等待事件n,事件1发生,事件2发生,事件n发生,2.2.6 进程的类型与特征,进程类型 系统进程 运行操作系统程序,完成系统管理(服务)功能. 例如:UNIX #0 - sched, #1 - init 用户进程 运行用户(应用)程序,为用户服务。 例如:UNIX vi, shell, cc,2.2.6 进程的类型与特征(Cont.),进程的特征 并发性:可以与其它进程一道向前推进; 动态性:动态产生、消亡,生存期内状态动态变化; 独立性:一个进程是可以调度的基本单位; 交往性:同时运行的进程可能发生相互作用; 异步性:进程以各自独立,不可预知的速度向前推进; 结构性:每个进程有一个PCB。,2.2.7 进程间相互联系与相互作用,相互联系 相关进程 同一家族的进程 可以共享文件,需要相互通讯,协调推进速度 父进程可以监视子进程,子进程完成父进程交给的任务。 无关进程 没有逻辑关系、同时执行的进程。 有资源竞争关系,互斥、死锁、饿死。,2.2.7 进程间相互联系与相互作用,相互作用,1. 直接相互作用:发生在相关进程之间,2. 间接相互作用:发生在任何进程之间,R,P2,P1,sync,send,receive,P1:,P2:,hold,wait,2.2.8 进程的创建与撤销,进程的创建 建立PCB,分配内存,加载程序,入就绪链 UNIX:pid=fork(),exec(prog,args) 进程的撤销 去配资源,撤销PCB,通知父进程 UNIX:exit() vs. kill 除初始进程外,其它进程由(父)进程创建,并形成进程家族。,考虑生灭的进程状态转换图,初创,终止,创建,结束,2.2.9 进程与程序的联系与差别,进程与程序的联系 进程包括一个程序 进程存在的目的就是执行这个程序 进程与程序的差别 程序静态,进程动态 程序可长期保存,进程有生存期 一个程序可对应多个进程,一个进程只能执行一个程序,2.2.10 UNIX进程组成(映像),Proc 结构,Text结构,系统空间,用户空间,User结构,系统栈,进程堆栈,进程数据,进程代码,常驻内存部分,内外存交换部分,系统空间,2.2.10 UNIX进程组成(映像),Proc结构 所保存的信息无论当进程在内存时还是在外存时都是需要的 . User结构 所保存的信息仅当进程在内存时才是需要的, 因而可以与进程的程序一起被移到外存.,struct proc char p_stat; char p_flag; char p_pri; char p_sig; /signal received char p_uid; /user id char p_time; /resident time for scheduling char p_cpu; /cpu usage char p_nice; /nice for scheduling char p_ttyp; /controlling tty int p_pid; /unique process id int p_ppid; /parent process id int p_addr; /address of swappable image int p_size; /size of swappable image (*64bytes) int p_wchan /event process is waiting int *p_textp; /pointer to text structure ,struct user int u_rsav2 int u_fsav25 char u_uid; / effective user id char u_gid; / effective group id char u_ruid; / real user id char u_rgid; / real group id int u_procp; / pointer to proc structure int *u_base; / base address for IO int *u_count; / bytes remaining for IO int *u_offset2; / offset in file for IO int *u_cdir; / pointer to inode of current dir int *u_pdir; / inode of parent directory int u_uisa16; / prototype segmentation address,int u_uisd16; / prototype segmentation descript int u_ofileNOFILE; / pointers to file struct int u_arg5; / arguments to system call int u_tsize; / text size (*64) int u_dsize; / data size (*64) int u_sszie; / stack size (*64) int u_utime; / this process user time int u_stime; / this process system time int u_cutime2; / child process user time int u_cstime2; / child process system time ,struct text int x_daddr; /disk address of segment int x_caddr; /core address if loaded int x_size; /*64 int *x_iptr; /inode of prototype char x_count; /reference count char x_ccount; /number of loaded references ,进程状态及其转换,换出,结束跟踪,结束跟踪,换入/出,换出,唤醒,fork,处理机分派,跟踪,等待,终止,置PSW,SRUN LOAD user,SRUN LO
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号