王道操作系统的笔记,原视频链接:1.1.3 操作系统的特征
操作系统的四个特征
四个特征分别为:并发、共享、虚拟、异步
- 并发
- 并发定义:两个或多个事件在同一事件间隔内发生。宏观上同时发生,微观上交替发生。
并行定义:两个或多个事件在同一时刻同时发生。
举例:有两只猫,在一定时间内,我两只猫换着撸,撸完这只撸另一只,撸完另一只又换回来,这叫并发。如果两只手一只手负责一只猫,同时撸,同一时刻两只都在撸,这叫并行。 - 操作系统的并发性指的就是这里的"同时"运行多个程序,宏观是同时,微观是交替。
- 单核CPU同一时刻只能执行一个程序,各个程序只能并发。
多核CPU可以同时执行多个程度,多个程序可以并行。
也就是CPU的多个核之间的程序是并行,单个核之内的程序是并发。
- 共享
- 共享定义:即资源共享,指系统种的资源可供内存中多个并发执行的进程共同使用。
- 两种共享方式:
互斥共享:一个时间段内只允许一个进程访问该资源。
同时共享:允许一个时间段内多个进程"同时"对它们进行访问,这里的同时也是并发。
这里的资源说的是操作系统中的资源(包括硬件资源和软件资源)。
与并发的关系:没有并发,共享没有存在的必要(同时只有一个程序,资源全给它即可),没有共享,那么并发不能同时访问资源,不能很好进行(比如都要访问硬盘资源这种),两者互为存在条件。
- 虚拟
- 虚拟定义:把物理上的实体变为若干逻辑上的对应物。物理实体实际存在,但是逻辑对应物仅为用户感知。
举例:虚拟存储器(利用了空分复用技术,操作系统的存储器特指内存,类似硬盘之类的外存属于IO设备),虚拟处理器(利用了时分复用技术)。
- 异步
- 异步定义:在多道程序环境下,允许多个程度并发执行,但是由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
操作系统应该提供"进程同步机制",以解决开发进程的异步性带来的问题。 - 乍一看与并发好像一样,但是却依然被单独提出来了,问了deepseek,给出的解释我觉得还是很合理的:
我(这是指的deepseek)的原始回答提到"并发是原因,异步是结果Concurrency is the cause, asynchrony is the result.",这个因果关系在汤小丹教材中也是明确写出的。但教材之所以必须把"异步"单列,还有一个更硬核的理由:- "并发"是操作系统的"主观能动性"(我主动去切换);
"异步"是操作系统的"客观局限性"(我控制不了外部中断和I/O速度)。 - 并发是OS主动设计的(时间片轮转)。
异步是被迫接受的(因为磁盘读写速度、用户敲键盘的速度、网络包到达的时间,OS根本无法预测)。 - 如果只提"并发"不提"异步",学生就会误以为"操作系统掌控一切,运行时间精确可控"。单独提出"异步",是为了告诉所有学操作系统的人:这个世界是不确定的,因此我们必须引入"进程同步"机制(PV操作、信号量)来收拾这个烂摊子。 这个逻辑链,完全是针对内核开发者的,跟用户视角八竿子打不着。
- "并发"是操作系统的"主观能动性"(我主动去切换);