[資工][OS] VM/ monitor/ deadlock/ page table

作者: qoojordon (穎川琦)   2014-09-24 00:30:53
幾個觀念請教與確認:
Q1: micro kernel的兩個問題
已知觀念:
將kernel模組化後 , 去除不必要的一些服務 , 儘保留必要的服務(如Process Mgt.)
稱之為micro kernel
優點: 1.擴展性高 2,更安全實用
Q1-1 : 被去除的服務可以在 user mode 以 system software 或 Library的方式提
提供服務
問題:原本在kernel的服務如果被拉到user mode以上述的方式呈現,是否會有功能
被閹割的問題呢?(例:原本在kernel提供的security服務如果被拉到user mode後
,它的提供的功能會不會不如原本在kernel時強大?)
Q1-2 : 大多的書面資料都要提到micro kernel安全度較高的優點
問題:延續Q1-1 , 不太能理解為甚麼部份重要服務被拉出kernel還能維持比較好的
安全性? 如Q1-1的例子 , 把security拉到user mode做 , 萬一user mode下他
提供的security服務亂搞 , 系統不就掛了嗎 ?
Q2: multiprocessor , multicore , multithread 名詞概念確認
已知觀念: thread 是OS分配CPU資源的最小單位 , 使用thread帶來的好處我是參考
網路上估到的這張架構http://ppt.cc/HW~B
問題: 這張圖和我自己本身的理解差不多 , 以下分為幾點說明 , 請板友指正是否有錯

1. core代表每個prcessor上的運算晶片(所以core≧processor)
2. 分配thread的單位應該是core
->使用thread的好處在於同一process的程式空間有locality的特性,所以
位在同一個processor上的不同thread才能發揮multithreading的最大效益
->倘若現在同一process的兩個thread被丟到不同processor的core上,就拿不
到使用thead的好處 ? (還是只是不能發揮最大效益? 所以好處是 ?)
Q3: deadlock章節中有一個定裡:
n個process共用m個resource , 不產生dealock有兩個條件
1.每個Pi的最大資源需求(記為MAXi) < m
2. MAXi 總和 < m+n
問題: 若現在m=10 , 每個process最大資源需求為3 , 最大n為何?
3n<10+n
2n<10 , 最大n=4
<我自己舉的反例>
倘若我取n=5 , 也能找到一組process順序是能不產生deadlock的, 如下例:
10個resource分配如右: 3 , 3 , 2 ,1 ,1(依序為P1,P2....P5分配到的資源)
依 P1 P2 P3 P4 P4的順序執行 , 可以順利取得資源 , 系統是UnSafe但不會
Deadlock , 請問我這樣說明有盲點嗎 ? 感覺這裡定理不太能求最大值...是
不是我誤解了甚麼
Q4 : 記憶體管理中的邏輯位址(LA)轉換概念 , 與虛擬記憶體概念中的虛擬位址(VA)
Q4-1: 以我目前的理解來說 , LA和VA是在描述相同的東西 , 而他們怎麼和實體位址(PA)
對映是page table的工作 , 對每個process而言 ,LA的是下面哪種狀況?
P1佔8KB , P2佔32KB , 系統執行時 , 他們的LA應該是?
狀況一: 皆用處理器處理的位元數視為LA (32bits作業系統就是32bits表示LA)
狀況二: 依據Process不同而使用不同的LA , 以上述狀況為例 , P1的LA是13bits
P2為15bits
狀況三: 狀況一,二的折衷版本,LA一樣都視為32bits,只是對於不同的process有
效的bits數不同 , 以P1為例 , 超過13bits之後的bits表示的LA對P1而
言都沒有意義
Q4-2: 承4-1 , 同樣都是指LA = 15的記憶體空間 , 對P1與P2而言是否代表相同意思?
我自己的回答: LA都是15對P1,P2來說沒有辦法比較 , 要透過他們各自的page
table轉換成PA比較才有意義 , 若PA相同 , 此時的狀況可視為shared memory
Q5 : Page Table有三個減少它佔用記憶體空間的方法 , 以下敘述是否有誤
Q5-1: multi level的方式對於virtual space小的程式而言才有好的效果 , 若virtual
space很大的程式 , 他還是要存很多筆的位址轉換 , 並不會因為multi level的
方法縮小page table使用的空間?
Q5-2: Inverted page table這種方式是否只要OS自己maintain一份即可 ?
因為它的轉換方式是 <Process ID , page NO> , 大家的page No一樣多 ,
Process ID 又提供判斷是不是自己的轉址依據 , 所以只要OS存一份給
所有的process查就好?
Q6 : TLB , BHT , BTB 是否都為cache ?
我自己查的資料是 cache:TLB , BTB
BHT 張凡寫 小型記憶體....所以是memory = =?
Q7 : monitor觀念 與 semaphore實作monitor
Q7-1:monitor是否能夠解決同步問題 , 取決於設計的該資料結構的人是否能給予
condition變數正確的初值 ?
Q7-2:用semaphore實作Hoare monitor不太懂
目前理解 : signal的不當使用會造成monitor違反mutual exclusive ,
Hoare的做法為若Q被P signal而進入monitor中運行 , 那麼
P必須等到Q wait或 完成才能重新進入monitor
(參考圖片http://ppt.cc/bl9C)
下方為恐龍書上的實作方式
請問上述的 P , Q 分別是對應到參考圖片的哪個位置?
目前我是這樣對映:
P-> entry queue圖片左半部 -> 用next記錄
Q-> c.v. waiting queue -> x記錄
製作 x.wait
(1) x_count = x_count + 1
(2) if next_count > 0 then signal(next);
(3) else signal(mutex);
(4) wait(x-sem);
(5) x_count = x_count -1;
(1)~(3) : Q即將要block , 所以先把有機會signal自己的人拉進monitor ?
(4) : 將Q卡住是為block ?
製作 x.signal
(1) if x_count > 0 then
(2) begin
(3) next_count = next_count + 1;
(4) signal(x-sem);
(5) wait(next);
(6) next_count = next_count - 1;
(7) end
如果x被signal代表要先把monitor裡面的procedure拉出來 , 請問(4)(5)
兩行的狀況是指 Q要被signal所以先把P拉出去block ?
問題敘述有點長 , 先謝謝各位了
作者: j897495 (咪咪)   2014-09-24 09:17:00
第三題的部分 是1<=Maxi<=m喔至於你提出的問題證明的時候是取available=0時 這樣才能保證一定是deadlock free我也模糊了等高手解答吧哈哈每個都是好問題
作者: qoojordon (穎川琦)   2014-09-24 19:30:00
QQ 我之前都先記著還沒確認 , 還是上來問問其他版友想法比較保險

Links booklink

Contact Us: admin [ a t ] ucptt.com