[理工] 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课本写的是第一种,计组课本的说法好像是第二种,是有两种版本吗" target="_blank" rel="nofollow">
刚刚翻到,如果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
" target="_blank" rel="nofollow">
作者: 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