csapp labs
绝不原创的飞龙
这个作者很懒,什么都没留下…
展开
-
CSE lab7 RPC 攻略
part Amarshal:通关观察可以得知,所有无符号的整形的实现相当于从高位到地位的每个字节依次调用rawbyte,所有的有符号整形都是直接调用同一尺寸的无符号整形。一种实现是调用rawbyte4次,另一种是调用ushort的重载方法两次。unmarshal:这回引用传参不能强转了,所以每个尺寸的无符号写了两遍。不解释,直接照搬int的实现就成。原创 2014-05-28 13:32:54 · 39653 阅读 · 0 评论 -
[2013.8.29]对于多线程编程的几点个人见解
(部分来源于《深入理解计算机系统》一书)1.线程有两种状态:聚合态和分离态。聚合态线程拥有一个句柄可被控制,分离态线程虽然可以正常运行,但不可以通过句柄控制。2.线程刚刚创建出来是聚合态的,在运行中关闭句柄可以转化为分离态,且不可逆。3.分离态线程在执行完退出后自动回收资源。聚合态必须显式调用关闭句柄来回收资源(特别是线程外调用了终止线程来终止的情况)。4.线程内自原创 2014-05-16 18:42:37 · 39022 阅读 · 0 评论 -
关于ics lab8 performance中的smooth
其实smooth比ratate水很多。首先看一下avg的定义,发现是二层循环,最大遍历3*3最小遍历2*2的元素,用二层循环未免太不高效了。我们的任务就是把他展开。展开时要注意边界,四个角的元素周围四个取平均,四条边上的要六个取平均,中间的元素才是九个取平均,我的建议是先算角再算边最后算中间。运算的时候要直接按照线性结构访问矩阵,如果外层循环变量是i,内层是j,原创 2013-11-03 14:14:10 · 39907 阅读 · 0 评论 -
关于ics lab8 performance中的rotate
首先,你如果发现了写的缓存优化比读的缓存优化效率高,那么恭喜你,你已经迈出了第一步。这个能提升0.2 ~ 0.4左右。 现在来思考一个问题。我们的常规思路就是一次读一整行,也就是src从左至右一次读一列,dst从下至上一次写一行。 但是这样肯定不行,因为你的电脑的缓存没那么大。按照上课老师讲的来看,应该分块。那首先要确定大小,我的测试结果是32最优,可能有些机器上1原创 2013-11-02 13:11:56 · 39766 阅读 · 0 评论 -
ICS lab9 TinyShell 的10条建议
0.仔细看pdf,尤其是hint部分。1.先抄书上的代码,然后再添加书上没有的功能。做到一定程度后,测试已有的功能,要不然不好改正。注意规范输出格式。2.WNOHANG,这个不用说了。3.调用deletejob和更改state都应改放进sigchld_handler中,sigint和sigtstp的handler应该仅仅捕获信号并传给前台的进程组。4.waitpid原创 2013-11-23 12:30:58 · 41058 阅读 · 0 评论