1(一)UNIX操作系统的类型(二)UNIX操作系统的界面(三)UNIX系统的进程(四)UNIX系统进程调度算法(五)UNIX系统的存储管理(六)UNIX系统的设备管理(七)UNIX系统的文件系统第十章UNIX操作系统2(一)UNIX操作系统概述一.UNIX操作系统的类型UNIX操作系统是一个交互式的多用户分时系统。二.UNIX操作系统的特点1.移植性好2.配置灵活3.良好的界面4.安全机制较为完善5.网络功能比较完备3三.UNIX操作系统的结构1.UNIX系统体系结构42.UNIX核心结构系统调用界面程序库进程控制子系统进程通信进程调度存储管理文件子系统高速缓冲字符设备块设备设备驱动程序用户程序硬件控制硬件5(二)UNIX用户界面一.UNIX操作系统提供的用户界面1.键盘命令——shell2.系统调用二.shell概述shell不仅是命令语言,也是一种程序设计语言。1.命令语言shell称为命令解释程序。用户利用shell提供的一组操作命令,与操作系统核心进行通信2.程序设计语言shell具有程序设计语言的特点:具有控制语句、循环语句、参数传递、变量和字符替换等;具有子程序调用及中断处理能力。6三.UNIX的系统调用1.有关进程管理的系统调用如:fork:建立一个进程execwait:等待子进程exit:2.与文件和外设管理有关的系统调用如:open:打开文件closeread:writelseek:修改读写指针creat:建立并打开文件3.与系统状态有关的系统调用如:getuidsetuidgetgid:取用户组号setgid:设置用户组号times:取进程执行时间stat:读取文件状态(i节点)7(三)UNIX系统的进程一.UNIX系统进程的定义及组成1.UNIX系统中进程映像UNIX系统中的进程又称为进程映像(image)它是如何组成的?程序、数据、PCB结构8(1)进程控制块结构基本控制块proc结构——常驻内存,有关进程的重要信息扩充控制块user结构——非常驻内存,进程运行时,才调入内存(2)程序正文段——由structtext描述proc结构中由p_textp指示。(3)数据用户数据区和用户栈与系统栈和user结构一起构成进程数据段。92.UNIX系统进程的组成进程基本控制块proc结构正文段数据段:用户栈用户数据区核心栈user结构proc正文段用户栈用户数据区核心栈user数据段ppda104.进程基本控制块proc结构的内容tructproc{charp_stat;/*进程状态*/charp_flag;/*进程特征*/charp_pri;/*进程优先数*/charp_sig;/*软中断号*/charp_uid;/*用户号*/charp_time;/*驻留时间*/charp_cpu;/*有关进程调度的时间变量*/charp_nice;/*用于计算优先数*/intp_ttyp;/*控制终端tty结构的地址*/intp_pid;/*进程号*/intp_ppid;/*父进程号*/intp_addr;/*数据段地址*/intp_size;/*数据段大小*/intp_wchan;/*等待的原因*/intp_textp;/*对应正文段的text项地址*/}proc[NPROC115.进程扩充控制块user结构的内容structuser{intu_rsav[2];/*保留现场保护区指针*/charu_segflg;/*用户/核心空间标志*/┇intu_procp;/*proc结构地址*/char*u_base;/*主存地址*/char*u_count;/*传送字节数*/char*u_offset[2];/**/int*u_cdir;/**当前目录i节点地址*/char*u_dirp;/*i节点当前指针*/intu_ofile[NOFILE];/*用户打开文件表,NOFILE=15*/intu_tsize;/*正文段大小*/intu_dsize;/*用户数据区大小*/intu_ssize;/*用户栈大小*/intu_utime;/*用户态执行时间*/intu_stime;/*核心态执行时间*/intu_cutime;/*子进程用户态执行时间*/intu_cstime;/*子进程核心态执行时间*/┇}u;12二.UNIX的进程运行环境——进程上下文1.进程上下文的内容UNIX系统称进程的运行环境为进程上下文。包括:用户地址空间——进程的代码段、数据段、用户栈、共享内存区;与该进程有关的核心数据结构——proc表、user结构、页表、核心栈;硬件寄存器的内容——进程运行时各寄存器的内容。2.UNIX系统进程的上下文具有三个不同的层次——用户级上下文寄存器上下文系统级上下文13(1)用户级上下文进程的代码、数据、共享内存、用户栈该级上下文处于进程虚地址空间在请求页式系统中,该级上下文内容不必全部进入内存。(2)系统级上下文进程表表项—每个进程的proc结构进程user结构进程区表表项、页表用于从虚地址到物理地址的转换进程核心栈14(3)寄存器级上下文进程运行时机器中各硬件寄存器的值程序计数器PC处理机状态寄存器PS栈指针SP通用寄存器组:保存进程运行过程中所产生的中间结果以上各寄存器在计算机系统中只有一组。15三.UNIX系统进程的状态及变迁1.UNIX系统进程的状态(1)进程对应的程序正在处理机上运行。状态p_stat设置为SRUN。标志p_flag中的SLOAD=1,表示该进程映像全部在主存中。核心态下的主存管理机制正指向进程数据区ppda。(2)在主存中就绪:状态p_stat设置为SRUN标志p_flag中的SLOAD=1核心态下的主存管理机制不指向该进程的ppda16就绪且换出进程处于就绪状态,但它正存放在辅存上状态p_stat设置为SRUN标志p_flag中的SLOAD=0(3)睡眠状态进程为了等待某种事件发生而被迫暂时停止前进进程因等待较紧迫的事件而进入睡眠状态。状态p_stat设置为SSLEEP标志p_flag中SLOAD=1(或=0)在什么情况下,进程进入高优先睡眠状态?0#进程睡眠时,优先数=100因请求资源得不到满足的进程,优先数=50进程请求读写快速设备时,优先数=5017低优先睡眠进程等待的事件不那么紧迫,则进入低优睡眠(或称等待)状态状态p_stat设置为SWAIT标志p_flag中的SLOAD=1(或=0)在什么情况下,进程进入低优先睡眠状态?进程在用户态下运行,进行同步操作时,优先数=90进程等待低速字符设备I/O操作而睡眠,优先数=10(4)创建状态:进程刚被创建时处于变迁状态(5)僵死状态:进程执行了系统调用exit后处于僵死(zombie)等待父进程作善后处理。其他资源都已放弃,只剩下一个记录(包含:计时统计等)等待父进程收集。182.UNIX系统进程状态的变迁运行核心态用户态中断自陷返回僵死在主存中就绪高优先睡眠在主存高优先睡眠且换出就绪且换出创建fork主存充足wakeupwakeupwakeupswtchsleepsleepexit被抢占换出换入换出换出主存不充足主存盘交换区低优先睡眠在主存低优先睡眠且换出19(四)UNIX进程调度一.UNIX进程调度算法UNIX系统采用可强占式的进程优先数调度算法。在进程调度时机来到时,总是选取优先权最高的进程去运行。二.UNIX进程优先数的确定1.设置当进程需睡眠时,设置其优先数。由不同的睡眠原因决定其大小。等待紧迫的事件,该进程的优先数设置为负值等待慢速设备I/O、进程间同步,该进程的优先数设置为正值。202.计算(1)当进程从核心态返回用户态时,或自陷返回时,系统计算该进程的优先数p_pri=(p_cpu/2)+p_nice+基值(2)在时钟中断处理程序中每隔20ms,将正在运行的进程的p_cpu计算一次,算式为p_cpu+1每隔1s,时钟中断处理程序对所有的就绪进程计算p_cpu的衰减量。算式为p_cpu/2然后,计算新的p_cpu,算式为:p_pri=(p_cpu/2)+p_nice+基值21三.UNIX进程优切换调度程序swtch算法swtch输入:无输出:无{保留现行进程的现场到其系统栈中;for(就绪队列中的每一个进程)取在主存、就绪态、优先权最高的进程;if(没有找到满足条件的进程)机器空闲等待;/*下次中断使机器脱离空闲等待状态*/将选取的进程从就绪队列中移出;切换到被选中进程的映像,恢复其运行;}22(五)UNIX系统存储管理一.UNIX系统存储管理技术UNIX系统是一个多用户交互式分时操作系统UNIX采用二种存储管理技术:1.对换技术(swap)早期采用——在内存和交换设备之间传递整个进程映像,而不是进程的一个部分。2.请求调页技术在内存和交换设备之间传递存储页,而不是整个进程的映像。23二.UNIX系统请求调页数据结构1.UNIX系统中的区和区表UNIXsystemⅤ的核心把一个进程的虚地址空间分成若干个逻辑区(region)。(1)区区是进程虚地址空间中的一段逻辑上独立的连续区域。这个区域是可被共享和保护的独立实体。区的实例——进程的正文、数据、栈段24(2)进程区表每个进程有本进程区表,称为pregion表。每个区表有若干个表项,表项的个数表示进程拥有的区的个数。区表项的内容——该区在进程中的起始虚地址该区的页表地址区的大小,即为页表的页数保护域,它指出了对应进程所允许的存取类型:只读,读/写或读/25(3)进程区表的例进程A区表类别区的起始虚地址大小和保护页表始址正文8k6数据14k18栈32k8正文区页表数据区页表栈区页表数据区页表栈区页表进程B区表类别区的起始虚地址大小和保护页表始址正文6k6数据12k14栈26k12262.UNIX系统中的页和页表UNIXsystemⅤ把一个进程的虚地址空间分成若干个逻辑区,每个区又分若干个页面。(1)页面页是UNIX进程虚地址空间的某个分区中的一个片。每个区有一个页表,说明该区中的各页所在内存块号及其他有关信息。(2)页表页表的始地址由对应的区表表项中的页表始址指示。页表的大小——页表表项的数目为页表的的大小27(3)页表内容物理块号保护位——指示该页是否允许进程读、写或执行页号块号年龄修改访问有效保护对换设备磁盘块号持请调而设的下列位域:有效位(validbit)——指示该页的内容是否有效。若为1,该页有效,即该页在主存访问位(referencebit)——指示该页最近是否被访问。修改位(modifybit)——指示最近是否有进程修改了该页的内容。年龄位(agebit)——记录该页作为一个进程的工作集中的一页有多长时间了。28二.UNIX系统的地址变换1.分页机构pw311090P字段中的最高位:确定该地址所在的区段P字段中余下的位:确定该地址在该区段中的页号W字段:确定该地址所在的区段中页对应的块号292.例:某程序地址为68432,试说明地址变换的步骤68432=65536+2048+512+256+64+160000101101010000901031p=1000010,最高为1处为64K位,说明该地址在栈区内,剩余的位说明页号,P=2。页内位移w=1101010000=848以p=2为索引查栈区页表得块号为986K最终的物理地址为986K+84830(六)UNIX系统缓冲区管理一.缓冲技术为了进一步解决CPU和I/O设备间速度不匹配的矛盾,引入了缓冲技术。1.什么是缓冲缓冲是两种不同速度的设备之间传输信息时平滑传输过程的常用手段。2.缓冲器缓冲器是用来暂时存放数据的一种存储装置,它容量较小,存取速度快。31(六)UNIX系统缓冲区管理一.UNIX系统缓冲区管理缓冲技术1.目的加快系统响应、增强系统吞吐量减少对磁盘的I/O操作次数2.主要思想当进程要从磁盘读数据时,首先考虑从高速缓冲中读当进程要写数据到磁盘时,先写入高速缓冲中