一、概述
(一)定义与角色
操作系统是管理计算机硬件与软件资源、控制程序执行、改善人机交互界面,并为计算机系统中的其他软件和用户提供服务的系统软件。它充当了硬件与用户以及应用程序之间的桥梁,使得计算机系统能够高效、有序且安全地运行。例如,用户打开软件、读写文件、使用外部设备等操作,都需要操作系统在背后协调硬件资源来实现。
(二)目标
- 方便性:把复杂的硬件操作封装起来,提供简单易懂的操作界面,像图形化界面中通过鼠标点击就能完成各种任务,无需用户了解磁盘读写、内存寻址等底层细节。
- 有效性:合理分配和调度计算机的各种资源(如 CPU、内存、I/O 设备等),提高资源利用率,让多个程序可以并发执行,避免资源闲置浪费。
- 可扩充性:能够方便地接纳新的硬件设备和软件功能,只需安装相应驱动程序或更新软件接口就能整合新元素,保障系统不断发展。
(三)特征
- 并发(Concurrency):指多个程序或事件在同一时间段内同时发生。在单 CPU 系统中,通过时间片轮转等调度方式,让多个进程看似同时运行;在多 CPU 系统中,多个进程可真正在不同 CPU 核心上同时执行,例如一边听歌一边编辑文档,两个进程并发执行。
- 共享(Sharing):系统中的资源(如内存、文件、设备等)可以被多个进程共同使用。有互斥共享(如打印机,同一时刻只能被一个进程使用)和同时共享(如磁盘文件,多个进程可同时读取)两种形式。
- 虚拟(Virtualization):通过某种技术手段,将物理实体转变为逻辑上的对应物,使用户感觉拥有比实际物理资源更多的资源。比如虚拟内存,利用外存扩充内存空间,让用户觉得内存很大。
- 异步(Asynchrony):进程的执行顺序和执行时间是不确定的,以不可预知的速度向前推进。尽管进程有不同状态及调度规则,但由于各种因素(如 I/O 操作时长不确定),执行情况难以准确预判。
(四)操作系统的发展历程
经历了从无操作系统的手工操作阶段(人工手动输入输出,资源利用率极低),到批处理系统(先是单道批处理,后有多道批处理提高资源利用率但缺乏交互性),再到分时操作系统(多用户分时使用,交互性强)、实时操作系统(响应时间严格要求)、网络操作系统(具备网络相关功能)以及分布式操作系统(管理多台联网计算机,协同工作)等不同阶段,功能不断完善和拓展。
二、进程管理
(一)进程概念
进程是程序在一个数据集合上运行的过程,是操作系统进行资源分配和调度的基本单位。它包含程序段(存放指令代码)、数据段(存放运行相关数据)以及进程控制块(PCB,记录进程标识符、状态、优先级、程序计数器、寄存器内容等关键信息)。例如,打开一个浏览器应用程序,操作系统就为其创建一个进程,该进程有自己的代码执行逻辑、网页相关数据以及管理自身状态的 PCB。
(二)进程状态及转换
- 基本状态:
- 就绪态(Ready):进程已获取除 CPU 之外的所有必要资源,只要分配到 CPU 就能运行,多个就绪进程会排成就绪队列等待调度。
- 运行态(Running):进程正在占用 CPU 执行指令,在单 CPU 系统中同一时刻只有一个进程处于此状态。
- 阻塞态(Blocked):又称等待态,进程因等待某一事件(如等待 I/O 操作完成、等待信号量释放等)而暂停执行,即便 CPU 空闲也不能运行,需等事件结束后转换为就绪态。
- 状态转换:
- 就绪态→运行态:调度程序按调度算法(如先来先服务、优先级调度等)从就绪队列选进程分配 CPU 时发生转换。
- 运行态→就绪态:常见于时间片用完(时间片轮转算法下)或有更高优先级进程进入就绪队列(优先级调度且允许抢占时)。
- 运行态→阻塞态:当进程执行中需等待事件发生(如进行磁盘读写操作)主动放弃 CPU 时转换。
- 阻塞态→就绪态:等待的事件完成(如磁盘读操作结束产生中断通知操作系统)后,操作系统将其转换回就绪态。
(三)进程控制
通过特定的原语(原子操作,不可中断)来实现,包括:
- 创建进程:如在 UNIX 系统中通过
fork
系统调用创建子进程,操作系统为新进程分配资源、初始化 PCB 并加入就绪队列。 - 终止进程:进程完成任务或因错误、收到外部终止信号等结束运行,操作系统回收其占用资源(内存、文件等)并撤销 PCB。
- 阻塞与唤醒进程:进程可主动通过系统调用使自己进入阻塞态等待事件,事件完成后由相关机制(如中断处理程序)唤醒,使其从阻塞态变为就绪态。
(四)进程同步与互斥
- 临界区问题:多个进程并发访问共享临界资源(如打印机、共享变量等)时,临界区(访问临界资源的代码段)需保证同一时刻只有一个进程能进入,否则会出现数据不一致等问题。
- 互斥:对临界资源访问的排他性要求,实现方法有软件方法(如 Peterson 算法,但复杂且效率低)和硬件方法(如利用中断屏蔽指令、TestAndSet 指令、Swap 指令等,执行速度快但依赖硬件支持)。
- 同步:多个进程相互协作时协调执行顺序,常见通过信号量机制实现,信号量是个整型变量,有 P(等待,使信号量减 1,若小于 0 则阻塞)和 V(释放,使信号量加 1,若小于等于 0 则唤醒阻塞进程)操作,还可以用管程(将共享变量及相关操作封装,保证同步互斥且更易维护)等机制。
(五)进程通信
- 共享存储:多个进程共享一块内存区域来交换信息,需通过同步互斥机制确保数据一致性,比如共享缓冲区用于生产者和消费者进程传递数据。
- 消息传递:进程间通过发送和接收消息来通信,分为直接通信(明确指定接收方和发送方)和间接通信(通过中间实体如消息队列,发送方将消息放入队列,接收方从队列取消息)。
- 管道通信:常用于父子进程间通信,是一种半双工通信方式,一端写入数据,另一端读出数据,数据按写入顺序读出,有一定的同步机制保证读写有序。
(六)线程
线程是 CPU 调度和分派的基本单位,基本不拥有系统资源,与同属一个进程的其他线程共享进程资源(如内存空间、文件资源等)。分为用户级线程(由应用程序管理,对操作系统透明,切换快但一个线程阻塞会导致所属进程所有线程阻塞)和内核级线程(由操作系统管理,一个线程阻塞不影响其他线程,切换开销大些但能更好利用多核 CPU)。
三、存储管理
(一)内存管理功能
- 内存分配与回收:根据进程需求分配内存空间,进程结束后回收其占用内存,分配方式有静态分配(编译时确定内存大小)和动态分配(运行时按需申请)。
- 内存保护:防止不同进程的内存空间相互干扰,通过硬件(如基址寄存器、限长寄存器)和软件配合,监控进程访问内存操作,禁止越界访问。
- 内存映射:将程序中的逻辑地址转换为物理内存地址,便于 CPU 正确访问内存数据,例如分页存储管理、分段存储管理等都涉及地址映射机制。
- 内存扩充:借助虚拟存储技术,利用外存空间扩充内存容量,基于局部性原理(时间局部性、空间局部性),把暂时不用的程序和数据放外存,需要时调入内存,让用户感觉内存变大了。
(二)分区存储管理方案
- 固定分区分配:事先将内存划分为若干大小固定的分区,每个分区装入一个作业(进程),分区大小可以相同也可以不同,优点是简单易行,缺点是容易产生内部碎片(分区内未被利用的空间),且分区大小限制了可装入作业的大小。
- 动态分区分配:根据进程大小动态地划分内存分区,分配时找合适空闲分区分配给进程,会产生外部碎片(内存中存在很多分散的小空闲分区无法利用),解决外部碎片可采用紧凑技术(移动进程,使空闲分区合并),常用的分配算法有首次适应算法(从空闲分区链首开始找能满足大小的分区)、最佳适应算法(选最接近进程大小的空闲分区)、最坏适应算法(选最大空闲分区)等。
- 可重定位分区分配:在动态分区基础上,为解决外部碎片问题,通过动态重定位技术(借助重定位寄存器),移动进程在内存中的位置,合并空闲分区,提高内存利用率。
(三)页式存储管理方案
- 基本原理:将内存空间和程序空间都划分为固定大小的页(如每页 4KB),程序的逻辑地址分为页号和页内偏移量,通过页表(记录页号对应的物理块号等信息)实现逻辑地址到物理地址的转换,CPU 访问内存时先查页表找到物理块号,再结合页内偏移量确定物理地址。
- 页表结构及优化:页表可能占用较大内存空间,可采用多级页表(如二级页表、三级页表等,将页表再分页管理)、快表(TLB,存放近期常用页表项,是一种高速缓存,加快地址转换速度)等方式优化。
(四)段式存储管理方案
- 基本原理:按程序的逻辑结构(如代码段、数据段、堆栈段等)划分成不同的段,每段有自己的段名和长度,逻辑地址由段号和段内偏移量组成,通过段表(记录段号对应的内存起始地址、段长等信息)实现地址转换,便于程序和数据的模块化组织、共享和保护。
- 优缺点:优点是符合程序逻辑结构,便于程序段的动态增长、共享和保护;缺点是段的长度不一,内存分配管理相对复杂,容易产生外部碎片。
(五)段页式存储管理方案
结合了段式和页式的优点,先按段式划分程序,每个段再按页式划分,逻辑地址由段号、段内页号、页内偏移量组成,访问内存时先通过段表找到对应段的页表,再通过页表找到物理块,进行地址转换,这种方式管理复杂但综合性能较好。
(六)虚拟存储管理
- 基本概念:基于局部性原理,在程序运行时,不必将整个程序和数据都放入内存,只把当前需要的部分调入内存,其余放在外存(如磁盘),当需要访问外存部分时再调入内存,从用户角度感觉内存空间得到扩充。
- 页面置换算法:当内存空间已满,需要调入新页面时,决定置换出哪个已在内存的页面,常见算法有:
- 先进先出(FIFO):按页面进入内存的先后顺序置换,容易实现,但可能出现 Belady 异常(增加物理内存页面数,缺页次数反而增加),性能不佳。
- 最近最久未使用(LRU):置换最近最长时间未被使用的页面,符合程序局部性规律,缺页率相对较低,但实现成本较高,需记录页面使用时间顺序信息。
- 最佳置换算法(OPT):理论上选择以后永远不会使用或在最长时间内不会再使用的页面进行置换,缺页率最低,但无法预知未来页面使用情况,实际中难以实现,常作性能对比参照。
- 页面分配策略:决定为每个进程分配多少物理页面,有固定分配局部置换(给进程固定页面数,缺页时只在分配的页面内置换)、可变分配全局置换(根据系统空闲页面情况给进程分配页面,缺页时可从全局空闲页面中置换)、可变分配局部置换(初始分配一定页面数,缺页时可适当增加分配页面数,且只在自身页面内置换)等策略。
四、文件管理
(一)文件和文件系统
- 文件概念:文件是具有符号名的、在逻辑上具有完整意义的一组相关信息项的有序序列,是计算机存储信息的基本单位,如文档、程序、图像等都以文件形式存在。
- 文件系统:是操作系统中负责管理和存储文件的软件机构,包括文件存储空间管理、目录管理、文件的读写管理、文件保护等功能,为用户和应用程序提供方便的文件操作接口,使得用户能方便地创建、删除、修改、访问文件。
(二)文件的逻辑结构
- 无结构文件(流式文件):文件内部没有明显的结构,是一串字符流,像文本文件,对其读写操作通常按顺序进行,基本单位是字节或字符,适合存储文本、图像等数据,操作简单灵活。
- 有结构文件(记录式文件):由若干记录组成,每个记录有固定格式和长度(定长记录)或不同格式和长度(变长记录),常用于存储数据库等有结构的数据,便于按记录进行检索、修改等操作,常见类型有顺序文件(记录按顺序存储,适合顺序访问)、索引文件(为每个记录建立索引,便于随机访问)、索引顺序文件(结合顺序文件和索引文件特点,先按顺序分组,再对组建立索引,提高查找效率)等。
(三)文件的目录结构
- 单级目录结构:最简单的目录结构,所有文件都在同一个目录下,优点是简单,缺点是文件数量多时查找困难,且文件名不能重复,不便于文件管理和共享。
- 两级目录结构:分为主目录和用户目录,不同用户有自己的子目录,可在一定程度上解决文件名冲突问题,方便用户管理自己的文件,但仍不够灵活,不能很好地反映文件的层次关系。
- 树形目录结构:最常用的目录结构,类似倒立的树,根目录下有多个子目录,子目录下又可细分,层次分明,便于文件分类管理、查找和共享,用户通过完整路径名(如“C:\Program Files\Microsoft Office\Word.exe”)定位文件,操作系统依据目录项(包含文件名、属性、存储位置等信息)管理文件。
- 图形目录结构:以图形化方式展示目录和文件关系,更直观,便于用户操作,常用于图形用户界面操作系统中,用户通过鼠标点击等操作浏览、管理文件。
(四)文件存储空间管理
- 空闲表法:用一张表格记录磁盘上各个空闲块的起始地址和长度等信息,分配空间时查找合适空闲块,回收时更新表格内容,适用于连续分配方式,管理简单但表格维护开销较大。
- 空闲链表法:将磁盘空闲块通过链表形式连接,每个空闲块包含指向下一个空闲块的指针,分配时顺着链表查找合适空闲块,回收时将空闲块插入链表合适位置,灵活性高但查找效率相对较低。
- 位示图法:用每一位对应磁盘上的一个物理块,0 表示空闲,1 表示已占用,通过位运算进行空间分配和回收操作,占用空间小且便于快速查找空闲块,但需要额外的位运算操作。
(五)文件共享与文件保护
- 文件共享:允许多个用户或进程共享同一个文件,可通过硬链接(多个文件名指向同一个文件的索引节点,删除一个文件名不影响文件本身,除非所有硬链接都删除)和软链接(也叫符号链接,是一个特殊文件,指向另一个文件的路径,访问时通过路径查找目标文件)等方式实现,节省存储空间,提高资源利用率。
- 文件保护:防止文件被非法访问、篡改或破坏,常用方法有:
- 设置访问权限:如规定用户对文件的读、写、执行权限,通过文件属性或访问控制列表(ACL)来体现,不同用户或用户组有不同权限。
- 加密:对文件内容进行加密处理,只有拥有正确密钥的用户才能解密并访问文件,安全性高,但加密和解密会增加系统开销。
五、设备管理
(一)I/O 系统
- 组成部分:由 CPU 与控制器的接口、I/O 逻辑、控制器和设备之间的接口等构成,负责在 CPU、内存与各类外部设备(输入输出设备,如键盘、鼠标、打印机、磁盘等)之间进行数据传输和协调控制。
- 设备分类:
- 按使用特性分:存储设备(如磁盘、磁带等,用于长期存储数据)、输入设备(如键盘、鼠标、扫描仪等,用于向计算机输入数据)、输出设备(如显示器、打印机等,用于输出计算机处理结果)。
- 按传输速率分:低速设备(如键盘,数据传输速度慢)、中速设备(如打印机)、高速设备(如磁盘,数据传输速度快)。
- 按信息交换单位分:字符设备(以字符为单位进行数据传输,如终端设备)、块设备(以块为单位进行数据传输,如磁盘,每次读写一块数据)。
(二)I/O 控制方式
- 程序查询方式:最原始的控制方式,CPU 不断循环查询设备的状态寄存器,判断设备是否准备好进行数据传输。若设备未准备好,CPU 就一直等待;若准备好了,CPU 则进行数据传输操作。这种方式 CPU 利用率极低,因为在等待设备准备期间,CPU 一直处于空闲状态,只能用于简单的、对实时性要求不高且设备传输速度较慢的场景,例如早期简单的单片机系统与外部慢速设备的数据交互。
- 程序中断方式:当设备完成数据准备或数据传输结束等情况时,会向 CPU 发送中断请求信号,CPU 响应中断后暂停当前正在执行的程序,转而去执行相应的中断处理程序来完成数据传输等操作,之后再返回原程序继续执行。这种方式使得 CPU 在设备进行数据准备期间可以执行其他任务,提高了 CPU 的利用率,适用于像打印机这类慢速的、需要不定期与 CPU 交互数据的设备,能让 CPU 在等待打印机打印的过程中去处理其他事务。
- DMA(直接存储器访问)方式:在内存和设备之间开辟了一条直接的数据传输通路,设备可以不经过 CPU 直接与内存进行批量的数据传输,只需在传输开始和结束时向 CPU 发送请求和通知。它适用于高速的外部设备,如磁盘等,极大地减轻了 CPU 在数据传输过程中的负担,提高了系统的数据传输效率,因为磁盘读写数据量往往较大,如果通过 CPU 频繁中转会严重影响性能。
- 通道方式:通道是一种具有特殊功能的处理器,它可以独立执行通道程序来控制设备与内存之间的数据传输,进一步减轻 CPU 的负担,且能同时管理多台同类型或不同类型的设备,实现设备的并行操作。通道方式常用于大型计算机系统中管理众多复杂的 I/O 设备,例如大型服务器连接多个磁盘阵列、磁带机等设备时,通过通道进行高效的管控和数据传输。
(三)缓冲管理
- 缓冲的作用:由于 CPU 和 I/O 设备在处理速度上存在很大差异,设置缓冲区可以缓和这种速度不匹配的矛盾,提高 CPU 和 I/O 设备的并行性,同时减少数据传输过程中的中断次数等。例如,在网络数据接收时,网络接口的数据传输速度可能不稳定且相对较慢,而 CPU 处理数据速度很快,通过缓冲区先暂存网络传来的数据,让 CPU 可以在合适时间批量处理,避免频繁等待。
- 缓冲的类型:
- 单缓冲:在设备和 CPU 之间设置一个缓冲区,设备先将数据写入缓冲区,然后 CPU 再从缓冲区读取数据进行处理。它结构简单,但对于连续快速的数据传输场景,效率提升有限,常用于简单的、数据量不大且对传输速度要求不高的情况,比如键盘输入数据的临时存储。
- 双缓冲:设置两个缓冲区,设备向一个缓冲区写入数据的同时,CPU 可以从另一个缓冲区读取数据,两个缓冲区交替使用,使得设备和 CPU 能更好地并行工作,提高了数据传输效率,常用于图像显示等需要一定并行处理能力的场景,一边可以接收新的图像数据到一个缓冲区,另一边 CPU 可以对另一个缓冲区中的图像数据进行渲染等操作。
- 循环缓冲:由多个缓冲区组成一个循环队列的形式,适用于高速设备的数据传输,比如磁盘读写操作,多个缓冲区可以连续不断地接收和处理数据,保证数据的流畅传输,防止因设备和 CPU 速度差异导致的数据丢失或处理延迟等问题。
(四)设备分配
- 设备分配原则:根据设备的类型、数量以及各进程的需求,按照一定的策略来合理分配设备资源。对于独占设备(如打印机,同一时间只能被一个进程使用),通常采用独占分配方式,确保使用的独占性;对于共享设备(如磁盘,多个进程可同时访问不同区域),可以多个进程同时使用,通过合适的调度算法来协调访问顺序,避免冲突。同时还要考虑设备的使用效率、公平性以及避免死锁等问题。
- 设备分配算法:常见的有先来先服务算法(按照进程申请设备的先后顺序进行分配,简单公平,但可能对急需设备的重要进程不利)、优先级高的先分配算法(根据进程的优先级高低来分配设备,优先满足重要的、优先级高的进程需求,但要注意避免低优先级进程长期得不到设备的“饥饿”现象)等。
(五)I/O 软件系统层次模型
- 用户层软件:这是最靠近用户的一层,通常由应用程序中的 I/O 相关函数等组成,例如在 C 语言中调用
printf
函数进行输出操作,它通过系统调用接口向下面的层次发起 I/O 请求,为用户提供了方便的操作接口来实现简单的 I/O 功能,并且可以根据应用程序的需求对数据进行一定的格式处理等。 - 设备独立性软件:也叫与设备无关的 I/O 软件,它主要负责实现逻辑设备名到物理设备名的转换,为用户层软件提供统一的 I/O 操作接口,而不管底层具体使用的是哪种实际设备。比如,应用程序只需用通用的“打印机”这个逻辑设备名来发起打印请求,设备独立性软件会根据系统配置等情况找到对应的实际物理打印机设备来执行操作,同时还处理设备的分配、缓冲管理、出错处理等功能,提高了 I/O 系统的通用性和可移植性。
- 设备驱动程序:它是直接与硬件设备打交道的软件,负责将操作系统上层的 I/O 指令转化为设备能够理解和执行的特定控制信号,驱动设备完成相应的操作,如控制磁盘读写头的移动、打印机的打印头动作等,并且将设备的状态信息(如设备是否故障、是否忙碌等)反馈给上层软件,不同类型的设备都有对应的专门驱动程序,需要根据设备的硬件特性进行编写和适配。
- 中断处理程序:当设备完成一次 I/O 操作或者出现异常情况时,会通过中断机制向 CPU 发送中断信号,中断处理程序会立即响应中断,暂停当前正在执行的程序,去处理与该中断相关的事宜,比如完成数据的后续传输、对设备故障进行相应处理等,处理完后再恢复原程序的执行,确保设备和 CPU 之间能高效协调工作。
- 硬件:就是实际的 I/O 设备本身以及与之相关的硬件电路、接口等,是整个 I/O 系统的物理基础,如磁盘的盘片、磁头、电机等部件,以及与计算机主板连接的接口线路等,它们执行具体的物理数据读写、信号转换等操作。
六、运行机制与体系结构
(一)运行机制
- 核心态与用户态:
- 核心态(也叫管态、内核态):操作系统内核程序运行在此状态下,具有最高的权限,可以访问计算机系统的所有硬件资源和全部内存空间,能执行所有的指令,例如进行设备驱动、内存管理等关键操作,主要是为了保证系统的安全性和稳定性,防止普通用户程序随意篡改系统关键数据或干扰硬件的正常运行。
- 用户态(也叫目态):用户应用程序运行在此状态下,权限受到严格限制,只能访问分配给自己的内存区域,执行部分非特权指令,不能直接操作硬件设备或访问系统关键资源,这样可以避免因用户程序错误等原因破坏整个系统的正常运行秩序。
- 特权指令与非特权指令:
- 特权指令:只能在核心态下执行的指令,如启动设备、设置时钟、内存清零等指令,这些指令如果能被用户程序随意执行,可能会导致系统混乱,例如用户程序随意修改时钟,会使整个系统的时间管理出现问题,影响依赖时间的各种系统功能和应用程序的正常运行。
- 非特权指令:在用户态下可以正常执行的指令,比如简单的算术运算、逻辑运算、数据传送等指令,这些指令不会对系统的关键资源和整体运行造成直接的危害,可用于用户程序实现自身的业务逻辑功能。
- 中断与异常:
- 中断:是由外部设备(如键盘按键按下、磁盘数据传输完成等)或其他外部事件引发的,向 CPU 发送中断请求信号,使 CPU 暂停当前执行的程序,转而去处理相应的中断事件,处理完后再返回原程序继续执行,它是实现设备管理、多任务并发等功能的重要机制,能让 CPU 及时响应外部设备的需求,提高系统的整体效率和响应能力。
- 异常:是 CPU 在执行指令过程中自身检测到的一些不正常情况,比如除法运算中除数为零、执行了非法指令等,此时 CPU 也会暂停当前程序,转而去执行相应的异常处理程序,处理完异常后再决定是否继续执行原程序或者采取其他措施(如终止程序等),以保证系统在出现意外情况时能尽量维持稳定运行。
- 系统调用:是操作系统提供给应用程序的接口,应用程序通过系统调用可以请求操作系统内核提供特定的服务,比如打开文件、创建进程、申请内存等操作,这些操作需要操作系统内核的权限和资源才能完成,所以应用程序要从用户态陷入到核心态,通过系统调用的方式向内核发起请求,内核执行相应的服务后再将结果返回给应用程序,系统调用是用户程序与操作系统内核交互的重要途径,也是构建操作系统功能应用的关键环节。
(二)体系结构
- 整体式结构:将整个操作系统的功能都编写在一个大的模块中,各个功能模块之间的联系紧密,调用关系复杂,优点是效率较高,代码执行速度快,因为各部分之间的交互相对直接;缺点是可维护性和可扩展性差,一旦某个部分出现问题或者需要更新功能,可能会牵一发而动全身,影响到整个操作系统的稳定运行,早期的一些操作系统(如早期的 DOS 系统部分采用这种结构)多是这种形式,随着操作系统功能的日益复杂,这种结构逐渐不太适用了。
- 层次式结构:把操作系统按照功能的不同划分成多个层次,每一层都建立在下层的基础之上,为上层提供服务,同时又调用下层的功能,层次之间有清晰的接口,例如最底层是硬件相关的驱动等功能,往上依次是内存管理、进程管理、文件管理等层次,这种结构的优点是便于理解和维护,各层功能相对独立,修改某一层的功能对其他层的影响相对较小,提高了系统的可扩展性;缺点是由于分层导致系统调用的开销可能会有所增加,执行效率可能略受影响,像 MULTICS 操作系统就是典型的采用层次式结构的操作系统。
- 微内核结构:将操作系统的核心功能尽量精简,只保留最基本的如进程管理、内存管理、中断处理等功能在内核中(也就是微内核部分),其他的很多服务(如文件系统、设备驱动等)都作为独立的服务器进程运行在用户态,通过消息传递机制与微内核进行通信和交互来完成相应功能,这种结构的优点是具有良好的可扩展性、可移植性和安全性,因为各个服务相对独立,便于更新和替换,而且即使某个服务出现问题也不容易影响到内核的稳定运行;缺点是由于频繁的消息传递,系统性能可能在一定程度上受影响,不过随着硬件性能的提升以及优化技术的发展,这种结构在很多现代操作系统(如 Windows NT 系列、部分 Linux 发行版等)中都有应用,尤其适合分布式、嵌入式等复杂多变的应用场景。
希望以上完整的总结能帮助你全面深入地理解《操作系统原理》这门学科知识,如果你还有其他疑问或者需要进一步详细解释某些部分,可以随时问我。