【問題】
下記のT-Kernel用のプログラムを読み,設問1~3の問いに答えよ。
ただし,システム起動時にtask3が優先度82に設定された状態で起動され,tk_dly_tsk 以外の処理時間は近似的に0msであると仮定する。
1 LOCAL ID semid;
2
3 void task1(INT stacd, VP exinf)
4 {
5 // Get semaphore
6 tk_wai_sem( semid, 1, TMO_FEVR );
7
8 tk_dly_tsk( 100 );
9
10 tk_sig_sem( semid, 1 );
11
12 // Get semaphore
13 tk_dly_tsk( 10 );
14 tk_wai_sem( semid, 1, TMO_FEVR );
15
16 // (う)
17
18 tk_exd_tsk();
19 }
20
21
22 void task2(INT stacd, VP exinf)
23 {
24 // (あ)
25
26 tk_dly_tsk( 30 );
27
28 tk_wai_sem( semid, 1, TMO_FEVR );
29
30 // (い)
31
32 tk_dly_tsk( 20 );
33
34 tk_sig_sem( semid, 1 );
35
36 tk_exd_tsk();
37 }
38
39 void task3(INT stacd, VP exinf)
40 {
41 T_CTSK ctsk;
42 ID tid1, tid2;
43 T_CSEM csem;
44
45 // Create semaphore
46 csem.exinf = NULL;
47 csem.sematr = TA_TFIFO | TA_FIRST;
48 csem.isemcnt = 1;
49 csem.maxsem = 1;
50
51 semid = tk_cre_sem( &csem );
52
53 // Create task1.
54 ctsk.exinf = NULL;
55 ctsk.tskatr = TA_HLNG | TA_RNG0;
56 ctsk.task = task1;
57 ctsk.itskpri = 81;
58 ctsk.stksz = 1024;
59
60 tid1 = tk_cre_tsk( &ctsk );
61
62 // Create task2.
63 ctsk.exinf = NULL;
64 ctsk.tskatr = TA_HLNG | TA_RNG0;
65 ctsk.task = task2;
66 ctsk.itskpri = 80;
67 ctsk.stksz = 1024;
68
69 tid2 = tk_cre_tsk( &ctsk );
70
71 // Start task
72 tk_sta_tsk( tid1, 0 );
73 tk_dly_tsk( 10 );
74 tk_sta_tsk( tid2, 0 );
75
76 tk_exd_tsk();
77 }
図1●T-Kernel用のプログラム
【設問1】
task3 の実行開始から(あ)の点に到達した時点までに経過する時間を選択肢の中から一つ選べ。
【選択肢】
1. 10 ms
2. 30 ms
3. 40 ms
4. 100 ms
【設問2】
task3 の実行開始から(い)の点に到達した時点までに経過する時間を選択肢の中から一つ選べ。
【選択肢】
1. 10 ms
2. 30 ms
3. 40 ms
4. 100 ms
【設問3】
task3 の実行開始から(う)の点に到達した時点までに経過する時間を選択肢の中から一つ選べ。
【選択肢】
1. 50 ms
2. 100 ms
3. 110 ms
4. 120 ms
【正解】(マウスでドラッグして文字を反転させてください)
設問1:1
設問2:4
設問3:4
|