[理工] OS I-node

作者: newpuma (還很新)   2016-12-05 09:43:44
Unix的I-Node結構(1-12,13single level 14two level 15 3level)
block size 8kB
block pointer 4Byte
file大小8gb有多少個index block?
1+1+(2^9-1)=2^9 +1
我的理解是,一開始的1~12是一個index block,然後13的single level也有一分
2^11(single level)+2^11*x(two level)<2^20
x解得2^9-1 我的理解有錯嗎?
最後想順便問一下memory引起的pagefault到底是算軟體中斷還是硬體中斷@@
作者: kyuudonut (善良老百姓)   2016-12-05 10:13:00
software-based interrupt2. 第一個index不用算吧yes
作者: DZASHIANG (DZASHIANG)   2016-12-05 12:19:00
Page fault 算hw-generated吧 非法存取是sw-generated有誤請指正另外借標題問一下 一個執行中的process 若TLB miss ,page table hit ,會被中斷到waiting狀態嗎 是不是依據TLBmiss 由軟體or硬體處理有不同結果?
作者: kyuudonut (善良老百姓)   2016-12-05 13:19:00
no, page fault is software-based interrupt會有不同結果 但這個時間極短 存取一次memory而已除非是page failt或做I/o才有可能到waiting存取一次memory應該都還在cycle time以內 不至於切到waiting
作者: DZASHIANG (DZASHIANG)   2016-12-05 14:05:00
Pagefault是trap沒錯,謝謝指正。另外再請問TLB miss page table hit時,cpu會直接從page table 讀入需要的page還是把TLB更新後再存取一次TLB?os課本寫的是第一種,計組課本的說法好像是第二種,是有兩種版本嗎http://i.imgur.com/Lwupffr.jpg剛剛翻到,如果TLB miss且由硬體處理,cpu只會stall ,正在執行的process維持running. 若由interrupt to os處理,process切到waiting,這樣的說法有錯嗎
作者: kyuudonut (善良老百姓)   2016-12-05 14:32:00
不太清楚計組課本是哪種 還請你貼圖一下 我prefer更新TLB再存取TLB一次process不會切到waiting, 除非有啟動scheduler若為linux則會切到interrupted的狀態
作者: DZASHIANG (DZASHIANG)   2016-12-05 15:10:00
作者: ken52011219 (呱)   2016-12-05 17:42:00
TLB miss 時 就會trap了接著 OS 尋找 memory 的page table中的reference若直接找到該frame 即可使用 並且同時將該frame 的NO 值 以及 Page no 值增加到TLB上
作者: kyuudonut (善良老百姓)   2016-12-05 22:18:00
@ken 如果該系統有MMU的話 應該會由MMU來做這些固定的動作 請參酌 https://goo.gl/a1oYVQ(不過好像TLB通常會實作在MMU裡就是了)不過在白算盤裡 TLB miss是由OS負責 因為課本的MIPS沒有MMU 不過我當時在學校上課時 老師有補充實務上由MMU來做就可以了 因為切到OS太花時間了 除非是像page fault需要額外預測的工作 切給OS會比較有效益有點離題 結論是還是要看實作啦~
作者: ken52011219 (呱)   2016-12-05 22:33:00
了解, 其實OS版本裡有提到 藉由 hardware or viainterrupt 去執行

Links booklink

Contact Us: admin [ a t ] ucptt.com