• 冯诺依曼计算模型:处理器从内存中读取指令,对其解码执行。完成一条指令后继续执行下一条,直到程序最终完成
  • 操作系统要确保系统易于使用又高效运行,需要虚拟化,将物理资源转换为通用易用的虚拟形式,故操作系统有时称为虚拟机
  • 操作系统提供接口供用户运行程序、访问设备等,它为应用程序提供了标准库

虚拟化cpu

  • 虚拟化cpu:将单个cpu或其中一部分转换为看似无限数量的cpu,从而让很多程序看似同时运行

虚拟化内存

  • 现代机器提供的物理内存模型是一个字节数组,要读写内存必须指定地址
  • 程序运行时,指令都在内存中,故每次读取指令都会访问内存
  • 虚拟化内存:每个进程访问自己的私有虚拟地址空间,操作系统将各进程的虚拟地址空间映射到机器的物理内存上。一个进程使用的内存不影响其他进程的内存

并发

  • 并发问题出现在操作系统本身中,也出现在多线程程序中
  • 多个进程同时操作一个变量时,该操作可能不止一条指令,即非原子操作。一个进程的操作可能被另一个进程打断。

持久性

  • 内存是易失设备,持久存储数据需要硬盘
  • 文件系统:操作系统中管理磁盘的软件
  • 操作系统不会为每个应用程序创建专用的虚拟磁盘,相反,它假设所有程序共享磁盘中的信息
  • 操作系统底层和磁盘的交互很复杂,而它对应用程序提供更简单的系统调用来操作硬件,故操作系统有时候被视为标准库

设计目标

  • 操作系统做的事:获取物理资源并虚拟化、处理并发、持久性地存储文件
  • 操作系统的目标:抽象、高性能、隔离、可靠性

简单历史

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

  • 批处理:由操作员来分批运行程序,一次只运行一个。此时操作系统只是库

超越库:保护

  • 系统调用:不是将操作系统作为库,而是添加特殊的硬件指令和硬件状态,使得用户程序到操作系统的过渡更加正式、可控
    • 系统调用和过程调用的关键区别:系统调用将控制转移给OS时,提高了硬件的特权级别
    • 应用程序以用户模式运行,限制硬件的功能。发起系统调用时陷入陷阱,硬件将控制转移给陷阱处理程序并将特权级别提升到内核模式,可完全访问硬件。完成系统调用后从陷阱中返回,将控制权交还给用户并将特权级别降低到用户模式

多道程序时代

  • 多道程序:OS一次不止运行一项作业,而是将大量作业加载进内存并在它们之间快速切换,提高cpu利用率,因为等待IO很慢
    • 处理多道程序时,产生内存保护、并发等问题

摩登时代

  • unix和linux

小结