仮想記憶(の続き)、入出力 12/17

課題1   仮想記憶

vm-6.cpp の内容を理解し、以下のように実行時間を 測定してみよ。 vm-6.cpp をコンパイルした実行形式を vm-6 とする。

実験例

実行中、別のターミナルで top を実行し、%CPU と Mem: used, Swap: used, の値を観察せよ。 ディスクのアクセスランプも観察してみよ。

このシステムのページサイズはいくらだろうか?

課題2 入出力と割り込み。

sched-4.cpp を実行して、time でその実行時間を測定せよ。 以下の3つの場合について実行時間が違う理由を考察せよ。

  1. 実行中、キーボードやマウスを一切操作しない場合。
  2. 実行中、マウスを激しく動かした場合。
  3. 実行中、キーボードを操作した場合。

参考

  1. プロセススケジューリング(プロセスの選択)は以下のタイミングで行われる。
    • プロセスが time quantum を使い果たしたとき。
    • I/O 割り込みが起きた時

  2. Linux では、使用した CPU 時間から算出される優先度に基づいてスケジューリング が行われる。

課題3 入出力とディスクキャッシュ(準備)

  1. ディスクへの書き込みを行うツールとして writeMB.cpp を使う。 コンパイルし、実行形式を writeMB とせよ。

  2. ./wirteMB 10 と実行してみよ。どこにどんなファイルが出来るか? そのサイズを確認せよ。

  3. メモリーを大量に使うプログラムとして、課題1で使ったプログラム vm-6.cpp を使う。コンパイルして実行形式を vm-6 とせよ。

  4. top を動かしつつ、./vm-6 26 0 を実行せよ。top 表示の Mem:used と 右上の buff, cached のふるまいを観察せよ。

  5. ファイルの読み取り速度を計るためには、cat コマンドを使うことにする。 しかし、普通に cat したのでは、画面への出力に時間が取られてしまうので、 特別なデバイス /dev/null を使う。 cat   /tmp/OS-1217-10MB   > /dev/null を実行し、 /dev/null に変化が生じるか どうか確認せよ。

    /dev/null はどんなデータも「受け入れて、そのまま捨ててしまう」 特別なデバイスである。実際には何ら書き込みは起きない。

課題4

writeMB で 100MB のファイルを作成し、time   cat   /tmp/OS-1217-100MB > /dev/null でそのファイルの 「読み出し」速度を測定せよ。

top で buff, cache を観察しつつ、以下の測定を何度か繰り返せ。結果の理由を 考察せよ。

提出課題