標籤:作業系統
1.作業系統的特性:並發性、共用性、非同步性和虛擬性。
2.特權指令與非特權指令:
(1)特權指令。只能在管態才能執行的指令為特權指令。這些指令一般只有作業系統才能執行,而一般使用者程式不能執行。
(2)非特權指令。在管態和目態均可執行檔指令為非特權指令。
3.處理器的狀態:管態和目態,程式狀態字中的一位標識。
(1)管態:也稱為系統態、核心態,是作業系統運行時所處的狀態。
(2)目態:也稱為使用者態,是一般使用者程式運行時所處的狀態。
(3)狀態轉換:由目態轉換為管態的唯一途徑是中斷,中斷髮生時PSW應處於管態。由管態到目態轉換可以通過修改PSW實現。
4.多道程式相對於單道程式的優點:裝置、記憶體、處理器資源使用率提高。
5.進程是具有一定獨立功能的程式關於一個資料集合的一次運行活動。進程的動態特性。
6.進程的狀態:運行態、就緒態、等待態(掛起態、睡眠態,在等待某事件發生)。
7.進程式控制制塊是標誌進程存在的資料結構,其中包含系統對進程進行管理所需要的全部資訊:進程標識(進程號)、使用者標識、進程狀態、調度參數、現場資訊、家族聯絡、程式地址、當前開啟檔案、訊息佇列指標、資源使用方式、進程隊列指標。
8.進程由兩部分組成,即進程式控制制塊和程式,其中程式包括代碼和資料等。進程式控制制塊處於作業系統空間,程式屬於使用者空間。
9.進程的程式(代碼和資料)被稱為進程映像。
10.系統開銷一般是指運行作業系統程式、對系統進行管理所花費的時間和空間。
11.從作業系統角度將進程分為系統進程和使用者進程。系統進程屬於OS,也稱為守護(daemon)進程,優先順序一般高於使用者進程。。啟動並執行應用程式為使用者進程。
12.線程又稱為輕進程,是進程內的一個相對獨立的執行流。一個進程可以包含多個線程,這些線程執行同一程式中的相同程式碼片段或不同程式碼片段,共用資料區和堆。一般認為,進程是資源的分配單位,線程是CPU的調度單位。
13.與進程相比,線程有如下優點:
(1)環境切換速度快:由同一進程中的一個線程切換到另一個線程只需改變寄存器和棧,包括程式和資料在內的地址空間不變。
(2)系統開銷小:建立線程比建立進程所需完成的工作少,因而對於客戶請求,伺服器動態建立線程比動態建立進程具有更高的響應速度。
(3)通訊容易:由於同一進程中的多個線程的地址空間共用,一個線程寫到資料空間的資訊可以直接被該進程中的另一線程讀取,方便快捷。
14.線程式控制制塊是標誌線程存在的資料結構,其中包含系統對線程進行管理所需要的全部資訊:線程標識、線程狀態、調度參數、現場(通用寄存器、指令寄存器、使用者棧指標)、連結指標。線程式控制制塊可能屬於作業系統空間,也可能屬於使用者進程空間。
15.線程有兩種實現方式:在目態實現的使用者層級線程,在管態實現的核心層級線程
16.引入多線程程式設計的原因
(1)某些應用具有內在的多個控制流程結構,這些控制流程具有合作性質,需要共用記憶體。採用多線程易於對問題建模,從而得到最自然的解決演算法。
(2)在需要多控制流程的應用中,多線程比多進程在速度上具有更大優勢。統計測試結果表明,線程的建立速度比進程的建立速度快100倍,進程內線程間切換速度與進程間的切換速度也有數量級之差。
(3)採用多線程可以提高處理器與裝置之間的並行性。在單控制流程的情形下,啟動裝置的進程進入核心後將被阻塞,此時該進程的其他代碼也不能執行。
(4)在有多個處理器的硬體環境中,多線程可以並存執行,既可提高資源使用率,又可提高進程推進速度。
當然應該記住,採用多線程也是有條件的:同一進程中的多個線程具有相同的代碼和資料,這些線程之間或者是合作的(執行代碼的不同部分),或者是同構的(執行相同的代碼)。
17.在Linux中,進程與線程在系統內部具有統一的表示:線程是與其父進程具有相同地址空間的進程。fork用於為子進程建立一個具有全新內容相關的獨立的地址空間。而clone並不產生新的地址空間,子進程共用父進程的地址空間。clone為應用程式提供細粒度的共用成分控制。
18.在windows 2000/XP中,線程也被作為對象管理,每個進程中至少包含一個線程,線程是核心調度的基本單位。每個線程包括兩個棧:系統棧和使用者棧。當進程中所有線程終止時,進程終止。
19.中斷可以分為兩大類:強迫性中斷和自願性中斷。
20.作業系統可見的線程是系統級線程,如果線程是在使用者級實現的,作業系統實際調度的實體仍然是進程。
21.處理器調度(進程調度)演算法:先到先服務演算法(FCFS)、最短作業優先演算法(SJF)、最短剩餘時間優先演算法(SRTN)、最高響應比優先演算法(HRN)、最高優先數優先演算法(HPF)、迴圈輪轉演算法)(Round Robin,RR)、分類排隊演算法(MLQ)、反饋排隊演算法(FB)
22.即時調度演算法:最早截止期優先調度(EDF)、速率單調調度(RMS)。
23.兩個進程同時對一個變數進行操作產生的錯誤與進程的推進速度有關,稱為與時間有關的錯誤。
24.共用變數:兩個或以上進程均需訪問的變數,又稱為公開變數。
25.訪問共用變數的程式段稱為臨界區,也稱為臨界段。
26.一次只允許一個進程使用的資源稱為臨界資源。
27.兩個或兩個以上的進程不能同時進入關於同一組共用變數的臨界區,否則可能發生與時間有關的錯誤,這種現象稱為進程互斥。
28.臨界區管理應滿足3個正確性原則:互斥性、進展性、有限等待性。
29.不進入等待狀態的等待稱為忙式等待。忙式等待空耗處理器資源,因而是低效的。
30.進程互斥的實現:
(1)軟體方法:Dekker演算法、Peterson演算法、Lamport麵包店演算法、Eisenberg-Mcguire演算法
(2)硬體方法:測試並設定指令(test and set)、交換指令(swap)、開關中斷
31.一組進程,為了協調推進速度,在某些點處需要相互等待或者喚醒,進程間這種相互制約的關係稱為進程同步,簡稱同步。顯然進程同步現象僅發生在相互有邏輯關係的進程之間,而進程互斥可能發生在任意兩個進程之間。
32.一組進程,如果他們單獨不能正常執行,但是並發卻可以正常執行,這種現象稱為進程合作。
33.用於實現進程間同步的工具稱為同步機制,又稱為同步設施。
34.同步機制:訊號量與PV操作、條件臨界區、管程。適用於單一處理器系統及具有公用記憶體的多處理器系統。
35.一段不可間斷執行的程式稱為原語。P操作和V操作被定義為原語。因為P操作和V作業碼長度和執行時間都很短,實現時通常採用開關中斷的方法。
36.適用於分布式系統的同步機制有:通訊順序進程、會合、分布式進程、遠端程序呼叫。
37.進程之間的互斥、同步及資訊交換統稱為進程通訊(IPC)。
38.進程通訊主要有兩種模式:共用記憶體模式和訊息傳遞模式。訊息傳遞模式分為直接方式和間接方式。直接方式有對稱形式和非對稱形式,有緩衝途徑和無緩衝途徑。間接方式又稱信箱方式。
39.Linux進程通訊:(1)共用記憶體:共用儲存區建立、共用儲存區的附接、共用儲存區的分離;(2)signal、pipe、socket。
40.Windows 2000/XP的並發控制機制都針對線程,而不是進程:訊號量、互斥鎖、事件、臨界區。對於訊號量、互斥鎖、時間三種同步對象,提供了WaitForSingleObject和WaitForMultipleObject。
41.一組進程中每個進程均等待此組進程中其他進程所佔有的、因而永遠無法得到的資源,這種現象稱為進程死結,簡稱死結。
42.死結的類型:競爭資源、進程通訊、其他原因。
43.死結的條件:資源獨佔、不可剝奪、保持申請、迴圈等待。若且唯若四個條件同時滿足,死結才會發生,只要破壞一個條件即可。
44.死結定理:S為死結狀態的充分必要條件是S的資源分派圖不可完全約簡。
45.更一般的死結:一組進程中的每個進程,均無限期地等待這組進程中的其他進程才能引發的事件,稱為死結。通訊死結不能採用前面介紹的預防策略(靜態)或避免策略(動態),可以採用逾時技術。
46.當等待時間給進程的推進和響應帶來明顯的影響時,就稱發生進程饑餓。當饑餓到一定程度的進程所賦予的任務即使完成也不再具有實際意義,稱該進程被餓死。在忙式等待條件下發生的饑餓稱為活鎖。
47.死結在絕大多數系統中都採用視而不見的“鴕鳥演算法”,只在Dijkstra設計並實現的THE系統中採用了避免死結的銀行家演算法。
48.虛擬儲存管理之所以能夠工作,是基於局部性原理,包括時間上(迴圈)和空間上(程式順序執行)的局部性。
49.頁面置換演算法,又稱淘汰演算法:最佳演算法(OPT)、先進先出演算法(FIFO),最近最少使用演算法(LRU)、最近不用的先淘汰(NUR)、最不經常使用演算法(LFU)、最頻繁使用演算法(MFU)、二次機會演算法、時鐘演算法、改進時鐘演算法
50.磁碟引臂調度演算法:先到先服務演算法(FCFS)、最短尋找時間優先演算法(SSTF,存在磁軌歧視)、掃描演算法、LOOK演算法(電梯演算法)、迴圈掃描演算法、迴圈LOOK演算法、N步掃描和凍結掃描演算法
51.處理資料到達速度和離去速度不一致而採用的技術稱為緩衝。
52.網路OS各台電腦可以運行不同的OS,而分布式OS的各電腦運行同一OS。網路OS以共用檔案方式進行通訊,分布式OS以訊息方式通訊。網路OS主要提供通訊和資訊資源共用服務,分布式OS以計算加速和系統可靠性作為主要目標。
53.忙式等待鎖稱為自旋鎖。
54.資料存放區速度難以滿足微處理器的峰值計算速度,這就是所謂的記憶體牆(memory wall)效能瓶頸問題。
作業系統筆記