操作系統相關題目總結
題目一:進程和線程區別?
1.進程是資源分配的基本單位,也是調度運行的基本單位;線程是調度的基本單位。
2.進程有獨立的虛擬地址空間。父子進程共享文件表,但不共享用戶地址空間。
*優點:一個進程崩潰后不會對其他進程產生影響。
*缺點:進程間共享數據變得困難,必須使用顯式的IPC機制。
*進程虛擬地址空間包括:代碼段、堆棧段(臨時數據:如函數參數、返回地址和局部變量)、數據段(包括全局變量)、堆(動態分配的內存)等等。
3.線程運行在進程的上下文中,所有運行在一個進程內的線程共享該進程的整個虛擬地址空間:代碼、數據、堆、共享庫和打開文件。
*每個線程有自己的線程上下文:一個線程ID、棧、棧指針、程序計數器、通用目的的寄存器和條件嗎。
4.創建、切換和終止開銷小:線程的上下文比進程的上下文小很多,所以線程的創建、上下文切換和終止要比進程快很多。
*線程間共享數據容易,因為多個線程共享進程地址空間,但需要同步。
5.補充程序和進程區別(選自操作系統概念第7版):
*程序本身不是進程,程序只是被動實體,如存儲在磁盤上的一系列指令的文件內容(常被成為可執行文件)
*進程是活動實體,它有一個程序計數器來表示下一個要執行的命令和相關資源集合。
*當一個可執行文件被裝入內存時,一個程序才成為進程。
*雖然多個進程可以與統一程序相關,但是它們被當做兩個獨立的執行序列,都是獨立的進程,雖然文本段相同,但是數據段、堆、堆棧段都不同。
題目二:進程間通信方式?
1.管道
2.消息隊列
3.共享內存
4.套接字
5.信號量
6.信號:異步通信方式,軟件層次上對中斷機制的一種模擬。
題目三:進程的組成部分和狀態?
(一)進程的組成部分:進程控制塊、程序段和數據段。
(二)進程的狀態(注意狀態之間切換條件):
1.三種基本狀態:運行態、就緒態、阻塞態。
2.掛起狀態(從內存換出到磁盤):當內存中的所有進程都處于阻塞態,OS把被阻塞的進程換出到磁盤中的“掛起隊列”(將進程置于掛起態,并將它轉移到磁盤),內存中釋放的空間可被調入的另一個進程使用。取哪個進程到內存執行的選擇:新創建的進程或調入一個以前被掛起的進程(傾向于這個,不會增加系統的負載)。
3.新建態和終止態。
題目四:死鎖的條件和預防?
一 死鎖的充分必要條件:
*互斥:一次只有一個進程可以使用一個資源。
*占有且等待:當一個進程等待其他進程時,繼續占有已經分配的資源。
*不可搶占:不能強行搶占進程已占有的資源。
*環路等待:存在一個封閉的進程鏈,使每個進程至少占有此鏈中下一個進程所需要的一個資源。
前三個是死鎖的必要條件,第四個是前三個條件的潛在結果。
二 處理死鎖的基本方法:
*死鎖預防:通過設置某些限制條件,去破壞死鎖的四個條件中的一個或幾個條件,來預防發生死鎖。但由于所施加的限制條件往往太嚴格,因而導致系統資源利用率和系統吞吐量降低。
*死鎖避免:允許前三個必要條件,但通過明智的選擇,確保永遠不會到達死鎖點,因此死鎖避免比死鎖預防允許更多的并發。(例如銀行家算法)。
*死鎖檢測:不須實現采取任何限制性措施,而是允許系統在運行過程發生死鎖,但可通過系統設置的檢測機構及時檢測出死鎖的發生,并精確地確定于死鎖相關的進程和資源,然后采取適當的措施,從系統中將已發生的死鎖清除掉。
*死鎖解除:與死鎖檢測相配套的一種措施。當檢測到系統中已發生死鎖,需將進程從死鎖狀態中解脫出來。常用方法:撤銷或掛起一些進程,以便回收一些資源,再將這些資源分配給已處于阻塞狀態的進程。
題目五:內存管理技術有哪些?
1.固定分區(連續分區):將內存用戶空間劃分為多個固定大小的靜態分區,進程被裝入大于或等于自身大小的分區。
*分區的大小可以是長度都相等;或者不等,分為多個較小分區、適量中等分區,少量較大分區。
*優點:實現簡單,開銷小。
*缺點:有內部碎片,內存使用不充分;活動進程的最大數目是固定的。
2.動態分區(連續分區):分區是動態創建的,每個進程可以被裝入與自身大小相等的分區中。
*優點:沒有內部碎片;可以充分使用內存。
*缺點:有外部碎片,由于需要壓縮外部碎片,處理器利用率低。
3.簡單分頁:內存被劃分為許多大小相等的頁框;每個進程被劃分成許多大小與頁框大小相等的頁;要裝入進程,需要把進程的所有頁都裝入內存中不一定連續的某些頁框中。
*優點:沒有外部碎片。
*缺點:有少量內部碎片。
4.簡單分段(段的大小不固定):每個進程被劃分成許多段;要裝入進程需要把進程包含的所有段都裝入內存中不一定連續的某些動態分區中。
*優點:沒有內部碎片,相對于動態分區,提高了內存利用率,減少了開銷。
*缺點:存在外部碎片。
5.虛擬內存分頁:除了不需要把進程的所有頁都裝入內存之外,與簡單分頁一樣;非駐留頁在以后需要時調入內存。
*優點:沒有外部碎片;巨大的虛擬地址空間。
*缺點:復雜的內存管理開銷。
6.虛擬內存分段:除了不需要把進程的所有段都裝入內存之外,與簡單分段一樣;非駐留段在以后需要時調入內存。
*優點:沒有外部碎片;巨大的虛擬地址空間;支持共享和保護。
*缺點:復雜的內存管理開銷。
題目六:分頁與分段相同點和區別?
一 相同點:兩者都采用離散分配方式,且都需要地址映射機構來實現地址變換。
二 不同點:
(1)頁時信息的物理單位,分頁是為實現離散分配方式,以消減內存的外部碎片,提高內存利用率,也就是說分頁僅僅是由于系統管理的需要而不是用戶的需要;段則是信息的邏輯單位,它含有一組其意義相對完整的信息,分段的目的是更好的滿足用戶的需要。
(2)頁的大小固定且由系統決定,在系統中只有一種大小的頁面;而段的長度不固定,決定于用戶編寫的程序,通常由編譯程序在對源程序進行編譯時,根據信息的性質來劃分。
(3)段的優點:
*信息共享和信息保護:信息共享和信息保護都是以信息的邏輯單位為基礎。
*等等。
題目七:頁面置換算法有哪幾種?
(1)最佳置換算法(OPT):選擇置換下次訪問距離當前時間最長的那些頁。
*該算法導致最少的缺頁中斷,但由于無法預知一個進程在內存的若干個頁面哪個是未來最長時間不再被訪問的,因而該算法無法實現,但是可以作為一種標準來衡量其他置換算法。
(2)最近最久未使用算法(LRU:Least Recently Used):置換內存中上次使用距離當前最遠的頁。
*LRU策略性能接近于OPT,但比較難實現(需要系統較多硬件支持,需要大量開銷)。
(3)FIFO策略:淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰。
*該算法實現簡單,但性能相對較差。
(4)時鐘策略(Clock置換算法):
1.簡單的Clock置換算法(使用位):給每一個頁框關聯一個附加位,稱為使用位。當某一頁首次裝入內存中,將該頁框的使用位設為1;當該頁隨后被訪問到時,它的使用位也為1。頁面置換算法中,用于置換的候選頁框集合被看做一個循環緩沖區,并且有一個指針與之關聯。
*過程:
~當需要置換一頁時,系統掃描緩沖區,以查找使用位被置為0的一頁框。當遇到使用位為1的頁框時,操作系統就將該位重新設置為0。
~如果所有頁框使用位都為1時,則指針在緩沖區中循環一周,把所有使用位都置0,并且停留在最初位置,置換該頁框中的頁。
2.改進的Clock置換算法(使用位+修改位):將一個頁面換出時,如果該頁已被修改過,便須將該頁重新寫回到磁盤上;如果該頁未被修改,則不必將它拷回磁盤。在改進的的Clock置換算法中,除要考慮頁面的使用情況,還需考慮置換代價。選擇頁面換出時,既要是未使用過的頁面,又要是未被修改過的頁面,把同時滿足這兩個條件的頁面作為首選淘汰頁面。