type
status
date
slug
summary
tags
category
icon
password
Property
冯·诺依曼(Von Neumann)计算模型:处理器从内存中获取(fetch)一条指令,对其进行解码(decode),然后执行(execute)它。完成这条指令后,处理器继续执行下一条指令,依此类推,直到程序最终完成
在现代的操作系统设计中(考虑多程序同时运行),程序并不直接访问硬件(需要保护硬件资源),这时就需要一个软件来协调二者:通过受保护的方式分配资源给各个程序,允许程序共享内存,让程序能够与设备交互。
这一软件就是操作系统(Operating System,OS),因此操作系统也可以看作硬件与应用程序间的抽象层。
如何将资源虚拟化?
操作系统主要利用一种通用的技术——虚拟化(virtualization),将物理资源(如处理器、内存或磁盘)转换为更通用、更
强大且更易于使用的虚拟形式。因此,有时将操作系统称为虚拟机(virtual machine)。
为了让用户可以告诉操作系统做什么,从而利用虚拟机的功能(如运行程序、分配内存或访问文件),操作系统提供了一些接口(API),供调用。由于操作系统提供这些调用来运行程序、访问内存和设备,甚进行其他相关操作,我们有时也会说操作系统为应用程序提供了一个标准库(standard library)。
因为虚拟化让许多程序运行(从而共享CPU),让许多程序可以同时访问自己的指令和数据(从而共享内存),让许多程序访问设备(从而共享磁盘等),所以操作系统有时被称为资源操理器(resource manager)。每个CPU、内存和磁盘都是系统的资源(resource),操作系统扮演的主要角色就是管理这些资源。
type
status
date
slug
summary
tags
category
icon
password
Property
程序本身是没有生命周期的,只是存在磁盘上面的一些指令(也可能是一些静态数据)。是操作系统让这些字节运行起来,让程序发挥作用。
人们常常希望同时运行多个程序,虽然只有少量的物理CPU可用,但是操作系统如何提供几乎有无数个的CPU可用的假象?
操作系统通过虚拟化CPU 来提供这种假象。通过让一个进程只运行一个时间片,然后切换到其他进程,操作系统提供了存在多个虚拟CPU 的假象。这就是时分共享CPU 技术,允许用户如愿运行多个并发进程。潜在的开销就是性能损失,因为如果CPU 必须共享,每个进程的运行就会慢一点。
- 时分共享(time sharing)是操作系统共享资源所使用的最基本的技术之一。通过允许资源由一个实体使用一小段时间,然后由另一个实体使用一小段时间,如此下去,所谓的资源(例如,CPU 或网络链接)可以被许多人共享。
- 时分共享的自然对应技术是空分共享,资源在空间上被划分给希望使用它的人。例如,磁盘空间自然是一个空分共享资源,因为一旦将块分配给文件,在用户删除文件之前,不可能将它分配给其他文件。
抽象:进程
操作系统为正在运行的程序提供的抽象,就是所谓的进程(process)。在任何时刻,我们都可以清点它在执行过程中访问或影响的系统的不同部分,从而概括一个进程。
type
status
date
slug
summary
tags
category
icon
password
Property
构建虚拟化时存在一些挑战:
- 性能:如何在不增加系统开销的情况下实现虚拟化?
- 控制权:如何有效地运行进程,同时保留对 CPU 的控制?
操作系统必须以高性能的方式虚拟化CPU,同时保持对系统的控制。为此,需要硬件和操作系统支持。操作系统通常会明智地利用硬件支持,以便高效地实现其工作。
策略:直接执行
只需直接在CPU上运行程序即可。
OS 希望启动程序运行时,它会在进程列表中为其创建一个进程条目,为其分配一些内存,将程序代码(从磁盘)加载到内存中,找到入口点(
main()
函数或类似的),跳转到那里,并开始运行用户的代码。