[理工] OS-inode觀念!

作者: Aa841018 (andrew)   2019-02-19 22:03:05
https://i.imgur.com/6NSIHt3.jpg
因為實在是想不通,想請教一下各位:
1-12放data block num,
13-15:single,double,triple
首先要確定拉出去的Index block內有幾個data block num,於是
block size/block num(address)length=一個index block內所放的data block個數=2^10
(假設)
然後開始算max size=
(12+2^10+2^20+2^30)*block size
停!
如果13拉出去的一整個index block的大小=block size的話,那怎能這樣算?
上面公式是在算index block內的data block num個數吧?怎能用整個index block size
來乘?
這裡卡好久想不通………
我是哪裡搞錯了啊??
作者: seika555 (kakkoii)   2019-02-19 22:33:00
有點看不懂你的敘述,不過single跟double那邊其實就是跟multi-level page的道理一樣,就是把原本的那個block拿來當索引而已,因此才會用block-size去除以一個pointer的大小,看總共幾個索引
作者: skyHuan (Huan)   2019-02-19 22:36:00
1到12每格裡面存的都是pointer,會指到一個disk block,13的single是拿一個disk block來當index block,可以存1K個(依你的假設)pointer,每個pointer都指到一個disk block存檔案,以此類推
作者: Aa841018 (andrew)   2019-02-19 22:45:00
對,然後計算出來的(12+………)這一串,應該是pointer或者說是data block num的總數,那應該乘上pointer長而不是block size吧?
作者: skyHuan (Huan)   2019-02-19 22:49:00
題目要算的是可以存的檔案大小,而你算的這些(12+...)都是存pointer,每個都會再指到一個大小為4 KB的disk block,所以能存的檔案大小就是解答那樣
作者: Aa841018 (andrew)   2019-02-19 22:54:00
哦!謝謝你,我終於懂了!
作者: Davidhu127 (船船_BTTO)   2019-02-21 00:29:00
借問一下,在Linux裡面,大檔案也會用到direct pointer(那12個)嗎?還是會改成只用indirect?如果是後者的話,那這題答案應該會不一樣才對。
作者: skyHuan (Huan)   2019-02-21 00:56:00
都會從1開始長,12格用完到第13會長出single level,都用完到14格會長出double依此類推

Links booklink

Contact Us: admin [ a t ] ucptt.com