代码改变世界

随笔档案-2011年07月

大规模分布式系统问题集及解决方案(学习)

2011-07-30 10:26 by zhenjing, 11400 阅读, 收藏, 编辑
摘要: 对于分布式系统是初学者,没有实践的经验,对理论的理解也有限。上面这些属于学习笔记,是过去2个月零星积累的结果。绝大多数属于摘抄,文后会给出参考的资源。 阅读全文

进程互斥与竞态

2011-07-15 09:33 by zhenjing, 3949 阅读, 收藏, 编辑
摘要: 后台程序经常要求有且只有一个实例存在,以防止资源访问冲突。如何实现单一实例进程限制呢?本文讨论了2种常用实现机制。同时讨论了和文件锁机制相关的话题:系统调用和竞态。竞态是系统编程中很常见的一个问题。凡涉及多于2个的系统调用组合均可能存在竞态。竞态的本质也是资源的访问冲突。 阅读全文

RAII、栈展开和程序终止

2011-07-06 00:11 by zhenjing, 3210 阅读, 收藏, 编辑
摘要: RAII(资源获取即初始化RAII, Resource Acquisition Is Initialization)是C++编程中很重要的一项技术。其原理是在对象析构函数中释放该对象获取的资源,利用栈展开过程栈上对象的析构函数将被自动调用的保证,从而正确地释放先前获取的资源。RAII只有在栈展开正常执行的前提下才能正常工作。函数调用和正常的C++异常处理流程(异常处于try-catch块)都存在栈展开。应该特别注意的是:在程序运行过程中,RAII可以可靠地正确地释放资源;但当程序非正常终止时,栈展开经常被忽略,从而导致RAII失效。 阅读全文

文件锁与NFS文件锁

2011-07-04 21:46 by zhenjing, 11952 阅读, 收藏, 编辑
摘要: 文件是Linux系统中的重要概念。CPU,内存,磁盘,网卡,各种输入输出设备是操作系统管理的各种资源。其中除了CPU、内存用于计算之外,其余的资源均可看成输入输出设备。磁盘作为最核心的数据持久化设备,其上的数据一般以文件形式加以管理。Linux的文件基于一个很重要的抽象概念: 虚拟文件系统。虚拟文件系统提供一组统一的文件操作接口,从而屏蔽底层硬件设备的差别。只要硬件的驱动支持虚拟文件系统的接口,那么操作系统就可以按照统一的文件操作接口来读写该硬件设备的数据(输入/输出)。 文件本身也是一种很重要的进程间通讯方式,进程以文件的方式来共享各种数据。文件锁则是一种重要的进程间同步机制。因文件锁独特的进程生存期机制,从而大大简化文件锁的管理(尤其是错误处理)。 本文从内核中的文件数据结构谈起,讲解如何使用flock/fcntl,NFS文件锁,以及一些替代的文件锁机制。 阅读全文
点击右上角即可分享
微信分享提示