转载自知乎: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不同的用途,实现也会有差异。

吴海波:虚拟化(1):进程概述(The Process)

吴海波:虚拟化(2):程序在限制环境执行

吴海波:虚拟化(3):os调度策略

吴海波:虚拟化(4):地址空间概述

吴海波:虚拟化(5):地址翻译

吴海波:虚拟化(6):分段

吴海波:虚拟化(7)-空闲内存管理

吴海波:虚拟化(8)-分页概述

吴海波:虚拟化(9)-更快的地址翻译(TLB)

吴海波:虚拟化(10)-更小的页表

(转载)《Three easy pieces 》虚拟化部分整体介绍的更多相关文章

  1. SNF快速开发平台--规则引擎整体介绍及使用说明书

    一.设计目标 a)规则引擎语法能够满足分单,计费,WMS策略的配置要求.语法是一致和统一的 b)能够在不修改规则引擎模块的情况下,加入任意一个新的规则:实现上述需求之外的规则配置需求 c)运算速度快 ...

  2. Java 并发编程整体介绍 | 内含超多干货

    前段时间一直在学习多线程相关的知识,目前也算有了一个整体的认识,今天呢,主要从整体介绍一下,只谈造火箭,拧螺丝这种细节还需要自己深究. 首先是操作系统级别对于多线程的支持,由 CPU 的多级缓存.缓存 ...

  3. PyQt5整体介绍

    1 PyQt5整体介绍 PyQt5是基于图形程序框架Qt5的Python语言实现,由一组Python模块构成. PyQt5的官方网站是:www.riverbankcomputing.co.uk. Py ...

  4. 教你一招:[转载]使用 Easy Sysprep v4 封装 Windows 7 精品

    (一) 安装与备份系统 1. 安装 Windows 7 先使用第三方分区工具(DiskGenius分区)在虚拟机中分区,然后将封装的母盘文件安装写入指定的安装盘,写入完成后重启系统开始部署. 2. 进 ...

  5. vmware 桌面虚拟化 horizon view 介绍(使用微软的RDP协议或vmware 专有的PCoIP协议,连接到虚拟桌面,并且可以使用本地的USB设备、本地存储)

    虚拟化(一):虚拟化及vmware产品介绍 虚拟化(二):虚拟化及vmware workstation产品使用 虚拟化(三):vsphere套件的安装注意及使用 虚拟化(四):vsphere高可用功能 ...

  6. Apache Flink 整体介绍

    前言 Flink 是一种流式计算框架,为什么我会接触到 Flink 呢?因为我目前在负责的是监控平台的告警部分,负责采集到的监控数据会直接往 kafka 里塞,然后告警这边需要从 kafka topi ...

  7. [置顶] API相关工作过往的总结之整体介绍

    此系列的总结文章,仅仅是我个人工作总结,有考虑不周之处还请各位同行多多指教. API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是 ...

  8. [转载]前端构建工具gulpjs的使用介绍及技巧

    转载地址:http://www.cnblogs.com/2050/p/4198792.html gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非 ...

  9. (一):C++分布式实时应用框架----整体介绍

    C++分布式实时应用框架 (Cpp Distributed Real-time Application Framework) 版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经 ...

随机推荐

  1. plsql 数据库事件触发器

    --4.数据库事件触发器 需要超管的权限 /* 数据库事件触发器有数据库级和模式级两种. 前者定义在整个数据库上,触发事件是数据库事件,如数据库的启动.关闭,对数据库的登录或退出. 后者定义在模式上, ...

  2. 使用 TensorFlow 构建机器学习项目中文版·翻译完成

    原文:Building Machine Learning Projects with TensorFlow 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原 ...

  3. iBooker 财务提升星球 2020.2~3 热门讨论

    前两天分享了一下关于我们个人的现金流,今天就以公司的角度去分- 我们技术人,如何开源增加我们的收入? 首先,我们对收入进行下- 热门股要不要买? 参考标准: 1. 时机 2. 泡沫 时- #老实人报# ...

  4. 数论同余学习笔记 Part 2

    逆元 准确地说,这里讲的是模意义下的乘法逆元. 定义:如果有同余方程 \(ax\equiv 1\pmod p\),则 \(x\) 称为 \(a\bmod p\) 的逆元,记作 \(a^{-1}\). ...

  5. 技术管理进阶——Leader应该关注成长慢的同学吗?

    原创不易,求分享.求一键三连 两个故事 我该怎么办? ​在大学毕业的时候,恩师跟我说了一个故事: 有一个女同学跟他说,不知道毕业了该干撒,不知道该怎么办. 正处于「低谷期」的恩师突然一怔,想到貌似自己 ...

  6. Shell编程中的用户输入处理

    Linux read命令用于从标准输入读取数值. read 内部命令被用来从标准输入读取单行数据.这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据. 语法 read [-er ...

  7. JAVA 变量的概述

    变量的概述         用于存储可变数据的容器. 变量存在的意义 计算机主要用于处理生活中的数据,由于生活中存在大量的可变数据,那么计算机就必须具备存储可变数据的能力. 比如: 1.时间每一秒都在 ...

  8. Idea 如何不通过模板创建支持Maven的JavaWeb项目

    手动与模板创建的区别,请自行体会. 1. 点击创建项目 2. 不勾选骨架 3.填写项目名称以及该Maven项目坐标(groupid.artifactid.version). 在仓库中,以坐标确定项目. ...

  9. git rebase git merge

    Git rebase 使用方法 1. git checkout feature 2. git rebase master feature 相当于git rebase master + git chec ...

  10. 源码推荐 VVebo剥离的TableView绘制

    源码推荐 VVebo剥离的TableView绘制 https://github.com/johnil/VVeboTableViewDemo 此项目由VVebo剥离,希望你能通过这个demo看到我是如何 ...