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

站群网站和做seo那个号网站开发网站设计素材

站群网站和做seo那个号,网站开发网站设计素材,好的免费博客网站,网站开发流程php文章目录 前言:首先要谢谢韦东山老师的无私奉献,让我学到了很多东西,我做这个笔记是害怕我会忘记,所以就记录了下来,希望对大家有帮助!关于寄存器CPU内部的寄存器这些寄存器到底要保存一些什么?…

文章目录

  • 前言:首先要谢谢韦东山老师的无私奉献,让我学到了很多东西,我做这个笔记是害怕我会忘记,所以就记录了下来,希望对大家有帮助!
  • 关于寄存器
    • CPU内部的寄存器
    • 这些寄存器到底要保存一些什么?
    • 某些寄存器记录的场景
  • FreeRTOS中怎么创建任务
    • 创建任务的函数:
    • 创建任务时函数内部都干了什么?:
  • 任务的调度
    • 任务调度的基本机制
    • 任务调度的核心
    • 再深度一点任务链表调度
    • 任务调度切换做了什么?
    • 关于任务挂起以及休眠期间的行为

前言:首先要谢谢韦东山老师的无私奉献,让我学到了很多东西,我做这个笔记是害怕我会忘记,所以就记录了下来,希望对大家有帮助!

关于寄存器

关于任务的轮换以及中断恢复继续得以原来为止继续运行,一点也离不开寄存器的作用,所以想要了解任务,了解寄存器也是必不可少的!

CPU内部的寄存器

CPU内部有R0、R1、……、R15共16个寄存器
某些寄存器有特殊作用
R13,别名SP,栈寄存器,保存着栈的地址
R14,别名LR,返回地址,保存着函数的返回地址
R15,别名PC,程序计数器,也就是当期程序运行到哪了

这些寄存器到底要保存一些什么?

记录程序运行到了哪里实际上是靠PC寄存器来完成的?PC寄存器的值

函数中一般也会有着函数嵌套的使用,一个函数中还调用了另外一个函数,当这个函数运行完成后,要怎么返回到调用的地址呢?这就要靠LR来记录了!

其他寄存器也有着他们各自要记录的数据,比如R0,R1就专门用来传函数参的!

某些寄存器记录的场景

1、函数调用 2、中断处理 3、任务切换

FreeRTOS中怎么创建任务

创建任务的核心:栈、TCB结构体

创建任务的函数:

在这里插入图片描述
看到这个函数的参数中的栈的大小,我们疑惑该如何合理定义他的大小呢?这个定义的栈的内存又是从哪里来的呢?

创建任务时函数内部都干了什么?:

大小的定义:这个一般取决于我们任务重的局部变量的大小以及函数调用的深度来决定的,我们使用过程中一般都会使用动态分配,所以就不再深究了。
哪里来?
打开一个工程,我们可以从里面的heap2.c文件中看到,里面开辟了一个数组(空闲的内存),这个就是用于各个任务的栈。
在这里插入图片描述

分配好了栈后,这个栈的起始地址就会存在这个任务的TCB结构体里面的pxstack.
再根据起始地址找到PC,得以继续从原来地方继续往下运行,假如给一个任务分配好了,大概样子就会是这样:

假设这个任务被中断了,各个寄存器就会保存好当前的东西,到时候这个任务再次运行的时候就恢复,继续在上次运行到的地方继续运行!
在这里插入图片描述
创建每个任务时,都会给每个任务分配一个结构体(TCB结构体)
在这里插入图片描述
关于结构体(有删减,保留了主要的内容):

在这里插入图片描述

任务的调度

任务调度的基本机制

优先级不同
1、高优先级的任务,优先执行,可以抢占低优先级的任务
2、高优先级的任务不停止,低优先级的任务永远无法执行
3、同等优先级的任务,轮流执行:时间片轮转
状态
运行态:running
就绪态:ready
阻塞:blocked,等待某件事(时间、事件)
暂停:suspend,休息去了
怎么管理?
找到最高优先级的运行态、就绪态任务,运行它
如果大家平级,轮流执行:排队,链表前面的先运行,运行1个tick后乖乖地去链表尾部排队
谁进行调度?
TICK中断!

任务调度的核心

任务的调度的核心就是链表!!!
在每次创建任务时,都会产生一个TCB结构体,上面也有讲,每次创建任务时,里面的操作还会将这个任务的TCB结构体加入到一个链表里面。
在这里插入图片描述
循序渐进,我们可以发现里面定义了很多链表,现在我们就先来了解其中关于任务创建的链表:
在这里插入图片描述
在这里插入图片描述
相信可以从链表的英文名就可以看出,这些链表的命名与任务的状态有关系。自然而然的就知道了其中的奥妙了吧!
创建任务时会把任务的TCB放入到Ready链表中,“就绪了,准备发车!“。

再深度一点任务链表调度

在这里插入图片描述

我们首先创建两个优先级一样的任务,好了,函数就会把他们两个的TCB放入Ready链表里面,那么到底是谁先运行呢?我刚开始以为是随机的,起始不然,程序运行时,内核会逐个的从高优先级往下找,找到高优先级的就先运行
在这里插入图片描述
这里只创建了两个相同优先级的任务,这里先创建的任务1,其次再是任务2,等级都为0,那么Ready链表里面存有它们的TCB,里面会有一个“指针”寻址这位置,创建任务一时,指向任务1,创建任务2时,就指向了2了,所以这里会先找到任务2,运行了任务2再到任务1!(TCB里面有着每个任务的栈的起始地址,再根据起始地址找到PC)

任务调度切换做了什么?

精简四字概括:保留,恢复
在这里插入图片描述

关于任务挂起以及休眠期间的行为

在这里插入图片描述
Delay函数就会做出这样的行为:
在这里插入图片描述
这里delay了五个Tick:
接下来没一个Tick,系统都会去Delay链表里面看看任务的时间有没有到,如果到了,就会将Task3的TCB从Delay链表中移去,重新加入到Reeay链表中!
在这里插入图片描述

http://www.yayakq.cn/news/750578/

相关文章:

  • 哪里有网站推广软件西地那非片能延时多久每次吃多少
  • 洛阳网站建设制作多少钱石家庄新钥匙建站
  • 做的好的电商网站开发个app的公司在哪
  • 2014年百度seo网站排名的详细优化因素统计长沙线上注册推广公司
  • 做设计需要素材的常用网站有哪些怎么在百度上建网站
  • 江西中恒建设集团网站有多少种做网站后台程序
  • 佛山市和城乡建设局网站首页科技手札
  • 在线网站制作系统源码营销型商务网站
  • 适合seo的建站系统山西建设厅网站密钥
  • 做一个自己的网站手机网站自助建站系统
  • 网站建设优化服务市场福步外贸
  • 东莞seo建站优化公司搜索引擎优化包括哪些
  • 做网站业务员如何跟客户沟通个人养老金制度出台有望年底
  • 400套商业网站的静态模板网站制作经费预算
  • 淘宝客返利网站开发网页设计模板图片汽车
  • 免费建立网站的软件大学生旅游网站设计框架
  • 最新wordpress电商主题面试问你如何快速优化网站
  • phpcms 专题网站模板重庆建设集团公司
  • cdr做网站流程网站开发遇到的难点
  • 新农村建设 网站扫码点餐小程序怎么制作
  • 潍坊奎文住房和城乡建设局网站微信官网首页手机版
  • 湖南做旅游网站南京网络推广建站
  • 米拓企业网站管理系统做黄页网站要告我
  • 网站百度推广方案网站长尾关键词
  • 网站上的二维码怎么做王烨雄
  • 软件自学网站博山专业网站优化哪家好
  • 网站建设包含的内容wordpress上一篇
  • 校园网站建设和管理工作制度网站建设教程微云网盘
  • 网站开发未按合同约定工期完工app找什么公司
  • 衡水建设网站公司黑五类广告推广