嵌入式操作系统μITRON综合习题(能答多少答多少,不知道的自己猜猜看)
一.填空题
处于________状态的任务才会被μITRON调度来获得CPU运行权;某一个时刻处于________状态的任务最多只能有一个。
任务的创建方式有____________和_____________两种方式。
一个EVENTFLAG最多可以表示________个事件,当某个任务在等待某个事件的发生时(也就是处于WAITFLAG),等待的事件发生了(也就是SETFLAG),则该任务会先迁移到__________状态。
ITRON下内存管理方法采用的是静态分配内存的方法,并且将内存区域分为_________和_________两部分,各自独立管理。
对于任务,CYC和中断三种可被管理的对象,其执行的优先顺序为:_________>__________>____________。
应用程序和μITRON内核之间的接口一般为____________。
μITRON系统下任务调度的基本方式为____________________________________________。
互斥体锁定的资源最大数为___________。假设任务A的优先级为8,在任务A运行中发行互斥体锁定了临界资源a。此时优先级为2的任务B抢占了CPU,处于运行态。在任务B运行中要使用临界资源a,所以也发行了系统调度loc_mtx试图锁定临界资源a。则发行系统调度loc_mtx后,任务A的优先级为_________,任务B的状态为___________。
二.选择题(单选)
1.当任务A运行过程中发生了中断,当前任务A的状态为________
A.RUNB.WAITC.READYD.DORMANT
2.产生系死的原因可能是由于?A、程放源?B、一个程入死循?C、多个程争,源出了循等待?D、多个程争共享型rel_wai和wup_tsk的主要区别是什么?
四.应用题
1.假设共享资源数n为2,则设置一个信号量为2。分别有三个任务A,B,C要对共享资源进行访问,下图所示为各任务进行信号量使用的过程,请根据图示内容填写发行各任务发行系统调度(wai_sem/sig_sem)
2.以下图为例,请说明任务A发行slp_tsk以及其他任务对任务A发行wup_tsk后各点当前wakeup计数值。
五.应用题
1.假设有任务A,要求任务A处理函数a()过程中不允许其他任务打断,请描述上述实现方法。
2.假设任务A的处理函数a()即使中断产生也不允许打断,请描述
其实现方法。
3.假设有两个任务A,B。当任务A等待message过程中,任务B进行如下处理后,任务A的状态分别为什么状态。
voidTSK_BBB(void)
{
任
sus_tsk(TSK_ID_BBB); //①任务A的状态变为_________.
.......
snd_msg(MBX_ID_BBB,…) //②任务A的状态变为_________.
.......
/任务B给任务发送message/
rsm_tsk(TSK_ID_BBB); //③任务A的状态变为_________.
.......
}
4..RTOS提供系4MS定周期ModeCheck()等代
1,2,等待
二.选择题
1.A2.C3.C4.B5.B,A6.B7.D,B
三.简答题
1.μITRON系统主要有哪些功能?
解答:一般基于ITRON系统的RTOS都具有一下主要功能:
1.TASK管理功能
2.同步通信功能
3.中断管理功能
4.内存池管理功能
5.时钟管理功能
6.系统调度功能
2.μITRON系统任务的含义和特点是什么?
解答:
1.基本含义
任务就是一个具有独立功能的无限循环的程序段的一次运行活动。从系统的角度看,任务是竞争系统资源的最小运行单位。任务可以使用或等待CPU、内存空间等系统资源,并独立与其它任务,与它们一起并发运行。
2.主要特点
??动态性:任务的状态是不断变化的。
??并行性:系统中同时存在多个任务,它们宏观上是同时运行的
??异步独立性:任务是系统中独立运行的基本单元,也是内核分配和调度的基本单元,每个任务各自按相互独立的不可预知的速度运行,走走停停。
3.μITRON系统任务主要有哪几种状态?
解答:
ITRON规范下将任务化分为七个状态,如下所述:
NONEXISTENT状态
未登陆状态,就是说虽然程序中有该TASK,并且已经装配到内存中了,但是由于没有在ITRON系统中注册,所以不受OS的管理也不会运行。
DORMANT状态
休眠状态,就是任务生成时或者运行完了时的状态。
READY状态
成为内核调度对象管理的状态。得到了除CPU运行权以外的所有必要资源。只要得到运行权就可以运行。
RUN状态
运行状态,当前正在执行的TASK。系统中处于RUN状态(也就是获得运行权)的任务只有一个。
WAIT状态
等待状态,由于缺少运行的必要条件,不能马上进入RUN状态,当等待的条件一旦满足就会迁移到READY状态等待继续运行。
SUSPEND状态
挂起状态,就是被其他任务强制中断执行(通过系统调用sus_tsk)的状态,该状态的解除是通过系统调用rsm_tsk来进行的。
WAITSUSPEND状态
双重等待状态,也就是处于WAIT中的任务发行了sus_tsk后迁移到的状态。在该状态时,如果suspend状态被解除就迁移到wait状态;而wait状态被解除则迁移到suspend状态。
4μITRON系统下邮箱机制,信号量机制,EVENTFLAG机制分别主要实现什么功能?
解答:
EventFlag:任务间的协调功能
Semaphore:对系统资源进行排他访问
MailBox:任务间的信息通信
5.μITRON系统下各种资源的等待一般都有三种方式(分别对应3个系统调度)。
以等待message的方式为例,请分别说明:rcv_msg/pcv_msg/trcv_msg三个系统调度的含义和差异。
解答:
1.rcv_mbx:如果邮箱中存在MSG时就获取MSG并继续运行。如果邮箱中没有MSG,则任务迁移到Wait状态,直到邮箱中存在MSG为止。
2.pcv_mbx:运行状态不变。通过返回值判断是否获得MSG,做不同的处理。
3.trcv_mbx:指定时间内获得MSG则执行,否则迁移到Wait状态等待指定的时间,TimeOut后迁移到Ready状态。
三种系统调用发行后的任务的状态变化不同。trcv_mbx具有timeout功能,pol_flg不改变任务状态。trcv_mbx中timeout时间设置为-1后与rcv_mbx含义就一样了。
其他如信号量,事件标志等待的三种方式原理都类似,需要掌握其原理。
6.rel_wai和wup_tsk的主要区别是什么?
解答:rel_wai和wup_tsk的主要区别如下:
(1)wup_tsk只能释放slp_tsk引起的等待状态,而rel_wai还可以释放其他原因引起的等待状态(wai_flg、wai_sem、rcv_msg和get_blk等。)
(2)从处于等待状态的任务中可以看出,wup_tsk释放等待状态返回正常完成(E_OK),而rel_wai释放等待状态返回一个错误代码(E_RLWAI)。
(3)如果slp_tsk仍未执行,则wup_wai的唤醒请求排队等候。如果为一个不处于等待状态的任务发放rel_wai调用,则返回错误代码E_OBJ。
四.应用题
1.答案:
a:n=1,任务A状态不变仍为Run;
b:n=0,任务B状态不变仍为Run;
c:n=0,任务C状态从Run迁移到Wait状态;
d:n=0,任务C状态变为Ready,之后根据优先级参与CPU竞争;
e:n=1,任务B状态不变仍为Run;
2.解答:答案如下
五.应用题
1.假设有任务A,要求任务A处理函数a()过程中不允许其他任务打断,请描述上述实现方法。
答案:
TaskA
{
…
dis_dsp();
a();
ena_dsp();
….
}
假设任务A的处理函数a()即使中断产生也不允许打断,请描述
其实现方法
答案:
TaskA
{
…
loc_cpu();
a();
unl_cpu();
….
}
假设有两个任务A,B。当任务A等待message过程中,任务B进行如下处理后,任务A的状态分别为什么状态。
voidTSK_BBB(void)
{
任
sus_tsk(TSK_ID_BBB); //①任务A的状态变为双重等待状态
.......
snd_msg(MBX_ID_BBB,…) //②任务A的状态变为挂起状态
.......
/任务B给任务发送message/
rsm_tsk(TSK_ID_BBB); //③任务A的状态变为就绪状态
.......
}
4..RTOS提供系4MS定周期ModeCheck()等代
解答:方法1.使用CYC,4MS定周期ModeCheck();
使用tslp_tsk(4)来
void TSK_CCC(void)
{
while(1){
tslp_tsk(4);
ModeCheck();
}
}
使用dly_tsk(4)来
void TSK_CCC(void)
{
while(1){
dly_tsk(4);
ModeCheck();
}
}
|
|