3.1 The History of Operating Systems
- 多任务处理(multitasking)的问题
- load balancing:在多个处理器这件,动态调节任务
- scaling:把一个任务拆分成子任务
- embedded system:嵌入到特定仪器上的系统
3.2 Operating System Architecture
A Software Survey
Components of an Operating System
- 操作系统 = UI + kernel
- 两类UI:shell(键盘显示器,文本)vs. GUI
- | UNIX | Windows |
---|---|---|
shell | Bourne shell, C shell, ... | cmd |
GUI | X11 | windows |
- kernel
- 文件管理(斜线:windows左,网址、LINUX右 )
- 设备驱动:和controller通讯的软件
- 内存管理:管理主存。paging:把待处理信息在主存和硬盘之间来回倒,制造虚拟内存。
- scheduler,dispatcher
Getting It Started
- 开机过程
- 开启前操作系统存储在硬盘中,主存是空的
- 每次启动,CPU的program counter(存储这下一条指令的地址),都包含一个预定的地址
- 这个地址指向内存中特殊的ROM(read only memory,掉电依然保存),存储着boot loader
- boot loader负责把操作系统载入到主存中,之后让program counter跳转到操作系统的第一条指令
- 操作系统可以存放在闪存甚至远程电脑中
- firmware:ROM中,除了boot loader之外的其他软件。介于软硬之间。例如BIOS, EFI。
3.3 Coordinating the Machine's Activities
The Concept of a Process
- 进程:执行一个程序的“行为”。随着时间变化。
- 进程状态 = 程序中正在执行的位置(program counter)+所有寄存器状态
Process Administration
- scheduler:在process table中管理任务(任务管理器可见)
- 记录process使用的内存地址,优先级,ready/waiting
- dispatcher:管理资源(时间片)
- 从所有ready进程中,选择最高优先级,分配一个时间片
- 时间片计时结束后,触发interrupt
- CPU完成当前machine cycle
- CPU记录当前process状态,进入下一循环
3.4 Handling Competition Among Processes
- 需要竞争的资源:文件读写权限、 新文件创建的硬盘空间、内存、process table中的位置、时间片、网络、GPU
Semaphores
- 有些代码(例如独占设备),一次只能由一个进程执行完,才允许下一个进程执行。要用一个flag进行保护
- 这个flag本身的读取/设置也需要进行
- 法1:在读取时,设定不可中断;设置完成后,再设置可中断
- 法2:test-and-set设置为一个指令,在一个machine cycle中完成
- 这种“精心维护”的flag称为semaphore。可访问程序个数可以不止为一。
Deadlock
- 多个进程,相互等待对方完成,才能从waiting变成ready
- 死锁的三个必要条件
名称 | 含义 | 解决 | 举例 |
---|---|---|---|
竞争 | 在不可共享资源上存在竞争 | 规避 | 把打印机驱动(不可共享)当成资源->把待打印队列(可共享)达成资源。spooling |
请求和保持 | 进程一部分一部分地申请资源。申请新的时候,旧的不放弃 | 规避 | 一次申请全部资源 |
不可剥夺 | 资源分配后,不可被强制取回 | 检测和矫正 | 杀进程 |
3.5 Security
Attacks from the Outside
Attacks from Within
- 两种模式:privileged mode/nonprivileged mode,是否可以运行所有指令
- 某些指令(e.g.改写程序访问限制的寄存器),需要限制执行