看板 b96902HW 關於我們 聯絡資訊
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)
inaro:這篇好刺眼XD(無誤) 05/09 18:16