嵌入式操作系统基础ppt课件_第1页
嵌入式操作系统基础ppt课件_第2页
嵌入式操作系统基础ppt课件_第3页
嵌入式操作系统基础ppt课件_第4页
嵌入式操作系统基础ppt课件_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式操作系统补充:操作系统基础,主讲教师:谢谦 计算机大楼501,1,嵌入式操作系统概述,A.1 操作系统范围界定 A.2 操作系统的运行 A.3 程序的并发运行 A.4 内存管理 A.5 外部设备管理 A.6 文件系统管理,2,A.1 操作系统范围界定,操作系统的层次 认识内核 用户态和核心态 内核对外服务接口,3,操作系统的层次,用户对操作系统的印象来自对外层软件的操作经验 操作系统课程重点关注内核 中间层次主要与应用开发相关 内核是理解OS关键,4,认识内核,直观认识1:磁盘上对应哪个(哪些)文件? Linux:vmlinuz(经过压缩,典型大小10MB以内) Windows:多个文件

2、(WindowsSystem32目录下)Ntoskrnl.exe、HAL.Dll、NTDll.Dll、Win32k.Sys,还有很多驱动程序模块 直观认识2:在内存中占据多大空间? 与硬件配置、软件负载相关 很难界定内核占用内存空间的具体数值 真正的区分方法:内核运行于核心态,5,用户态和核心态(系统态),为什么要区分用户态和核心态 保护操作系统代码免遭破坏 避免应用程序代码相互之间干扰 内核代码(且只有内核代码)运行于核心态 不同的“态” 靠CPU硬件实现 CPU寄存器中设定保护级状态位,据此对当前指令的执行权限进行控制 系统启动时一般处于非保护状态,当内核代码初始化时设置区分运行态并保护自

3、身,6,用户态和核心态(系统态),特权指令和非特权指令 CPU指令集中部分关系到系统全局的指令被归入特权指令,只有在核心态下可执行 其他指令作为非特权指令,在核心态和用户态均可执行 特权指令的例子:外部设备访问、开关中断、修改存储器管理寄存器、停机、转换执行状态等 核心态的另一特权:内存访问能力 越权执行时:产生异常(中断),7,内核对外服务接口:系统调用,通过CPU和OS内核软硬件结合的保护机制,系统资源的管理权始终在内核代码控制下,应用程序无法直接访问 另一方面,应用程序又必须访问这些资源否则应用程序几乎无法作任何有价值的事情,甚至无法运行 因此,内核需要在不破坏自身保护机制前提下,把应用

4、程序需要用到的资源服务功能以某种形式提供出来,8,内核对外服务接口:系统调用,OS内核会选取应用程序需要访问的系统功能,以子程序(过程)方式实现,供应用程序调用 但是不允许应用程序采用一般的过程调用方式来直接调用这些过程,而是采用系统调用这种特殊的调用方式,9,内核对外服务接口:系统调用,系统调用区别于一般的过程调用 调用者和被调用者运行在不同状态,调用者在用户态、被调用者在核心态运行 调用通过特殊的指令实现:陷入指令或软中断指令进入 intel芯片:int指令(Linux使用int 0 x80,Windows使用int 0 x2e) arm芯片:swi指令(swi 0,或swi 调用号) 内

5、核之外,通过C函数库对系统调用进行封装,从而屏蔽这些细节,10,内核对外服务接口:系统调用,系统调用的处理步骤,11,A.2 操作系统的运行,系统初启 内核正常运行:中断驱动 应用程序的运行 系统安装,12,系统初启,CPU怎样工作? CPU正常加电时,会在时钟信号激励下不断地进行取指、执行的循环(取指令、解码、取操作数、执行指令、存结果等) 指令要从存储器中读取,对应地址由CPU内部特定寄存器决定(PC,程序计数器) PC的改变:自动增加(顺序执行)、跳转指令、外部中断和内部异常 初始加电时,CPU会进入特定状态,PC也会被初始化为一个固定的值 intel芯片:实模式,FFFF:0000=0

6、 xFFFF0 ARM芯片:0 x0,13,系统初启,基于BIOS模式计算机的启动过程(EFI有所区别) 加电,CPU初始化,到固定地址取指开始执行,激活BIOS程序; BIOS程序检测系统配置;加载MBR程序 MBR程序加载OS Loader;OS Loader加载OS 进行OS初始化:根据系统配置等准备系统表格;加载Driver,标识设备等 创建系统初始进程,进而建立其它进程 控制权交给调度程序,进入OS正常控制,14,内核正常运行:中断驱动,当系统启动完成后,根据内核调度程序的调度结果,CPU会转入用户态执行某个应用程序的代码,其后内核代码仅在需要时才会运行 这种“需要”可以是: 外部设

7、备有事件发生,需要内核代码处理 用户态程序执行错误,需要内核代码处理 用户态程序需要使用内核提供的功能 对内核的“需求”通过中断来体现,即内核代码通过各种中断入口反复执行,15,内核正常运行:中断驱动,中断机制的作用 使CPU能够转入执行预设的例程,以响应突发事件或处理异常情况 中断响应 CPU中止当前指令或下一条指令;保存当前运行状态;转入相应处理程序(通过硬件机制自动实现);执行完毕后返回断点继续执行 中断是实现OS功能的基础 中断使得立即处理紧急事件成为可能 中断是实现处理机与外设并行的基础 中断是实现多道程序之间调度切换的基础 中断是实现系统调用的基础,16,内核正常运行:中断驱动,C

8、PU的中断源 内部:执行指令过程中由CPU自身产生,包括指令异常和陷阱(软中断)指令 外部:硬件中断(可屏蔽中断和不可屏蔽中断),通过中断控制器接到CPU的引脚 内部中断 内存访问相关异常是现代OS内存管理的基础 软中断,是系统调用的唯一入口 硬件中断 I/O设备通过可屏蔽中断通知CPU有事件发生,是设备驱动程序工作基础 时钟中断,是分时调度的触发来源,17,应用程序的运行,一些基本概念 程序一般以二进制可执行文件形式存在于磁盘上 CPU执行的指令和访问的数据须预先被装入内存 OS内核要负责读取可执行文件装入内存 执行文件的格式 由OS内核装入内存,规定了执行文件中必须提供的信息(如内存区域划

9、分、外部模块入口等) 由编译、链接程序生成,需符合OS规定的格式 常见的执行文件格式:Windows的PE,Linux的ELF,一般上述关键信息都存在于“文件头部”,18,应用程序的运行,应用程序运行过程中与内核的关系 最初的创建和装入 由另一个程序发起,OS内核实施 程序执行过程中要时常转入执行内核代码 因为需要OS内核的服务而产生系统调用 外部设备发出中断信号 程序执行完成后,要求OS内核结束自身,19,OS内核与应用程序的交替执行,20,应用程序的运行,一个简化实例 场景 Windows下通过开始菜单打开记事本程序 输入一些内容 然后保存到文件,21,应用程序的运行,一个简化实例 分析

10、显示开始菜单的程序explorer.exe explorer程序发现快捷方式对应notepad.exe explorer程序发出系统调用,要求内核执行notepad.exe 内核读入notepad.exe文件,初始化内存中数据结构,读入代码和数据 内核调度程序选定notepad程序执行,返回用户态,从其执行入口处开始执行,22,应用程序的运行,一个简化实例 分析(续) notepad程序需要OS内核显示其用户界面,进行一系列的系统调用,完成界面显示 notepad程序需要调用OS内核功能来获取输入事件(鼠标和键盘),调用相应系统调用 如果没有输入事件发生(notepad程序逻辑无法继续),OS

11、内核会调度CPU执行其他程序 有输入事件发生(例如按键),系统调用返回,notepad程序获得输入,进行相应处理(放入缓冲区),如有必要进一步调用系统调用(例如字符回显),23,应用程序的运行,一个简化实例 分析(续) 上述获取输入事件、处理输入过程反复进行 如果输入事件对应保存文件,调用相应系统调用创建文件,并将缓冲区内容写入 如果输入事件对应退出程序,调用相应系统调用,结束用户态程序逻辑的执行 OS内核代码释放notepad程序所占据的资源,该程序运行结束 简化:如果实际跟踪系统调用会看到数目及其庞大,24,操作系统安装,操作系统安装的目标 安装完成后,使OS可以自行启动 OS安装的位置与

12、系统类型、引导方式相关 安装的一般过程与系统类型相关 对于通用计算机,一般安装过程将OS部署在硬盘上,过程相对简单、通用 对于嵌入式系统,安装过程有较大区别,引导程序、操作系统、文件系统需分别安装,一般安装到flash存储,要通过特殊操作方法进行部署,经常被称为“刷机”、“烧写”,25,操作系统安装,通用计算机OS一般安装过程 从安装介质加载并启动OS,检测系统配置,运行安装程序 运行分区工具对硬盘进行分区,将启动代码复制到硬盘特定区域(MBR,.) 格式化硬盘分区(制作文件系统),将OS内核及所选软件包复制到硬盘分区 对OS部件进行设置,指定启动使用的OS内核及相关参数 重新启动,用新安装内

13、核启动OS 进一步配置系统(如网络设置等),26,A.3 程序的并发运行,程序的顺序执行与并发执行 进程的引入 进程的创建与撤销 进程的调度和切换 线程的引入 同步、互斥和进程间通信,27,程序的顺序执行与并发执行,程序的顺序执行 前一程序执行完成,后一程序才能开始 问题:CPU利用率低,程序在执行过程中的I/O操作,会导致CPU空转等待 程序的并发执行 多个程序都装入内存等待执行,当一个程序因I/O不能继续执行时,CPU可以转而执行其他程序,从而提高了CPU利用率 并发概念(区别于并行):微观看任一时刻只有一个程序在运行,宏观看一段时间内多个程序都在运行,28,程序的顺序执行与并发执行,并发

14、执行增加了操作系统设计难度 多个程序都装入内存,互相不能干扰(属于内存管理功能) 需要记录内存中程序的不同状态:有一个正在运行,有一些随时可以运行,有一些等待I/O事件而不能执行 当运行中的程序因为I/O等原因不能继续运行时,需要在可以运行的程序中选一个,转去执行新选中程序。在此过程中需要保存前一程序的执行现场,保证以后能再次正确运行,29,进程的引入,当OS需要把程序的运行作为一个管理对象时,需要引入相应的数据结构 程序在内存中的指令和数据不能修改,否则会影响程序执行逻辑 OS需要为每一个在内存中的程序附加一个数据结构,由OS代码进行修改和访问,在其中记录程序状态、保存执行现场等 这种引入管

15、理数据结构后可以被OS管理的程序被称为进程(process),30,进程的引入,进程控制块PCB 为管理进程所引入的数据结构,记录了系统管理所需的全部信息 OS根据PCB而感知进程的存在,PCB是进程存在的唯一标志 PCB会先于程序的载入而创建,31,进程的引入,PCB的内容 进程标志符:包括唯一的进程号,以及所属用户号、创建此进程的父进程号等 处理机状态(断点信息):进程切换时保存的处理机中各种寄存器的内容 进程调度信息:记录了进程调度相关的信息(状态、调度优先级、等待事件等) 其他信息:如内存中程序区和数据区的地址,打开的资源清单,同步和通信机制等,32,进程的引入,进程的基本状态 运行

16、就绪 阻塞,33,进程的创建与撤销,进程的创建 除了个别进程在系统启动时由OS内核直接创建以外,其他进程都是另外进程通过系统调用要求内核创建 这种进程之间的创建关系形成一个树形结构,34,进程的创建与撤销,进程的创建 OS内核创建新进程的过程 申请一个空闲的PCB 为新进程分配资源 对PCB初始化 将PCB插入就绪队列 返回进程号,35,进程的创建与撤销,进程的撤销 进程在完成其任务后,应该撤销,以便释放所占据资源 正常结束的进程会主动调用进程终止系统调用,从而触发进程撤销 一些程序执行过程中发生的异常情况可能导致OS内核直接撤销进程,36,进程的创建与撤销,进程的撤销 OS内核撤销进程的过程

17、 找到指定进程的PCB 回收该进程所占用的全部资源 处理子孙进程(终止所有子孙进程并回收它们所占用的资源,或者“过继”以免成为孤儿) 将被终止进程的PCB从原来队列中摘走,37,进程的调度和切换,进程调度算法 调度算法的目的是在多个候选者中选出一个进程作为下面要执行的进程 不同的调度算法会影响系统的总体性能,是OS设计中的关键问题 从理解OS工作机制角度出发,不必关心调度算法的细节,38,进程的调度和切换,进程切换(上下文切换) 当调度算法选中新进程后执行 首先保存当前进程的执行现场:保存将要执行的指令地址,把各类CPU寄存器存到PCB中特定区域 然后找到新选中进程的PCB,读取上次保存的执行

18、现场信息装入对应CPU寄存器,转到上次断点处指令开始执行 通用的进程切换程序能保证进程多次被调度执行时除了时间间断之外,与连续执行的状态完全一致,39,进程的调度和切换,进程调度的时机:调度算法何时执行? 以Unix/Linux为例,主要有两类时机 一是当前进程主动放弃CPU 进程终止,或因为请求I/O进入阻塞状态 二是OS内核决定终止当前进程执行 中断处理程序中发现需要重新调度,如当前进程时间片用完,或高优先级进程进入就绪状态 中断处理程序中一般不会直接调用调度算法,而是设置一个全局标志 当OS内核从核心态返回用户态之前,会检查该标志,如置位则调用调度程序进而切换进程,40,进程的调度和切换

19、,进程调度方式 非抢占方式 处理机分配给某进程后便一直执行,直到该进程主动放弃,OS不抢占进程的执行 抢占方式 OS内核可根据某种原则停止当前进程的执行,转而执行另一进程 一般的操作系统内核不可抢占,即:只有从核心态返回用户态时才会发生进程切换 一些实时OS要求内核可抢占,以最大限度保证实时进程优先运行。内核抢占将大大增加OS的实现难度,41,线程的引入,OS加入进程管理后,可以让不同应用程序并发执行 如果一个应用程序内部希望并发执行时,进程模型很不方便 应用程序需要并发的例子:用word进行耗时的打印操作时还希望进行输入处理;用浏览器查看同时包含动画和音频的网页 如果打印和输入处理在不同进程

20、,其数据区相互隔离,难以协调 如果打印和输入处理在同一进程,没有程序在两者之间进行通用的切换,只能在程序主循环中反复查询,增加编程难度,42,线程的引入,进程的角色 传统进程是两种角色的混合 资源分配的单位:主要表现为进程间的内存隔离 CPU调度的单位:以进程为单位进行调度切换 线程(Thread)的引入 保留进程作为资源分配单位,以更轻量级的线程作为CPU调度单位 多个线程存在于同一进程中,共享资源,独立调度执行 多线程提高了应用的并发能力,也加大了编程难度,43,同步、互斥和进程间通信,同步和互斥:解决并发中的问题 同步:解决并发进程的协作关系 例:多线程流媒体播放下载解码 互斥:解决并发

21、进程的资源争用关系 例:多窗口联机售票查询和售出不可交叠 广义的同步机制:包括同步和互斥 同步机制早期主要针对OS内核编程,因为并发的应用进程之间默认内存隔离,没有共用资源 多线程应用编程必须考虑同步互斥,44,同步、互斥和进程间通信,进程间通信(IPC) 由于不同进程间的内存隔离,如果不同进程间需要交换信息,需要OS内核中转 主要的高级进程间通信机制包括:共享存储区、管道机制、消息机制 同一进程的线程间因为共享内存空间,没有通信需求,但是有普遍的同步互斥需求 对于采用进程间通信机制的不同进程,采用共享存储区机制需要考虑同步问题,管道和消息机制自带同步机制,45,A.4 内存管理,内存管理目标

22、和功能 基本概念 内存管理方式演变 基本分页管理 基于分页的虚拟存储管理 进程地址空间的布局,46,内存管理目标和功能,内存管理的目标 将多道程序同时装入内存,并使其互不干扰;尽可能提高内存利用率和访问效率 内存管理的功能 实现内存的分配和回收 提供实现地址变换所需的信息 利用外存“扩充”内存容量 实现存储保护,避免越权访问,47,基本概念,名字空间(符号地址) 源程序中通过变量名和标号标识地址 逻辑地址(相对地址) 源程序经汇编/编译后形成目标代码,通常约定模块首地址为0,其余地址都相对于首地址而编址 物理地址(绝对地址) 内存中存储单元的地址,通过总线寻址 地址转换(地址映射) CPU执行

23、指令时内部使用逻辑地址,为了正确访问存储单元,需将其转换为可由总线直接寻址的物理地址,这一过程称为地址映射,48,内存管理方式演变,逻辑地址连续是内存管理的基本前提 CPU执行程序时,大多数情况下执行一条指令后程序计数器PC自动增加 若程序逻辑地址不连续,则不能顺序执行 早期OS采用连续分区管理方式 早期CPU的内存管理部件简单,只能进行简单地址映射 连续的逻辑地址要求连续的物理地址 现代OS一般采用离散分区管理 可以把连续逻辑地址映射到离散物理地址 离散映射可以基于定长的分页或变长的分段,49,基本分页管理,分页基本思想 空间划分 页面:将用户进程的地址空间划分成大小相等的区域,称为页面(p

24、age), 从0开始编号 页框:将内存空间也划分成与页面大小相等的区域,称为页框(frame),从0开始编号 内存分配 为进程分配内存时以页框为单位,将进程中的编号连续的页面装入到多个页框中(不需要相邻),50,基本分页管理,页面和页框对应示意,51,基本分页管理,页表 页表是实现分页管理的关键数据结构 页表由OS设置,供CPU存储管理部件使用 作用:从页面号到页框号的映射 页表一般存放在内存中 页表的基址(物理地址)及长度由页表寄存器给出,52,基本分页管理,分页地址变换机构(硬件实现),53,基本分页管理,分页地址变换机构(硬件实现) 将逻辑地址分成页面号和页内地址 根据页表寄存器中页表起

25、始地址和页号查找页表,找到对应于该页式地址的页表目 页表目地址=页表起始地址+页面号*页表目长度 取出页面号对应的页框号,和逻辑地址的页内地址相加形成物理地址 物理地址页框号页框长度页内位移量 按物理地址访问内存,54,基于分页的虚拟存储管理,基本分页管理的优点和问题 实现了页框的离散分配,相对于连续分区管理,提高了物理内存的利用率 仍然要求在程序运行前把所有的指令和数据装入内存,这实际上并非必要 局部性原理 程序运行过程中,CPU访问的逻辑地址从时间和空间两方面都是局部化的 局部性原理源自人们编程时的自然习惯,55,基于分页的虚拟存储管理,虚拟存储器管理 基于局部性原理,程序运行前没有必要全

26、部装入内存,仅须把将要运行的页面装入即可 运行中如访问的页面未在内存中(缺页),再动态将该页面调入内存 如物理内存已用完,则按某种置换算法将内存中的一些页面交换到外存 虚拟存储器是指具有请求页调入功能和页置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统,56,基于分页的虚拟存储管理,请求分页系统 在基本分页系统基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储器系统 允许只装入少量程序和数据页面,便启动运行;以后在硬件支持下通过调页功能和置换功能,陆续将要访问的页面调入内存,同时把暂不访问的页面换到外存 请求分页系统需要硬件支持和管理软件 硬件支持:扩展页表机制、缺页中断机构和

27、地址变换机构 管理软件:请求调页功能和页置换功能的软件,57,基于分页的虚拟存储管理,硬件支持:扩展页表表目 状态位:指示该页是否已调入内存(OS置/CPU用,触发缺页中断) 访问位:记录该页在一段时间内是否被访问过(CPU置/OS用,选择换出页) 修改位:表示该页调入内存后是否被修改过(CPU置/OS用,决定是否需写到外存) 外存地址:指出该页在外存上的地址(OS置/OS用,调入页面时使用),58,基于分页的虚拟存储管理,硬件支持:缺页中断 在请求分页系统中,当CPU访问的页不在内存时,CPU产生一缺页中断,触发OS内核的请求调页代码 缺页中断与一般中断的区别: 在指令执行期间产生和处理中断

28、 中断处理完后会重启指令执行 一条指令在执行期间,可能产生多次缺页中断,59,基于分页的虚拟存储管理,管理软件 请求调页:由缺页中断触发,通过读取CPU相关寄存器,可以获得引发缺页的页面号,从对应页表表目可获得该页面对应的外存地址(来自交换区或执行文件),分配空闲页框后读入,最后更新页表表目 页面置换:页面置换一般是当OS发现空闲页框数不多时自动执行,把最近长期不用的页框内容换出,标记为空闲。 为了提高效率,页面置换和请求调页各自独立运行,保证在调页时总是有空闲页框,60,进程地址空间的布局,进程的地址空间针对其逻辑地址 地址空间大小与CPU架构相关,例如:32位CPU最大4GB(232) 不

29、同OS的进程地址空间分配可以不同,61,进程地址空间的布局,Linux下不同进程地址空间映射 内核地址空间部分固定且连续映射,所有进程中此区域共享(即页表中这一部分内容相同) 不同进程用户地址空间部分映射各不相同,62,63,A.5 外部设备管理,对设备硬件的访问 设备分类 设备独立性 设备驱动程序 简化示例:Unix设备访问过程,64,对设备硬件的访问,CPU对外部设备的访问 外部设备一般通过设备控制器进行管理 设备控制器的管理寄存器使CPU可以控制设备动作、交换数据、查询状态 控制寄存器:CPU写,用于控制器接收命令 数据寄存器:双向/单向访问,进行数据交换 状态寄存器:CPU读,用于查询

30、设备当前状态 设备控制器的管理寄存器编址 独立的I/O空间编址:CPU有专用IN、OUT指令 与内存一起编址,65,对设备硬件的访问,I/O控制方式 问题由来:高速CPU如何适应低速设备 轮询方式 CPU循环读取状态寄存器,确定外部设备处于特定状态时才写控制寄存器或读写数据寄存器 CPU在轮询期间,不能执行其他程序 中断方式 外部设备发生的事件通过CPU中断线通知 CPU在向控制寄存器写入,启动设备动作后即可转入其他程序执行,CPU和I/O设备并行 中断处理程序一般在设备驱动程序中提供,66,对设备硬件的访问,I/O控制方式 DMA方式 对于传输大量数据的磁盘、网卡而言,虽然中断机制使CPU和

31、设备可以并行工作,但是从设备控制器上的缓冲区到内存之间的数据交换如果还是需要CPU介入,会降低CPU利用率 引入DMA机制用于提高大量数据从设备控制器到内存的交换,DMA控制器利用CPU访问内存的间隙进行数据交换 DMA控制器在设备控制器上提供,需要CPU启动DMA控制器的动作,相应代码在设备驱动程序中提供,67,设备分类,与设备驱动类型相关分类 字符设备 以字符为单位传输数据,数据量小,速度慢 设备不可寻址,数据不可重用 块设备 以定长块为单位传输数据,数据量大,速度快 设备可寻址,数据可重复访问 网络设备 以不定长帧为单位传输数据,数据量大,速度快 设备不可寻址,数据不可重用,68,69,

32、设备独立性,设备独立性(设备无关性)概念 指OS设备管理为上层提供一致的访问入口并屏蔽访问细节,使上层独立于物理设备 设备独立性软件 在OS内核设备管理中设计的一个软件层次 提供设备访问的一致入口和驱动框架 设备开关表(与设备类型相关) 逻辑设备名 实现独立于设备的通用功能 设备保护,缓冲区管理,差错控制,70,设备驱动程序,设备驱动程序特点 与设备硬件、设备控制器寄存器、I/O控制方式密切相关 在核心态运行,作为内核一部分 一般由硬件厂商编写,OS规定编写框架 设备驱动程序功能 接收设备独立性软件发来抽象命令,转换为设备相关的底层操作序列 检查设备状态,发出I/O命令或将操作排队 响应中断请

33、求,调用中断处理程序,71,设备驱动程序,设备驱动程序处理过程 现代OS设备访问一般是中断驱动的,处理过程分两部分:启动过程和中断处理过程 启动过程 检查I/O请求合法性 检查设备状态,确定是否可以启动请求的操作 如果需要,传送参数/设置工作模式 向控制寄存器发出命令,启动设备 中断处理过程 检查设备状态,确定中断原因,进行相应处理 如果前一I/O请求完成,启动排队的下一请求,72,简化示例:Unix设备访问过程,Unix的设备独立性软件层 设备开关表 实际是一个按照设备类型定义的函数指针结构体 具体设备驱动程序在初始化时用自己提供的函数填入该结构体 所有同类设备的结构体合起来构成设备开关表

34、例:Unix块设备开关表示意,73,简化示例: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,设备类型: 决定用哪个设备开关表,主设备号: 访问设备开关表的索引,从设备号: 驱动程序找具体设备,74,简化示例:Unix设备访问过程,简化示例 假想场景 一个应用程序要读取/dev/hd0上的某一块内容 设备独

35、立性软件工作过程 根据设备文件, /dev/hd0的主设备号是0,对应程序开关表项是gd开头的一行 基于/dev/hd0的从设备号和要读取的块号,设备独立性软件构造请求数据结构bp 调用gdstrategy(bp),把I/O请求块挂到I/O请求队列尾部,75,简化示例:Unix设备访问过程,简化示例 设备驱动程序工作过程 在gdstrategy(bp)函数内,调用gdaddr(bp),把I/O请求块中的逻辑块号转换为物理块号 如果当前设备空闲,调用gdstart(),从I/O请求队列头部取出一个I/O请求块进行处理,发出相应I/O命令,启动磁盘设备 磁盘中断处理过程 检查设备状态 如果出错,尝

36、试重做以便排除错误 若上次操作成功完成,继续查找I/O请求队列是否为空,若非空调用gdstart(),76,A.6 文件系统管理,文件系统的任务 文件系统的核心功能 实例:FAT文件系统格式 从应用角度看文件系统,77,文件系统的任务,文件系统的核心任务 按文件名存取文件 文件系统的主要功能 实施对文件空间的管理 实施对文件目录的管理 实施对存储器空间的分配和回收 提供文件访问保护 为应用程序提供文件访问接口,78,文件系统的核心功能,文件空间的管理 记录哪些磁盘块的内容属于同一个文件 常用文件空间管理方法 连续方式 文件占据连续的若干磁盘块,只需要记起始块号和长度 适用于只读或顺序访问设备上

37、的文件系统(光盘或磁带),主要用作备份介质 连续方式不能用于管理经常改变的文件系统 典型例子:ISO9660,79,文件系统的核心功能,常用文件空间管理方法(续) 链接方式 文件占据的离散磁盘块通过链表查找 为了提高链表访问效率,一般通过独立于文件数据的文件分配表FAT显式保存链接信息 典型例子:FAT文件系统 索引方式 文件占据的离散磁盘块通过索引表查找 为了使索引表能够适应文件动态增长并管理大小差异巨大的文件,一般采用混合索引方式 典型例子:EXT2文件系统,80,文件系统的核心功能,文件目录的管理 实现从文件名到文件内容访问入口的映射 文件目录的组织方式 一般作为顺序存储的记录文件 文件

38、目录记录项:保存文件属性信息 主要信息:文件名、文件类型、文件长度、文件盘块位置 其他信息:存取控制相关、文件访问相关 文件目录记录项的两种处理方式 文件名与其他属性一起存放:FAT 文件名与其他属性分来存放:EXT2,81,文件系统的核心功能,存储器空间的分配和回收 记录磁盘块的分配/空闲状态 常用方法 空闲盘块表:将空闲盘块号记入数组中 位示图:用1bit代表一个盘块的空闲状况 一种在FAT中变化:一个表目对应一个盘块 成组管理:把相关数据结构以组为单位分散到磁盘空闲块中 成组链接法:分组+空闲表 成组位示图:分组+位示图,82,实例:FAT文件系统格式,磁盘布局 引导记录中关键数据结构:BPB 主要内容:磁盘总空间、每簇扇区数、FAT占用扇区数、根目录长度等 目录项内容,83,实例:FAT文件系统格式,FAT实例分析(FAT16) 00000200 f8 ff

温馨提示

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

最新文档

评论

0/150

提交评论