《操作系统思维导图》
一、操作系统概述
1.1 定义与作用
- 定义:管理计算机硬件与软件资源的系统软件,是计算机系统的核心。
- 作用:
- 资源管理:有效分配和管理计算机资源(CPU、内存、I/O设备)。
- 进程管理:创建、调度、同步、通信和终止进程。
- 存储管理:分配和回收内存空间,提供虚拟内存机制。
- 设备管理:控制和驱动各种外围设备。
- 文件管理:组织、存储、检索和保护文件数据。
- 提供用户接口:用户可以通过命令或图形界面与操作系统交互。
- 作用:
1.2 操作系统的类型
- 批处理操作系统:
- 特点:成批处理作业,自动化运行,资源利用率低。
- 适用场景:早期的科学计算。
- 分时操作系统:
- 特点:多个用户共享计算机资源,交互性强,响应时间短。
- 适用场景:多用户交互式应用。
- 实时操作系统:
- 特点:强调实时性,能在规定的时间内完成特定任务。
- 适用场景:工业控制、航空航天等领域。
- 网络操作系统:
- 特点:支持网络通信和资源共享,提供网络服务。
- 适用场景:服务器、网络设备。
- 分布式操作系统:
- 特点:将多台计算机组成一个逻辑整体,协同完成任务。
- 适用场景:高性能计算、大规模数据处理。
- 嵌入式操作系统:
- 特点:体积小、功耗低、实时性强,专门为嵌入式设备设计。
- 适用场景:智能手机、物联网设备。
1.3 操作系统的结构
- 单内核:所有操作系统服务都在内核空间运行。
- 优点:效率高。
- 缺点:稳定性差,模块耦合度高。
- 微内核:内核只提供最基本的服务,其他服务在用户空间运行。
- 优点:稳定性好,模块化,易于扩展。
- 缺点:效率相对较低。
- 混合内核:结合了单内核和微内核的优点。
二、进程管理
2.1 进程与线程
- 进程:程序的一次执行实例,拥有独立的资源。
- 线程:进程中的一个执行单元,共享进程的资源。
- 区别:
- 资源:进程是资源分配的基本单位,线程是CPU调度的基本单位。
- 开销:创建、销毁和切换进程的开销比线程大。
- 并发性:一个进程可以包含多个线程,实现并发执行。
- 多线程的优点:提高程序并发度,提高资源利用率。
2.2 进程状态
- 创建态:进程正在被创建。
- 就绪态:进程已准备好运行,等待CPU调度。
- 运行态:进程正在CPU上执行。
- 阻塞态(等待态):进程因为等待某个事件而暂停运行。
- 终止态:进程执行完毕或被终止。
2.3 进程调度
- 调度算法:
- 先来先服务 (FCFS):按到达顺序调度。
- 短作业优先 (SJF):优先调度运行时间短的作业。
- 优先级调度:根据优先级调度,优先级高的先运行。
- 轮转调度:每个进程分配一个时间片,轮流执行。
- 多级反馈队列调度:结合了多种调度算法。
- 调度指标:
- 周转时间:作业完成时间 - 作业到达时间。
- 带权周转时间:周转时间 / 作业运行时间。
- 响应时间:用户提交请求到系统首次响应的时间。
2.4 进程同步与互斥
- 临界区:访问共享资源的代码段。
- 互斥:保证只有一个进程能访问临界区。
- 同步:进程间协同完成任务,有先后顺序关系。
- 实现方式:
- 互斥锁 (Mutex):保证只有一个线程能访问共享资源。
- 信号量 (Semaphore):控制多个线程对共享资源的访问。
- 管程 (Monitor):提供了一种更高级的同步机制。
2.5 进程间通信 (IPC)
- 管道:单向通信,适用于父子进程或兄弟进程。
- 命名管道:允许无亲缘关系的进程通信。
- 消息队列:以消息为单位进行通信,异步通信。
- 共享内存:进程间共享一块内存区域,效率高。
- 信号:通知进程发生某种事件。
- Socket:用于网络通信。
三、存储管理
3.1 内存管理
- 连续分配:
- 单一连续分配:整个内存空间分配给一个用户程序。
- 固定分区分配:内存划分成固定大小的分区。
- 动态分区分配:根据用户需求动态分配内存空间。
- 分配算法:首次适应算法、最佳适应算法、最坏适应算法。
- 非连续分配:
- 分配算法:首次适应算法、最佳适应算法、最坏适应算法。
- 分页存储管理:将进程的逻辑地址空间划分为固定大小的页,内存空间划分为页框。
- 分段存储管理:将进程的逻辑地址空间划分为段,每个段大小可以不同。
- 段页式存储管理:结合了分页和分段的优点。
3.2 虚拟内存
- 原理:允许进程使用大于物理内存的地址空间。
- 实现方式:
- 请求分页:只有当需要时才将页加载到内存。
- 请求分段:只有当需要时才将段加载到内存。
- 页面置换算法:
- 最佳置换算法 (OPT):选择未来最长时间内不会被访问的页面置换。
- 先进先出置换算法 (FIFO):选择最先进入内存的页面置换。
- 最近最久未使用置换算法 (LRU):选择最近最久未使用的页面置换。
- 时钟置换算法 (Clock):改进的FIFO算法。
- 实现方式:
3.3 地址映射
- 逻辑地址到物理地址的转换。
- 页表:存储逻辑页号与物理页框号的对应关系。
- 快表 (TLB):高速缓存,存储常用的页表项,加速地址转换。
四、设备管理
4.1 I/O 系统
- I/O 设备:输入输出设备,如键盘、鼠标、显示器、硬盘。
- I/O 控制器:控制 I/O 设备与 CPU 之间的通信。
- I/O 驱动程序:操作系统中用于控制特定 I/O 设备的程序。
- I/O 通道:独立于 CPU 的硬件设备,负责数据传输。
4.2 I/O 控制方式
- 程序直接控制:CPU 直接控制 I/O 设备,效率低。
- 中断驱动 I/O:I/O 设备完成操作后,发送中断请求给 CPU。
- DMA (直接内存访问):I/O 设备可以直接访问内存,无需 CPU 干预。
4.3 磁盘管理
- 磁盘调度算法:
- 先来先服务 (FCFS):按请求到达顺序调度。
- 最短寻道时间优先 (SSTF):选择离当前磁头位置最近的磁道。
- 扫描算法 (SCAN):磁头在一个方向上移动,扫描所有磁道。
- 循环扫描算法 (C-SCAN):磁头在一个方向上移动,到达最后一个磁道后直接返回到起始位置。
- 磁盘存储空间的管理:
- 空闲空间管理:位图、链表。
五、文件管理
5.1 文件系统
- 文件的概念:一组带标识的、在逻辑上具有完整意义的数据项的序列。
- 文件类型:文本文件、二进制文件。
- 文件结构:顺序文件、索引文件、索引顺序文件。
5.2 文件目录
- 目录结构:
- 单级目录:所有文件放在同一目录下。
- 两级目录:用户目录 + 文件目录。
- 树形目录:多级目录结构。
- 目录项:文件名、文件属性、文件物理地址。
5.3 文件存储空间管理
- 连续分配:将文件存储在连续的磁盘块中。
- 链接分配:将文件存储在不连续的磁盘块中,通过指针链接。
- 索引分配:为每个文件建立一个索引表,存储文件块的物理地址。
5.4 文件保护
- 访问控制:
- 访问矩阵:定义每个用户对每个文件的访问权限。
- 访问控制列表 (ACL):为每个文件关联一个列表,列出允许访问的用户及其权限。
- capability 列表:为每个用户关联一个列表,列出该用户可以访问的文件及其权限。
- 加密:对文件进行加密,防止未经授权的访问。