嵌入式操作系统基础PPT优秀课件

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

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!