-
- 素材大小:
- 1.20 MB
- 素材授权:
- 免费下载
- 素材格式:
- .ppt
- 素材上传:
- ppt
- 上传时间:
- 2018-05-02
- 素材编号:
- 185386
- 素材类别:
- 仪器设备PPT
-
素材预览
这是一个关于嵌入式操作系统论文PPT课件,包括了操作系统范围界定,操作系统的运行,程序的并发运行,内存管理,外部设备管理,文件系统管理等内容,嵌入式操作系统 补充:操作系统基础主讲教师:谢谦 xieqian@henu.edu.cn 计算机大楼501 嵌入式操作系统概述 A.1 操作系统范围界定 A.2 操作系统的运行 A.3 程序的并发运行 A.4 内存管理 A.5 外部设备管理 A.6 文件系统管理 A.1 操作系统范围界定操作系统的层次认识内核用户态和核心态内核对外服务接口 操作系统的层次用户对操作系统的 印象来自对外层 软件的操作经验操作系统课程 重点关注内核中间层次主要 与应用开发相关内核是理解OS关键认识内核直观认识1:磁盘上对应哪个(哪些)文件?Linux:vmlinuz(经过压缩,典型大小10MB以内)Windows:多个文件(Windows\System32目录下)Ntoskrnl.exe、HAL.Dll、NTDll.Dll、Win32k.Sys,还有很多驱动程序模块直观认识2:在内存中占据多大空间,欢迎点击下载嵌入式操作系统论文PPT课件哦。
嵌入式操作系统论文PPT课件是由红软PPT免费下载网推荐的一款仪器设备PPT类型的PowerPoint.
嵌入式操作系统 补充:操作系统基础主讲教师:谢谦 xieqian@henu.edu.cn 计算机大楼501 嵌入式操作系统概述 A.1 操作系统范围界定 A.2 操作系统的运行 A.3 程序的并发运行 A.4 内存管理 A.5 外部设备管理 A.6 文件系统管理 A.1 操作系统范围界定操作系统的层次认识内核用户态和核心态内核对外服务接口 操作系统的层次用户对操作系统的 印象来自对外层 软件的操作经验操作系统课程 重点关注内核中间层次主要 与应用开发相关内核是理解OS关键认识内核直观认识1:磁盘上对应哪个(哪些)文件? Linux:vmlinuz(经过压缩,典型大小10MB以内) Windows:多个文件(Windows\System32目录下) Ntoskrnl.exe、HAL.Dll、NTDll.Dll、Win32k.Sys,还有很多驱动程序模块直观认识2:在内存中占据多大空间?与硬件配置、软件负载相关很难界定内核占用内存空间的具体数值真正的区分方法:内核运行于核心态用户态和核心态(系统态)为什么要区分用户态和核心态保护操作系统代码免遭破坏避免应用程序代码相互之间干扰内核代码(且只有内核代码)运行于核心态不同的“态” 靠CPU硬件实现 CPU寄存器中设定保护级状态位,据此对当前指令的执行权限进行控制系统启动时一般处于非保护状态,当内核代码初始化时设置区分运行态并保护自身用户态和核心态(系统态)特权指令和非特权指令 CPU指令集中部分关系到系统全局的指令被归入特权指令,只有在核心态下可执行其他指令作为非特权指令,在核心态和用户态均可执行特权指令的例子:外部设备访问、开关中断、修改存储器管理寄存器、停机、转换执行状态等核心态的另一特权:内存访问能力越权执行时:产生异常(中断)内核对外服务接口:系统调用通过CPU和OS内核软硬件结合的保护机制,系统资源的管理权始终在内核代码控制下,应用程序无法直接访问另一方面,应用程序又必须访问这些资源否则应用程序几乎无法作任何有价值的事情,甚至无法运行因此,内核需要在不破坏自身保护机制前提下,把应用程序需要用到的资源服务功能以某种形式提供出来内核对外服务接口:系统调用 OS内核会选取应用程序需要访问的系统功能,以子程序(过程)方式实现,供应用程序调用但是不允许应用程序采用一般的过程调用方式来直接调用这些过程,而是采用系统调用这种特殊的调用方式内核对外服务接口:系统调用系统调用区别于一般的过程调用调用者和被调用者运行在不同状态,调用者在用户态、被调用者在核心态运行调用通过特殊的指令实现:陷入指令或软中断指令进入 intel芯片:int指令(Linux使用int 0x80,Windows使用int 0x2e) arm芯片:swi指令(swi 0,或swi 调用号)内核之外,通过C函数库对系统调用进行封装,从而屏蔽这些细节内核对外服务接口:系统调用系统调用的处理步骤 A.2 操作系统的运行系统初启内核正常运行:中断驱动应用程序的运行系统安装 系统初启 CPU怎样工作? CPU正常加电时,会在时钟信号激励下不断地进行取指、执行的循环(取指令、解码、取操作数、执行指令、存结果等)指令要从存储器中读取,对应地址由CPU内部特定寄存器决定(PC,程序计数器) PC的改变:自动增加(顺序执行)、跳转指令、外部中断和内部异常初始加电时,CPU会进入特定状态,PC也会被初始化为一个固定的值 intel芯片:实模式,FFFF:0000=0xFFFF0 ARM芯片:0x0 系统初启基于BIOS模式计算机的启动过程(EFI有所区别)加电,CPU初始化,到固定地址取指开始执行,激活BIOS程序; BIOS程序检测系统配置;加载MBR程序 MBR程序加载OS Loader;OS Loader加载OS 进行OS初始化:根据系统配置等准备系统表格;加载Driver,标识设备等创建系统初始进程,进而建立其它进程控制权交给调度程序,进入OS正常控制内核正常运行:中断驱动当系统启动完成后,根据内核调度程序的调度结果,CPU会转入用户态执行某个应用程序的代码,其后内核代码仅在需要时才会运行这种“需要”可以是:外部设备有事件发生,需要内核代码处理用户态程序执行错误,需要内核代码处理用户态程序需要使用内核提供的功能对内核的“需求”通过中断来体现,即内核代码通过各种中断入口反复执行内核正常运行:中断驱动中断机制的作用使CPU能够转入执行预设的例程,以响应突发事件或处理异常情况中断响应 CPU中止当前指令或下一条指令;保存当前运行状态;转入相应处理程序(通过硬件机制自动实现);执行完毕后返回断点继续执行中断是实现OS功能的基础中断使得立即处理紧急事件成为可能中断是实现处理机与外设并行的基础中断是实现多道程序之间调度切换的基础中断是实现系统调用的基础内核正常运行:中断驱动 CPU的中断源内部:执行指令过程中由CPU自身产生,包括指令异常和陷阱(软中断)指令外部:硬件中断(可屏蔽中断和不可屏蔽中断),通过中断控制器接到CPU的引脚内部中断内存访问相关异常是现代OS内存管理的基础软中断,是系统调用的唯一入口硬件中断 I/O设备通过可屏蔽中断通知CPU有事件发生,是设备驱动程序工作基础时钟中断,是分时调度的触发来源应用程序的运行一些基本概念程序一般以二进制可执行文件形式存在于磁盘上 CPU执行的指令和访问的数据须预先被装入内存 OS内核要负责读取可执行文件装入内存执行文件的格式由OS内核装入内存,规定了执行文件中必须提供的信息(如内存区域划分、外部模块入口等)由编译、链接程序生成,需符合OS规定的格式常见的执行文件格式:Windows的PE,Linux的ELF,一般上述关键信息都存在于“文件头部” 应用程序的运行应用程序运行过程中与内核的关系最初的创建和装入由另一个程序发起,OS内核实施程序执行过程中要时常转入执行内核代码因为需要OS内核的服务而产生系统调用外部设备发出中断信号程序执行完成后,要求OS内核结束自身 OS内核与应用程序的交替执行应用程序的运行一个简化实例场景 Windows下通过开始菜单打开记事本程序输入一些内容然后保存到文件应用程序的运行一个简化实例分析显示开始菜单的程序——explorer.exe explorer程序发现快捷方式对应notepad.exe explorer程序发出系统调用,要求内核执行notepad.exe 内核读入notepad.exe文件,初始化内存中数据结构,读入代码和数据内核调度程序选定notepad程序执行,返回用户态,从其执行入口处开始执行应用程序的运行一个简化实例分析(续) notepad程序需要OS内核显示其用户界面,进行一系列的系统调用,完成界面显示 notepad程序需要调用OS内核功能来获取输入事件(鼠标和键盘),调用相应系统调用如果没有输入事件发生(notepad程序逻辑无法继续),OS内核会调度CPU执行其他程序有输入事件发生(例如按键),系统调用返回,notepad程序获得输入,进行相应处理(放入缓冲区),如有必要进一步调用系统调用(例如字符回显)应用程序的运行一个简化实例分析(续)上述获取输入事件、处理输入过程反复进行如果输入事件对应保存文件,调用相应系统调用创建文件,并将缓冲区内容写入如果输入事件对应退出程序,调用相应系统调用,结束用户态程序逻辑的执行 OS内核代码释放notepad程序所占据的资源,该程序运行结束 简化:如果实际跟踪系统调用会看到数目及其庞大操作系统安装操作系统安装的目标安装完成后,使OS可以自行启动 OS安装的位置与系统类型、引导方式相关安装的一般过程与系统类型相关对于通用计算机,一般安装过程将OS部署在硬盘上,过程相对简单、通用对于嵌入式系统,安装过程有较大区别,引导程序、操作系统、文件系统需分别安装,一般安装到flash存储,要通过特殊操作方法进行部署,经常被称为“刷机”、“烧写” 操作系统安装通用计算机OS一般安装过程从安装介质加载并启动OS,检测系统配置,运行安装程序运行分区工具对硬盘进行分区,将启动代码复制到硬盘特定区域(MBR,...)格式化硬盘分区(制作文件系统),将OS内核及所选软件包复制到硬盘分区对OS部件进行设置,指定启动使用的OS内核及相关参数重新启动,用新安装内核启动OS 进一步配置系统(如网络设置等) A.3 程序的并发运行程序的顺序执行与并发执行进程的引入进程的创建与撤销进程的调度和切换线程的引入同步、互斥和进程间通信程序的顺序执行与并发执行程序的顺序执行前一程序执行完成,后一程序才能开始问题:CPU利用率低,程序在执行过程中的I/O操作,会导致CPU空转等待程序的并发执行多个程序都装入内存等待执行,当一个程序因I/O不能继续执行时,CPU可以转而执行其他程序,从而提高了CPU利用率并发概念(区别于并行):微观看任一时刻只有一个程序在运行,宏观看一段时间内多个程序都在运行程序的顺序执行与并发执行并发执行增加了操作系统设计难度多个程序都装入内存,互相不能干扰 (属于内存管理功能)需要记录内存中程序的不同状态:有一个正在运行,有一些随时可以运行,有一些等待I/O事件而不能执行当运行中的程序因为I/O等原因不能继续运行时,需要在可以运行的程序中选一个,转去执行新选中程序。在此过程中需要保存前一程序的执行现场,保证以后能再次正确运行进程的引入当OS需要把程序的运行作为一个管理对象时,需要引入相应的数据结构程序在内存中的指令和数据不能修改,否则会影响程序执行逻辑 OS需要为每一个在内存中的程序附加一个数据结构,由OS代码进行修改和访问,在其中记录程序状态、保存执行现场等这种引入管理数据结构后可以被OS管理的程序被称为进程(process)进程的引入进程控制块PCB 为管理进程所引入的数据结构,记录了系统管理所需的全部信息 OS根据PCB而感知进程的存在,PCB是进程存在的唯一标志 PCB会先于程序的 载入而创建进程的引入 PCB的内容进程标志符:包括唯一的进程号,以及所属用户号、创建此进程的父进程号等处理机状态(断点信息):进程切换时保存的处理机中各种寄存器的内容进程调度信息:记录了进程调度相关的信息(状态、调度优先级、等待事件等)其他信息:如内存中程序区和数据区的地址,打开的资源清单,同步和通信机制等进程的引入进程的基本状态运行就绪阻塞进程的创建与撤销进程的创建除了个别进程在系统启动时由OS内核直接创建以外,其他进程都是另外进程通过系统调用要求内核创建这种进程之间的创建关系形成一个树形结构进程的创建与撤销进程的创建 OS内核创建新进程的过程申请一个空闲的PCB 为新进程分配资源对PCB初始化将PCB插入就绪队列返回进程号进程的创建与撤销进程的撤销进程在完成其任务后,应该撤销,以便释放所占据资源正常结束的进程会主动调用进程终止系统调用,从而触发进程撤销一些程序执行过程中发生的异常情况可能导致OS内核直接撤销进程 进程的创建与撤销进程的撤销 OS内核撤销进程的过程找到指定进程的PCB 回收该进程所占用的全部资源处理子孙进程(终止所有子孙进程并回收它们所占用的资源,或者“过继”以免成为孤儿)将被终止进程的PCB从原来队列中摘走进程的调度和切换进程调度算法调度算法的目的是在多个候选者中选出一个进程作为下面要执行的进程不同的调度算法会影响系统的总体性能,是OS设计中的关键问题从理解OS工作机制角度出发,不必关心调度算法的细节进程的调度和切换进程切换(上下文切换)当调度算法选中新进程后执行首先保存当前进程的执行现场:保存将要执行的指令地址,把各类CPU寄存器存到PCB中特定区域然后找到新选中进程的PCB,读取上次保存的执行现场信息装入对应CPU寄存器,转到上次断点处指令开始执行通用的进程切换程序能保证进程多次被调度执行时除了时间间断之外,与连续执行的状态完全一致进程的调度和切换进程调度的时机:调度算法何时执行?以Unix/Linux为例,主要有两类时机一是当前进程主动放弃CPU 进程终止,或因为请求I/O进入阻塞状态二是OS内核决定终止当前进程执行中断处理程序中发现需要重新调度,如当前进程时间片用完,或高优先级进程进入就绪状态中断处理程序中一般不会直接调用调度算法,而是设置一个全局标志当OS内核从核心态返回用户态之前,会检查该标志,如置位则调用调度程序进而切换进程进程的调度和切换进程调度方式非抢占方式处理机分配给某进程后便一直执行,直到该进程主动放弃,OS不抢占进程的执行抢占方式 OS内核可根据某种原则停止当前进程的执行,转而执行另一进程一般的操作系统内核不可抢占,即:只有从核心态返回用户态时才会发生进程切换一些实时OS要求内核可抢占,以最大限度保证实时进程优先运行。内核抢占将大大增加OS的实现难度线程的引入 OS加入进程管理后,可以让不同应用程序并发执行如果一个应用程序内部希望并发执行时,进程模型很不方便应用程序需要并发的例子:用word进行耗时的打印操作时还希望进行输入处理;用浏览器查看同时包含动画和音频的网页如果打印和输入处理在不同进程,其数据区相互隔离,难以协调如果打印和输入处理在同一进程,没有程序在两者之间进行通用的切换,只能在程序主循环中反复查询,增加编程难度线程的引入 进程的角色传统进程是两种角色的混合资源分配的单位:主要表现为进程间的内存隔离 CPU调度的单位:以进程为单位进行调度切换线程(Thread)的引入保留进程作为资源分配单位,以更轻量级的线程作为CPU调度单位多个线程存在于同一进程中,共享资源,独立调度执行多线程提高了应用的并发能力,也加大了编程难度同步、互斥和进程间通信同步和互斥:解决并发中的问题同步:解决并发进程的协作关系例:多线程流媒体播放——下载→解码互斥:解决并发进程的资源争用关系例:多窗口联机售票——查询和售出不可交叠广义的同步机制:包括同步和互斥同步机制早期主要针对OS内核编程,因为并发的应用进程之间默认内存隔离,没有共用资源多线程应用编程必须考虑同步互斥同步、互斥和进程间通信进程间通信(IPC)由于不同进程间的内存隔离,如果不同进程间需要交换信息,需要OS内核中转主要的高级进程间通信机制包括:共享存储区、管道机制、消息机制同一进程的线程间因为共享内存空间,没有通信需求,但是有普遍的同步互斥需求对于采用进程间通信机制的不同进程,采用共享存储区机制需要考虑同步问题,管道和消息机制自带同步机制 A.4 内存管理内存管理目标和功能基本概念内存管理方式演变基本分页管理基于分页的虚拟存储管理进程地址空间的布局内存管理目标和功能内存管理的目标将多道程序同时装入内存,并使其互不干扰;尽可能提高内存利用率和访问效率内存管理的功能实现内存的分配和回收提供实现地址变换所需的信息利用外存“扩充”内存容量实现存储保护,避免越权访问基本概念名字空间(符号地址)源程序中通过变量名和标号标识地址逻辑地址(相对地址)源程序经汇编/编译后形成目标代码,通常约定模块首地址为0,其余地址都相对于首地址而编址物理地址(绝对地址)内存中存储单元的地址,通过总线寻址地址转换(地址映射) CPU执行指令时内部使用逻辑地址,为了正确访问存储单元,需将其转换为可由总线直接寻址的物理地址,这一过程称为地址映射内存管理方式演变逻辑地址连续是内存管理的基本前提 CPU执行程序时,大多数情况下执行一条指令后程序计数器PC自动增加若程序逻辑地址不连续,则不能顺序执行早期OS采用连续分区管理方式早期CPU的内存管理部件简单,只能进行简单地址映射连续的逻辑地址要求连续的物理地址现代OS一般采用离散分区管理可以把连续逻辑地址映射到离散物理地址离散映射可以基于定长的分页或变长的分段基本分页管理分页基本思想空间划分页面:将用户进程的地址空间划分成大小相等的区域,称为页面(page), 从0开始编号页框:将内存空间也划分成与页面大小相等的区域,称为页框(frame),从0开始编号内存分配为进程分配内存时以页框为单位,将进程中的编号连续的页面装入到多个页框中(不需要相邻)基本分页管理页面和页框对应示意基本分页管理页表页表是实现分页管理的关键数据结构页表由OS设置,供CPU存储管理部件使用作用:从页面号到页框号的映射页表一般存放在内存中页表的基址(物理地址)及长度由页表寄存器给出基本分页管理分页地址变换机构(硬件实现)基本分页管理分页地址变换机构(硬件实现)将逻辑地址分成页面号和页内地址根据页表寄存器中页表起始地址和页号查找页表,找到对应于该页式地址的页表目页表目地址=页表起始地址+页面号*页表目长度取出页面号对应的页框号,和逻辑地址的页内地址相加形成物理地址物理地址=页框号×页框长度+页内位移量按物理地址访问内存基于分页的虚拟存储管理基本分页管理的优点和问题实现了页框的离散分配,相对于连续分区管理,提高了物理内存的利用率仍然要求在程序运行前把所有的指令和数据装入内存,这实际上并非必要局部性原理程序运行过程中,CPU访问的逻辑地址从时间和空间两方面都是局部化的局部性原理源自人们编程时的自然习惯基于分页的虚拟存储管理虚拟存储器管理基于局部性原理,程序运行前没有必要全部装入内存,仅须把将要运行的页面装入即可运行中如访问的页面未在内存中(缺页),再动态将该页面调入内存 如物理内存已用完,则按某种置换算法将内存中的一些页面交换到外存虚拟存储器是指具有请求页调入功能和页置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统基于分页的虚拟存储管理请求分页系统在基本分页系统基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储器系统允许只装入少量程序和数据页面,便启动运行;以后在硬件支持下通过调页功能和置换功能,陆续将要访问的页面调入内存,同时把暂不访问的页面换到外存 请求分页系统需要硬件支持和管理软件硬件支持:扩展页表机制、缺页中断机构和地址变换机构管理软件:请求调页功能和页置换功能的软件基于分页的虚拟存储管理硬件支持:扩展页表表目 状态位:指示该页是否已调入内存(OS置/CPU用,触发缺页中断)访问位:记录该页在一段时间内是否被访问过(CPU置/OS用,选择换出页)修改位:表示该页调入内存后是否被修改过(CPU置/OS用,决定是否需写到外存)外存地址:指出该页在外存上的地址(OS置/OS用,调入页面时使用)基于分页的虚拟存储管理硬件支持:缺页中断在请求分页系统中,当CPU访问的页不在内存时,CPU产生一缺页中断,触发OS内核的请求调页代码缺页中断与一般中断的区别:在指令执行期间产生和处理中断中断处理完后会重启指令执行一条指令在执行期间,可能产生多次缺页中断 基于分页的虚拟存储管理管理软件请求调页:由缺页中断触发,通过读取CPU相关寄存器,可以获得引发缺页的页面号,从对应页表表目可获得该页面对应的外存地址(来自交换区或执行文件),分配空闲页框后读入,最后更新页表表目页面置换:页面置换一般是当OS发现空闲页框数不多时自动执行,把最近长期不用的页框内容换出,标记为空闲。为了提高效率,页面置换和请求调页各自独立运行,保证在调页时总是有空闲页框进程地址空间的布局进程的地址空间针对其逻辑地址地址空间大小与CPU架构相关,例如:32位CPU最大4GB(232)不同OS的进程地址空间分配可以不同进程地址空间的布局 Linux下不同进程地址空间映射内核地址空间部分固定且连续映射,所有进程中此区域共享(即页表中这一部分内容相同)不同进程用户地址空间部分映射各不相同 A.5 外部设备管理对设备硬件的访问设备分类设备独立性设备驱动程序简化示例:Unix设备访问过程对设备硬件的访问 CPU对外部设备的访问外部设备一般通过设备控制器进行管理设备控制器的管理寄存器使CPU可以控制设备动作、交换数据、查询状态控制寄存器:CPU写,用于控制器接收命令数据寄存器:双向/单向访问,进行数据交换状态寄存器:CPU读,用于查询设备当前状态设备控制器的管理寄存器编址独立的I/O空间编址:CPU有专用IN、OUT指令与内存一起编址对设备硬件的访问 I/O控制方式问题由来:高速CPU如何适应低速设备轮询方式 CPU循环读取状态寄存器,确定外部设备处于特定状态时才写控制寄存器或读写数据寄存器 CPU在轮询期间,不能执行其他程序中断方式外部设备发生的事件通过CPU中断线通知 CPU在向控制寄存器写入,启动设备动作后即可转入其他程序执行,CPU和I/O设备并行中断处理程序一般在设备驱动程序中提供对设备硬件的访问 I/O控制方式 DMA方式对于传输大量数据的磁盘、网卡而言,虽然中断机制使CPU和设备可以并行工作,但是从设备控制器上的缓冲区到内存之间的数据交换如果还是需要CPU介入,会降低CPU利用率引入DMA机制用于提高大量数据从设备控制器到内存的交换,DMA控制器利用CPU访问内存的间隙进行数据交换 DMA控制器在设备控制器上提供,需要CPU启动DMA控制器的动作,相应代码在设备驱动程序中提供设备分类与设备驱动类型相关分类字符设备以字符为单位传输数据,数据量小,速度慢设备不可寻址,数据不可重用块设备以定长块为单位传输数据,数据量大,速度快设备可寻址,数据可重复访问网络设备以不定长帧为单位传输数据,数据量大,速度快设备不可寻址,数据不可重用 设备独立性设备独立性(设备无关性)概念指OS设备管理为上层提供一致的访问入口并屏蔽访问细节,使上层独立于物理设备设备独立性软件在OS内核设备管理中设计的一个软件层次提供设备访问的一致入口和驱动框架设备开关表(与设备类型相关)逻辑设备名实现独立于设备的通用功能设备保护,缓冲区管理,差错控制设备驱动程序设备驱动程序特点与设备硬件、设备控制器寄存器、I/O控制方式密切相关在核心态运行,作为内核一部分一般由硬件厂商编写,OS规定编写框架设备驱动程序功能接收设备独立性软件发来抽象命令,转换为设备相关的底层操作序列检查设备状态,发出I/O命令或将操作排队响应中断请求,调用中断处理程序设备驱动程序设备驱动程序处理过程现代OS设备访问一般是中断驱动的,处理过程分两部分:启动过程和中断处理过程启动过程检查I/O请求合法性检查设备状态,确定是否可以启动请求的操作如果需要,传送参数/设置工作模式向控制寄存器发出命令,启动设备中断处理过程检查设备状态,确定中断原因,进行相应处理如果前一I/O请求完成,启动排队的下一请求简化示例:Unix设备访问过程 Unix的设备独立性软件层设备开关表实际是一个按照设备类型定义的函数指针结构体具体设备驱动程序在初始化时用自己提供的函数填入该结构体所有同类设备的结构体合起来构成设备开关表例:Unix块设备开关表示意简化示例:Unix设备访问过程 Unix的设备独立性软件层设备文件是应用程序访问设备的通用入口记录了设备文件名到设备驱动程序入口的对应例:设备文件信息 brw-rw----. 1 root disk 7, 0 Nov 1 19:00 /dev/loop0 crw--w----. 1 root tty 4, 1 Nov 1 19:00 /dev/tty1 简化示例:Unix设备访问过程简化示例假想场景一个应用程序要读取/dev/hd0上的某一块内容设备独立性软件工作过程根据设备文件, /dev/hd0的主设备号是0,对应程序开关表项是gd开头的一行基于/dev/hd0的从设备号和要读取的块号,设备独立性软件构造请求数据结构bp 调用gdstrategy(bp),把I/O请求块挂到I/O请求队列尾部简化示例:Unix设备访问过程简化示例设备驱动程序工作过程在gdstrategy(bp)函数内,调用gdaddr(bp),把I/O请求块中的逻辑块号转换为物理块号如果当前设备空闲,调用gdstart(),从I/O请求队列头部取出一个I/O请求块进行处理,发出相应I/O命令,启动磁盘设备磁盘中断处理过程检查设备状态如果出错,尝试重做以便排除错误若上次操作成功完成,继续查找I/O请求队列是否为空,若非空调用gdstart() A.6 文件系统管理文件系统的任务文件系统的核心功能实例:FAT文件系统格式从应用角度看文件系统文件系统的任务文件系统的核心任务按文件名存取文件文件系统的主要功能实施对文件空间的管理实施对文件目录的管理实施对存储器空间的分配和回收提供文件访问保护为应用程序提供文件访问接口 文件系统的核心功能文件空间的管理记录哪些磁盘块的内容属于同一个文件常用文件空间管理方法连续方式文件占据连续的若干磁盘块,只需要记起始块号和长度适用于只读或顺序访问设备上的文件系统(光盘或磁带),主要用作备份介质连续方式不能用于管理经常改变的文件系统典型例子:ISO9660 文件系统的核心功能常用文件空间管理方法(续)链接方式文件占据的离散磁盘块通过链表查找为了提高链表访问效率,一般通过独立于文件数据的文件分配表FAT显式保存链接信息典型例子:FAT文件系统索引方式文件占据的离散磁盘块通过索引表查找为了使索引表能够适应文件动态增长并管理大小差异巨大的文件,一般采用混合索引方式典型例子:EXT2文件系统 文件系统的核心功能文件目录的管理实现从文件名到文件内容访问入口的映射文件目录的组织方式一般作为顺序存储的记录文件文件目录记录项:保存文件属性信息主要信息:文件名、文件类型、文件长度、文件盘块位置其他信息:存取控制相关、文件访问相关文件目录记录项的两种处理方式文件名与其他属性一起存放:FAT 文件名与其他属性分来存放:EXT2 文件系统的核心功能存储器空间的分配和回收记录磁盘块的分配/空闲状态常用方法空闲盘块表:将空闲盘块号记入数组中位示图:用1bit代表一个盘块的空闲状况一种在FAT中变化:一个表目对应一个盘块成组管理:把相关数据结构以组为单位分散到磁盘空闲块中成组链接法:分组+空闲表成组位示图:分组+位示图实例:FAT文件系统格式磁盘布局 引导记录中关键数据结构:BPB 主要内容:磁盘总空间、每簇扇区数、FAT占用扇区数、根目录长度等目录项内容实例:FAT文件系统格式 FAT实例分析(FAT16) 00000200 f8 ff ff ff 00 00 ff ff 05 00 06 00 ff ff 08 00 00000210 09 00 0a 00 0b 00 0c 00 0d 00 0e 00 0f 00 10 00 00000220 11 00 12 00 13 00 14 00 15 00 16 00 17 00 18 00 ... ... 00000300 81 00 82 00 83 00 84 00 85 00 86 00 87 00 88 00 00000310 89 00 8a 00 8b 00 8c 00 8d 00 ff ff ff ff 90 00 00000320 91 00 92 00 93 00 94 00 95 00 96 00 97 00 ff ff 从FAT中可以看出有如下6个文件:0x03簇、0x04~0x06簇、0x07~0x8d簇、0x8e簇、0x8f~0x97簇实例:FAT文件系统格式根目录分析目录文件DIR-1、普通文件TESTFI~1的首簇号分别是0x03、0x04,对应前述FAT中的头两个文件 0000f200 41 64 00 69 00 72 00 2d 00 31 00 0f 00 65 00 00 |Ad.i.r.-.1...e..| 0000f210 ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |................| 0000f220 44 49 52 2d 31 20 20 20 20 20 20 10 00 00 12 10 |DIR-1 .....| 0000f230 8e 3b 8e 3b 00 00 12 10 8e 3b 03 00 00 00 00 00 |.;.;.....;......| 0000f240 41 74 00 65 00 73 00 74 00 66 00 0f 00 3c 69 00 |At.e.s.t.f...