创建两个进程(实时进程)并在它们之间传送一个令牌,如此往返传送一定的次数。其中一个进程在读取令牌时就会引起阻塞。另一个进程发送令牌后等待其返回时也处于阻塞状态。发送令牌带来的开销与上下文切换带来的开销相比,可以忽略不计(经测试,一次管道传递约用时3ns左右)。 (利用管道传递令牌)

方法一:使用gettimeofday()

[cpp] view plaincopy
  1. //方法一:使用gettimeofday()获取当前时间
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <sys/time.h>
  5. #include <time.h>
  6. #include <sched.h>
  7. #include <sys/types.h>
  8. #include <unistd.h>      //pipe()
  9. int main()
  10. {
  11. int x, i, fd[2], p[2];
  12. int tv[2];  //用于进程间数据通信
  13. char send    = 's';
  14. char receive;
  15. pipe(fd);
  16. pipe(p);
  17. pipe(tv);
  18. struct timeval tv_start,tv_end;
  19. struct sched_param param;
  20. param.sched_priority = 0;
  21. while ((x = fork()) == -1);
  22. if (x==0) {         //子进程
  23. sched_setscheduler(getpid(), SCHED_FIFO, &param);
  24. gettimeofday(&tv_start, NULL);
  25. write(tv[1], &tv_start, sizeof(tv_start));//保存数据,以便传递到父进程中进行计算
  26. //printf("Before Context Switch Time1.sec %u s\n", tv_start.tv_sec);
  27. //printf("Before Context Switch Time1.usec %u us\n", tv_start.tv_usec);
  28. for (i = 0; i < 10000; i++) {
  29. read(fd[0], &receive, 1);
  30. //printf("Child read!\n");
  31. write(p[1], &send, 1);
  32. //printf("Child write!\n");
  33. }
  34. exit(0);
  35. }
  36. else {      //父进程
  37. sched_setscheduler(getpid(), SCHED_FIFO, &param);
  38. for (i = 0; i < 10000; i++) {
  39. write(fd[1], &send, 1);
  40. //printf("Parent write!\n");
  41. read(p[0], &receive, 1);
  42. //printf("Parent read!\n");
  43. }
  44. gettimeofday(&tv_end, NULL);
  45. //printf("After Context SWitch Time1.sec %u s\n", tv_end.tv_sec);
  46. //printf("After Context SWitch Time1.usec %u us\n", tv_end.tv_usec);
  47. }
  48. read(tv[0], &tv_start, sizeof(tv_start));
  49. //printf("Before Context Switch Time2.sec %u s\n", tv_start.tv_sec);
  50. //printf("Before Context Switch Time2.usec %u us\n", tv_start.tv_usec);
  51. //printf("Before Context Switch Time %u us\n", tv_start.tv_usec);
  52. //printf("After Context SWitch Time2.sec %u s\n", tv_end.tv_sec);
  53. //printf("After Context SWitch Time2.usec %u us\n", tv_end.tv_usec);
  54. printf("Task Switch Time: %f us\n", (1000000*(tv_end.tv_sec-tv_start.tv_sec) + tv_end.tv_usec - tv_start.tv_usec)/20000.0);
  55. return 0;
  56. }

任务调度与上下文切换时间测试相关推荐

  1. slurm安装配置_Slurm任务调度系统部署和测试(源码)(1)

    1. 概述 slurm任务调度系统,主要应用在HPC集群资源管理和任务调度.具体信息参见slurm官方网站:https://slurm.schedmd.com/ 部署Slurm任务调度系统,需要部署N ...

  2. 熔断器熔断时间标准_一种熔断器熔断时间测试电路的制作方法

    本实用新型涉及汽车制造技术领域,尤其涉及一种熔断器熔断时间测试电路. 背景技术: 伴随着日新月异的科技进步,人们对生活质量的追求也越来越高,汽车已经成为人们日常出行必不可少的交通工具,人们对汽车的舒适 ...

  3. delphi 同盘移动文件所用时间测试(文件大小约6,083,545,088 字节)

    delphi 同盘移动文件所用时间测试(文件大小约6,083,545,088 字节) 由于想做个 "delphi桌面图标清理备份与恢复" 所以有必要测试一下各种方法对文件移动占用时 ...

  4. DDR3初始化时间测试

    1.1 DDR3初始化时间测试 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)DDR3初始化时间测试: 5)结束语. 1.1.2 本节引言 "不积跬步,无以至 ...

  5. 用于.NET环境的时间测试

    用于.NET环境的时间测试 在.Net环境中,我们需要考虑我们的程序所运行的线程及任何时候垃圾回收都可能发生的事实.我们需要在设计我们的计时代码时将这些因素考虑在内. 让我们先来看一下怎样控制垃圾回收 ...

  6. 今日问题:开发在临近发布时“画蛇添足”,测试没有时间测试,该如何处理?

    大家好呀 ,请教大家一个问题哈,你们可以看看你们是否遇到过相似的场景呢 ? 背景 后天就要发布了 ,这时候开发告诉你一件事,在修复BUG的时候,发现了另外一个问题:并且自己直接已经修复了 ,希望你回归 ...

  7. 市场调研—全球及中国活化部分凝血活酶时间测试(APTT测试)行业研究及十四五规划分析报告

    [报告篇幅]:122 [报告图表数]:161 [报告出版时间]:2021年1月 [报告出版机构]:恒州博智(QYR)更多(医药)研究中心 报告摘要 2019年,全球活化部分凝血活酶时间测试(APTT测 ...

  8. Redis学习12之jedis的set时间测试

    jedis的set时间测试: 测试结果 xubo@xubo:~/cloud/redis/clients/jedis/target/classes$ java forn hellojedis hello ...

  9. stm32H7 擦除读写SPI NOR FLASH时间测试

    手册上如图 1 全篇擦除时间测试 时间33秒 2 4KB擦除时间16m spi - 36MS 3 256字节页写入时间 16m spi - 500us 4 4K字节写入时间 16m spi - 8ms ...

最新文章

  1. C++ 重载运算符简单举例
  2. qcom Android Camera【转】
  3. QT的QIcon类的使用
  4. 为什么计算机的编码那么多,为什么中国剩余定理可用于计算机编码?
  5. 华为交换机linux版本号,Cisco和华为交换机常用配置命令总结
  6. MATLAB 将不同长度的一维数组存入二维数组
  7. c语言巩固,巩固一下C语言中的指针
  8. 你真的了解 “开源” 么?请查收【保姆级】开源百科
  9. 侏儒排序算法原理与Python实现
  10. 数据有序_CATTI汉译英批改 | 人工智能、大数据有序推进
  11. XP SP3多数功能借鉴Vista 安装将无需密码
  12. 台电固态硬盘用什么测试软件,常规测试、实际使用测试与总结_固态硬盘评测-中关村在线...
  13. wordpress php幻灯片代码,WordPress无需插件实现幻灯片效果
  14. AWS、Azure、谷歌云、阿里云最新全方位比较
  15. String转十六进制,十六进制转String,字符串转十六进制,十六进制转字符串
  16. 2020计算机预推免(保研边缘人) | 重大、北邮、浙大软院、大连理工、华东师范、同济
  17. 手机、浏览器的分辨率、状态栏参数
  18. 客户心声 | 四川省人社厅杨玉成一行充分肯定桂溪街道劳动保障工作信息化建设平台
  19. @Scheduled使用及讲解
  20. 如何撰写一篇好的英文论文(感谢导师的指导,学到很多)

热门文章

  1. 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换...
  2. HDU 5919 Sequence II 主席树
  3. vs2010 调试快捷键
  4. 子界类型的定义和应用
  5. 使用命令行快速找出class文件所在的jar文件
  6. 一個textlist控件(左右兩個文本框)。
  7. mysql手工注入——盲注
  8. [Python图像处理] 七.图像阈值化处理及算法对比
  9. iOS之深入解析预乘透明度Premultiplied Alpha
  10. 143. Reorder List 重排链表