在linux下做的时钟同步的工作终于暂时告一段落了。

前面简单的做了客户端和服务器端的同步,在基于时间同步的机制上,将系统的1s的时间划分多个时槽。由于此时间同步应用在分布式系统中,涉及到多个客户端和服务器通信的问题,因此划分时槽是为了避免不同的客户端的消息冲突,保证每个客户端在自己的时槽里进行消息的发送。

整体思想是在时间同步以后,就开始判断是否进入自己的时槽,是就唤醒一个线程进行消息发送接收处理。

起初考虑在时钟中断里面做,假设系统每秒产生1000次时钟中断,则周期为1ms,将1s的时间划分为100个时槽,每个客户端将在1秒的时间内获得两个时槽。

唤醒的机制最早考虑的是用信号量semaphore,我在核心定义了一个互斥信号量并初始化为加锁的状态,init_MUTEX_LOCKED,并将信号量导出供将要唤醒的线程使用。一进入线程主函数就使用down操作使线程阻塞等待信号量,而up操作则放在时钟中断中,判断属于自己的时槽再释放信号量。

另一种方法就是使用wait_queue,一进入线程主函数就将线程设为不可中断睡眠状态,然后将线程挂到wait上,调用schedule函数进行切换,在核心要做的就是判断属于自己的时槽并且线程不是运行状态时,就调用wake_up唤醒线程,如此循环。

但是上述两种方法都遇到了一个问题,由于在内核唤醒线程,我们期望线程一经唤醒就能迅速的得到执行,所以将线程的优先级设置为实时优先级,调度方式采用FIFO,一插入包含线程的模块就会出现死机的情况。但如果不是实时优先级就没有问题。这个一直困扰着我,找不到原因所在。

再就是系统原有的时钟中断频率太小,不能满足我们高精度的需求,因此需要改变到1000hz。用的开发板是real6410,经过查阅内核代码,发现这个板子与s3c2410一样,都是由timer4来触发中断。timer4外接的时钟可以直接选择外部晶振的频率,也可采用pclk。在中断设置的函数中,首先给timer4设置一个计数初值,这个计数初值就是由timer4的频率与系统中的HZ值即每秒钟的时钟中断次数的比值,当timer4的计数值减为0时就触发中断,因此要改变时钟中断频率就改变HZ到想要的值即可。

另外,还遇到的问题就是HZ虽然配置为200或者1000,但是用cat /proc/interrupts 显示出的1秒的中断次数仅为20多或者50多,远远没有达到我们想要的值,后来发现在config文件里面有一个config_no_hz,经过查阅,发现在2.6.21内核以后引入了无滴答内核,使处理器保持低功耗状态,我们需要多次时钟中断,则将config_no_hz配置为n即可。

转载于:https://www.cnblogs.com/dearyy929/archive/2012/08/02/2620440.html

时钟同步及其应用(接上一篇)相关推荐

  1. android通知栏样式自定义,如何给状态栏上的时钟自定义样式或位置?(位置篇)

    原标题:如何给状态栏上的时钟自定义样式或位置?(位置篇) 时间,是状态栏必不可少的空间之一.至于它的重要性和"电量"."信号"相比,哪个更重要.就由用户自行判断 ...

  2. 此服务器的时钟与主域控制器的时钟不一致_基于域的GPS时钟同步配置

    本篇约700字6图 GPS时钟同步主题分享 时钟不同步会导致 终端数据丢失 观测迟.漏发报 数据采集时间不准 本文 Vaisala时钟配置步骤 特点: TCP/IP网络时钟信号 基于域管理 Serve ...

  3. ptp精准时间协议_网络时钟同步协议– NTP, PTP – 默默的点滴

    这篇文章介绍一下两个时钟同步的网络协议:NTP和PTP. 这里不涉及协议的原理和具体实现(想了解的可自行Google),重点是如何搭建起这两个服务. 1. NTP及PTP简介 NTP(Network ...

  4. CentOS网络时钟同步协议-- NTP, PTP

    这篇文章介绍一下两个时钟同步的网络协议:NTP和PTP. 这里不涉及协议的原理和具体实现(想了解的可自行Google),重点是如何搭建起这两个服务. 1. NTP及PTP简介 NTP(Network ...

  5. gPTP时钟同步(时间同步)协议简介

    一.时间同步要解决的问题 不知道大家还记得军训练习齐步走的场景吗? 齐步走的动作要领你还记得吗? • 教官首先发出"齐步-–走"的命令,大家听到"齐步"二字后, ...

  6. 出入口控制系统工程设计规范_[问答]连载77-控制系统之间如何时钟同步?

    仪表小猪 在控制系统中,趋势.报警.事件记录等都与时间相关,因此整个系统始终保持一个统一的时钟很关键.如果操作站和控制站时间不同步,操作员站上面显示的事件.趋势等也不能真正的反应出现场实际变化的时间, ...

  7. 如何配置Linux的时钟同步

    Ubuntu系统默认的时钟同步服务器是ntp.ubuntu.com,Debian则是0.debian.pool.ntp.org等, 各Linux发行版都有自己的NTP官方服务器. 身在中国,使用这些都 ...

  8. IIC总线的时钟同步和总线仲裁

    IIC简介: IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS) ,IIC是一种多向控 ...

  9. 时钟同步和时钟修正的小技巧

    引入: 时钟同步一直是一个比较热的话题.因为它涉及到许多具体场景. 场景A: 2个系统做交易,A系统下订单,B系统管理订单.结果因为B系统比A慢5分钟,A下单完了,B获得的时间居然是一个未来的时间. ...

最新文章

  1. 在SAP API hub自动生成使用ABAP调用API的胶水代码
  2. VC++2010配置使用MySQL5.6
  3. □□□□□□(此处略去X个字)
  4. 2021-2025年中国再生聚酯行业市场供需与战略研究报告
  5. “技术驱动创新”正成为企业发展新方向,开发者该如何修炼自己?
  6. Oracle数据库常用脚本
  7. 中国口岸年鉴(2001-2015年)
  8. 分享 AI 圣经 PRML《模式识别与机器学习》百度云链接
  9. Vue的axios封装
  10. 企业网络项目投标范文
  11. Windows鼠标右键没有“新建”“新建文件夹”选项
  12. 【现代货币银行学】货币与货币制度
  13. 计算机组装的硬件配置及报价,2021组装电脑配置清单及价格表说明
  14. 计算机主板的结构平面草图,10分钟浓缩10年 教你看懂主板基本结构
  15. Mac系统-重置MySQL登陆密码
  16. 精简商务合同管理系统开发
  17. Nexus 搭建docker本地仓库(hosted)和私有仓库(proxy)
  18. oa办公系统都有哪家?
  19. python3 + Scrapy爬虫学习之创建项目
  20. 网络请求urllib库使用总结

热门文章

  1. String大小转换函数
  2. Win7system登录打开计算机,Windows7系统system文件丢失导致开机黑屏如何解决
  3. 小米4系统定位服务器地址,小米4原装浏览器怎么开启定位系统
  4. msflexgrid允许大选择_选择复式楼、跃层和别墅的装修业主如何做好家里的楼梯...
  5. 日照职业技术学院计算机怎么样,日照职业技术学院宿舍条件怎么样 住宿环境好不好...
  6. tensorflow 小于_坐姿不对,屏幕就变模糊!教你用TensorFlow做一款“隐形背背佳”...
  7. PCM设备在雷达通信系统应用
  8. 【渝粤教育】国家开放大学2018年春季 0463-22T英语语音 参考试题
  9. 国家开放大学2021春1009离散数学(本)题目
  10. 【渝粤题库】国家开放大学2021春2634推销策略与艺术题目