操作系统关键问题——虚拟化
操作系统的职责,笼统地讲,是让计算机能够同时运行多个程序、让多个程序共享主存、让程序能够方便地与设备交互等等,即让系统更易于使用、更高效。而让操作系统更易于使用的核心问题是:操作系统如何实现资源虚拟化?如今的操作系统利用虚拟化的技术将物理资源(如处理器、内存、磁盘等其他I/O设备)转换为更通用、更易于使用的虚拟形式,因此有时可以将操作系统成为虚拟机(例如,JVM是一种执行java字节码文件(.class文件)的虚拟机,负责将字节码解释为对应平台的机器码指令,同一个Java程序可以借助不同的版本得JVM在不同的操作系统上运行,实现其跨平台性)。
为了让用户可以告诉操作系统应该做什么,操作系统还提供一些API供用户调用,实际上也就是所谓的系统调用,用户编写的应用程序通过系统调用来利用虚拟机的功能。但并不能简单的把操作系统看作一组常用的函数库(虽然早期的操作系统只是一些库)。
冯诺依曼基本思想和冯诺依曼模型机
这是一个前置知识,有助于理解后面的内容。冯诺依曼在研究EDVAC机(世界上第一台计算机ENIAC同时期的计算机,当时的计算机主要使用穿孔卡片和穿孔带存储程序)时提出“存储程序”的思想,该思想奠定了现代计算机的基本结构。其特点如下:
- 机器内部使用二进制表示数据,采用“存储程序”的工作方式,程序的指令和数据以同等地位存储在存储器中
- 计算机硬件系统由运算器、控制器、存储器、输入设备、输出设备5大部件组成。
存储程序的基本思想:将事先编制好的程序和其原始数据送入主存后才能执行,一旦程序被启动执行就无需操作人员干预,计算机会自动逐条执行指令,知道程序结束。如下图是冯诺依曼模型机的结构,奠定了现代计算机结构的基础。