操作系统的抽象与虚拟化

为什么需要操作系统?

说抽象之前得先知道CPU以及键盘、鼠标是之间是工作的。CPU最终状态只能进行加减,当我们输入一个简单的字符“A”的时候键盘与CPU都是把字母“A”转化为能够识别的二进制01才能识别。而这一些对于使用者来说都是透明的,让使用者认为当输入一个字母“A”时就是对字母“A”的一个“投影”显示。但实现这个的一切转化都已经由操作系统帮助我们完成,如果没有操作系统,对于一个字母A的输入,可能就是输入01000001这样的二进制代码。操作系统把设备(CPU,键盘,鼠标等)抽象后以方便我们的操作。

操作系统究竟把设备抽象成什么?

那么操作系统究竟把这些设备抽象成什么,是如何开发者方便开发者的调用?在操作系统中Everything is File,CPU,鼠标等这些都被操作系统抽象(虚拟化?)成为了文件,这样开发者可以通过对这些文件操作来操作设备。下面两幅图前者是Linux(Ubuntu)对于CPU和鼠标抽象之后的结果,后者是Windows7对于硬盘的抽象(虚拟化?)后的截图:

(Linux)

Windows7

开发者在使用这些设备的时候内部发生了什么?

前面提到的OS把一切抽象成为了文件的形式以供开发者(包括用户)来使用,那么在写一个C语言简单的scanf的时候,内部究竟干了什么?如下图:

上图一个程序与设备通信的工程,可以想象我们正在执行一个包含scanf的程序,我们需要通过程序输入一个值得是在内部是程序通过系统调用接口(syscall.h 或man 2 syscall)去操作设备驱动,然后设备驱动选择使用那个设备节点,最后节点与实际的设备相关联。

对于上图的进一步分析:

对于在Linux操作系统中执行ls命令查看当前文件夹内容的抽象:

抽象=虚拟化?

虚拟化和抽象我认为不能混为一谈,抽象是把物理设备编程实实在在的文件形式,但是虚拟化对于一个虚拟化系统是一个并不存在的东西,虽然虚拟化系统会认为自己本身是运行在物理设备之上但这一切都是运行在一个虚拟设备监视器(VMM)的容器之内。如图:

因为每个进程都拥有自己的内存空间,进程间通过pipe进行通信,而虚拟机监视器可以让虚拟机共享一个物理内存空间。换句话说就是:虚拟机监视器对于虚拟机是多对多的关系而对于物理设别的抽象内存是一对一的关系。如果是省略中间的”监视器”,实际上就是虚拟机共享物理内存的一个进程的内存空间(实际是不可能省略中间的监视器,这里只是类比)。监视器模拟虚拟CPU,虚拟CPU的计算通过监视器传递给真实的CPU计算。(下图为VMM模拟)

时间: 2024-10-12 23:26:41

操作系统的抽象与虚拟化的相关文章

深入理解计算机系统(1.3)---金字塔形的存储设备、操作系统的抽象概念

本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer3.html 上一章LZ给各位展示了一下hello程序的简单执行过程,可以看出在这一过程当中,系统在数据的传输上花费了大量的时间.硬件开发商为了减少这种数据传输的时间成本,采用一种高速缓存的技术去减少这种时间成本. 高速缓存被置放于处理器当中,与处理器中的寄存器文件直接进行数据交换,这样大大减少了数据传输的时间成本,使得程序的运行速度可以得到数倍的提升.而作为一个程序猿,如果可以适当的利用高速

金字塔形的存储设备,操作系统的抽象概念

系统在数据的创书上花费了大量的时间.硬件开发商(主要是那个做存储介质的人)为了减少这种数据传输的时间成本,此阿勇了以中高速缓存的技术去减少这种时间成本. 高速缓存被置放于处理器中,与处理器中寄存器文件直接进行数据交换,这样大大较少了数据传输的时间成本,使得程序的运行速度可以得到数倍的提升.作为一个搞电脑的,入股可以适当的利用高速缓存去存放一些程序运行过程中常用的数据,可以将程序的运行速度提高数倍甚至数个数量级. 你回想一下在网页中,你第一个打开一个网页,可能很慢,但是当你打开第二次的时候,可能快

虚拟化的一些基本常识

本文从以下几个方面介绍虚拟化的一些常识:虚拟化层次的分类及举例:系统虚拟化简史:VMM分类:典型的虚拟化产品:Xen. 虚拟化层次分类及举例 指令级虚拟化 Bochs QEMU 硬件级虚拟化 VMware Xen KVM 操作系统级虚拟化 Linux-VServer OpenVZ 编程语言级虚拟化 JVM .NETCLI 程序级虚拟化 Wine 系统虚拟化简史(硬件级虚拟化) 历史上第一个虚拟机是1965年左右IBM公司开发的system/360 model 40 VM.其最初的设计目的是将当时

从虚拟化到软件定义--重新定义IT产业格局

一.从操作系统对硬件的虚拟化到容器对应用程序的虚拟化 虚拟化将经典的三层架构(硬件.操作系统.应用程序)都虚拟化了一遍. 1.操作系统对硬件的虚拟化 在没有虚拟化之前,或者说在虚拟化这个概念还没有为众人熟知之前,我们的操作系统(Windows.Linux)充当了管理硬件的功能并将硬件资源提供给所需要的应用程序所使用.从今天虚拟化的角度来看,这个操作系统本身就是一个虚拟化的系统,该操作系统将硬件本身的调用接口抽象出来,在自己的抽象中将设备模拟成一个设备上下文,当应用程序需要使用硬件资源的时候,操作

Windows Server 2012 虚拟化实战:存储(一)

在计算机世界我们随处可以见的一种方法,那就是抽象.1946年冯诺依曼提出了计算机的基本结构包含:计算器,存储器和I/O设备.这可能是对计算机这一新生事物最重要的一次抽象,它直接影响了今后几十年计算机软硬件的发展.我们每个人对计算机的计算器,存储器和I/O设备都有不同的认知,你可能不认识所有计算芯片,不了解各种存储设备和输入输出设备,但是这绝对不会阻碍你区分出它们来.计算机系统中的各个部分可能是不可或缺的,但一定是可以替换的,这就是抽象的力量.没有抽象,我们可能要为每一套硬件开发不同的操作系统,要

Windows Server 2012 虚拟化测试:存储(一)

在计算机世界我们随处可以见的一种方法,那就是抽象.1946年冯诺依曼提出了计算机的基本结构包含:计算器,存储器和I/O设备.这可能是对计算机这一新生事物最重要的一次抽象,它直接影响了今后几十年计算机软硬件的发展.我们每个人对计算机的计算器,存储器和I/O设备都有不同的认知,你可能不认识所有计算芯片,不了解各种存储设备和输入输出设备,但是这绝对不会阻碍你区分出它们来.计算机系统中的各个部分可能是不可或缺的,但一定是可以替换的,这就是抽象的力量.没有抽象,我们可能要为每一套硬件开发不同的操作系统,要

(12)虚拟化技术之虚拟化技术简介

虚拟化技术是伴随着计算机的出现而产生和发展起来的,虚拟化意味着对计算机资源的抽象. 虚拟化技术已经成为构建云计算环境的一项关键技术. 虚拟化技术的核心思想是利用软件或固件管理程序构成虚拟化层,把物理资源映射为虚拟资源.在虚拟资源上可以安装和部署多个虚拟机,实现多用户共享物理资源. 随着云计算的发展,传统的数据中心逐渐过渡到虚拟化数据中心,即采用虚拟化技术将原来数据中心的物理资源进行抽象整合. 4种主要虚拟化技术: (1)服务器虚拟化 将一个或多个物理服务器虚拟成多个逻辑上的服务器 (2)存储虚拟

kubernetes基础

(1)什么是Kubernetes? Kubernetes是一个在集群主机间进行自动化部署.扩展和容器操作的提供以容器为中心基础设施的开源平台. 通过Kubernetes,你可以快速有效地响应用户需求: 快速而有预期地部署你的应用 极速地扩展你的应用 无缝铺展新的应用功能 节省资源,优化硬件资源的使用 我们的目标是孕育一个组件和工具的生态系统以资源在公有云和私有云中运行的应用的负担. Kubernetes特点: 可移植: 支持公有云,私有云,混合云,复合云 可扩展: 模块化,热插拨,可组合 自愈:

2.操作系统简介

操作系统简介 如果你正在攻读本科操作系统课程,你应该已经知道计算机程序运行时的功能.如果没有,这本书(以及相应的课程)将会很难 - 所以你应该停止阅读本书,或者跑到最近的书店,然后快速阅读必要的背景材料(包括Patt/Patel[PP03],特别是Bryant/O'Hallaron[BOH10]是非常棒的书). 那么程序运行会发生什么? 正在运行的程序做了一件非常简单的事情:它每秒执行数百万(今天,甚至数十亿)指令,处理器从内存中取出一条指令,对其进行解码(即确定这是哪条指令),并执行它(即完成