2 操作系统介绍
操作系统:让程序运行变得容易(允许你同时运行多个程序)、允许程序共享内存、让程序能够与设备交互
核心问题:如何将资源虚拟化
操作系统将物理资源(处理器、内存、磁盘)转换为更通用、更强大且更易于使用的虚拟形式
操作系统扮演的主要角色是管理这些资源
2.1 虚拟化CPU
操作系统负责提供一种假象,即系统拥有非常多的CPU的假象,将单个CPU转换为看似无限数量的CPU,从而让许多程序看似同时运行,这就是所谓的虚拟化CPU
2.2 虚拟化内存
现代机器提供的物理内存,内存就是一个字节数组。要读取内存,必须指定一个地址,才能访问存储在那里的数据
每个进程访问自己的私有虚拟地址空间,操作系统以某种方式映射到机器的物理内存上。一个正在运行的程序中的内存引用不会影响其他进程的地址空间。
2.3 并发
增加共享计数器时,需要3条指令:
- 将计数器的值从内存加载到寄存器
- 将其递增
- 将其保存回内存
这3条指令并不是以原子方式执行
2.4 持久性
持久地存储数据
文件系统:负责管理持久的数据
2.5 设计目标
操作系统:
它取得CPU、内存或磁盘等物理资源,并对他们进行虚拟化(virtualization)。它处理与并发(concurrency)有关的麻烦且棘手的问题。它持久地(persistency)存储文件,从而使他们长期安全。
设计目标:
- 提供高性能、最小化操作系统的开销
- 提供保护,确保一个程序的恶意或偶然不会损害其他程序或者操作系统。隔离(isolation),让进程彼此隔离是保护的关键
- 必须不间断运行,提供高度的可靠性
2.6 简单历史
早期操作系统:只是一些库
只是一组常用函数库。批处理:决定运行作业的顺序
超越库:保护
代表操作系统运行的代码是特殊的,应该与对待正常应用程序代码的方式不同。
系统调用诞生。
系统调用将控制转移到 OS 中,同时提高硬件特权级别。用户应用程序以所谓的用户模式运行,这意味着硬件限制了应用程序的功能。
在发起系统调用时(通常通过一个称为陷阱(trap)的特殊硬件指令),硬件将控制转移到预先指定的陷阱处理程序(trap handler),并同时将特权级别提升到内核模式(kernel mode)。在内核模式下,操作系统可以完全访问系统的硬件。执行完成后,通过特殊的陷阱返回指令将控制权交还给用户,返回到用户模式,回到应用离开的地方。
多道程序时代
操作系统不是一次运行一项作业,而是将大量作业加载到内存中并在它们之间快速切换,从而提高CPU利用率。因为I/O设备很慢,在处理I/O时让程序占着CPU,浪费了CPU时间。
内存保护 and 并发 matter
摩登时代
PC(个人计算机)