《嵌入式操作系统基础PPT优秀课件》由会员分享,可在线阅读,更多相关《嵌入式操作系统基础PPT优秀课件(87页珍藏版)》请在金锄头文库上搜索。
1、嵌入式操作系统嵌入式操作系统补充:操作系统基础补充:操作系统基础主讲教师:谢谦计算机大楼5012021/6/31嵌入式操作系统概述A.1 操作系统范围界定A.2 操作系统的运行A.3 程序的并发运行A.4 内存管理A.5 外部设备管理A.6 文件系统管理2021/6/32A.1 操作系统范围界定操作系统的层次认识内核用户态和核心态内核对外服务接口2021/6/33操作系统的层次用户对操作系统的印象来自对外层软件的操作经验操作系统课程重点关注内核中间层次主要与应用开发相关内核是理解OS关键图形用户界面环境工具软件函数库应用程序框架操作系统内核2021/6/34认识内核直观认识1:磁盘上对应哪个(
2、哪些)文件?Linux:vmlinuz(经过压缩,典型大小10MB以内)Windows:多个文件(WindowsSystem32目录下)Ntoskrnl.exe、HAL.Dll、NTDll.Dll、Win32k.Sys,还有很多驱动程序模块直观认识2:在内存中占据多大空间?与硬件配置、软件负载相关很难界定内核占用内存空间的具体数值真正的区分方法:内核运行于核心态2021/6/35用户态和核心态(系统态)为什么要区分用户态和核心态保护操作系统代码免遭破坏避免应用程序代码相互之间干扰内核代码(且只有内核代码)运行于核心态不同的“态” 靠CPU硬件实现CPU寄存器中设定保护级状态位,据此对当前指令的
3、执行权限进行控制系统启动时一般处于非保护状态,当内核代码初始化时设置区分运行态并保护自身2021/6/36用户态和核心态(系统态)特权指令和非特权指令CPU指令集中部分关系到系统全局的指令被归入特权指令,只有在核心态下可执行其他指令作为非特权指令,在核心态和用户态均可执行特权指令的例子:外部设备访问、开关中外部设备访问、开关中断、修改存储器管理寄存器、停机、转换断、修改存储器管理寄存器、停机、转换执行状态等执行状态等核心态的另一特权:内存访问能力越权执行时:产生异常(中断)2021/6/37内核对外服务接口:系统调用通过CPU和OS内核软硬件结合的保护机制,系统资源的管理权始终在内核代码控制下
4、,应用程序无法直接访问另一方面,应用程序又必须访问这些资源否则应用程序几乎无法作任何有价值的事情,甚至无法运行因此,内核需要在不破坏自身保护机制前提下,把应用程序需要用到的资源服务功能以某种形式提供出来2021/6/38内核对外服务接口:系统调用OS内核会选取应用程序需要访问的系统功能,以子程序(过程)方式实现,供应用程序调用但是不允许应用程序采用一般的过程调用方式来直接调用这些过程,而是采用系统调用这种特殊的调用方式2021/6/39内核对外服务接口:系统调用系统调用区别于一般的过程调用调用者和被调用者运行在不同状态,调用者在用户态、被调用者在核心态运行调用通过特殊的指令实现:陷入指令或软中
5、断指令进入intel芯片:int指令(Linux使用int 0x80,Windows使用int 0x2e)arm芯片:swi指令(swi 0,或swi 调用号)内核之外,通过C函数库对系统调用进行封装,从而屏蔽这些细节2021/6/310内核对外服务接口:系统调用系统调用的处理步骤xyz()system_call: sys_xyz() ret_from_sys_call:iretxyz()int 0x80sys_xyz()在应用程序 在libc标准库 系统调用 系统调用调用中的 中的封装例程 处理程序 服务例程系统调用用户态内核态2021/6/311A.2 操作系统的运行系统初启内核正常运行:
6、中断驱动应用程序的运行系统安装2021/6/312系统初启CPU怎样工作?CPU正常加电时,会在时钟信号激励下不断地进行取指、执行的循环(取指令、解码、取操作数、执行指令、存结果等)指令要从存储器中读取,对应地址由CPU内部特定寄存器决定(PC,程序计数器)PC的改变:自动增加(顺序执行)、跳转指令、外部中断和内部异常初始加电时,CPU会进入特定状态,PC也会被初始化为一个固定的值intel芯片:实模式,FFFF:0000=0xFFFF0ARM芯片:0x02021/6/313系统初启基于BIOS模式计算机的启动过程(EFI有所区别)加电,CPU初始化,到固定地址取指开始执行,激活BIOS程序;
7、BIOS程序检测系统配置;加载MBR程序MBR程序加载OS Loader;OS Loader加载OS进行OS初始化:根据系统配置等准备系统表格;加载Driver,标识设备等创建系统初始进程,进而建立其它进程控制权交给调度程序,进入OS正常控制2021/6/314内核正常运行:中断驱动当系统启动完成后,根据内核调度程序的调度结果,CPU会转入用户态执行某个应用程序的代码,其后内核代码仅在需要时才会运行这种“需要”可以是:外部设备有事件发生,需要内核代码处理用户态程序执行错误,需要内核代码处理用户态程序需要使用内核提供的功能对内核的“需求”通过中断来体现,即内核代码通过各种中断入口反复执行2021
8、/6/315内核正常运行:中断驱动中断机制的作用使CPU能够转入执行预设的例程,以响应突发事件或处理异常情况中断响应CPU中止当前指令或下一条指令;保存当前运行状态;转入相应处理程序(通过硬件机制自动实现);执行完毕后返回断点继续执行中断是实现OS功能的基础中断使得立即处理紧急事件成为可能中断是实现处理机与外设并行的基础中断是实现多道程序之间调度切换的基础中断是实现系统调用的基础2021/6/316内核正常运行:中断驱动CPU的中断源内部:执行指令过程中由CPU自身产生,包括指令异常和陷阱(软中断)指令外部:硬件中断(可屏蔽中断和不可屏蔽中断),通过中断控制器接到CPU的引脚内部中断内存访问相
9、关异常是现代OS内存管理的基础软中断,是系统调用的唯一入口硬件中断I/O设备通过可屏蔽中断通知CPU有事件发生,是设备驱动程序工作基础时钟中断,是分时调度的触发来源2021/6/317应用程序的运行一些基本概念程序一般以二进制可执行文件形式存在于磁盘上CPU执行的指令和访问的数据须预先被装入内存OS内核要负责读取可执行文件装入内存执行文件的格式由OS内核装入内存,规定了执行文件中必须提供的信息(如内存区域划分、外部模块入口等)由编译、链接程序生成,需符合OS规定的格式常见的执行文件格式:Windows的PE,Linux的ELF,一般上述关键信息都存在于“文件头部”2021/6/318应用程序的
10、运行应用程序运行过程中与内核的关系最初的创建和装入由另一个程序发起,OS内核实施程序执行过程中要时常转入执行内核代码因为需要OS内核的服务而产生系统调用外部设备发出中断信号程序执行完成后,要求OS内核结束自身2021/6/319OS内核与应用程序的交替执行引导程序 OS内核程序0程序1程序k程序k+1t.2021/6/320应用程序的运行一个简化实例场景Windows下通过开始菜单打开记事本程序输入一些内容然后保存到文件2021/6/321应用程序的运行一个简化实例分析显示开始菜单的程序explorer.exeexplorer程序发现快捷方式对应notepad.exeexplorer程序发出系
11、统调用,要求内核执行notepad.exe内核读入notepad.exe文件,初始化内存中数据结构,读入代码和数据内核调度程序选定notepad程序执行,返回用户态,从其执行入口处开始执行2021/6/322应用程序的运行一个简化实例分析(续)notepad程序需要OS内核显示其用户界面,进行一系列的系统调用,完成界面显示notepad程序需要调用OS内核功能来获取输入事件(鼠标和键盘),调用相应系统调用如果没有输入事件发生(notepad程序逻辑无法继续),OS内核会调度CPU执行其他程序有输入事件发生(例如按键),系统调用返回,notepad程序获得输入,进行相应处理(放入缓冲区),如有必
12、要进一步调用系统调用(例如字符回显)2021/6/323应用程序的运行一个简化实例分析(续)上述获取输入事件、处理输入过程反复进行如果输入事件对应保存文件,调用相应系统调用创建文件,并将缓冲区内容写入如果输入事件对应退出程序,调用相应系统调用,结束用户态程序逻辑的执行OS内核代码释放notepad程序所占据的资源,该程序运行结束简化:如果实际跟踪系统调用会看到数目及其庞大2021/6/324操作系统安装操作系统安装的目标安装完成后,使OS可以自行启动OS安装的位置与系统类型、引导方式相关安装的一般过程与系统类型相关对于通用计算机,一般安装过程将OS部署在硬盘上,过程相对简单、通用对于嵌入式系统
13、,安装过程有较大区别,引导程序、操作系统、文件系统需分别安装,一般安装到flash存储,要通过特殊操作方法进行部署,经常被称为“刷机”、“烧写”2021/6/325操作系统安装通用计算机OS一般安装过程从安装介质加载并启动OS,检测系统配置,运行安装程序运行分区工具对硬盘进行分区,将启动代码复制到硬盘特定区域(MBR,.)格式化硬盘分区(制作文件系统),将OS内核及所选软件包复制到硬盘分区对OS部件进行设置,指定启动使用的OS内核及相关参数重新启动,用新安装内核启动OS进一步配置系统(如网络设置等)2021/6/326A.3 程序的并发运行程序的顺序执行与并发执行进程的引入进程的创建与撤销进程
14、的调度和切换线程的引入同步、互斥和进程间通信2021/6/327程序的顺序执行与并发执行程序的顺序执行前一程序执行完成,后一程序才能开始问题:CPU利用率低,程序在执行过程中的I/O操作,会导致CPU空转等待程序的并发执行多个程序都装入内存等待执行,当一个程序因I/O不能继续执行时,CPU可以转而执行其他程序,从而提高了CPU利用率并发概念(区别于并行):微观看任一时刻只有一个程序在运行,宏观看一段时间内多个程序都在运行2021/6/328程序的顺序执行与并发执行并发执行增加了操作系统设计难度多个程序都装入内存,互相不能干扰(属于内存管理功能)需要记录内存中程序的不同状态:有一个正在运行,有一
15、些随时可以运行,有一些等待I/O事件而不能执行当运行中的程序因为I/O等原因不能继续运行时,需要在可以运行的程序中选一个,转去执行新选中程序。在此过程中需要保存前一程序的执行现场,保证以后能再次正确运行2021/6/329进程的引入当OS需要把程序的运行作为一个管理对象时,需要引入相应的数据结构程序在内存中的指令和数据不能修改,否则会影响程序执行逻辑OS需要为每一个在内存中的程序附加一个数据结构,由OS代码进行修改和访问,在其中记录程序状态、保存执行现场等这种引入管理数据结构后可以被OS管理的程序被称为进程(process)2021/6/330进程的引入进程控制块PCB为管理进程所引入的数据结
16、构,记录了系统管理所需的全部信息OS根据PCB而感知进程的存在,PCB是进程存在的唯一标志PCB会先于程序的载入而创建进程的组成进程的组成程序程序代码代码PCB数数据据集合集合2021/6/331进程的引入PCB的内容进程标志符:包括唯一的进程号,以及所属用户号、创建此进程的父进程号等处理机状态(断点信息):进程切换时保存的处理机中各种寄存器的内容进程调度信息:记录了进程调度相关的信息(状态、调度优先级、等待事件等)其他信息:如内存中程序区和数据区的地址,打开的资源清单,同步和通信机制等2021/6/332进程的引入进程的基本状态运行就绪阻塞事件发生事件发生如如I/O完成完成进程三进程三状态及
17、转换图状态及转换图运行运行就绪就绪等待事件发生等待事件发生如等待如等待I/O时间片到时间片到调度调度阻塞阻塞系统态系统态用户态用户态2021/6/333进程的创建与撤销进程的创建除了个别进程在系统启动时由OS内核直接创建以外,其他进程都是另外进程通过系统调用要求内核创建这种进程之间的创建关系形成一个树形结构ABDECF父进程父进程祖先进程祖先进程子进程子进程2021/6/334进程的创建与撤销进程的创建OS内核创建新进程的过程申请一个空闲的PCB为新进程分配资源对PCB初始化将PCB插入就绪队列返回进程号2021/6/335进程的创建与撤销进程的撤销进程在完成其任务后,应该撤销,以便释放所占据
18、资源正常结束的进程会主动调用进程终止系统调用,从而触发进程撤销一些程序执行过程中发生的异常情况可能导致OS内核直接撤销进程2021/6/336进程的创建与撤销进程的撤销OS内核撤销进程的过程找到指定进程的PCB回收该进程所占用的全部资源处理子孙进程(终止所有子孙进程并回收它们所占用的资源,或者“过继”以免成为孤儿)将被终止进程的PCB从原来队列中摘走2021/6/337进程的调度和切换进程调度算法调度算法的目的是在多个候选者中选出一个进程作为下面要执行的进程不同的调度算法会影响系统的总体性能,是OS设计中的关键问题从理解OS工作机制角度出发,不必关心调度算法的细节2021/6/338进程的调度
19、和切换进程切换(上下文切换)当调度算法选中新进程后执行首先保存当前进程的执行现场:保存将要执行的指令地址,把各类CPU寄存器存到PCB中特定区域然后找到新选中进程的PCB,读取上次保存的执行现场信息装入对应CPU寄存器,转到上次断点处指令开始执行通用的进程切换程序能保证进程多次被调度执行时除了时间间断之外,与连续执行的状态完全一致2021/6/339进程的调度和切换进程调度的时机:调度算法何时执行?以Unix/Linux为例,主要有两类时机一是当前进程主动放弃CPU进程终止,或因为请求I/O进入阻塞状态二是OS内核决定终止当前进程执行中断处理程序中发现需要重新调度,如当前进程时间片用完,或高优
20、先级进程进入就绪状态中断处理程序中一般不会直接调用调度算法,而是设置一个全局标志当OS内核从核心态返回用户态之前,会检查该标志,如置位则调用调度程序进而切换进程2021/6/340进程的调度和切换进程调度方式非抢占方式处理机分配给某进程后便一直执行,直到该进程主动放弃,OS不抢占进程的执行抢占方式OS内核可根据某种原则停止当前进程的执行,转而执行另一进程一般的操作系统内核不可抢占,即:只有从核心态返回用户态时才会发生进程切换一些实时OS要求内核可抢占,以最大限度保证实时进程优先运行。内核抢占将大大增加OS的实现难度2021/6/341线程的引入OS加入进程管理后,可以让不同应用程序并发执行如果
21、一个应用程序内部希望并发执行时,进程模型很不方便应用程序需要并发的例子:用word进行耗时的打印操作时还希望进行输入处理;用浏览器查看同时包含动画和音频的网页如果打印和输入处理在不同进程,其数据区相互隔离,难以协调如果打印和输入处理在同一进程,没有程序在两者之间进行通用的切换,只能在程序主循环中反复查询,增加编程难度2021/6/342线程的引入进程的角色传统进程是两种角色的混合资源分配的单位:主要表现为进程间的内存隔离CPU调度的单位:以进程为单位进行调度切换线程(Thread)的引入保留进程作为资源分配单位,以更轻量级的线程作为CPU调度单位多个线程存在于同一进程中,共享资源,独立调度执行
22、多线程提高了应用的并发能力,也加大了编程难度2021/6/343同步、互斥和进程间通信同步和互斥:解决并发中的问题同步:解决并发进程的协作关系例:多线程流媒体播放下载解码互斥:解决并发进程的资源争用关系例:多窗口联机售票查询和售出不可交叠广义的同步机制:包括同步和互斥同步机制早期主要针对OS内核编程,因为并发的应用进程之间默认内存隔离,没有共用资源多线程应用编程必须考虑同步互斥2021/6/344同步、互斥和进程间通信进程间通信(IPC)由于不同进程间的内存隔离,如果不同进程间需要交换信息,需要OS内核中转主要的高级进程间通信机制包括:共享存储区、管道机制、消息机制同一进程的线程间因为共享内存
23、空间,没有通信需求,但是有普遍的同步互斥需求对于采用进程间通信机制的不同进程,采用共享存储区机制需要考虑同步问题,管道和消息机制自带同步机制2021/6/345A.4 内存管理内存管理目标和功能基本概念内存管理方式演变基本分页管理基于分页的虚拟存储管理进程地址空间的布局2021/6/346内存管理目标和功能内存管理的目标将多道程序同时装入内存,并使其互不干扰;尽可能提高内存利用率和访问效率内存管理的功能实现内存的分配和回收提供实现地址变换所需的信息利用外存“扩充”内存容量实现存储保护,避免越权访问2021/6/347基本概念名字空间(符号地址)源程序中通过变量名和标号标识地址逻辑地址(相对地址
24、)源程序经汇编/编译后形成目标代码,通常约定模块首地址为0,其余地址都相对于首地址而编址物理地址(绝对地址)内存中存储单元的地址,通过总线寻址地址转换(地址映射)CPU执行指令时内部使用逻辑地址,为了正确访问存储单元,需将其转换为可由总线直接寻址的物理地址,这一过程称为地址映射2021/6/348内存管理方式演变逻辑地址连续是内存管理的基本前提CPU执行程序时,大多数情况下执行一条指令后程序计数器PC自动增加若程序逻辑地址不连续,则不能顺序执行早期OS采用连续分区管理方式早期CPU的内存管理部件简单,只能进行简单地址映射连续的逻辑地址要求连续的物理地址现代OS一般采用离散分区管理可以把连续逻辑
25、地址映射到离散物理地址离散映射可以基于定长的分页或变长的分段2021/6/349基本分页管理分页基本思想空间划分页面:将用户进程的地址空间划分成大小相等的区域,称为页面(page), 从0开始编号页框:将内存空间也划分成与页面大小相等的区域,称为页框(frame),从0开始编号内存分配为进程分配内存时以页框为单位,将进程中的编号连续的页面装入到多个页框中(不需要相邻)2021/6/350基本分页管理页面和页框对应示意0123456进程的进程的逻辑地址空间逻辑地址空间物理内存物理内存012345678910111213页面页框2021/6/351基本分页管理页表页表是实现分页管理的关键数据结构页
26、表由OS设置,供CPU存储管理部件使用作用:从页面号到页框号的映射页表一般存放在内存中页表的基址(物理地址)及长度由页表寄存器给出2021/6/352基本分页管理分页地址变换机构(硬件实现)页表始址 页表长度页表寄存器页表寄存器逻辑地址逻辑地址 页面号 页内地址页框号 页内地址物理地址物理地址+页面号页面号 页框号页框号页表页表0123B=越界中断越界中断2021/6/353基本分页管理分页地址变换机构(硬件实现)将逻辑地址分成页面号和页内地址根据页表寄存器中页表起始地址和页号查找页表,找到对应于该页式地址的页表目页表目地址=页表起始地址+页面号*页表目长度取出页面号对应的页框号,和逻辑地址的
27、页内地址相加形成物理地址物理地址页框号页框长度页内位移量按物理地址访问内存2021/6/354基于分页的虚拟存储管理基本分页管理的优点和问题实现了页框的离散分配,相对于连续分区管理,提高了物理内存的利用率仍然要求在程序运行前把所有的指令和数据装入内存,这实际上并非必要局部性原理程序运行过程中,CPU访问的逻辑地址从时间和空间两方面都是局部化的局部性原理源自人们编程时的自然习惯2021/6/355基于分页的虚拟存储管理虚拟存储器管理基于局部性原理,程序运行前没有必要全部装入内存,仅须把将要运行的页面装入即可运行中如访问的页面未在内存中(缺页),再动态将该页面调入内存如物理内存已用完,则按某种置换
28、算法将内存中的一些页面交换到外存虚拟存储器是指具有请求页调入功能和页置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统2021/6/356基于分页的虚拟存储管理请求分页系统在基本分页系统基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储器系统允许只装入少量程序和数据页面,便启动运行;以后在硬件支持下通过调页功能和置换功能,陆续将要访问的页面调入内存,同时把暂不访问的页面换到外存请求分页系统需要硬件支持和管理软件硬件支持:扩展页表机制、缺页中断机构和地址变换机构管理软件:请求调页功能和页置换功能的软件2021/6/357基于分页的虚拟存储管理硬件支持:扩展页表表目状态位:指示该页是
29、否已调入内存(OS置/CPU用,触发缺页中断)访问位:记录该页在一段时间内是否被访问过(CPU置/OS用,选择换出页)修改位:表示该页调入内存后是否被修改过(CPU置/OS用,决定是否需写到外存)外存地址:指出该页在外存上的地址(OS置/OS用,调入页面时使用)页框号页框号状态位状态位访问位访问位修改位修改位 外存地址外存地址2021/6/358基于分页的虚拟存储管理硬件支持:缺页中断在请求分页系统中,当CPU访问的页不在内存时,CPU产生一缺页中断,触发OS内核的请求调页代码缺页中断与一般中断的区别:在指令执行期间产生和处理中断中断处理完后会重启指令执行一条指令在执行期间,可能产生多次缺页中
30、断2021/6/359基于分页的虚拟存储管理管理软件请求调页:由缺页中断触发,通过读取CPU相关寄存器,可以获得引发缺页的页面号,从对应页表表目可获得该页面对应的外存地址(来自交换区或执行文件),分配空闲页框后读入,最后更新页表表目页面置换:页面置换一般是当OS发现空闲页框数不多时自动执行,把最近长期不用的页框内容换出,标记为空闲。为了提高效率,页面置换和请求调页各自独立运行,保证在调页时总是有空闲页框2021/6/360进程地址空间的布局进程的地址空间针对其逻辑地址地址空间大小与CPU架构相关,例如:32位CPU最大4GB(232)不同OS的进程地址空间分配可以不同2021/6/361进程地
31、址空间的布局Linux下不同进程地址空间映射内核地址空间部分固定且连续映射,所有进程中此区域共享(即页表中这一部分内容相同)不同进程用户地址空间部分映射各不相同2021/6/3622021/6/363A.5 外部设备管理对设备硬件的访问设备分类设备独立性设备驱动程序简化示例:Unix设备访问过程2021/6/364对设备硬件的访问CPU对外部设备的访问外部设备一般通过设备控制器进行管理设备控制器的管理寄存器使CPU可以控制设备动作、交换数据、查询状态控制寄存器:CPU写,用于控制器接收命令数据寄存器:双向/单向访问,进行数据交换状态寄存器:CPU读,用于查询设备当前状态设备控制器的管理寄存器编
32、址独立的I/O空间编址:CPU有专用IN、OUT指令与内存一起编址2021/6/365对设备硬件的访问I/O控制方式问题由来:高速CPU如何适应低速设备轮询方式CPU循环读取状态寄存器,确定外部设备处于特定状态时才写控制寄存器或读写数据寄存器CPU在轮询期间,不能执行其他程序中断方式外部设备发生的事件通过CPU中断线通知CPU在向控制寄存器写入,启动设备动作后即可转入其他程序执行,CPU和I/O设备并行中断处理程序一般在设备驱动程序中提供2021/6/366对设备硬件的访问I/O控制方式DMA方式对于传输大量数据的磁盘、网卡而言,虽然中断机制使CPU和设备可以并行工作,但是从设备控制器上的缓冲
33、区到内存之间的数据交换如果还是需要CPU介入,会降低CPU利用率引入DMA机制用于提高大量数据从设备控制器到内存的交换,DMA控制器利用CPU访问内存的间隙进行数据交换DMA控制器在设备控制器上提供,需要CPU启动DMA控制器的动作,相应代码在设备驱动程序中提供2021/6/367设备分类与设备驱动类型相关分类字符设备以字符为单位传输数据,数据量小,速度慢设备不可寻址,数据不可重用块设备以定长块为单位传输数据,数据量大,速度快设备可寻址,数据可重复访问网络设备以不定长帧为单位传输数据,数据量大,速度快设备不可寻址,数据不可重用2021/6/3682021/6/369设备独立性设备独立性(设备无
34、关性)概念指OS设备管理为上层提供一致的访问入口并屏蔽访问细节,使上层独立于物理设备设备独立性软件在OS内核设备管理中设计的一个软件层次提供设备访问的一致入口和驱动框架设备开关表(与设备类型相关)逻辑设备名实现独立于设备的通用功能设备保护,缓冲区管理,差错控制2021/6/370设备驱动程序设备驱动程序特点与设备硬件、设备控制器寄存器、I/O控制方式密切相关在核心态运行,作为内核一部分一般由硬件厂商编写,OS规定编写框架设备驱动程序功能接收设备独立性软件发来抽象命令,转换为设备相关的底层操作序列检查设备状态,发出I/O命令或将操作排队响应中断请求,调用中断处理程序2021/6/371设备驱动程
35、序设备驱动程序处理过程现代OS设备访问一般是中断驱动的,处理过程分两部分:启动过程和中断处理过程启动过程检查I/O请求合法性检查设备状态,确定是否可以启动请求的操作如果需要,传送参数/设置工作模式向控制寄存器发出命令,启动设备中断处理过程检查设备状态,确定中断原因,进行相应处理如果前一I/O请求完成,启动排队的下一请求2021/6/372简化示例:Unix设备访问过程Unix的设备独立性软件层设备开关表实际是一个按照设备类型定义的函数指针结构体具体设备驱动程序在初始化时用自己提供的函数填入该结构体所有同类设备的结构体合起来构成设备开关表例:Unix块设备开关表示意2021/6/373简化示例:
36、Unix设备访问过程Unix的设备独立性软件层设备文件是应用程序访问设备的通用入口记录了设备文件名到设备驱动程序入口的对应例:设备文件信息brw-rw-. 1 root disk 7, 0 Nov 1 19:00 /dev/loop0crw-w-. 1 root tty 4, 1 Nov 1 19:00 /dev/tty1设备类型:决定用哪个设备开关表主设备号:访问设备开关表的索引从设备号:驱动程序找具体设备2021/6/374简化示例:Unix设备访问过程简化示例假想场景一个应用程序要读取/dev/hd0上的某一块内容设备独立性软件工作过程根据设备文件, /dev/hd0的主设备号是0,对应
37、程序开关表项是gd开头的一行基于/dev/hd0的从设备号和要读取的块号,设备独立性软件构造请求数据结构bp调用gdstrategy(bp),把I/O请求块挂到I/O请求队列尾部2021/6/375简化示例:Unix设备访问过程简化示例设备驱动程序工作过程在gdstrategy(bp)函数内,调用gdaddr(bp),把I/O请求块中的逻辑块号转换为物理块号如果当前设备空闲,调用gdstart(),从I/O请求队列头部取出一个I/O请求块进行处理,发出相应I/O命令,启动磁盘设备磁盘中断处理过程检查设备状态如果出错,尝试重做以便排除错误若上次操作成功完成,继续查找I/O请求队列是否为空,若非空
38、调用gdstart()2021/6/376A.6 文件系统管理文件系统的任务文件系统的核心功能实例:FAT文件系统格式从应用角度看文件系统2021/6/377文件系统的任务文件系统的核心任务按文件名存取文件文件系统的主要功能实施对文件空间的管理实施对文件目录的管理实施对存储器空间的分配和回收提供文件访问保护为应用程序提供文件访问接口2021/6/378文件系统的核心功能文件空间的管理记录哪些磁盘块的内容属于同一个文件常用文件空间管理方法连续方式文件占据连续的若干磁盘块,只需要记起始块号和长度适用于只读或顺序访问设备上的文件系统(光盘或磁带),主要用作备份介质连续方式不能用于管理经常改变的文件系
39、统典型例子:ISO96602021/6/379文件系统的核心功能常用文件空间管理方法(续)链接方式文件占据的离散磁盘块通过链表查找为了提高链表访问效率,一般通过独立于文件数据的文件分配表FAT显式保存链接信息典型例子:FAT文件系统索引方式文件占据的离散磁盘块通过索引表查找为了使索引表能够适应文件动态增长并管理大小差异巨大的文件,一般采用混合索引方式典型例子:EXT2文件系统2021/6/380文件系统的核心功能文件目录的管理实现从文件名到文件内容访问入口的映射文件目录的组织方式一般作为顺序存储的记录文件文件目录记录项:保存文件属性信息主要信息:文件名、文件类型、文件长度、文件盘块位置其他信息
40、:存取控制相关、文件访问相关文件目录记录项的两种处理方式文件名与其他属性一起存放:FAT文件名与其他属性分来存放:EXT22021/6/381文件系统的核心功能存储器空间的分配和回收记录磁盘块的分配/空闲状态常用方法空闲盘块表:将空闲盘块号记入数组中位示图:用1bit代表一个盘块的空闲状况一种在FAT中变化:一个表目对应一个盘块成组管理:把相关数据结构以组为单位分散到磁盘空闲块中成组链接法:分组+空闲表成组位示图:分组+位示图2021/6/382实例:FAT文件系统格式磁盘布局引导记录中关键数据结构:BPB主要内容:磁盘总空间、每簇扇区数、FAT占用扇区数、根目录长度等目录项内容引导记录引导记
41、录文件文件分配表分配表 #1#1文件文件分配表分配表 #2#2根目录根目录其他所有数据其他所有数据.剩下磁盘空间剩下磁盘空间2021/6/383实例: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 8
42、4 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簇、0x040x06簇、0x070x8d簇、0x8e簇、0x8f0x97簇2021/6/384实例:FAT文件系统格式根目录分析目录文件DIR-1、普通文件TESTFI1的首簇号分别是0x03、0x04,对应前述FAT中的头两个文件0000f200 41 64 00 69
43、 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
44、 |At.e.s.t.f.i.|0000f250 6c 00 65 00 31 00 00 00 ff ff 00 00 ff ff ff ff |l.e.1.|0000f260 54 45 53 54 46 49 7e 31 20 20 20 20 00 00 12 10 |TESTFI1 .|0000f270 8e 3b 8e 3b 00 00 12 10 8e 3b 04 00 f9 11 00 00 |.;.;.;.|0000f280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |.|2021/6/385从应用角度看文件系统文件访问相关系统调用基本操作:Create、Delete、Open、Close、Read、Write、Trunc、Seek其他操作:文件属性类操作、目录类操作、文件系统操作文件系统目录布局不属于OS内核关心内容实际OS产品会规划根目录结构,至少包含最小命令工具、配置文件、初始化脚本集合嵌入式OS移植时必须规划根文件系统目录布局并烧写到目标系统2021/6/386部分资料从网络收集整理而来,供大家参考,感谢您的关注!