[理工] 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