confide

导航

2011年8月8日 #

UNIX编程学习——malloc与free的实现(C)

摘要: 以下是K&R第二版中文版原话: malloc不是分配一个编译时已知的固定大小的数组,而是当需要时向操作系统申请空间。由于程序中的其他地方需要申请空间,并不一定通过调用malloc实现,因此由malloc管理的空间不一定是连续的。因此空闲的存储空间以空闲块列表的方式保存,每个块包含有一个长度、指向下一个的指针和自己的存储空间。这些块以地址的上升顺序排列在一起,最后一块(最高地址)指向第一块。 当有申请请求时,扫描空闲块列表以找到一个足够大的块,这个算法称为“最先匹配”;与之对应的算法是“最优匹配”它寻找满足条件且最小的块。如果这个块刚好与请求的大小相符合,将它从链表中移走并返回给用户。如 阅读全文

posted @ 2011-08-08 23:51 confide 阅读(353) 评论(0) 推荐(0)

unix编程学习——文件写空洞

摘要: 文件偏移量可以大于文件长度,在这种情况下,文件的下一次写将加长该文件并在文件中构成一个空洞,这是被允许的,并且文件中未被写的部分均读取为0。文件的空洞并不要求在磁盘上占用存储空间,具体的处理方式与文件系统有关。 阅读全文

posted @ 2011-08-08 23:51 confide 阅读(238) 评论(0) 推荐(0)

2011年7月12日 #

并行程序设计学习心得1——并行计算机存储

摘要: 1、层次存储技术:CPU内的寄存器——高速缓存——主存储器——磁盘存储器——磁带机2、高速缓存设置高速缓存的目的:为了平滑处理器和主存储器之间的速度做法:多处理器系统中,当某一处理器第一次访问某一个存储器时,将访问的数据的一个副本同时传给该处理器相连的高速缓存,以后如果有其他处理器访问此数据时,也将此数据的副本传给该处理器相连的高速缓存。3、一致性问题在多处理器系统中,如果一个处理器改写了高速缓存中的内容,但是另一个处理器相连的高速缓存数据不变,造成数据不一样。4、造成不一致的原因 1、由共享可写数据造成的不一致; 2、由进程迁移造成的不一致; 3、由绕过高速缓存的I/O操作造成的不一致。5、 阅读全文

posted @ 2011-07-12 22:03 confide 阅读(475) 评论(0) 推荐(0)

2011年7月11日 #

java同步与锁

摘要: synchronized使用的几个要点:1、只能同步方法,不能同步变量和类;2、不需同步类中的所有方法;3、每个对象只有一个锁;4、线程睡眠时,它不会释放其持有的任何锁;5、同步损害并发性,应该尽可能缩小同步范围。不但可以同步整个方法,还可以同步方 法中的部分代码;6、在同步代码块时,需要为其指定在哪个对象上同步;7、同步静态方法,需要一个用于整个类对象的锁;8、在同一对象上同步的线程会彼此阻塞,在不同对象上锁定的线程将永远不会阻塞。 阅读全文

posted @ 2011-07-11 16:53 confide 阅读(371) 评论(0) 推荐(0)