本意用於考研復試,以下是博主自己整理,博主是大四本科生,不能保證內容完全正確,請辯證地看,如果有問題可以在評論區指出我再修改。
整理不易,我就不掛個二維碼請游客付費了,如果可以的話,麻煩高抬貴手,點一下右下角的推薦吧!
1、什么是進程(Process)和線程(Thread)?有何區別?
進程是一個能獨立運行的活動實體,進程是系統進行資源分配和調度的一個獨立單位。線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。同一個進程中的多個線程之間可以並發執行。
進程與應用程序的區別在於應用程序作為一個靜態文件存儲在計算機系統的硬盤等存儲空間中,而進程則是處於動態條件下由操作系統維護的系統資源管理實體。
2、操作系統的特征
並發、共享、虛擬、異步
並行是指兩個或多個事件在同一時刻發生。
並發性是指兩個或多個事件在同一時間間隔內發生.
3、三態、五態、七態
三態:就緒、執行、阻塞(I/O請求、申請緩沖失敗)
五態:就緒、執行、阻塞、創建、終止
七態:就緒、執行、阻塞、創建(用戶登陸、提供服務、作業調度)、終止、掛起、激活
4、中斷與異常
中斷是指計算機在執行期間,系統內發生任何非尋常的或非預期的急需處理事件,使得CPU暫時中斷當前正在執行的程序而轉去執行相應的事件處理程序,待處理完畢后又返回原來被中斷處繼續執行或調度新的進程執行的過程。
異常是指進程在運行時發生了某種異常事件,使程序無法繼續運行。( 越界錯,非法指令、除數0、越權訪問)
5.線程同步幾種方式。
(1)臨界區(CriticalSection)
當多個線程訪問一個獨占性共享資源時,可以使用臨界區對象。擁有臨界區的線程可以訪問被保護起來的資源或代碼段,其他線程若想訪問,則被掛起,直到擁有臨界區的線程放棄臨界區為止。具體應用方式:
(2)事件(Event)
事件機制,則允許一個線程在處理完一個任務后,主動喚醒另外一個線程執行任務。比如在某些網絡應用程序中,一個線程如A負責偵聽通信端口,另外一個線程B負責更新用戶數據,利用事件機制,則線程A可以通知線程B何時更新用戶數據。
(3)互斥量(Mutex)
互斥對象和臨界區對象非常相似,只是其允許在進程間使用,而臨界區只限制與同一進程的各個線程之間使用,但是更節省資源,更有效率。
(4)信號量(Semphore)
當需要一個計數器來限制可以使用某共享資源的線程數目時,可以使用“信號量”對象。Semaphore類對象保存了對當前訪問某一個指定資源的線程的計數值,該計數值是當前還可以使用該資源的線程數目。如果這個計數達到了零,則所有對這個Semaphore類對象所控制的資源的訪問嘗試都被放入到一個隊列中等待,直到超時或計數值不為零為止。
6.用戶態和核心態的區別。
當一個任務(進程)執行系統調用而陷入內核代碼中執行時,我們就稱進程處於內核運行態(或簡稱為內核態)。當進程在執行用戶自己的代碼時,則稱其處於用戶運行態(用戶態)。運行在用戶態下的程序不能直接訪問操作系統內核數據結構和程序。
1)用戶態切換到內核態的3種方式
a. 系統調用
這是用戶態進程主動要求切換到內核態的一種方式,用戶態進程通過系統調用申請使用操作系統提供的服務程序完成工作,而系統調用的機制其核心還是使用了操作系統為用戶特別開放的一個中斷來實現
b. 異常
當CPU在執行運行在用戶態下的程序時,發生了某些事先不可知的異常,這時會觸發由當前運行進程切換到處理此異常的內核相關程序中,也就轉到了內核態,比如缺頁異常。
c. 外圍設備的中斷
7.死鎖的概念
死鎖定義為一組相互競爭系統資源或進行通信的進程間的“永久”阻塞。當一組進程中的每個進程都在等待某個事件(典型的情況是等待所請求的資源釋放),而只有在這組進程中的其他被阻塞的進程運行完畢后才可以釋放該事件,這時就稱這組進程發生死鎖。因為沒有事件能夠被觸發,所以死鎖是永久性的。
8. 導致死鎖的四個必要條件。
1)互斥。一次只有一個進程可以使用一個資源。其他進程不能訪問已分配給其他進程的資源。
2)占有且等待。當一個進程等待其他進程時,繼續占有已經分配的資源。
3)不可搶占。不能強行搶占進程已占有的資源。
4)循環等待。存在一個封閉的進程鏈,使得每個進程至少占有此鏈中下一個進程所需要的一個資源。
9. 處理死鎖的方式。
1)死鎖預防
2)死鎖避免
銀行家算法:首先需要定義狀態和安全狀態的概念。系統的狀態是當前給進程分配的資源情況。(狀態包含兩個向量Resource(系統中每種資源的總量)和Available(未分配給進程的每種資源的總量)及兩個矩陣Need(表示進程對資源的需求)和Allocation(表示當前分配給進程的資源)。)安全狀態是指至少有一個資源分配序列不會導致死鎖。當進程請求一組資源時,假設同意該請求,從而改變了系統的狀態,然后確定其結果是否還處於安全狀態。如果是,同意這個請求;如果不是,阻塞該進程直到同意該請求后系統狀態仍然是安全的。
3)死鎖檢測
它不限制資源訪問或約束進程行為,只要有可能,被請求的資源就被授權給進程。操作系統周期性地執行一個算法檢測前面的循環等待的條件。
10.進程調度算法。(周轉時間=程序結束時間-開始服務時間,帶權周轉時間=周轉時間/ 要求服務時間)
(1)先來先服務和短作業(進程)優先調度算法
(2)高優先權優先調度算法
非搶占式優先權算法
搶占式優先權調度算法(高性能計算機操作系統)
(3)高響應比優先調度算法
(4)基於時間片的輪轉調度算法
(5)多級反饋隊列調度算法
其實施過程如下:
a.設置多個就緒隊列,並為各個隊列賦予不同的優先級。在優先權越高的隊列中,為每個進程所規定的執行時間片就越小。
b.當一個新進程進入內存后,首先放入第一隊列的末尾,按FCFS原則排隊等候調度。 如果他能在一個時間片中完成,便可撤離;如果未完成,就轉入第二隊列的末尾,在同樣等待調度…… 如此下去,當一個長作業(進程)從第一隊列依次將到第n隊列(最后隊列)后,便按第n隊列時間片輪轉運行。
c.僅當第一隊列空閑時,調度程序才調度第二隊列中的進程運行;僅當第1到第(i-1)隊列空時, 才會調度第i隊列中的進程運行,並執行相應的時間片輪轉。
d.如果處理機正在處理第i隊列中某進程,又有新進程進入優先權較高的隊列, 則此新隊列搶占正在運行的處理機,並把正在運行的進程放在第i隊列的隊尾。
11.生產者-消費者問題,
兩個進程共享一個公共的固定大小的緩沖區。其中一個是生產者,用於將消息放入緩沖區;另外一個是消費者,用於從緩沖區中取出消息。問題出現在當緩沖區已經滿了,而此時生產者還想向其中放入一個新的數據項的情形,或者當緩沖區空時,消費者還要從中取出數據項的問題。為了保證這種情況不會發生,我們通常使用信號量和消息傳遞來解決生產者-消費者問題。
12.使用虛擬內存的好處:
1、在內存中保留多個進程。由於對任何特定的進程都僅僅裝入它的某些塊,因此就有足夠的空間來放置更多的進程。
2、進程可以比內存的全部空間還大。
13. 內存連續分配方式采用的幾種算法及各自優劣。
(1)首次適應算法。使用該算法進行內存分配時,從空閑分區鏈首開始查找,直至找到一個能滿足其大小需求的空閑分區為止。然后再按照作業的大小,從該分區中划出一塊內存分配給請求者,余下的空閑分區仍留在空閑分區鏈中。
(2)循環首次適應算法。該算法是由首次適應算法演變而成的。在為進程分配內存空間時,不再每次從鏈首開始查找,而是從上次找到的空閑分區開始查找,直至找到一個能滿足需求的空閑分區,並從中划出一塊來分給作業。該算法能使空閑中的內存分區分布得更加均勻,缺點是將會缺乏大的空閑分區。
(3)最佳適應算法。該算法總是把既能滿足需求,又是最小的空閑分區分配給作業。
為了加速查找,該算法需求將所有的空閑區按其大小排序后,以遞增順序形成一個空白鏈。這樣每次找到的第一個滿足需求的空閑區,必然是最優的。孤立地看,該算法似乎是最優的,但事實上並不一定。因為每次分配后剩余的空間一定是最小的,缺點是在存儲器中將留下許多難以利用的小空閑區。同時每次分配后必須重新排序,這也帶來了一定的開銷。
(4)最差適應算法。最差適應算法中,該算法按大小遞減的順序形成空閑區鏈,分配時直接從空閑區鏈的第一個空閑分區中分配(不能滿足需要則不分配)。非常顯然,如果第一個空閑分區不能滿足,那么再沒有空閑分區能滿足需要。這種分配方法初看起來不太合理,但他也有非常強的直觀吸引力:在大空閑區中放入程式后,剩下的空閑區常常也非常大,於是還能裝下一個較大的新程式。
14. 分段分頁方式的比較各自優缺點。
分段和分頁其實都是一種對地址的划分或者映射的方式。
1)頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;段是信息的邏輯單位,它含有一組其意義相對完整的信息(比如數據段、代碼段和堆棧段等)。
2)頁的大小固定且由系統確定,段的長度卻不固定,決定於用戶所編寫的程序
3)分頁的作業地址空間是一維的,程序員只須利用一個記憶符(線性地址的16進制表示),。分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名(比如數據段、代碼段和堆棧段等),又需給出段內地址。
4)頁和段都有存儲保護機制。但存取權限不同:段有讀、寫和執行三種權限;而頁只有讀和寫兩種權限
15.外存分配的幾種方式,及各種優劣。
(1) 連續分配
原理:創建文件時,分配一組連續的塊;FAT(文件分配表)中每個文件只要一項,說明起始塊和文件長度。對於順序文件有利。
優點:1.簡便。適用於一次性寫入操作。2.支持順序存取和隨機存取,順序存取速度快。3.所需的磁盤尋道次數和尋道時間最少。(因為空間的連續性,當訪問下一個磁盤塊時,一般無需移動磁頭,當需要移動磁頭時,只需要移動一個磁道。)
缺點:1.文件不能動態增長。(可能文件末尾處的空塊已經分配給了別的文件)2.不利於文件的插入和刪除。3.外部碎片問題。(反復增刪文件后,很難找到空間大小足夠的連續塊,需要進行緊縮。)4.在創建文件時需聲明文件大小。
(2)鏈式分配
原理:一個文件的信息存放在若干個不連續的物理塊中,各塊之間通過指針連接,前一個物理塊指向下一個物理塊。fat中每個文件同樣只需要一項,包括文件名、起始塊號和最后塊號。任何一個自由塊都可以加入到鏈中。
優點:1.提高磁盤的空間利用率,不存在外部碎片問題。2.有利於文件的插入和刪除。3.有利於文件的動態擴充。
缺點:1.存取速度慢,一般只適用於信息的順序存取,不適於隨機存取。2.查找某一塊必須從頭到尾沿着指針進行。3.可靠性問題,如指針出錯。4.更多的尋道次數和尋道時間。5.鏈接指針占一定的空間,將多個塊組成簇,按簇進行分配而不是按塊進行分配。(增加了磁盤碎片)
(3)索引分配
原理:每個文件在FAT中有一個一級索引,索引包含分配給文件的每個分區的入口。文件的索引保存在單獨的一個塊中,FAT中該文件的入口指向這一塊。
優點:1.保持了鏈接結構的優點,又解決了其缺點:按快分配可以消除外部碎片。按大小可改變的分區分配可以提高局部性。索引分配支持順序訪問文件和直接訪問文件,是普遍采用的一種方式。2.滿足了文件動態增長,插入刪除的要求。(只要有空閑塊)3.能充分利用外存空間。
缺點:1.較多的尋道次數和尋道空間。2.索引表本身帶來了系統開銷,如:內外存空間、存取時間。
(4)多重索引
原理:首先,多重索引也是索引分配的一種,只不過它是將一個大文件的所有索引表(二級索引)的地址放在另一個索引表(一級索引)中。
16同步與互斥
互斥:是指散布在不同任務之間的若干程序片斷,當某個任務運行其中一個程序片段時,其它任務就不能運行它們之中的任一程序片段,只能等到該任務運行完這個程序片段后才可以運行。
同步:是指散布在不同任務之間的若干程序片斷,它們的運行必須嚴格按照規定的某種先后次序來運行,這種先后次序依賴於要完成的特定的任務。