[理工] OS I-node

看板Grad-ProbAsk作者 (還很新)時間9年前 (2016/12/05 09:43), 9年前編輯推噓5(5035)
留言40則, 3人參與, 最新討論串1/1
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到底是算軟體中斷還是硬體中斷@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.171.105 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1480902226.A.C6F.html ※ 編輯: newpuma (114.136.171.105), 12/05/2016 10:14:05

12/05 10:13, , 1F
software-based interrupt
12/05 10:13, 1F
那非法存取也是softbased嗎

12/05 10:19, , 2F
2. 第一個index不用算吧
12/05 10:19, 2F
我的筆記抄的答案是這樣,我也有點困惑@@ ※ 編輯: newpuma (114.136.171.105), 12/05/2016 11:19:58

12/05 11:36, , 3F
yes
12/05 11:36, 3F

12/05 12:19, , 4F
Page fault 算hw-generated吧 非法存取是sw-generated
12/05 12:19, 4F

12/05 12:19, , 5F
有誤請指正
12/05 12:19, 5F

12/05 12:25, , 6F
另外借標題問一下 一個執行中的process 若TLB miss ,pa
12/05 12:25, 6F

12/05 12:25, , 7F
ge table hit ,會被中斷到waiting狀態嗎 是不是依據TLB
12/05 12:25, 7F

12/05 12:25, , 8F
miss 由軟體or硬體處理有不同結果?
12/05 12:25, 8F

12/05 13:19, , 9F
no, page fault is software-based interrupt
12/05 13:19, 9F

12/05 13:22, , 10F
會有不同結果 但這個時間極短 存取一次memory而已
12/05 13:22, 10F

12/05 13:22, , 11F
除非是page failt或做I/o才有可能到waiting
12/05 13:22, 11F

12/05 13:23, , 12F
存取一次memory應該都還在cycle time以內 不至於切到
12/05 13:23, 12F

12/05 13:23, , 13F
waiting
12/05 13:23, 13F

12/05 14:05, , 14F
Pagefault是trap沒錯,謝謝指正。另外再請問TLB miss pa
12/05 14:05, 14F

12/05 14:05, , 15F
ge table hit時,cpu會直接從page table 讀入需要的pag
12/05 14:05, 15F

12/05 14:05, , 16F
e還是把TLB更新後再存取一次TLB?os課本寫的是第一種,
12/05 14:05, 16F

12/05 14:05, , 17F
計組課本的說法好像是第二種,是有兩種版本嗎
12/05 14:05, 17F

12/05 14:10, , 18F

12/05 14:15, , 19F
剛剛翻到,如果TLB miss且由硬體處理,cpu只會stall ,
12/05 14:15, 19F

12/05 14:15, , 20F
正在執行的process維持running. 若由interrupt to os
12/05 14:15, 20F

12/05 14:15, , 21F
處理,process切到waiting,這樣的說法有錯嗎
12/05 14:15, 21F

12/05 14:32, , 22F
不太清楚計組課本是哪種 還請你貼圖一下 我prefer更
12/05 14:32, 22F

12/05 14:32, , 23F
新TLB再存取TLB一次
12/05 14:32, 23F

12/05 14:33, , 24F
process不會切到waiting, 除非有啟動scheduler
12/05 14:33, 24F

12/05 14:35, , 25F
若為linux則會切到interrupted的狀態
12/05 14:35, 25F

12/05 15:10, , 26F

12/05 17:42, , 27F
TLB miss 時 就會trap了
12/05 17:42, 27F

12/05 17:44, , 28F
接著 OS 尋找 memory 的page table中的reference
12/05 17:44, 28F

12/05 17:45, , 29F
若直接找到該frame 即可使用 並且同時將該frame 的
12/05 17:45, 29F

12/05 17:45, , 30F
NO 值 以及 Page no 值增加到TLB上
12/05 17:45, 30F

12/05 22:18, , 31F
@ken 如果該系統有MMU的話 應該會由MMU來做這些固定的
12/05 22:18, 31F

12/05 22:20, , 32F
動作 請參酌 https://goo.gl/a1oYVQ
12/05 22:20, 32F

12/05 22:21, , 33F
(不過好像TLB通常會實作在MMU裡就是了)
12/05 22:21, 33F

12/05 22:28, , 34F
不過在白算盤裡 TLB miss是由OS負責 因為課本的MIPS
12/05 22:28, 34F

12/05 22:28, , 35F
沒有MMU 不過我當時在學校上課時 老師有補充實務上由
12/05 22:28, 35F

12/05 22:28, , 36F
MMU來做就可以了 因為切到OS太花時間了 除非是
12/05 22:28, 36F

12/05 22:29, , 37F
像page fault需要額外預測的工作 切給OS會比較有效益
12/05 22:29, 37F

12/05 22:30, , 38F
有點離題 結論是還是要看實作啦~
12/05 22:30, 38F

12/05 22:33, , 39F
了解, 其實OS版本裡有提到 藉由 hardware or via
12/05 22:33, 39F

12/05 22:33, , 40F
interrupt 去執行
12/05 22:33, 40F
文章代碼(AID): #1OHCPInl (Grad-ProbAsk)