chap5 UNIX进程调度和进程存储 unix课件

上传人:油条 文档编号:49173162 上传时间:2018-07-25 格式:PPT 页数:45 大小:220KB
返回 下载 相关 举报
chap5  UNIX进程调度和进程存储 unix课件_第1页
第1页 / 共45页
chap5  UNIX进程调度和进程存储 unix课件_第2页
第2页 / 共45页
chap5  UNIX进程调度和进程存储 unix课件_第3页
第3页 / 共45页
chap5  UNIX进程调度和进程存储 unix课件_第4页
第4页 / 共45页
chap5  UNIX进程调度和进程存储 unix课件_第5页
第5页 / 共45页
点击查看更多>>
资源描述

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

1、第五讲 UNIX进程调用 和进程存储 概述UNIX系统是分时多任务、多道程序环境系统。它采用时间片轮转转方式为系统中的多个用户的多道程序提供服务。为了跟踪计算机并行活动的状态及并发程序对资源的共享使用,提出了进程的概念。提纲1 进程基本概念2 UNIX系统中的进程3 UNIX系统进程调度和管理4 进程存储管理与存储技术5 UNIX进程的存储管理6 UNIX进程控制1 进程的基本概念1进程与程序(a)程序:程序代码,静态进程:可以看作某种特定任务的程序在一个数据集合上的一次具体的活动,动态。(b)进程与程序相比具有动态性、独立性、并发性等特点。1 进程的基本概念2进程的描述进程的结构进程描述信息

2、 进程实体PCB 程序段数据结构集PCB:包括进程的描述信息、控制信息及进程使用资源信息、处理器现场保护结构等,其中内容是进程动态特征的集中反 映。OS通过PCB感知一个进程的存在。程序段:进程需要完成功能的程序代码。 数据结构集:进程的程序执行时要完成功能的程序代码。1 进程的基本概念3进程的状态程序 静态进程 动态,具有生命周期两状态进程模式:两状态进程模式中包含的进程状态转换过程:进程开始;调度运行;暂停运行;进程结束1 进程的基本概念五状态进程模式: 创建阻塞就绪运行退出事件 等待超时调度事件 发生提交新建释放五状态进程模式中包含的进程状态转换过程:创建新进程;进程提交;调度运行;释放

3、;超时;事件等待;事件发生1 进程的基本概念4进程控制主要实现进程状态的转换和并发进程的管理1)原语 不可分解,不间断,不可并发执行的程序段2)临界区 指共享某个资源时,不允许多个并发的程序交叉执行的一段代码。并发产生的原因:随机发生, 程序需要互不干涉。 3)进程互斥 4)信号量 描述共享资源使用情况的数据结构 5)进程同步有两种方式:互斥: 我在,你不能在 间接制约关系同步: 你不来,我不能走 直接制约关系2 UNIX中的进程1 UNIX创建进程的过程 2 UNIX中的进程2UNIX中进程的描述运行中的每个进程都有一个独立的运行环境,这个环境是进程生存的基 础,即进程上下文 。3 UNIX

4、进程调度和管理 1进程调度的方法动态优先级多级反馈循环调度法公式:2计算公式P-priP-cpuPUSER(25)P-niceNZERO(20)优点:1)创建新进程,cpu0, P-pri值较小,优先级较大2)使用越多,P-cpu越大,P-pri值较大,优先级较小3)使用越少,P-cpu越小,P-pri值较小,优先级较大 4 进程存储管理 存储管理的主要功能:(1)存储空间的分配,回收;(2)地址变换;(3)存储共享和保护;(4)存储器扩充(5)提高主存的利用率计算机的存储结构图:4.1 进程存储技术 程序以进程的方式存放于内存中,CPU在内存中实现进程之间 的切换调度。采用一些策略和算法来分

5、配存储空间,使进程在内 存和磁盘之间来回切换。此过程为进程的存储管理过程。 1连续分配存储技术操作系统为运行的进程分配一个连续的内存空间(a) 单一连续分配存储方式: 4.1 进程存储技术 1连续分配存储技术操作系统为运行的进程分配一个连续的内存空间(b)分区式连续存储方式: 4.1 进程存储技术 (1)覆盖目的: 在较小的可用内存中运行较大的程序 原理: 一个程序的几个代码段或数据段按照使用的先后顺序以 覆盖方式占用共享内存区域。原则: 将程序中必要的数据放在常驻内存中。将不经常用的放在交换区。将不存在调用关系的模块可以采用覆 盖方式共享内存分区。(2)交换:在多个程序并发执行的时候,将暂时

6、不执行的代码放 入交换区,从而可以用更大的内存空间装入新的进程。 2覆盖和交换技术4.1 进程存储技术 3页式存储管理解决内存碎片,提高内存的利用率1)基本思想:进程逻辑空间划分为若干页,内存划分为若干物理页。 进程按照页的大小分配内存空间,可以连续或不连续分配。页号页面号05176212静态页式管理:进程在执行前将程序段和数据段一次性装入内存的各个 页面中。数据结构:进程页表:每个进程都有进程页表,逻辑页号对应物理页面号 4.1 进程存储技术 请求表:系统有一个请求表,可以放到PCB描述中 进程号请求数页表地址页表长度状态120102220已分配用于地址转换存储页面表: 系统有一张,用于描述

7、内存各个页面的分配情况动态页式管理:只需要将执行部分调入(缺页中断则调入),动 态管理程序各部分在内存中的调入调出。 4.1 进程存储技术 2)页式管理的地址变换 4.1 进程存储技术 4段式存储管理1)将内存分为不同的分区,视为二维空间,进程按照逻辑内容 分段。2)特点:以段为单位分配内存分区,段可以不连续。每个段可 以占用一个内存分区。内存管理采用动态分区方法,采用缺段中 断处理。3)数据结构:进程段表4.2 虚拟存储技术 1局部性原理程序执行过程中,在较短的时期内,所执行的指令地址以及操 作数地址分别局限在一个区域内。时间局限性: 当前指令执行与下条指令执行,数据的当前访问 和下次访问集

8、中在一个时间段中。空间局部性: 当前访问指令和临近访问的指令,当前访问的数 据和临近访问的数据集中在一个较小区域内。原因:大部分程序在空间上顺序执行,在时间上循环执行4.2 虚拟存储技术 2虚存的原理只需将当前需要执行的部分页和部分段读入到内存中就可让 程序开始执行。利用缺页和缺段请求,动态实现存储管理。 3特点:存储空间变大 内存外存, 支持程序的并发执行,采用部分交换 。 4虚拟存储器的种类1)页式虚存2)段式虚存3)段页式虚存 5 UNIX进程存储管理 1交换策略早期 内存和交换区之间传送整个进程 费时,影响效率现代 部分交换 关键信息,PCB不参与交换,常驻内存。0号进程负责调度和交换

9、工作,无限循环的执行。数据结构 映射图来管理交换设备的空间资源,包含可分 配的资源地址及该地址可用的资源单位。 UNIX系统采用交换和请求调页两种策略完成存储管理5 UNIX进程存储管理 2请求调页策略内存分页 外存分页进程运行时系统只在内存中保留当前活动进程的某些页面,而 不放入整个进程页面缺页中断 虚存技术不受空间限制为了提高运行效率,核心进程提供了一个工作区,存放内存中 最近被访问过的页面集合。 3UNIX系统中进程存储管理结构Proc User PCB放内存中 放外存中 8 UNIX进程管理的系统调用 例题: #include main() int pid;pid = fork();i

10、f ( pid int getpid(void);int getppid(void);getpid函数返回调用进程的进程IDgetppid函数则返回调用进程的父进程ID。include int fork(void);fork函数创建一新进程。6 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( (

11、pid = fork( ) ) 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 char *file,const char *argv); int ex

12、ecve(const char *path,const char *argv,const char *envp);这6个函数具有相同的功能,它们都能用新程序的程序映像覆盖进程原来的程序映像。新程序文件名由参数path或file给出,它的程序代码将替代原来的程序代码被执行。6 UNIX进程控制Main() . Printf(“onen”): Execl(/bin/ls”,”ls”,0); Printf(“twon”); Perror(“exec error); . 6 UNIX进程控制6 UNIX进程控制 #include #include #include “err_exit.h” int m

13、ain(void) pid_t pid;if(pid = fork( ) int wait(int *stat_loc); int waitpid(pid_t pid,int *stat_loc,int options);通常,父进程用fork派生了一个子进程后,常常会需要等待子进 程执行完后才能继续执行。UNIX提供了两个函数来等待子进程的结束wait和waitpid函数允许等待子进程结束,并获取其子进程的状态信息。wait(stat_loc)相当于waitpid(-1, stat_loc,0)6 UNIX进程控制 例1:#include#include#include#include “e

14、rr_exit.h”int main(void)pid_t pid;int status;if( (pid = fork() S 181 2041 1860 0:00 ftp状态Z表示该进程为僵死进程,该 进程的父进程PPID为2074,其 父进程test仍然在运行6 UNIX进程控制 6.5 system函数include int system(const char * command);参数command为要执行的命令字符串,它将被直接 传送给UNIX的命令解释程序shell,由shell来执行该 命令。例如 system(“ls”);system(“/home/user/test.exe

15、”);6 UNIX进程控制 #include#includeint main() printf(“running ps with systemn”);system(“ps-af”);printf(“Done.n”);exit(EXIT_SUCCESS); 6 UNIX进程控制 6.6 进程组进程组ID类似于进程ID,它是一个整数,并且也用pid_t数据类型 表示。 # include pid_t getpgrp(void);每一个进程组有一个组长,称为进程组组长,它是PID与PGID相 同的进程。通常,一个进程从它的父进程继承进程组ID,并且,在 此组内的所有其他进程都是该进程组长的子孙后代。通过调用setpgid函数,进程可以改变它的进程组ID从而加入到一 个已经存在的进程组中;或者改变自己的进程组ID等于自身的PID而 创建一个新的进程组,从而使自己成为新进程组的组长。# include int setpgid(pid_t pid,pid_t pgid);该函数改变参数pid所指定的进程组ID为pgid所给定值。如果这两个 参数相同,则由pid所指定的进程成为一个进程组长。

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

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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