rtemsahi一个以线程为基本调度单位的实施操作系统,调度算法是基于优先级的抢占式线程调度,支持256个线程优先级,0代表最高优先级,主要用于内部线程,255是最低线程,是空闲线程的优先级,用户线程的优先级在1-254之间,支持创建同优先级的多个线程,采用时间片轮转调度,调度器寻找下一个最高优先级就绪线程的时间是恒定的,这也是实时性得到保障的一个关键机制。为了保障硬实时的特性,选择了静态调度算法-速率单调调度(rate monitonic scheduling 简称RMS)是为周期性任务解决多任务调度的一种很好的方法。

rtems并没有从底层独立实现这三种API(POSIX、CLASSIC、ITRON),实际上都是在rtems的核心层上的thread handler组件进行封装的。rtems中的threadxxx文件包含的thread_xxx函数就是线程管理的super core层,也就是核心层thread handler的主要实现。

核心层的thread handler组件

提供了thread_control结构体和以此配套的一组基本的线程管理数据和管理函数,涉及线程初始化、线程启动、线程暂停、线程恢复执行、线程切换等,不同的高层api接口实现只是对这些结构和函数的封装,这样线程管理就可以分为两层,对rtems支持不同API接口扩展会很方便。

线程控制块:

thread control block 简称TCB,是thread control handler组件对线程的静态基本情况和动态运行变化过程的描述,包含了与管理线程运行所需要的所有信息集合,是线程存在的唯一标识,因为线程的创建主要体现在为该线程生成一个TCB,终止主要体现在回收其TCB。管理也是。

应用层任务可以通过系统核心层提供的系统调用接口来改变TCB内部的成员变量,同时需要注意的是TCB是rtems中唯一的能经由用户扩展例程被应用访问的rtems内部的数据结构。

线程调度机制:

每个线程运行时间很短,基本上都是采用可抢占的调度方式,为了更加灵活,提供四种机制让用户对线程调度进行干预:

1.用户指定线程优先级。

2.线程抢占控制

3.线程时间片控制

4.主动放弃处理器:可使用rtems_task_wake_after函数主动放弃对处理器的占用。

转载于:https://www.cnblogs.com/sichenzhao/p/9320315.html

rtems线程管理与调度(一)相关推荐

  1. 操作系统知识点大总结【进线程管理与调度】

    文章目录 一.进程管理 二.进程的组成 1.进程的概念 2.进程的程序段.数据段.PCB 三.进程的特征与状态 1.进程的特征 2.进程的基本状态 3.进程的运行状态 四.进程的控制 五.进程的通信与 ...

  2. Linux内核线程kernel thread详解--Linux进程的管理与调度(十)【转】

    转自:https://blog.csdn.net/gatieme/article/details/51589205 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:/ ...

  3. RTEMS线程调度算法(RMS)详解

    RTEMS是以线程为基本调度单位的,调度算法基于优先级的抢占式线程调度,支持256个线程优先级.当然RTEMS值hi创建同等优先级线程,相同优先级的线程采用时间片轮转调度.调度器寻找下一个最高优先级就 ...

  4. Unix进程和线程管理及其异同

    Unix进程和线程管理及其异同 一,进程 1,什么是进程 在最初的单处理器系统中,系统中的多道程序按照一定规则切换而实现多任务处理,后来发现多个程序并发导致系统资源被共享,为了描述和管理程序对共享资源 ...

  5. Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)

    Linux进程的退出 linux下进程退出的方式 正常退出 从main函数返回return 调用exit 调用_exit 异常退出 调用abort 由信号终止 _exit, exit和_Exit的区别 ...

  6. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)

    转自:http://blog.csdn.net/gatieme/article/details/51383272 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux- ...

  7. Linux 操作系统原理 — 进程与线程管理

    目录 文章目录 目录 前言 进程与线程 内核线程,用户线程与轻量级进程 内核线程 轻量级进程 用户线程 轻量级进程与用户线程的区别 用户线程与轻量级进程的混合模式 用户线程和内核线程的区别 线程的实现 ...

  8. Linux内核——进程管理与调度

    进程的管理与调度 进程管理 进程描写叙述符及任务结构 进程存放在叫做任务队列(tasklist)的双向循环链表中.链表中的每一项包括一个详细进程的全部信息,类型为task_struct,称为进程描写叙 ...

  9. Linux下1号进程的前世(kernel_init)今生(init进程)----Linux进程的管理与调度

    Linux下有3个特殊的进程,idle进程(PID=0PID=0), init进程(PID=1PID=1)和kthreadd(PID=2PID=2) * idle进程由系统自动创建, 运行在内核态 i ...

最新文章

  1. 台积电新工艺路线图披露:7nm最快明年4月试产
  2. Leaflet中实现添加比例尺控件与自定义版权控件与链接
  3. python中的__iter__ __reversed__ __next__
  4. MaxCompute(ODPS)上处理非结构化数据的Best Practice
  5. 反序列化 php R类型,pikachu-PHP反序列化、XXE、SSFR
  6. 110_Power Pivot特殊结算日期及财年日期
  7. Javascript document对象常用的方法和属性
  8. 如何成为信息安全专家
  9. Linux内存管理:kmemcheck介绍
  10. PNG和PVR之间互相转换的脚本
  11. [js]promise学习2
  12. html5 progress css,CSS内容:HTML5进度上的attr()不起作用
  13. 计算机刷bios版本,怎么升级Bios?教你快速更新升级Bios
  14. 软件工程 | 第三章 需求分析
  15. 加密word文档脱壳教程
  16. 阿里oss客户端直传
  17. 车架号OCR识别算法
  18. 【Linux】《Linux命令行与shell脚本编程大全》阅读笔记
  19. Android错误:unexpected text found in layout file
  20. C++开源游戏推荐,植物大战僵尸(Cocos2dx开源项目)

热门文章

  1. 作为HTC在MWC2012移动世界大会上推出的全新系列产品。
  2. SQL SERVER定时备份数据库
  3. Android Vector笔记
  4. MySQL InnoDB锁机制全面解析分享
  5. AutoIt3(AU3)开发的智能驱动安装工具,用于系统封装,支持参数静默启动
  6. OC动态创建的问题变量数组.有数组,在阵列13要素,第一个数据包阵列,每3元素为一组,分成若干组,这些数据包的统一管理。最后,一个数组.(要动态地创建一个数组).两种方法...
  7. (转)C#操作XML的完整例子——XmlDocument篇
  8. 初涉网络实验-路由器端口的开启与配置
  9. read-sequence的返回值
  10. 部署 kubernetes 集群(CentOS7.3,K8S1.8.3)