一.基本概念

操作系统(Operation System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境的程序集合。

三重定义:是系统软件,区别于应用软件/硬件

                  是计算机软硬件资源的管理者

                  是用户、应用程序与硬件之间的接口

四大设计目标:

方便性 Convenience 核心是提供良好的用户接口,方便用户使用计算机系统

有效性

Efficiency

提高硬件资源的利用率与系统吞吐量 

(吞吐量throughput:单位时间内系统能够完成的进程 / 任务数量

可扩展性

Extensibility

适配硬件升级、功能拓展

开放性

Openness

遵循统一、公开的标准接口规范,支持不同软硬件兼容,兼容不同厂商设备与应用

四大基本特征:

并发

Concurrence

两个或多个事件在同一时间间隔内发生

宏观同时、微观交替

共享

Sharing

多个并发执行的进程共同使用系统资源

虚拟

Virtual

一个物理上的实体->若干逻辑上的对应物

异步

Asynchhronism [eɪ'sɪŋkrənəs]

进程以不可预知的速度、走走停停向前推进;何时分配 CPU、何时 I/O 阻塞都不确定。

         并行Parallelism:存在多个处理核心(多个 CPU / 多核 CPU),同一时刻多个任务真正同时执行,是物理层面的同时运行。

1.1核心权限与架构

比喻对象 专业术语 英文全称 一句话定义
董事会/核心机房(最高权限) 内核态 / 核心态 Kernel Mode CPU执行操作系统内核代码的特权模式,可执行全部指令、访问所有硬件
普通办公区(受限权限) 用户态 User Mode CPU执行普通应用程序的受限模式,不能直接操作硬件或内核空间。
前台申请表(办业务的唯一凭证) 系统调用 System Call 用户态程序请求内核服务的编程接口,是切换到内核态的唯一合法入口
前台申请表上的专属业务编号 系统调用号 System Call Number 内核为每个系统调用分配的唯一整数编号,用于在陷入内核时快速定位具体服务。
紧急电话/闹钟(硬件主动喊你) 中断 Interrupt 硬件设备(键盘、时钟)发往CPU的异步电信号打断当前执行流并转向处理程序。
程序内部出错报警(自己触发) 陷阱 / 异常 Trap / Exception 程序执行中同步发生的意外事件(如除零、缺页),主动触发内核处理

1.2 进程与线程 - 项目执行部

比喻对象 专业术语 英文全称  一句话定义

独立项目组

(有独立办公室和物资)

进程 Process 正在运行的程序实例,是操作系统资源分配(内存、文件)的基本单位
项目组里的具体员工 线程 Thread 进程内部的执行流,是CPU调度的最小单位,同进程的线程共享资源。
项目组的详细档案卡 进程控制块 PCB (Process Control Block) 内核为每个进程维护的数据结构,存储PID、状态、寄存器、优先级等全部管理信息。
员工的个人档案卡 线程控制块 TCB (Thread Control Block) 内核为每个线程维护的数据结构,记录线程独有的寄存器、栈指针和调度信息。
项目组组号(唯一编号) 进程标识符 PID (Process IDentifier) 系统分配给每个进程的唯一数字编号,用于内核索引和管理。
排队等工位 / 正在干活 / 等物料暂停 进程基础三态 Ready / Running / Blocked 就绪态(等待CPU)、运行态(占用CPU)、阻塞态(等待I/O),构成进程生命周期流转。
负责人离职后无人接管的项目组 孤儿进程 Orphan Process 进程先于子进程结束,子进程被内核中的init/systemd进程领养并回收。
项目已结束但档案未注销(占着工号) 僵尸进程 Zombie Process 子进程已终止,但其PCB仍保留等待父进程调用wait()读取退出状态,若父进程不处理则造成资源泄漏
把整个项目组完整复制一份分家 fork() 进程创建 fork() System Call Unix/Linux中通过复制调用进程(父进程)来创建新进程(子进程)的系统调用,子进程获得父进程数据副本。

1.3 CPU调度算法 -  排班

比喻对象 专业术语 英文全称 / 缩写 一句话定义

总经理

(制定排班规则)

调度器 Scheduler 操作系统模块,负责按策略从就绪队列中选择下一个占用CPU的进程/线程
换项目时收拾旧文件/铺开新文件 上下文切换 Context Switch 保存当前进程的CPU状态到其PCB,并加载新进程PCB内容的切换开销

先来先排队,

不插队不换人

先来先服务 FCFS (First-Come, First-Served) 按进程到达顺序依次执行直到结束,非抢占式,平均等待时间较长。
每人发5分钟时间片,铃响就换人 时间片轮转 RR (Round Robin) 每个进程分配固定时间片,用完即切换,实现公平分时响应
紧急任务插队先做 优先级调度 Priority Scheduling 根据进程优先级高低决定执行顺序,高优先级可抢占低优先级(需配合老化防饥饿)。
优先把耗时短的杂活先干完 短作业优先 SJF (Shortest Job First) 优先选择预计运行时间最短的进程执行,理论上平均等待时间最小(非抢占)。
等得越久的老员工,下次被叫到的优先级越高 高响应比优先 HRRN (Highest Response Ratio Next) 动态计算优先级(等待时间+要求服务时间)/要求服务时间,兼顾长短作业与等待时长。
现代综合排班法(多队列动态升降级) 多级反馈队列 MLFQ (Multilevel Feedback Queue) 设置多个优先级队列,进程按行为(CPU/IO密集型)动态升降队列,兼顾响应与吞吐。
排班规则是否允许中途把人从工位撵走 抢占式 / 非抢占式 Preemptive / Non-preemptive

抢占式允许更高优先级任务强制剥夺当前进程的CPU;

非抢占式必须等当前进程主动让出。

1.4 内存管理-行政后勤部

比喻对象 专业术语 英文全称 简要解释

办公桌面

(快但面积有限)

物理内存 Physical Memory / RAM 计算机实际安装的随机存取存储器,CPU可直接寻址,容量有限且断电丢失。
大型仓库(大但取用慢)

硬盘 /

外存

Hard Disk /

Secondary Storage

永久存储数据的设备(机械硬盘或SSD),容量大但访问速度远慢于内存。

桌面置换大法

(用仓库冒充桌面空间)

虚拟内存 Virtual Memory 操作系统利用外存(硬盘 / SSD) 逻辑扩充内存的存储管理技术。
仓库里划出的临时货架区 交换分区 / 交换空间 Swap Partition / Swap Space 硬盘上专门用于存放被换出内存页的区域,作为虚拟内存的后备仓库
把文件在桌面和仓库间搬来搬去 分页 / 页面交换 Paging 将虚拟地址空间和物理内存都划分固定大小的页(通常4KB),按页进行映射和交换。
按逻辑段落划分(代码段、数据段分开) 分段 Segmentation 程序划分为逻辑段(代码段、数据段等),每段有独立的基址和长度
先按逻辑切大段落,再把每个大段切成固定小块 段页式存储管理 Segmented Paging 结合分段与分页:程序按逻辑分段,每段内部按固定大小分页段表+页表两级映射
储物格子内部用不完的空隙 内部碎片 Internal Fragmentation 分页机制中,进程最后一页未占满的剩余空间,属于页内浪费。
储物格之间无法拼凑的零散缝隙 外部碎片 External Fragmentation 分段机制中,内存空闲区被分割成许多无法利用的小块,总和够但连续不够
项目组的索引地图(虚拟→物理映射) 页表 Page Table 进程私有的映射表,将虚拟页号转换为物理页框号(或记录该页在交换区的位置)。
行政口袋本(缓存最近常用映射) 快表 / 转译后备缓冲器 TLB (Translation Lookaside Buffer) CPU内部的高速缓存,缓存最近访问的页表项,命中时无需查内存页表,极速加速地址转换。
仓库(虚拟)里的格子对应桌面(物理)的具体格子编号 物理页框 Page Frame 物理内存被划分成的固定大小存储块,用于装载从虚拟内存映射过来的虚拟页。
发现文件不在桌面,需去仓库取 缺页中断 Page Fault 访问的虚拟页不在物理内存时触发的异常,需从硬盘加载并可能换出一页。
做梦时的最佳选择(理论最优) / 翻抽屉扔最久没碰的 / 按顺时针转圈检查淘汰 OPT / LRU / Clock 置换算法 OPT (Optimal) / LRU (Least Recently Used) / Clock OPT淘汰最远将来才用的页(理论下限);LRU淘汰最长时间未用的页;Clock用循环队列和访问位近似实现LRU。
桌面满了该扔哪份文件的通用规则 页面置换算法 Page Replacement Algorithm 缺页时决定淘汰哪个物理页的规则,常见有FIFO、LRU、Clock、NRU等。

x86(32位):指针长度只有 32 位,所以虚拟地址空间最大只有 2^32 = 4GB

x64(64位):指针长度为 64 位, 所以纯数学理论上虚拟地址空间最大只有 2^64 = 16777216 TB。

1.5  文件管理

比喻对象 专业术语 英文全称 / 缩写 简要解释
文件夹(分类盒子) 目录 Directory 文件系统中用于组织文件的容器,可包含文件或子目录。
树状结构放置 文件树 / 目录树 File Tree / Directory Tree 根目录开始的分层树状结构,所有文件通过唯一路径标识
文件的底层身份证(记录大小、权限、位置,但不记文件名) 索引节点 Inode (Index Node) 硬盘上存储文件元数据(大小、权限、时间戳、数据块指针)的结构,文件名在目录项中。
进程打开文件时拿到的号码牌 文件描述符 File Descriptor (FD) 操作系统为进程打开的文件分配的整数索引,进程通过它读写文件,指向内核文件表项。
同份文件的多个别名(指向同一个inode) 硬链接 Hard Link 同一inode的多个目录项,删除源文件不影响其他硬链接访问数据。
指向原始文件的快捷方式(新建独立inode) 软链接 / 符号链接 Symbolic Link 新建一个独立文件存储目标路径,源文件删除则失效,可跨文件系统。
仓库自动取货机的寻路优化 磁盘调度算法 FCFS / SSTF / SCAN / CSCAN 决定磁头移动顺序:FCFS按请求顺序,SSTF找最近磁道,SCAN往复扫描,CSCAN单向循环。
取货文件的中转临时置物台 缓冲区缓存 Buffer Cache 内核在内存中开辟的区域,暂存磁盘数据块,显著减少频繁的直接磁盘I/O。

1.6  同步与死锁(并发控制) - 资源争夺(Process、Thread)

比喻对象 专业术语 英文全称  简要解释
同一时间只能一个人使用的打印机(保护对象) 临界资源 Critical Resource 一次仅允许一个进程/线程访问的共享资源(如打印机、全局变量),是引入锁的根本原因
申请、使用、释放公共资源的操作 临界区 Critical Section 访问共享资源的代码片段,同一时刻最多一个线程执行。
多人同时修改同一份Excel导致数据错乱 竞态条件 Race Condition 多个进程/线程并发访问共享数据时,由于执行顺序不可控导致结果取决于时机错误
不可分割的最小操作(要么全做,要么全不做) 原子操作 Atomic Operation 执行过程不可中断的操作,常用于实现锁和同步原语。
预约登记表(可允许多个预约) 信号量 Semaphore 整型计数器,用于控制多进程对共享资源的访问,支持P(减)和V(加)操作。
只能一人进入的厕所门锁 互斥量 / 互斥锁 Mutex (Mutual Exclusion) 特殊的二值信号量(0/1),同一时刻只允许一个线程进入临界区
抢不到锁就原地打转不放手 自旋锁 Spinlock 忙等待锁,尝试获取的线程循环检测直到成功,适用于临界区极短且不睡眠的场景。
阅览室规则:允许多人同时看书(读共享),写书时只准一人进且禁止他人读(写独占) 读写锁 Read-Write Lock (RWLock) 更细粒度的锁,允许多个读者同时访问,但写者必须独占,适合读多写少。
A等B,B等A,互相僵持卡死 死锁 Deadlock 多个进程互相等待对方占有的资源,导致永久阻塞的现象。
形成死锁的四个缺一不可的条件 死锁必要条件 Mutual Exclusion / Hold and Wait / No Preemption / Circular Wait 互斥、占有且等待、不可抢占、循环等待,四个条件同时满足才会死锁。
针对死锁的四大对策 死锁处理策略 Prevention / Avoidance / Detection / Recovery 预防(破坏条件)、避免(如银行家算法)、检测(周期检查资源图)、解除(终止进程或抢占资源)。
精明的银行家,分配前先算账 银行家算法 Banker's Algorithm 避免死锁的经典算法,分配资源前模拟计算,确保系统始终处于安全状态。
工厂流水线(生产-消费) / 圆桌哲学家拿筷子 / 图书管理员登记借还书 经典同步问题 Producer-Consumer / Dining Philosophers / Readers-Writers 用于验证同步机制正确性的三大经典场景:生产者-消费者(共享缓冲区)、哲学家就餐(竞争叉子)、读者-写者(数据共享)。

1.7  进程间通信 IPC - 跨部门沟通

比喻对象 专业术语 英文全称 简要解释
跨部门沟通总称 进程间通信 IPC (Inter-Process Communication) 操作系统提供的机制,允许不同进程之间交换数据或同步动作
对讲传声筒(单向字节流) 管道 Pipe 单向字节流通信,通常用于父子进程,数据按FIFO顺序传输。
有名字的对讲机(无亲缘关系也能用) 命名管道 Named Pipe / FIFO 有文件名标识的管道,允许无亲缘关系的进程间通信,同样按FIFO传输
内部邮件系统(异步收发消息块) 消息队列 Message Queue 进程间通过消息块异步通信,每个消息有类型,接收方可按类型选择读取。
公共大黑板(最快,但需加锁) 共享内存 Shared Memory 将同一块物理内存映射到多个进程的虚拟地址空间,最快IPC,需配合同步机制。
把仓库文件直接映射到桌面上操作(省去复制搬运) 内存映射 mmap (Memory Map) 文件或设备内容映射到进程虚拟地址空间,实现文件访问与内存访问的统一,可用于进程间共享。
跨城市/跨国家通信(网络) 套接字 Socket 支持跨网络或跨主机的通信端点,提供字节流或数据报传输,是网络编程基础。
同栋大楼内部专用对讲专线(比长途快) Unix域套接字 Unix Domain Socket 本机内部进程间通信的Socket接口,基于文件系统路径标识,不经网络协议栈,效率高于网络Socket。
轻量级紧急通知(响铃提醒) 信号 Signal 内核发送给进程的软中断通知,用于异步事件处理(如SIGKILL终止、SIGALRM定时)。

1.8  并发与执行特性

比喻对象 专业术语 英文全称  简要解释
多个项目同时在不同会议室进行(真同时) 并行 Parallelism 多个任务同时在不同的CPU核心上执行,是物理上真正同时运行。
多个项目轮流用同一间会议室(逻辑同时) 并发 Concurrency 多个任务在同一时间段内交替推进(通过时间片轮转),逻辑上看起来同时,实际可能单核。
员工在等打印机结果时暂停手头一切工作 阻塞 Blocking 进程/线程因等待事件(如I/O完成)而暂停执行,被移出运行队列。
员工提交打印请求后继续干别的,不必干等 非阻塞 Non-blocking 请求操作后不等待完成,立即返回,后续通过轮询或回调检查结果。
交了打印申请后主动等结果再走 / 交了就走,事后通知再来取 同步 / 异步 Synchronous / Asynchronous

同步指调用方主动等待操作完成并获取结果;

异步指发起调用后立即返回,由系统通过回调或通知告知结果。

阻塞/非阻塞侧重调用方等待时能否干别的,同步/异步侧重结果返回的方式。

二. 操作系统发展历程

1.1   手工操作阶段(无操作系统)

早期计算机不存在任何系统软件,没有编译器、加载器等辅助工具。程序员需手动将程序逻辑翻译为二进制机器指令,通过打孔制作纸带,再依靠开关、纸带机向计算机输入程序。

完整程序处理流程:手写程序源码 → 人工查表翻译二进制指令 → 制作穿孔纸带(机器码载体)→ 手工输入设备加载程序。Source Code->Compiler->Object Code->Hardware

特点:人机串行工作,同一时刻硬件仅能服务一个程序,硬件资源独占;人工翻译、换纸带耗时极长,CPU 大量空闲等待人工操作,硬件利用率极低,上手门槛极高

缺陷:任务切换全靠人工操作,流程繁琐耗时,CPU、外设资源严重浪费

1.2 批处理系统(第一代操作系统雏形)Batch Operating System

为解决手工操作阶段人工干预多、CPU 资源严重浪费的痛点,系统引入监控程序(最早的操作系统内核雏形),可批量录入作业程序,脱离人工全程干预,机器自动依次执行任务。

1.2.1 单道批处理

同一时刻内存中仅驻留一道程序,当程序发起磁盘、打印等 IO 请求进入阻塞状态时,CPU 只能空闲等待,无法执行其他任务;所有作业依托磁带机批量统一提交,自动串行运行。

目的:消除频繁的人工开关机、换纸带操作,减少人工操作耗时,解放人力,初步降低人机等待时间

特点:自动批量运行、无需全程人工值守;CPU 与 IO 设备串行工作

缺陷:IO 阻塞期间 CPU 长期空闲,硬件资源依旧利用率低下

1.2.2 多道批处理     

在内存中同时驻留多道相互独立的程序,借助系统调度程序,当某一道程序等待 IO 操作时,CPU 立刻切换运行内存中其他就绪程序,让 CPU 和外设并行工作。

目的:实现 CPU 与外设、多道程序之间并行运行,彻底盘活硬件资源,大幅提升 CPU、内存、IO 外设的整体利用率,提升系统吞吐率

特点:多程序内存共存、软硬件设备并行工作、自动化程度高

代表系统:IBM OS/360

缺点:系统全程自动运行,无任何人机交互接口,程序运行过程中用户无法干预、无法调试,出错后只能运行结束才能查看结果

1.3 分时操作系统  Time-Sharing Operating System

针对批处理系统无法人机交互、用户不能实时调试程序的短板,分时操作系统采用时间片轮转调度策略(CPU 按照极短固定时间片,快速轮流切换运行多个终端用户任务)。切换速度极快,让每位用户主观上都感觉自己独占整台计算机。

目的:实现多人同时上机,支持实时人机交互,方便用户在线调试、控制程序运行,兼顾多用户使用公平性

核心机制:时钟中断、进程上下文切换

特点:人机交互性强、多用户同时在线、CPU 时间片公平分配、响应速度快

代表系统:UNIX、Linux、早期小型机系统

缺点:系统开销增大,频繁任务切换会损耗一部分 CPU 性能;系统设计复杂度远高于批处理系统。

1.4 实时操作系统   Real-Time Operating System

针对工业控制、航空航天、医疗设备等对响应时间有硬性要求的场景,实时操作系统可优先响应关键任务,严格保障任务在规定截止时间内完成,不受其他普通进程干扰。

目的:满足特殊场景确定性响应需求,保证关键任务准时执行,杜绝系统延迟引发安全事故

核心机制:优先级抢占调度、高精度时钟中断、任务硬截止时间管控

特点:响应时延极低、任务优先级明确、执行时序可预测、可靠性极高

缺点:系统通用性差,不适合日常办公娱乐场景,资源利用率低于分时系统;优先级不合理易出现低优先级任务饥饿问题

分类:硬实时系统(超时直接导致系统故障,如导弹控制系统)、软实时系统(轻微超时无严重后果,如直播流媒体)

代表:VxWorks、FreeRTOS、RT-Thread、Windows CE

1.5  网络式操作系统与分布式操作系统

二者本质都是为了解决单机能力边界不足的问题,但所处的技术发展阶段不同,要解决的核心痛点层级有本质区别:网络操作系统解决的是“单机孤岛能不能互通”的基础问题,分布式操作系统解决的是“单机性能到顶、怎么靠多机突破上限”的规模化问题。

 

网络操作系统

Network Operating System, NOS

分布式操作系统

Distributed Operating System, DOS

核心定位 以单机操作系统为基础,附加网络服务能力的扩展型单机系统 管控多节点集群、统一调度全局资源的原生多机操作系统
核心目标 打破单机信息孤岛,实现跨机资源共享与数据互通 整合多节点算力 / 存储,突破单机性能上限,对外呈现为单一超级计算机
设计思想 单机自治为主,网络共享为辅,不改变单机系统的核心架构 全局统一管控,资源池化抽象,以多机协同为原生设计目标
节点自治性 极高,各节点拥有完整的本机资源控制权,彼此独立运行 极低,节点资源全部纳入全局调度,自身无独立决策权
资源管理模式 各节点自主管理本地资源,仅对外开放部分共享资源 全集群资源统一抽象为资源池,由系统全局按需分配调度
资源透明性 差,访问远程资源必须显式指定目标机器地址与路径 高,用户 / 程序完全感知不到资源的物理位置,调用方式与单机一致
系统耦合度 松耦合,节点间仅通过网络协议交互,彼此独立运行 紧耦合,节点间深度协同,全局状态实时同步
任务调度方式 调度完全由本机 OS 负责,无跨机任务调度能力 全局统一调度,任务可自动分配到任意节点执行,支持动态迁移
通信机制 基于网络协议的显式通信,编程时需手动指定目标节点地址 内核级透明通信,进程间通信与单机 IPC 体验一致,底层自动处理网络传输
故障影响范围 单节点故障仅影响自身,不波及其他节点,整体可用性依赖单机 单节点故障自动触发任务 / 数据迁移,业务无感知;全局一致性故障可能影响整个集群
一致性要求 无强一致性要求,各节点数据独立维护,互不干扰 需保障集群数据、状态的一致性,受 CAP 理论约束,需设计专门的一致性协议
易用性与开发门槛 简单,是单机系统的延伸,原有单机程序无需修改即可运行 复杂,需解决一致性、容错、分布式通信等问题,开发与调试门槛极高
横向扩展能力 扩展简单,新增节点即插即用,但无法实现算力线性叠加 支持弹性扩缩容,新增节点自动纳入资源池,算力随节点数近似线性提升
运维复杂度 低,运维逻辑与单机系统差异小,仅需额外维护网络共享配置 高,需监控集群状态、处理节点故障、保障数据一致性,运维成本呈指数级上升
典型适用场景 小型局域网办公、企业内部文件 / 打印共享、小规模组网场景 云计算平台、大数据计算、高并发互联网服务、超大规模分布式存储、科学计算集群
典型代表 Novell NetWare、早期 Windows Server、UNIX 网络版 云厂商自研分布式云操作系统、大数据集群调度内核、分布式容器编排底层系统

1.6个人电脑操作系统

个人电脑操作系统又称桌面操作系统,是面向个人终端用户、安装在台式机 / 笔记本等个人硬件上,以人机交互为核心的通用操作系统,也是大众日常接触最多的 OS 类型。

核心定位:服务单用户,管理单台电脑的全部硬件软件资源,优先保障交互体验与易用性,覆盖办公、娱乐、学习、开发等个人全场景。

核心设计原则:易用性优先、交互友好、软硬件广泛兼容、单用户多任务

核心特点

  1. 单用户多任务:同一时间主要服务一个活跃用户,但支持同时运行多个应用程序,通过 CPU 调度实现多程序并发。
  2. 图形化交互为主:标配图形用户界面(GUI),通过桌面、窗口、图标、键鼠 / 触屏完成操作,学习门槛极低。
  3. 强生态兼容性:适配海量第三方应用软件,兼容打印机、U 盘、显卡、手柄等各类外接设备。
  4. 体验导向调度:优先保障前台交互程序的响应速度,兼顾多媒体渲染、游戏性能等个人场景需求。

主流代表

  • Windows 系列:全球桌面端市场占有率最高,生态最完善,覆盖办公、游戏、民用全场景
  • macOS:苹果 Mac 设备专属,系统封闭稳定,流畅度高,在设计、音视频、开发领域使用率高
  • Linux 桌面发行版:如 Ubuntu、Fedora、Deepin 等,开源免费,定制性强,以技术开发者用户为主

 

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐