配色: 字号:
嵌入式操作系统μITRON综合习题
2014-09-19 | 阅:  转:  |  分享 
  
嵌入式操作系统μ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();



}

}

献花(0)
+1
(本文系海漩涡首藏)