(转载)《Three easy pieces 》虚拟化部分整体介绍
转载自知乎:https://zhuanlan.zhihu.com/p/37917910
一个程序在运行的时候发生了什么呢?
其实只是一些非常简单的事情:运行指令。处理器从内存中取出指令,译码然后执行。这条指令执行完毕后就又去执行新的指令,一直这样继续下去,直到程序执行完毕。
这里,我们所描绘的就是计算机的基本模型-冯诺依曼模型。听起来很简单不是吗?但是在这个课堂上,我们将学习程序在运行的时候,其他的一些不一样的知识,这些知识能够让系统更加的好用。
有一个软件,它负责让你更容易的运行程序(甚至可以让你在同一时间运行多个程序),允许程序可以共享内存,和硬件交互等等功能。这个软件就是操作系统,它负责让系统高效的运行并且遵循简单易用的惯例。
OS能够实现这些功能首先依靠的就是虚拟化技术。OS将物理的资源(比如处理器,内存,硬盘)转换为更加通用,有效和易于使用的虚拟化的形式。因此我们有些时候称os为虚拟机(虚拟机的概念很宽泛,大家如果要深入了解可以阅读下相关的书籍)。
当然为了让用户能够和os通信,OS提供了一些接口(APIs)供调用。一个常见的OS,会有上百个System calls可以供应用调用。我们有的时候也称OS提供了一个standard library 给应用。
OS涉及的一些目标,以这些为标准我们可以抓住OS设计的核心:
1.最基本的目标是建立一些抽象,使系统可以易于使用。
2.OS要能够高效的运行。不能让OS提供的服务调用起来很慢。
3.在不同的应用间提供保护,可以互不影响。
4.OS要是高可靠的。
5.还有些其他的,比如电源的管理,系统的安全等等。并且根据Os不同的用途,实现也会有差异。
(转载)《Three easy pieces 》虚拟化部分整体介绍的更多相关文章
- SNF快速开发平台--规则引擎整体介绍及使用说明书
一.设计目标 a)规则引擎语法能够满足分单,计费,WMS策略的配置要求.语法是一致和统一的 b)能够在不修改规则引擎模块的情况下,加入任意一个新的规则:实现上述需求之外的规则配置需求 c)运算速度快 ...
- Java 并发编程整体介绍 | 内含超多干货
前段时间一直在学习多线程相关的知识,目前也算有了一个整体的认识,今天呢,主要从整体介绍一下,只谈造火箭,拧螺丝这种细节还需要自己深究. 首先是操作系统级别对于多线程的支持,由 CPU 的多级缓存.缓存 ...
- PyQt5整体介绍
1 PyQt5整体介绍 PyQt5是基于图形程序框架Qt5的Python语言实现,由一组Python模块构成. PyQt5的官方网站是:www.riverbankcomputing.co.uk. Py ...
- 教你一招:[转载]使用 Easy Sysprep v4 封装 Windows 7 精品
(一) 安装与备份系统 1. 安装 Windows 7 先使用第三方分区工具(DiskGenius分区)在虚拟机中分区,然后将封装的母盘文件安装写入指定的安装盘,写入完成后重启系统开始部署. 2. 进 ...
- vmware 桌面虚拟化 horizon view 介绍(使用微软的RDP协议或vmware 专有的PCoIP协议,连接到虚拟桌面,并且可以使用本地的USB设备、本地存储)
虚拟化(一):虚拟化及vmware产品介绍 虚拟化(二):虚拟化及vmware workstation产品使用 虚拟化(三):vsphere套件的安装注意及使用 虚拟化(四):vsphere高可用功能 ...
- Apache Flink 整体介绍
前言 Flink 是一种流式计算框架,为什么我会接触到 Flink 呢?因为我目前在负责的是监控平台的告警部分,负责采集到的监控数据会直接往 kafka 里塞,然后告警这边需要从 kafka topi ...
- [置顶] API相关工作过往的总结之整体介绍
此系列的总结文章,仅仅是我个人工作总结,有考虑不周之处还请各位同行多多指教. API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是 ...
- [转载]前端构建工具gulpjs的使用介绍及技巧
转载地址:http://www.cnblogs.com/2050/p/4198792.html gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非 ...
- (一):C++分布式实时应用框架----整体介绍
C++分布式实时应用框架 (Cpp Distributed Real-time Application Framework) 版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经 ...
随机推荐
- linux字符编码防止乱码
一:linux字符编码 en_US.UTF-8 : 美式英文,utf-8 zh_CN.UTF-8 临时优化 export LANG=zh_CN.UTF-8 : 设置编码 永久优化 vim /etc/l ...
- python内置re模块全面实战
目录 一:取消转义 二:python内置模块之re模块 三:常用方法 findall search match 简便 四:常用方法 finditer 匹配文件多情况 五:切割 替换 内置模块 六:分组 ...
- python 小兵(10)内置函数
内置函数(下午讲解) 什么是内置函数?就是python帮我们提供的一个工具,拿过直接用就行,比如我们的print,input,type,id等等.截止到python3.6.2版本 中一共提供了68个内 ...
- js-reduce方法源码
// 数组中的reduce方法源码复写 //先说明一下reduce原理:总的一句,reduce方法主要是把数组遍历, //然后把数组的每个元素传入回调函数中,回调函数怎么处理,就会的到什么样的效果 A ...
- Spring学习七:ComponentScan注解
今天主要从以下几个方面来介绍一下@ComponentScan注解: @ComponentScan注解是什么 @ComponentScan注解的详细使用 1.ComponentScan注解是什么 其实很 ...
- 生成"cmd.exe"错误
转载请注明来源:https://www.cnblogs.com/hookjc/ 在VC2005里打开"工具"菜单,选择"选项",打开"选项" ...
- UDP数据包最大传输长度
概念以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.这个1500字节被称为链路层的MTU(最大传输单元). 但这并不是指链路层的长度被限制在1500字 ...
- linnux命令 - brctl和ifconfig
1.安装brctl centos7.6安装使用 yum install bridge-utils ubuntu使用 apt-get install bridge-utils 什么是网桥 网桥是一种在链 ...
- 使用kubeadm快速部署一套K8S集群
一.Kubernetes概述 1.1 Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S. K8S用于容器化应用程序的 ...
- js获取高度
转载请注明来源:https://www.cnblogs.com/hookjc/ <script> function getInfo() { var s = ""; s ...