《UNIX系统内核结构-09.ppt》由会员分享,可在线阅读,更多相关《UNIX系统内核结构-09.ppt(76页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Ch.9Ch.9第第9章章 UNIX系统内核结构系统内核结构 9.1 UNIX9.1 UNIX系统概述系统概述 9.2 9.2 进程的描述和控制进程的描述和控制 9.3 9.3 进程的同步与通信进程的同步与通信 9.4 9.4 存储器管理存储器管理 9.5 9.5 设备管理设备管理 9.6 9.6 文件管理文件管理 1/17/20231授课教师:张雁Ch.9Ch.99.1 UNIX系统概述系统概述 9.1.1 UNIX系统的发展史系统的发展史 1.UNIX系统的发展系统的发展 2.两大集团对峙两大集团对峙OSF集团与集团与UI集团集团 3.网络操作系统网络操作系统UNIX 1/17/20232
2、授课教师:张雁Ch.9Ch.99.1.2 UNIX系统的特征系统的特征 1)开放性2)2)多用户、多任务环境 3)3)功能强大,实现高效 4)4)提供了丰富的网络功能5)5)支持多处理器功能 1/17/20233授课教师:张雁Ch.9Ch.99.1.3 UNIX系统的内核结构系统的内核结构u硬件硬件uOS核心核心u进程控制子系统(进程控制子系统(负责为将要执行的程序和数据文件分负责为将要执行的程序和数据文件分配内存空间,并负责调度、控制并发进程的执行、进程通配内存空间,并负责调度、控制并发进程的执行、进程通信和内存管理)信和内存管理)u文件子系统(存放、管理暂时不被处理机执行的程序文件子系统(
3、存放、管理暂时不被处理机执行的程序和数据,分配空间,控制文件存取和为用户检索信息)和数据,分配空间,控制文件存取和为用户检索信息)uShell接口与编译程序接口与编译程序u应用程序应用程序1/17/20234授课教师:张雁Ch.9Ch.9图 9-1 UNIX核心的框图1/17/20235授课教师:张雁Ch.9Ch.91.进程控制子系统进程控制子系统(1)进程控制(2)(2)进程通信(3)(3)存储器管理(4)(4)进程调度1/17/20236授课教师:张雁Ch.9Ch.92.文件子系统文件子系统(1)文件管理(2)高速缓冲机制(3)(3)设备驱动程序 1/17/20237授课教师:张雁Ch.9
4、Ch.99.2 进程的描述和控制进程的描述和控制 9.2.1 进程控制块进程控制块PCB 在在UNIX系统系统中,中,把进程控制块分为四部分:把进程控制块分为四部分:(1)进程表项(常驻内存)进程表项(常驻内存)(2)U区(非内存区)区(非内存区)(3)进程区表进程区表(4)系统区表系统区表1/17/20238授课教师:张雁Ch.9Ch.9进程控制块(一)进程控制块(一)u进程表项(进程表项(Proc结构)结构)常驻内存常驻内存u存放的是系统感知进程存在所必需的数据和存放的是系统感知进程存在所必需的数据和信息信息u进程的唯一标识进程的唯一标识uU区区(User结构)结构)非常驻内存非常驻内存u
5、存放的是进程执行时所需的各种控制数据和存放的是进程执行时所需的各种控制数据和信息信息u存放在该进程的数据段中存放在该进程的数据段中1/17/20239授课教师:张雁Ch.9Ch.9进程控制块(二)进程控制块(二)u系统区表系统区表u区(区(Region)u进程虚拟地址空间上的一段连续区域,它是被进程虚拟地址空间上的一段连续区域,它是被共享、保护以及进行内存分配和地址变换的独立共享、保护以及进行内存分配和地址变换的独立实体。实体。u系统区表的内容系统区表的内容P325u本进程区表本进程区表u记录进程的每个区在进程中的虚地址,并通过它找记录进程的每个区在进程中的虚地址,并通过它找到该区在物理存储器
6、中的实地址。到该区在物理存储器中的实地址。1/17/202310授课教师:张雁Ch.9Ch.9系统区表区号类型长度内存地址状态共享计数文件指针在系统创建新进程时,核心将从区表中分配相应的表项给所创建的进程。1/17/202311授课教师:张雁Ch.9Ch.99.2.2 进程状态与进程映像进程状态与进程映像 图 9-4 进程的状态转换 1/17/202312授课教师:张雁Ch.9Ch.92.进程映像(进程实体的组成)进程映像(进程实体的组成)1)用户级上下文用户级上下文(用户的程序)(用户的程序)2)寄存器上下文(寄存器上下文(CPU的状态)的状态)(1)程序寄存器。程序寄存器。(2)处理机状态
7、寄存器处理机状态寄存器(PSR)。(3)栈指针。栈指针。(4)通用寄存器。通用寄存器。3)系统级上下文(系统级上下文(OS管理该进程所用的信息)管理该进程所用的信息)(1)静态部分。静态部分。(2)动态部分。动态部分。1/17/202313授课教师:张雁Ch.9Ch.9进进程程控控制制1/17/202314授课教师:张雁Ch.9Ch.9UNIX启动及进程树的形成UNIX进进程程树树1/17/202315授课教师:张雁Ch.9Ch.9进程创建进程创建Fork系统调用系统调用(1)为新进程分配一个进程表项喝酒)为新进程分配一个进程表项喝酒inch标识符标识符(2)检查同时运行的进程数目)检查同时运
8、行的进程数目(3)拷贝进程表项中的数据)拷贝进程表项中的数据(4)子进程继承父进程的所有文件)子进程继承父进程的所有文件(5)为子进程创建进程上下文)为子进程创建进程上下文(6)子进程执行)子进程执行1/17/202316授课教师:张雁Ch.9Ch.9NOTESu如果是用户创建的子进程,它将继承父进程在如果是用户创建的子进程,它将继承父进程在创建时刻所拥有的全部资源,包括所有已经打创建时刻所拥有的全部资源,包括所有已经打开的文件和程序。开的文件和程序。u子进程映像与父进程映像是存储在两个不同的子进程映像与父进程映像是存储在两个不同的地址空间中内容相同的程序副本。地址空间中内容相同的程序副本。u
9、父进程和子进程在各自的存储空间上运行着内父进程和子进程在各自的存储空间上运行着内容相同的程序。容相同的程序。1/17/202317授课教师:张雁Ch.9Ch.9进程映像重新载入进程映像重新载入execuExec的功能u将制定的可执行文件加载到指定的进程映像中,覆将制定的可执行文件加载到指定的进程映像中,覆盖该进程映像中原有的程序。盖该进程映像中原有的程序。u过程u根据给定的路径名找到制定的可执行文件,检查是根据给定的路径名找到制定的可执行文件,检查是否是可执行否是可执行u加载覆盖原来的进程映像加载覆盖原来的进程映像u为该程序的执行设置参数和环境为该程序的执行设置参数和环境u启动该进程进入新的程
10、序入口点去执行启动该进程进入新的程序入口点去执行1/17/202318授课教师:张雁Ch.9Ch.9Example(一)一)u创建一个子进程,并加载程序,其功能显示创建一个子进程,并加载程序,其功能显示“I am a child”,加载的程序路径名为加载的程序路径名为./chldu#include#include main()printf(“I am a childn”);exit(0);chld.c1/17/202319授课教师:张雁Ch.9Ch.9Example(二)#include#include main()int p;/存放子进程存放子进程pid号号 while(p=fork()=-
11、1);/创建子进程创建子进程if(p=0)/子进程返回子进程返回 exec(“./chld”,0);/加载子进程的程序加载子进程的程序 else /父进程返回父进程返回 wait(0);/等待子进程终止等待子进程终止 exit(0);1/17/202320授课教师:张雁Ch.9Ch.9进程的终止进程的终止exit内核须为内核须为exit完成以下操作:完成以下操作:(1)关闭软中断。关闭软中断。(2)回收资源。回收资源。(3)写记账信息。写记账信息。(4)置进程为置进程为“僵死僵死”状态。状态。(5)转进程调度)转进程调度 1/17/202321授课教师:张雁Ch.9Ch.99.2.4 进程调度
12、与切换进程调度与切换 进程的调度由进程的调度由0#进程完成进程完成0#进程的组成进程的组成swtch:负责处理机的分配负责处理机的分配sched:负责进程映像在内存和对换区之间的对换负责进程映像在内存和对换区之间的对换调度的算法调度的算法多级反馈轮转调度法(基于时间片多级反馈轮转调度法(基于时间片+优先级)优先级)1/17/202322授课教师:张雁Ch.9Ch.9调度的实现调度的实现u进程调度由进程调度由swtch 过程实现过程实现u实质实质u完成一个进程之间的上下文切换过程完成一个进程之间的上下文切换过程u过程过程u保存当前进程的上下文保存当前进程的上下文u从内存就绪队列中寻找一优先级最高
13、进程从内存就绪队列中寻找一优先级最高进程u将选中进程的上下文调入将选中进程的上下文调入1/17/202323授课教师:张雁Ch.9Ch.99.3 进程的同步与通信进程的同步与通信9.3.1 低级通信低级通信9.3.2 管道机制管道机制9.3.3 IPC1/17/202324授课教师:张雁Ch.9Ch.9低级通信低级通信u低级通信低级通信u主要用来传递进程间的控制信号主要用来传递进程间的控制信号u方法方法u原语:睡眠原语原语:睡眠原语sleep和和唤醒原语唤醒原语wakeupu软中断:是通信进程之间用来模拟硬中断的软中断:是通信进程之间用来模拟硬中断的一种信号通信方式。一种信号通信方式。1/17
14、/202325授课教师:张雁Ch.9Ch.9软软中断信号中断信号Example(一)一)u要求:编写一个程序,循环显示字符串要求:编写一个程序,循环显示字符串“Hello!”,当键盘键入当键盘键入Ctrl+C时终止循环,显示时终止循环,显示“OK!”后结束。后结束。u#include#include#include void int_func(int sig);int k;void int_func(int sig)/定义软中断处理函数定义软中断处理函数 k=0;1/17/202326授课教师:张雁Ch.9Ch.9软中断信号软中断信号Example(二)二)uMain()signal(SIGI
15、NT,int_func);/设置软中断信号对应的处理函设置软中断信号对应的处理函数数k=1;/循环显示,等待键入循环显示,等待键入Ctrl+C,获取该软中断信号后处理获取该软中断信号后处理while(k=1)printf(“Hello!n”);printf(“Ok!n”);/软软中断处理函数返回中断处理函数返回exit(0);1/17/202327授课教师:张雁Ch.9Ch.99.3.2 管道机制管道机制 1.管道的类型管道的类型 1)无名管道无名管道(Unnamed Pipes)2)2)有名管道有名管道(Named Pipes)1/17/202328授课教师:张雁Ch.9Ch.9无名管道与有
16、名管道无名管道与有名管道比较项目比较项目无名管道无名管道有名管道有名管道服务对象服务对象进程及其子孙进程进程及其子孙进程任意关系的进程任意关系的进程实现机制实现机制逻辑上是管道文件,逻辑上是管道文件,物理上是高速缓存,物理上是高速缓存,与外设无关与外设无关逻辑上是管道文件,物逻辑上是管道文件,物理上依赖于文件系统实理上依赖于文件系统实现,是物理设备文件现,是物理设备文件永久性永久性临时创建于内存临时创建于内存存在于文件系统中存在于文件系统中名称名称无文件名,用文件描无文件名,用文件描述符存取述符存取有文件名有文件名创建方式创建方式pipemkfifo1/17/202329授课教师:张雁Ch.9
17、Ch.9Example(一)一)u要求:父进程创建一个子进程和一个无名管道要求:父进程创建一个子进程和一个无名管道fd,由由子进程向管道写入信息子进程向管道写入信息“This is a message!”,然后终然后终止执行;父进程接收到子进程终止信号后从管道中读止执行;父进程接收到子进程终止信号后从管道中读出并显示信息后结束。出并显示信息后结束。u#include#include main()int p1,fd2;char outpipe50;char inpipe50=“This is a message!”;pipe(fd);/创建无名管道创建无名管道fd1/17/202330授课教师:
18、张雁Ch.9Ch.9uWhile(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(二)(二)1/17/202331授课教师:张雁Ch.9Ch.99.4 存储器管理存储器管理u内存管理概述内存管理概述u段页式管理中的请求分页管理段页式管理中的请求分页管理u交换技术交换
19、技术u内存空间的分配和回收单位:页内存空间的分配和回收单位:页1/17/202332授课教师:张雁Ch.9Ch.9交换区管理交换区管理u交换进程交换进程u0#进程中的交换进程进程中的交换进程schedu功能功能u对交换空间的管理对交换空间的管理u进程换出进程换出u进程换入进程换入u交换区的管理交换区的管理u数据结构:映射图数据结构:映射图u空闲盘块的起始地址空闲盘块的起始地址u以该地址起始的可分配的连续块数以该地址起始的可分配的连续块数u采用首次适应算法采用首次适应算法1/17/202333授课教师:张雁Ch.9Ch.9请求分页的数据结构请求分页的数据结构u虚地址结构uUNIX的区表区号Q页号
20、P页内位移W03130 2910 9区名区起始虚地址大小状态保护权引用计数页表起始地址正文数据栈U1/17/202334授课教师:张雁Ch.9Ch.91.页表和磁盘描述表页表和磁盘描述表页表页表(每个区分配一个页表)(每个区分配一个页表)物理页号物理页号年龄年龄写时写时拷贝拷贝修改位修改位访问位访问位有效位有效位保护保护对换对换设备号设备号设备块号设备块号存储器类型存储器类型磁盘描述表(描述一页的磁盘副本)磁盘描述表(描述一页的磁盘副本)请求分页的数据结构请求分页的数据结构1/17/202335授课教师:张雁Ch.9Ch.92.页框数据表和对换使用表页框数据表和对换使用表 图 9-10 页框数
21、据表项及其散列队列 1/17/202336授课教师:张雁Ch.9Ch.9对换使用表对换使用表图 9-11 四种数据结构之间的关系 1/17/202337授课教师:张雁Ch.9Ch.9请求调页技术请求调页技术u页表页表 有效位有效位V=0u进程要访问的页不在内存,可能在下述三种介进程要访问的页不在内存,可能在下述三种介质之一质之一u外存交换区中外存交换区中u外存可执行文件中外存可执行文件中u缓冲区的空闲队列中缓冲区的空闲队列中1/17/202338授课教师:张雁Ch.9Ch.9请求调页的调入过程1/17/202339授课教师:张雁Ch.9Ch.9换页进程(一)换页进程(一)u任务任务u将页表中年
22、龄大于某个阈值的页换出内存将页表中年龄大于某个阈值的页换出内存。u工作方式工作方式u当系统中可用的空闲页面少于下限阈值时,唤醒当系统中可用的空闲页面少于下限阈值时,唤醒换页进程换页进程u该进程首先检查每个活动的、没有封锁的区,增该进程首先检查每个活动的、没有封锁的区,增加所有有效页(在内存)的年龄值加所有有效页(在内存)的年龄值u当某页的年龄大于阈值时,将其换出当某页的年龄大于阈值时,将其换出1/17/202340授课教师:张雁Ch.9Ch.9换页进程(二)换页进程(二)u换页进程工作的步骤换页进程工作的步骤u换页进程找出应该换出的内存页面,将其页号放入换页进程找出应该换出的内存页面,将其页号
23、放入换出页面链表换出页面链表u当换出页面链表中满当换出页面链表中满64页时,申请交换区中的空闲页时,申请交换区中的空闲空间,将空间,将64页换出页换出u好处好处u换满换满64页才写盘一次,减少了写盘的次数,提高了页才写盘一次,减少了写盘的次数,提高了I/O速度速度u某个被换出的页面无论其是否换出,在没有被重新某个被换出的页面无论其是否换出,在没有被重新分配之前被访问时无须读盘,减少了读盘的次数。分配之前被访问时无须读盘,减少了读盘的次数。1/17/202341授课教师:张雁Ch.9Ch.9换页进程(三)换页进程(三)u思考?思考?u换页进程和交换进程的区别?换页进程和交换进程的区别?Answe
24、r:交换进程换出的是进程映像中除交换进程换出的是进程映像中除proc结构以结构以外的所有页面,而换页进程换出的是各个进程中年龄外的所有页面,而换页进程换出的是各个进程中年龄大的页面,而不是所有的页面。大的页面,而不是所有的页面。1/17/202342授课教师:张雁Ch.9Ch.99.5 文件管理文件管理 9.5.1 UNIX文件系统概述 9.5.2 文件的物理结构 1/17/202343授课教师:张雁Ch.9Ch.99.5.1 UNIX文件系统概述文件系统概述 1.UNIX文件系统的特点文件系统的特点(1)文件系统的组织是分级树形结构。文件系统的组织是分级树形结构。(2)(2)文件的物理结构为
25、混合索引式文件结构。文件的物理结构为混合索引式文件结构。(3)(3)采用了成组链接法管理空闲盘块。采用了成组链接法管理空闲盘块。(4)(4)引入索引结点。引入索引结点。1/17/202344授课教师:张雁Ch.9Ch.9UNIX文件文件i结点结点uUNIX文件目录项文件目录项u目录项(文件名和文件目录项(文件名和文件i结点的指针)结点的指针)ui结点结点u文件目录实质是文件内部标识和外部标识的一个映射文件目录实质是文件内部标识和外部标识的一个映射uUNIX文件文件i结点结点u描述文件信息的数据结构描述文件信息的数据结构u存放在磁盘上(磁盘索引结点或磁盘存放在磁盘上(磁盘索引结点或磁盘i结点结点
26、)u文件内部标识,类型,存取权限,共享连接数,文件内部标识,类型,存取权限,共享连接数,文件存取时间,文件长度,文件物理地址索引表文件存取时间,文件长度,文件物理地址索引表i_addr131/17/202345授课教师:张雁Ch.9Ch.92.文件系统的结构文件系统的结构图图 9-18 UNIX文文件件系系统统的的结结构构1/17/202346授课教师:张雁Ch.9Ch.93.文件系统的资源管理文件系统的资源管理 当文件处于当文件处于“未打开未打开”状态时,状态时,文件需占用三种资源:文件需占用三种资源:(1)一个目录项。一个目录项。(2)(2)一个磁盘索引结点项。一个磁盘索引结点项。(3)(
27、3)若干个盘块。若干个盘块。当文件被引用或当文件被引用或“打开打开”时,时,须再增加三种资源:须再增加三种资源:(1)一个内存索引结点项。一个内存索引结点项。它驻留在内存中。它驻留在内存中。(2)文件表中的一个登记项。文件表中的一个登记项。(3)用户文件描述符表中的一个登记项。用户文件描述符表中的一个登记项。1/17/202347授课教师:张雁Ch.9Ch.99.5.2 文件的物理结构文件的物理结构 1.寻址方式寻址方式(1)直接寻址。直接寻址。(2)一次间接寻址方式。一次间接寻址方式。(3)多次间接寻址。多次间接寻址。1/17/202348授课教师:张雁Ch.9Ch.91/17/202349
28、授课教师:张雁Ch.9Ch.92.地址转换地址转换 1)将字节偏移量转换为文件逻辑块号将字节偏移量转换为文件逻辑块号 2)2)把文件逻辑块号转换为物理盘块号把文件逻辑块号转换为物理盘块号 P384 (1)直接寻址。直接寻址。(2)(2)一次间址。一次间址。(3)(3)多次间址。多次间址。1/17/202350授课教师:张雁Ch.9Ch.9图 9-20 文件的地址映射示例 1/17/202351授课教师:张雁Ch.9Ch.99.5.3 索引结点的管理索引结点的管理uUNIX文件系统的组成文件系统的组成u引导块引导块u用于系统的引导用于系统的引导u超级块超级块u文件系统的控制块,用于存放对空闲块和
29、文件系统的控制块,用于存放对空闲块和i结点结点等资源的管理信息等资源的管理信息u索引结点块索引结点块u存放文件的说明信息存放文件的说明信息u数据区数据区u存放文件目录和文件数据存放文件目录和文件数据1/17/202352授课教师:张雁Ch.9Ch.9索引结点的管理索引结点的管理u超级块超级块(Superblock)u系统用来描述磁盘使用状态的数据结构。系统用来描述磁盘使用状态的数据结构。u磁盘索引结点分配磁盘索引结点分配u分配过程分配过程 iallocu 回收过程回收过程 ifreeu内存索引结点的分配与回收内存索引结点的分配与回收u分配过程分配过程 igetu回收过程回收过程 iput1/1
30、7/202353授课教师:张雁Ch.9Ch.99.5.4 空闲磁盘空间的管理空闲磁盘空间的管理u文件卷的组织文件卷的组织 P387 10-21u空闲盘块的组织空闲盘块的组织u空闲盘块的分配与回收空闲盘块的分配与回收1/17/202354授课教师:张雁Ch.9Ch.99.5.5 文件表的管理文件表的管理u用户文件描述符表用户文件描述符表u又称为:进程打开文件表又称为:进程打开文件表u进程控制块的进程控制块的U区区u给出了该进程所打开的每一个文件的内部标识与其给出了该进程所打开的每一个文件的内部标识与其在系统打开文件表中对应的一个表项之间的索引,在系统打开文件表中对应的一个表项之间的索引,是面向进
31、程的。是面向进程的。u记录和控制打开文件的用户进程记录和控制打开文件的用户进程1/17/202355授课教师:张雁Ch.9Ch.9用户文件描述符表用户文件描述符表u内容内容u打开文件的描述符打开文件的描述符fdu系统打开文件表的入口指针系统打开文件表的入口指针fp1/17/202356授课教师:张雁Ch.9Ch.9系统打开文件表系统打开文件表u问题问题u进程和文件之间存在多对多的关系进程和文件之间存在多对多的关系u引入一个关联实体,将多对多转换为两个一对多引入一个关联实体,将多对多转换为两个一对多u作用作用u指明打开同一文件的不同进程和不同进程所使用的指明打开同一文件的不同进程和不同进程所使用
32、的不同打开路径,以及不同进程和不同打开路径所对不同打开路径,以及不同进程和不同打开路径所对应的读写指针。应的读写指针。u图示图示 P388 10-231/17/202357授课教师:张雁Ch.9Ch.9系统打开文件表系统打开文件表u内容内容uf_flag 打开方式打开方式uf_offset 读写位置指针读写位置指针uf_count 描述父进程的共享计数描述父进程的共享计数uf_inode 指向用户文件描述表指向用户文件描述表1/17/202358授课教师:张雁Ch.9Ch.99.6 设设 备备 管管 理理9.6.1 字符设备缓冲区管理字符设备缓冲区管理 1.空闲字符缓冲区队列空闲字符缓冲区队列
33、 图 9-12 空闲字符缓冲区队列 1/17/202359授课教师:张雁Ch.9Ch.9 2.空闲字符缓冲区的分配与回收空闲字符缓冲区的分配与回收 getcfputcf9.6.1 字符设备缓冲区管理字符设备缓冲区管理1/17/202360授课教师:张雁Ch.9Ch.93.设备的字符缓冲区队列设备的字符缓冲区队列 (1)getc过程过程 该过程用于从一个clist结构的队首指针所指示的字符缓冲队列中,取出为首的字符,然后修改该队列的可用字符计数和队首指针。当取完一个缓冲区中的所有字符时,将释放该缓冲区。该过程的返回值是取出的字符。(2)putc过程过程 该过程用于将一个字符C放入设备的指定字符缓
34、冲区队列的末尾。若此时该队列空、或队列的最后一个缓冲区已满,且空闲字符缓冲区队列也空,该过程无法将字符放入队列中,则返回“-1”。1/17/202361授课教师:张雁Ch.9Ch.9 (3)getcb过程过程 该过程用于从指定的设备字符缓冲区队列中,取出第一个缓冲区,并将该队列的可用字符计数减去第一个缓冲区中的字符数,然后返回指向该缓冲区的指针bp。若该缓冲区已是该队列中惟一的缓冲区,则置队尾指针为空。(4)putcb过程过程 该过程用于将由bp所指向的缓冲区放入指定的设备字符缓冲区队列的末尾,然后将该队列的可用字符计数加上bp缓冲区中的字符数后返回。3.设备的字符缓冲区队列设备的字符缓冲区队
35、列 1/17/202362授课教师:张雁Ch.9Ch.99.6.2 块设备缓冲区管理块设备缓冲区管理1.盘块缓冲区及其首部盘块缓冲区及其首部 设备号设备号 块号块号 状态状态 缓冲区指针缓冲区指针 散列队列的前向指针散列队列的前向指针 散列队列的后向指针散列队列的后向指针 空闲表上的前向指针空闲表上的前向指针 空闲表上的后向指针空闲表上的后向指针 图 9-13 缓冲首部1/17/202363授课教师:张雁Ch.9Ch.92.盘块缓冲池结构盘块缓冲池结构 图 9-14 空闲队列(链)及散列队列 1/17/202364授课教师:张雁Ch.9Ch.93.盘块缓冲区的分配盘块缓冲区的分配 (1)get
36、blk()过程。过程。(2)getblk(dev,blkno)过程。过程。4.盘块缓冲区的回收盘块缓冲区的回收 当核心用完某缓冲区时,可调用当核心用完某缓冲区时,可调用brelse过程将之收回。过程将之收回。设备缓冲区管理设备缓冲区管理1/17/202365授课教师:张雁Ch.9Ch.99.5.3 内核与驱动程序接口内核与驱动程序接口1.设备开关表的作用设备开关表的作用 图 9-15 设备开关表及系统调用和驱动程序间的接口 1/17/202366授课教师:张雁Ch.9Ch.92.块设备开关表块设备开关表 函数 表项 open close strategy 01gdopen gtopen gdc
37、lose gtclose gdstrategy gtstrategy 图 9-16 块设备开关表 1/17/202367授课教师:张雁Ch.9Ch.93.字符设备开关表字符设备开关表 函数 表项 openclosereadwriteIoctl0ConopenConcloseConrdadConwriteConioctl1DzbopenDzbcloseDzbreadDzbwriteDzbioctl2Syopennulldevsyreadsywritesyioctl图 9-17 字符设备开关表 1/17/202368授课教师:张雁Ch.9Ch.99.5.4 磁盘驱动程序磁盘驱动程序 1.打开磁盘驱
38、动器的过程打开磁盘驱动器的过程gdopen 在在UNIX系系统统中中,设设备备被被看看作作是是一一种种特特殊殊类类型型的的文文件件,因而在使用该文件之前,也须先将它打开。因而在使用该文件之前,也须先将它打开。(1)检检查查系系统统中中是是否否有有由由输输入入参参数数dev所所指指定定类类型型的的磁磁盘盘驱驱动动器器,若若有有,再再检检查查它它是是否否已已被被打打开开,如如果果尚尚未未打打开开,便便将将此此驱驱动动器器打打开开,(将将该该磁磁盘盘控控制制器器表表中中的的标标志志b-flag设设置置为为B-ONCE)(2)调调用用gdtimer过过程程启启动动对对应应的的控控制制器器和和设设备备短
39、短期期时时钟钟闹钟,用于控制磁盘驱动器的执行时间。闹钟,用于控制磁盘驱动器的执行时间。1/17/202369授课教师:张雁Ch.9Ch.9输入参数是控制器号输入参数是控制器号ctl,无输出参数。无输出参数。先先从从磁磁盘盘设设备备控控制制表表中中找找到到I/O队队列列的的队队首首指指针针,若若它它为为0,表表示示I/O队队列列空空,无无I/O缓缓冲冲区区可可取取,于于是是返返回回;否否则则,将将控制器表中的忙闲标志控制器表中的忙闲标志b-active置置“1”。设设置置磁磁盘盘控控制制器器中中的的各各寄寄存存器器,如如磁磁盘盘地地址址寄寄存存器器、内内存存总线地址寄存器、控制状态寄存器、字计数
40、器等。总线地址寄存器、控制状态寄存器、字计数器等。最最后后启启动动磁磁盘盘控控制制器器读读(或或写写)后后返返回回。而而gdstartegy过过程程的的主主要要功功能能,则则是是把把指指定定的的缓缓冲冲首首部部排排在在磁磁盘盘控控制制器器I/O队队列列的末尾,并启动磁盘控制器。的末尾,并启动磁盘控制器。2.启动磁盘控制器的过程启动磁盘控制器的过程1/17/202370授课教师:张雁Ch.9Ch.9 当当磁磁盘盘I/O传传送送完完成成并并发发出出中中断断请请求求信信号号时时,CPU响响应应后后将通过中断总控程序进入磁盘中断处理过程将通过中断总控程序进入磁盘中断处理过程gdintr。该过程的输入参
41、数是控制器号该过程的输入参数是控制器号ctl。先先检检查查磁磁盘盘是是否否已已经经启启动动,若若尚尚未未启启动动,程程序序便便不不予予理理睬睬即即返返回回;若若已已启启动动,则则还还须须先先通通过过对对状状态态寄寄存存器器的的检检查查,来来了了解解本本次次传传送送是是否否出出错错。若若已已出出错错,便便在在控控制制终终端端上上显显示示出错信息。出错信息。3.磁盘中断处理过程磁盘中断处理过程gdintr1/17/202371授课教师:张雁Ch.9Ch.99.5.5 磁盘读、写程序磁盘读、写程序 1.读方式读方式一一般般读读方方式式:只只把把盘盘块块中中的的信信息息读读入入缓缓冲冲区区,由由bre
42、ad过过程完成。程完成。提提前前读读方方式式:当当一一个个进进程程要要顺顺序序地地读读一一个个文文件件所所在在的的各各个个盘盘块块时时,会会预预见见到到所所要要读读的的下下一一个个盘盘块块,因因而而在在读读出出指指定定盘盘块块(作作为为当当前前块块)的的同同时时,可可要要求求提提前前将将下下一一个个盘盘块块(提提前前块块)中的信息读入缓冲区。中的信息读入缓冲区。提前读功能由提前读功能由breada过程完成。过程完成。1/17/202372授课教师:张雁Ch.9Ch.92 写方式写方式 一一般般写写方方式式:这这是是真真正正把把缓缓冲冲区区中中的的数数据据写写到到磁磁盘盘上上,且进程须等待写操作
43、完成,由且进程须等待写操作完成,由bwrite过程完成。过程完成。异异步步写写方方式式:进进程程无无须须等等待待写写操操作作完完成成便便可可返返回回,异异步步写过程是写过程是bawrite。延延迟迟写写方方式式:该该方方式式并并不不真真正正启启动动磁磁盘盘,而而只只是是在在缓缓冲冲首首部部设设置置延延迟迟写写标标志志,然然后后便便释释放放该该缓缓冲冲区区,并并将将之之链链入入空空闲链表的末尾。延迟写方式由过程闲链表的末尾。延迟写方式由过程bdwrite完成完成。磁盘读、写程序磁盘读、写程序 1/17/202373授课教师:张雁Ch.9Ch.93.读过程读过程bread和和breada 1)一般
44、读过程一般读过程bread 2)提前读过程提前读过程breada 磁盘读、写程序磁盘读、写程序 1/17/202374授课教师:张雁Ch.9Ch.94.写过程写过程bwrite、bawrite和和bdwrite 1)一般写过程般写过程bwrite 该该过过程程的的输输入入参参数数是是缓缓冲冲区区指指针针bp。进进入入该该过过程程后后,根根据据bp指指针针找找到到缓缓冲冲区区首首部部,设设置置缓缓冲冲区区首首部部的的初初值值,通通过过设设备开关表转入策略过程,启动磁盘。备开关表转入策略过程,启动磁盘。如如是是一一般般写写,应应等等待待I/O完完成成,须须调调用用sleep过过程程使使自自己己睡睡
45、眠眠。I/O完完成成后后才才被被唤唤醒醒,再再调调用用brelse过过程程释释放放该该缓缓冲冲区区。如如是是异异步步写写、且且有有延延迟迟写写标标志志,则则在在给给缓缓冲冲区区打打上上标标志志后后,将将之之放入空放入空闲链表的首部。闲链表的首部。磁盘读、写程序磁盘读、写程序 1/17/202375授课教师:张雁Ch.9Ch.9 2)异步写过程异步写过程bawrite 它它与与一一般般写写过过程程很很相相似似,但但不不须须等等待待I/O完完成成即即可可返返回回。进进入入bawrite过过程程后后,设设置置异异步步写写标标志志,再再调调用用bwrite过过程程实实现之。现之。3)延迟写过程延迟写过程bdwrite 延延迟迟写写过过程程也也很很简简单单。这这里里只只须须设设置置延延迟迟写写标标志志及及数数据据有有效效标标志志,再再调调用用brelse过过程程,将将该该缓缓冲冲区区释释放放,并并链链入入空空闲闲链链表表的的尾尾部部。以以后后,当当某某进进程程调调用用getblk获获得得该该缓缓冲冲区区时时,再用异步写方式将缓冲区内容写入磁盘。再用异步写方式将缓冲区内容写入磁盘。磁盘读、写程序磁盘读、写程序 1/17/202376授课教师:张雁