chap5 UNIX进程调度和进程存储 unix课件_第1页
chap5 UNIX进程调度和进程存储 unix课件_第2页
chap5 UNIX进程调度和进程存储 unix课件_第3页
chap5 UNIX进程调度和进程存储 unix课件_第4页
chap5 UNIX进程调度和进程存储 unix课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五讲第五讲 unixunix进程调用进程调用和进程存储和进程存储 概述概述 unix unix系统是分时多任务、多道程序环境系统。它采用时间片轮转系统是分时多任务、多道程序环境系统。它采用时间片轮转转方式为系统中的多个用户的多道程序提供服务。为了跟踪计算机并转方式为系统中的多个用户的多道程序提供服务。为了跟踪计算机并行活动的状态及并发程序对资源的共享使用,提出了进程的概念。行活动的状态及并发程序对资源的共享使用,提出了进程的概念。提纲提纲1 1 进程基本概念进程基本概念2 unix2 unix系统中的进程系统中的进程3 unix3 unix系统进程调度和管理系统进程调度和管理4 4 进程存储

2、管理与存储技术进程存储管理与存储技术5 unix5 unix进程的存储管理进程的存储管理6 unix6 unix进程控制进程控制1 1 进程的基本概念进程的基本概念1进程与程序进程与程序(a)程序:程序代码,静态)程序:程序代码,静态 进程:可以看作某种特定任务的程序在一个数据集合上的一进程:可以看作某种特定任务的程序在一个数据集合上的一次具体的活动,动态。次具体的活动,动态。(b)进程与程序相比具有动态性、独立性、并发性等特点。)进程与程序相比具有动态性、独立性、并发性等特点。1 1 进程的基本概念进程的基本概念2进程的描述进程的描述 进程的结构进程描述信息进程的结构进程描述信息 进程实体进

3、程实体pcb 程序段数据结构集程序段数据结构集pcb:包括进程的描述信息、控制信息及进程使用资源信息、包括进程的描述信息、控制信息及进程使用资源信息、处理器现场保护结构等,其中内容是进程动态特征的集中反处理器现场保护结构等,其中内容是进程动态特征的集中反映。映。os通过通过pcb感知一个进程的存在。感知一个进程的存在。程序段:程序段:进程需要完成功能的程序代码。进程需要完成功能的程序代码。数据结构集数据结构集:进程的程序执行时要完成功能的程序代码。:进程的程序执行时要完成功能的程序代码。1 1 进程的基本概念进程的基本概念3进程的状态进程的状态 程序程序 静态静态 进程进程 动态,具有生命周期

4、动态,具有生命周期 非运行 运行 调度 进入 退出 暂停 两状态进程模式:两状态进程模式:两状态进程模式中包含的进程状态转换过程:两状态进程模式中包含的进程状态转换过程:进程开始;调度运行;暂停运行;进程结束进程开始;调度运行;暂停运行;进程结束1 1 进程的基本概念进程的基本概念五状态进程模式:五状态进程模式: 创建创建阻塞阻塞就绪就绪运行运行退出退出事件等待超时调度事件发生提交新建释放五状态进程模式中包含的进程状态转换过程:五状态进程模式中包含的进程状态转换过程: 创建新进程;进程提交;调度运行;释放;超时;创建新进程;进程提交;调度运行;释放;超时;事件等待;事件发生事件等待;事件发生1

5、 1 进程的基本概念进程的基本概念4进程控制进程控制 主要实现进程状态的转换和并发进程的管理主要实现进程状态的转换和并发进程的管理 1)原语原语 不可分解,不间断,不可并发执行的程序段不可分解,不间断,不可并发执行的程序段2)临界区临界区 指共享某个资源时,不允许多个并发的程序交叉执行的一段代指共享某个资源时,不允许多个并发的程序交叉执行的一段代码。并发产生的原因:随机发生,码。并发产生的原因:随机发生, 程序需要互不干涉。程序需要互不干涉。 3)进程互斥进程互斥 4)信号量信号量 描述共享资源使用情况的数据结构描述共享资源使用情况的数据结构 5)进程同步进程同步 有两种方式:有两种方式:互斥

6、互斥: 我在,你不能在我在,你不能在 间接制约关系间接制约关系 同步同步: 你不来,我不能走你不来,我不能走 直接制约关系直接制约关系2 unix2 unix中的进程中的进程1 unix创建进程的过程创建进程的过程 引引 导导 程程 序序 核核 心心 程程 序序 创创 建建 : 0 号号 进进 程程 0 号号 进进 程程 创创 建建 1 号号 进进 程程 完完 成成 init 1 号号 进进 程程 创创建建 终终 端端 1 1 号号 进进 程程 创创建建 终终 端端 2 1 号号 进进 程程 创创建建 终终 端端 n . 子子 进进 程程 子子 进进 程程 . 子子 进进 程程 2 unix2

7、 unix中的进程中的进程2unix中进程的描述中进程的描述 运行中的每个进程都有一个独立的运行环境,这个环境是进程生存的基运行中的每个进程都有一个独立的运行环境,这个环境是进程生存的基础,即础,即进程上下文进程上下文 。 proc user 系系 统统 栈栈 用用 户户 栈栈 数数 据据 段段 正正 文文 段段 3 unix3 unix进程调度和管理进程调度和管理 1进程调度的方法进程调度的方法 动态优先级多级反馈循环调度法公式:动态优先级多级反馈循环调度法公式: 2计算公式计算公式p-prip-cpupuser(25)p-nicenzero(20) 优点:优点: 1)创建新进程,)创建新进

8、程,cpu0, p-pri值较小,优先级较大值较小,优先级较大 2)使用越多,)使用越多,p-cpu越大,越大,p-pri值较大,优先级较小值较大,优先级较小 3)使用越少,)使用越少,p-cpu越小,越小,p-pri值较小,优先级较大值较小,优先级较大 4 4 进程存储管理进程存储管理 存储管理的主要功能:存储管理的主要功能:(1)存储空间的分配,回收;)存储空间的分配,回收;(2)地址变换;)地址变换;(3)存储共享和保护;)存储共享和保护;(4)存储器扩充)存储器扩充(5)提高主存的利用率)提高主存的利用率计算机的存储结构图:计算机的存储结构图: 寄寄存存器器 高高速速缓缓存存 主主存存

9、 辅辅存存 cpu cpu内内 系系统统内内存存 硬硬盘盘,光光盘盘,磁磁带带 访访问问速速度度 慢慢 存存储储空空间间 大大 单单位位价价格格 低低 4.1 4.1 进程存储技术进程存储技术 程序以进程的方式存放于内存中,程序以进程的方式存放于内存中,cpu在内存中实现进程之在内存中实现进程之间的切换调度。采用一些策略和算法来分配存储空间,使进程在间的切换调度。采用一些策略和算法来分配存储空间,使进程在内存和磁盘之间来回切换。此过程为进程的存储管理过程。内存和磁盘之间来回切换。此过程为进程的存储管理过程。 1连续分配存储技术连续分配存储技术 操作系统为运行的进程分配一个连续的内存空间操作系统

10、为运行的进程分配一个连续的内存空间 (a) 单一连续分配存储方式:单一连续分配存储方式: 系系统统区区 用用户户区区 为为一一个个进进程程分分配配,适适用用了了单单用用户户单单任任务务的的系系统统管管理理,出出现现在在较较早早时时期期 4.1 4.1 进程存储技术进程存储技术 系系统统区区 用用户户区区 1 可可以以连连续续放放多多个个进进程程,实实现现进进程程的的并并发发,但但是是有有碎碎片片产产生生,可可以以利利用用内内存存紧紧缩缩技技术术 用用户户区区 2 . 1连续分配存储技术连续分配存储技术 操作系统为运行的进程分配一个连续的内存空间操作系统为运行的进程分配一个连续的内存空间 (b)

11、分区式连续存储方式:分区式连续存储方式: 4.1 4.1 进程存储技术进程存储技术 (1)覆盖)覆盖 目的:目的: 在较小的可用内存中运行较大的程序在较小的可用内存中运行较大的程序 原理:原理: 一个程序的几个代码段或数据段按照使用的先后顺序以一个程序的几个代码段或数据段按照使用的先后顺序以覆盖方式占用共享内存区域。覆盖方式占用共享内存区域。 原则:原则: 将程序中必要的数据放在常驻内存中。将程序中必要的数据放在常驻内存中。将不经常用的放在交换区。将不存在调用关系的模块可以采用覆将不经常用的放在交换区。将不存在调用关系的模块可以采用覆盖方式共享内存分区。盖方式共享内存分区。(2 2)交换:在多

12、个程序并发执行的时候,将暂时不执行的代码放)交换:在多个程序并发执行的时候,将暂时不执行的代码放入交换区,从而可以用更大的内存空间装入新的进程。入交换区,从而可以用更大的内存空间装入新的进程。 2覆盖和交换技术覆盖和交换技术4.1 4.1 进程存储技术进程存储技术 3页式存储管理页式存储管理 解决内存碎片,提高内存的利用率解决内存碎片,提高内存的利用率 1)基本思想:进程逻辑空间划分为若干页,内存划分为若干物理页。)基本思想:进程逻辑空间划分为若干页,内存划分为若干物理页。进程按照页的大小分配内存空间,可以连续或不连续分配。进程按照页的大小分配内存空间,可以连续或不连续分配。页号页号页面号页面

13、号05176212静态页式管理静态页式管理:进程在执行前将程序段和数据段一次性装入内存的各个:进程在执行前将程序段和数据段一次性装入内存的各个页面中。页面中。数据结构:数据结构: 进程页表:每个进程都有进程页表,逻辑页号对应物理页面号进程页表:每个进程都有进程页表,逻辑页号对应物理页面号 4.1 4.1 进程存储技术进程存储技术 请求表:系统有一个请求表,可以放到请求表:系统有一个请求表,可以放到pcb描述中描述中 进程号进程号请求数请求数页表地址页表地址页表长度页表长度状态状态120102220已分配已分配 用于地址转换用于地址转换 存储页面表:存储页面表: 系统有一张,用于描述内存各个页面

14、的分配情况系统有一张,用于描述内存各个页面的分配情况动态页式管理动态页式管理:只需要将执行部分调入(缺页中断则调入),动:只需要将执行部分调入(缺页中断则调入),动态管理程序各部分在内存中的调入调出。态管理程序各部分在内存中的调入调出。 4.1 4.1 进程存储技术进程存储技术 2)页式管理的地址变换)页式管理的地址变换 页页表表长长度度 页页表表地地址址 控控制制寄寄存存器器 8 有有效效地地址址 逻逻辑辑页页号号 物物理理页页号号 0 2 1 3 2 8 1c4 2 1c4(页页内内地地址址) 物物理理地地址址 4.1 4.1 进程存储技术进程存储技术 4段式存储管理段式存储管理 1)将内

15、存分为不同的分区,视为二维空间,进程按照逻辑内容)将内存分为不同的分区,视为二维空间,进程按照逻辑内容分段。分段。 2)特点:以段为单位分配内存分区,段可以不连续。每个段可)特点:以段为单位分配内存分区,段可以不连续。每个段可以占用一个内存分区。内存管理采用动态分区方法,采用缺段中以占用一个内存分区。内存管理采用动态分区方法,采用缺段中断处理。断处理。 3)数据结构:进程段表)数据结构:进程段表4.2 4.2 虚拟存储技术虚拟存储技术 1局部性原理局部性原理 程序执行过程中,在较短的时期内,所执行的指令地址以及操程序执行过程中,在较短的时期内,所执行的指令地址以及操作数地址分别局限在一个区域内

16、。作数地址分别局限在一个区域内。 时间局限性:时间局限性: 当前指令执行与下条指令执行,数据的当前访问当前指令执行与下条指令执行,数据的当前访问和下次访问集中在一个时间段中。和下次访问集中在一个时间段中。 空间局部性:空间局部性: 当前访问指令和临近访问的指令,当前访问的数当前访问指令和临近访问的指令,当前访问的数据和临近访问的数据集中在一个较小区域内。据和临近访问的数据集中在一个较小区域内。 原因:大部分程序在空间上顺序执行,在时间上循环执行原因:大部分程序在空间上顺序执行,在时间上循环执行4.2 4.2 虚拟存储技术虚拟存储技术 2虚存的原理虚存的原理 只需将当前需要执行的部分页和部分段读

17、入到内存中就可让只需将当前需要执行的部分页和部分段读入到内存中就可让程序开始执行。程序开始执行。利用缺页和缺段请求,动态实现存储管理。利用缺页和缺段请求,动态实现存储管理。 3特点:特点:存储空间变大存储空间变大 内存外存,内存外存, 支持程序的并发执行支持程序的并发执行,采用部分交换。采用部分交换。 4虚拟存储器的种类虚拟存储器的种类 1)页式虚存)页式虚存 2)段式虚存)段式虚存 3)段页式虚存)段页式虚存 5 unix5 unix进程存储管理进程存储管理 1交换策略交换策略 早期早期 内存和交换区之间传送整个进程内存和交换区之间传送整个进程 费时,影响效率费时,影响效率 现代现代 部分交

18、换部分交换 关键信息,关键信息,pcb不参与交换,常驻内存。不参与交换,常驻内存。 0号进程负责调度和交换工作,无限循环的执行。号进程负责调度和交换工作,无限循环的执行。 数据结构数据结构 映射图来管理交换设备的空间资源,包含可分映射图来管理交换设备的空间资源,包含可分配的资源地址及该地址可用的资源单位。配的资源地址及该地址可用的资源单位。 unix系统采用交换和请求调页两种策略完成存储管理系统采用交换和请求调页两种策略完成存储管理5 unix5 unix进程存储管理进程存储管理 2请求调页策略请求调页策略 内存分页内存分页 外存分页外存分页 进程运行时系统只在内存中保留当前活动进程的某些页面

19、,而进程运行时系统只在内存中保留当前活动进程的某些页面,而不放入整个进程页面不放入整个进程页面 缺页中断缺页中断 虚存技术不受空间限制虚存技术不受空间限制 为了提高运行效率,核心进程提供了一个工作区,存放内存中为了提高运行效率,核心进程提供了一个工作区,存放内存中最近被访问过的页面集合。最近被访问过的页面集合。 3unix系统中进程存储管理结构系统中进程存储管理结构 proc user pcb 放内存中放内存中 放外存中放外存中 8 unix8 unix进程管理的系统调用进程管理的系统调用 例题:例题:#include stdio.h#include main()main() int pid

20、int pid; ; pid pid = fork(); = fork(); if ( pid if ( pid 0 ) 0 ) p r i n t f ( “ f o r k f a i l e d p r i n t f ( “ f o r k f a i l e d ! ” ) ;! ” ) ; exit(1); exit(1); if( pid if( pid = = 0) = = 0) exec(“ls exec(“ls”, “-l”,0);”, “-l”,0); else else printf(“this printf(“this is the parent process”);

21、 is the parent process”); 8 unix8 unix进程管理的系统调用进程管理的系统调用parentchildchildchildparentforkexecexit自动wait 6 unix6 unix进程控制进程控制 6.16.1进程创建进程创建 include int getpid(void); int getppid(void);getpidgetpid函数返回调用进程的进程函数返回调用进程的进程ididgetppidgetppid函数则返回调用进程的父进程函数则返回调用进程的父进程idid。include int fork(void);forkfork函数创建

22、一新进程。函数创建一新进程。6 unix6 unix进程控制进程控制 #include #include #include “err_exit.h”int global = 5;int main(void) int pid; char *string = “these are values before fork:”; int local =10; printf( “before fork *”); if( (pid = fork( ) )0) /fork调用失败调用失败 err_exit (“fork”);6 unix6 unix进程控制进程控制unix系统在实现fork()调用完成的主要工

23、作:1)为子进程在进程表中分配一个空闲的proc结构2)赋给子进程一个唯一的进程标识符pid3)复制一个父进程上下文的逻辑副本4)增加与父进程相关联的文件表和索引节点表的引用次数5)对父进程返回子进程的标识符为pid.对子进程返回标识符pid.6 unix6 unix进程控制进程控制 if( pid = 0) /*子进程子进程*/ printf (“its child process, pid is %dn”, getpid ();else /*父进程父进程*/ printf( “its father process pid is %dn”, getpid();exit( exit_succe

24、ss );6 unix6 unix进程控制进程控制 6.26.2执行一个新程序执行一个新程序include external char *environ;int execl(const char *path,const char *arg0,);int execlp(const char *file,const char *arg0,);int execle(const char *path,const char *arg0,), const char *envp);int execv(const char *path,const char *argv);int execvp(const ch

25、ar *file,const char *argv);int execve(const char *path,const char *argv, const char *envp);这这6 6个函数具有相同的功能,它们都能用新程序的程序映像个函数具有相同的功能,它们都能用新程序的程序映像覆盖进程原来的程序映像。新程序文件名由参数覆盖进程原来的程序映像。新程序文件名由参数pathpath或或filefile给出,它的程序代码将替代原来的程序代码被执行。给出,它的程序代码将替代原来的程序代码被执行。6 unix6 unix进程控制进程控制main().printf(“onen”):execl(/b

26、in/ls”,”ls”,0);printf(“twon”);perror(“exec error);.6 unix6 unix进程控制进程控制6 unix6 unix进程控制进程控制 #include #include #include “err_exit.h”int main(void) pid_t pid; if(pid = fork( )0) err_exit(“fork error”); else if (pid = 0) if( (“/demo.exe”, “myarg1”, “myarg2”,(char*)0)0) err_exit(“execle error”); exit(ex

27、it_success);6 unix6 unix进程控制进程控制 char *arg=“file1”,“file2”,0;char *env=“path=/home/usr”,”term=console”,0int main(void) execl(“/bin/mycat”,”file1”,”file2”,(char*)argv0); execlp(“mycat”, ”file1”,”file2”,(char*)argv0); execle(“/bin/mycat”,”file1”,”file2”,(char*)argv0, env); execv(“/bin/mycat”,arg); exe

28、cvp(“mycat”, arg); execvle(“/bin/mycat”,arg, env);6 unix6 unix进程控制进程控制 6.36.3等待进程完成等待进程完成include int wait(int *stat_loc);int waitpid(pid_t pid,int *stat_loc,int options); 通常,父进程用通常,父进程用forkfork派生了一个子进程后,常常会需要等待子进派生了一个子进程后,常常会需要等待子进程执行完后才能继续执行。程执行完后才能继续执行。 unixunix提供了两个函数来等待子进程的结束提供了两个函数来等待子进程的结束wait

29、和和waitpid函数允许等待子进程结束,并获取其子进程的状态信息。函数允许等待子进程结束,并获取其子进程的状态信息。wait(stat_loc)相当于相当于waitpid(-1, stat_loc,0)6 unix6 unix进程控制进程控制 例例1:#include#include#include#include “err_exit.h”int main(void) pid_t pid; int status; if( (pid = fork() 0 ) /派生子进程派生子进程 1 err_exit(“call fork() failed!”); else if ( pid = 0 ) /

30、子进程子进程 1 exit(1); if ( wait(&status) != pid ) /等待子进程等待子进程1的结束的结束 err_exit(“call wait() failed”);6 unix6 unix进程控制进程控制main()int pid;printf(“just i process now.n”);printf(“calling fork()n”);pid=fork();if (pid=0) printf(“i am the childn”); exit(1);else wait(0);printf(“i am thr parentn”);elseprintf(

31、“fork failed.n”);printf(“program end.n”);6 unix6 unix进程控制进程控制 6.4 6.4 进程终止与僵死进程进程终止与僵死进程1 1、正常终止、正常终止(a a)从)从mainmain函数内执行函数内执行returnreturn。这相当于调用。这相当于调用exitexit。(b b)调用)调用exitexit函数。函数。(c c)调用)调用_exit_exit函数,该函数由函数,该函数由exitexit调用并处理与调用并处理与unixunix相关相关的特定细节。的特定细节。6 unix6 unix进程控制进程控制 6.4 6.4 进程终止与僵死

32、进程进程终止与僵死进程2 2、异常终止、异常终止(a a)调用)调用abortabort函数。函数。(c c)当进程收到某种信号时。)当进程收到某种信号时。6 unix6 unix进程控制进程控制 6.4 6.4 进程终止与僵死进程进程终止与僵死进程3.3.僵死进程僵死进程 僵死进程一般指的是已经终止但并没有由父进程等待的进程僵死进程一般指的是已经终止但并没有由父进程等待的进程6 unix6 unix进程控制进程控制 例例 1int main(void) pid_t pid; int n; printf(“fork program startingn”); pid = fork(); swit

33、ch(pid) case 0: exit(0); default: sleep(5); break; exit(exit_sucess);该子进程将成为僵死进程该子进程将成为僵死进程6 unix6 unix进程控制进程控制 例例 2int main(void) pid_t pid; int n; printf(“fork program startingn”); pid = fork(); switch(pid) case 0: exit(0); default: sleep(60000); /在父进程在父进程sleep期间,子进程为僵死状态期间,子进程为僵死状态 wait(&n); /僵死的子进程被释放僵死的子进程被释放 exit(exit_sucess);6 unix6 unix进程控制进程控制 # ps als uid pid ppid time comdr 181 2081 1872 0:00 ps s 181 2074 1872 0:00 testz 181 2080 2074 0:00 s 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论