本章目录:
前言
操作系统与普通的软件不同,它不仅要管理计算机硬件资源,还需要确保多个任务能高效地协调运行。其核心特性包括 并发、共享、虚拟、异步,这些特性使得现代计算机能够高效、稳定地执行多个任务。本文将深入解析这四大特性,并结合实际案例加深理解。
1. 并发(Concurrency)
并发指的是 多个任务在同一时间间隔内交替执行。在宏观上,这些任务似乎是同时进行的,但在微观上,它们是交替运行的。
并发 vs. 并行
- 并发(Concurrency):多个任务在一个 CPU 上 交替 执行
- 并行(Parallelism):多个任务在多个 CPU 上 真正同时 进行
例如,在 单核 CPU 上运行多个程序,操作系统会快速切换任务,使它们看起来像是同时进行的(并发)。而在 多核 CPU 上,多个任务可以真正地同时运行(并行)。
示例:运行多个进程,观察并发效果
# 启动两个进程并行运行
sleep 5 & # 进程1:休眠5秒
sleep 10 & # 进程2:休眠10秒
jobs # 查看后台运行的进程
输出:
[1] 12345
[2] 12346
在后台运行了两个进程(PID 12345 和 12346),它们在同一时间间隔内并发执行。
2. 共享(Sharing)
资源共享是指系统中的 多个进程可以共同使用同一资源。共享分为两种方式:
1️⃣ 互斥共享(Mutual Exclusion)
某些资源 一次只能被一个进程使用,其他进程必须等待。例如,打印机、摄像头等设备属于 临界资源,必须互斥访问。
示例:检查哪个进程正在使用摄像头
lsof /dev/video0 # 查看占用摄像头的进程
如果摄像头被微信占用,输出可能是:
wechat 23456 user 33u CHR 81,0 0t0 /dev/video0
这说明 wechat
进程(PID 23456)正在使用摄像头,其他程序不能同时访问。
2️⃣ 同时共享(Simultaneous Sharing)
某些资源可以允许 多个进程交替访问,形成“分时共享”。例如,多个应用程序可以同时访问硬盘,但在微观层面,它们是轮流进行 I/O 操作的。
示例:查看磁盘 I/O 访问情况
iostat -x 1 5 # 每秒刷新磁盘 I/O 统计,共 5 次
如果多个进程同时访问磁盘,系统会智能调度,使它们在宏观上看起来是同时进行的。
3️⃣ 并发性和共享性互为条件
共享资源的机制是实现并发的前提,而并发执行也依赖于资源共享。例如,多个进程需要同时访问 CPU 和内存,操作系统通过 时间片轮转 和 资源调度 实现共享。
3. 虚拟(Virtualization)
虚拟化 是指 将一个物理实体转换为多个逻辑实体,使得多个任务可以共享相同的资源。
1️⃣ 虚拟处理器(Virtual CPU)
操作系统利用 多道程序设计 让多个进程共享 CPU 资源。每个进程都认为自己 独占 CPU,但实际上 CPU 是在多个进程之间高速切换的。
示例:查看 CPU 调度情况
top # 监视进程和 CPU 占用情况
2️⃣ 虚拟存储器(Virtual Memory)
虚拟内存技术允许程序访问 比物理内存更大的地址空间。操作系统会将 部分数据存放在磁盘,当程序需要时再加载到内存中。
示例:查看虚拟内存使用情况
vmstat 1 5 # 每秒查看虚拟内存使用情况,共 5 次
3️⃣ 虚拟设备(Virtual Devices)
操作系统可以把 一个物理设备虚拟化为多个逻辑设备,使得多个用户或进程可以共享同一设备。例如:
- 多个虚拟机 共享一块物理网卡
- 操作系统创建多个虚拟磁盘 供不同进程使用
示例:列出系统中的虚拟磁盘
lsblk # 查看所有磁盘和分区
4. 异步(Asynchrony)
在 多道程序环境 下,多个进程是 并发执行 的,但由于资源有限(如 CPU 只有一个),进程的执行是 不可预测的,通常是“走走停停”的。
进程的异步执行
进程的执行顺序受 CPU 调度、I/O 操作、资源竞争 等因素影响,导致其执行速度不可预测。
示例:运行两个进程并观察调度情况
(echo "Process 1"; sleep 3; echo "Process 1 done") &
(echo "Process 2"; sleep 1; echo "Process 2 done") &
wait
输出:
Process 1
Process 2
Process 2 done
Process 1 done
尽管 Process 1
先启动,但 Process 2
由于 等待时间较短,比 Process 1
先完成。这就是 异步执行 的体现。
总结
操作系统的四大特性——并发、共享、虚拟、异步——决定了计算机系统的运行方式:
- 并发性:多个任务在同一时间间隔内交替执行,提高 CPU 利用率
- 共享性:多个进程可以同时使用系统资源,分为 互斥共享 和 同时共享
- 虚拟性:通过 时间分配 和 空间分配,虚拟化 CPU、内存和设备,提高资源利用率
- 异步性:进程的执行是不可预测的,受 CPU 调度、I/O 操作等影响
这些特性共同作用,使得操作系统能够高效地管理计算机资源,让多个任务在有限的硬件环境下稳定运行。希望本文能帮助你深入理解操作系统的核心特性!🚀