第08章-UNI的进程管理_第1页
第08章-UNI的进程管理_第2页
第08章-UNI的进程管理_第3页
第08章-UNI的进程管理_第4页
第08章-UNI的进程管理_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

第八章

UNIX的进程管理程序的并发执行与顺序执行顺序执行并发执行程序执行是顺序的程序执行是间断的程序独占系统资源(封闭性)程序共享资源程序执行的可再现性程序执行失去可再现性进程是一个具有一定功能的程序在一组数据集上的一次动态执行过程。进程是线程的容器,是资源的分配单位。在分时多道程序环境中,CPU在多道程序之间切换,每道程序执行一个时间片,并行方式完成多道程序的并发请求。传统UNIX描述这一活动单位是“进程”。进程的概念进程的组成进程控制块程序代码数据集进程的状态运行阻塞就绪创建退出进程控制的基本概念进程的创建、种植、阻塞、唤醒原语临界区同步互斥UNIX中的进程进程控制系统负责:管理将要被CPU使用的程序和数据存储空间分配进程交换调度并发执行控制系统资源分配1.UNIX进程创建机制UNIX系统采用分时(time-sharingsystem)策略,管理多道程序的运行时间片通常设计的比较小,典型的为1秒进程调度采用动态优先数法,选择占用处理器的进程在同等优先级的进程队列中,使用FCFS算法调度1)UNIX进程控制的层次结构从系统启动开始,进程创建和控制具有层次性结构引导核心创建0#0#创建1#终端n终端1终端2…………UNIX中的两个特殊进程:♦0#进程由内核程序创建,初始化时创建1#进程系统引导完成后,负责调度分配处理器管理中负责进程调度与交换♦1#进程是所有用户进程的祖先进程2)用户进程的创建机制用户注册chswcchsls用户注销chschschschschs注意:用户创建的进程树以1#进程为根2.UNIX中的进程描述UNIX进程上下文划分为:Proc结构和user结构用户栈、核心栈正文段、数据段Proc结构User结构系统栈用户栈数据段正文段PCB1)proc结构进程最基本信息,包括:进程状态进程用户标识进程标识进程存储大小进程调度参数软中断信号项执行时间及资源使用User结构起始址进程页表指针被挂起事件描述2)use结构是进程的私有信息和数据指向proc的指针系统调用参数与用户标识有关项与文件结构有关项输入输出项打开文件描述符中断及软中断参数错误信息各段长度文件权限屏蔽项交换数据项3)寄存器的内容,如:PC的内容PSW内容栈指针内容通用寄存器内容4)进程中的三个主要区段共享正文段数据段栈段命令执行和进程属性外部命令sort在shell中的执行过程:shshshsortshfork执行sort父父子1步2步3步父命令执行时系统创建进程过程实例:%psPid

ttytimecmd15672pts/01:03-csh%sh$echothisisbourneshell.Thisisbourneshell.$ksh$echothisiskornshell.Thisiskornshell.$psPid

ttytimecmd15672pts/01:03–cshpst/01:05shpst/01:06ksh$^D$^D%2.进程属性了解进程属性可以更好的管理和调整用户的工作。用ps命令可以查阅系统中运行的进程属性.(不同版本略有不同)ps[options]----------作用:报告进程状态常用选项:-a------显示除登录shell以外所有运行在该终端上的进程信息-e------显示系统中所有运行进程的信息-l-------进程信息按长列表方式显示-uuidlist-------显示所有属于uidlist中用户的进程信息长列表中包括的进程属性:F:进程标志位S:进程状态(是否运行,等待事件,就绪等) UID:用户ID PID:进程ID PPID:父进程ID C:CPU的利用率 PRI:进程优先数 ADDR:进程在内存或磁盘的地址 SZ:占用主存空间大小,按块 WCHAN:等待位 TTY:终端 TIME:进程运行或在sleep或停止前运行时间 CMD:命令,引起这个进程的命令列表.UNIX进程调度与管理进程状态是proc中的一组数据,systemV有九种状态。1进程状态及状态转换1)用户态下的执行态2)核心态下的执行态3)内存就绪态4)外存就绪态5)内存中的睡眠6)外存睡眠7)被跟踪态8)初始态9)僵死态UNIX状态转换关系进程状态间转换的几条规定:进程可在用户态及核心态下运行进程i核心态用户态中断/系统调用重置PSW对就绪进程的两种处理方法内存就绪进程参与竞争,外存就绪应先换入内存。由0#进程管理。有些状态只能做单向转换内存睡眠的进程可调出到外存睡眠,而外存睡眠的进程不能调入到内存睡眠,外存睡眠的进程在被唤醒时只能进入外存就绪态,等待下一次的调度时再进入内存,转换是单向的。2.进程调度程序1)进程调度程序主要责任对参与竞争CPU且已备执行条件的进程进行分析和裁决对选中的进程做CPU控制权转交管理进程运行中各种状态的转换完成进程在系统内外存之间的交换2)调度原理采用:动态优先级多级反馈循环调度法(RoundRobinWithMultipleFeedback).调度原理:*)给进程分配一个时间片*)时间片结束时计算进程优先级

*)

用优先数做比较,选出高优先级进程

*)分析情况重置状态

*)调度高优先级进程开始运行

*)被抢夺了cpu的进程反馈到相应的优先级队列中3)调度时机UNIX中有两种调度时机:a)进程自动放弃CPUb)进程由核心态转为用户态时说明:具体调度由0#进程中的switch程序完成。且第二种调度时机特点是:综合考虑减少系统设计复杂度及实际运行中的可行性。第一种调度时机是可预见的,插入switch很容易。4)调度标志的设置三种调度标志:Runrun---请求cpu调度Runin---请求换入内存的调度标志Runout---请求换出内存的标志5)调度策略及优先级计算UnixsysV采用动态优先数调度策略,并且规定优先数越大,其优先级越低。优先数计算公式:P-pri=P-cpu/2+PUSER+P-nice+NZERO其中:PUSER,NZERO—是优先数基值;P-cpu—是每个进程最近一次使用CPU的时间;P-nice—是用户设置的进程优先数偏置值。普通用户只可使用nice加大优先数%nice-5myprog&公式分析:对于新创建的进程由于P-cpu/2=0,所以其优先数会最小。因此会比较快的得到调度。对于原有进程a)当被调度时:随着进程被调度执行,其P-cpu的值不断增加,会被其它进程抢先;b)当不被调度时:由于公式中P-cpu是被一个常数“2”所除,因此每当计算优先数时,早先被调度过的P-cpu/2项会衰减。因此当优先数小于当前进程和其它进程时,又会重新抢占CPU。进程调度的实现实质上是完成进程之间上下文(映象)的切换。分三步完成:第一步:检查是否做且系统允许做上下文切换,若条件满足,则保存:进程中各段内容(数据,正文,栈)有关寄存器中内容相关的栈指针否则返回有关信息,不作调度。6)进程调度的实现过程第二步:0号进程选取就绪队列中一个优先级最高的进程使之占有CPU;若没有满足条件的进程存在,0号进程循环等待直到条件满足为止。第三步:被选中的进程变为当前进程。系统从它的核心栈或user结构中恢复该进程的有关寄存器内容和栈指针,新进程开始执行。进程管理的系统调用1.系统调用控制进程的产生、运行、消亡Unix中进程是由系统调用fork创建的实体。调用fork的是父进程,由fork创建的是子进程。一个进程可以有多个子进程,但只有一个父进程。父子进程的关系图示如下:parentzombchildchildparentwaitforkexecexit2.进程的创建进程创建:fork()调用格式:pid=fork();若调用失败,pid=-1若调用成功,返回子进程pid的值(pid>=0)及proc结构中的某些参数;此时子进程得到的返回值是0,且子进程是父进程的副本。在创建进程时,Unix的核心程序为fork完成:1)在进程表中为子进程分配proc结构;2)给子进程赋唯一的标识符pid;3)复制父进程上下文的一个逻辑副本;4)增加父进程的文件表、索引节点表的引用数;5)为父进程返回子进程的标识符pid;为子进程返回标识符0。分析运行结果可发现子进程的存在!3.终止进程:exit使用exit系统调用,可以终止进程的运行.核心程序使进程进入僵死态并释放它所占有的资源:关闭所有打开的文件;撤除进程上下文占有的内存。Exit的调用方式为:exit(satus);注意:程序中使用Return和exit的区别,return是函数结束的返回,而exit是进程结束的返回。孤儿进程及僵死进程的处理孤儿进程当子进程的父进程终止后,该子进程就变成了孤儿进程(orphanprocess)。孤儿进程由1(init)号进程收养。父进程终止后,子进程变成后台进程。2)僵死进程子进程被创建并工作完成后,等待父进程回收时变为僵死进程.父进程使用wait回收子进程.孤儿进程由init进程中的特定机制回收.4.指定进程执行另一程序的系统调用exec系统调用功能是:用一可执行程序副本覆盖调用程序的正文段和数据段,并用调用进程提供的参数执行新的代码段。例:main(){……

printf(“one\n”);execl(“/bin/ls”,”ls”,0);

printf(“two\n”);

perror(“execerror”);}程序执行情况:1)execl调用成功时,只输出“one”,然后用ls的执行结果覆盖后面的程序代码;2)execl调用失败时,输出:oneTwoexecerror:No

sushfileordirectoryexec系统调用的基本格式:execve(pathname,argv,envp);pathname:要执行文件的路径名;argv:字符指针数组,是可执行程序的参数;envp:字符指针数组,指示执行程序的环境。Exec有六种调用方式:exec的六种调用方式:execve

execleexecvp

execvexecl

execlp它们以后两个字母区别调用方式:l:长格式调用,每个参数指针独立传递并以空指针0结束;

例子1v:用argv指针数组传递运行参数;否则每个命令行参数是单个参数.

例子2e:从envp指针数组传递环境参数;否则用现有环境变量复制新程序环境.p:在PATH指定的目录中搜索指定的文件,否则在当前目录中搜索。例1:execl(“/bin.ls”,”ls”,”-l”,”abc.c”,0);例2:main(argc,argv)

intargc; char*argv[]; { if(argc<2) {

printf(“youforgottotypeyourname\n”); exit(0); } printf(“Hello%s”argv[1]); }execv(“pathname”,argv[0],argv[1],argv[2],0);

返回5.进程的同步:wait系统调用wait,可使进程与其执行的子进程的终止点同步并回收子进程。调用格式:

pid=wait(stat_addr);其中

pid:子进程的pid号

tat_addr:是子进程结束时返回的状态信息的地址。注意:调用wait的进程会出现的情况:阻塞(

温馨提示

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

评论

0/150

提交评论