01-操作系统概述
mindmap
root((操作系统概述))
特征
并发
共享
虚拟
异步
目标和功能
资源管理
用户接口
命令接口
程序接口
GUI
发展
批处理
分时
实时
网络/分布式
运行机制
系统状态
用户态
核心态
中断和异常
系统调用一、 操作系统的定义与角色
操作系统(Operating System,OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。
1.1 研究操作系统的三种观点
通常可以从以下三个角度来理解和研究操作系统:
资源管理观点
- 操作系统是计算机系统资源的管理者。
- 管理对象:处理器(CPU)、存储器、I/O设备、文件(数据)。
- 目标:高效、合理地分配资源,提高资源利用率。
用户接口观点
- 操作系统是用户与计算机硬件系统之间的接口。
- 用户通过操作系统提供的接口使用计算机,而无需关心底层硬件细节。
- 接口类型:命令接口、程序接口(系统调用)、图形用户接口(GUI)。
进程管理观点
- 操作系统主要由若干个进程(Process)组成。
- 操作系统对进程进行管理,包括进程的创建、撤销、调度、同步与通信等。
- 从这个角度看,操作系统是进程的管理者。
1.2 操作系统的用户界面
操作系统为用户提供了多种使用计算机的界面(接口):
命令接口 (Command Interface)
- 联机命令接口(交互式):用户输入一条命令,系统执行一条。适用于分时系统。
- 例如:Windows 的 CMD/PowerShell,Linux 的 Bash。
- 脱机命令接口(批处理):用户提供作业说明书(脚本),系统按顺序执行。适用于批处理系统。
- 联机命令接口(交互式):用户输入一条命令,系统执行一条。适用于分时系统。
程序接口 (Program Interface)
- 即系统调用 (System Call)。
- 这是操作系统提供给程序员(应用程序)使用的接口。
- 用户通过在程序中调用系统调用来请求操作系统服务。
图形用户接口 (GUI)
- 通过图标、窗口、菜单等图形元素与系统交互。
- 例如:Windows、macOS、Ubuntu Desktop。
- 注:GUI 最终通常也是通过调用系统调用来实现的。
graph TD %% Styles classDef base fill:#f9f,stroke:#333,stroke-width:2px; classDef user fill:#e1f5fe,stroke:#01579b,stroke-width:2px; classDef sys fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px; classDef main fill:#f3e5f5,stroke:#4a148c,stroke-width:4px; root[OS]:::main %% Usage Branch root --> usage(使用) usage --> normal_user[普通用户]:::user usage --> programmer["程序员<br/>(专业)"]:::user %% Working Principle Branch root --> principle(工作原理) principle -.-> definition(定义) definition --> sys_soft[一款系统软件]:::sys %% Functions sys_soft -- 功能1 --> manage[管理软、硬件资源] sys_soft -- 功能2 --> interface[提供使用接口]
二、 计算机系统层次结构
计算机系统自下而上可分为:硬件、操作系统、其它系统软件、用户应用软件、用户。
- 硬件 (Hardware):系统的物理基础。
- 操作系统 (OS):直接运行在硬件之上,管理硬件并为上层软件提供支持。
- 其它系统软件:如编译程序、数据库管理系统等,通常运行在 OS 之上。
- 应用软件:解决具体问题的软件。
- 用户:系统的最终使用者。
graph TD
%% Styles
classDef user fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
classDef sys fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px;
classDef hw fill:#fff3e0,stroke:#e65100,stroke-width:2px;
%% The Stack
subgraph Computer_System [计算机系统层次]
direction TB
stack_top[用户]:::user
stack_app[用户应用软件]:::user
subgraph System_Software [系统软件]
direction TB
stack_other[其它系统软件]:::sys
stack_os[操作系统]:::sys
end
stack_hw[硬件]:::hw
stack_top --> stack_app
stack_app --> stack_other
stack_other --> stack_os
stack_os --> stack_hw
end
style Computer_System fill:#fafafa,stroke:#333,stroke-width:1px
style System_Software fill:#f1f8e9,stroke:#333,stroke-width:1px三、 操作系统的特征
操作系统的四个基本特征:并发、共享、虚拟、异步。其中并发和共享是两个最基本的特征,二者互为存在条件。
- 并发 (Concurrency)
- 指两个或多个事件在同一时间间隔内发生。
- 区别并行 (Parallel):并行指两个或多个事件在同一时刻发生(多核CPU)。
- 在单核 CPU 上,进程是并发执行的(宏观上同时,微观上交替)。
- 共享 (Sharing)
- 指系统中的资源可供内存中多个并发执行的进程共同使用。
- 互斥共享:如打印机,一段时间只允许一个进程访问。
- 同时共享:如磁盘文件,允许在一个时间段内由多个进程"同时"访问(宏观上)。
- 虚拟 (Virtualization)
- 把一个物理上的实体变为若干个逻辑上的对应物。
- 时分复用:如虚拟处理器技术(多道程序设计)。
- 空分复用:如虚拟存储器技术。
- 异步 (Asynchrony)
- 在多道程序环境下,进程以不可预知的速度向前推进。
- 尽管走走停停,但 OS 需保证运行结果的可再现性。
graph TD
subgraph Features [操作系统特征]
Concurrency[并发]
Sharing[共享]
Virtual[虚拟]
Async[异步]
end
Concurrency <-->|互为存在条件| Sharing
Concurrency -->|基础| Virtual
Concurrency -->|基础| Async
style Features fill:#e3f2fd,stroke:#1565c0
style Concurrency fill:#bbdefb,stroke:#1976d2
style Sharing fill:#bbdefb,stroke:#1976d2
style Virtual fill:#e1bee7,stroke:#7b1fa2
style Async fill:#e1bee7,stroke:#7b1fa2四、 操作系统的基本类型
操作系统的发展经历了从无到有、从简单到复杂的过程,主要类型包括:
批处理操作系统 (Batch Processing OS)
- 单道批处理:内存中仅有一道程序,自动、顺序执行。解决人机矛盾,但 CPU 利用率低。
- 多道批处理:内存中同时驻留多道程序,并发执行。
- 特点:多道性、无交互性、调度性。
- 优点:资源利用率高,系统吞吐量大。
- 缺点:无交互能力,用户响应时间长。
分时操作系统 (Time-Sharing OS)
- 一台主机连接多个终端,CPU 按时间片轮流为各个终端服务。
- 特点:
- 多路性:同时服务多个用户。
- 独立性:用户之间互不干扰。
- 及时性:响应时间短。
- 交互性:用户可与系统进行人机对话。
- 解决了人机交互问题。
实时操作系统 (Real-Time OS, RTOS)
- 系统能及时响应外部事件,并在严格的时限内完成处理。
- 特点:及时性、可靠性(高可靠性是 RTOS 的关键)。
- 分类:
- 硬实时:必须在绝对严格的截止时间内完成(如导弹制导、自动驾驶)。
- 软实时:偶尔错过截止时间可接受(如视频流媒体)。
网络操作系统 (Network OS)
- 基于计算机网络,在各种计算机操作系统之上,提供网络管理、通信、安全、资源共享和各种网络应用。
- 特点:网络通信、资源共享、网络管理、互操作性。
分布式操作系统 (Distributed OS)
- 若干台计算机通过网络连接,但在系统中统一管理,对用户是透明的(用户感觉不到多台计算机的存在)。
- 特点:统一性(核心特征)、透明性、健壮性。
- 区别:网络 OS 侧重资源共享,分布式 OS 侧重任务分布和统一管理。
个人计算机操作系统 (Personal Computer OS)
- 目前最广泛使用的 OS,如 Windows, macOS, Linux。
嵌入式操作系统 (Embedded OS)
- 运行在嵌入式智能芯片环境中,如 iOS, Android, VxWorks, uC/OS。
- 特点:微型化、专用性强、实时性强。
timeline
title 操作系统发展历程
section 早期
手工操作 : 无OS
单道批处理 : 自动性, 顺序性
section 多道技术
多道批处理 : 宏观并行, 微观串行
分时系统 : 交互性, 及时性
section 现代
实时系统 : 可靠性, 及时性
网络/分布式 : 资源共享, 透明性五、 操作系统的运行环境
5.1 运行机制
- 两种指令:
- 特权指令:不允许用户直接使用,如 I/O 指令、置中断指令。
- 非特权指令:普通运算指令。
- 两种状态:
- 内核态 (Kernel Mode):运行内核程序,可执行特权指令。
- 用户态 (User Mode):运行应用程序,只能执行非特权指令。
- 状态切换:
- 用户态 -> 内核态:中断/异常 (唯一途径)。
- 内核态 -> 用户态:执行特权指令 (修改 PSW)。
5.2 中断与异常
- 中断 (Interruption):来自 CPU 执行指令以外的事件 (外中断)。如 I/O 中断、时钟中断。
- 异常 (Exception):源自 CPU 执行指令内部的事件 (内中断)。如非法操作码、地址越界、算术溢出、缺页。
5.3 系统调用 (System Call)
- 定义:用户在程序中调用操作系统提供的一些子功能。系统调用是操作系统提供给应用程序(程序员)使用的接口。
- 实现机制:系统调用必须通过陷入指令 (Trap)(也称访管指令)在内核态下完成。
- 调用过程:
- 传递系统调用参数。
- 执行陷入指令(用户态 -> 内核态)。
- 执行相应的内核服务程序(系统调用处理程序)。
- 返回用户态。
系统调用的分类
通常系统调用按功能可分为以下几类:
- 进程控制类
- 创建/终止进程 (fork, exit)
- 获得/设置进程属性 (getpid)
- 阻塞/唤醒进程 (wait, signal)
- 文件管理类
- 创建/删除文件 (create, delete)
- 打开/关闭文件 (open, close)
- 读/写文件 (read, write)
- 设备管理类
- 申请/释放设备
- 设备 I/O 重定向
- 通信类
- 建立/断开连接
- 发送/接收消息
- 信息维护类
- 获取当前时间 (time)
- 获取系统版本信息
sequenceDiagram
participant UserApp as 用户程序
participant Lib as 库函数
participant Kernel as 操作系统内核
participant Hardware as 硬件
UserApp->>Lib: 调用系统调用封装函数 (如 read)
activate Lib
Lib->>Lib: 准备参数
Lib->>Hardware: 执行陷入指令 (Trap)
deactivate Lib
activate Hardware
Hardware->>Kernel: 切换到内核态
deactivate Hardware
activate Kernel
Kernel->>Kernel: 查找系统调用表
Kernel->>Kernel: 执行对应服务程序
Kernel-->>UserApp: 返回结果 (切换回用户态)
deactivate Kernel六、 资源管理功能详解
操作系统的核心功能是对计算机系统的四大类资源进行管理:处理器 (CPU)、存储器 (Memory)、I/O 设备 和 文件 (信息)。
graph LR
%% Styles
classDef manage fill:#f3e5f5,stroke:#4a148c,stroke-width:4px;
classDef hw fill:#fff3e0,stroke:#e65100,stroke-width:2px;
classDef sw fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
classDef detail fill:#f5f5f5,stroke:#333,stroke-width:1px,stroke-dasharray: 5 5;
Manage((管理)):::manage
subgraph Hardware [计算机硬件]
direction TB
Host[主机]:::hw
Peripherals[外设]:::hw
end
subgraph Software [计算机软件]
SoftFile[文件]:::sw
end
Manage --> Hardware
Manage --> Software
%% Host Branch
Hardware --> Host
Host --> CPU_Node["CPU<br/>(进程, 单CPU)"]:::hw
Host --> Mem_Node[内存]:::hw
%% CPU Details
CPU_Node --- CPU_List["1. 进程管理"]:::detail
%% Memory Details
Mem_Node --- Mem_List["2. 内存管理"]:::detail
%% Peripherals Branch
Hardware --> Peripherals
Peripherals --> Disk_Node["外存<br/>(磁盘)"]:::hw
Peripherals --> IO_Node[I/O设备]:::hw
%% Disk Details
Disk_Node --- Disk_List["3. 磁盘管理"]:::detail
%% IO Details
IO_Node --- IO_List["4. I/O设备管理"]:::detail
%% Software Branch
Software --> SoftFile
SoftFile --- File_List["5. 文件管理"]:::detail
style Hardware fill:#fff8e1,stroke:#ffb74d
style Software fill:#e1f5fe,stroke:#4fc3f76.1 处理器管理 (进程管理)
核心是对 CPU 的分配与调度,基本单位是 进程。
- 1.1 进程的概念
- 程序:指令的有序集合,静态概念。
- 进程:程序的一次执行过程,是资源分配的基本单位。
- 区别:进程是动态的,程序是静态的;进程包含 PCB (进程控制块)。
- 1.2 进程的状态及转换
- 三态模型:就绪、运行、阻塞。
- 五态模型:增加创建、终止。
- 1.3 进程的控制与调度
- 控制:使用原语(创建、撤销、阻塞、唤醒)控制进程状态转换。
- 调度:决定哪个进程获得 CPU。
- 方式:剥夺式(抢占)、非剥夺式(非抢占)。
- 算法:
- FCFS (先来先服务):公平,但对短作业不利。
- 优先级调度:静态优先级 / 动态优先级。
- 时间片轮转 (RR):保证响应时间,适用于分时系统。
- 多级反馈队列:综合了前几种算法的优点。
- 1.4 进程间的关系:同步(协作)与互斥(竞争)。
- 1.5 进程通信:共享存储、消息传递、管道通信。
- 1.6 死锁:多个进程因竞争资源而造成的僵局。
6.2 存储器管理 (内存管理)
核心是为多道程序提供良好的内存环境,提高内存利用率。
- 2.1 内存分配与回收:分区管理(固定/动态)。
- 2.2 内存扩充:虚拟内存技术(覆盖、交换)。
- 2.3 地址映射:逻辑地址到物理地址的转换。
- 2.4 存储保护:保证进程间互不干扰。
- 主要方式:
- 分页管理:解决碎片问题。
- 分段管理:符合逻辑结构。
- 段页式管理:集两者之长。
6.3 设备管理 (I/O 管理)
核心是完成用户的 I/O 请求,提高 CPU 与 I/O 设备的并行度。
- 3.1 磁盘管理 (外存)
- 物理结构、读写过程。
- 磁盘调度算法:先来先服务、SSTF (最短寻道时间优先)、SCAN (电梯算法) 等。
- 3.2 I/O 控制方式
- 程序轮询、中断驱动、DMA (直接存储器访问)、通道控制。
- 3.3 缓冲技术:引入缓冲区,缓和 CPU 与设备速度不匹配矛盾。
- 3.4 设备分配与驱动:设备独立性软件、设备驱动程序。
6.4 文件管理
核心是解决软件资源的存储、共享和保护。
- 4.1 文件系统:定义与分类。
- 4.2 逻辑结构:流式文件、记录式文件。
- 4.3 物理结构:连续分配、链接分配、索引分配。
- 4.4 目录管理:文件控制块 (FCB)、目录树。
- 4.5 文件共享与保护:存取控制。