第1章——計算機系統概述
什么是操作系統
控制和管理整個計算機系統硬件和軟件資源,合理組織、調度計算機的工作與資源分配,進而為用戶和其他軟件提供方便接口和環境的程序集合
操作系統的功能
- 管理計算機資源(處理機、存儲器、文件、設備)
- 作為用戶和硬件之間的接口
- 用作擴充機器
多道批處理系統是什么,以及其特點
將作業成批送進內存,並由作業調度程序自動選擇作業運行
特點:多道、宏觀並行、微觀串行、無人機交互、響應時間長
分時操作系統是什么,以及特點
將處理器運行時間分成很短的時間片,按時間片輪流把處理器分配給各聯機作業使用
特點:多用戶、人機交互、響應時間短
並行與並發的區別
並行指同一時刻發生,並發指同一時間段發生
什么是訪管指令、訪管中斷
用戶在用戶態執行訪管指令,產生訪管中斷,進入內核態
什么是特權指令、非特權指令
在用戶態下執行的是非特權指令,在內核態下執行的是特權指令
異常和中斷的區別
異常(內中斷):源於CPU執行指令內部的事件(缺頁、訪管指令,算數溢出)
中斷(外中斷):來自CPU執行指令以外的事件,與當前運行的程序無關(時鍾中斷)
什么是系統調用,它的作用是什么
指用戶在程序中調用操作系統提供的子功能,通過執行訪管指令來發起系統調用
避免用戶直接執行系統特權指令
第2章——進程管理
為什么引入進程的概念
多道程序技術背景下,多個程序的並發執行會產生相互制約的問題,此時,程序這一靜態的概念無法描述這一並發過程中的狀態,因此引入進程,更好地描述和控制程序的並發執行,實現操作系統的並發性和共享性
什么是進程、進程映像(進程實體)、PCB
進程是具有獨立功能的程序在一個數據集合上運行的過程,是系統進行資源分配和調度的一個獨立單位,是動態的
進程映像是由程序段、相關數據段和PCB構成,是靜態的,代表某一時刻進程的狀態
PCB是用於描述進程狀態的數據結構,是進程存在的唯一標志
進程的狀態和轉換
進程和程序有什么區別
- 進程是程序及其數據在計算機上運行的一段過程,是動態的。程序是一組有序指令集合,是靜態的
- 進程是程序的一次執行過程,是暫時存在的。程序則可永久保存
- 一個進程可以執行一個或幾個程序。一個程序也可以構建多個進程
進程之間通信的方式有哪些
- 低級通信:PV操作
- 高級通信:傳輸大量數據
- 共享存儲:需要PV操作實現讀寫控制
- 消息傳遞:消息隊列、信箱
- 管道通信:半雙工工作
為什么引入線程的概念
為了減少程序在並發執行時所付出的時空開銷,進程切換開銷大,線程更輕量化,切換開銷小
什么是線程
是程序執行的最小單元,是調度的基本單位,不擁有資源
進程與線程的區別
- 進程是擁有資源的基本單位,線程是獨立調度的基本單位
- 進程切換開銷大,線程切換開銷小
- 進程地址空間相互獨立,同一進程的線程共享進程的資源
- 進程間通信需要PV操作,線程間通信不需要
用戶級線程和內核級線程的區別
內核級線程:線程管理由內核完成
用戶級線程:線程管理由應用程序完成
什么是作業調度、內存調度、進程調度
作業調度:從外存上挑選作業,為其分配資源,建立進程,送入就緒隊列
內存調度:將內存中暫時不能運行的進程調至外存等待,稱為掛起,當具備運行條件時,重新調回內存,送入就緒隊列。可以提高內存利用率和系統吞吐量
進程調度:從就緒隊列中選一個進程,分配處理機給它運行
什么是系統吞吐量、周轉時間、帶權周轉時間、響應時間
系統吞吐量:單位時間CPU完成左右的數量
周轉時間 = 作業完成時間 - 作業提交時間
帶權周轉時間 = 作業周轉時間 / 作業實際運行時間
響應時間:用戶提交請求到系統首次產生響應的時間
典型的調度算法有哪些,及其特點
-
先來先服務:長作業有利,利於CPU繁忙型
-
短作業優先:長作業不利,飢餓,平均周轉時間最少
-
優先級調度
-
高響應比優先
響應比 =(等待時間+要求服務時間)/要求服務時間
要求服務時間短,響應比高:短作業有利
等待時間長,響應比高:克服飢餓
-
時間片輪轉
-
多級反饋隊列
什么是臨界資源、臨界區
臨界資源:被多個進程共享,但一次只能由一個進程使用的資源
臨界區:進程中訪問臨界資源的那段代碼
進程互斥訪問臨界區的准則是什么
- 空閑讓進
- 忙則等待
- 有限等待
- 讓權等待
什么是死鎖
在兩個或多個並發進程中,如果每個進程持有某種資源又等待其他進程釋放它保持的資源,在未改變這種狀態前都不能向前推進,稱這一組進程構成死鎖。
通俗說,是兩個或多個進程無限期阻塞、相互等待的狀態
死鎖產生的必要條件
- 互斥條件:進程競爭的必須是獨占的資源,只能由一個進程訪問
- 不剝奪條件:進程自己的資源不可以被強行奪走,只能自己釋放
- 請求並保持條件:進程可以在保留資源的同時,請求別的資源
- 循環等待條件:存在一個循環等待鏈
如何解決死鎖問題
-
死鎖預防:破壞死鎖產生必要條件中的一條即可
- 破壞請求並保持:一次申請完所有資源,會導致資源浪費、飢餓
- 破壞循環等待:給資源編號,必須按編號遞增順序申請資源
-
死鎖避免
檢查當前是否處於安全狀態,銀行家算法
-
死鎖檢測和解除
先檢測出死鎖,再解除當前死鎖狀態(資源剝奪、撤銷進程、進程回退)
死鎖與飢餓的區別
- 死鎖至少是兩個進程,但飢餓可以只有一個進程
- 處於飢餓狀態的可以是一個就緒進程,處於死鎖狀態的一定是阻塞進程
第三章——內存管理(重點看書)
為什么要內存管理
多道程序並發執行時,共享內存,如果不管理,則會導致內存數據的混亂,從而限制並發
將用戶程序變為可在內存中執行的程序的步驟
- 編譯:編譯程序將源碼編譯成若干目標模塊
- 鏈接:鏈接程序將編譯后形成的一組目標模塊及其所需的庫函數鏈接在一起,形成裝入模塊,形成邏輯地址
- 裝入:裝入程序將裝入模塊裝入內存中
內存保護是什么,具體實現的方法
內存保護:保護操作系統不受用戶進程的影響,同時保護用戶進程不受其他用戶進程的影響
方法:
- 在CPU中設置上下限寄存器,存放用戶作業在主存中的上下限地址
- 采用重定位寄存器(用來加)和界地址寄存器(用來比)
什么是覆蓋,交換
覆蓋:不用把程序全部讀入內存才能運行,而是按調用關系分段(因此對程序員是不透明的),覆蓋區中存放需要的程序段,其他段放在外存中,用於同一個程序
交換:將等待狀態的程序從內存換到外存中,將准備好的程序調回內存,用於不同程序
連續分配管理的方式有哪些
- 單一連續分配
- 固定分區分配
- 動態分區分配
動態分區分配的分配策略算法有哪些
- 首次適應
- 最佳適應:產生最多外部碎片
- 最壞適應
- 臨近適應
非連續分配管理方式有哪些
分頁、分段、段頁
分頁和分段的區別
-
段是信息的邏輯單位,根據用戶需求划分,對用戶可見
頁是信息的物理單位,為了方便管理主存划分,對用戶透明
-
段的大小不固定,由其功能決定
頁的大小固定,由系統決定
-
段向用戶提供二維地址空間
頁提供一維地址空間
什么是頁表、快表,作用是什么
-
頁表:邏輯地址中的頁號與所占主存塊號的對應關系
-
快表:放在高速緩存中的部分頁表
作用:訪問內存頁面只需至少訪問一次高速緩存,一次內存,而使用頁表則要至少訪問兩次內存
頁面置換算法有哪些
- 最佳(OPT)
- 先進先出(FIFO)
- 最近最久未使用(LRU)
- 時鍾(CLOCK)
分頁存儲地址轉換過程
設頁面大小L,邏輯地址A,物理地址E
頁表寄存器:頁表始址F+頁表長度M
邏輯地址:頁號P+頁內偏移量W
頁表項:頁號P+主存塊號b
- 計算頁號P=A/L,頁內偏移量W=A%L
- 比較頁號P和頁表長度M,若P>M則越界中斷
- 頁表項地址=F+頁表項長度*P,取出其中的主存塊號b
- E=b*L+W
具有快表的分頁存儲地址轉換的過程
TLB——>頁表(TLB未命中)——>Cache——>主存(Cache未命中)——>外存
分段存儲地址轉換過程
設邏輯地址A,物理地址E
段表寄存器:段表始址F+段表長度M
邏輯地址:段號S+段內偏移量W
段表項:段號S+段長C+基址b
- 取出段號S和段偏移量W
- 比較段號S和段表長度M,若S>M則越界中斷
- 段表項地址=F+段號*段表項長度,取出段長C和基址b,如果W>C,則越界中斷
- E=b+W
第4章——文件管理
磁盤調度算法有哪些
- 先來先服務(FCFS)
- 最短尋找時間優先(SSTF):會產生飢餓
- 電梯調度(SCAN):
- 循環掃描(C-SCAN)
第5章——輸入/輸出管理
I/O控制方式有哪些
- 程序直接控制:CPU對I/O設備循環檢查,CPU利用率低
- 中斷驅動方式:當某進程要啟動某個 I/O 設備工作時,便由CPU 向相應的設備控制器發出一條 I/O 命令,然后立即返回繼續執行原來的任務。僅當傳輸完一個字時,才需 CPU 花費極短的時間去做些中斷處理。
- DMA方式:DMA控制器直接與存儲器交互,只有在數據塊傳送開始和結束才需要CPU
- 通道控制方式:CPU給通道一個I/O指令,通道來完成任務,一次可以傳輸多個數據塊,完成后中斷通知CPU
什么是SPOOLing技術
將獨占設備變為共享設備的技術
輸出的過程:
輸出進程的數據——>輸出井——>輸出緩沖區——>輸出設備
輸入的過程:
輸入設備的數據——>輸入緩沖區——>輸入井——>CPU