上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 26 下一页
摘要: 实线:表示客户的正常状态转换 虚线:表示服务器的正常状态装换 应用:表示状态转换在应用进程发起操作时发生 接受:表示状态转换在接受到分节时发生 发送:表示这个转换发送什么 三次握手建立连接 服务器调用socket、bind、listen来完成,即执行被动打开,准备好接受外来的请求。 1.客户端发调用connect发送SYN分节(同步),它告诉服务器客户将在连接中发送的数据的初始... 阅读全文
posted @ 2013-04-19 14:10 ydzhang 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 1. read系统调用 测试程序:客户端向服务器端(tcp)发送一个”hello”字符串,服务器端读取并echo到客户端。 服务器端主要代码: char buf[4096]; int r = tcp_readn(sock, buf, 4096); int w = tcp_writen(sock, buf, r); 客户端主要代码: char buf[4096]; int w... 阅读全文
posted @ 2013-04-19 14:10 ydzhang 阅读(326) 评论(0) 推荐(0) 编辑
摘要: Tair是由淘宝开发的一个key/value存储系统。 参考:http://rdc.taobao.com/blog/cs/?p=302 在数据分配方面,Tair使用了对照表,对照表由于数据路由功能,由配置服务器(configserver负责维护),configserver周期性的初始化各个数据节点的信息,并通过Heartbeat来管理数据节点的状态。对照表通常包含多个slot(应远大于数据... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(579) 评论(0) 推荐(0) 编辑
摘要: Bitcask来自于riak,是一个日志(log-structured)存储系统。用在riak的分布式数据库的底层key/value的存储。 Bitcask的一些基本特征: 1. key/value以日志的形式按顺序存储,只能追加(append-only)写入key/value,每次写操作都是顺序写入。当某个key所对应的value发生变化时,新的key/value被追加到文件末尾。 2... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(1320) 评论(0) 推荐(0) 编辑
摘要: 1. 与日志相关字段的初始化 <super.c> static int parse_options (char *options, struct super_block *sb, unsigned long *inum, unsigned long *journal_devnum, ext3_fsblk_t *n_blocks_count, int is_remount) { … ca... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(708) 评论(0) 推荐(0) 编辑
摘要: 日志文件系统的目标是避免对整个文件系统进行耗时的一致性检查,ext3日志文件系统的思想是对文件系统进行的任何高级修改都分两步进行。首先,把待写块的一个副本存放在日志中;其次,当发往日志的I/O数据传送完成时(把数据提交到日志后),待写块就被写入文件系统。当发往文件系统的I/O数据传送终止时(把数据提交到文件系统后),日志中的块的副本就被丢弃。 当从系统故障中恢复时,e2fsck程序区分以下两种情... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(1734) 评论(0) 推荐(0) 编辑
摘要: HayStack是Fackbook用于存储照片的系统,其存储照片的数量在千亿数量级,本文简要分析HayStack的设计与实现原理。 图片存储的几个关键点: 1. Metadata信息存储。由于图片数量巨大,单机存放不了所有的Metadata信息,假设每个图片文件的Metadata占用100字节,260 billion图片Metadata占用的空间为260G * 100 = 26000GB。... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 我是一个学习计算机专业的理想主义者,我的研究兴趣为网络存储与分布式系统,我对很多的优秀软件的设计极为钦佩,我梦想着有一天我自己设计了一个系统,她有着近乎完美的架构、良好的性能和容错性、她能满足用户的一切需求,我和我优秀的同事们一起为实现这个系统编写了一行行优雅的代码,并进行测试和部署。 在实验室,我每天阅读计算机方面的书籍,只要我觉得会对我有帮助的我就会读,因为我觉得,只有打好了坚实的基础,... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 进程是操作系统运行的基础,本文以比较粗犷的角度闲侃linux进程方面的知识。 用户态的每个进程在内核中对应一个task_struct结构的进程描述符,描述符中包含进程的状态和执行信息、虚拟内存信息、打开文件信息、以及文件文件系统信息,信号相关信息等(进程使用的资源时有限制的,如打开文件数,使用的物理页,文件大小等,其值包含在描述符中task_struct->signal->rlim字段中,也... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 内核线程是直接由内核本身启动的进程。内核线程实际上是将内核函数委托给独立的进程,与系统中其他进程“并行”执行(实际上,也并行于内核自身的执行),内核线程经常被称为内核“守护进程”。它们主要用于执行下列任务: l 周期性地将修改的内存页与页来源块设备同步。 l 如果内存页很少使用,则写入交换区。 l 管理延时动作 l 实现文件系统的事务日志。 内核线程主要有两种类型: 1. 线程启动... 阅读全文
posted @ 2013-04-19 14:09 ydzhang 阅读(177) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 26 下一页