操作系统就是虚拟机--主内又主外

简介:
操作系统为应用程序提供了n台虚拟机,有几个进程就有几台虚拟机,实际上计算机在最初发明的时候并没有指望运行多个进程,直到后来分时系统出来后,多道程序设计才成为可能,才有了多个进程分时共享cpu的概念。理解任何问题都要返朴归真地从原始定义理解,这样草能理解到其精髓,所以我们就认为进程实际上就等同于最开始的计算机上运行的计算任务,只不过原始的计算任务运行在硬件计算机上而现在的进程却运行在操作系统上,这个进程并不知道其它进程的信息,就好 像它们在不同的计算机上一样,实际上它们运行在不同的虚拟机上,至于操作系统直接支持的线程,实际上就是操作系统提供的多道程序设计的分时虚拟机而已,很简单,故不讨论(可以参看我以前的文章)。 
虚拟机被抽象出来了,那么既然进程可以直接运行于其上,虚拟机就应该提供接口,这些接口应该和真实的硬件机器一样,这些接口实际上就是一些硬件指令,比如 mov,add,jmp之类的指令,如果进程直接在真实的机器上执行这些指令无疑可以得到正确的结果,为了使得操作系统提供的虚拟机更加真实,在操作系统上运行的进程也必须可以直接执行这些指令,正是这样的,不过如果仅仅理解到这个层次的话稍微一深究,很多问题都不好解释了。实际上还有更多隐含的意义。 
上面提到的“机器”实际上应该说成cpu,机器的概念太广泛了,还包括io设备和电源等。我们说操作系统提供的虚拟机必须支持的指令就是cpu指令而不包括io指令,这是为什么呢?因为操作系统本身由cpu执行,cpu发展到当代早就有了分时功能,人们更加关注cpu而忽略了io设备,cpu其实已经成了 一个仲裁设备,一个负责管理的设备,而io设备就是一些提供特定功能的设备,功能强大并且单一,这个意义上说,分时特性是cpu提供的而非io设备,这样 的话,cpu指令完全可以提供给操作系统的虚拟机,因为不会造成混乱,前面说过,操作系统本身在cpu上运行,cpu具有分时特性,cpu完全可以仲裁好各个进程即虚拟机之间的时间分配,以使得各个虚拟机的指令好像它们单独在cpu上执行一样;但是io设备并没有很好的分时特性,它们很多都是只认命令,然 后执行,虽然有的真的可以并行执行,但是设备本身对时间片的分配并没有多少机制也不能设置什么策略,因此操作系统提供的虚拟机支持的指令中不可能直接支持 io指令,这怎么办呢?不能因为这就不能让进程不能执行io操作了啊,这很好办,让cpu仲裁就可以了,因此操作系统就提供了专门进行io的系统调用。 
因此操做系统必须提供一种io系统调用,让操作系统来处理cpu和io设备的差异,而不能直接让虚拟机来支持io指令。如果没有io设备这一说或者io设备也有分时特性,那么操作系统的设计就简单多了,就不需要什么read,write等系统调用了,可是事情不是那样,因此cpu和io设备的差异导致了操 作系统设计成这样。 
前面说过,cpu的地位和io设备的地位是平等的,因此cpu和io的通信就是一种设备间通讯,对仲裁cpu的操作系统来说是一种主外的行为,cpu搜集 所有虚拟机即进程的io操作请求,然后统一发送给io设备,io设备完成请求的时候会通知cpu事情的完成(中断),当然cpu也可以主动查询操作状态 (轮询,另外还有DMA),操作系统除了主外之外还要主内,主内的任务怎么说呢,其实很简单,就是进程调度,内存管理之类的,当然这些属于操作系统的职责,因此这些操作也不能直接提供给虚拟机,最终操作系统提供了两种系统调用,一种是主内的管理系统调用,另一种是主外的io系统调用。 

这就是操作系统的虚拟机观点。


 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1273528


相关文章
|
1月前
|
数据安全/隐私保护 虚拟化 Windows
如何在 VM 虚拟机中安装 Windows Server 2012 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Windows Server 2012 操作系统保姆级教程(附链接)
60 0
|
1月前
|
数据安全/隐私保护 虚拟化 Windows
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
81 0
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
|
1月前
|
数据安全/隐私保护 虚拟化 Windows
如何在 VM 虚拟机中安装 Windows XP 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Windows XP 操作系统保姆级教程(附链接)
109 0
|
1月前
|
Linux 网络安全 数据安全/隐私保护
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
144 0
|
1月前
|
安全 Linux 网络安全
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
88 0
|
30天前
如何在vm虚拟机里面安装win10操作系统
如何在vm虚拟机里面安装win10操作系统
11 0
|
1月前
|
存储 Ubuntu Linux
如何在 VM 虚拟机中安装 Deft(数字证据及取证工具箱) 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Deft(数字证据及取证工具箱) 操作系统保姆级教程(附链接)
15 0
|
1月前
|
Linux 数据安全/隐私保护 虚拟化
如何在 VM 虚拟机中安装 Kail Linux 2023.4 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Kail Linux 2023.4 操作系统保姆级教程(附链接)
58 0
|
1月前
|
虚拟化 数据安全/隐私保护 Windows
如何在 VM 虚拟机中安装 Win10 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Win10 操作系统保姆级教程(附链接)
200 0
如何在 VM 虚拟机中安装 Win10 操作系统保姆级教程(附链接)
|
4月前
|
存储 Ubuntu Linux
虚拟机VMware Workstation Pro中配置Linux操作系统Ubuntu的方法
虚拟机VMware Workstation Pro中配置Linux操作系统Ubuntu的方法

热门文章

最新文章