摘要: 讲了这么多了,很多人肯定会一头雾水,前边提到的都是些数据结构或者是些概念性的东西,真正对动态页面的管理机制在哪里?换句话说,如何将每个节点,每个区中的页框分配给进程?要理清这个思路,我们首先必须学习一种算法 —— 伙伴系统算法。内核要分配一组连续的页框,必须建立一种健壮、高效的分配策略。为此,必须解决著名的外部碎片(external fragmentation)问题。频繁地请求和释放不同大小的一组连续页框,必然导致在已分配页框的块内分散了许多小块的空闲页框。由此带来的问题是,即使有足够的空闲页框可以满足请求,但要分配一个大块的连续页框就可能无法满足。Linux 采用伙伴系统(buddy sys 阅读全文
posted @ 2013-12-13 16:52 聆听自由 阅读(1183) 评论(0) 推荐(0) 编辑
摘要: TIME_WAIT状态TCP要保证在所有可能的情况下使得所有的数据都能够正确被投递。当关闭一个 socket 连接时,主动关闭一端的 socket 将进入TIME_WAIT状态,而被动关闭一方则转入CLOSED状态。见图解。当一个socket关闭的时候,是通过两端互发信息的四次握手过程完成的,当一端调用close()时,就说明本端没有数据再要发送了。这好似看来在握手完成以后,socket就都应该处于关闭CLOSED状态了。但这有两个问题,第一:我们没有任何机制保证最后的一个ACK能够正常送达第二:网络上仍然有可能有残余的数据包(wandering duplicates,或老的重复数据包),我们 阅读全文
posted @ 2013-12-13 10:25 聆听自由 阅读(862) 评论(0) 推荐(0) 编辑
摘要: 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。(1) 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。(2) 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。(3) 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。完成三次握手,客户 阅读全文
posted @ 2013-12-13 09:58 聆听自由 阅读(406) 评论(0) 推荐(0) 编辑