还剩48页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
操作系统原理欢迎学习《操作系统原理》课程!本课程旨在帮助您深入理解操作系统的核心概念与实现原理,建立扎实的理论基础,并掌握关键技术我们将采用Andrew S.Tanenbaum的《现代操作系统》第4版作为主要教材,通过16周的课程学习和实验,全面掌握操作系统的设计思想与实现技术操作系统概述操作系统定义操作系统是计算机系统的核心软件,负责管理硬件资源并为应用程序提供执行环境,充当用户与硬件之间的中介层发展历史从早期的批处理系统,到分时系统,再到个人计算机时代,直至如今的移动/云计算,操作系统不断演进以适应新的计算需求基本功能包括进程管理、内存管理、文件管理、I/O管理等,为应用程序提供了标准的资源访问接口主要特点操作系统结构客户端-服务器模型如Windows NT架构,模块化服务组件微内核结构如Minix,核心功能精简分层结构如THE系统,功能分为6层单体式结构所有功能集成在一个大程序中操作系统的结构设计直接影响其性能、可维护性和安全性单体式结构简单但不易维护;分层结构清晰但性能可能受影响;微内核结构灵活可扩展但开发复杂;客户端-服务器模型支持分布式处理,提高系统弹性不同结构的选择反映了设计者对功能与性能平衡的取舍,以及对系统可扩展性和可靠性的考量随着技术发展,混合结构设计在现代操作系统中越来越常见系统调用与API应用程序用户开发的应用通过API间接使用系统功能应用程序接口(API)为程序员提供高级函数库,如POSIX或Windows API系统调用接口将API请求转换为对应的内核系统调用操作系统内核执行特权操作,完成资源管理和硬件控制系统调用是用户程序访问操作系统内核服务的接口,通过陷入指令实现从用户态到内核态的切换系统调用可分为进程控制、文件操作和设备管理等几大类,它们构成了应用程序与底层硬件交互的桥梁POSIX标准定义了类Unix系统的API规范,而Windows API则提供了Windows平台的编程接口虽然两者实现方式不同,但提供的功能类似,都包括进程创建、文件访问和网络通信等基本操作操作系统内核内核特权级用户态与内核态内核模块化现代处理器通常实现Ring0-3保护机操作系统通过地址空间隔离和特权指令现代操作系统支持动态加载和卸载功能制,其中Ring0拥有最高权限,用于操限制区分用户态与内核态用户程序运模块,无需重新编译内核即可扩展系统作系统内核;Ring3权限最低,用于用行在受限的用户态,访问系统资源必须功能这种模块化设计增强了系统的灵户应用程序这种分级保护机制确保了通过系统调用;而内核程序运行在特权活性和可维护性,同时保持了系统核心系统安全,防止应用程序直接访问硬件级较高的内核态,可直接访问所有硬件的稳定性和安全性或执行特权指令资源内核编译与定制是Linux等开源操作系统的重要特性,用户可以根据实际需求配置和编译适合特定硬件和应用场景的内核,优化系统性能并减少资源占用进程概念进程定义进程特性进程状态进程是程序的执行实进程具有独立性(相互进程在生命周期中经历例,包含程序代码、数隔离)、动态性(状态创建、就绪、运行、阻据及其执行上下文每变化)和并发性(多进塞和终止等不同状态,个进程有独立的地址空程同时存在)等特点,操作系统通过状态转换间和系统资源,是操作这些特性使操作系统能机制协调进程执行顺序系统资源分配的基本单够有效管理多任务执和资源分配位行进程控制块(PCB)是操作系统管理进程的核心数据结构,包含进程标识符、状态信息、优先级、寄存器值、内存指针、打开文件列表等重要信息当进程切换时,操作系统通过保存和恢复PCB中的上下文信息,实现进程执行的连续性进程管理进程创建在Unix/Linux系统中,通过fork系统调用创建子进程,子进程获得父进程的数据和代码副本写时复制技术优化了进程创建效率,只有当子进程修改内存页时才实际复制内存内容状态转换进程根据系统调度和I/O请求等因素在不同状态间转换当进程获得CPU时从就绪转为运行;等待I/O时从运行转为阻塞;I/O完成后从阻塞转为就绪;时间片用尽时从运行转为就绪进程层次进程间存在父子关系,形成进程树结构父进程可以控制子进程的执行,而子进程也可以创建更多的子进程,形成层次化的进程组织结构进程终止进程通过exit系统调用主动终止,或被操作系统强制终止进程终止后,系统会回收其占用的所有资源,包括内存、文件描述符和其他系统资源线程概念线程定义线程与进程区别线程是进程内的执行单元,多个线程共享所线程比进程更轻量,创建和切换开销小;线属进程的地址空间和资源,但拥有独立的程程共享进程的代码段、数据段和文件资源,序计数器、栈和寄存器等执行状态但具有独立的栈空间和寄存器上下文内核级线程用户级线程由操作系统内核直接支持和调度,一个线程由线程库在用户空间实现,操作系统不直接阻塞不影响其他线程执行,但创建和切换开感知如POSIX Threadspthread,实现销较大简单但一个线程阻塞会影响整个进程线程的引入极大地增强了操作系统的并发处理能力,特别适合于需要共享数据的并发任务,如网络服务器处理多客户端请求然而,多线程编程也带来了同步、死锁等新的挑战,需要谨慎处理多线程模型多对一模型一对一模型多对多模型将多个用户级线程映射到一个内核线程上,线程每个用户线程映射到一个内核线程,可充分利用多个用户线程映射到数量较少的内核线程上,兼管理在用户空间完成,效率高但无法利用多处理多处理器并行能力,线程间相对独立,一个线程顾了效率和并行能力应用程序可创建任意多的器一旦某个线程执行阻塞系统调用,整个进程阻塞不影响其他线程但创建线程的开销较大,用户线程,而系统根据需要动态分配适量的内核都会被阻塞,限制了并行性且系统能支持的线程数有限线程支持并行执行两级模型结合了一对一与多对多的优点,允许一个进程既使用内核线程实现真正并行,又使用用户线程实现高效并发,提供了更灵活的线程管理机制不同操作系统采用不同的线程模型,如Linux主要采用一对一模型,而某些Unix变种则使用多对多或两级模型进程间通信共享内存消息传递管道与信号共享内存允许多个进程直接访问同一块通过明确的消息发送和接收操作实现进管道是Unix系统中最古老的IPC机制,物理内存区域,是最快的进程间通信方程间通信,可以是直接通信(发送方直分为匿名管道(仅用于有亲缘关系的进式,因为数据无需在内核和用户空间之接指定接收方)或间接通信(通过消息程)和命名管道(可用于无关进程间通间复制然而,使用共享内存需要解决队列)消息传递可以是同步的(发送信)信号则是软中断机制,用于通知同步控制问题,通常结合信号量等同步和接收进程同步执行)或异步的(发送进程某个事件已发生,进程可注册信号机制使用后立即返回,不等待接收)处理函数响应特定信号选择合适的进程间通信机制需要考虑通信量、频率、进程关系等因素对于大量数据交换的场景,共享内存通常是最佳选择;对于简单的控制和通知,信号可能更合适;而管道和消息队列则在数据量适中且需要流控制的情况下表现良好高级进程间通信套接字支持本地和网络通信的统一接口远程过程调用透明调用远程服务的机制共享文件与内存映射通过文件系统和内存映射交换数据套接字(Socket)是网络通信的基础,也可用于本地进程间通信它提供了标准的接口,支持不同主机上的进程通信,应用广泛,从网络服务器到分布式系统都依赖套接字通信远程过程调用(RPC)是分布式系统中常用的通信模式,通过参数封装和存根生成,使远程服务调用看起来与本地函数调用相似RPC系统通常包括接口定义语言、存根编译器和运行时支持库共享文件是最基本的进程间数据交换方式,通过文件锁机制可以协调多进程对共享文件的访问内存映射文件则将文件内容直接映射到进程地址空间,提供了文件I/O和内存访问的统一视图调度基础CPU调度目标调度级别CPU调度旨在最大化CPU利用率和调度分为长期调度(作业调度)、系统吞吐量,同时最小化周转时间中期调度(内存调度)和短期调度和响应时间不同类型的系统可能(CPU调度)三个层次长期调度强调不同的目标,如批处理系统注控制进入系统的进程数量,中期调重吞吐量,而交互式系统更看重响度负责内存交换,短期调度决定哪应时间个就绪进程获得CPU调度时机与方式调度可在进程完成、阻塞、新进程创建和时间片到期等情况下触发非抢占式调度只在进程自愿释放CPU时进行切换,而抢占式调度允许操作系统强制剥夺运行进程的CPU控制权衡量调度算法性能的主要指标包括平均等待时间(进程在就绪队列中等待的平均时间)、平均周转时间(从提交到完成的总时间)以及吞吐量(单位时间内完成的进程数量)理想的调度算法应当在这些指标间取得良好平衡,适应系统的特定需求调度算法
(一)CPU算法优点缺点适用场景先来先服务FCFS实现简单、公平平均等待时间长、护航效应批处理系统最短作业优先SJF最佳平均周转时间难以准确预测执行时间长作业为主的环境最短剩余时间优先SRTF对短作业响应迅速可能导致长作业饥饿交互式系统优先级调度灵活反映业务重要性可能发生优先级反转实时系统、多用户环境先来先服务FCFS算法按进程到达顺序分配CPU,实现简单但效率低下,尤其是当长进程先到达时,短进程需要等待较长时间,这就是所谓的护航效应最短作业优先SJF算法选择执行时间最短的进程先执行,理论上可获得最佳平均周转时间,但实际应用中难以预测进程的确切执行时间最短剩余时间优先SRTF是SJF的抢占式版本,当新进程到达时会比较剩余执行时间优先级调度根据进程优先级分配CPU,可以是静态优先级(固定不变)或动态优先级(随时间或资源使用情况调整)优先级反转问题指低优先级进程持有高优先级进程所需资源,导致高优先级进程被阻塞的情况调度算法
(二)CPU时间片轮转多级队列多级反馈队列RRRR算法是分时系统的基础,为每个进程分多级队列将进程分类放入不同队列,每个多级反馈队列通过动态调整进程优先级,配一个时间片,轮流执行关键在于时间队列有独立的调度算法常见的分类包括平衡系统效率与公平性新进程初始在高片长度选择过短会导致频繁上下文切前台交互进程和后台批处理进程,前者使优先级队列,使用完分配的时间片后降至换,过长则退化为FCFS时间片通常设置用RR算法确保响应性,后者使用FCFS减下一级队列这种机制自动区分I/O密集型为10-100毫秒之间,以平衡响应时间和系少开销队列间调度通常采用固定优先级和CPU密集型进程,前者因频繁阻塞而保统开销或时间片分配持较高优先级进程同步基础临界区问题竞态条件多进程或多线程访问共享资源时需要互斥访问、多个进程同时访问和修改数据,结果依赖于执行有限等待和空闲让进时序死锁与饥饿同步机制资源分配不当可能导致系统停滞或进程长期等待通过锁、信号量、条件变量和屏障等机制协调进程行为进程同步是多任务操作系统必须解决的核心问题临界区是指访问共享资源的代码段,必须确保同一时刻只有一个进程执行临界区代码互斥访问保证资源独占,有限等待确保进程不会无限期等待,空闲让进则要求无进程在临界区时允许任意进程进入竞态条件是指系统行为依赖于进程执行的相对时序,通常由不当的共享数据访问引起同步机制提供了协调进程执行顺序的工具,避免竞态条件导致的数据不一致然而,不当使用同步机制可能引发死锁(进程互相等待对方释放资源)或饥饿(某些进程长期得不到所需资源)等问题互斥实现软件解决方案硬件支持纯软件方法实现互斥,如Peterson算法和面现代处理器提供原子指令简化互斥实现,如包店算法Peterson算法用于两个进程间互测试并设置Test-and-Set指令能原子性地斥,通过共享标志变量和轮次变量实现;面读取并修改内存值;交换Swap指令交换包店算法则可支持多个进程,模拟现实中的寄存器与内存值;比较并交换Compare-排号系统,确保顺序服务and-Swap指令检查并有条件地更新内存•不依赖特殊硬件指令•指令执行不可中断•实现复杂,效率较低•实现简单高效•可证明正确性•为高级同步原语提供基础锁实现自旋锁与互斥锁是两种常见锁类型自旋锁在等待锁释放时不断循环检查,不让出CPU,适合锁持有时间短的场景;互斥锁则让等待进程进入睡眠状态,在锁释放时被唤醒,适合可能长时间等待的情况•自旋锁忙等待,无上下文切换开销•互斥锁阻塞等待,释放CPU资源•读写锁允许多读单写信号量与管程信号量定义信号量类型管程信号量是由Dijkstra提出的同步工具,二进制信号量仅取值0和1,可实现互斥管程是一种高级同步构造,将相关数据由一个整型变量和两个原子操作(P操作锁功能,用于保护临界区计数信号量和操作封装在一起,并保证内部操作的和V操作)组成P操作(wait)尝试减取值范围更广,可用于控制有限资源的互斥执行管程通过条件变量提供同步小信号量值,如果结果为负则阻塞;V操使用,初始值设为资源数量,每次分配机制,允许进程在条件不满足时等待,作(signal)增加信号量值,可能唤醒资源执行P操作,释放资源执行V操作,并在条件满足时被通知相比信号量,等待的进程信号量值表示可用资源数确保资源使用不超过总量管程更结构化,不易出错,适合复杂同量或临界区可同时进入的进程数步问题信号量和管程是解决进程同步问题的两种重要工具信号量操作简单直接,但使用不当容易导致同步错误;管程则提供了更高层次的抽象,简化了复杂同步问题的处理,但实现依赖于语言和运行时系统的支持Java的synchronized方法和Monitor对象就是管程思想的实践经典同步问题哲学家就餐与理发师问题读者-写者问题哲学家就餐问题模拟资源分配中的死锁情况,五位哲学家生产者-消费者问题处理对共享数据的并发读写,允许多个读者同时读取,但围坐,两两之间共享一把叉子,需同时拿到两把才能进描述有限缓冲区的共享问题,生产者进程生产数据放入缓写者必须独占分为读者优先(只要有读者,新读者可直食解决方案包括资源层次分配或限制同时就餐人数睡冲区,消费者进程从缓冲区取出数据消费关键是确保生接进入)和写者优先(有写者等待时,不允许新读者进眠理发师问题则涉及多种资源(理发师、椅子、等候室)产者在缓冲区已满时等待,消费者在缓冲区为空时等待入)两种策略常用读写锁实现,平衡读写操作的并发性的协调,体现了生产者-消费者思想可用信号量实现,一个表示缓冲区空槽位数,一个表示已和数据一致性填充项数,一个用于互斥访问死锁概念死锁定义死锁产生条件死锁是指两个或多个进程因资源竞争而永久阻塞的状态每个进程持死锁产生需同时满足四个条件互斥(资源不可共享)、占有等待有部分资源并等待其他进程释放资源,形成循环等待,导致所有相关(进程持有资源同时请求新资源)、非抢占(资源不能被强制释放)进程都无法继续执行和循环等待(形成等待环)破坏任一条件即可预防死锁资源分配图死锁检测资源分配图是描述进程与资源间关系的有向图,进程用圆圈表示,资死锁检测算法通过分析资源分配图寻找循环等待对单实例资源,可源用方框表示,请求和分配关系用有向边表示当图中存在没有出度直接检查图中是否存在环;对多实例资源,需采用类似银行家算法的的资源节点时(无法化简为空图),系统可能处于死锁状态安全性检查检测到死锁后,系统可选择终止部分进程或抢占资源解除死锁死锁处理策略死锁预防死锁避免死锁检测与恢复通过限制资源请求方式,破坏死锁产生的四在资源分配前进行判断,只分配不会导致死周期性检查系统是否陷入死锁,发现后采取个必要条件之一锁的资源措施恢复•破坏互斥条件使资源可共享(但某些资•银行家算法动态检查资源分配状态,确•进程终止终止所有死锁进程或逐个终止源本质上不可共享)保系统始终处于安全状态直到解除死锁•破坏占有等待要求进程一次性申请所有•安全状态存在一个进程执行序列,使所•资源抢占临时将资源从某些进程强制回需要的资源(可能导致资源利用率低下)有进程能够完成收给其他进程•不安全状态可能导致死锁,但不一定会•回滚将系统状态回滚到之前的安全点•破坏非抢占允许抢占资源(实现复杂,发生死锁•恢复代价需考虑优先级、已执行时间和可能导致级联回滚)•实现条件需预知进程最大资源需求,实资源需求等因素•破坏循环等待对资源类型进行全序编号,际应用受限按顺序请求(限制了并发度)在实际系统中,死锁处理策略的选择取决于系统类型和应用场景大多数现代通用操作系统采用死锁忽略策略,即不采取预防或避免措施,也不主动检测死锁,而是依靠用户干预(如终止程序或重启系统)解决偶发的死锁问题这种策略假设死锁很少发生,主动预防的代价高于偶发死锁的处理成本内存管理基础内存管理需求重定位、保护、共享、物理与逻辑组织地址空间物理地址与逻辑地址的映射关系内存层次结构寄存器→缓存→内存→外存内存层次结构是计算机系统中的重要概念,从寄存器到外存,访问速度依次降低,容量依次增大现代内存管理充分利用了这种层次性,通过缓存机制提高系统整体性能地址空间是进程可以寻址的内存范围,分为物理地址空间(实际内存位置)和逻辑地址空间(程序使用的虚拟地址)操作系统负责在两者之间建立映射关系,这种映射通常由内存管理单元MMU硬件实现内存管理需要满足多种需求支持程序重定位,使程序可以加载到任意内存位置执行;提供内存保护,防止进程访问其他进程的内存区域;实现内存共享,允许多个进程访问相同代码或数据;高效组织物理内存,减少碎片;提供灵活的逻辑视图,简化编程连续内存分配固定分区内存被划分为固定大小的分区,每个分区只能装载一个进程分区大小可以相等也可以不等缺点是内部碎片明显,利用率低,适用于早期批处理系统动态分区按进程实际需要分配内存,分区大小和数量不固定优点是提高内存利用率,但随着进程的创建和终止,会产生不连续的小空闲区(外部碎片)分配算法首次适应(查找第一个足够大的空闲区)、最佳适应(查找最小的足够大的空闲区)、最差适应(查找最大的空闲区)和下次适应(从上次分配位置开始查找)各有优缺点碎片整理通过内存紧缩技术,将分散的空闲内存合并为一个大的连续空闲区需要移动内存中的程序和数据,代价较高,一般在必要时才执行非连续内存分配分页技术分段技术将物理内存划分为固定大小的帧,逻辑地址空间划分为相同大小按程序的逻辑结构(如代码段、数据段、堆栈段)划分地址空的页进程的每一页可以映射到任意物理帧,不要求物理内存连间,每段大小可变分段支持程序的模块化,便于共享和保护,续分页主要优点是简化了内存分配,消除外部碎片;缺点是可更符合程序员的思维方式;缺点是会产生外部碎片,分配复杂能产生内部碎片(最后一页可能未填满)页表记录了逻辑页到物理帧的映射关系,每个进程有独立的页段表记录了段的基址和长度地址转换时,将逻辑地址分为段号表,在进程上下文中维护页表基址寄存器PTBR指向页表地和段内偏移,通过段表查找段基址,检查偏移是否超过段长度,址转换时,将逻辑地址分为页号和页内偏移,通过页表查找对应然后计算物理地址分段技术在保护和共享方面有优势,可以为的物理帧号,与偏移组合得到物理地址每个段设置不同的访问权限段页式结合了分段和分页的优点,先将程序按逻辑结构分段,再将每段划分为固定大小的页这种方式即支持逻辑上的模块化和共享保护,又避免了分段产生的外部碎片地址转换需要两级表先通过段表查找页表位置,再通过页表找到物理帧页表结构单级页表最简单的页表形式,是一个线性数组,索引为页号,内容为物理帧号直接映射,查找效率高,但对于大地址空间,页表本身可能非常大,占用大量内存每个进程需要一个完整页表,即使只使用很小一部分地址空间多级页表将页表分为多级,只有实际使用的页表部分才会创建,减少内存占用常见的是二级页表,顶级页表为页目录,指向二级页表地址转换时需要多次内存访问,降低了效率,但现代处理器通过转换后备缓冲区TLB减轻这一影响散列页表与倒置页表散列页表通过哈希函数快速定位页表项,结合链表处理冲突,适用于稀疏地址空间倒置页表是以物理帧为索引的表,每项记录占用该帧的进程ID和逻辑页号,大幅减少表大小,但查找复杂度增加,需要辅助散列表加速查找虚拟内存概念虚拟内存定义请求调页虚拟内存是一种内存管理技术,将物理虚拟内存系统通常采用请求调页机制,内存抽象为更大的地址空间,使程序可只有当程序访问某页时才将其调入内以使用超过实际物理内存的地址空间存当进程访问未加载的页面时触发缺它分离了程序员看到的内存(逻辑内页中断,操作系统负责将请求的页面从存)和实际的物理内存,简化了编程并磁盘调入空闲的物理帧,更新页表,然提高了系统资源利用率后恢复进程执行页面置换当物理内存已满而需加载新页面时,系统必须选择一个页面换出到磁盘页面置换算法决定了哪个页面被换出,直接影响系统性能理想的置换算法应该尽量减少未来缺页中断的次数,保留经常使用的页面工作集模型是虚拟内存管理的重要概念,基于程序的局部性原理(时间局部性和空间局部性)工作集是指进程在一段时间内频繁访问的页面集合,反映了进程当前的内存需求操作系统可以跟踪每个进程的工作集,确保为进程分配足够的物理帧以容纳其工作集,减少缺页率并避免抖动现象页面置换算法算法原理优点缺点最优算法OPT替换最长时间内不会理论最佳性能,缺页需要预知未来访问序被访问的页面率最低列,实际不可实现先进先出FIFO替换最早调入内存的实现简单,开销小性能较差,可能出现页面Belady异常最近最少使用LRU替换最长时间未被访性能接近最优,利用实现复杂,需要记录问的页面了时间局部性每页最后访问时间时钟算法Clock近似LRU,使用访问实现简单,性能接近只区分最近访问和位和循环队列LRU最近未访问两种状态最优OPT算法是理论上最好的置换策略,但需要预知未来的访问模式,实际不可实现,常用作其他算法的性能基准FIFO算法简单直观,但不考虑页面使用频率,性能较差,且可能出现Belady异常(增加物理帧反而增加缺页率)LRU算法基于最近使用的页面很可能在不久的将来再次使用的假设,性能接近最优,但需要硬件支持记录页面访问历史,实现代价高时钟算法(又称二次机会法)是LRU的近似实现,使用硬件提供的访问位,在循环队列中查找未被访问的页面进行替换,兼顾了性能和实现复杂度帧分配策略固定分配可变分配为每个进程分配固定数量的物理帧,不随进动态调整分配给进程的帧数,根据进程工作程执行变化可根据进程大小按比例分配,集大小、缺页率或优先级等因素能更好地或为所有进程分配相同数量实现简单,但满足进程实际需求,提高内存利用率,但增不能根据进程实际需求动态调整加了管理复杂度局部置换全局置换进程仅从自身分配的帧中选择页面替换确从所有进程中选择页面进行替换,被置换页保每个进程的帧数不变,避免其他进程干扰,面可能来自任何进程允许活跃进程获得更但限制了系统灵活性,可能无法最优利用内多帧,提高整体效率,但可能导致某些进程存资源性能下降帧分配策略直接影响多道程序环境中的系统性能和进程间公平性固定分配与局部置换通常搭配使用,简化了管理但缺乏灵活性;可变分配与全局置换则提供了更好的资源利用率,但可能导致性能不稳定在实际系统中,通常结合使用不同策略,如为关键进程保证最小帧数(固定分配),同时允许空闲帧在其他进程间动态分配(可变分配+全局置换)操作系统还可能根据系统负载和进程优先级动态调整策略,平衡系统吞吐量和响应时间内存管理实现缺页中断处理当进程访问未加载页面时触发缺页中断,系统检查地址合法性,分配物理帧,从磁盘读取页面内容,更新页表,然后恢复进程执行整个过程对应用透明页面锁定某些关键页面(如内核代码、设备驱动程序、I/O缓冲区)需要常驻内存,通过页面锁定防止被换出操作系统为这些页面设置特殊标志,置换算法会跳过锁定页面抖动问题当系统物理内存不足以容纳多个进程的工作集时,可能出现进程频繁缺页,导致大量时间花在页面调入调出而非真正执行,系统吞吐量急剧下降,这就是抖动现象页面缓冲策略为提高性能,系统区分处理修改页和干净页修改页(脏页)在替换时必须写回磁盘,而干净页(未修改)可以直接丢弃维护空闲帧池和修改页列表,提前写回脏页,减少缺页处理延迟文件系统基础文件概念文件属性文件操作文件是具有名称的相关数文件除数据内容外,还包操作系统提供的基本文件据的集合,是操作系统中含元数据(属性),如名操作包括创建、删除、打信息存储的基本单位文称、类型、大小、创建/修开、关闭、读取、写入和件屏蔽了物理存储细节,改/访问时间、所有者、访截断等这些操作通过系提供了统一的数据访问抽问权限等这些属性帮助统调用接口供应用程序使象,简化了应用程序的开系统和用户管理和组织文用,确保文件访问的一致发件,控制访问权限性和安全性文件的访问方法反映了不同类型数据的组织和使用特点顺序访问是最基本的方式,从文件头开始,按顺序读写数据;直接访问(随机访问)允许跳到文件任意位置进行读写,适合数据库等应用;索引访问通过建立记录号到物理位置的映射表,结合了顺序和直接访问的优点文件系统是操作系统中管理文件存储和组织的子系统,负责文件的分配、命名、共享、保护等功能它为用户提供了一个抽象视图,隐藏了底层存储设备的复杂性,使用户可以方便地创建、访问和管理文件文件组织物理结构文件在物理存储上以扇区、块和簇为基本单位组织扇区是磁盘的基本物理单位(通常512或4096字节);块是文件系统的基本单位,可以包含多个扇区;簇是文件分配的最小单位,可能包含多个块,是平衡存储效率和空间利用率的折中逻辑结构从逻辑上看,文件可以组织为无结构的字节流(如Unix/Linux中的文件)或结构化的记录集合(如数据库文件)记录是文件中具有特定格式的数据项,可以是定长的或变长的,可以顺序存储或通过索引访问文件类型操作系统区分多种文件类型普通文件(存储用户数据,如文本、二进制程序);目录文件(包含其他文件信息的特殊文件);设备文件(表示I/O设备的特殊文件,使设备访问与文件操作统一);以及其他特殊文件如符号链接、管道等文件存储文件在磁盘上的存储方式有三种主要策略连续分配(简单高效但不灵活)、链表分配(灵活但随机访问慢)和索引分配(结合两者优点但有额外开销)每种方法都有其适用场景和性能特点目录结构单级目录最简单的目录组织,所有文件位于同一目录下优点是实现简单,查找直接;缺点是不支持文件分类,当文件数量增多时难以管理,且不支持文件名重用这种结构主要用于早期简单系统或小型设备二级目录引入用户目录概念,在主目录下为每个用户创建独立目录解决了文件名重用问题,支持基本的用户隔离,但仍不支持文件分类和组织早期多用户系统常用此结构,现在主要作为更复杂结构的基础树形目录最常用的目录结构,以层次方式组织文件,支持任意深度的目录嵌套提供了强大的文件分类和组织能力,每个文件有唯一路径几乎所有现代操作系统都采用这种结构,如Unix/Linux的/根目录和Windows的盘符根目录图形目录是树形结构的扩展,允许目录包含子目录和文件的链接,形成有向图而非严格树形这种结构支持文件和目录共享,一个文件可以出现在多个目录中,提高了灵活性然而,图形结构也带来了遍历复杂性和可能的循环引用问题,需要特殊机制(如引用计数或垃圾回收)处理文件删除文件共享与保护基于索引节点的共享符号链接文件保护机制Unix系统通过索引节点(inode)实现文件共享软链接(符号链接)是包含目标文件路径的特殊文件保护确保数据安全和隐私访问控制列表硬链接创建指向同一inode的多个目录项,这些文件,类似Windows的快捷方式软链接可以跨ACL提供细粒度权限控制,为每个用户或组指链接完全等价,共享同一物理数据和属性硬链文件系统,可以链接目录,甚至可以链接不存在定具体权限Unix采用简化的用户/组/其他三级接的限制是不能跨文件系统,且不能链接目录的文件软链接的访问需要额外的路径解析,有权限模型,每级包含读r、写w、执行x三种(防止形成循环)轻微性能开销,删除目标文件会导致链接悬空权限,通过权限位设置,平衡了灵活性和易用性文件系统实现文件数据实际用户数据存储区域目录结构文件组织和查找信息位图/空闲列表3跟踪空闲存储空间超级块文件系统全局参数和统计信息引导块系统启动信息(位于分区开始处)文件系统的物理布局通常从引导块开始,包含系统启动代码,即使分区不可启动也常保留此区域超级块存储文件系统的关键参数如块大小、文件系统类型和大小等,是文件系统管理的核心结构文件控制块FCB包含文件的所有元数据,Unix系统中称为inodeFCB通常包括文件类型、大小、时间戳、所有者、权限和数据块位置等信息每个文件有唯一的FCB,系统通过FCB管理文件,目录中只存储文件名和FCB引用打开文件时,系统将FCB信息读入内存,创建文件描述符条目,后续操作通过文件描述符访问这种打开文件表机制减少了磁盘访问,提高了性能,同时支持文件共享和位置跟踪文件分配方法分配方法优点缺点应用场景连续分配顺序访问快、随机访问快、实现简单外部碎片、文件增长困难只读文件、大小固定文件链接分配无外部碎片、文件容易增长随机访问慢、可靠性低(链断裂)顺序访问文件、频繁修改文件索引分配支持直接访问、无外部碎片额外空间开销、小文件效率低通用文件系统、随机访问需求多级索引支持大文件、平衡小文件开销实现复杂、多次间接访问现代文件系统(如ext4)连续分配要求文件占用磁盘上连续的块,适合CD-ROM等只读媒体链接分配有显式链接(每个块包含下一块指针)和隐式链接(文件分配表FAT存储链接信息)两种形式,FAT文件系统采用后者解决了可靠性问题索引分配使用索引块存储文件块地址,支持高效随机访问,灵活处理文件增长,是现代文件系统的主流选择对于大文件,单个索引块可能不足,多级索引通过直接块、一级间接块、二级间接块和三级间接块的组合支持不同大小文件,如Unix inode结构空闲空间管理位图法链表法和计数法使用位图(bitmap)记录磁盘块使用情况,每个块对应一位,1链表法将所有空闲块连接成链表,每个空闲块存储下一个空闲块表示已用,0表示空闲优点是实现简单,查找高效(可以快速的地址优点是不需要额外空间,但查找连续空闲块困难,且访找到连续空闲块),适合现代大容量存储设备缺点是需要额外问链表需要多次磁盘I/O改进版本可以将空闲块地址集中在少空间存储位图,对于极大的文件系统可能占用显著内存数块中,减少I/O操作位图通常缓存在内存中以提高性能,系统会定期将更新后的位图计数法记录第一个空闲块地址和连续空闲块数量,适合空闲块成写回磁盘查找空闲块时可以使用特殊的位操作指令加速搜索,组分布的情况计数法可以高效分配连续空间,但更新操作复现代文件系统如ext4和NTFS都采用位图管理空闲空间杂分组法则是链表法的扩展,将空闲块分组管理,提高分配效率选择合适的空闲空间管理方法取决于文件系统特性和应用场景现代文件系统通常结合多种技术,如Linux ext4使用位图管理大部分空间,同时使用特殊技术处理大文件分配空闲空间管理的效率直接影响文件系统性能,尤其是在频繁创建和删除文件的环境中典型文件系统文件系统与FAT NTFSext4ZFSFAT(文件分配表)是一种简单的文件系NTFS是Windows NT系列的标准文件系ext4是Linux的主流文件系统,基于索引统,广泛用于可移动存储设备它使用链统,采用主文件表(MFT)记录文件信节点结构,支持大文件、快速恢复和高效接分配方法管理文件,但所有链接信息集息它支持文件权限、加密、压缩、事务存储它向后兼容ext2/3,同时提供了性中存储在FAT中而非分散在数据块中日志和大文件,可靠性高NTFS的元数据能和可靠性改进ZFS则是一种高级文件FAT简单可靠,支持多种操作系统,但不以B+树组织,支持高效查找和空间管理,系统,集成了卷管理功能,提供数据完整支持权限控制,对大容量存储效率低下但结构复杂,与其他操作系统兼容性有性校验、透明压缩、快照和自修复能力,限适用于企业级存储设备管理基础I/O设备分类设备控制器I/O设备根据数据传输特性可分为三大类块设设备控制器是连接I/O设备和系统总线的电子组备(如磁盘,数据以固定大小块为单位传输,支件,充当CPU与设备之间的接口控制器接收持随机访问);字符设备(如键盘、鼠标,数据CPU的高级命令并转换为设备特定的控制信号,以字符为单位传输,通常不可寻址);网络设备同时缓冲数据传输,处理错误检测和纠正现代(如网卡,具有混合特性,数据以分组传输)控制器通常包含处理器和内存,能够独立完成复杂操作•块设备支持随机访问,可缓存•命令解释与执行•字符设备顺序访问,不可寻址•数据缓冲与格式转换•网络设备数据传输具有特殊协议•错误检测与状态报告I/O控制方法I/O控制方法决定了CPU与设备之间的数据传输方式程序控制I/O需CPU持续检查设备状态,效率低;中断驱动I/O允许CPU执行其他任务,设备就绪时发送中断;DMA(直接内存访问)进一步减少CPU参与,控制器直接在内存和设备间传输数据块,只在传输开始和结束时通知CPU•程序控制I/O CPU忙等待•中断驱动I/O异步通知•DMA硬件自动传输软件层次I/O用户级I/O软件提供标准库和应用接口设备无关性层2实现统一抽象和命名设备驱动程序控制特定硬件设备中断处理程序4快速响应硬件事件用户级I/O软件包括标准库函数和高级API,为应用程序提供友好接口,处理缓冲、格式化和设备选择等任务这一层隐藏了底层I/O细节,提供了可移植性,如C语言的stdio库和Java的I/O类设备无关性层是操作系统内核中的关键组件,提供统一的设备命名和访问方式,将逻辑I/O操作映射到具体设备它管理设备的打开、关闭和访问,处理常见功能如缓冲和错误处理,减少了驱动程序的工作量设备驱动程序是特定设备的控制软件,了解设备的工作细节,负责初始化设备、传输命令、处理中断和报告状态现代操作系统支持动态加载驱动程序,使系统能够灵活适应新硬件中断处理程序是最底层组件,快速响应硬件中断,保存上下文,并调用适当的服务例程处理中断事件调度I/OFCFS调度先来先服务策略按请求到达顺序处理,实现简单公平,但性能往往不佳,尤其对于磁盘等机械设备如果连续请求访问磁盘不同区域,将导致磁头频繁移动,增加寻道时间,降低吞吐量最短寻道时间优先SSTF选择与当前磁头位置最近的请求优先处理,减少平均寻道距离和时间SSTF显著提高磁盘吞吐量,但可能导致远离磁头的请求长时间等待(饥饿问题),且不考虑旋转延迟,不是真正意义上的最优策略扫描算法SCAN也称电梯算法,磁头沿一个方向移动,处理该方向上所有请求,到达边界后改变方向SCAN提供了良好的整体性能和公平性,避免了饥饿问题,但边缘柱面的服务频率是中间柱面的两倍,分布不均匀循环扫描C-SCAN扫描算法的变种,磁头沿一个方向处理请求,到达一端后立即返回起始位置,不处理返回途中的请求C-SCAN提供了更均匀的服务分布,减少了最大等待时间,在负载均匀分布的情况下表现优异,被广泛应用在现代磁盘调度中磁盘管理缓冲区管理单缓冲区最基本的缓冲策略,分配一个系统缓冲区用于I/O操作处理器将数据放入缓冲区,I/O设备从缓冲区读取数据(输出操作);或者I/O设备将数据放入缓冲区,处理器从缓冲区读取(输入操作)单缓冲区简单但效率有限,因为I/O操作与处理器操作不能完全并行双缓冲区使用两个缓冲区交替使用,提高并发性一个缓冲区用于当前I/O操作,另一个用于处理器操作,完成后交换角色这种乒乓缓冲减少了处理器和I/O设备的相互等待,适用于稳定的数据流,如多媒体数据处理和网络通信循环缓冲区又称环形缓冲区,是双缓冲区的扩展,包含多个缓冲单元形成一个循环队列生产者(如处理器)向缓冲区写入数据,消费者(如I/O设备)从缓冲区读取数据,两者速度可以不同步这种结构非常适合处理生产者-消费者模型中的速度不匹配问题缓冲区设计的主要目的是解决不同设备之间的速度不匹配问题,以及处理数据传输单位的差异合理的缓冲策略可以减少设备等待时间,提高系统吞吐量,平滑数据流现代操作系统通常结合多种缓冲技术,根据设备特性和应用需求动态调整缓冲策略内核子系统I/O应用程序发起I/O请求,如read、write等系统调用,通常阻塞等待完成(同步I/O)或继续执行其他操作(异步I/O)内核I/O接口将系统调用转换为内部I/O请求,验证参数,根据文件描述符确定目标设备或文件,并将请求传递给相应子系统I/O调度器管理I/O请求队列,根据算法(如电梯算法)合并、排序和调度请求,最小化设备寻道时间,最大化吞吐量设备驱动程序将通用I/O请求转换为设备特定命令,初始化设备操作,处理中断,管理设备状态,报告完成或错误条件异步I/O是现代操作系统的重要特性,允许进程发起I/O请求后立即返回继续执行,不必等待I/O完成实现机制包括回调函数(完成后调用指定函数)、信号通知(发送SIGIO信号)或完成端口(收集多个I/O操作结果)异步I/O特别适合高性能服务器和事件驱动应用设备驱动模型是内核组织和管理设备驱动程序的框架现代操作系统如Linux的设备模型基于对象导向设计,提供统一的设备发现、注册和配置接口,支持热插拔设备和电源管理模块化驱动设计允许驱动程序动态加载和卸载,提高了系统灵活性和可维护性系统保护机制保护域访问矩阵规定进程可访问的资源集合和允许的操作描述主体对客体的访问权限访问控制列表4能力列表资源上附加的允许访问主体列表进程持有的资源访问权限证书保护域是操作系统中的基本安全概念,定义了进程可以访问的资源(如内存段、文件、设备)和允许的操作(如读、写、执行)域可以与用户或进程关联,也可以根据执行环境动态变化,如用户态和内核态切换域之间的访问控制确保了系统资源的安全隔离和有限共享访问矩阵是描述保护关系的理论模型,行表示主体(如进程),列表示客体(如文件),每个单元包含主体对客体的访问权限实际系统通常以能力列表或访问控制列表形式实现,前者以主体为中心,列出其可访问的所有客体及权限;后者以客体为中心,列出所有可访问它的主体及权限能力列表类似于持有不可伪造的通行证,系统验证通行证的真实性和权限;而访问控制列表则如同在资源入口处放置门卫,检查访问者身份并对照允许名单两种机制各有优缺点,现代系统常结合使用,如Windows同时支持ACL和特权令牌,Linux使用文件权限位和扩展ACL系统安全身份验证授权与审计常见攻击与防御身份验证是确认用户身份的过程,基于授权确定用户可以执行的操作,遵循最缓冲区溢出攻击通过向程序输入超长数你知道的东西(密码、PIN码)、你拥小权限原则,只授予完成任务必需的权据覆盖栈上的返回地址,执行攻击者代有的东西(密钥、智能卡、手机)和你限权限管理包括基于角色的访问控制码;防御方法包括代码审查、边界检查是谁(指纹、面部识别)三大因素多(RBAC)、强制访问控制(MAC)和和不可执行栈拒绝服务攻击通过耗尽因素认证结合多种方法,如密码加短信自主访问控制(DAC)等模型审计记系统资源使服务不可用;防御需要流量验证码,大大提高安全性生物识别技录系统活动并分析,包括登录尝试、资监控、过滤和负载分散权限提升攻击术直接验证用户特征,便捷但需考虑隐源访问和系统配置更改,帮助检测异常利用系统漏洞获取更高权限;防御包括私和准确率问题行为,为安全事件调查提供证据及时更新补丁、限制特权操作和采用沙箱技术系统安全是一个多层次、持续进行的过程,需要技术措施与管理策略相结合现代操作系统实现了各种安全机制,如地址空间隔离、特权级别保护、加密文件系统和强制访问控制等,但最终安全性仍取决于系统配置、用户行为和及时应对新威胁的能力虚拟化技术虚拟化架构虚拟化技术根据虚拟机监视器VMM的位置分为两种主要架构Type-1(裸金属型)直接运行在硬件上,无需宿主操作系统,性能更高,适合服务器环境;Type-2(宿主型)运行在常规操作系统上,配置灵活,适合桌面环境主流产品如VMware ESXi、Xen属于Type-1,而VMware Workstation、VirtualBox属于Type-2虚拟化类型全虚拟化提供完整硬件抽象,客户操作系统无需修改,通过硬件辅助(如Intel VT-x)或二进制翻译技术捕获和模拟特权指令半虚拟化修改客户操作系统,使其通过超级调用直接与虚拟机监视器通信,减少虚拟化开销,提高性能,但需要专门适配的操作系统容器虚拟化则在操作系统层面实现隔离,资源开销更小虚拟化应用虚拟化技术广泛应用于服务器整合(多个虚拟服务器共享物理硬件)、云计算(弹性分配计算资源)、开发测试(快速创建不同环境)和灾难恢复(虚拟机易于备份和迁移)等场景虚拟化改变了数据中心架构,提高了资源利用率,降低了能耗和管理成本,是现代IT基础设施的核心技术分布式系统资源共享分布式系统将分散的计算资源作为整体对外提供服务,用户无需关心资源的物理位置共享可以是硬件(如打印机、存储设备)、软件(如文件、数据库)或信息(如网页、知识库)资源管理需要考虑命名、访问控制、并发控制和恢复机制开放性与透明性开放系统采用标准协议和接口,允许异构系统之间互操作,便于扩展和集成透明性使系统复杂性对用户不可见,包括位置透明(隐藏资源位置)、迁移透明(资源可移动而不影响使用)、复制透明(资源可有多个副本)和故障透明(系统部分故障不影响整体可用性)通信机制分布式系统中的节点通过消息传递、远程过程调用RPC或分布式共享内存等机制通信消息传递灵活但编程复杂;RPC使远程服务调用看似本地函数调用,隐藏网络细节;分布式共享内存则提供跨节点的统一内存视图,简化编程但实现复杂,需要解决一致性问题同步协调分布式系统中的时间概念至关重要物理时钟同步通过网络时间协议NTP等实现;逻辑时钟(如Lamport时钟)关注事件发生的相对顺序而非绝对时间;向量时钟扩展了逻辑时钟,能够检测并发事件同步算法如选举算法、互斥算法和障碍同步等确保分布式操作的正确协调分布式文件系统NFS与AFS HDFS与现代系统一致性模型网络文件系统NFS是最早的分布式文件系统之一,支Hadoop分布式文件系统HDFS专为大数据处理设计,分布式文件系统面临数据一致性与可用性的平衡强一持透明的远程文件访问客户端通过RPC调用访问服务采用主从架构,支持大文件存储和高吞吐量访问致性确保所有节点看到相同的数据视图,适合需要精确器上的文件,服务器维护所有状态NFS采用无状态设HDFS特点是数据本地化处理(将计算移至数据所在位数据的应用,但可能降低可用性和性能;最终一致性允计简化了故障恢复,但性能受网络延迟影响Andrew置)和多副本容错机制现代分布式文件系统如GFS许临时的不一致状态,保证在一段时间后所有副本达到文件系统AFS通过大量缓存改进性能,客户端缓存整(Google文件系统)和Ceph进一步优化了扩展性、可一致,提高了系统可用性不同系统根据应用需求选择个文件,减少网络交互,服务器通过回调机制保持缓存靠性和性能,支持PB级数据存储和云环境部署合适的一致性模型,有些系统如Ceph甚至提供可配置一致性的一致性级别实时操作系统特性硬实时系统软实时系统时间约束绝对不可违反偶尔违反可接受任务延迟保证最坏情况响应时间保证平均响应时间系统设计强调确定性强调统计性能应用领域航空控制、医疗设备多媒体系统、视频游戏实时系统的核心特性是时间约束和可预测性硬实时系统要求任务必须在严格的截止时间内完成,否则可能导致灾难性后果;软实时系统允许偶尔违反时间约束,只要系统能保持在可接受的统计性能范围内实时操作系统通过特殊的设计实现确定性行为,如简化内核、禁用虚拟内存、避免缓存和优化中断处理实时调度算法是实时系统的关键组件速率单调RM算法为周期任务分配固定优先级,按任务周期排序(周期短的优先级高);最早截止时间优先EDF算法动态分配优先级,截止时间越近优先级越高资源访问协议如优先级继承防止优先级反转,优先级天花板简化实现并减少上下文切换实时系统设计需要仔细平衡确定性、响应时间和资源利用率移动操作系统操作系统趋势与挑战100+1000x多核处理器线程非易失性内存速度提升未来处理器核心数量持续增长相比传统硬盘的访问速度提升50B+物联网设备数量2025年预计全球连接设备多核处理器的普及对操作系统设计提出了新挑战传统的进程模型和调度算法并非为高度并行设计,需要重新思考并发控制机制、缓存一致性和核心亲和性等问题操作系统必须高效管理数十甚至上百个核心,平衡并行度、能耗和热管理需求,同时提供易于使用的并行编程模型非易失性内存技术如3D XPoint和NVRAM正在模糊内存与存储的界限,创建持久性内存层次这种变革要求操作系统重新设计内存管理、文件系统和I/O子系统,开发新的数据一致性模型和故障恢复机制未来操作系统可能采用统一内存-存储管理,简化应用开发并提高性能云计算和微服务架构催生了专门优化的云操作系统,如容器优化的Linux发行版这些系统简化了内核,移除不必要功能,专注于网络性能、安全隔离和动态资源管理同时,人工智能正被应用于系统资源管理,如预测工作负载、优化调度策略和自动调整系统参数,为未来自适应操作系统奠定基础。
个人认证
优秀文档
获得点赞 0