各位同学 大家好 在这个小节当中 我们会学习
操作系统有并发 共享 虚拟和异部这四个基本的特征 其中
并发和共享是两个最基本的特征 二者互为存在条件 我们会按照这样的顺序为大家依次讲解 并且会解释为什么这两个
这两个是最基本的特征 并且二者互为存在条件 首先我们来看一下
并发是指两个或者多个事件同一时时间间隔内发生 这些事件宏观上看是同时发生的 微观上其实是交替发生的
与这个并发概念比较容易混淆的是并形的概念 并形是指两个或者多个事件在同一时刻同时发生
这个对于跨考的同学来说可能会不太容易理解 那么我们用一个例子来进行说明 假设有这样两个人 一个是小渣 一个是老渣 他们都有两个女朋友 然后有两个任务
都是分别是和一号约和二号约 那么如对于小渣来说 他采用了一种翠绿翠绿的约会方式 就是和一号二号一起约会
而老渣采用了一种更绿的约会方式 就是在各个时间段内他交替的和两个女朋友进行约会 那么对于小渣的这种方式来说 他其实采用的就是并行约会的策略
并形的意思是指两个或者多个事件同一时刻同时发生 也就是说对于小渣来说 他在同一时刻他其实是同时在进行着两个约会任务
而对于老渣来说 他采用的是并发约会的这种方式 在宏观上看 这一整天老渣进行了两完成了两个约会任务 但是在微观上看 任何一个时刻 老渣其实只在执行其中的某一个约会任务
所以这就是所谓的微观上交替发生 而宏观上同时发生的并发的这种特征
那么经过这个例子 相信大家对并发和并形已经有了直观的理解 那在了解了并发和并形的区别之后 我们再来看一下什么是操作系统的并发性
操作系统的并发性指的是在计算机当中同时运行着多个程序 这些程序宏观上看他们是同时运行着的 但是微观上看其实是交替运行的
接下来我们再来看一下
其实 我们的操作系统 它就是伴随着多道程序技术出现的 这个我们会在下个小节操作系统的发展历史当中
会有进一步的介绍 总之 操作系统的出现就是为了支持多道程序
并发运行同时运行而诞生的 那我们需要注意一个很重要的考点 对于一个单核cpu来说
同一时刻只能执行一个程序 因此 一个单和cpu的系统当中
各个程序肯定是只能并发的执行 但是对于多核cpu来说 同一时刻可以同时执行多个程序
也就是说 多个程序可以并行的执行 举个例子 我们的英特尔第八代爱三处理器 它就是一种四核的cpu 这个大家可以上网去搜一下
四核cpu就意味着它可以并行的执行四个程序 比如说在这个cpu上 我们可以同时并行的运行
微信 qq word还有crome这四个程序 但是如果此时有第五个程序也想同时运行 比如说我们想同时在听歌的话
那么我们就必须剥夺其中的某一个程序它对cpu的使用权 比如说我们把
word这个程序给换下cpu 然后让qq这个程序上cpu运行 然后word和qq这两个程序
交替者来使用cpu 总之 对于四核cpu来说 同一时刻只能同时执行四个程序
而如果要有超过四个以上的程序同时运行的话 那么并发性依然是必不可少的
所以不管是早期的操作系统还是现代的操作系统 并发性都是操作系统一个很重要的 最基本的特性
那么再来看第二个共享特性共享 也就是
是指系统当中的资源可以供内存当中的多个并发执行的进程共同使用
啊 资源共享可以分为两种共享方式 一个是互斥共享 一个是同时共享 对于互斥来说
是指啊 在一个时间段内 这个资源只允许一个进程来使用
而同时共享是指在一个时间段内他允许多个进程 这个资源允许多个进程同时对他进行访问
啊 这个地方所谓的同时为什么要打双引号呢 因为它往往是在宏观上同时
而在微观上可能是交替的 对这个资源进行访问的 这个在这个地方 宏观和微观刚才理解了并发和并形之后 这儿大家应该就已经可以理解了
那么直接来看一个例子 对于护士共享方式来说 我们比如说我们
使用qq和微信视频聊天 但是在同一时间段的 我们只会允许摄像头给其中的一个精神使用
比如你用qq和你的家人正在进行聊天 那么这个时候你还想用电脑的微信和你的
啊 小伙伴 进行视频聊天的话 你就会发现这个视频是发布出去的 因为他会提示你说这个摄像头正在已经被分配给其他的进程
所以 这就是所谓的互斥共享方式 在一个时间段内摄像头 这个
这个资源 他只能被分配给其中的一个精神使用 再看第二个例子
同时 共享方式我们可能会遇到这样的情况 我们用qq给某某人发送文件a 然后用微信发送文件b
在宏观上看来 微信和qq的这个文件发送的进度条都是一直在推进的
往前推进的 所以在用户宏观上看来 看起来两边都是在同时读取发送文件 这些文件它是被放在硬盘里的
那么在用户看来就看起来就像是qq和微信 这两个进程都在同时访问硬盘这个资源 从中读取各自的文件数据 但事实上
微观上来来看 这两个进程他们是交替的 访问硬盘的qq先读出了文件a的某一个部分 然后
微信又读出文件b的某一部分 接下来又交替着让qq读文件a的下一部分
然后以此交替的访问这个硬盘 所以这就是所谓的微观上交替的
访问这个硬盘资源的意思 所以这就是两个很典型的互斥共享和同时共享的
这种例子 有的时候 这个同时共享也有可能是微观上也确实在同时的共享这个资源
比如说 你在玩游戏的时候一边听歌 那么你会发现你的扬声器 这个
声音输出设备一边在播放游戏的音效同时还在播放音乐 所以在这种情况下 扬声器这个声音输出设备是真的在微观上也是同时正在被你的音乐播放器和游戏这两个进程同时使用的
所以这个地方稍微注意一下 那么我们再来看一下并发和共享的关系 继续通过上面的例子来分析
用qq发送文件a 微信发送文件b那么就说明qq和微信两个
两个进程他们其实是在并发的执行的 也就是有并发性 那么这两个进程他们需要同时完成这个
发送文件的事情 所以他们需要共享的访问硬盘资源 这儿又体现了他的共享特性 如果说
我们的这个系统失去了并发性 就是说明在系统当中同一时间段只能有一个程序正在运行
那么也就意味着这两个进程他们就不需要啊同时共享来访问这个硬盘资源 那么这个共享性也就失去了存在的意义
而另一个角度 如果说这个系统失去了共享性 那么qq和微信这两个进程就没办法
同时访问这个硬盘资源 所以他们也没办法完成同时发送文件这件事
既然如此 qq和微信也就没办法并发的执行 所以说我们可以看到 如果失去了并发性 那么共享性就失去了存在的意义
而如果失去了共享性 那么并发性就不可能被实现 所以并发和共享 我们才说他们是互为存在条件的
这就是开篇提到的一个知识点 好的 下面再看第三个特征
虚拟试试把物理上的实体对应为若干个逻辑上的对应物 我们直接来看
一个实际的例子吧 我们知道 在一个程序需要执行的时候 需要把它放入到内存并且给它分批分配cpu才能执行 这是一个我特别喜欢的游戏之贴 然后这个游戏官方的数据是说它需要4G的运行内存
然后 除了这个游戏之外 其实我在电脑当中还有各种各样的别的一些应用软件程序 那么
我的电脑其实只有4G b的内存 但是其实在我的电脑上 我可以同时打开这些qq 还可以用微信的迅雷
同时还在用网易云音乐 在听音乐 所以看起来这么多的应用软件 他们总共需要的内存量 他们是其实是远大于4G b的
但为什么他们又可以在我的电脑上同时运行呢 其实这就采用了虚拟存储器技术 实际上 这个电脑只有4Gb
的内存 也就物理上的实体是4Gb的内存 但是在用户看来 在我看来
它变成了逻辑上的对应物 它看起来是远远大于4Gb的 所以这就是虚拟特性虚拟技术的一个一个例子
这个虚拟存储期技术 它其实就是虚拟技术当中的空分富有技术
这个地方大家只需要对虚拟存储器和空分复用技术能有一个印象就可以了 这两个知识点是第三章会重点讲解的知识点
那么 再看另外一个例子 在一个单盒计算机下面 用户可以打开qq 可以打开什么迅雷
不说了 那么既然这个电脑只有一个单核的cpu 既然如此 这个计算机当中为什么还可以同时
执行这么多的程序呢 其实这就用到虚拟处理器的技术 实际上只有一个单核cpu 这是物理上的实体
但是在用户看来 在我看来这个计算机似乎变成了六个cpu在同时为自己服务 这就是所谓的逻辑上的实体
那么虚拟处理器技术就是典型的时分复用技术在微观上看
一个一整个大的时间段被分割为了一个一个微小的时间片时间段
然后在各个时间段内 处理机是交替的 为各个进程服务的 所以这就是时分的意思
他把一个大的时间段分为了各个很小的时间片 所以这是时分复用
啊 再来回顾一下我们刚才讲了实现虚拟性的这个虚拟技术
分为空分复用技术和十分复用技术 然后 很显然我们如果说这个系统当中这个操作系统失去了并发性 那么就意味着一个时间段的只需要有一道程序在执行
那么 从刚才我们分析的过程中可以看到 如果没有了并发性 那么这个十分复用技术和空分复用技术其实也没有存在的意义
那么 我们也就是说 我们这个虚拟性也就没必要实现了 所以可以说没有并发性就谈不上虚拟性 虚拟性就没有存在的意义
最后看第四个特性
异步是指多到程序环境下允许多个程序并发执行 但是由于资源有限
进程的执行不是一贯到底 而是走走停停的 以不可预知的速度向前推进 用一个例子来帮助大家理解什么是异步
假设老渣现在要和两个女孩并发的约会 然后一号女孩会让老渣干这样的两件事
首先是陪他吃饭 第二是把心给他 二号女孩会让老渣先把心给他 然后再让老渣陪他吃饭
所以 老渣在执行一号的这两条指令的过程其实就相当于是在执行第一道程序 而执行二号女孩这两条指令的过程其实就相当于它是在执行第二道程序 而这两道程序需要并发的执行
另外呢 老渣 他只有一颗真心 所以老渣的心相当于这儿提到的有限的系统资源
那由于这两道程序在系统中是并发的运行的 因此这两道程序有可能会增强着使用这个资源
所以老渣在执行这两道程序的时候 有可能是这么约的 比如说刚开始他是和一号约
也就是执行了一号的第一条指令 陪他吃饭 接下来的这个时间段 也是和一号约执行了他的第二个指令
那根据一号的这个要求 老渣会把心给一号 也就说这个系统资源分配给了一号
而接下来的这个时间段是要和二号月 二号要求老渣把心给他 但是由于此时老渣的心 这个有限的系统资源已经给了一号 并且一号没有把这个系统资源归还给老渣
所以二号要求老渣把新给他 这个请求就不能够被满足 所以二号程序运行到这个地方的时候肯定需要被阻塞
需要先停一段时间 等他获得了他想要的这个资源之后 二号程序才可以接着往下执行
另一种情况 老渣还有可能是这么约的 他刚开始有可能是和一号约 然后陪一号吃饭
接下来的这个时间段适合二号约 根据二号的指令 他把心给了二号 那再接下来他又和一号约 也就是说 此时他要执行一号的第二条指令
一号让老渣把新给他 但是由于此时这个有限的系统资源是被二号所占有的 并且二号没有归还给系统 因此一号的这个把新给他的请求不能够被满足 所以这个第一道程序的执行在这个位置就会被阻塞
然后等待这个系统资源的分配 所以从这个例子当中我们很直观的可以看到
在两道程序并发运行的过程当中 这些并发运行的程序 他们都会争抢着使用系统当中的这些资源
所以 这些程序的运行并不是一贯到底 而是走走停停的 以不可预知的速度就向前推进的
有的时候有可能是二号需要停下来等待 有的时候有可能是一号需要停下来等待
在实际的操作系统当中 各个并发运行的程序之间也会出现这种增强着使用有限的系统资源的情况
比如说 两个程序增强着使用摄像头资源 或者增强着使用打印机资源
等等 所以这是多道程序环境下多个程序并发执行所带来的一个
特性也就是所谓的异步性 那很显然 如果失去了并发性的话 就意味着系统只能创新的执行各个程序
也就说低道程序执行完了 然后一号把老扎的心归还给老扎 之后他才会接着执行第二道程序 那在这种情况下 各个程序的执行肯定是会一贯到底的
并不会走走听听 所以说只有系统拥有并发性 才有可能会导致我们之前所说的这个异步性
好的 以上就是操作系统的四个特性 我们分别讲了并发 共享 虚拟和异步
在考试当中 我们需要重点关注的是这个并发和并型的区别 这个刚才我们用老渣和小渣两个约会的策略来进行了说明
另外呢 注意 这个并发和共享他们是互为存在条件的 这个刚才爷爷已经解释过
另外 如果没有并发 那么就谈不上虚拟和异步 而并发和共享本身又是互为存在条件的 所以可以这么说 没有并发和共享 就谈不上虚拟和异步
虚拟和异步就没有存在的意义 这就是为什么说他们是最基本的两个特征
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习