当前位置: 首页 > news >正文

做照片书哪个网站好微信朋友圈营销方案

做照片书哪个网站好,微信朋友圈营销方案,长春企业网站建设,四川省 政府网站建设目录 概述 1 RT-Thread线程定义 1.1 优先级设定方法 1.2 内存管理 1.2.1 RT-Thread的线程类别 1.2.2 RT-Thread的线程调度 2 线程重要属性 2.1 线程栈 2.2 线程状态 2.3 线程优先级 2.4 时间片 概述 本文主要介绍RT-Thread线程的定义和属性,其包括线程的…

目录

概述

1 RT-Thread线程定义

1.1 优先级设定方法

1.2 内存管理

1.2.1 RT-Thread的线程类别

1.2.2 RT-Thread的线程调度

2 线程重要属性

2.1 线程栈

2.2 线程状态

2.3 线程优先级

2.4 时间片


概述

本文主要介绍RT-Thread线程的定义和属性,其包括线程的定义,线程类别,线程调度方法,还重点介绍了线程的重要属性,包括线程状态,优先级和时间片等内容。

1 RT-Thread线程定义

在 RT-Thread 中,与上述子任务对应的程序实体就是线程,线程是实现任务的载体,它是 RT-Thread 中最基本的调度单位,它描述了一个任务执行的运行环境,也描述了这个任务所处的优先等级。

1.1 优先级设定方法

1)重要的任务可设置相对较高的优先级,

2)次重要的任务可以设置较低的优先级,

3)不同的任务允许设置相同的优先级,轮流运行。

当线程运行时,它会认为自己是以独占 CPU 的方式在运行,线程执行时的运行环境称为上下文,具体来说就是各个变量和数据,包括所有的寄存器变量、堆栈、内存信息等。

1.2 内存管理

RT-Thread 线程管理的主要功能如下:

1.2.1 RT-Thread的线程类别

系统中存在两类线程,分别是系统线程和用户线程

系统线程:由 RT-Thread 内核创建的线程

用户线程: 由应用程序创建的线,

这两类线程都会从内核对象容器中分配线程对象,当线程被删除时,与该线程相关的线程对象也会被从对象容器中删除。如下图所示,每个线程都有一些重要的属性,如:线程控制块、线程栈、入口函数等。

1.2.2 RT-Thread的线程调度

RT-Thread 的线程调度器是抢占式的,主要的工作就是从就绪线程列表中查找最高优先级线程,保证最高优先级的线程能够被运行,最高优先级的任务一旦就绪,总能得到 CPU 的使用权。

当一个运行着的线程使一个比它优先级高的线程满足运行条件,当前线程的 CPU 使用权就被剥夺了,或者说被让出了,高优先级的线程立刻得到了 CPU 的使用权。

如果是中断服务程序使一个高优先级的线程满足运行条件,中断完成后,被中断的线程挂起,优先级高的线程开始运行。

当调度器调度线程切换时,先将当前线程上下文保存起来,当再切回到这个线程时,线程调度器将该线程的上下文信息恢复。

2 线程重要属性

2.1 线程栈

RT-Thread 线程具有独立的栈,当进行线程切换时,会将当前线程的上下文存在栈中,当线程要恢复运行时,再从栈中读取上下文信息,进行恢复。

线程栈还用来存放函数中的局部变量:函数中的局部变量从线程栈空间中申请;函数中局部变量初始时从寄存器中分配(ARM 架构),当这个函数再调用另一个函数时,这些局部变量将放入栈中。

对于线程第一次运行,可以以手工的方式构造这个上下文来设置一些初始的环境:入口函数(PC 寄存器)、入口参数(R0 寄存器)、返回位置(LR 寄存器)、当前机器运行状态(CPSR 寄存器)。

线程栈的增长方向是芯片构架密切相关的,RT-Thread 3.1.0 以前的版本,均只支持栈由高地址向低地址增长的方式,对于 ARM Cortex-M 架构,线程栈可构造如下图所示。

线程栈大小可以这样设定,对于资源相对较大的 MCU,可以适当设计较大的线程栈;也可以在初始时设置较大的栈,例如指定大小为 1K 或 2K 字节,然后在 FinSH 中用 list_thread 命令查看线程运行的过程中线程所使用的栈的大小,通过此命令,能够看到从线程启动运行时,到当前时刻点,线程使用的最大栈深度,而后加上适当的余量形成最终的线程栈大小,最后对栈空间大小加以修改。

2.2 线程状态

线程运行的过程中,同一时间内只允许一个线程在处理器中运行,从运行的过程上划分,线程有多种不同的运行状态,如初始状态、挂起状态、就绪状态等。在 RT-Thread 中,线程包含五种状态,操作系统会自动根据它运行的情况来动态调整它的状态。 RT-Thread 中线程的五种状态,如下表所示:

状态描述
初始状态当线程刚开始创建还没开始运行时就处于初始状态;在初始状态下,线程不参与调度。此状态在 RT-Thread 中的宏定义为 RT_THREAD_INIT
就绪状态在就绪状态下,线程按照优先级排队,等待被执行;一旦当前线程运行完毕让出处理器,操作系统会马上寻找最高优先级的就绪态线程运行。此状态在 RT-Thread 中的宏定义为 RT_THREAD_READY
运行状态线程当前正在运行。在单核系统中,只有 rt_thread_self() 函数返回的线程处于运行状态;在多核系统中,可能就不止这一个线程处于运行状态。此状态在 RT-Thread 中的宏定义为 RT_THREAD_RUNNING
挂起状态也称阻塞态。它可能因为资源不可用而挂起等待,或线程主动延时一段时间而挂起。在挂起状态下,线程不参与调度。此状态在 RT-Thread 中的宏定义为 RT_THREAD_SUSPEND
关闭状态当线程运行结束时将处于关闭状态。关闭状态的线程不参与线程的调度。此状态在 RT-Thread 中的宏定义为 RT_THREAD_CLOSE

2.3 线程优先级

RT-Thread 线程的优先级是表示线程被调度的优先程度。每个线程都具有优先级,线程越重要,赋予的优先级就应越高,线程被调度的可能才会越大。

RT-Thread 最大支持 256 个线程优先级 (0~255),数值越小的优先级越高0 为最高优先级。在一些资源比较紧张的系统中,可以根据实际情况选择只支持 8 个或 32 个优先级的系统配置;

对于 ARM Cortex-M 系列,普遍采用 32 个优先级最低优先级默认分配给空闲线程使用,用户一般不使用。在系统中,当有比当前线程优先级更高的线程就绪时,当前线程将立刻被换出,高优先级线程抢占处理器运行。

2.4 时间片

每个线程都有时间片这个参数,但时间片仅对优先级相同的就绪态线程有效

系统对优先级相同的就绪态线程采用时间片轮转的调度方式进行调度时,时间片起到约束线程单次运行时长的作用,其单位是一个系统节拍(OS Tick)。

一个时间片的案例:

假设有 2 个优先级相同的就绪态线程 A 与 B:

1)A 线程的时间片设置为 10,B 线程的时间片设置为 5

2)当系统中不存在比 A 优先级高的就绪态线程时,系统会在 A、B 线程间来回切换执行,并且每次对 A 线程执行 10 个节拍的时长,对 B 线程执行 5 个节拍的时长

执行方式,如下图:

http://www.hengruixuexiao.com/news/34199.html

相关文章:

  • 怎么做钓qq密码网站潍坊在线制作网站
  • 永久免费的网站推荐seo排名优化网站
  • wordpress html cdn临沂seo
  • 网站友好度兰州seo优化入门
  • 重庆微网站制作新站seo快速排名 排名
  • wordpress父菜单可点击南京关键词优化软件
  • 贵阳网站建设zu97上海最近三天的新闻
  • 做理财的网站有哪些问题开发制作app软件
  • 做网站的公司现在还 赚钱吗怎么有自己的网站
  • 免费做漫画网站百度推广销售话术
  • 在线网站建设诚信经营军事新闻头条
  • 西安千叶网站建设百度竞价排名价格
  • 做木皮的网站seo权重查询
  • 新网站做seo 的效果电商运营助理
  • 做静态网站需要成本吗东莞新闻最新消息今天
  • 网站建设费用皆选网络关键词优化怎么做
  • 重庆网站哪里好淘宝seo优化是什么
  • 黑客网站网址大全seo店铺描述例子
  • wordpress邮件注册网站快速排名优化
  • dx网站是哪家公司做的寄生虫seo教程
  • 贵州建站管理系统百度账号怎么注销
  • 郑州seo网站推广怎样优化网站排名
  • 做钢铁资讯的网站小程序搭建
  • 杭州专业网站建设公司哪家好国际军事新闻今日头条
  • 淘客做网站多少钱seo网站排名优化快速排
  • o2o网站开发公司网站外贸推广
  • 企业网站内容更新怎么操作提供搜索引擎优化公司
  • 网站怎么做收入中国舆情观察网
  • 北京朝阳网站建设教育培训机构推荐
  • .网站开发工具dw网络推广的渠道