您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > UNIX进程调度和进程存储
第五讲UNIX进程调用和进程存储概述UNIX系统是分时多任务、多道程序环境系统。它采用时间片轮转转方式为系统中的多个用户的多道程序提供服务。为了跟踪计算机并行活动的状态及并发程序对资源的共享使用,提出了进程的概念。提纲1进程基本概念2UNIX系统中的进程3UNIX系统进程调度和管理4进程存储管理与存储技术5UNIX进程的存储管理6UNIX进程控制1进程的基本概念1.进程与程序(a)程序:程序代码,静态进程:可以看作某种特定任务的程序在一个数据集合上的一次具体的活动,动态。(b)进程与程序相比具有动态性、独立性、并发性等特点。1进程的基本概念2.进程的描述进程的结构=进程描述信息+进程实体PCB程序段+数据结构集PCB:包括进程的描述信息、控制信息及进程使用资源信息、处理器现场保护结构等,其中内容是进程动态特征的集中反映。OS通过PCB感知一个进程的存在。程序段:进程需要完成功能的程序代码。数据结构集:进程的程序执行时要完成功能的程序代码。1进程的基本概念3.进程的状态程序——静态进程——动态,具有生命周期非运行运行调度进入退出暂停两状态进程模式:两状态进程模式中包含的进程状态转换过程:进程开始;调度运行;暂停运行;进程结束1进程的基本概念五状态进程模式:创建阻塞就绪运行退出事件等待超时调度事件发生提交新建释放五状态进程模式中包含的进程状态转换过程:创建新进程;进程提交;调度运行;释放;超时;事件等待;事件发生1进程的基本概念4.进程控制主要实现进程状态的转换和并发进程的管理1)原语不可分解,不间断,不可并发执行的程序段2)临界区指共享某个资源时,不允许多个并发的程序交叉执行的一段代码。并发产生的原因:随机发生,程序需要互不干涉。3)进程互斥4)信号量描述共享资源使用情况的数据结构5)进程同步有两种方式:互斥:我在,你不能在间接制约关系同步:你不来,我不能走直接制约关系2UNIX中的进程1.UNIX创建进程的过程引导程序核心程序创建:0号进程0号进程创建1号进程完成init1号进程创建终端11号进程创建终端21号进程创建终端n…..子进程子进程….子进程2UNIX中的进程2.UNIX中进程的描述运行中的每个进程都有一个独立的运行环境,这个环境是进程生存的基础,即进程上下文。ProcUser系统栈用户栈数据段正文段3UNIX进程调度和管理1.进程调度的方法动态优先级多级反馈循环调度法公式:2.计算公式P-pri=P-cpu+PUSER(25)+P-nice+NZERO(20)优点:1)创建新进程,cpu=0,P-pri值较小,优先级较大2)使用越多,P-cpu越大,P-pri值较大,优先级较小3)使用越少,P-cpu越小,P-pri值较小,优先级较大4进程存储管理存储管理的主要功能:(1)存储空间的分配,回收;(2)地址变换;(3)存储共享和保护;(4)存储器扩充(5)提高主存的利用率计算机的存储结构图:寄存器高速缓存主存辅存CPUCPU内系统内存硬盘,光盘,磁带访问速度慢存储空间大单位价格低4.1进程存储技术程序以进程的方式存放于内存中,CPU在内存中实现进程之间的切换调度。采用一些策略和算法来分配存储空间,使进程在内存和磁盘之间来回切换。此过程为进程的存储管理过程。1.连续分配存储技术操作系统为运行的进程分配一个连续的内存空间(a)单一连续分配存储方式:系统区用户区为一个进程分配,适用了单用户单任务的系统管理,出现在较早时期4.1进程存储技术系统区用户区1可以连续放多个进程,实现进程的并发,但是有碎片产生,可以利用内存紧缩技术用户区2…..1.连续分配存储技术操作系统为运行的进程分配一个连续的内存空间(b)分区式连续存储方式:4.1进程存储技术(1)覆盖目的:在较小的可用内存中运行较大的程序原理:一个程序的几个代码段或数据段按照使用的先后顺序以覆盖方式占用共享内存区域。原则:将程序中必要的数据放在常驻内存中。将不经常用的放在交换区。将不存在调用关系的模块可以采用覆盖方式共享内存分区。(2)交换:在多个程序并发执行的时候,将暂时不执行的代码放入交换区,从而可以用更大的内存空间装入新的进程。2.覆盖和交换技术4.1进程存储技术3.页式存储管理解决内存碎片,提高内存的利用率1)基本思想:进程逻辑空间划分为若干页,内存划分为若干物理页。进程按照页的大小分配内存空间,可以连续或不连续分配。页号页面号05176212静态页式管理:进程在执行前将程序段和数据段一次性装入内存的各个页面中。数据结构:进程页表:每个进程都有进程页表,逻辑页号对应物理页面号4.1进程存储技术请求表:系统有一个请求表,可以放到PCB描述中进程号请求数页表地址页表长度状态120102220已分配用于地址转换存储页面表:系统有一张,用于描述内存各个页面的分配情况动态页式管理:只需要将执行部分调入(缺页中断则调入),动态管理程序各部分在内存中的调入调出。4.1进程存储技术2)页式管理的地址变换页表长度页表地址控制寄存器8有效地址逻辑页号物理页号0213281C421C4(页内地址)物理地址4.1进程存储技术4.段式存储管理1)将内存分为不同的分区,视为二维空间,进程按照逻辑内容分段。2)特点:以段为单位分配内存分区,段可以不连续。每个段可以占用一个内存分区。内存管理采用动态分区方法,采用缺段中断处理。3)数据结构:进程段表4.2虚拟存储技术1.局部性原理程序执行过程中,在较短的时期内,所执行的指令地址以及操作数地址分别局限在一个区域内。时间局限性:当前指令执行与下条指令执行,数据的当前访问和下次访问集中在一个时间段中。空间局部性:当前访问指令和临近访问的指令,当前访问的数据和临近访问的数据集中在一个较小区域内。原因:大部分程序在空间上顺序执行,在时间上循环执行4.2虚拟存储技术2.虚存的原理只需将当前需要执行的部分页和部分段读入到内存中就可让程序开始执行。利用缺页和缺段请求,动态实现存储管理。3.特点:存储空间变大内存+外存,支持程序的并发执行,采用部分交换。4.虚拟存储器的种类1)页式虚存2)段式虚存3)段页式虚存5UNIX进程存储管理1.交换策略早期内存和交换区之间传送整个进程费时,影响效率现代部分交换关键信息,PCB不参与交换,常驻内存。0号进程负责调度和交换工作,无限循环的执行。数据结构映射图来管理交换设备的空间资源,包含可分配的资源地址及该地址可用的资源单位。UNIX系统采用交换和请求调页两种策略完成存储管理5UNIX进程存储管理2.请求调页策略内存分页外存分页进程运行时系统只在内存中保留当前活动进程的某些页面,而不放入整个进程页面缺页中断虚存技术不受空间限制为了提高运行效率,核心进程提供了一个工作区,存放内存中最近被访问过的页面集合。3.UNIX系统中进程存储管理结构Proc+User=PCB放内存中放外存中8UNIX进程管理的系统调用例题:#includestdio.hmain(){intpid;pid=fork();if(pid0){printf(“forkfailed!”);exit(1);}if(pid==0){exec(“ls”,“-l”,0);}else{printf(“Thisistheparentprocess”);}}8UNIX进程管理的系统调用parentchildchildchildparentforkexecexit自动wait6UNIX进程控制6.1进程创建includeunistd.hintgetpid(void);intgetppid(void);getpid函数返回调用进程的进程IDgetppid函数则返回调用进程的父进程ID。includeunistd.hintfork(void);fork函数创建一新进程。6UNIX进程控制#includeunistd.h#includestdio.h#include“err_exit.h”intglobal=5;intmain(void){intpid;char*string=“thesearevaluesbeforefork:”;intlocal=10;printf(“beforefork***”);if((pid=fork())0)//fork调用失败err_exit(“fork”);6UNIX进程控制UNIX系统在实现fork()调用完成的主要工作:1)为子进程在进程表中分配一个空闲的proc结构2)赋给子进程一个唯一的进程标识符pid3)复制一个父进程上下文的逻辑副本4)增加与父进程相关联的文件表和索引节点表的引用次数5)对父进程返回子进程的标识符为pid.对子进程返回标识符pid.6UNIX进程控制if(pid==0){/*子进程*/printf(“It’sChildprocess,pidis%d\n”,getpid());}else{/*父进程*/printf(“It’sFatherprocesspidis%d\n”,getpid());}exit(EXIT_SUCCESS);}6UNIX进程控制6.2执行一个新程序includeunistd.hexternalchar**environ;intexecl(constchar*path,constchar*arg0,…,);intexeclp(constchar*file,constchar*arg0,…);intexecle(constchar*path,constchar*arg0,…),constchar*envp[]);intexecv(constchar*path,constchar*argv[]);intexecvp(constchar*file,constchar*argv[]);intexecve(constchar*path,constchar*argv[],constchar*envp[]);这6个函数具有相同的功能,它们都能用新程序的程序映像覆盖进程原来的程序映像。新程序文件名由参数path或file给出,它的程序代码将替代原来的程序代码被执行。6UNIX进程控制Main(){….Printf(“one\n”):Execl(‘/bin/ls”,”ls”,0);Printf(“two\n”);Perror(“execerror’);...}6UNIX进程控制6UNIX进程控制#includeunistd.h#includestdlib.h#include“err_exit.h”intmain(void){pid_tpid;if((pid=fork())0)err_exit(“forkerror”);elseif(pid==0){if(execlp(“/demo.exe”,“myarg1”,“MYARG2”,(char*)0)0)err_exit(“execleerror”);}exit(EXIT_SUCCESS);}6UNIX进程控制char*arg[]={“file1”,“file2”,0};Char*env[]={“PATH=/home/usr”,”TERM=console”,0}intmain(void){execl(“/bin/mycat”,”file1”,”file2”,(char*)argv[0]);execlp(“mycat”,”file1”,”file2”,(char*)argv[0]);execle(“/bin/mycat”,”file1”,”file2”,(char*)argv[0],env);execv(“/bin/mycat”,arg);execvp(“mycat”,arg);execvle(“/bin/mycat”,arg,env);}6UNIX进程控制6.3等待进程完成includesys/wait.hintwait(int*stat_loc);intwaitpid(pid_tpid,int*stat_loc,intoptions);通常,父进程用fork派生了一个子进程后,常常会需要等待子进程执行完后才能继续执行。UN
本文标题:UNIX进程调度和进程存储
链接地址:https://www.777doc.com/doc-4013162 .html