操作系统为了提供用户一个更好, 更简单, 更清晰的计算机模型, 并管理硬件设备
包括寄存器, 高速缓存, 内存和磁盘
寄存器: 寄存器是最快的, 跟cpu相同的材料做成, 访问它们没有延时
高速缓存: cpu提供了两个高速缓存, L1和L2
内存: 断电了内容就没了, 属于易失性
磁盘: 即使在断电之后也不会丢失数据
IO包括了控制管理器和设备本身. 为了能够使用设备, 需要有设备驱动程序, 把驱动装到OS中, 方法有
实现输入和输出
方法1: 用户发出系统调用, 然后设备驱动在I/O并忙等待直接完成, 并返回
方法2: 设备驱动在操作完成时产生一个中断, 设备驱动程序在这个时刻返回
方法3: 直接储存器访问
总线把各种设备连接在一起
PCI: 数据并行处理. 多个设备需要发送数据时, 需要决定哪个设备可以使用总线
PCIe: 串行总线结构, 可以并行发送消息
DDR3: CPU通过DDR3与内存对话
USB: 集中式总线, 每个设备1ms轮训一次I/O设备
大型机OS: 数据中心的OS, Linux主导
服务器OS: 服务器提供打印服务, 文件服务或者web服务. 奠定的系统有Solaris, FreeBSD, Linux和Windows Server
多个处理器系统: 将多个CPU连接成单个系统, 或者不目前现代很多个人计算机也是多核系统了. 主流的Windows和Linux都可以运行在多核处理器上
个人计算机系统: Windows, Linux和MacOS等
掌上计算机操作系统: 主导的是Android和iOS
嵌入式操作系统: 主导的是Linux, QNX和VxWorks
传感器节点操作系统: 这些节点是一种可以批此通信并且使用无线通信基站的微型计算机, TinyOS是一个著名的系统
实时操作系统: 时间作为关键参数, OS有eCos
本质上是一个正在执行的程序, 在内存上有相关的地址空间. 在switch进程时候, 进程所有信息回保存下来等待scheduler下一次的调度
用来保存正在执行的程序. 有一种虚拟内存的技术, 操作系统可以把部分地址空间装入主存, 不分留在磁盘上, 并且在需要的时候回来交换它们. 本质上操作系统创建了一个地址空间的抽象, 做为进程可以引用地址的集合. 该地址空间与机器的物理内存解耦, 可能大于也可能小于物理空间
隐藏了磁盘和其它I/O设备的细节特性, 提供一个独立于设备的抽象文件模型
用户如果需要一个系统的服务, 比如读取文件, 就需要执行一个系统调用, trap, 把控制转移到操作系统, 执行系统调用, 然后返回给用户. 只有系统调用才能进入内核
系统调用包括了
整个操作系统在内核态以单一程序运行. 比如Linux
输入输出是一层, 内存管理是一层, 进程管理是一层 (不是大众使用的OS)
减少出错, 把核心放在内核, 其它放在了用户态. 在实时, 工业中流行.
第一类虚拟机: 同时运行多个操作系统的最终用户服务
第二类虚拟机: 利用了宿主操作系统并通过文件系统创建进程, 存储文件等. 这类虚拟机其实是宿主操作系统的文件系统中的一个大文件
操作系统有效管理系统的各个部分, 提供给用户比实际机器更便于运用的抽象, 比如进程, 地址空间, 文件. 它的核心是可处理的系统调用集, 包括读写文件, 进程创建和终止, 目录管理等