第六章UNIX进程管理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章UNIX进程管理

Unix 进程管理 1. 进程的基本概念 2. 进程结构 3 .进程映像 4. 进程状态 5. 进程调度 6.进程控制 7. 进程通信(IPC, INTER-PROCESS COMMUNICATION) 1.进程的概念 程序在其上下文中的一次执行. 除0#和1#进程外,由fork创建的实体的集合 2.UNIX进程结构 3.UNIX进程上下文 进程上下文:指进程的用户地址空间内容、寄存器内容及与进程相关的核心数据结构;包括三部分上下文:用户级、寄存器级、系统级 用户级上下文:正文段即代码(text);数据段(data);栈段(user stack):用户态执行时的过程调用;共享存储区(shared memory) 把地址空间的段称为区(region):进程区表和系统区表(前者索引指向后者) 系统上下文: proc结构:总在内存,内容包括阻塞原因; user结构:可以调出到外存,进程处于执行状态时才用得着,各种资源表格; 进程区表:从虚拟地址到物理地址的映射; 核心栈:核心态执行时的过程调用的栈结构; 进程PCB(proc + user) Proc: struct proc{ }proc[N]; p_stat; 进程状态如:SRUN,SSLEEP,SZOMB... p_flag ; 每位代表一个含义,如:SLOAD,… p_pri ; 优先级,如:-100 - 127 p_cpu ; p_nice ;计算进程动态优先数 p_sig ; 接受软中断信号 p_uid ; 进程的用户标识 p_pid; 进程标识符 p_ppid; 父进程的标识符 p_time ; 进程在内存或外存的驻留时间 p_addr ; user区的地址 (现代 :p_ubptb,p_regin) p_size; user区的大小 p_ttyp; 进程相关终端 p_textp ; 指向共享正文段表 p_wchan; 进程等待原因 进程PCB(proc + user) User : struct user {…} ;主要包括: 系统共享正文段表 text Struct text{….} text[M]; 4. 进程状态 进程状态(续) 5. 进程调度 Swtch:采用动态优先数法 p_pri=p_cpu/2 + PUSER + p_nice +NZERO 25 20 进程调度(续) 调度时机 1. 进程结束。 2. 进程睡眠SSLEEP or SWAIT。 3.进程暂停 SSTOP。 4. 当前进程需扩充内存,内存没空,被交换到外存。 5. 等待共享段调入内存 6.进程从核心态返回时,runrun=1 6. 进程控制 fork:创建子进程 wait:父进程等待子进程结束 exit:进程结束 exec:进程更换正文段 fork---创建进程 fork例 main() { int child, i=2; if((child=fork())==-1) {printf(fork error. );exit();} if(child==0) {i=i+3; printf(“i=%d\n”,i); } i=i+5; printf(“i=%d\n”,i); } exec-执行文件 更换进程执行代码,更换正文段,数据段 调用格式:exec (文件名,参数表,环境变量表) 例:execlp(“max”,15,18,10,0); execvp(“max”,argp) wait--等待子进程结束 exit---终止进程 使用方法: main( ) { int n; …. if(fork()==0) {printf(“a”); exit(0); } wait(n); printf(“b”); } shell程序 …… while(true) { printf(“$”); scanf(“% s”,command); 检查命令的语法; if (fork()==0) {….. execlp(command,参数表,0); } if (command后缀!=‘’) wait( …); ….. } 上机作业 getpid()---获取进程的pid 作业一:

文档评论(0)

kabudou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档