操作系统笔记.doc

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统笔记

实时操作系统基础 1.4 基于优先级的不可剥夺内核 内核:主要功能是进行任务调度。内核中最核心的基本服务就是调度的核心—任务切换。 基于优先级的调度算法:在uC/OS中,可以同时有64个就绪任务,每个任务都有各自的优先级。优先级用无符号整数表示,从0~63,取值越大则优先级越低。uC/OS总是调度就绪了的、优先级最高的任务获得CPU的控制权。 不可剥夺型内核和可剥夺型内核 1.5 同步与通信 同步:有时候,一个任务完成的前提是需要另一个任务给出一个结果,任务之间的这种约束性的合作机制称为任务间的同步。 互斥:共享资源称为临界资源,这种访问共享资源的排他性就是互斥。临界资源可以是全局变量,也可以是指针、缓冲区或链表等其他数据结构,也可以是如打印机、硬盘等硬件。 要做到互斥访问临界资源,操作系统可以有多种方法,uC/OS采用的方法有关中断、给调度器上锁和使用信号量等。 临界区:每个任务中访问共享资源的那段程序称为临界区。临界区不允许任务切换。为保证系统的实时性,临界区代码必须尽量短,能够在限定时间内完成。 任务事件:事件就是操作系统运行过程中发生的事情。事件处理的对象主要有信号量、互斥信号量、事件标志组、邮箱、消息队列。 信号量:信号量标识了共享资源的有效可被访问次数。 互斥信号量:互斥信号量用于互斥资源的访问及在使用互斥信号量管理需要解决的优先级反转问题(采用优先级继承机制)。 事件标志组:事件标志组管理的条件组合可以是多个事件都发生,也可以是多个事件中有任何一个事件发生,还可以是多个事件都没有发生或多个事件中有任何一个事件没有发生。 消息邮箱:邮箱中的内容不是信件本身,而是指向消息内容的地址。 消息队列:消息队列是由多个消息邮箱组合形成的,是消息邮箱的集合,实质上是消息邮箱的队列。同样是采用事件控制块来指示消息的位置和标记等待消息的任务。不同的是,消息队列自身有消息控制块这样的数据结构,事件控制块中指示的不再是消息的地址,而是消息控制块的地址,使用消息控制块可以先进先出的方式管理多条信息。 1.6 时钟、中断和内存管理 中断:中断是实时地处理内部或外部事件的一种内部机制。中断源称为异步事件,处理异步事件所使用的程序是中断服务程序。 时钟中断服务:在uC/OS中,通过对硬件的设置,使在10~200ms的时间间隔内产生一次时钟中断,在该时钟中断服务程序中,对延时的任务进行延时计数,检查系统中是否有高优先级任务就绪而没有得到运行,相应进行任务调度。 内存管理:uC/OS中采用分区的方式管理内存,即将连续的大块内存按分区来管理,每个分区又包含数个内存块,每个内存块大小相同。uC/OS采用内存控制块来管理内存。内存控制块记录了内存分区的地址、分区中内存快的大小和数量,以及控制块的数量等信息。 第二章 任务管理 操作系统内核运行后,进行一次初始化操作OSInit,对操作系统的重要数据结构如任务控制块、事件控制块。就绪表等进行初始化,并创建两个系统任务(统计任务和空闲任务)。然后创建一个TaskStart任务,该任务用于设置时钟中断服务程序,接着调用OSStart启动多任务,开始真正多任务地执行。 2.1 任务管理数据结构 任务管理数据结构包括任务控制块、任务空闲链表和任务就绪链表、任务优先级指针表、任务堆栈等,是uC/OS-II内核的核心部分之一。这些数据的内容完全反映了任务的运行情况。 任务优先级:优先级是任务的唯一标志。各个任务的优先级必须不同,因此uC/OS以优先级作为事件的标志,作为任务管理的主键。任务的优先级可以是0~63,优先级62和63被统计任务和空闲任务占用,数字越小,优先级越高。 任务优先级指针表:任务优先级指针表是用来获取某优先级的任务的任务控制块地址。 任务优先级指针表的定义如下: OS_TCB *OSTCBPrioTbl[OS_LOWEST_PRIO + 1 ] 假如创建一个优先级为5的任务,在取得任务控制块的地址之后,需要简单地把该地址赋值给OSTCBPrioTbl[5]。那么以后在根据优先级查找任务控制块的时候,不需要遍历就绪链表,因为OSTCBPrioTbl[5]中就是这个任务控制块的地址。 任务控制块(OSTCBTbl):任务控制块是任务管理的核心数据结构,操作系统在启动的时候,首先要在内存中创建一定数量的任务控制块。任务控制块的数量等于操作系统能同时管理的最多任务数。每个任务都有自己的任务控制块。 OS_STK *OSTCBStkPtr 任务堆栈的指针 void *OSTCBExtPtr 扩展块的指针 ★ OS_STK *OSTCBStkBottom 任务堆栈的栈底地址 INT32U *OSTCBStk

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档