UNIX系统内核结构-09.ppt_第1页
UNIX系统内核结构-09.ppt_第2页
UNIX系统内核结构-09.ppt_第3页
UNIX系统内核结构-09.ppt_第4页
UNIX系统内核结构-09.ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

29.05.2020,授课教师:张雁,1,第9章UNIX系统内核结构,9.1UNIX系统概述9.2进程的描述和控制9.3进程的同步与通信9.4存储器管理9.5设备管理9.6,29.05.2020,授课教师:张雁,2,9.1UNIX系统概述,9.1.1UNIX系统的发展史,29.05.2020,授课教师:张雁,3,9.1.2UNIX系统的特征,开放性2)多用户、多任务环境3)功能强大,实现高效4)提供了丰富的网络功能5)支持多处理器功能,29.05.2020,授课教师:张雁,4,9.1.3UNIX系统的内核结构,硬件OS核心进程控制子系统(负责为将要执行的程序和数据文件分配内存空间,并负责调度、控制并发进程的执行、进程通信和内存管理)文件子系统(存放、管理暂时不被处理机执行的程序和数据,分配空间,控制文件存取和为用户检索信息)Shell接口与编译程序应用程序,29.05.2020,授课教师:张雁,5,图9-1UNIX核心的框图,29.05.2020,授课教师:张雁,6,1.进程控制子系统,进程控制(2)进程通信(3)存储器管理(4)进程调度,29.05.2020,授课教师:张雁,7,2.文件子系统,文件管理高速缓冲机制(3)设备驱动程序,29.05.2020,授课教师:张雁,8,9.2进程的描述和控制,9.2.1进程控制块PCB,在UNIX系统中,把进程控制块分为四部分:(1)进程表项(常驻内存)(2)U区(非内存区)(3)进程区表(4)系统区表,29.05.2020,授课教师:张雁,9,进程控制块(一),进程表项(Proc结构)常驻内存存放的是系统感知进程存在所必需的数据和信息进程的唯一标识U区(User结构)非常驻内存存放的是进程执行时所需的各种控制数据和信息存放在该进程的数据段中,29.05.2020,授课教师:张雁,10,进程控制块(二),系统区表区(Region)进程虚拟地址空间上的一段连续区域,它是被共享、保护以及进行内存分配和地址变换的独立实体。系统区表的内容P325本进程区表记录进程的每个区在进程中的虚地址,并通过它找到该区在物理存储器中的实地址。,29.05.2020,授课教师:张雁,11,系统区表,在系统创建新进程时,核心将从区表中分配相应的表项给所创建的进程。,29.05.2020,授课教师:张雁,12,9.2.2进程状态与进程映像,图9-4进程的状态转换,29.05.2020,授课教师:张雁,13,2.进程映像(进程实体的组成),用户级上下文(用户的程序)2)寄存器上下文(CPU的状态)程序寄存器。(2)处理机状态寄存器(PSR)。(3)栈指针。(4)通用寄存器。3)系统级上下文(OS管理该进程所用的信息)(1)静态部分。(2)动态部分。,29.05.2020,授课教师:张雁,14,进程控制,29.05.2020,授课教师:张雁,15,UNIX启动及进程树的形成,UNIX进程树,29.05.2020,授课教师:张雁,16,进程创建Fork系统调用,(1)为新进程分配一个进程表项喝酒inch标识符(2)检查同时运行的进程数目(3)拷贝进程表项中的数据(4)子进程继承父进程的所有文件(5)为子进程创建进程上下文(6)子进程执行,29.05.2020,授课教师:张雁,17,NOTES,如果是用户创建的子进程,它将继承父进程在创建时刻所拥有的全部资源,包括所有已经打开的文件和程序。子进程映像与父进程映像是存储在两个不同的地址空间中内容相同的程序副本。父进程和子进程在各自的存储空间上运行着内容相同的程序。,29.05.2020,授课教师:张雁,18,进程映像重新载入exec,Exec的功能将制定的可执行文件加载到指定的进程映像中,覆盖该进程映像中原有的程序。过程根据给定的路径名找到制定的可执行文件,检查是否是可执行加载覆盖原来的进程映像为该程序的执行设置参数和环境启动该进程进入新的程序入口点去执行,29.05.2020,授课教师:张雁,19,Example(一),创建一个子进程,并加载程序,其功能显示“Iamachild”,加载的程序路径名为./chld#include#includemain()printf(“Iamachildn”);exit(0);,chld.c,29.05.2020,授课教师:张雁,20,Example(二),#include#includemain()intp;/存放子进程pid号while(p=fork()=-1);/创建子进程if(p=0)/子进程返回exec(“./chld”,0);/加载子进程的程序else/父进程返回wait(0);/等待子进程终止exit(0);,29.05.2020,授课教师:张雁,21,进程的终止exit,内核须为exit完成以下操作:(1)关闭软中断。(2)回收资源。(3)写记账信息。(4)置进程为“僵死”状态。(5)转进程调度,29.05.2020,授课教师:张雁,22,9.2.4进程调度与切换,进程的调度由0#进程完成0#进程的组成swtch:负责处理机的分配sched:负责进程映像在内存和对换区之间的对换调度的算法多级反馈轮转调度法(基于时间片+优先级),29.05.2020,授课教师:张雁,23,调度的实现,进程调度由swtch过程实现实质完成一个进程之间的上下文切换过程过程保存当前进程的上下文从内存就绪队列中寻找一优先级最高进程将选中进程的上下文调入,29.05.2020,授课教师:张雁,24,9.3进程的同步与通信,9.3.1低级通信9.3.2管道机制9.3.3IPC,29.05.2020,授课教师:张雁,25,低级通信,低级通信主要用来传递进程间的控制信号方法原语:睡眠原语sleep和唤醒原语wakeup软中断:是通信进程之间用来模拟硬中断的一种信号通信方式。,29.05.2020,授课教师:张雁,26,软中断信号Example(一),要求:编写一个程序,循环显示字符串“Hello!”,当键盘键入Ctrl+C时终止循环,显示“OK!”后结束。#include#include#includevoidint_func(intsig);intk;voidint_func(intsig)/定义软中断处理函数k=0;,29.05.2020,授课教师:张雁,27,软中断信号Example(二),Main()signal(SIGINT,int_func);/设置软中断信号对应的处理函数k=1;/循环显示,等待键入Ctrl+C,获取该软中断信号后处理while(k=1)printf(“Hello!n”);printf(“Ok!n”);/软中断处理函数返回exit(0);,29.05.2020,授课教师:张雁,28,9.3.2管道机制,管道的类型无名管道(UnnamedPipes)2)有名管道(NamedPipes),29.05.2020,授课教师:张雁,29,无名管道与有名管道,29.05.2020,授课教师:张雁,30,Example(一),要求:父进程创建一个子进程和一个无名管道fd,由子进程向管道写入信息“Thisisamessage!”,然后终止执行;父进程接收到子进程终止信号后从管道中读出并显示信息后结束。#include#includemain()intp1,fd2;charoutpipe50;charinpipe50=“Thisisamessage!”;pipe(fd);/创建无名管道fd,29.05.2020,授课教师:张雁,31,While(p1=fork()=-1);if(p1=0)/子进程返回write(fd1,inpipe,50);/写信息到管道exit(0);else/父进程返回wait(0);/等待子进程终止read(fd0,outpipe,50);/从管道读信息printf(“%sn”,outpipe);exit(0);,Example(二),29.05.2020,授课教师:张雁,32,9.4存储器管理,内存管理概述段页式管理中的请求分页管理交换技术内存空间的分配和回收单位:页,29.05.2020,授课教师:张雁,33,交换区管理,交换进程0#进程中的交换进程sched功能对交换空间的管理进程换出进程换入交换区的管理数据结构:映射图空闲盘块的起始地址以该地址起始的可分配的连续块数采用首次适应算法,29.05.2020,授课教师:张雁,34,请求分页的数据结构,虚地址结构UNIX的区表,0,31,30,29,10,9,29.05.2020,授课教师:张雁,35,1.页表和磁盘描述表页表(每个区分配一个页表),磁盘描述表(描述一页的磁盘副本),请求分页的数据结构,29.05.2020,授课教师:张雁,36,2.页框数据表和对换使用表,图9-10页框数据表项及其散列队列,29.05.2020,授课教师:张雁,37,对换使用表,图9-11四种数据结构之间的关系,29.05.2020,授课教师:张雁,38,请求调页技术,页表有效位V=0进程要访问的页不在内存,可能在下述三种介质之一外存交换区中外存可执行文件中缓冲区的空闲队列中,29.05.2020,授课教师:张雁,39,请求调页的调入过程,29.05.2020,授课教师:张雁,40,换页进程(一),任务将页表中年龄大于某个阈值的页换出内存。工作方式当系统中可用的空闲页面少于下限阈值时,唤醒换页进程该进程首先检查每个活动的、没有封锁的区,增加所有有效页(在内存)的年龄值当某页的年龄大于阈值时,将其换出,29.05.2020,授课教师:张雁,41,换页进程(二),换页进程工作的步骤换页进程找出应该换出的内存页面,将其页号放入换出页面链表当换出页面链表中满64页时,申请交换区中的空闲空间,将64页换出好处换满64页才写盘一次,减少了写盘的次数,提高了I/O速度某个被换出的页面无论其是否换出,在没有被重新分配之前被访问时无须读盘,减少了读盘的次数。,29.05.2020,授课教师:张雁,42,换页进程(三),思考?换页进程和交换进程的区别?,Answer:交换进程换出的是进程映像中除proc结构以外的所有页面,而换页进程换出的是各个进程中年龄大的页面,而不是所有的页面。,29.05.2020,授课教师:张雁,43,9.5文件管理,9.5.1UNIX文件系统概述9.5.2文件的物理结构,29.05.2020,授课教师:张雁,44,9.5.1UNIX文件系统概述,1.UNIX文件系统的特点,文件系统的组织是分级树形结构。(2)文件的物理结构为混合索引式文件结构。(3)采用了成组链接法管理空闲盘块。(4)引入索引结点。,29.05.2020,授课教师:张雁,45,UNIX文件i结点,UNIX文件目录项目录项(文件名和文件i结点的指针)i结点文件目录实质是文件内部标识和外部标识的一个映射UNIX文件i结点描述文件信息的数据结构存放在磁盘上(磁盘索引结点或磁盘i结点)文件内部标识,类型,存取权限,共享连接数,文件存取时间,文件长度,文件物理地址索引表i_addr13,29.05.2020,授课教师:张雁,46,2.文件系统的结构,图9-18UNIX文件系统的结构,29.05.2020,授课教师:张雁,47,3.文件系统的资源管理,当文件处于“未打开”状态时,文件需占用三种资源:一个目录项。(2)一个磁盘索引结点项。(3)若干个盘块。,当文件被引用或“打开”时,须再增加三种资源:(1)一个内存索引结点项。它驻留在内存中。(2)文件表中的一个登记项。(3)用户文件描述符表中的一个登记项。,29.05.2020,授课教师:张雁,48,9.5.2文件的物理结构,1.寻址方式(1)直接寻址。(2)一次间接寻址方式。(3)多次间接寻址。,29.05.2020,授课教师:张雁,49,29.05.2020,授课教师:张雁,50,2.地址转换,将字节偏移量转换为文件逻辑块号2)把文件逻辑块号转换为物理盘块号P384直接寻址。(2)一次间址。(3)多次间址。,29.05.2020,授课教师:张雁,51,图9-20文件的地址映射示例,29.05.2020,授课教师:张雁,52,9.5.3索引结点的管理,UNIX文件系统的组成引导块用于系统的引导超级块文件系统的控制块,用于存放对空闲块和i结点等资源的管理信息索引结点块存放文件的说明信息数据区存放文件目录和文件数据,29.05.2020,授课教师:张雁,53,索引结点的管理,超级块(Superblock)系统用来描述磁盘使用状态的数据结构。磁盘索引结点分配分配过程ialloc回收过程ifree内存索引结点的分配与回收分配过程iget回收过程iput,29.05.2020,授课教师:张雁,54,9.5.4空闲磁盘空间的管理,文件卷的组织P38710-21空闲盘块的组织空闲盘块的分配与回收,29.05.2020,授课教师:张雁,55,9.5.5文件表的管理,用户文件描述符表又称为:进程打开文件表进程控制块的U区给出了该进程所打开的每一个文件的内部标识与其在系统打开文件表中对应的一个表项之间的索引,是面向进程的。记录和控制打开文件的用户进程,29.05.2020,授课教师:张雁,56,用户文件描述符表,内容打开文件的描述符fd系统打开文件表的入口指针fp,29.05.2020,授课教师:张雁,57,系统打开文件表,问题进程和文件之间存在多对多的关系引入一个关联实体,将多对多转换为两个一对多作用指明打开同一文件的不同进程和不同进程所使用的不同打开路径,以及不同进程和不同打开路径所对应的读写指针。图示P38810-23,29.05.2020,授课教师:张雁,58,系统打开文件表,内容f_flag打开方式f_offset读写位置指针f_count描述父进程的共享计数f_inode指向用户文件描述表,29.05.2020,授课教师:张雁,59,9.6设备管理,9.6.1字符设备缓冲区管理,1.空闲字符缓冲区队列,图9-12空闲字符缓冲区队列,29.05.2020,授课教师:张雁,60,2.空闲字符缓冲区的分配与回收getcfputcf,9.6.1字符设备缓冲区管理,29.05.2020,授课教师:张雁,61,3.设备的字符缓冲区队列,(1)getc过程该过程用于从一个clist结构的队首指针所指示的字符缓冲队列中,取出为首的字符,然后修改该队列的可用字符计数和队首指针。当取完一个缓冲区中的所有字符时,将释放该缓冲区。该过程的返回值是取出的字符。(2)putc过程该过程用于将一个字符C放入设备的指定字符缓冲区队列的末尾。若此时该队列空、或队列的最后一个缓冲区已满,且空闲字符缓冲区队列也空,该过程无法将字符放入队列中,则返回“-1”。,29.05.2020,授课教师:张雁,62,(3)getcb过程该过程用于从指定的设备字符缓冲区队列中,取出第一个缓冲区,并将该队列的可用字符计数减去第一个缓冲区中的字符数,然后返回指向该缓冲区的指针bp。若该缓冲区已是该队列中惟一的缓冲区,则置队尾指针为空。(4)putcb过程该过程用于将由bp所指向的缓冲区放入指定的设备字符缓冲区队列的末尾,然后将该队列的可用字符计数加上bp缓冲区中的字符数后返回。,3.设备的字符缓冲区队列,29.05.2020,授课教师:张雁,63,9.6.2块设备缓冲区管理,1.盘块缓冲区及其首部,图9-13缓冲首部,29.05.2020,授课教师:张雁,64,2.盘块缓冲池结构,图9-14空闲队列(链)及散列队列,29.05.2020,授课教师:张雁,65,3.盘块缓冲区的分配,(1)getblk()过程。(2)getblk(dev,blkno)过程。,4.盘块缓冲区的回收当核心用完某缓冲区时,可调用brelse过程将之收回。,设备缓冲区管理,29.05.2020,授课教师:张雁,66,9.5.3内核与驱动程序接口,1.设备开关表的作用,图9-15设备开关表及系统调用和驱动程序间的接口,29.05.2020,授课教师:张雁,67,2.块设备开关表,图9-16块设备开关表,29.05.2020,授课教师:张雁,68,3.字符设备开关表,图9-17字符设备开关表,29.05.2020,授课教师:张雁,69,9.5.4磁盘驱动程序,1.打开磁盘驱动器的过程gdopen,在UNIX系统中,设备被看作是一种特殊类型的文件,因而在使用该文件之前,也须先将它打开。(1)检查系统中是否有由输入参数dev所指定类型的磁盘驱动器,若有,再检查它是否已被打开,如果尚未打开,便将此驱动器打开,(将该磁盘控制器表中的标志b-flag设置为B-ONCE)(2)调用gdtimer过程启动对应的控制器和设备短期时钟闹钟,用于控制磁盘驱动器的执行时间。,29.05.2020,授课教师:张雁,70,输入参数是控制器号ctl,无输出参数。先从磁盘设备控制表中找到I/O队列的队首指针,若它为0,表示I/O队列空,无I/O缓冲区可取,于是返回;否则,将控制器表中的忙闲标志b-active置“1”。设置磁盘控制器中的各寄存器,如磁盘地址寄存器、内存总线地址寄存器、控制状态寄存器、字计数器等。最后启动磁盘控制器读(或写)后返回。而gdstartegy过程的主要功能,则是把指定的缓冲首部排在磁盘控制器I/O队列的末尾,并启动磁盘控制器。,2.启动磁盘控制器的过程,29.05.2020,授课教师:张雁,71,当磁盘I/O传送完成并发出中断请求信号时,CPU响应后将通过中断总控程序进入磁盘中断处理过程gdintr。该过程的输入参数是控制器号ctl。先检查磁盘是否已经启动,若尚未启动,程序便不予理睬即返回;若已启动,则还须先通过对状态寄存器的检查,来了解本次传送是否出错。若已出错,便在控制终端上显示出错信息。,3.磁盘中断处理过程gdintr,29.05.2020,授课教师:张雁,72,9.5.5磁盘读、写程序,1.读方式一般读方式:只把盘块中的信息读入缓冲区,由bread过程完成。提前读方式

温馨提示

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

评论

0/150

提交评论