作者BingJing (京醬)
看板b96902HW
標題[系程]幾個問題@@
時間Sat May 9 16:09:50 2009
1. 作業範例裡面,倒數第二步要合併變成一個檔案,其中要先設定緩衝區的大小,
請問是不是只要用 setbuffer 函數實做即可,因為說明裡面有句話說緩衝區
滿了,就要將緩衝區的資料寫入檔案裡面,這應該不用我們做吧@@?
2. 緩衝區的大小的算法是 s=X/(n+1),X是主記憶體允許最大的量,請問這個要怎麼
去檢查? 還有範例很模糊的帶過,s = 2MB = 10MB/(4+1),那個X(主記憶體
的量是從哪裡弄到的,不會是每個部分暫存的檔案大小吧?)
3. 說明裡面有一段 "Each child process reads parts of the data set" ,因為助
教是用字元的方式來存輸入檔的,所以我們還要去算每個子程序是從哪一點開
始讀的(我的實作方法如下a),因為想要知道從哪一點開始讀,不是要用用O(n)
n是輸入檔案的大小 去算它,
為什麼不如母程序讀一讀直接送給子程序就好了?
a. loop fscanf(file,"%d",&tmp) m/n times // m是總共有幾個要排序 n是程序數
offset = fseek( ...current...之類的 )
call fork gived offset 再去讀一次 = =
4. 搞不太懂vfork , 是共用記憶體嗎? (單班好像還沒教,可以多凹一個禮拜
deadline嗎? XD)manual裡面有一句"The parent process is suspended while
the child is using its resources" 這句話好像就只是說母程序不會讀到很髒
的資料而已,有沒有什麼辦法可以綁住資源保證下面幾行給誰用是確定的?
5. clock()函數,看起來很好用。她從每個程序開始執行的時候開始算,那算每個子程
序執行的時間就很方便,要結束前記一下clock()就好了。可是它的單位好奇怪,
"determines the amount of processor time"沒有給耶,請問要怎麼換算?
輸出最後要是單位十的負六次方秒吧?
祝大家母親節愉快:) 感謝助教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.56
※ 編輯: BingJing 來自: 140.112.30.56 (05/09 16:10)
1F:→ inaro:這篇好刺眼XD(無誤) 05/09 18:16