ucOS学习--重点知识

1、 多任务使各个任务分享__CPU__,是多个任务__调度__切换_的过程。多任务使__CPU__利用率最大化。在实时系统应用中,多任务最大的优点是_操作系统__替用户管理多个任务,系统的复杂性无需用户操心。

2、 多任务会带来诸如 任务间的竞争、死锁、优先级翻转、可重入性问题、任务间通讯、同步 等一系列问题。

3、 不允许中断打入的代码叫做 ___临界段代码_

4、 操作系统是一种为应用程序提供服务的 系统软件,是一个完整计算机系统的有机组成部分。从层次来看,操作系统位于  计算机硬件  之上, 应用软件 之下。所以也把它叫做应用软件的运行 平台 。从用户的角度来看,操作系统就是   API和系统函数 ,用户可以调用它们来对  系统资源  进行操作。

5、 操作系统中经常使用的数据结构包括 数组 位图结构链表、队列、堆栈

6、 程序的切换是通过处理器中的  PC 寄存器实现的。

7、 任务运行环境包括两部分:即__处理器__中的运行环境和_内存_中的运行环境。

8、 操作系统的实时性指的是在__规定时间_内完成操作,实时性又分为_硬实时操作系统____软实时操作系统__

9、 在设计嵌入式系统时,通常遇到的挑战性问题包括:_计算机硬件____计算机软件__以及__非计算机工程的问题__

10、嵌入式操作系统可以统称为应用在 应用在嵌入式系统的操作系统 的操作系统,它具有一般操作系统的功能,同时又有嵌入式软件的特点,主要有:可固化、可配置、可剪裁 、独立的板级支持包,可修改 、不同的CPU有不同的版本 ,以及集成的 交叉开发工具 

11 ARM处理器的工作模式分为:__用户模式_____快速中断模式___外部中断模式____超级用户模式____数据访问中止模式____未定义指令终止模式____系统模式__七种工作模式。

12  UCOS  II 嵌入式实时操作系统中,任务的状态包括__睡眠状态____就绪状态____运行状态____等待状态_____中断服务状态___五种。

13 嵌入式系统通常具有_微型化__可裁剪性____实时性___高可靠性____易移植性__等特点。

二、简答(每题4.5分至10分,请尽可能详细描述)

1什么是死锁

答:死锁也称为 a deadly embrace, 2个任务互相等待对方占有的资源,若无外力作用,它们都将无法进行下去。此时称系统处于死锁

2什么是可重入性

答:可重入函数 a reentrant function 允许同时被多个函数调用,而不必担心由于同时调用引起的数据破坏。中断随时可能发生,然后中断又返回,而可重入函数的数据不会因此而破坏。可重入函数只使用局部变量,用到全局变量时,一定会有保护措施。

3、任务之间的同步与通信指的是什么?

答:同步  协调彼此运行的步调,保证协同运行的各个任务具有正确的执行次序 

通信  彼此间传递数据或信息,以协同完成某项工作。

4什么是事件?什么是事件控制块

答: 1  UCOS  II使用信号量、消息邮箱、和消息队列这些中间环节来实现任务之间的通信,为方便起见,这些中间环节被统一称作“事件“。为了把描述事件的数据结构统一起来,用来描述信号量、消息邮箱、和消息队列等这些事件的数据结构称为事件控制块ECB数据结构  事件控制块。

5、什么是优先级反转

答: 高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的现象,就被称为优先级反转(priority inversion)。

6请简述使用线程的优势

答:创建:在一个已有进程中创建一个新线程比创建一个全新的进程所需的时间开销少;

终止:终止一个线程比终止一个进程所花费的时间少;

切换:线程切换比进程切换所花费的时间少;

通信:使同一进程内部不同线程之间的通信效率得到显著提高。

在大多数操作系统中,不同进程之间的通信需要内核的干预,而同一进程内部不同线程之间则可直接通信。  

7应用程序中的临界段指的是什么

答:临界段也称为临界区(关键代码段),指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。为确保临界段代码的执行,在进入临界段之前要关中断,而临界段代码执行完以后要立即开中断。

8、简述操作系统中内存保护包括哪两方面的内容?

答:内存保护包含两个方面的内容:防止地址越界:每个应用程序都有自己独立的地址空间,当应用程序要访问某个内存单元时,由硬件检查该地址是否在限定的地址空间之内,只有在限定地址空间之内的内存单元访问才是合法的,否则需要进行地址越界处理;防止操作越权:对于允许多个应用程序共享的存储区域,每个应用程序都有自己的访问权限,如果一个应用程序对共享区域的访问违反了权限规定,则进行操作越权处理。内存管理机制静态分配系统在启动前,所有的任务都获得了所需要的所有内存,运行过程中将不会有新的内存请求。在强实时系统中,减少内存分配在时间上可能带来的不确定性。不需要操作系统进行专门的内存管理操作。系统使用内存的效率比较低下,只适合于那些强实时,且应用比较简单,任务数量可以静态确定的系统。

9、什么是系统的时钟节拍?时钟节拍定时中断服务程序如何来完成系统在每个时钟节拍时需要做的工作?

答:时钟节拍 RTOS需要的一种周期性中断 special periodical interrupt.可以认为,是系统心脏的节奏性跳动 2  可通过内核服务将任务延时若干个时钟节拍;任务等待事件发生时,若等待时间超过给定时钟节拍数,内核提供超时timeout指示。

10 为什么一个比较完善的操作系统必须具有动态分配内存的能力?UC/OS—II ANSIC在内存管理上做了什么改进从而满足实时操作系统的要求?

答: 应用程序在运行中为了某种特殊需要,经常需要临时获得一些内存空间,因此作为一个比较完善的操作系统必须具有动态分配内存的能力.

b  μC/OS-II改进了ANSI C用来动态分配和释放内存的malloc( )free( )函数,使它们可以对大小固定的内存块进行操作,从而使 malloc( )free( )函数的执行时间成为可确定的,满足了实时操作系统的要求

11 什么是嵌入式系统

答:嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

12、请描述一下UC/OS-II系统响应中断的过程?

答:系统接收到中断请求后,如果这是CPU出于中断允许状态(即中断是开放的),系统就会中止正在运行的当前任务,而按照中断向量的指向转而去运行中断服务子进程,当中断服务子进程的运行结束后,系统将会根据情况返回到被中止的任务继续运行,或者转向运行另一个具有更高优先级别的就绪任务。

13、操作系统中任务的挂起和恢复分别指的是什么?

答:所谓挂起一个任务,就是停止这个任务的运行,所谓恢复一个任务,就是将任务恢复为就绪状态。在UC/OS-II 中,用户任务可通过系统提供OSTaskSuspend()函数来挂起自身或者空闲任务之外的其他任务,用函数OS-TaskSuspend()挂起的任务,只能在其他任务中通过调用恢复函数OSTaskResume()使其恢复为就绪的工作状态。

转载于:https://www.cnblogs.com/markmin214/archive/2013/03/25/2987975.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.嵌入式实时操作系统的特点与常用的几种嵌入式操作系统。 实时性,可裁剪性。 ucos-Ⅱ RTLinux ARM-Linux KURT TimeSys Linux Mach 商业常见 VxWorks QNX pSOS Windows CE 2.掌握uC/OS-Ⅱ操作系统中的任务的存储结构与任务控制块主要成员变量的作用、任务的程序结构、任务的调度过程、任务状态的转换过程、任务的创建过程。任务级的切换与中断级的切换。 一.任务的存储结构P74 前一个任务控制块的Ptr 后一个任务控制块的Ptr 指向任务的Ptr 指向堆栈的Ptr 任务的优先级别 ............................ 任务的代码: void mytask(void * ) {......... For( ; ; ) {......} } 任务的堆栈: ....................... 系统在运行一个任务是,先按优先级找到任务控制块,在任务堆栈中找到任务代码的指针。 任务控制块是系统管理任务的依据。 任务控制块-------保存任务的属性 任务的代码-------任务的执行部分 任务的堆栈-------保存任务的工作环境 二.任务控制块主要成员变量的作用P78 不同任务 TCB成员变量个数不是固定的。 其中 OSTCBStat 用来存放任务当前状态。 其中 OSTCBDly 用来存放任务等待时限(节拍数)。 其中 OSTCBPrio 用来存放任务的优先级。 所有任务控制块分为2条链表:空闲任务块链表和任务块链表。 空闲任务块是uC/OS-Ⅱ的全局数据结构 OSInit()创建空闲任务控制块链表的步骤:1先在RAM中建立一个OS_TCB结构类型的OSTCBTb1[]使数组每个元素都是一个任务控制块,然后利用OS_TCB结构中的OSTCBTNext和OSTCBPrev连起来构成一个链表。 为了加快对任务控制块的访问速度:除了任务控制块链表创建成双向链表外在uC/OS-Ⅱ的uCOS-Ⅱ.H中还定义了一个OS_TCB*类型的数组OSTCBTb1[]专门用来存放指向各任务控制块的指针。 删除一个任务的实质:把任务的控制块从任务控制块链表中删除,并把它归还给任务控制块链表。但是任务的代码还在内存中没被删除。 任务的程序结构 任务的调度过程 在就绪任务表中寻找优先级最高的就绪任务置为运行态,然后中止当前正在运行的任务,从而运行刚刚那个置为运行态的任务 若 OSLockNesting当前的值不为0则 禁止调度 任务状态的转换过程 任务的创建过程 先检测任务的优先级是否合法 然后检测该优先级是否被占用 然后保留该优先级 然后初始化任务堆栈 然后获得任务控制块并初始化 然后任务计数器+1 最后调度 否则放弃任务 任务级的切换与中断级的切换 OSIntCtxSw() -- 中断级任务切换函数与OSCtxSw() -- 任务级切换函数的区别: OSIntCtxSw()与OSCtxSw()的后半部分相同,而OSIntCtxSw()缺少的断点保护,则在中断子程序中完成。但是两者都完成两任务的切换: OSCtxSw() 完成两个不同任务间的切换; OSIntCtxSw()则是在一定条件下,在中断结束后,原被中断的程序与更高优先级的任务之间的切换。 掌握五种任务的通信与同步的方法。对应的事件控制块与信号量集标志组的结构。并比较这五种任务的通信与同步的方法在请求、发送过程中的各自特点。 C/OS-Ⅱ操作系统初始化所须完成的的五件事:初始化几个重要的全局变量、数组OSTCBPrioTbl[ ]、就绪表、五个链表(空任务控制块、空事件控制块、空队列控制块、空信号量集标志组、空内存控制块)、创建空闲任务。或有条件创建统计任务。 中断及中断服务程序。定时中断服务及时钟节拍服务函数OSTimTick()的作用 CPU相应中断的条件:1至少有一个中断源向CPU 发出信号 2系统允许信号且未对此信号屏蔽。 钟节拍服务函数OSTimTick()的作用:1把用来记录时间进程的计数器OSTime+1 2遍历任务控制块链表中所有任务控制块,吧各个任务控制块中用来存放任务延时的OSTCBDly-1,并使该项为0,同时又不是被挂起的任务进入就绪状态。 6.掌握创建、请求与发送一个信号量与消息邮箱的程序流程。 7.熟练应用信号量与消息邮箱实现任务的通信与同步的程序设计。一个应用程序的基本框架。 8.了解C/OS-Ⅱ移植的一般原则。 C/OS-Ⅱ移植的条件:1在程序中可以开关中断2处理器支持中断并能产生定时中断3处理器支持中断且容纳一定数据的硬件堆栈4处理器有将堆栈指针和其他CPU存储器存储读取到堆栈的指令。 9.了解一个完整的基于C/OS-Ⅱ内核的操作系统组成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值