3.1 The History of Operating Systems
- 多任務(wù)處理(multitasking)的問(wèn)題
- load balancing:在多個(gè)處理器這件,動(dòng)態(tài)調(diào)節(jié)任務(wù)
- scaling:把一個(gè)任務(wù)拆分成子任務(wù)
- embedded system:嵌入到特定儀器上的系統(tǒng)
3.2 Operating System Architecture
A Software Survey
Components of an Operating System
- 操作系統(tǒng) = UI + kernel
- 兩類UI:shell(鍵盤(pán)顯示器,文本)vs. GUI
| - | UNIX | Windows |
|---|---|---|
| shell | Bourne shell, C shell, ... | cmd |
| GUI | X11 | windows |
- kernel
- 文件管理(斜線:windows左,網(wǎng)址、LINUX右 )
- 設(shè)備驅(qū)動(dòng):和controller通訊的軟件
- 內(nèi)存管理:管理主存。paging:把待處理信息在主存和硬盤(pán)之間來(lái)回倒,制造虛擬內(nèi)存。
- scheduler,dispatcher
Getting It Started
- 開(kāi)機(jī)過(guò)程
- 開(kāi)啟前操作系統(tǒng)存儲(chǔ)在硬盤(pán)中,主存是空的
- 每次啟動(dòng),CPU的program counter(存儲(chǔ)這下一條指令的地址),都包含一個(gè)預(yù)定的地址
- 這個(gè)地址指向內(nèi)存中特殊的ROM(read only memory,掉電依然保存),存儲(chǔ)著boot loader
- boot loader負(fù)責(zé)把操作系統(tǒng)載入到主存中,之后讓program counter跳轉(zhuǎn)到操作系統(tǒng)的第一條指令
- 操作系統(tǒng)可以存放在閃存甚至遠(yuǎn)程電腦中
- firmware:ROM中,除了boot loader之外的其他軟件。介于軟硬之間。例如BIOS, EFI。
3.3 Coordinating the Machine's Activities
The Concept of a Process
- 進(jìn)程:執(zhí)行一個(gè)程序的“行為”。隨著時(shí)間變化。
- 進(jìn)程狀態(tài) = 程序中正在執(zhí)行的位置(program counter)+所有寄存器狀態(tài)
Process Administration
- scheduler:在process table中管理任務(wù)(任務(wù)管理器可見(jiàn))
- 記錄process使用的內(nèi)存地址,優(yōu)先級(jí),ready/waiting
- dispatcher:管理資源(時(shí)間片)
- 從所有ready進(jìn)程中,選擇最高優(yōu)先級(jí),分配一個(gè)時(shí)間片
- 時(shí)間片計(jì)時(shí)結(jié)束后,觸發(fā)interrupt
- CPU完成當(dāng)前machine cycle
- CPU記錄當(dāng)前process狀態(tài),進(jìn)入下一循環(huán)
3.4 Handling Competition Among Processes
- 需要競(jìng)爭(zhēng)的資源:文件讀寫(xiě)權(quán)限、 新文件創(chuàng)建的硬盤(pán)空間、內(nèi)存、process table中的位置、時(shí)間片、網(wǎng)絡(luò)、GPU
Semaphores
- 有些代碼(例如獨(dú)占設(shè)備),一次只能由一個(gè)進(jìn)程執(zhí)行完,才允許下一個(gè)進(jìn)程執(zhí)行。要用一個(gè)flag進(jìn)行保護(hù)
- 這個(gè)flag本身的讀取/設(shè)置也需要進(jìn)行
- 法1:在讀取時(shí),設(shè)定不可中斷;設(shè)置完成后,再設(shè)置可中斷
- 法2:test-and-set設(shè)置為一個(gè)指令,在一個(gè)machine cycle中完成
- 這種“精心維護(hù)”的flag稱為semaphore??稍L問(wèn)程序個(gè)數(shù)可以不止為一。
Deadlock
- 多個(gè)進(jìn)程,相互等待對(duì)方完成,才能從waiting變成ready
- 死鎖的三個(gè)必要條件
| 名稱 | 含義 | 解決 | 舉例 |
|---|---|---|---|
| 競(jìng)爭(zhēng) | 在不可共享資源上存在競(jìng)爭(zhēng) | 規(guī)避 | 把打印機(jī)驅(qū)動(dòng)(不可共享)當(dāng)成資源->把待打印隊(duì)列(可共享)達(dá)成資源。spooling |
| 請(qǐng)求和保持 | 進(jìn)程一部分一部分地申請(qǐng)資源。申請(qǐng)新的時(shí)候,舊的不放棄 | 規(guī)避 | 一次申請(qǐng)全部資源 |
| 不可剝奪 | 資源分配后,不可被強(qiáng)制取回 | 檢測(cè)和矯正 | 殺進(jìn)程 |
3.5 Security
Attacks from the Outside
Attacks from Within
- 兩種模式:privileged mode/nonprivileged mode,是否可以運(yùn)行所有指令
- 某些指令(e.g.改寫(xiě)程序訪問(wèn)限制的寄存器),需要限制執(zhí)行