作業系統學習筆記

2021-07-17 06:02:38 字數 4818 閱讀 7621

這裡專門摘錄作業系統相關筆試題和面試題!也當作自己的乙個複習!

乙個很全的作業系統常考知識集合:

1.分段式儲存和分頁式儲存,以及段頁式儲存的區別:

★分頁是一維儲存,分段是二維的

因為分頁給出虛擬位址後,作業系統會自動劃分頁號和偏移量

而分段給出位址後,需要知道段號和偏移量,段的長度是可變的!故是二維的

★分頁和分段管理要訪問2次記憶體,而段頁式要3次

★分段不會產生內部碎片,分頁不會產生外部碎片

2.死鎖:

★死鎖產生的條件:

①程序互斥,即1個程序只用1個資源

②程序可以占有資源,並進行等待

③程序之間不能強行搶占資源

④會出現迴圈等待,即出現等待封閉鏈

★處理方法:

①死鎖預防,即將上面4個條件之一進行去除,但是去除乙個條件就會影響系統效能

③死鎖檢測:通過演算法檢測當前是否處於死鎖,若處於則進行死鎖去除,例如強制釋放等。

3.unix系統中,目錄結構採用() 

a.單級目錄結構 b.二級目錄結構 c.單純樹形目錄結構 d.帶鏈結樹形目錄結構

4.避免死鎖的乙個著名的演算法是(b) 

a.先入現出法     

b.銀行家演算法  

c.優先順序演算法    

d.資源按需分配法 

5.怎麼理解分配延遲(dispatch lantency)

a.分配器停止乙個程序到開啟另乙個程序的時間  

b. 處理器將乙個檔案寫入磁碟的時間  

c. 所有處理器占用的時間                        

d.以上都不對

解析:分派程式停止某乙個處理元使用**處理器,並分派**處理器給另乙個處理元所需的時間,稱為分派時間(dispatch latency)。

16.假定我們有3個程式,每個程式花費80%的時間進行i/o,20%的時間使用cpu。每個程式啟動時間和其需要使用進行計算的分鐘數如下,不考慮程序切換時間。  

程式編號      啟動時間                 需要cpu時間(分鐘)

1                      00:00                       3.5 

2                      00:10                       2 

3                      00:15                      1.5 

請問在多執行緒/程序環境下,系統的總響應時間是()

a.22.5           b.23.5         c.24.5         d.25.5 

解答: 多道程式設計時cpu利用率的求法: 

只有乙個程序的時候,cpu利用率肯定是20%。  

兩個程序的時候:cpu利用率是:20% + (1-20%)*20% = 36%  (在80%的io時間執行20%的cpu) 

三個程序是:36% + (1-36%)*20% = 48.8%  

其它的依次類推。 

0-10分鐘的時候,只有乙個程序1在執行。  

單程序cpu占有率是20%,所以這10分鐘內,程序1消耗了2分鐘的cpu。

程序2是0,程序3也是0  

然後在10-15分鐘內,有兩個程序在執行(1和2),雙程序的cpu利用率是36%,  

所以,這五分鐘內,cpu一共利用了1.8分鐘,平均分給每個程序,是0.9分鐘。  

此時,程序1已經占用了cpu 2.9分鐘,還需要0.6分鐘,這時候有三個程序在執行,所有總的cpu時間需要1.8分鐘。 

三程序的cpu利用率是48.8%,所以總共需要1.8/0.488=3.69分鐘。這時,程序1已經3.5分鐘的cpu利用時間利用完了。

此時還剩下2和3號程序在執行。

2號程序還需要0.5分鐘,所以0.5×2/0.36=2.78,此時2號程序的2分鐘cpu時間也利用完了。  

3號程序還需要0.4分鐘的cpu利用時間。0.4/0.2 = 2  

17.在所有非搶占cpu排程演算法中,系統平均響應時間最優的是(c) 

a.實時排程演算法     b.短任務優先演算法      c.時間片輪轉演算法       d.先來先服務演算法  

書上p286頁指出,輪轉法rr對所有程序產生的標準周轉時間平均最短,公平地對待了所有程序

記憶體換頁演算法: 

先進先出頁面置換演算法(fifo):選擇最早進入記憶體的頁面置換 

最近最久未使用頁面置換演算法(lru):選擇最近一段時間內最長時間

沒有被訪問的頁面置換 

最優淘汰演算法(opt):選擇最長一段時間內不會被訪問的頁面進行置

換,需要先將程式執行一遍,獲得頁面的使用情況。效能最好,但不容

易事先,一般用來評價其他頁面置換演算法的好壞

18.什麼是記憶體抖動(thrashing)?

a.非常頻繁的換頁活動     b.非常高的cpu執行活動   c.乙個極長的執行程序     d.乙個極大的虛擬記憶體交換活動   

解析: 頁面的頻繁更換,導致整個系統效率急劇下降,這個現象稱為記憶體抖動。  抖動一般是記憶體分配演算法不好,記憶體太小引或者程式的演算法不佳引起的頁面頻繁從記憶體調入調。

19. belay's anomaly 出現在**(b)  

a.記憶體管理演算法    

b.記憶體換頁演算法     c.預防死鎖演算法     d.磁碟排程演算法  

解析: belady異常(belady anomaly):有些情況下,頁故障率(缺頁率)可能會隨著所分配的幀數的增加而增加。 

原因:因為使用了不恰當的演演算法(如fifo),雖然空間夠多(frame夠多),但因為總是選到不應該被swap的page,所以反而讓page fault次數變多了。

?????????????????

某作業系統採用分頁儲存管理方式,下圖給出了程序a的頁表機構。如果物理頁的大小為512位元組,那麼程序a邏輯位址為0x0457(十六進製制)的變數存放在( )號物理記憶體頁中。

f:5答案:c

解答:16位邏輯位址,假設前n位為邏輯頁號,後16-n位為偏移位址。每一頁大小為512,512=2^9,說明0x0457的後9

位是頁內

偏移位址

,前7為為頁號。前7位為0000 010,也就是頁號為2,因此對應物理頁是4。

12、在5個頁框上使用lru頁面替換演算法,當頁框初始為空時,引用序列為0、1、7、8、6、2、3、7、2、9、8、1、0、2,系統將發生(c)次缺頁

a、13            b、12           c、11          d、8

分析:首先填滿五個,發生五次缺頁

0 1 7 8 6

2缺頁,替換最遠的0 ->2 1 7 8 6

3缺頁,替換最遠的1->2 3 7 8 6

7不缺頁……

每次選擇替換的頁,看它的前五個就行了!選擇最遠的那個替換

檔案分配表fat是管理磁碟空間的一種資料結構,用在以鏈結方式儲存檔案的系統中記錄磁碟分配和追蹤空白磁碟塊,整個磁碟僅設一張fat表,其結構如下所示,如果檔案塊號為2,查詢fat序號為2的內容得知物理塊2的後繼物理塊是5,再查fat序號為5的內容得知物理塊5的後繼物理塊是7,接著繼續查fat序號為7的內容為「λ」,即該檔案結束標誌,

假設磁碟物理塊大小為1kb,並且fat序號以4bits為單位向上擴充空間。請計算下列兩塊磁碟的fat最少需要占用多大的儲存空間?

(1)一塊540mb的硬碟                  (2)一塊1.2gb的硬碟

分析:(1)磁碟塊大小為1kb,540mb的硬碟可以分成540mb/1kb=5.4*105個磁碟塊,因此至少需要5.4*105<220個編號,需要20bit儲存空間

(2)同理,1.2g至少需要1.2*106<221個編號,為21bit,由於fat序號以4bits為單位向上擴充,因此需要24bit儲存空間

在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號inode 。

軟連線,其實就是新建立乙個檔案,這個檔案就是專門用來指向別的檔案的(那就和windows 下的快捷方式的那個檔案有很接近的意味)。軟鏈結產生的是乙個新的檔案,但這個檔案的作用就是專門指向某個檔案的,刪了這個軟連線檔案,那就等於不需要這個連線,和原來的存在的實體原檔案沒有任何關係,但刪除原來的檔案,則相應的軟連線不可用(cat那個軟鏈結檔案,則提示「沒有該檔案或目錄「)

硬連線是不會建立inode的,他只是在檔案原來的inode link count域再增加1而已,也因此

硬鏈結是不可以跨越檔案系統的。相反都是軟連線會重新建立乙個inode,當然inode的結構跟其他的不一樣,他只是乙個指明原始檔的字串資訊。一旦刪除原始檔,那麼軟連線將變得毫無意義。而硬鏈結刪除的時候,系統呼叫會檢查inode link count的數值,如果他大於等於1,那麼inode不會被**。因此檔案的內容不會被刪除。

硬鏈結實際上是為檔案建乙個別名,鏈結檔案和原檔案實際上是同乙個檔案。可以通過ls -i來檢視一下,這

兩個檔案的inode號是同乙個,說明它們是同乙個檔案;而軟鏈結建立的是乙個指向,即鏈結檔案內的內容是指向原檔案的指標,它們是兩個檔案。

軟鏈結可以跨檔案系統,硬鏈結不可以;軟鏈結可以對乙個不存在的檔名(filename)進行鏈結(當然此時如果你vi這個軟鏈結檔案,linux會自動新建乙個檔名為filename的檔案),硬鏈結不可以(其檔案必須存在,inode必須存在);軟鏈結可以對目錄進行連線,硬鏈結不可以。兩種鏈結都可以通過命令 ln 來建立。ln 預設建立的是硬鏈結。使用 -s 開關可以建立軟鏈結。

交換分割槽大小一般是記憶體的1.5-2倍

作業系統學習 筆記

單道批處理評價 資源利用率差 互動性差 等 多道批處理 w為了提高系統的利用率 出現多道批處理 多道 是指 某時刻 多個應用程式再主存中,按照某些原則去處理,逐個執行程式。批處理 使用者提交一批作業,首先存放再外存,排成乙個佇列,然後排程程式按一定的演算法去排程從該佇列 中選取佇列中的乙個或若干個作...

作業系統學習筆記

為什麼需要多執行緒?乙個程序有不同的任務,譬如說乙個程式有不同的方法,有些任務需要等待其他資源的排程 io排程 此時的cpu會空閒等待,加入多執行緒之後,程序分為不同的執行緒去執行不同的任務,使得cpu的利用率大大提高。多執行緒和多程序的區別 多程序是執行不同的程式,多程序切換需要中斷 記錄斷點等資...

作業系統學習筆記

作業系統 特徵 作業系統和外部打交道的方式 中斷 異常和系統呼叫 三者的區別 作業系統記憶體管理的目標 共享 訪問相同的記憶體單元 作業系統記憶體的管理方式 連續記憶體分配和記憶體碎片 連續記憶體分配 碎片整理 當所需的記憶體不夠時,將剩餘的空間進行拼接以得到更大的記憶體空間,以便滿足程序的空間需求...