OS基礎複習

一、線程/進程管理

作業調度:
1 先來先服務:按作業的到達時間進行調度,先到達先調度。
2 最短作業優先:優先執行所需時間最短的作業。
3 優先數:優先執行優先級高的作業。
4 最高響應比優先:優先執行響應比高的作業。響應比=(等待時間+計算時間)/計算時間。

進程調度:

1 先來先服務:先執行最先進入就緒隊列的進程。
2 最短優先:優先執行所需時間最短的進程。
3 最高響應比:優先執行響應比高的進程。響應比=(等待時間+要求服務的時間)/要求服務的時間。
4 優先級:優先執行優先級高的進程。
5 時間片輪轉:按照先進先出的規則給進程分配時間片,時間片結束後不管有沒有執行完,都將執行下一進程。
6 多級反饋隊列:多個就緒隊列,每個隊列的優先級不同、時間片也不同,優先級高的隊列時間片短。進程先進入第一隊列,如果在規定的時間片內沒執行完則進入第二隊列,依此類推。

產生死鎖的原因主要是:
(1)因爲系統資源不足。
(2)進程運行推進的順序不合適。
(3)資源分配不當等。

產生死鎖的四個必要條件:
(1)互斥條件:一個資源每次只能被一個進程使用。
(2)請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
(3)不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
(4)循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關係。

避免死鎖:
死鎖的預防是通過破壞產生條件來阻止死鎖的產生,但這種方法破壞了系統的並行性和併發性。
死鎖產生的前三個條件是死鎖產生的必要條件,也就是說要產生死鎖必須具備的條件,而不是存在這3個條件就一定產生死鎖,那麼只要在邏輯上回避了第四個條件就可以避免死鎖。
避免死鎖採用的是允許前三個條件存在,但通過合理的資源分配算法來確保永遠不會形成環形等待的封閉進程鏈,從而避免死鎖。該方法支持多個進程的並行執行,爲了避免死鎖,系統動態的確定是否分配一個資源給請求的進程。
預防死鎖:具體的做法是破壞產生死鎖的四個必要條件之一
死鎖避免:銀行家算法。

進程與線程

進程是資源分配的基本單位;線程是系統調度的基本單位。
平時我們寫的程序都是作爲線程運行的;進程可以看做是包括一系列線程和資源的統稱;一個進程至少包括一個線程(主線程,進入main函數時產生的);在其中可以創建其它線程,也可以不創建。

同一進程間的線程究竟共享哪些資源呢,而又各自獨享哪些資源呢?

共享的資源有
1.堆:由於堆是在進程空間中開闢出來的,所以它是理所當然地被共享的。(16位平臺上分全局堆和局部堆,局部堆是獨享的)
2.全局變量:它是與具體某一函數無關的,所以也與特定線程無關,因此也是共享的。
3.靜態變量:雖然對於局部變量來說,它在代碼中是聲明在某一函數中的,但是其存放位置和全局變量一樣,存於.bss和.data段,是共享的。
4.文件等公用資源:這個是共享的,使用這些公共資源的線程必須同步。Windows提供了幾種同步資源的方式,包括信號、臨界區、事件和互斥量。

獨享的資源有
標識線程的線程ID,一組寄存器值(線程中存放的是副本),線程自己的棧,調度優先級和策略,信號屏蔽字,errno變量,線程私有數據

二、存儲器管理

分頁式:將一個進程的邏輯地址空間分爲若干個大小相等的片,稱爲頁面或頁。相應地,內存空間分成若干個物理塊,頁和塊的大小相等。可將用戶程序的任一頁放在內存的任一塊中,實現了離散分配。
地址結構:頁號+頁內地址。通過頁表找物理地址(地址映射)。
快表(TLB):緩存頁表,加快地址轉換。

分段式:將用戶程序地址空間分成若干個大小不等的段,每段可以定義一組相對完整的邏輯信息。存儲分配時,以段爲單位,段與段在內存中可以不相鄰接,也實現了離散分配。
主要是爲了滿足用戶編程的需要:1)方便編程。2)信息共享:對程序和數據共享時,是以信息的邏輯單位爲基礎的,信息的邏輯單位即是段。3)信息保護:對信息的邏輯單位進行保護。4)動態增長:分段可以很好的解決數據動態的增長。5)動態鏈接:可以將需要運行的段鏈接起來調入內存運行。
地址結構:段號+段內地址。通過段表實現地址映射。

分頁系統能有效的利用內存,分段系統則能很好的滿足用戶需要。

段頁式:是分段和分頁原理的結合,即先將用戶程序分成若干個段,再把每個段分成若干個頁,每個段有個段名。地址結構:段號+段內頁號+頁內地址。利用段表和頁表實現地址映射。

程序的局部性原理:
1)時間局部性。如果程序中的某條指令一旦執行,則不久該指令可能再次執行。如果某數據被訪問過,則不久該數據可能再次被訪問。典型原因就是程序中存在大量的循環操作。
2)空間局部性。一旦程序訪問了某個存儲單元,在不久以後,其附近的存儲單元也將被訪問,即程序在一段時間內所訪問的地址,可能集中在一定的範圍之內。典型情況便是程序的順序執行。

虛擬存儲器:允許將一個作業分多次調入內存。1)請求分頁系統。2)請求分段系統。

頁面置換算法:
1 先進先出:淘汰最早進入cache的信息塊。會產生belady現象:分配的物理塊增多,缺頁中斷次數反而增多。
2 最近最久未使用:淘汰近期使用頻率最低的信息塊。
3 隨機替換:用隨機數發生器隨機產生一個信息塊號,然後淘汰掉。
4 優化替換:此方法必須先執行一次程序,然後根據cache替換情況對接下來的信息塊進行替換。
5 最佳置換:淘汰規則是將以後永遠不會用到或者最長時間不會用到的信息塊淘汰掉。此方法能夠最大限度的減少缺頁率,但是這是一種理想的方法,現實是無法實現的,只能作爲其他置換算法的一個衡量標準。

 

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