課題

[ うえ ]

以下の課題提出は任意(提出しなくてもよい)とする。 ただし、提出した場合は定期試験の点数に付加するものとする。 その他、不明点については、yas@nanzan-u.ac.jp まで問い合わせること。

よって、以下の課題を提出すれば 3 〜 15 点を、定期試験の点数に付加する。 発展問題については、さらに 0 〜 10 点 を付加する (結果が、間違った場合は 0 点)。

まず、以下の C 言語プログラムをダウンロードせよ。

  1. X ウインドウ用のヘッダファイル (xx.h)
  2. 入力が、出力より速い場合 (bound0.c)
  3. 入力が、出力より遅い場合 (bound1.c)

1. 2. のプログラムのプログラムは Linux で、 以下のようにコンパイルし、実行することができる。 ただし、ヘッダファイル (xx.h) がカレントディレクトリにあることを確かめよう。

prompt% gcc -I/usr/X11R6/include bound0.c -L/usr/X11R6/lib -lX11 -lm -lpthread

prompt% ./a.out

prompt% gcc -I/usr/X11R6/include bound1.c -L/usr/X11R6/lib -lX11 -lm -lpthread

prompt% ./a.out

しかし、このプログラムは、 入力が出力を追い越したり(速い場合)、 出力が入力を追い越したり(遅い場合)して 「有限バッファ問題」の解とはいえない。 この 1. 2. のプログラムに計数セマフォ (counting semaphore) を使うよう追加し、 うまく同期処理をするプログラムとして完成せよ。

レポート形式 は任意とするが、A4 の紙に、 ワープロまたは、LaTeX で印刷し、提出せよ。 ただし、以下の項目は、必ず記述せよ。

以上を、まとめ、左上一ヵ所をホッチキスでとめ、 以下の期日までに提出せよ。

〆切: 最後の講義[解答例]

以下の発展問題も同様に提出せよ。

発展問題


[ うえ ]