簡短
- 直接內存訪問DMA:獨立於CPU,設備-內存
- 通道:獨立於CPU,有自己的指令系統,管理IO操作
- Spooling:用軟件技術模擬獨享設備的工作
- 頁表:每一個作業都有關於自己的頁表
- 請頁靜態替換:OPT
理想
、LRU、LFU、FIFO
進程:資源分配的基本單位 程序+數據+PCB
- 進程間通信
- 信號量、信號
- 管道、消息隊列
- 共享內存、套接字
線程:獨立調度的基本單位
- 線程同步通信
- 信號量、信號
- 互斥量、臨界區
死鎖
- 定義:多個進程因爲競爭資源,造成的互相等待的現象
- 原因:系統資源不足、推進順序不合理
- 必要條件:互斥、 請求保持、非剝奪、循環等待
- 處理策略
- 預防:破壞必要條件
- 避免:銀行家算法
- 檢測:資源分配圖檢查環路
- 恢復
死鎖例子:+m1 +m2 -m1 +m1
- 線程T1持有鎖L1並且申請獲得鎖L2
- 而另一個線程T2持有鎖L2並且申請獲得鎖L1
- 因爲默認的鎖申請操作都是阻塞的,所以線程T1和T2永遠被阻塞了
實模式、保護模式
- 實模式:程序通過
段地址:偏移值
直接訪問物理內存 - 保護模式
- 程序通過
段選擇:偏移值
訪問虛擬內存 - 然後操作系統通過
全局描述符表
將虛擬內存轉爲物理地址 - 好處:進程有了嚴格邊界,任何進程無法訪問不屬於自己進程的物理內存
- 程序通過
緩衝區溢出
- 定義:計算機向緩衝區填充數據時,超過了本身的容量,溢出的數據覆蓋在合法數據上
- 原因:程序沒有仔細檢查用戶輸入的參數
- 危害:攻擊,堆棧溢出,函數返回時,跳轉到任意地址
- 程序崩潰並拒絕服務
- 跳轉並執行惡意代碼