12操作系统的特征
# 1.1_2_操作系统的特征
各位同学大家好,在这个小节当中,我们会学习操作系统的 4 个特征,操作系统有并发、共享、虚拟和异步这 4 个基本的特征,其中并发和共享是两个最基本的特征,二者互为存在条件,我们会依次讲解,并且会解释为什么两这两个是最基本的特征,并且二者互为存在条件。
# 并发
首先我们来看一下并发这个特征。并发是指两个或者多个事件同一时时间间隔内发生,这些事件宏观上看是同时发生的,微观上其实是交替发生的,与并发概念比较容易混淆的是并行的概念,并行是指两个或者多个事件在同一时刻同时发生。
对于跨考的同学来说可能会不太容易理解。那么我们用一个例子来进行说明。假设有这样两个人,一个是小查,一个是老查,他们都有两个女朋友,然后有两个任务都是分别是和一号约和二号约,那么如对于小扎来说,采用了的约会方式是和一号二号一起约会,而老渣采用了一种更绿的约会方式,在各个时间段内它交替的和两个女朋友进行约会。那么对于小渣的这种方式来说,它其实采用的就是并行约会的策略,并行的意思是指两个或者多个事件同一时刻同时发生,也就是说对于小渣来说,它在同一时刻它其实是同时在进行着两个约会任务
而对于老渣来说,它采用的是并发约会的这种方式。在宏观上看,一整天老渣进行了两完成了两个约会任务,但是在微观上看,任何一个时刻,老渣其实只在执行其中的某人某一个约会任务,所以这就是所谓的微观上交替发生,而宏观上同时发生的并发的这种特征。
那么经过这个例子,相信大家对并发和并行已经有了直观的理解。
那么对于当代对于操作系统来说,并发性指的是计算机系统当中同时存在着多个运行的程序,我们知道一个单核的处理机或者说单核的 CPU,它在同一时刻只能执行一个程序,所以操作系统它会负责协调这些程序的交替执行,也就是刚才我们说的并发执行,微观上交替,宏观上用户看起来就像是在同时执行一样。事实上操作系统和多道程序技术,是同时出现的,在之后的操作系统的发展会有讲到,所以说操作系统和程序并发其实是一起诞生的,我们可以这么说
可能有的同学会问,当今的这些计算机一般都是多个核心,比如说我们常听到的什么四核处理器,双核处理器这样,比如说现在英特尔最新的第八代的 i3 处理器,它就是一个四核的 CPU,那么对于四核的 CPU 来说,就意味着它在同一时刻可以有 4 个程序并行的执行,但是即便如此,操作系统的并发性依然是必不可少的。
虽然它看起来已经可以同时处理很多程序,处理很多进程了,但是对于我们当代人来说,现在的这些计算机上面绝对会有 4 个以上的程序或者说进程,它需要同时工作。比如说你打开一个微信 QQ,然后再在再写一个文档,同时还用浏览器在查查资料,同时还在听歌,那么已经超过 4 个了。并且除了你自己打开的这些应用程序之外,其实还有系统本身也会创建一些用于系统管理的进程,来和这些你自己的应用程序并行的并发的工作。所以说虽然它有四核,它有 4 个核心,它可以同时并行的处理 4 个任务,但是我们的系统当中有远超过 4 个的进程需要同时工作,所以并发性依然是必不可少的
# 共享
那么再来看第二个共享特性,共享也就是资源共享,是指系统当中的资源可以供内存当中的多个并发执行的进程共同使用。资源共享可以分为两种共享方式,一个是互斥共享,一个是同时共享。
对于互斥来说,是指在一个时间段内,资源只允许一个进程来使用,而同时共享是指在一个时间段内他允许多个进程,资源允许多个进程同时对他进行访问。
这个地方所谓的同时为什么要打双引号?因为它往往是在宏观上同时,而在微观上可能是交替的对资源进行访问的,在这个地方宏观和微观刚才理解了并发和并行之后,这儿大家应该就已经可以理解了。
那么我们来看一个例子,对于互斥共享方式来说,比如说我们使用 QQ 和微信视频聊天,但是在同一时时间段,我们只允只会允许摄像头给其中的一个进程使用,比如你用 QQ 和你的家人正在进行聊天,那么这个时候你还想用电脑的微信和你的小伙伴进行视频聊天的话,你就会发现这个视频是发不出去的,因为它会提示你说这个摄像头正在已经被分配给其他的进程,所以这就是所谓的互斥共享方式,在一个时间段内摄像头这个资源它只能被分配给其中的一个进程使用。
再来看第二个例子,同时共享方式,我们可能会遇到这样的情况,我们用 QQ 给某人发送文件 a,然后用微信发送文件 b 在宏观上看来,微信和 QQ 的文件发送的进度条都是一直在往前推进的,所以在用户宏观上看来,两看起来两边都是在同时读取发送文件,这些文件它是被放在硬盘里的,那么在用户看来就看起来就像是 QQ 和微信这两个进程都在同时访问硬盘资源,从中读取各自的文件数据,但事实上微观上来来看,这两个进程他们是交替的访问硬盘的,QQ 先读出了文件 a 的某一个部分,然后微信又读出文件 b 的某一部分,接下来又交替着让 QQ 读文件 a 的下一部分,然后以此交替的访问这个硬盘,所以这就是所谓的微观上交替的访问硬盘资源的意思,所以这就是两个很典型的互斥共享和同时共享的这种例子。
有的时候同时共享指的也有可能是微观上也确实在同时的共享资源,比如说你在玩游戏的时候一边听歌,那么你会发现你的扬声器声音输出设备,一边在播放游戏的音效,同时还在播放音乐。所以在这种情况下,扬声器声音输出设备,同时是真的在微观上也是同时正在被你的音乐播放器和游戏这两个进程同时使用的,所以这个地方稍微注意一下。
那么我们再来看一下并发和共享的关系,继续通过上面的例子来分析,用 QQ 发送文件 a,微信发送文件 b,那么就说明 QQ 和微信两个两个进程,他们其实是在并发的执行的,也就是有并发性,那么这两个进程他们需要同时完成发送文件的事情,所以他们需要共享的访问硬盘资源,这又体现了它的共享特性。
如果说我们的系统失去了并发性,就说明在系统当中同一时间段只能有一个程序正在运行,那么也就意味着这两个进程他们就不需要同时共享来访问硬盘资源,那么共享性也就失去了存在的意义。而另一个角度,如果说这个系统失去了共享性,那么 QQ 和微信这两个进程就没办法同时访问硬盘资源,所以他们也没办法完成同时发送文件这件事。既然如此,QQ 和微信也就没办法并发的执行
所以说我们可以看到如果失去了并发性,那么共享性就失去了存在的意义,而如果失去了共享性,那么并发性就不可能被实现。所以并发和共享我们才说他们是互为存在条件的,这就是开篇提到的一个知识点。
# 虚拟
下面再看第三个特征,虚拟,虚拟是指把物理上的实体对应为若干个逻辑上的对应物,这个可能对于跨考的同学来说也不太容易理解,我们直接来看一个实际的例子。我们知道在一个程序需要执行的时候,需要把它放入到内存,并且给它分批分配 CPU 才能执行。
这是一个我特别喜欢的游戏 GTA,然后这个游戏官方的数据是说它需要 4G 的运行内存,然后除了这个游戏之外,其实我在电脑当中还有各种各样的别的一些应用软件程序,那么我的电脑其实只有 4GB 的内存,但是其实在我的电脑上,我可以同时打开 GPA,QQ 还可以用微信迅雷同时还在用网易云音乐在听音乐,所以看起来这些成这么多的应用软件,他们总共需要的内存量他们其实是远大于 4GB 的,但为什么他们又可以在我的电脑上同时运行,其实这就采用了虚拟存储器技术。实际上电脑只有 4GB 的内存,也就是物理上的实体是 4GB 的内存,但是用户在我看来它变成了逻辑上的对应物,它看起来是远远大于 4GB 的
所以这就是虚拟特性虚拟虚拟技术的一个例子。它虚拟存储器技术它其实就是虚拟技术当中的空分复用技术,这个地方大家只需要对虚拟存储器和空分复用技术能有一个印象就可以了。咱们这两个知识点是第三章会重点讲解的知识点。
那么再看另外一个例子,在一个单核计算机下面,用户可以打开 QQ,可以打开迅雷,那么既然这个电脑只有一一个单核的 CPU,那么我们的程序需要正常的运行,需要为它分配 CPU。既然如此,电脑计算机当中为什么还可以同时执行这么多的程序?其实这就用到虚拟处理器的技术,实际上只有一个单核 CPU,这是物理上的实体,但是在用户看来,在我看来,这个计算机似乎变成了 6 个 CPU 在同时为自己服务,这就是所谓的逻辑上的实体。那么这就是虚拟处理器技术,就是典型的十分复用技术。在微观上看,一整个大的时间段被分割,为了一个微小的时间片时间段,然后在各个时间段内处理机是交替的为各个进程服务的,所以这就是时分的意思。他把一个大的时间段分为了各个很小的时间片,所以这是时分复用技术。
那么再来回顾一下,我们刚才讲了虚拟机实现虚拟性的虚拟技术,分为空分复用技术和时分复用技术。然后很显然我们如果说这个系统当中是操作系统失去了并发性,那么就意味着一个时间段只需要有一道程序在执行。那么从刚才我们分析的过程中可以看到,如果没有了并发性,那么时分复用技术和空分复用技术其实也没有存在的意义,那么我们也就是说我们虚拟性也就没必要实现了,所以可以说没有并发性,就谈不上虚拟性,虚拟性就没有存在的意义。
# 异步性
最后看第四个特性,异步性,异是指多道程序,环境下允许多个程序并发执行,但是由于资源有限,进程的执行不是一贯到底,而是走走停停的,以不可预知的速度向前推进。
那么我们还是直接看一个例子,直接看这个可能会不太容易理解,还是用刚才老查的约会的例子来看,老查要和两个女孩并发的约会,那么和 1 号女孩约会的话,一号女孩会让老查做这样两件事,一个是让他陪他吃饭,一另外一个是让他把心给他,然后二号刚好是这两个指令是反过来的,他会首先要求老渣把心给他,然后才会让老渣陪他吃饭。那么老渣由于他们是并发约会的,所以老渣可以有可能是这么约的,在第一个时间段是和一号约,那么他会执行一号的指令,就是陪他吃饭没有问题。在第二个时间段他也是和继续和一号约,那么这个时间段他会处理一号的第二个指令,就是让老渣把心给他,所以这个时候老渣的心还在那,他就会把他的心给一号
在之后这个时间段他会和二号约,但是二号这时候把要求老渣把心给他,由于此时由于老渣的心只有一颗,那么在这个时间在这个时刻,老渣的心是被一号给占有的,那么二号的指令就没办法得到满足,所以二号的约会任务就会被阻塞,就没办法继续往下推进,一直要等到一号使用完了,老扎的真心把它归还给老查,然后老查才能把心分配给二号,然后二号的进程约会进程才可以继续往下执行。
那么他还有可能是这样约的,比如说在第一个时间段他和一号约就是陪他吃饭,第二个时间段他是和二号约,那么二号的第一个指令是让老查把心给他,所以老赵这个时候把心给了二号,
在之后他又会和一号约,这个时候一号要求老渣把心给他,那么此时老沙的心已经给了二号,所以他就没办法给一号,一号只能阻塞等待二号的把这老渣的心给释放,然后并且再重新分配给一号。
所以可以看到在并发执行的过程中,这些进程的推进,它其实是我们不可预知的走走停的推进的。那么在这个例子当中,一号二号的约会任务,相当于是对两个进程的处理,每个进程它会有各自需要执行的指令,而老查的心相当于这儿提到的有限的系统资源,由于资源有限,所以我们看到进程的执行过程有可能是走走停停的,而不是一贯到底的,它以不可预知的速度向前推进,显然所谓的异步性也是因为并发性导致的。
如果我们失去了并发性,那么也就意味着老扎在一天之内只需要处理一个约会任务,那么它只需要顺序的把一号的这两个指令给处理完就可以了。那么只有把一号的两个指令全部处理完,他才会接着处理二号的这两个指令。那么那么在这种情况下,这些进约会进程只能串行的执行,系统失去了并发性之后,它这些进程的执行就可以一贯到底,而不会走走停停。因为这些系统资源肯定是分配给当前正在执行的进程的,所以可以这么说,只有系统拥有了并发性,那么才有可能导致这儿所说的异步性。
# 小结
以上就是操作系统的 4 个特性,我们分别讲了并发共享、虚拟和异步。在考试当中我们需要注意到的是注意重点关注的是并发和并行的区别。刚才我们用老查和小查两个约会的策略来进行了说明。
另外我们要注意并发和共享,它们是互为存在条件的,刚才也已经解释过。如果没有并发,那么就谈不上虚拟和异步,而并发和共享本身又是互为存在条件的,所以可以这么说,没有并发和共享就谈不上虚拟和异步,虚拟和异步就没有存在的意义。那么并发和共享就是操作系统当中最基本的两个特征,这就是为什么说它们是最基本的两个特征。好的,以上就是小节的全部内容。