第十章
教学时数:6学时
UNIX系统内核结构
教学目的与要求:本章学习的目的是使学生了解UNIX系统内核结构,具备初步分析实际操作系统的能力。要求学生了解UNIX系统的特征及内核结构,理解UNIX系统对各种资源的管理。
教学重点:操作系统接口类型,各种接口的特点,UNIX系统中的常用接口命令、系统调用
教学难点:UNIX系统中的常用接口命令、系统调用
10.1UNIX系统概述
10.1.1UNIX系统的发展史1.UNIX系统的发展史2.两大集团对峙3.网络操作系统UNIX10.1.2UNIX系统的特征1.开放性2.多用户、多任务环境3.功能强大,实现高效4.提供了丰富的网络功能5.支持多处理器功能10.1.3UNIX系统的内核结构用户程序捕俘库函数用户级核心级系统调用接口文件子系统进程控制子系统进程间通信调度高速缓存存储管理字符设备块设备设备驱动程序硬件控制核心级硬件级硬件图10-1UNIX核心的框图1.进程控制子系统(1)进程控制。(2)进程通信。(3)存储器管理。(4)进程调度。2.文件子系统(1)文件管理。(2)高速缓冲机制。(3)设备驱动程序。10.2进程的描述和控制
10.2.1进程控制块PCB在UNIX系统Ⅴ中,把进程控制块分为四部分:(1)进程表项。(2)U区。(3)进程区表。(4)系统区表。1.进程表项(ProcessTableEntry)(1)进程标识符(PID)。(2)用户标识符(UID)。(3)进程状态。(4)事件描述符。(5)进程和U区在内存或外存的地址。(6)软中断信息。(7)计时域。(8)进程的大小。(9)偏置值nice。(10)P-Link指针。(11)指向U区进程正文、数据及栈在内存区域的指针。2.U区(UArea)(1)进程表项指针。(2)真正用户标识符u-ruid(realuserID)。(3)有效用户标识符u-euid(effectiveuserID)。(4)用户文件描述符表。(5)当前目录和当前根。(6)计时器。(7)内部I/O参数。(8)限制字段。(9)差错字段。(10)返回值。(11)信号处理数组。3.系统区表(SystemRegionTable)(1)区的类型和大小。(2)区的状态。(3)区在物理存储器中的位置。(4)引用计数。(5)指向文件索引结点的指针。4.本进程区表(PerProcessRegionTable)A进程区表正文数据栈abcdeabcdeB进程区表正文数据栈系统区表图10-2进程区表项、系统区表项和区的关系本进程区表U区系统区表abc进程表abc图10-3进程的数据结构10.2.2进程状态与进程映像1.进程状态中断中断返回僵死9睡眠内存中睡眠6换出睡眠且换出74系统调用中断5返回抢夺用户态执行返回到用户态8被抢夺核心态执行唤醒调度2换出3换入内存中就绪内存足1内存不足创建fork唤醒就绪且换出图10-4进程的状态转换2.进程映像1)用户级上下文2)寄存器上下文(1)程序寄存器。(2)处理机状态寄存器(PSR)。(3)栈指针。(4)通用寄存器。3)系统级上下文(1)静态部分。(2)动态部分。10.2.3进程控制1.fork系统调用(1)为新进程分配一个进程表项和进程标识符。(2)检查同时运行的进程数目。(3)拷贝进程表项中的数据。(4)子进程继承父进程的所有文件。(5)为子进程创建进程上下文。(6)子进程执行。2.exec系统调用图10-5execⅤ的参数组织方式3.exit系统调用通常,父进程在创建子进程时,应在进程的末尾安排一条exit,使子进程能自我终止。内核须为exit完成以下操作:(1)关闭软中断。(2)回收资源。(3)写记账信息。(4)置进程为“僵死”状态。4.wait系统调用wait系统调用用于将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wait调用前,已有子进程暂停或终止,则调用进程做适当处理后便返回。核心对wait调用做以下处理:核心查找调用进程是否还有子进程,若无,便返回出错码;如果找到一个处于“僵死”状态的子进程,便将子进程的执行时间加到其父进程的执行时间上,并释放该子进程的进程表项;如果未找到处于“僵死”状态的子进程,则调用进程便在可被中断的优先级上睡眠,等待其子进程发来软中断信号时被唤醒。10.2.4进程调度与切换1.引起进程调度的原因首先,由于UNIX系统是分时系统,因而其时钟中断处理程序须每隔一定时间,便对要求进程调度程序进行调度的标志runrun予以置位,以引起调度程序重新调度。其次,当进程执行了wait、exit及sleep等系统调用后要放弃处理机时,也会引起调度程序重新进行调度。此外,当进程执行完系统调用功能而从核心态返回到用户态时,如果系统中又出现了更高优先级的进程在等待处理机时,内核应抢占当前进程的处理机,这也会引起调度。2.调度算法进程调度,在此是采用动态优先数轮转调度算法。调度程序在进行调度时,首先从处于“内存就绪”或“被抢占”状态的进程中,选择一个其优先数最小(优先级最高)的进程。若此时系统中(同时)有多个进程都具有相同的最高优先级,则内核将选择其中处于就绪状态或被抢占状态最久的进程,将它从其所在队列中移出,并进行进程上下文的切换,恢复其运行。3.进程优先级的分类UNIX系统把进程的优先级分成两类,第一类是核心优先级,又可进一步把它分为可中断和不可中断两种。当一个软中断信号到达时,若有进程正在可中断优先级上睡眠,该进程将立即被唤醒;若有进程处于不可中断优先级上,则该进程继续睡眠。对诸如“对换”、“等待磁盘I/O”、“等待缓冲区”等几个优先级,都属于不可中断优先级;而“等待输