第10回 コンピュータの仕組み

コンピュータの仕組み

洗濯機はモーターを回転させて洗濯する機械ですし、炊飯器はヒーターで加熱して米を炊く機械です。では、コンピュータはどういう仕組で何をする機械でしょうか?

(PPT版ダウンロード)

「PCのスペック」テンプレート (DOC版 | PDF版)

練習問題 10-1(☆)
  1. ジュースの自動販売機では、何が入力で、中でどんな処理をして、何が出力されるでしょうか?
  2. 練習問題07-5の「なぞなぞ」では、何が入力で、中でどんな処理をして、何が出力されるでしょうか?
練習問題 10-2(☆☆☆)
  1. 練習問題09-5の「ふしぎなポケット」で、ファイルex09-5.htmlex09-5.jsは主記憶装置に保存されていますか、補助記憶装置に保存されていますか?
  2. 「ポケット」ボタンをクリックすると、ブラウザの画面には「ポケットを叩くとビスケットが2つ」と表示されますが、この文字列は主記憶装置に保存されていますか、補助記憶装置に保存されていますか?
  3. ブラウザの再読み込みをすると、画面は「ポケットの中にはビスケットが1つ」だけに戻りますが、この時主記憶装置と補助記憶装置の間ではどのようなデータのやり取りが行われたでしょうか?
練習問題 10-3(☆)
  1. アクティビティモニタ(ディレクトリ【アプリケーション】→【ユーティリティ】の中)を起動しなさい。
  2. 「CPU」のタブを選ぶと、下にCPU使用率のグラフが表示されます。いろいろなアプリを起動したり終了したりして、グラフの変化を見なさい。
  3. 「ディスクの動作」のタブを選ぶと、下にディスクアクセスのグラフが表示されます。いろいろなアプリを起動したり終了したりして、グラフの変化を見なさい。

Windows10では、「タスクマネージャー」の「パフォーマンス」タブでCPUの使用率などを見ることができます。

オペレーティングシステム

オペレーティングシステム(OS)とは、コンピュータを管理するためのソフトウェアで、次のような機能があります。

プロセス管理
他のソフトウェアの起動、実行、終了などを管理する。
デバイスドライバ
応用(アプリケーション)ソフトウェアが入出力装置を使う時、実際の細かい操作はオペレーティングシステムに任せることによって、アプリケーションを作りやすくする。
ファイルシステム
補助記憶装置を使う時に、データをファイルやディレクトリという単位にまとめることで使いやすくする。
セキュリティ
装置やデータに対するアクセス権限を管理する。
ユーザインタフェース
GUIやCUIでコンピュータを操作できるようにする。

現在広く使われているオペレーティングシステムには次のような種類があります。

パソコン用
Windows, MacOS, Linux系(Ubuntuなど)
スマートフォン用
iOS, Android (カーネル部分はLinux)
サーバ用
Windows Server, Unix系(Solarisなど), Linux系(RedHatなど), メインフレーム系(z/OSなど)

プロセス管理

アプリケーションの実行中の状態をプロセスと呼びます。オペレーティングシステムはプロセスがどのような動きをしているかを管理し、必要ならば強制的に終了させることが出来ます。

練習問題 10-4(☆☆)
  1. アクティビティモニタを起動し、どのようなプロセスが動いているか見なさい。
  2. 項目名の「%CPU」のところをクリックし、CPUをたくさん使っている順に並び替えなさい。
  3. ブラウザやエディタでいろいろな操作をして、表示順がどう変わるか見なさい。
  4. アップルマークのメニューから【強制終了…】を実行し、ブラウザ(または他の適当なアプリケーション)を強制終了させなさい。
  5. 「保存していない変更内容は失われます」と注意が出ますが、これは何を意味しているのか、主記憶装置・補助記憶装置との関係で説明しなさい。

Windows10では「タスクマネージャー」を使って強制終了できます。

ファイルシステム

第3回でも勉強しましたが、もう一度復習します。

  • 補助記憶装置(主にHDD)の中身は、ディレクトリ(フォルダ)とファイルによって整理されています。
  • ディレクトリが違えば同じファイル名で別のファイルを作れます。したがって、ファイルを正確に指定するにはディレクトリも含めたパス名(絶対パス名または相対パス名)が必要です。
練習問題 10-5(☆☆)
  1. 前に作った「情報基礎」ディレクトリ(または他の適当なディレクトリ)の中に ex10-5.txt というファイルを作り、好きな文章を書きなさい。
  2. エディタで ex10-5.txt の絶対パス名を確認しなさい。
    • miでは、一番上にある/automountで始まる部分です。
    • Emacsでは、M-x pwdでディレクトリ名が表示されます。
    • Atomでは、ファイル名が表示されているタブのところにマウスカーソルを持って行くと、ポップアップで表示されます。
  3. ex10-5.txt をデスクトップにコピー(optionキーを押しながらマウスでドラッグ)しなさい。
  4. コピーしたファイルをエディタで開き、絶対パス名をさっきと比べなさい。
  5. コピーしたファイルの中身を適当に書き換えて保存しなさい。
  6. 元のファイルの内容は書き換わっているでしょうか?
  7. 元の ex10-5.txt のエイリアスをデスクトップに作りなさい(optionキーとcommandキーの両方を押しながらドラッグ、または右クリックメニューで「エイリアス作成」を選んでエイリアスを作り、それをデスクトップにドラッグ)。
  8. エイリアスをエディタで開き、中身を適当に書き換えて保存しなさい。
  9. 元のファイルの内容は書き換わっているでしょうか?
  10. 元の ex10-5.txt を削除しなさい。
  11. エイリアスをエディタで開くとどうなるでしょうか?
  • コピーは、内容が同じ別のファイルを作ります。名前が同じでもディレクトリが違えば別のファイルです。
  • エイリアスは、一つのファイルに別の名前を付けます。名前が違っていても同じファイルです。

ユーザインターフェース

(PPT版ダウンロード)

練習問題 10-6(☆☆☆☆☆)
  1. スライド資料にあった「宝探しゲーム」と同じものをウェブページのリンクで作ってみましょう。方針としては、各ディレクトリに map.html というファイルを作り、これをリンクでつないでいきます。
  2. 宝探しゲームのディレクトリを自分のディレクトリにコピーします。ターミナルで次のコマンドを実行しなさい。

    • cp はファイルやディレクトリをコピーするコマンドです。引数としてコピー元とコピー先の二つのパス名を書きます。
    • -R は指定したディレクトリの下にあるファイルを全部一気にコピーせよというオプションです。
    • 最後の ~/Desktop/情報基礎 はスライド資料の演習で作ったディレクトリです。~ は自分のホームディレクトリを表します。
  3. デスクトップの情報基礎ディレクトリの中に islands というディレクトリができていることを確認しなさい。
  4. islands の中に map.html というファイルを作ります。内容は次のようにします。
  5. islands の中の island-a の中にも map.html というファイルを作ります。内容は次のものを書きます。
    • 「ロードス島の地図」という見出し
    • 三つの港へのリンク
    • 出発点(islands の中の map.html)へ戻るリンク
  6. islands の中の island-a の中の port-a の中にも map.html というファイルを作ります。内容は次のものを書きます。
    • ファイル empty へのリンク(画面には「宝の箱」と表示)
    • 「ロードス島の地図」へ戻るリンク
  7. ここまで作ったものが http://ipl.sfc.keio.ac.jp/text/info1/exercise/islands/map.html にありますので、これを参考にして他の島や港のページを作りなさい。ある港から別の島の港への近道なども作ってみなさい。

emptygarbage はHTMLファイルではありません。そのようなファイルをどう表示するかはブラウザの設定によって違います。特別教室の設定では、Firefoxは中身のテキストをそのまま表示し、SafariはFinderでそのファイルを表示します。

場合分けと繰り返しの復習

場合分け繰り返しを前に勉強しましたが、それを組み合わせて使ってみましょう。

Fizz Buzzという遊びがあります。1から順に数字を言っていきますが、3で割り切れる時は数字の代わりにFizz、5で割り切れる時はBuzz、両方で割り切れる時はFizz Buzzと言わなければなりません。これをコンピュータにやらせてみましょう。

練習問題 10-7(☆☆☆)
  1. 練習問題09-6のプログラムを修正し、1から30までの数字が順に表示されるようにしなさい。
  2. 繰り返しの図の箱の中には何と書けばよいでしょうか?
  3. まず、3で割り切れる時はFizz、割り切れない時は数字を表示するようにします。場合分けの図の箱の中には何を書けばよいでしょうか?それから、上の繰り返しの図の中のどれかの箱を消して、下の場合分けの図を組み込みなさい。
  4. 上で描いた図に従ってex09-6.jsのプログラムにif文を組み込みなさい。条件の「3で割り切れる」とは「3で割った余りが0と等しい」ということです。割り算の余りを計算する演算子は%ですので、変数countの値を3で割った余りはcount % 3で計算できます。
  5. 次に、3で割り切れて5でも割り切れる場合はFizz Buzzと表示するようにします。さっき描いた図のどこに場合分けを組み込めばよいでしょうか?それに従ってif文を書きなさい。
  6. 最後に、3で割り切れなくて5では割り切れる場合はBuzzと表示するようにしなさい。
練習問題 10-8(☆☆☆☆☆)

何年か前に世界のナベアツ(今は桂三度)が「3の倍数と3が付く数字の時だけアホになります」というネタをやっていましたが、これをコンピュータにやらせてみましょう。1から99までの数字を順に表示し、3の倍数の時、1の位が3の時、10の位が3の時、数字の後に「アホ」と表示してみましょう。できれば論理演算子を使ってif文1個だけで書いてみましょう。

チェックポイント
  • コンピュータの五つの機能は何でしょうか?
  • CPUの性能は何によって測れるでしょうか?
  • 主記憶装置と補助記憶装置の違いは何でしょうか?
  • プロセスとは何でしょうか?
  • ファイルのアクセス権は何のために必要でしょうか?