考研複試操作系統面試題(二)-進程管理

寫作目的:爲了應對考研複試中的面試,我整理了導師可能提問的地方,力求用口語化的語言描述出來。

這只是一部分,陸續還有操作系統的其它章節,還會推出數據結構、計算機網絡、數據庫的複試題整理

思維導圖在我的processon。如果對你有幫助就打賞一下吧。

https://www.processon.com/view/link/5e79c7ede4b06b852ff3a8e2

目錄

進程的定義是什麼?

進程的狀態與狀態之間的轉換

進程間的三種通訊方式

管道通信的特點

線程的定義是什麼?

線程與進程的區別

線程的兩種實現方式

三種多線程模型

處理機的三級調度

三級調度之間的聯繫

爲什麼要進行處理機調度

不能進行進程調度與切換的情況

應該進行進程調度和切換的情況

經典的調度算法的特點

概念:臨界資源、臨界區、互斥、同步

同步機制遵循的原則

實現臨界區互斥的基本方法

什麼是管程

死鎖的定義和形成的原因

描述三種死鎖處理策略

比較三種策略的優缺點

如何預防死鎖

描述銀行家算法

死鎖的解除方法


進程的定義是什麼?

進程是進程實體運行的過程,是系統資源分配和調度的獨立單位。進程實體是由PCB塊、相關的數據段、程序段三部分組成。

進程的狀態與狀態之間的轉換

進程有 新建、就緒、運行、阻塞、終止五個狀態。

新建可以到就緒狀態,就緒可以到運行狀態,運行可以到阻塞狀態也可以就緒狀態

阻塞可以到就緒狀態但不能直接到運行狀態。

當進程等待某一資源到來是就由就緒狀態變成了阻塞狀態,這是後剝奪了處理機的使用權,但等待的資源得到滿足之後,就由阻塞狀態變成了就緒狀態。

進程間的三種通訊方式

共享存儲、消息傳遞、管道通信

共享存儲:通信進程之間存在一塊可以直接訪問的共享空間,通過對這塊空間進行讀寫操作實現進程之間的信息交換。操作系統會爲進程提供可共享使用的存儲空間和同步互斥工具。

消息傳遞:進程間的數據交換以格式化的消息爲單位,操作系統提供發送消息和接受消息的兩個原語進行數據交換。有分爲直接通信方式和間接通信方式。

管道通信:管道是指用於連接一個讀進程和一個寫進程以實現他們之間的通信的一個共享文件。寫進程向管道寫入數據,讀進程向管道讀取數據,所以管道機制必須提供:互斥、共享、確定對方存在的功能。

管道通信的特點

1、管道大小有限制,一般爲4kb。2、讀進程可能比寫進程快。發生這種情況,讀進程被默認阻塞。

3、半雙工通信,某一時刻是能單向傳輸,如果要實現兩個進程雙向通信,只能申請兩個管道。

線程的定義是什麼?

線程可以理解爲輕量級的進程,它是基本的CPU執行單元。由線程id、程序計數器、寄存器集合、和堆棧組成。線程不獨立擁有資源。

線程與進程的區別

1、調度。線程是CPU調度的基本單位。

2、資源。進程是資源分配的基本單位,線程不獨立擁有資源,但可以訪問隸屬進程的資源。

3、併發性。引入線程就是爲了獲得更好的併發性。

4、開銷。進程的創建、撤銷和切換都要有資源的分配和回收,開銷遠大於線程的切換。

5、地址空間和其它資源。進程的地址空間都是獨立的,而線程可以共享隸屬進程的地址空間和資源。

6、通信方面。進程之間通信需要用進程通信手段實現,而線程間通信可以直接讀寫數據段。

線程的兩種實現方式

兩種:用戶級線程、內核級線程

用戶級線程中,線程的管理都在應用程序中進行,系統會提供一個多線程的函數庫,系統感知不到用戶定義的多線程的存在。

內核級線程:線程的管理都在操作系統中完成,用戶只有一個到內核級線程的編程接口。

三種多線程模型

多對一:多個用戶級線程映射到一個內核級線程上。優點是線程管理在用戶空間,效率高。缺點是一個線程阻塞,所有的線程都會阻塞。

一對一:一個用戶級線程對應一個內核級線程。優點是一個線程阻塞之後,其它線程還可以繼續運行,提高了效率。缺點是開銷比較大。

多對多線程。是一個折中。

處理機的三級調度

作業調度(高級調度)、內存調度(中級調度)、進程調度(低級調度)。

高級調度:把作業從外存中取出,給它分配內存和其它資源,讓它稱爲一個進程,是其能具備競爭處理機的條件。它是主存和輔存之間的調度。一個作業只調入一次調出一次。

中級調度:作用是提高內存利用率和系統吞吐量。將那些不能運行的進程掛起到外存,如果他們已經具備運行條件,有稍微有些空閒,由中級調度決定外存上的進程重新調入內存,並修改爲就緒態。

進程調度:是操作系統最基本的調度。按照某種方法和策略從就緒隊列中選取一個進程,將處理機分配給它。調度頻率非常高。

三級調度之間的聯繫

①作業調度爲進程活動做準備,進程調度使進程被執行,中級調度將不能運行的進程掛起,將具備條件的進程設置就緒。②作業調度、內存調度、進程調度頻率遞增;③進程調度使最基本的不能缺少。

爲什麼要進行處理機調度

如果沒有處理機調度,意味着當前進程運行完之後,下一個進程才能執行,進程運行的時候通常會等待IO設備,就造成了出來及資源的浪費。有了處理機調度,可以在IO等待的時候,讓處理機處理其它的就緒進程,提高了系統效率。

不能進行進程調度與切換的情況

1、處理中斷的過程中;2、進程在操作系統內核臨界區;3、其它完全需要屏蔽中斷的原子操作過程中。

應該進行進程調度和切換的情況

1、發生引起調度的條件且當前進程無法繼續運行下去

2、中斷處理結束或陷入處理結束,返回被中斷進程的用戶態程序執行線程,若置上請求調度標誌,可以馬上進行調度和切換。

經典的調度算法的特點

1、先來先服務。有利於CPU繁忙作業,不利於IO繁忙作業。有利於長作業,不利於短作業。

2、短作業優先。不利於長作業,未考慮作業的緊迫程度;平均等待時間和平均週轉時間最少。

3、優先級調度算法。可以設置緊迫程度、參照以下原則設計:系統進程大於用戶進程、交互進程大於非交互進程、IO進程大於計算進程。

4、高響應比優先算法。克服飢餓,兼顧了場作業。

5、時間片輪轉。用於分時系統,需要選擇合適大小的時間片。

6、多級反饋隊列調度算法。優點如下:終端型作業,短作業優先;短批處理作業,週轉時間短;長批處理作業,經過前幾個隊列得到部分執行,不會長期不執行。

概念:臨界資源、臨界區、互斥、同步

臨界資源:每次只允許一個進程訪問的資源稱爲臨界資源。

臨界區:訪問臨界資源的那段代碼稱爲臨界區

同步:直接制約關係,兩個進程在時間上有先後關係。

互斥:簡介制約關係,當一個進程進入臨界區,另一個必須等待。

同步機制遵循的原則

空閒讓進、忙則等待、有限等待、讓權等待。

實現臨界區互斥的基本方法

單標誌法、雙標誌先檢查、雙標誌後檢查、皮特森算法。硬件方法。信號量法。

什麼是管程

管程是由一組數據及定義在這組數據上的對數據的操作組成的軟件模塊,這組操作能初始化並改變管程中的數據和同步進程。

管程的組成:局部於管程的數據,對數據結構的操作,對局部於管程的數據設置的初始化語句。

管程的基本特性:局部於管程的數據只能被局部與管程的過程訪問;一個進程只有調用管程內的過程才能進入管程訪問共享數據;每次就允許一個進程在管程內執行某內部操作。

死鎖的定義和形成的原因

死鎖是多個進程因競爭資源而造成的一種僵局,沒有外力作用,都無法繼續執行。

原因:對不可剝奪的資源你的競爭;進程的非法順序推進;滿足死鎖產生的必要條件。

死鎖產生的必要條件:請求保持、不可剝奪、循環等待、互斥條件

描述三種死鎖處理策略

死鎖預防、避免死鎖、死鎖的檢測和解除

比較三種策略的優缺點

 

如何預防死鎖

破壞死鎖形成的四個必要條件之一就可以。

描述銀行家算法

進程首次申請資源,測試最大申請量(max),如果系統滿足就按照當前申請量(now)分配,否則就推遲。再次提起申請時,測試本次申請量加已經分配的資源量(now2+now)是否大於最大申請量max,如果大於就推遲分配,如果小於等於就測試當前的申請量是否大於系統空閒資源量,如果大於就推遲分配,否則按照當前申請量(now2)分配.

死鎖的解除方法

先用資源換分配圖判定死鎖。通過撤銷某死鎖進行、回退進程、剝奪進程資源法可以解除死鎖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章