2012年8月2日
摘要: 在linux下做的时钟同步的工作终于暂时告一段落了。前面简单的做了客户端和服务器端的同步,在基于时间同步的机制上,将系统的1s的时间划分多个时槽。由于此时间同步应用在分布式系统中,涉及到多个客户端和服务器通信的问题,因此划分时槽是为了避免不同的客户端的消息冲突,保证每个客户端在自己的时槽里进行消息的发送。整体思想是在时间同步以后,就开始判断是否进入自己的时槽,是就唤醒一个线程进行消息发送接收处理。起初考虑在时钟中断里面做,假设系统每秒产生1000次时钟中断,则周期为1ms,将1s的时间划分为100个时槽,每个客户端将在1秒的时间内获得两个时槽。唤醒的机制最早考虑的是用信号量semaphore, 阅读全文
posted @ 2012-08-02 17:35 yuki未央 阅读(221) 评论(0) 推荐(0) 编辑
  2012年7月12日
摘要: 本篇文章都是在内核线程中做的,然后利用动态模块加载进行编译测试。 在此之前写了个udp客户端和服务器端,两边进行通信,由服务器端向客户端发送带有本地时间戳的报文,客户端接收报文并回送,服务器端再利用do_gettimeofday()函数提取系统时间,如此往返测试很多次,计算出发送和接收报文的延迟时间,我们将精度控制在us级。 延迟时间测出以后,由服务器端提取自己的系统时间加上延迟时间向客户端发送报文,客户端接收并提取出报文以后就调用do_settimeofday调整自己的系统时间,与服务器端保持一致。如此,服务器每个一个周期T向客户端发送时间报文,而客户端在收到报文之后,除了要设置时间... 阅读全文
posted @ 2012-07-12 10:52 yuki未央 阅读(442) 评论(0) 推荐(0) 编辑