内核结构

内核结构

 

1、 uc是怎样处理临界段代码的?

 

Uc/os在处理临界段代码时必须先关中断,等处理完毕后再开中断,关中断的时间是实时内核的重要指标。

 

进入和退出临界段宏指令为:

 

OS_ENTER_CRITICAL();  OS_EXIT_CRITICAL()

 

在不同的处理器在OS_CPU.H文件中进行了不同的定义,具体用哪种,取决于用户打算移植到的处理器性能及所用的c编译器,这两个函数是用汇编写的

 

OS_ENTER_CRITICAL();  OS_EXIT_CRITICAL()可以用不同的方法实现,通过CRICITAL_METHOD可以选择具体那种方法

 

CRITICAL_METHOD=1时,直接用处理器指令关中断和开中断

 

CRITICAL_METHOD=2时,在堆栈中保存中断的开关状态,然后再关中断,在执行OS_EXIT_CRITICAL()时,从堆栈中弹出原来中断的开关状态。

 

CRITICAL_METHOD=3时,利用扩展功能得到当前处理器状态的值,并保存在c函数的局部变量中。利用该变量恢复原先的中断状态。

 

2、 什么是任务?

 

一个任务是一个超循环,由三个部分组成:任务代码、任务控制块、任务堆栈

 

3、 Uc是怎样得知用户任务的?

 

通过任务控制块

 

4、 任务是怎样调度的?

 

uCOS II总是运行进入就绪态任务中优先级最高的那一个。确定哪个任务优先级最高,下面该哪个任务运行了的工作是由调度器(Scheduler)完成的。任务级的调度是由函数OSSched()完成的。中断级的调度是由另一个函数OSIntExt()完成的

 

Uc的任务调度分两步:

 

最高优先级的查找:在就绪表中查找

 

任务切换:将被挂起任务的微处理器寄存器推入堆栈,然后将较高优先级的任务的寄存器值从栈中恢复到寄存器中

 

5、 怎样写中断服务子程序?

 

中断服务子程序要用汇编,用于中断后的事件处理

 

6、 什么是时钟节拍,uc是怎样处理时钟节拍的?

 

时钟节拍是特定的周期性中断(时钟中断),这个中断可以看作是系统心脏的脉动。操作系统通过时钟中断来确定时间间隔,实现时间的延时及确定任务超时。中断之间的时间间隔取决于不同的应用,一般在10200 ms之间。时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时提供等待超时的依据。时钟节拍频率越快,系统的额外开销就越大。系统定义了32位无符号整数OSTime来记录系统启动后时钟滴答的数目。用户必须在多任务系统启动以后再开启时钟节拍器,也就是在调用OSStart()之后。

 

μC/OSII中的时钟节拍服务是通过在中断服务子程序中调用OSTimeTick()实现的。

 

7、 Uc是怎样初始化的?

 

在调用任何其他服务之前,首先调用初始化函数OSInit(),建立空闲任务和统计任务

 

8、 怎样启动多任务的?

 

在初始化之后调用函数OSStart(),但是在启动uc之前,至少须建立一个应用任务

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值