作者A4P8T6X9 (殘廢的名偵探)
看板Grad-ProbAsk
標題Re: [理工] 資工 OS 恐龍習題
時間Wed Jan 15 14:19:08 2014
※ 引述《tkurockman (洛克人)》之銘言:
: http://ppt.cc/jnwL
: 其中的 linked allocation 完全不懂
: 習題解答 linked a b c d e f 照順序
: 1 52 3 1 52 100
: 整個囧掉 煩請大大說明 感謝
關鍵在於讀寫次數,還有先讀才能寫,寫入可以同時寫資料跟pointer。
a. 寫入資料跟pointer到新的block,並更改記憶體中之first,所以一次 (寫入)
b. 這題是要把新的放在第51個,所以要先讀前面50,把第五十的pointer改成新的,並把新的指到原先的51 (現在的52),所以52次。
c. 先用記憶體中的end找到原先的end,1次,並寫入新的pointer,在寫入新的block中的data跟nil。
d. 先讀原先的第一個知道第二個的位址,再把這個位址寫到記憶體中的file control block,所以一次。
e. 因為要知道第52個的位址,先讀前面51個,之後把第50個的pointer指到第52個(現在變51了)的。
f. 要知道第99個的位址要,讀98次,並在讀第99個,再加上把他的pointer改成nil,並在記憶體中更改end,所以100次。
--
Sent from my Android
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 221.120.6.140
推 tkurockman:謝謝回答! 01/15 15:55
推 bztfir:那個 可以詳細一點說明c為什麼是3嗎 看起來改原本的end是一 01/16 00:36
→ bztfir:次 寫入新的block並把ptr改成nil是一次 還有一次是? 01/16 00:37
→ bztfir:先感謝回答~ 01/16 00:37
→ A4P8T6X9:先讀才能寫,所以讀最後,改最後都算一次。 01/16 08:38
推 bztfir:了解了 感謝~ 01/17 20:23