[心得] HW4 slotCnt freeSpace

作者: math120908 (小小郭)   2012-11-25 22:38:38
大家都沒問我心中的疑問實在是太困擾了
好在我姊很威猛 翻了一下她當年report就解決我的疑惑了zzz
我來簡單分享一下心得
寫完就不要理我啦 沒寫的就可以參考一下XD
不然就當是給不知道會不會有的未來修課的學弟妹們心得= =+
主要就是幾個詞的定義
slotCnt
這個最機車了 code原本裡面寫number of slots in use
但其實他的意思是 allocate的slots數量!!
所以slotCnt是可能包含有洞的slot的
slotCnt = #EMPTY_SLOT + #non-EMPTY_SLOT
總之就是你在做slot部分的linear search的時候的upper bound啦~
freeSpace v.s. available_space
freeSpace 指的是 整個data space空白的地方
基本上來說
data space包含data + slot[0]
所以在宣告data的時候才會是
data[MAX_SPACE - DPFIXED]
slot[1]
其實slot感覺起來應該要是個指標指向data末端
不過這樣寫是為了方便 + slot會變成常數指標
那所謂的freeSpace又是什麼呢
一開始的時候是 MAX_SPACE - DPFIXED + sizeof(slot) //slot[0]那格也要算喔>.^
之後加新的record會 - recordSize - sizeof(slot)
刪除record會 + recordSize + sizeof(slot)
也就是如果slot有洞 他是會把洞算在freespace裡的!!
available_space 指的則是 "剩下可以放新的record的空間"
所以自然 slot有洞的地方就不會算到了
available_space = freespace - sizeof(slot_t)*#non-Empty_slot.
Notice: 要注意的是 如果slot全部是滿的又會怎樣呢 (#Empty_slot = 0)
當下次要新增一個record的時候
available_space只有放record空間是不夠的
因為還必須要有空間放slot
所以這種情況下available_space其實是 = freespace - sizeof(slot_t)
以上大概是我寫這次作業的心得...
//我可以不用交report了嗎(大誤
作者: paul112004 (Time to say goodbye)   2012-11-25 23:20:00
推!
作者: rock1246 (Rokya)   2012-11-26 04:23:00
大推
作者: andy74139 (月^4)   2012-11-26 10:28:00
推!! 寫完之後才發現slotCnt不對,又要去改>"<
作者: vb8821 (Le Fond)   2012-11-26 21:28:00
大推! 小疑問,available的地方是不是有誤打,全滿的話,Empty-slot = 0 ?
作者: vincimrs (green)   2012-11-27 16:04:00
推推
作者: math120908 (小小郭)   2012-11-27 20:04:00
喔對 感謝樓上上XD

Links booklink

Contact Us: admin [ a t ] ucptt.com