操作系统导论
TODO
一、操作系统知识树
操作系统概述
定义:操作系统是管理计算机硬件与软件资源、为用户提供基础服务的软件系统。
作用:资源管理、任务调度、用户接口、系统保护等。
发展历程:从批处理到实时、多任务的进化。
操作系统就像是计算机的大管家,它负责管理电脑里的硬件和软件,确保它们都能顺利工作。比如,当你在电脑上同时打开多个程序(像是浏览器、音乐播放器和文字处理软件),操作系统会协调它们的运行,确保它们不会互相干扰,像是在管理多个任务的员工。它还负责管理文件,比如你存储的文档或照片,让你能方便地找到和打开它们。操作系统还像一个守卫,保护电脑免受病毒和坏程序的侵害。最早的操作系统只能做一件事,比如一个任务就一个程序,而现代操作系统则可以同时做很多事情,像是 Windows、MacOS 或安卓手机的系统,它们都帮助我们高效地使用设备。
操作系统的核心功能
- 进程管理
- 进程与线程的概念
进程:是正在执行的程序的实例,是系统进行资源分配和调度的基本单位。每个进程拥有自己的内存空间、系统资源以及一个或多个线程。
线程:是进程中的执行单元,同一个进程内的多个线程共享进程的资源(如内存空间),但每个线程都有自己的执行路径。线程是 CPU 调度的基本单位。 - 进程状态(新建、就绪、执行、等待、终止)
新建(New):进程正在被创建,但尚未开始执行。
就绪(Ready):进程已准备好执行,但由于 CPU 资源的限制,正在等待 CPU 的分配。
执行(Running):进程正在执行中,获得了 CPU 的时间片。
等待(Waiting):进程由于某些原因(如等待 I/O 操作)而无法继续执行,进入等待状态。
终止(Terminated):进程执行完毕或被强制终止,进入终止状态。 - 进程调度算法(先来先服务、时间片轮转、优先级调度等)
- 进程间通信(管道、消息队列、共享内存、信号量)
- 进程同步与互斥(信号量、互斥锁、条件变量)
- 进程与线程的概念
- 内存管理
- 内存分配方式(连续分配、分页、分段)
- 虚拟内存与物理内存
- 页面置换算法(FIFO、LRU、OPT)
- 内存共享与保护
- 文件系统管理
- 文件与目录管理(命名、存储、访问权限)
- 文件系统类型(NTFS, EXT4, FAT32)
- 文件存储结构(文件分配表、索引节点)
- 文件操作(创建、读取、写入、删除)
- 设备管理
- 输入输出设备管理(磁盘、打印机、网络设备)
- 设备驱动与中断管理
- I/O 调度与缓存管理
- 外设控制(DMA、PIO)
- 用户管理与权限控制
- 用户身份与认证机制(用户名、密码、双因素认证)
- 权限管理与访问控制(ACM 模型、ACL)
- 多用户与多任务管理
- 网络功能与协议栈
- 网络协议模型(OSI、TCP/IP)
- 网络接口与设备管理
- 网络层与传输层协议(IP、TCP、UDP)
- 网络安全(防火墙、加密技术、VPN)
- 安全与保护
- 系统安全模型(Bell-LaPadula 模型、Biba 模型)
- 数据保护与加密
- 防病毒与入侵检测
- 权限与访问控制(SELinux、AppArmor)
- 进程管理
操作系统内核
- 内核分类
- 宏内核、微内核、混合内核
- 内核设计与架构
- 内核态与用户态
- 内核模块化设计
- 系统调用与内核接口
- 系统调用机制(用户程序与内核的接口)
- 内核调度与中断处理
- 异常与信号处理
- 调度与中断管理
- 中断管理机制
- 定时器与任务调度
- 内核分类
操作系统的分类
- 单核与多核操作系统
- 单核操作系统的特点与限制
- 多核操作系统的并行性与并发性
- 实时操作系统(RTOS)
- 定义与应用领域
- 实时调度算法(优先级调度、EDF、RMS)
- 嵌入式系统与 RTOS(FreeRTOS、VxWorks)
- 分布式操作系统
- 定义与应用(云计算、计算集群)
- 分布式资源管理与调度
- 分布式文件系统(NFS、HDFS)
- 虚拟化操作系统
- 虚拟化技术(硬件虚拟化、容器化)
- 虚拟机管理程序(Hypervisor)
- 虚拟操作系统的管理与调度(KVM、Docker)
- 单核与多核操作系统
系统开发与调试
- 操作系统设计与实现
- 内核开发(内存管理、进程调度)
- 驱动开发(硬件抽象、I/O 控制)
- 调试与性能优化
- 性能分析工具(gdb、strace、valgrind)
- 系统监控与瓶颈分析
- 日志管理与问题排查
- 日志文件管理(syslog、dmesg)
- 错误处理与故障排查
- 操作系统设计与实现
前沿技术与趋势
- 云操作系统与容器技术
- 云计算基础与操作系统的适应性
- 容器技术(Docker、Kubernetes)
- 操作系统的安全性
- 沙箱技术与应用
- 安全增强技术(SELinux、AppArmor)
- 智能操作系统
- 物联网操作系统(Zephyr、TinyOS)
- 边缘计算与操作系统
- 云操作系统与容器技术
二、操作系统知识树总结
- 主干:包括了操作系统的核心功能、内核设计、分类与管理(如进程、内存、文件系统、设备管理等)。
- 分支:涉及具体的技术和子领域,包括实时操作系统、虚拟化操作系统、分布式操作系统等。
- 拓展:结合了操作系统的开发、调试技巧以及前沿技术(如云计算、容器技术、智能操作系统等)。
三、重点内容
1. 调度算法
调度算法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
先来先服务 FCFS | 简单易懂,公平 | 可能导致长进程阻塞短进程,平均等待时间长 | 批处理系统、无实时性要求的环境 |
时间片轮转 RR | 公平性好,避免长进程阻塞短进程 | 上下文切换开销大,时间片设置过短时效率低 | 多任务操作系统、交互式应用,如桌面环境、H5 页面 |
优先级调度 | 适合重要任务先执行 | 可能导致低优先级任务饥饿 | 实时系统、任务优先级有明确区分的环境 |
最短作业优先 SJF | 最小化平均等待时间 | 预测执行时间困难,可能导致饥饿 | 已知任务执行时间的场景,批处理任务 |
多级反馈队列 | 结合了多种调度策略,灵活性强 | 实现复杂,配置难度较大 | 交互式系统,操作系统,多个任务需实时响应的环境 |
2. 进程通信方式
通信方式 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
管道 | 简单易用,适合父子进程间通信 | 只支持单向通信,数据量较小时较有效 | 父子进程间的数据传递,简单的数据流处理 |
消息队列 | 支持异步通信,消息管理方便,持久性好 | 需要额外的存储和管理资源,性能开销大 | 分布式系统,后台任务调度,客户端-服务端通信 |
共享内存 | 高效,速度快,适合大量数据共享 | 易出错,需同步控制 | 高性能的计算应用,如大数据处理、实时系统 |
信号量 | 用于进程同步与互斥,避免数据冲突 | 实现复杂,容易引发死锁 | 资源管理,操作系统中的资源控制 |
套接字 | 支持跨计算机通信,支持多种协议 | 配置复杂,可能存在延迟 | 网络通信,分布式系统,远程调用 |
文件映射 | 高效,直接操作文件数据 | 内存管理和同步控制较复杂 | 大数据处理,文件共享 |
信号 | 异步、实时的通信机制 | 通信内容有限,适合简单通知 | 系统事件通知,进程控制 |
3. 进程同步与互斥
类型 | 目的 | 常用机制 | 适用场景 |
---|---|---|---|
进程互斥 | 防止多个进程/线程同时访问共享资源 | 互斥锁、二进制信号量 | 共享资源的独占访问,文件写入等 |
进程同步 | 控制多个进程/线程的执行顺序 | 信号量、条件变量、屏障、事件 | 进程间协作、顺序执行任务,生产者消费者问题等 |
- 互斥 解决的是“谁可以访问资源”的问题,而 同步 解决的是“什么时候访问资源”的问题。
- 互斥通常是通过锁机制来实现的,而同步则通过信号量、条件变量等方式来协调进程间的执行顺序。
4. 内存分配方式与页面置换算法
类别 | 名称 | 描述 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|---|
内存分配方式 | 连续分配 | 将内存以连续块的形式分配给进程。 | 实现简单,分配速度快 | 容易产生内存碎片,扩展性较差 | 适用于早期简单的操作系统环境 |
分页 | 将内存分为固定大小的页,进程的虚拟地址空间分配为页,物理内存按页框分配。 | 减少内存碎片,分配灵活 | 需要维护页表,增加内存管理复杂性 | 常见于现代操作系统 | |
分段 | 根据程序逻辑将内存划分成段(如代码段、数据段),每段独立分配。 | 根据逻辑需求分配,便于资源管理 | 产生外部碎片,内存管理复杂 | 适用于多段逻辑需求较高的系统 |
类别 | 算法 | 描述 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|---|
页面置换算法 | FIFO | 最早进入内存的页面优先被置换出去。 | 实现简单 | 可能置换常用页面,降低性能 | 简单系统的页面置换 |
LRU | 最近最少使用的页面优先置换出去。 | 性能较好,反映页面使用频率 | 需要维护历史记录,增加管理开销 | 需要优化内存利用率的场景 | |
OPT | 选择未来最晚使用的页面进行置换(理论最优)。 | 最低缺页率(理想情况下) | 实现困难,实际中无法准确预测未来使用 | 用于算法理论分析 |
5. 权限管理和访问控制模型
概念 | 定义 | 应用场景 |
---|---|---|
权限管理 | 操作系统根据用户身份授予不同权限,控制用户访问文件、进程和设备的能力。 | 文件系统、进程调度、设备管理等 |
访问控制列表(ACL) | 权限管理方式,通过在资源上附加权限列表来指定用户/用户组权限(如读、写、执行)。 | 文件系统(如 Linux),共享资源控制 |
模型 | 定义 | 适用场景 |
---|---|---|
强制访问控制(MAC) | 系统强制指定资源的访问规则,用户无法更改权限设置。 | 高安全性环境,如军事、政府机构 |
自主访问控制(DAC) | 资源所有者可自主分配权限(如文件所有者设置文件访问权限)。 | 文件管理、用户对资源控制较多的环境 |
基于角色的访问控制(RBAC) | 权限与角色关联,通过角色(如管理员、普通用户)分配权限。 | 企业和团队协作场景,如企业管理系统 |