《《UNIX内核分析》课件.ppt》由会员分享,可在线阅读,更多相关《《UNIX内核分析》课件.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、UNIX UNIX 内核分析内核分析参考教材:参考教材:UNIX操作系统教程 尤晋元西安电子科技大学出版社前前 序序 UNIX系统1969年诞生,以其特有的简洁性和开放性获得赞同与青睐,已经被移植到数十种硬件平台上。UNIXUNIX是通用的,交互式的分时系统。是通用的,交互式的分时系统。是通用的,交互式的分时系统。是通用的,交互式的分时系统。UNIX系统已远远超出一个OS软件所起的作用,它在方方面面潜移默化地影响着人们对软件的设计和开发,其蕴含的设计思想至今仍然是十分值得借鉴的。UNIXUNIX系统特点系统特点n已有技术的精选、提炼和发展,简洁实用,短小精已有技术的精选、提炼和发展,简洁实用,
2、短小精悍,功能强大悍,功能强大n具有分层、可装卸的文件卷系统具有分层、可装卸的文件卷系统n任何一个程序可不加改变地在前台任何一个程序可不加改变地在前台/后台异步运行后台异步运行n将文件、目录和设备均统一看作文件将文件、目录和设备均统一看作文件n提供提供I/O缓冲技术缓冲技术n提供功能完备、使用灵活的命令语言提供功能完备、使用灵活的命令语言n丰富的核外系统程序丰富的核外系统程序n采用高级语言编写,可移植性好采用高级语言编写,可移植性好UNIXUNIX系统结构系统结构进程控制子系统进程控制子系统进程通信调 度存储管理文件子系统文件子系统高速缓存字符设备块设备设备驱动程序系统调用接口系统调用接口硬件
3、控制硬件控制库函数用户程序核核心心级级用用户户级级UNIXUNIX核心源程序结构核心源程序结构 以以UNIX V6为例,其内核源程序约一万行,按编译为例,其内核源程序约一万行,按编译方式大致分方式大致分3类类44个文件:个文件:n.c文件文件:28个文件,个文件,190个可单独编译的子程序个可单独编译的子程序n.h文件文件:全局变量,:全局变量,14个文件个文件n.s文件文件:汇编程序文件,约:汇编程序文件,约1000条,条,2个文件个文件33个个子程序子程序进程描述进程描述 程序状态字和通用寄存器程序状态字和通用寄存器nPDP-11程序状态字组成15151414131312121111101
4、09 98 87 76 65 54 43 32 21 10 0当前态以前态优先级/8级TNZVCn进程分Kernel/User 2种运行状态,区别n进程处于不同地址空间:核心态/用户态空间n可否执行特权指令n使用不同的栈顶指针寄存器r6进程描述进程描述 程序状态字和通用寄存器程序状态字和通用寄存器n通用寄存器通用寄存器 PDP-11/40有有9个通用寄存器,长度个通用寄存器,长度16位,编号位,编号r0-r7nr0-r1:I/O参数传递参数传递nr2-r4:存放过程执行时的局部变量:存放过程执行时的局部变量n r5:环境指针:环境指针n r6:堆栈指针,:堆栈指针,kernel/user态各态
5、各1个个n r7:PC进程描述进程描述 进程与映像进程与映像(Process&Image)n进程是映像的执行进程是映像的执行n映像是计算机的执行环境,一个映像包括映像是计算机的执行环境,一个映像包括n存储映像存储映像n通用寄存器的值通用寄存器的值n打开文件的状态打开文件的状态n当前目录当前目录n其他信息其他信息进程描述进程描述 进程的存储影响进程的存储影响n进程映像中最为关键的部分是存储映像。进程映像中最为关键的部分是存储映像。n存储映像由存储映像由5部分组成:部分组成:n进程控制块进程控制块PCBn共享正文段共享正文段n数据段数据段n共享内存段共享内存段n工作区工作区进程控制块进程控制块PC
6、BPCBnUnix为了节省为了节省PCB所占主存,所占主存,PCB分为分为2部分部分n常驻内存部分:常驻内存部分:Proc结构。包含进程调度必须的信息;结构。包含进程调度必须的信息;n非常驻内存部分:非常驻内存部分:User结构。包含进程运行时才要用到的结构。包含进程运行时才要用到的更多其他信息,它随用户程序和数据部分更多其他信息,它随用户程序和数据部分换进换进/换出换出主存。主存。User区的字段只能由正在运行的进程存取。即只有占用区的字段只能由正在运行的进程存取。即只有占用CPU的进程才能访问属于当前进程的私有的进程才能访问属于当前进程的私有User区。区。n整个系统有一个进程表,称为整个
7、系统有一个进程表,称为Proc数组。数组。Unix系统系统最多有最多有50个进程;个进程;n每个进程有专用的每个进程有专用的User区,但核心根据进程页表,区,但核心根据进程页表,通过地址映射机构,可访问当前进程的通过地址映射机构,可访问当前进程的User区。区。(好好像系统中仅有一个像系统中仅有一个User区区)共享正文段共享正文段n是指可由多个进程共享的区域,包括是指可由多个进程共享的区域,包括n纯代码形式的程序纯代码形式的程序n参数参数n一个进程的正文段也可以不存在一个进程的正文段也可以不存在数据段数据段n指进程执行时用到的数据,包括指进程执行时用到的数据,包括n外部变量外部变量n静态局
8、部变量静态局部变量n常数常数n如果进程执行的程序为非共享的,也可以构如果进程执行的程序为非共享的,也可以构成数据段的一部分,可被用户态进程读、写、成数据段的一部分,可被用户态进程读、写、执行执行工作区工作区n进程的用户栈和核心栈分别为进程用户态和进程的用户栈和核心栈分别为进程用户态和核心态下运行的工作区核心态下运行的工作区n用于函数调用时的常数传递,现场保留,返用于函数调用时的常数传递,现场保留,返回地址保存,局部变量存储等回地址保存,局部变量存储等进程映像在存储器中的分布进程映像在存储器中的分布nPDP-11/40最多配置最多配置248K内存,进程映像分为常内存,进程映像分为常驻驻/非常驻内
9、存部分非常驻内存部分n常驻部分:常驻部分:Proc,共享正文段的控制信息块,共享正文段的控制信息块n非常驻部分:数据段,共享正文段,工作区。非常驻部分:数据段,共享正文段,工作区。nUnix将除了共享正文段以外的其他部分作为一个整将除了共享正文段以外的其他部分作为一个整体处理,体处理,(结构见下页结构见下页)n无论在主存还是在盘交换区,该部分占用连续存储区无论在主存还是在盘交换区,该部分占用连续存储区n作为整体入作为整体入/出主存出主存nUnix设置设置text数组数组(共共40个元素个元素)管理所有可共享正管理所有可共享正文段,表目内容主要有:共享正文段外存地址,段文段,表目内容主要有:共享
10、正文段外存地址,段长度,共享该段的进程数等长度,共享该段的进程数等非常驻部分的分布结构非常驻部分的分布结构nppda区只有核心态进程可以访问User结构系统栈区用户程序/数据段用户栈区底部底部/02891024顶部顶部进程数据区进程数据区/ppdaPer Process Data Area进程的数据结构进程的数据结构 进程的基本控制块进程的基本控制块/Proc结构结构Struct proc(主要部分主要部分)int p-pid;/*唯一标识一个进程的整数:唯一标识一个进程的整数:0 215-1 int p-ppid;/*父进程标识数父进程标识数 char p-uid;/*用户标识符用户标识符U
11、ID,由高级用户分配,由高级用户分配 char p-stat;/*进程当前状态进程当前状态 char p-flag;/*表示进程映像是否在主存表示进程映像是否在主存/盘交换区盘交换区 char p-pri;/*-100+127。值越小,优先权越高。值越小,优先权越高 char p-time;/*调度驻留时间:进程映像最近一次入调度驻留时间:进程映像最近一次入/出主存后的时间出主存后的时间 char p-cpu /*CPU使用情况使用情况 char p-nice;/*偏置值:计算进程优先权时使用,可由用户设置偏置值:计算进程优先权时使用,可由用户设置 char p-sig;/*进程接收的信号类型
12、数:进程接收的信号类型数:0 19,0 13系统定义系统定义 int p-addr;/*ppda区的起址区的起址(单位是字符块数单位是字符块数):内存:内存64B/块,外存块,外存512B/块块 int p-size;/*除共享正文段外,可交换映像长度除共享正文段外,可交换映像长度 int p-wchan;/*睡眠原因:原因消失,则唤醒睡眠原因:原因消失,则唤醒 int p-textp;/*指向指向text结构的指针结构的指针 procNproc;/*Nproc是系统可容纳的最大进程数是系统可容纳的最大进程数/50进程的数据结构进程的数据结构 进程的扩充控制块进程的扩充控制块/User结构结构
13、(1)n每个进程每个进程User结构的虚拟起始地址都是结构的虚拟起始地址都是u=14000。操作系统通过编译、链接给操作系统通过编译、链接给u变量赋值,其地址空变量赋值,其地址空间对应核心空间第间对应核心空间第7页,其物理地址可以映射到主页,其物理地址可以映射到主存中各进程的存中各进程的user结构。结构。nUser结构含有当进程换出内存候不需要访问的所有结构含有当进程换出内存候不需要访问的所有数据数据进程的数据结构进程的数据结构 进程的扩充控制块进程的扩充控制块/User结构结构(2)Struct user(主要部分主要部分)int u-rsav2;/*调度进程的正常保留区:调度进程的正常保
14、留区:r5,r6 int u-qsav2;/*中止系统调用的越级返回保留区中止系统调用的越级返回保留区 int u-ssav2;/*fork时恢复子进程运行的保留区时恢复子进程运行的保留区 char u-segflg;/*I/O标志,标志,0/1/2分别为:用户数据分别为:用户数据/系统系统/用户指令空间用户指令空间 char u-error;/*出错返回码出错返回码 char u-uid;/*有效用户标识号有效用户标识号 char u-gid;/*有效用户组标识号有效用户组标识号 char u-ruid /*实际用户标识号实际用户标识号 char u-rgid;/*实际用户组标识号实际用户组
15、标识号 int u-procp;/*指向本进程的指向本进程的proc结构指针结构指针 char*u-base;/*I/O基址,文件传输中表示主存地址,基址,文件传输中表示主存地址,R/W-目标目标/信息源指针信息源指针 char*u-count;/*I/O字节数字节数 char*u-offset2;/*文件传输中表示文件内相对位移量文件传输中表示文件内相对位移量(字节字节)char*u-cdir;/*当前目录项当前目录项i节点指针节点指针 char u-dbufDIRSIZE;/*保留当前用到的文件路径名保留当前用到的文件路径名 char*u-dirp;/*当前目录文件名指针当前目录文件名指针
16、进程的数据结构进程的数据结构 进程的扩充控制块进程的扩充控制块/User结构结构(3)Struct int u-ino /*i结点号结点号 /*该结构保存一个文件目录项该结构保存一个文件目录项 char u-nameDIRSIZE;/*该文件路径名分量该文件路径名分量 u-dent;int*u-pdir;/*父目录项父目录项i结点指针结点指针 char u-uisa16;/*存放本进程用户空间地址寄存器内容存放本进程用户空间地址寄存器内容 char u-uisd16;/*存放本进程用户空间说明寄存器内容存放本进程用户空间说明寄存器内容 char u-ofileNOFILE;/*用户打开文件表,
17、共用户打开文件表,共15个表目个表目 char u-arg5;/*用户传入的自变量用户传入的自变量 char u-tsize /*本进程正文段块数本进程正文段块数 char u-dsize;/*本进程数据段块数本进程数据段块数 int u-ssize;/*本进程堆栈段块数本进程堆栈段块数 char u-signalNSIG;/*软中断处理程序入口表,软中断处理程序入口表,20个表目个表目 char u-utime;/*进程用户态下运行时间进程用户态下运行时间 char u-stime;/*进程核心态下运行时间进程核心态下运行时间 char u-cutime;/*已中止子进程用户态下运行时间总和
18、已中止子进程用户态下运行时间总和 char u-cstime;/*已中止子进程核心态下运行时间总和已中止子进程核心态下运行时间总和 char u-intflag;/*系统调用是否执行完成标志系统调用是否执行完成标志u;进程的数据结构进程的数据结构 共享正文段共享正文段/text结构结构Struct text int x-daddr;/*共享正文段在盘交换区的起始地址共享正文段在盘交换区的起始地址 int x-caddr;/*共享正文段在内存中的起始块号共享正文段在内存中的起始块号(*64=起始地址起始地址)int x-size;/*共享正文段长度共享正文段长度 char x-count /*共
19、享该正文段的进程数共享该正文段的进程数 char x-ccount;/*共享该正文段,且映像在内存的进程数共享该正文段,且映像在内存的进程数 int*x-iptr;/*指向正文段所在文件的指向正文段所在文件的inode指针指针 textNTEXT;n一般一般NTEXT=40n如果有某正文段的共享进程映像在内存中,则该共享正文段一定在内存中如果有某正文段的共享进程映像在内存中,则该共享正文段一定在内存中进程映像的基本结构图进程映像的基本结构图p-addrp-sizep-textpx-daddrx-caddrx-iptr 共享共享正文段正文段 user核心栈核心栈数据段数据段用户栈用户栈ppdau
20、-dsizeu-ssizeProctextfileinode盘交换区盘交换区P-sizex-sizeProcntextm进程的状态进程的状态n进程在其生命周期的不同时刻有不同状态;同一时刻不同进程有进程在其生命周期的不同时刻有不同状态;同一时刻不同进程有不同状态不同状态nUnix系统中,进城的完整状态有系统中,进城的完整状态有9种。种。(转换图见下一页转换图见下一页)创建状态创建状态 内存就绪内存就绪 就绪且换出:新创建就绪且换出:新创建/原就绪进程,因内存紧张而换出原就绪进程,因内存紧张而换出 核心态执行核心态执行 用户态执行用户态执行 内存中睡眠:执行内存中睡眠:执行I/O操作进程,等待操
21、作进程,等待 睡眠且换出:内存紧张时,睡眠进程首先被换出睡眠且换出:内存紧张时,睡眠进程首先被换出 被剥夺状态:进程被调度程序剥夺了处理机后的状态被剥夺状态:进程被调度程序剥夺了处理机后的状态 僵死状态:类似于中止状态僵死状态:类似于中止状态进程状态转换图进程状态转换图被剥夺被剥夺485926371内存内存外存外存盘交换区盘交换区内存足内存足内存不足内存不足调度调度exit中断中断/返回返回中断中断返回返回返回用户态返回用户态睡眠睡眠/唤醒唤醒睡眠睡眠fork调度调度调度调度唤醒唤醒被剥被剥夺态夺态进程状态转换说明进程状态转换说明n进程执行系统调用、进程执行系统调用、I/O终端、时钟中断后,进
22、入终端、时钟中断后,进入核心态运行。核心态运行。2种不同状态运行的主要差别:种不同状态运行的主要差别:n进程访问的内存空间的对象受到限制。进程访问的内存空间的对象受到限制。n核心态运行时,不允许被剥夺;而用户态运行可以被剥夺核心态运行时,不允许被剥夺;而用户态运行可以被剥夺(核心态运行完成,欲返回用户态时可被剥夺核心态运行完成,欲返回用户态时可被剥夺);核心态运;核心态运行时,可被高优先级核心态进程中断。行时,可被高优先级核心态进程中断。n就绪与被剥夺就绪与被剥夺(preempted)状态是等效的,他们在状态是等效的,他们在同一队列等待再次调度同一队列等待再次调度n处于运行状态的进程包括:正在
23、处理机上执行和就处于运行状态的进程包括:正在处理机上执行和就绪队列进程绪队列进程 进程上下文进程上下文n进程上下文由三部分组成:进程上下文由三部分组成:n用户级上下文:正文,数据,堆栈,共享内存段用户级上下文:正文,数据,堆栈,共享内存段n寄存器上下文:寄存器上下文:PC,PS,SP,r0,n系统级上下文:系统级上下文:Proc,User,核心栈核心栈n上下文切换时,要保证内部数据的完整性和一致性。上下文切换时,要保证内部数据的完整性和一致性。所以切换有严格的条件:所以切换有严格的条件:n当进程是自己进入睡眠时当进程是自己进入睡眠时n系统调用系统调用/中断完成返回用户态而被剥夺中断完成返回用户
24、态而被剥夺n以以exit退出时退出时Q:进程从用户态到核心态切换时,是否为上下文切换进程从用户态到核心态切换时,是否为上下文切换?进程管理进程管理 Unix进程的各种调度状态进程的各种调度状态(1)nUnix V6中进程的调度状态有中进程的调度状态有6种,由种,由p-stat描述。描述。n1 SSLEEP:高优先权睡眠状态:高优先权睡眠状态n2 SWAIT:低优先权睡眠状态低优先权睡眠状态n3 SRUN:运行运行/可运行状态可运行状态n4 SIDL:创建子进程的中间状态创建子进程的中间状态n5 SZOMB:进程终止时的中间状态:进程终止时的中间状态n6 SSTOP:暂停暂停/正被跟踪状态正被跟
25、踪状态进程管理进程管理 Unix进程的各种调度状态进程的各种调度状态(2)n进程标志进程标志p-flag定义为:定义为:n#define SLOAD 01 映像在内存映像在内存n#define SSYS 02 系统进程,应常驻内存系统进程,应常驻内存n#define SLOCK 04 进程不能换出进程不能换出n#define SSWAP 010 进程正被对换进程正被对换n#define STRC 020 进程正被跟踪进程正被跟踪n#define STWED 040 另一跟踪标志另一跟踪标志进程管理进程管理 运行状态运行状态(运行运行/就绪就绪)n当前运行进程,特点:当前运行进程,特点:nP-s
26、tat 为为SRUNnP-flag 包含包含SLOAD标志标志nKISA6,KISD6指向该进程指向该进程ppda区区n可以在核心可以在核心/用户态运行,所处存储区位置不同用户态运行,所处存储区位置不同n就绪进程,特点:就绪进程,特点:nP-stat 为为SRUNnP-flag 可能包含可能包含SLOAD标志,也可能不包含标志,也可能不包含nppda区不是核心态第区不是核心态第6页页n运行运行-就绪通过系统进程就绪通过系统进程swtch完成,所以转换首先完成,所以转换首先一定是处于核心态一定是处于核心态进程管理进程管理睡眠状态睡眠状态n等待时间发生而停止运行的一种状态,特点:nP-stat 为
27、为SSLEEP或或SWAIT,不参与竞争处理机,不参与竞争处理机nP-flag 可能包含可能包含SLOAD标志,也可能不包含标志,也可能不包含nKISA6,KISD6不反映进程图像在内存的位置不反映进程图像在内存的位置n睡眠原因:进程间同步与互斥引起睡眠原因:进程间同步与互斥引起n使用互斥资源无法满足使用互斥资源无法满足n同步等待同步等待I/O结束结束n同步等待出现处理对象,如同步等待出现处理对象,如0#进程进程/sched暂时没有处理对象暂时没有处理对象n进程间的其他同步操作,进程间的其他同步操作,sleep(),wait().n临界区互斥临界区互斥进程管理进程管理 高低优先权高低优先权睡眠
28、状态睡眠状态n核心态下执行核心态下执行sleep进入睡眠状态进入睡眠状态nP-pri由系统按照睡眠原因设置,由系统按照睡眠原因设置,-100-+127nSSLEEP:P-pri0,低优先权睡眠,低优先权睡眠n父子进程同步:父子进程同步:40n等低速设备等低速设备I/O:10-20n唤醒:唤醒:wakeup程序完成,唤醒后程序完成,唤醒后P-pri127)p=127;if(pcurpri)runrun+;/*curpri:现行运行进程被调度占用处理机时的优先数现行运行进程被调度占用处理机时的优先数 /*runrun:进程调度标志,为进程调度标志,为0表示不要求进行切换调度表示不要求进行切换调度
29、ppp-pri=p;进程调度算法进程调度算法关于关于p-nicen P-nice反映进程具有的相对优先程度反映进程具有的相对优先程度n 一般用户可设置范围:一般用户可设置范围:020;高级用户:;高级用户:-12820n 通过系统调用通过系统调用nice(priority)完成设置,代码:完成设置,代码:register n;n=u.uar0R0;/*u.uar0R0保存系统调用参数保存系统调用参数 if(n20)n=20;if(n0低优先权低优先权n主要工作:主要工作:n设置欲睡眠进程的设置欲睡眠进程的p-whan/原因原因,p-stat,p-pri,并调用,并调用swtch进行调度进行调度
30、nrpp-wchan=chan;nrpp-stat=SSLEEP/SWAIT;nrpp-pri=prin设置过程执行语句为临界区,执行前处理既优先级提设置过程执行语句为临界区,执行前处理既优先级提高为高为6级级(避免中断避免中断)进程睡眠进程睡眠sleep()n说明说明n若进程欲进入低优先权睡眠,首先应检测是否收若进程欲进入低优先权睡眠,首先应检测是否收到不可忽略的信号到不可忽略的信号p-flag。如果收到,先转去执。如果收到,先转去执行信号处理程序;行信号处理程序;n系统设置系统设置runrun标志,说明是否有在盘交换区的标志,说明是否有在盘交换区的进程准备就绪而因内存不足无法进入。进程准备
31、就绪而因内存不足无法进入。n若若runrun已经设置,则将低优先级睡眠进程入盘已经设置,则将低优先级睡眠进程入盘交换区,并调用交换区,并调用sched.睡眠唤醒睡眠唤醒wakeup()nwakeup(chan)唤醒因唤醒因chan原因睡眠的进程,并将原因睡眠的进程,并将其状态置为其状态置为SRUNn主要工作:搜索主要工作:搜索proc区,由区,由setrun唤醒所有因唤醒所有因chan睡眠的进程:睡眠的进程:p-wchan=0;p-stat=SRUNn说明:说明:n系统设置系统设置runout标志,表示盘交换区无进程图像标志,表示盘交换区无进程图像可入内存。若可入内存。若runout=1,则执
32、行则执行sched的的0#进进程睡眠,否则唤醒。程睡眠,否则唤醒。进程图像在内存进程图像在内存/盘交换区间传递盘交换区间传递n图像传递由图像传递由0#进程调用进程调用sched完成完成n图像入内存算法:图像入内存算法:sched按照盘交换区中就绪进程按照盘交换区中就绪进程p-time,从长到短逐个调入内存,直到全部调入,或者,从长到短逐个调入内存,直到全部调入,或者无足够内存无足够内存n图像出内存算法:若调入进程因内存不足无法调入时,图像出内存算法:若调入进程因内存不足无法调入时,sched试图从内存调出一进程,然后再次执行调入操试图从内存调出一进程,然后再次执行调入操作。作。调出算法考虑因素
33、调出算法考虑因素n某些进程不应该被调出:某些进程不应该被调出:nP-flag为为SSYS和和SLOCK的进程的进程n优先调出:优先调出:p-stat为为SWAIT和和SSTOP的进程。的进程。n若上述优先进程,则优先考虑:若上述优先进程,则优先考虑:np-stat为为SSLEEP或或SRUN中在内存驻留时间最长中在内存驻留时间最长/p-time的进程。的进程。n同时要求:内存被选中进程同时要求:内存被选中进程p-time2s 盘交换区欲入内存进程盘交换区欲入内存进程p-time3s 否则,不执行调出操作否则,不执行调出操作进程的创建进程的创建nUnix进程创建有进程创建有2种方种方式式n预置方
34、式:系统初启时预置方式:系统初启时预置预置0#,0#进程创建进程创建1#进程,进程,1#进程又为进程又为每个终端生成一个子进每个终端生成一个子进程程(p20、p21、p2m)n创建方式:由创建方式:由newproc/fork创建创建(除除0#进程进程)n进程的树形结构进程的树形结构P0P1P20P2iP2mP30P310#图像传送和调度进程图像传送和调度进程1#终端管理进程终端管理进程P2i管理用户登记和执行管理用户登记和执行shell创建进程的基本任务和方式创建进程的基本任务和方式n基本任务:基本任务:n为新进程构造一个图像:为新进程构造一个图像:proc,user,text,数据段数据段,
35、栈段栈段 n新进程创建后即成为系统的一个调度单位新进程创建后即成为系统的一个调度单位n基本方式:基本方式:n除了与进程状态、标识以及与时间有关的少数除了与进程状态、标识以及与时间有关的少数控制项外,子进程复制或共享父进程的图像控制项外,子进程复制或共享父进程的图像n进程创建程序进程创建程序newproc的工作原理见下页的工作原理见下页newproc的工作原理的工作原理(1)Newproc()为子进程分配空闲为子进程分配空闲proc结构结构设置子进程设置子进程proc结构:结构:P-stat=SRUN;P-flag=SLOAD;P-time=0;P-pid=分配到的标识数;分配到的标识数;P-p
36、pid=父进程标识数;父进程标识数;P-size,p-uid,p-ttyp,p-nice,p-textp从父进程复制从父进程复制将打开共享正文段等将打开共享正文段等访问计数访问计数+1将将r5,r6存入存入u-rsav(savu(u.u-rsav)父进程父进程u-procp指向指向新进程的新进程的proc结构结构按照按照p-size申请内存申请内存(malloc(coremap,n)newproc的工作原理的工作原理(2)成功?成功?将父进程可调出部分将父进程可调出部分图像复制到新分配内图像复制到新分配内存,新子进程存,新子进程p-addr指向该区指向该区恢复父进程为现运行恢复父进程为现运行进程进程(u-procp恢复志恢复志向父进程向父进程proc)返回返回将父进程将父进程p-stat设置为设置为SIDL,防止被调出,并避免被调度,防止被调出,并避免被调度子进程子进程p-addr=父进程父进程p-addr将将r5,r6存入存入u-rsav将现运行进程将现运行进程/即新子进程即新子进程图像的可调出部分入盘交换图像的可调出部分入盘交换区,清区,清SLOAD标志标志子进程子进程p-flag增设增设SSWAP,父进程恢复为父进程恢复为SRUN状态状态YN