操作系统导论-第2章-操作系统介绍

第二章 操作系统介绍

程序运行时会发生什么?

  1. 从内存中获取(fetch)一条指令;
  2. 对其进行解码(decode);
  3. 执行(execute);
  4. 重复上述过程。

操作系统Operating System, OS):让程序运行变得容易,允许程序共享内存,让程序与设备交互。又称为虚拟机virtual machine)。

虚拟化virtualization):操作系统将物理(physical)资源(处理器,内存,硬盘等)转化为更通用、更强大且更易于使用的虚拟形式。

操作系统提供了一些接口([[操作系统导论 第4章 抽象:进程#4.2 进程API|API]]),以及几百个系统调用(system call)让应用程序调用。即提供了一个标准库(standard library)。

2.1 虚拟化CPU

在硬件的一些帮助下,操作系统负责提供一种假象(illusion),即操作系统拥有非常多的虚拟CPU的假象。

虚拟化CPU:将单个CPU(或其中一小部分)转化为看似无限数量的CPU,从而让许多程序看似同时运行。

两个序想要在特定时间运行,应该运行哪个?这个问题由操作系统的策略(policy)来回答。在操作系统的许多不同的地方采用了一些策略,来回答这类问题,所以我们将在学习操作系统实现的基本机制(mechanism)(例如一次运行多个程序的能力)时研究这些策略。因此,操作系统承担了资源管理器 (resource manager)的角色。
[[操作系统导论 第4章 抽象:进程]]

2.2 虚拟化内存

内存就是一个字节数组。要读取(read)内存,必须制定一个地址(address),才能访问数据。要写入(write)或更新(update)内存,还必须要写入给定地址的数据。每个进程访问自己私有的虚拟地址空间virtual address space)(有时称为地址空间address space),操作系统一某种方式映射到机器的物理内存上。

2.3 并发

2.4 持久性

2.5 设计目标

  • 建立一些抽象(abstraction),让系统方便和易于使用;
  • 提供高性能(performance),最小化操作系统的开销(minimize the overhead);
  • 在应用程序之间以及在OS和应用程序之间提供保护(protection),让进程彼此隔离(isolation)是保护的关键;
  • 操作系统必须不间断运行,提供高度的可靠性(reliability
  • 能源效率,安全性,移动性……

2.6 简单历史

早期操作系统:只是一些库

批(batch)处理:线把一些工作准备好,然后由操作员以“分批”的方式运行。一次运行一个程序。

超越库:保护

系统调用(system call:添加一些特殊的硬件指令和硬件状态,让向操作系统过度变为更正式的、受控的过程。

系统调用过程调用之间的关键区别在于,系统调用将控制转移(跳转)到OS中,同时提高硬件特权级别hardware privilege level)。用户应用程序以所谓的[[操作系统导论 第6章 机制:受限直接执行#^82a54b|用户模式(user mode)]]运行,这意味着硬件限制了应用程序的功能。在发起系统调用时[通常通过一个称为陷阱(trap)的特殊硬件指令],硬件将控制转移到预先指定的陷阱处理程序(trap handler),并同时将特权级别提升到[[操作系统导论 第6章 机制:受限直接执行#^2ba595|内核模式(kernel mode)]]以完全访问系统的硬件,因此可以执行诸如发起I/O请求或为程序提供更多内存等功能。当操作系统完成请求的服务时,它通过特的陷阱返回(return-from-trap)指令将控制权交还给用户,该指令返回到用户模式,同时将控制权交还给应用程序,回到应用离开的地方。

多道程序时代

操作系统将大量作业加载到内存中并在它们之间快速切换,从而提高CPU利用率。
在I/O进行和任务中断时,要支持多道程序和重叠运行。内存保护、并发等问题变得关键。

摩登时代

个人计算机。

2.7 小结