UC/0S2之基础总结
堆栈,就是在存储器中按数据“后进先出(LIFO)【类比杯子】”的原则组织的连续存储空间,为了满足任务切换和响应中断保存CPU寄存器中的内容及存储任务私有数据的需要,每个任务都应该配有自己的堆栈,
注意点:堆栈的增长方向是随系统所使用的处理器不同而存在差异,有些处理器要求堆栈的增长方向是向上的,而有些则是要求堆栈的增长方向是向下的;
当cpu启动运行一个任务时,cpu的各寄存器总是需要预置一些初始数据,例如指向任务的指针,程序状态字PSW等;
那么,在系统启动任务时,CPU从何处可以获得这些数据呢?一个最方便的方法是让cpu从这个任务的任务堆栈里获得这些数据/。为此,应用斥呢个需在创建一个新任务时,就必须把在系统启动这个任务时CPU各寄存器所需要的初始数据(任务指针,任务堆栈指针,程序状态字等)事先存放在任务的堆栈中,这样,当任务获得cpu使用权时,就能把堆栈中的初始数据复制到cpu的各寄存器里,从而可使任务顺利地启动并运行;
任务堆栈的初始化工作应该是由操作系统负责的,
uc/os2用来记录任务的堆栈指针、任务的当前状态、任务的优先级等一些与任务管理相关的属性的表叫做任务控制块;
任务控制块负责把任务代码和任务堆栈进行关联,从而使任务控制块,任务代码和任务堆栈称为一个整体;并且系统要通过这个任务控制块来感知和管理一个任务,因此,任务控制块就相当于一个任务的身份证,没有任务控制块的任务是不能被系统承认和管理的;
为了管理系统中的多个任务,uc/os2把系统所有任务的控制块链接成两条链表,并通过这两条链表管理各任务控制块,进而通过任务控制块对任务进行相应的操作;一条是空任务块链表(其中所有任务控制块还没有分配给任务);另一条是任务控制块链表(其中所有任务控制块已经分配给任务);
多任务os的核心工作就是任务调度。所谓调度,就是通过一个算法在多任务中确定哪个任务来运行,做这项工作的函数就叫做调度器;
UC/OS2进行任务调度的思想是,每时每刻总是让优先级最高的就绪任务处于运行状态,为了保证这一点,它在系统或用户任务调用系统函数及执行中断服务程序结束时,总是调用调度器来确定应该运行的任务并运行它;
多任务系统中,令cpu中止当前正在运行的任务转而去运行另一个任务的工作叫做任务切换,而按某种规则进行任务切换的工作叫做任务的调度;
在UC/OS2中,任务调度是由任务调度器来完成的,任务调度器的主要工作有两项:一、在任务就绪表中查找具有最高优先级的就绪任务;二、实现任务的切换;
UC/OS2中有两种调度器:一种是任务级的调度器,另一种是,中断级的调度器;
下面介绍任务级的调度器:
调度器把任务切换的工作分为两个步骤:
第一步是获得待运行任务的TCB指针;Task control block
第二步是进行断点数据的切换;
UC/0S2之基础总结的更多相关文章
- UC/0S2之中断
中断是计算机系统处理异步事件的重要机制.当异步事件发生时,事件通常是通过硬件向cpu发出中断请求的.在一般情况下,cpu响应这个请求后会立即运行中断服务程序来处理该事件: 为了处理任务延时.任务调度等 ...
- 学习嵌入式Linux有没有一个最佳的顺序(持续更新)
作为一个嵌入式Linux的初学者,我知道我可能将长期处于初学者阶段,因为我至今仍然没有能够摸索出一条很好的道路让我由初学者进入到更高级阶段.但是我始终没有放弃,本篇文章就是用来记录我学习嵌入式Linu ...
- 蚂蚁金服 Service Mesh 实践探索
SOFAMesh是蚂蚁金服在ServiceMesh方向上的探索,下面是它高级技术专家敖小剑在QCon上海2018上的演讲. Service Mesh 是一个 基础设施层,用于处理服务间通讯.现代云原生 ...
- NCB | 定量蛋白质组学揭示细胞外泌体通用标志物Syntenin-1
外泌体 (exosomes) 是由哺乳动物细胞通过"内吞-融合-外排"等机制,主动向胞外释放的纳米级 (直径40~60 nm) 双层囊泡小体,携带蛋白质.核酸.脂质等多种生物活性分 ...
- HTML5移动开发学习笔记之CSS3基础学习
CSS回顾 在学CSS3之前首先巩固下CSS的基础知识. 1.CSS框模型 举例子: #box { width: 70px; margin: 10px; padding: 5px; } 这个代码将出现 ...
- 【转】《从入门到精通云服务器》第六讲—OpenStack基础
前五期的<从入门到精通云服务器>受到了广泛好评,收到留言,有很多读者对云计算相关的技术非常感兴趣.应观众要求,我们这期要安利一条纯技术内容.准备好瓜子.花生,随小编一起进入OpenStac ...
- 基础知识漫谈(2):从设计UI框架开始
说UI能延展出一丢丢的东西来,光java就有swing,swt/jface乃至javafx等等UI toolkit,在桌面上它们甚至都不是主流,在web端又有canvas.svg等等. 基于这些UI工 ...
- java必备基础知识点
Java基础 1. 简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机.冰箱等 2. 简单写出 ...
- C++基础——模拟事务 (1)COMMAND模式
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
随机推荐
- Hive Map 端OOM 异常
怪异现象:数据量不大,且不是Reduce端OOM,是Map端OOM Map Task运行的时候数据流中包含了非法字符例如:EOF.NOP等东西,导致BufferedReader读取和StreamDec ...
- unity3d 2d游戏制作的模式
经过了4个月不懈的努力,我和图灵教育合作的这本3D游戏开发书预计下个月就要出版了.这里MOMO先打一下广告,图灵的出版社编辑成员都非常给力,尤其是编辑小花为这本书付出了很大的努力,还有杨海玲老师, ...
- [LeetCode]题解(python):142-Linked List Cycle II
题目来源: https://leetcode.com/problems/linked-list-cycle-ii/ 题意分析: 给定一个链表,如果链表有环,返回环的起始位置,否则返回NULL.要求常量 ...
- 通过web远程访问服务器的ipython
如果想同过一个Web浏览器的方式远程访问服务器上的ipython notebook sever,可通过下面的步骤实现. 服务器:ubuntu14.04 server 客户端:windows/unix/ ...
- 循环-21. 求交错序列前N项和
/* * Main.c * C21-循环-21. 求交错序列前N项和 * Created on: 2014年8月18日 * Author: Boomkeeper ***********测试通过**** ...
- java——%
%; //结果为1 %; //结果为-1 ; //结果为1.2000000000000002
- 使用Fiddler解析WCF RIA Service传输的数据
原文 http://www.cnblogs.com/wintersun/archive/2011/01/05/1926386.html 使用Fiddler 2 解析WCF RIA Service传输的 ...
- andrewchilds/jQuery.DomOutline
andrewchilds/jQuery.DomOutline DOM - 使用Javascript:让用户选择一个类似Firebug的HTML元素? -
- wordpress在window下完美实现301重定向的方法
问题: 首先,简单说一下关于301重定向的问题,最简单的理解就是,假设你的主机上绑定有 www.uilike.cn, uilike.cn, www.uiseo.cn三个域名,当你想输入 uilike. ...
- Java内存模型-jsr133规范介绍
原文地址:http://www.cnblogs.com/aigongsi/archive/2012/04/26/2470296.html; 近期在看<深入理解Java虚拟机:JVM高级特性与最佳 ...