作者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