第三课:操作系统的四大特征

这一课只有四个词:

并发(Concurrency)

共享(Sharing)

虚拟(Virtualization)

异步(Asynchronism)

很多教材直接给定义,学生就开始背。

我们不背,我们先讲一个故事。


一台电脑的一天

假设你正在使用电脑:

浏览器(看B站)

↓

QQ聊天

↓

网易云音乐

↓

下载一个游戏

↓

Word写论文

请问:

电脑里是不是有五个程序?

答案:

是。


再问一个问题:

CPU有几个?

假设:

CPU:

只有一个核心。

那么:

一个CPU怎么可能同时运行五个程序?

这里就引出了第一个特征。


第一大特征:并发(★★★★★)

很多同学第一眼就觉得:

并发 = 同时运行。

其实:

不完全正确。


举一个例子

假设CPU每秒可以执行几十亿条指令。

操作系统安排它这样工作:

0~10ms

浏览器

↓

10~20ms

QQ

↓

20~30ms

音乐

↓

30~40ms

下载

↓

40~50ms

Word

↓

50~60ms

浏览器……

注意:

CPU任何一个时刻:

实际上:

只运行一个程序。

但是:

因为切换速度:

0.01秒

太快了。

于是:

你的眼睛看到的是:

浏览器一直播放

QQ一直在线

音乐一直响

游戏下载中

Word还能打字

是不是感觉:

五个一起运行?

实际上:

没有。

CPU是在:

快速切换。

这就叫:

并发(Concurrency)。


并发 ≠ 并行

这是考试最喜欢考的。

很多同学分不清。

我们画图。


并发(一个CPU)

CPU

↓

A

↓

B

↓

C

↓

A

↓

B

↓

C

只有一个人在干活。

只是:

不停切换。


并行(多个CPU)

CPU1

↓

A

CPU2

↓

B

CPU3

↓

C

三个CPU:

真的一起运行。

这叫:

并行(Parallelism)


一个生活例子

只有一个老师。

面对三个学生。

老师:

回答A一分钟

↓

回答B一分钟

↓

回答C一分钟

↓

再回来回答A

大家都会觉得:

老师一直在陪自己。

这就是:

并发。


如果:

三个老师。

每人负责一个学生。

这就是:

并行。


一句话记忆

并发:

一个CPU

多个任务

快速切换

看起来一起执行

第二大特征:共享(★★★★★)

有一个问题。

电脑里:

QQ

Word

浏览器

都想:

打印。

但是:

打印机:

只有一个。

怎么办?

如果没有管理。

三个程序:

一起打印。

最后打印出来:

QQ第一页

Word第一页

QQ第二页

浏览器第一页

Word第二页

乱了。

所以:

必须有人安排:

QQ先打印。

↓

Word等待。

↓

QQ结束。

↓

浏览器开始。

这个安排的人:

就是:

操作系统。


什么叫共享?

一句话:

多个程序共同使用同一个资源。

例如:

CPU

内存

打印机

磁盘

网卡

都是:

共享资源。


共享分两种

教材喜欢考。


① 互斥共享

例如:

打印机。

一次:

只能一个程序使用。

QQ打印

↓

Word等待

↓

浏览器等待

这种:

叫:

互斥共享。


② 同时共享

例如:

硬盘。

QQ:

读一个文件。

浏览器:

读一个网页。

音乐:

读MP3。

因为:

读取速度非常快。

大家几乎可以:

一起读。

叫:

同时共享。


第三个特征:虚拟(★★★★★)

这是最难理解的。

我们先看一个问题。


你的电脑:

内存:

8GB

但是:

你打开:

浏览器

QQ

微信

IDE

PS

Office

加起来:

可能需要:

20GB。

为什么还能运行?

这里:

就是:

虚拟。


操作系统"骗人"

它告诉每个程序:

浏览器:

这些内存都是你的。

又告诉QQ:

这些也是你的。

实际上:

不是。

操作系统:

不断地:

搬来搬去。

换来换去。

调来调去。

于是:

每个程序都觉得:

整个电脑都是我的。

这叫:

虚拟内存。


再举一个例子

假设:

一家酒店。

只有:

100个房间。

今天来了:

1000位客人。

老板怎么办?

他说:

今天不住的人

先去大厅。

以后再入住。

于是:

1000个人都能办理入住。

虽然:

真正住进去:

只有100人。

是不是一种:

“假象”?

这就是:

虚拟。


虚拟不仅仅是内存

以后会学:

虚拟CPU

↓

虚拟内存

↓

虚拟设备

本质:

都是:

让用户感觉资源比实际更多、更独立。


第四个特征:异步(★★★★★)

假设:

有三个程序:

QQ

浏览器

下载

操作系统:

不知道:

下一秒:

谁先结束。

为什么?

因为:

每个程序:

执行速度:

都不同。

例如:

QQ:

收消息

↓

等待

浏览器:

不停计算

下载:

网络不好

速度忽快忽慢

所以:

程序完成时间:

不是固定的。


举个生活例子

三个人做作业。

小明:

10分钟。

小红:

30分钟。

小刚:

5分钟。

老师:

不知道:

谁先交。

因为:

速度不同。

这就是:

异步。


为什么叫异步?

同步:

大家一起走。

例如:

123

开始!

异步:

有人快。

有人慢。

没人知道:

什么时候结束。

操作系统:

只能:

不断调度。


四个特征之间的关系(考试很喜欢)

很多人觉得:

四个特征:

互相没关系。

其实:

关系特别大。

并发
        │
        │
  导致多个程序
        │
        ▼
       共享
大家一起用CPU和设备
        │
        ▼
      需要协调
        │
        ▼
       异步
每个程序运行速度不同
        │
        ▼
     为了提升体验
        │
        ▼
       虚拟

也就是说:

  • 有了并发 ,多个程序会争抢资源。
  • 资源需要共享 ,就必须管理访问顺序。
  • 每个程序执行速度不同 ,于是表现为异步。
  • 为了让用户觉得资源充足、程序互不影响 ,操作系统提供虚拟化。

本章一句话总结

如果你只能记一句:

操作系统通过"并发"运行多个程序,通过"共享"管理资源,通过"虚拟"让资源看起来更多,通过"异步"适应程序运行速度的不确定性。

Logo

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

更多推荐