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

  1. オペレーティングシステムの歴史

    1. オペレーティングシステムとは

       オペレーティングシステム(Operating System:OS)は、計算機がアプリケーションプログラムを実行するためのシステム用プログラムの集合体です。現在、商用のPC向けのオペレーティングシステムとして、マイクロソフト社のウインドウズ、 アップル社の MAC OS、などがよく利用されています。他にLinux 系のOSがあります。

    2. Linux OS

       Linuxはリーヌークス、リナックス、リヌックス、ライナックス、等様々な読み方をされています。最初の開発者は1961年スウェーデン系フィンランド人リーナス・トーバルズですが、その後、より多くの機能のあるOSを求める人々からの改良により大幅な成長を果たしました。Linux は BSD版UNIX を手本としています。UNIXはAT&Tのベル研究所が開発し、ソースコードと共配布されたOSです。これをもとにカリフォルニア大学バークレイでBSD系Unixが開発されました。
       
    3. ウインドウズ 

       ウインドウズはDOS にGUI を載せて1992年に発売された windows3.1 が最初です。その後、1995年にWindows95、98年にWindows98を発売し、個人向けPCの標準的なOSに成長しました。一方、企業向けをめざし1993年に発売されたWindowsNTは、その後、Windows2000に発展し、98系のWindows me と融合して、WindowsXPに統合され Windows Vista となり、現在これを改版したWindows7 が提供されています。さらに、今年、タブレット機能を組み込んだ Windows8 が提供されています。

    4. MAC OS,OSX

       アップル社のMacintosh シリーズのコンピュータのOSです。GUIの萌芽的な研究・開発であるゼロックス社のパロアルト研究所(PARC)の成果を受け継ぎ、1984年に初代 Macintosh を発売されました。その後、印刷、グラフィック、音、のプロが愛用する優れたソフトを実行する母体として、活用されています。
       MAC OS は Macintosh PC用のOSで 2001年以後の、 BSD UMIX ベースの OS X(テン)とは区別されます。OSのバージョン名としてネコ科の猛獣の名前がつけられています(最近では、Tiger、Leopard、Snow Leopard、Lion(10.5)、が提供されていま)。

    5. タブレット(スマートフォン)OS

       スマートフォン用の OS としてGoogle が提供する Android OS やアップルの提供する IOS が利用されるようになってきました。指先で操作できるタブレット型のGUIが特徴で、マウスと同等のタップやドラッグだけでなく、複数の指を利用したジェスチャ型のGUIが各種考案されています。また、電話・メール・写真・音楽だけでなく、機種によって各種センサーやテザリング(WiFi)サーバーの機能なども組み込まれています。

  2. OSの役割と機能


    1. OSの役割

       OSはハードウエアを利用し、実行するプログラムを効率的に実行するためのソフトウエア環境です。利用者にはプログラムを効率よく、あるいは、使いやすくするための仕組みを提供します。また、プログラマには、周辺機器やハードウエアによる差異を吸収し、アプリケーションの作成・実行を容易にする環境を提供します。

    2. OSの起動

       OSは、多くの場合マザーボード(CPU,メモリを含む基板)にあるフラッシュメモリに書き込まれたBIOS(Basic IO System)により読み込まれ、起動されます。BIOSはディスクの特定位置にあるブートローダ(boot:立ち上げ)プログラムを読み込み実行します。(一次)ブートローダはより大きな2次ブートローダを読み込み実行します。2次ブートローダがOSの読み込みを開始します。
       
    3. プログラム実行

       OSの目的は、プログラムの円滑な実行です。複数のプログラムを同時に実行するには、プログラムはどの番地からでも実行できる必要があります(再配置可能なプログラム:Relocatable といいます)。
       プログラムとは実行可能なリソース(ファイル)を意味し、メモリにコピーされプログラムとして実行される単位をプロセスといいいます。同じプログラムを二つ起動すると、異なる二つのプロセスが起動されます。

    4. OSの機能

       OSの機能には以下の機能が含まれます。

      • プロセス管理
        一般にプログラムは複数のプロセスとして実行されます。各プロセスは必要に応じて時分割方式(一定の時間間隔で実行プロセスを切り替える)で実行されます。プロセス管理はこのプロセスの実行管理を行います。

      • メモリ管理
        メモリはプログラム実行に必要な計算機資源(リソース)です。プロセスからの要求に応じてメモリを割り当て、不要になったメモリ領域を回収します。メモリ管理は主記憶だけでなく、キャッシュメモリや仮想メモリも対象になります。

      • ファイル管理
         ファイル管理はプロセスが必要とするデータを、ディスク領域に割り当て、名前をつけて管理します。名前の管理は階層的なディレクトリ管理を行います。
         削除されたファイル領域を再利用すると、細切れの領域が発生するため、領域の統合や領域の割り付けに工夫が必要です。

      • 入出力管理
         速度の遅い入出力装置を効率的に管理します。例えば、印刷をする場合、まず、アプリケーションでは印刷する内容をディスクに書き出し印刷処理を終了します。OSはディスクの印刷イメージを読み出し印刷を開始し、1ページの印刷が終了するとOSは次の印刷データをプリンタに送ります。

      • GUI(実行環境)
         最近重要になったOSの機能は利用者にとって、使いやすい実行環境(ユーザインタフェース)の提供です。画面のウインドウ機能とマウスによるGUI(Graphic User Interface)は主要な操作環境であり、これはOSが提供する API(APplication Interface) ライブラリによって可能になっています。

      • ネットワーク管理
        TCP/IPの場合、外部から到着したデータをポート番号により対応するプロセスに引き渡します。データを送る場合には、受信側からの再送要求に応える必要があります。また、共有ファイルなどネットワークを利用したリソース管理にはファイル処理との連携を行います。ネットワークについては、別の項目で説明します。
         
  3. プロセス管理


    1. プロセス起動、終了

       ウインドウ対応している多くのプログラムは、実行ファイルを直接ダブルクリックする、ショートカットやメニューから起動する、「作成したファイル(*.jpg、*.doc)をダブルクリックする」、などでアプリが起動されます。アプリはOSからはプロセスとして起動されます。起動されたプロセスはメモリが割り当てられ、最優先のプロセスになるとCPUが割り当てられ実行されます。プロセスは停止命令や利用者の停止指示で実行を停止します。
       下図は、Ctrl_Alt_Del キーで表示されるプロセスの一覧の例です。


    2. プロセス管理

       OSは多くのプロセスを必要に応じて切り替えながら実行します。切り替えは入出力装置への書き込や読み込み終了、一定時間の経過、などが要因になります。

    3. 割り込み機能

      プロセス管理で重要な機能はCPUの「割り込み機能」です。「割り込み」は、あるプログラムの実行の途中にハード的な要因で、別のプログラムを呼び出して実行するハードウエアの機能です。割り込まれたプログラムは、割込み処理が終了すると割り込まれた次の命令から実行を再開することができます。
       プロセス管理の割り込みはIO(入出力)処理やタイマー処理です。タイマーは一定時間ごとに現在処理中のプロセスに割り込み、同じ優先レベルのプログラムを順次実行します。

    4. 実行プロセスの選択

       OSは実行対象のプロセスを順次実行します。一定時間経過しても終了しないプロセスは、タイマー処理で一旦休止状態にし、未処理のプロセスの中で一番優先度の高いプロセスを実行します。これで、一つのCPUで複数のプロセスを見かけ上同時に実行できます。

    5. 入出力待ち

       プロセスの切り替えは、入出力でも発生します。例えば、あるプロセスが文字の入力を必要にした場合を考えます。OSは入力を要求したプロセス(プログラムの一部)を休止状態にし、実行対象からはずします。
       OSは文字入力を監視し、必要な文字を受け取ると休止したプロセスに渡して、そのプロセスを実行対象に加えます。このようにすることで、文字入力のように入力に長い待ち時間となるプロセスを実行しながら、待ち時間の間に別のプロセスを効率よく実行できます。

    6. スレッド起動(参考)

       プロセスは 内部でスレッドと呼ばれる「小さなプロセス」を複数起動する場合があります。スレッドもOSによりプロセス管理されますが、スレッド間でのメモリへのアクセス監視は行われません。アニメーションやネットワークサービスなどはスレッドを用い、プロセスの管理とは別のスレッドで処理を行います。

  4. メモリ管理


    1. 動的なメモリ割り当て

       メモリを効率的に利用するため、プロセスは必要に応じて実行時にメモリ要求をすることができます。動的なメモリ要求に対応するため確保されているメモリをヒープといいます。動的に確保した領域を不要になったら開放することが必要です。
       Javaなど処理系によっては、不要になったメモリ領域を集めて再利用する機能があります。この機能をガベージ(ごみ)コレクション(garbage collection)といいます。

    2. ページ管理とアクセス違反

       メモリはページ単位で分割管理されます。特定のプログラムは複数のページが割り当てられ実行されます。割り当て領域以外のページにアクセスすると、ハードウエアでアクセス違反が検出され、実行が停止されます。
      C言語のプログラムで、キーボードから変数 num に値を読み込むとき
       scanf("%d",&num)
      で、numの番地を scanf( ) に渡しますが、& を忘れると、num の値そのものを番地としてアクセスするため、アクセス違反を起こし、プログラムが強制停止を受けることがあります。

    3. 仮想記憶管理

       仮想記憶は補助記憶を主記憶の一部として利用する方式です。仮想記憶を利用するため、主記憶をページと呼ばれる一定のサイズに分割し、ページ単位に主記憶と補助記憶を交換する方式をページング方式といいます。このとき、入れ替えるため主記憶から補助記憶に移すページを選択する手法が重要です。
       
  5. ファイル管理


    1. 階層ディレクトリ

       ファイル名を集めたファイルをディレクトリ(directory:人名簿)といいます。ディレクトリファイルをディレクトリの内部に置くことで、階層的なファイル名の管理ができます。\ や . を階層的な名前の区切りに利用します。
      例 \usr\lib\dia.lib
       usrディレクトリの中のlibディレクトリの内部のdia.libファイル
      先頭の \ はディレクトリの先頭(ルートディレクトリ)を意味します。\usr\lib をファイルパス(pass:経路)と呼びます。先頭に\がついている場合を絶対パス、ついていない場合は、特定のディレクトリからのパスですから、相対パスと呼びます。

    2. Windowsのファイルシステム

       FATおよびNTFS方式が採用されています。FATは小型のファイルシステムですが、ファイルの作成・削除を繰り返すと、ファイルの領域がトビトビ(不連続)になるため、ファイルの読み書きが遅くなります。USBやSDメモリではFAT16システムが採用されています。FAT16システムの上限は2GBで、2GB以上ではFAT32が利用されますが、互換性はありません。FATシステムはファイルの検索も先頭から順に探しますから、ファイル数が大きくなると、効率が悪くなります。
       NTFSはファイルの生成、削除、検索、にツリー型の効率の良い手法が用いられます。

    3. ファイル領域の管理

      ファイルは、生成や消滅が繰り返されます。大きなファイルを作成する場合、連続した領域を確保できず、飛び飛びの領域が確保されると、ファイルのアクセス効率が悪くなります。ファイルは、生成や消滅が繰り返されます。大きなファイルを作成する場合、連続した領域を確保できず、トビトビの領域が確保されると、ファイルのアクセス効率が悪くなります。NTFSはFATより堅牢・効率が良いファイルシステムですが、生成、消滅の繰り返しのよる効率の劣化を完全に避けらることは困難です。

    4. デフラグ処理(参考)

        デフラグ処理は、トビトビに配置されたファイル領域を連続領域に移し変える作業を行います。以下はウインドウでデフラグ処理をした例である。

       デフラグツールは、コントロールパネル>コンピュータの管理>記憶域 にあります。

    5. Windowsのファイル属性(参考)

       Windowsでは、ファイルやフォルダの作成、更新、アクセス、の日付を管理しています。また、「読み取り専用」、「隠しファイル」の属性があり、ファイルの変更や表示を禁止します。ファイルの詳細は、ファイルを右クリックし、「プロパティ」から知ることができます。

  6. 入出力管理


    1. 入出力装置とドライバ

       入出力装置はドライバと呼ばれるプログラムを通して、OSから制御されます。ドライバはOSからの書式に合わせて装置を制御します。同じOSに異なる装置を接続する場合、装置のハードウエアの差異を吸収するのは、このドライバが役割です。
       プリンタやマウスなどの周辺装置を接続すると、対応するドライバが自動的に組み込まれます(プラグアンドプレイ)。よく利用されるドライバはあらかじめシステムに登録されており、システムディスクやネットワークから組み込まれます。登録されていないドライバは付属のディスクやネットワークから場所を指定し組み込みを指示します。

    2. 入出力と同期(参考)

       プロセスが入出力を必要とし、その入出力が終了しないと次の実行ができない場合、同期式の入出力といいます。入出力が終了を待つ必要がない場合、非同期方式といいます。一般にディスクのファイルは同期式の制御、プリンタの印刷などは非同期制御になります。同期制御を実行したプロセスは、OSにより休止状態になり実行の対象から外されます。入出力が終了すると、レディ状態に復帰し順次実行されます。
       非同期処理の場合、プロセスの実行と並行して処理が進みます。印刷処理では、印刷要求があると、印刷内容が一旦ハードディスクに記録されます。その後、1ページづつ印刷されます。1ページ印刷が終わると、プリンタの終了割り込みにより、OSは次のページのデータをプリンタに渡します。印刷を起動したプロセスは終了後も、印刷処理は続行されます。この処理方式をスプール処理(Simultaneous Peripheral Operations On-Line)と呼びます。

    3. システムコールとWindowsのドライバ

       アプリケーションからは接続装置とは独立した「システムコール」により周辺装置を理由します。システムコールは「ドライバ」を経由して、周辺装置を制御します。「システムコール」についてはテキストを参照してください」
       
    4. ドライバの一覧

       システムに登録されているドライバ(装置)は、マイコンピュータを右クリック、「システムのプロパティ」の「ハードウエア」から「デバイスマネジャ」で一覧できます。ここから、ドライバの変更や更新も可能です。
       

  7. アンケート・課題

     
    1. アンケート

      ■仮想記憶に対する説明で不適切なものはどれか
        1.メモリの効率的な利用法で、実際のメモリではない 2.ディスクを主記憶の替わりに利用する方法
        3.Windows では仮想記憶の容量は変更できない 4.主記憶の1.5〜2倍程度の量が適当である

      ■プロセスに関する説明で不適切なものはどれか
       1.一つのプログラムに複数のプロセスが対応する 
       2.プロセッサが1個の場合、特定の時刻で動作するプロセスは一つだけである。
       3.プロセスがプロセスを作ることがある  4.プロセスとプログラムは同じ概念である

      ■スマートフォンの利用経験
       1.利用している  2.利用したことがある 3.利用していない 

    2. 演習、課題

      以下の設問に答えなさい。

      ■配列を利用したプログラムで、アクセス違反でプログラムが停止される場合がある。どのような場合か、説明しなさい。

      ■OSの役割(機能)について調べ、そのうち、3項目について具体的な内容を説明しなさい。

      ■ワードで印刷を始めたが、途中で停止したくなった。ワードを終了しても印刷が停止しないのはなぜか?停止するにはどのような操作が必要か、調べなさい。

      ■テキスト(Windows OSはなぜ動くのか)で、システムコールについて調べ説明する。