chap5UNIX进程调度和进程存储 unix课件

上传人:pu****.1 文档编号:568762794 上传时间:2024-07-26 格式:PPT 页数:45 大小:220.04KB
返回 下载 相关 举报
chap5UNIX进程调度和进程存储 unix课件_第1页
第1页 / 共45页
chap5UNIX进程调度和进程存储 unix课件_第2页
第2页 / 共45页
chap5UNIX进程调度和进程存储 unix课件_第3页
第3页 / 共45页
chap5UNIX进程调度和进程存储 unix课件_第4页
第4页 / 共45页
chap5UNIX进程调度和进程存储 unix课件_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《chap5UNIX进程调度和进程存储 unix课件》由会员分享,可在线阅读,更多相关《chap5UNIX进程调度和进程存储 unix课件(45页珍藏版)》请在金锄头文库上搜索。

1、第五讲第五讲 UNIXUNIX进程调用进程调用和进程存储和进程存储概述概述 UNIXUNIX系系统统是是分分时时多多任任务务、多多道道程程序序环环境境系系统统。它它采采用用时时间间片片轮轮转转转转方方式式为为系系统统中中的的多多个个用用户户的的多多道道程程序序提提供供服服务务。为为了了跟跟踪踪计计算算机机并并行活动的状态及并发程序对资源的共享使用,提出了进程的概念。行活动的状态及并发程序对资源的共享使用,提出了进程的概念。提纲提纲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进程的描述进程的描述进程的结构进程描述信息进程的结构进程描述信息进程实体进程实体PCB程序段数据

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

4、:两状态进程模式:两两状态进程模式中包含的进程状态转换过程:状态进程模式中包含的进程状态转换过程:进程开始;调度运行;暂停运行;进程结束进程开始;调度运行;暂停运行;进程结束1 1 进程的基本概念进程的基本概念五状态进程模式:五状态进程模式:创建创建阻塞阻塞就绪就绪运行运行退出退出事件等待超时调度事件发生提交新建释放五状态进程模式中包含的进程状态转换过程:五状态进程模式中包含的进程状态转换过程:创建新进程;进程提交;调度运行;释放;超时;创建新进程;进程提交;调度运行;释放;超时;事件等待;事件发生事件等待;事件发生1 1 进程的基本概念进程的基本概念4进程控制进程控制主要实现进程状态的转换和

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

6、走直接制约关系直接制约关系2 UNIX2 UNIX中的进程中的进程1UNIX创建进程的过程创建进程的过程2 UNIX2 UNIX中的进程中的进程2UNIX中进程的描述中进程的描述运运行行中中的的每每个个进进程程都都有有一一个个独独立立的的运运行行环环境境,这这个个环环境境是是进进程程生生存存的的基基础,即础,即进程上下文进程上下文。3 UNIX3 UNIX进程调度和管理进程调度和管理 1进程调度的方法进程调度的方法动态优先级多级反馈循环调度法公式:动态优先级多级反馈循环调度法公式:2计算公式计算公式P-priP-cpuPUSER(25)P-niceNZERO(20)优点:优点:1)创建新进程,

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

8、 程程序序以以进进程程的的方方式式存存放放于于内内存存中中,CPU在在内内存存中中实实现现进进程程之之间间的的切切换换调调度度。采采用用一一些些策策略略和和算算法法来来分分配配存存储储空空间间,使使进进程程在在内内存和磁盘之间来回切换。此过程为进程的存储管理过程。存和磁盘之间来回切换。此过程为进程的存储管理过程。1连续分配存储技术连续分配存储技术操作系统为运行的进程分配一个连续的内存空间操作系统为运行的进程分配一个连续的内存空间(a)单一连续分配存储方式:单一连续分配存储方式:4.1 4.1 进程存储技术进程存储技术1连续分配存储技术连续分配存储技术操作系统为运行的进程分配一个连续的内存空间操

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

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

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

12、情况系统有一张,用于描述内存各个页面的分配情况动动态态页页式式管管理理:只只需需要要将将执执行行部部分分调调入入(缺缺页页中中断断则则调调入入),动动态管理程序各部分在内存中的调入调出。态管理程序各部分在内存中的调入调出。4.1 4.1 进程存储技术进程存储技术2)页式管理的地址变换)页式管理的地址变换4.1 4.1 进程存储技术进程存储技术4段式存储管理段式存储管理1)将将内内存存分分为为不不同同的的分分区区,视视为为二二维维空空间间,进进程程按按照照逻逻辑辑内内容容分段。分段。2)特特点点:以以段段为为单单位位分分配配内内存存分分区区,段段可可以以不不连连续续。每每个个段段可可以以占占用用

13、一一个个内内存存分分区区。内内存存管管理理采采用用动动态态分分区区方方法法,采采用用缺缺段段中中断处理。断处理。3)数据结构:进程段表)数据结构:进程段表4.2 4.2 虚拟存储技术虚拟存储技术 1局部性原理局部性原理程程序序执执行行过过程程中中,在在较较短短的的时时期期内内,所所执执行行的的指指令令地地址址以以及及操操作数地址分别局限在一个区域内。作数地址分别局限在一个区域内。时时间间局局限限性性:当当前前指指令令执执行行与与下下条条指指令令执执行行,数数据据的的当当前前访访问问和下次访问集中在一个时间段中。和下次访问集中在一个时间段中。空空间间局局部部性性:当当前前访访问问指指令令和和临临

14、近近访访问问的的指指令令,当当前前访访问问的的数数据和临近访问的数据集中在一个较小区域内。据和临近访问的数据集中在一个较小区域内。原因:大部分程序在空间上顺序执行,在时间上循环执行原因:大部分程序在空间上顺序执行,在时间上循环执行4.2 4.2 虚拟存储技术虚拟存储技术 2虚存的原理虚存的原理只只需需将将当当前前需需要要执执行行的的部部分分页页和和部部分分段段读读入入到到内内存存中中就就可可让让程序开始执行。程序开始执行。利用缺页和缺段请求,动态实现存储管理。利用缺页和缺段请求,动态实现存储管理。3特点:特点:存储空间变大存储空间变大内存外存,内存外存,支持程序的并发执行支持程序的并发执行,采

15、用部分交换。采用部分交换。4虚拟存储器的种类虚拟存储器的种类1)页式虚存)页式虚存2)段式虚存)段式虚存3)段页式虚存)段页式虚存5 UNIX5 UNIX进程存储管理进程存储管理 1交换策略交换策略早期早期内存和交换区之间传送整个进程内存和交换区之间传送整个进程费时,影响效率费时,影响效率现代现代部分交换部分交换关键信息,关键信息,PCB不参与交换,常驻内存。不参与交换,常驻内存。0号进程负责调度和交换工作,无限循环的执行。号进程负责调度和交换工作,无限循环的执行。数数据据结结构构映映射射图图来来管管理理交交换换设设备备的的空空间间资资源源,包包含含可可分分配的资源地址及该地址可用的资源单位。

16、配的资源地址及该地址可用的资源单位。UNIX系统采用交换和请求调页两种策略完成存储管理系统采用交换和请求调页两种策略完成存储管理5 UNIX5 UNIX进程存储管理进程存储管理 2请求调页策略请求调页策略内存分页内存分页外存分页外存分页进进程程运运行行时时系系统统只只在在内内存存中中保保留留当当前前活活动动进进程程的的某某些些页页面面,而而不放入整个进程页面不放入整个进程页面缺页中断缺页中断虚存技术不受空间限制虚存技术不受空间限制为为了了提提高高运运行行效效率率,核核心心进进程程提提供供了了一一个个工工作作区区,存存放放内内存存中中最近被访问过的页面集合。最近被访问过的页面集合。3UNIX系统

17、中进程存储管理结构系统中进程存储管理结构ProcUserPCB放内存中放内存中放外存中放外存中8 UNIX8 UNIX进程管理的系统调用进程管理的系统调用 例题:例题:#include #include main()main() intint pidpid; ; pidpid = fork(); = fork(); if ( if ( pidpid 0 ) 0 ) printf(printf(“forkfailedforkfailed! !”);); exit(1); exit(1); if( if( pidpid = = 0) = = 0) exec(exec(“lsls”, , “-l-l

18、”,0);,0); else else printf(printf(“ThisThis is the parent process is the parent process”); ); 8 UNIX8 UNIX进程管理的系统调用进程管理的系统调用parentchildchildchildparentforkexecexit自动wait 6 UNIX6 UNIX进程控制进程控制 6.16.1进程创建进程创建 include int getpid(void); int getppid(void);getpidgetpid函数返回调用进程的进程函数返回调用进程的进程IDIDgetppidgetpp

19、id函数则返回调用进程的父进程函数则返回调用进程的父进程IDID。include int fork(void);forkfork函数创建一新进程。函数创建一新进程。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调用

20、失败调用失败 err_exit (“fork”);6 UNIX6 UNIX进程控制进程控制UNIX系统在实现fork()调用完成的主要工作:1)为子进程在进程表中分配一个空闲的proc结构2)赋给子进程一个唯一的进程标识符pid3)复制一个父进程上下文的逻辑副本4)增加与父进程相关联的文件表和索引节点表的引用次数5)对父进程返回子进程的标识符为pid.对子进程返回标识符pid.6 UNIX6 UNIX进程控制进程控制 if( pid = 0) /*子进程子进程*/ printf (“Its Child process, pid is %dn”, getpid ();else /*父进程父进程*

21、/ printf( “Its Father process pid is %dn”, getpid();exit( EXIT_SUCCESS );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 *en

22、vp);int execv(const char *path,const char *argv);int execvp(const char *file,const char *argv);int execve(const char *path,const char *argv, const char *envp);这这6 6个个函函数数具具有有相相同同的的功功能能,它它们们都都能能用用新新程程序序的的程程序序映映像像覆覆盖盖进进程程原原来来的的程程序序映映像像。新新程程序序文文件件名名由由参参数数pathpath或或filefile给出,它的程序代码将替代原来的程序代码被执行。给出,它的程序

23、代码将替代原来的程序代码被执行。6 UNIX6 UNIX进程控制进程控制Main().Printf(“onen”):Execl(/bin/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( execlpexeclp

24、(“/demo.exe”, “myarg1”, “MYARG2”,(char*)0)0) err_exit(“execle error”); exit(EXIT_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

25、(“/bin/mycat”,”file1”,”file2”,(char*)argv0, env); execv(“/bin/mycat”,arg); execvp(“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派派生生了了一一个个子子进进程程后后,常常常常会会需需要要等

26、等待待子子进进程执行完后才能继续执行。程执行完后才能继续执行。 UNIXUNIX提供了两个函数来等待子进程的结束提供了两个函数来等待子进程的结束wait和和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 = for

27、k() 0 ) /派生子进程派生子进程 1 err_exit(“call fork() failed!”); else if ( pid = 0 ) /子进程子进程 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 th

28、e childn”); exit(1);else wait(0);printf(“I am thr parentn”);elseprintf( “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调调用用

29、并并处处理理与与UNIXUNIX相相关关的特定细节。的特定细节。6 UNIX6 UNIX进程控制进程控制 6.4 6.4 进程终止与僵死进程进程终止与僵死进程2 2、异常终止、异常终止(a a)调用调用abortabort函数。函数。(c c)当进程收到某种信号时。当进程收到某种信号时。6 UNIX6 UNIX进程控制进程控制 6.4 6.4 进程终止与僵死进程进程终止与僵死进程3.3.僵死进程僵死进程 僵死进程一般指的是已经终止但并没有由父进程等待的进程僵死进程一般指的是已经终止但并没有由父进程等待的进程6 UNIX6 UNIX进程控制进程控制 例例 1int main(void) pid_

30、t pid; int n; printf(“fork program startingn”); pid = fork(); switch(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:

31、 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 181 2041 1860 0:00 ftp 状态状态Z表示该进程为僵死进程,该表示该进程为僵死进程,该进程的父进程进程的父进程PPID为为2074,其

32、,其父进程父进程test仍然在运行仍然在运行6 UNIX6 UNIX进程控制进程控制 6.5 system6.5 system函数函数include int system(const char * command); 参参数数command为为要要执执行行的的命命令令字字符符串串,它它将将被被直直接接传传送送给给UNIX的的命命令令解解释释程程序序shell,由由shell来来执执行行该该命令。命令。 例如例如 system(“ls”); system(“/home/user/test.exe”);6 UNIX6 UNIX进程控制进程控制 #include#includeint main()

33、printf(“running ps with systemn”); system(“ps-af”); printf(“Done.n”); exit(EXIT_SUCCESS); 6 UNIX6 UNIX进程控制进程控制 6.6 6.6 进程组进程组 进进程程组组IDID类类似似于于进进程程ID,ID,它它是是一一个个整整数数,并并且且也也用用pid_tpid_t数数据据类类型型表示。表示。# include pid_t getpgrp(void); 每每一一个个进进程程组组有有一一个个组组长长,称称为为进进程程组组组组长长,它它是是PIDPID与与PGIDPGID相相同同的的进进程程。通通常

34、常,一一个个进进程程从从它它的的父父进进程程继继承承进进程程组组IDID,并并且且,在在此组内的所有其他进程都是该进程组长的子孙后代。此组内的所有其他进程都是该进程组长的子孙后代。 通通过过调调用用setpgidsetpgid函函数数,进进程程可可以以改改变变它它的的进进程程组组IDID从从而而加加入入到到一一个个已已经经存存在在的的进进程程组组中中;或或者者改改变变自自己己的的进进程程组组IDID等等于于自自身身的的PIDPID而而创建一个新的进程组,从而使自己成为新进程组的组长。创建一个新的进程组,从而使自己成为新进程组的组长。# include int setpgid(pid_t pid,pid_t pgid); 该该函函数数改改变变参参数数pidpid所所指指定定的的进进程程组组IDID为为pgidpgid所所给给定定值值。如如果果这这两两个个参数相同,则由参数相同,则由pidpid所指定的进程成为一个进程组长。所指定的进程成为一个进程组长。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号