平成30/ 2018-10-23 19:49
応用情報/ 平成22年 秋期 応用情報技術者 午後 問7

設問 1
(1)176.4
44.1×1000=44100バイト
16÷8=2バイト
44100×2×2ch=176400バイト
176400÷1000=176.4KB

(2)2ブロック
文章より、
1ブロック目!
オーディオデバイスは、マイクから入力された音声のアナログ信号をサンプリングし、PCM符号に変換して、録音データとしてサンプリング専用RAMに一時的に格納する。

2ブロック目!
録音データを音声データに変換する。…エンコードした音声データ及び録音詳細情報を不揮発性メモリに保存する。
→つまり、録音データを音声データに変換する処理で、もう1ブロック使う。
その後、その手前は良く分からないが音声データエンコード処理を完了した時点で、そのデータを不揮発性メモリに保存してから、録音データを削除、録音データ保存開始するのだろう。

設問 2
デットロック
→図3 録音詳細情報表示処理の流れ図と、図4 エンコード処理の流れ図を比較すると、セマフォの取得部分の順番が違う。
図4で音声データのセマフォ取得し、図3で利用者設定領域のセマフォを取得した場合、図4の利用者設定領域のセマフォがロックかかっていて取得できなくなる。
そのとき、図3では、音楽データのセマフォが取得できなくなるので、デットロックになる。

( Thanks. )
http://s.webry.info/sp/madamadakorekara-ganbaru.at.webry.info/201102/article_38.html
解答例・解答の要点
設問 1
(1)a 176.4
(2)  2

設問 2
2つのタスクで2種類のセマフォ取得順序が逆だから
または
デッドロックが発生したから
または
ともにセマフォの取得待ちによるデッドロックが発生したため
または
セマフォ取得順序が逆だから

設問 3
b エ(実行可能)
c ウ(実行)
d コ(利用者設定領域)
e カ(待ち)

解説
設問 1
(1)a
サンプリング周波数 44.1kHz
量子化ビット数 16ビット(2バイト)
チャンネル数 2ch
このことから、
44.1×10^3×2×2 =
よって
(1)a 176.4 kHz

(2)
オーディオデバイスは、1秒間の録音データ(1ブロック)をサンプリング専用RAMに格納した後、
割込みを発生し、録音タスクにメッセージを送信します。
録音タスクは、メッセージを受信すると、サンプリング専用RAMに格納されている録音データを
音声データにエンコードするが、
エンコードは、次のオーディオデバイスの割込み発生までに完了する。
したがって、
最低
(2) 2 以上の
    サンプリング専用RAMがあれば、
    録音タスクは連続してエンコードすることができる。

設問 2
音声データ領域セマフォを取得後、UIタスクにメッセージを送信すると、
優先度の高いUIタスクが実行される。
(録音タスクは実行可能となる)
UIタスクでは、まず利用者設定領域セマフォを取得した後、
次に音声データ領域セマフォを取得しようとする。
しかし、
音声データ領域セマフォは、すでに録音タスクにより取得されているため
取得できず、UIタスクは待ち状態となってしまう。
このとき
実行可能状態にある録音タスクが実行状態となり実行しようとするが、
録音タスクは、利用者設定領域セマフォを取得ができず
待ち状態になってしまう。
つまり、両タスクともに動作しなくなったのは
2つのタスクで2種類のセマフォ取得順序が逆だから
または
デッドロックが発生したから
または
ともにセマフォの取得待ちによるデッドロックが発生したため
または
セマフォ取得順序が逆だから

設問 3
設問 2と同様に、UIタスクの優先度が高いことを考えると
音声データ領域セマフォ、および利用者設定領域セマフォを取得後、
UIタスクにメッセージを送信すると
録音タスクは、実行可能(空欄 b)状態となり、
優先度の高いUIタスクが実行(空欄 c)状態となる。
UIタスクは、まず、利用者設定領域(空欄 d)セマフォを取得をしようとするが、
取得できないため、待ち(空欄 d)状態となる。
よって
b エ(実行可能)
c ウ(実行)
d コ(利用者設定領域)
e カ(待ち)