情報学部 菅沼ホーム

ソフトウェア

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

      コンピュータは,中央処理装置,記憶装置,入出力装置といったハードウェアを揃えただけでは,何も実行することはできません.ワープロ,表計算,インターネットサーフィン,SNS などを実行するためのソフトウェアプログラム)が必要になります.さらに,利用目的が何であっても,上で述べたような利用目的に沿った応用ソフトウェアアプリケーションソフトウェア)と共に,オペレーティングシステムOS : Operating System )という基本ソフトウェアが必ず必要になります.オペレーティングシステムは,購入したコンピュータ等に前もってインストールinstall,コンピュータにソフトウェアを追加し使用可能にすること)されている場合がほとんどですので,オペレーティングシステムを選択するといった概念が希薄かもしれませんが,コンピュータの使用環境を左右する非常に重要なソフトウェアです.オペレーティングシステムの役割を簡単に述べれば,

    • コンピュータを使いやすくする.
    • コンピュータの資源,CPU,記憶装置,入出力装置などを効率よく使用する.
    • 利用者のデータを適切に管理する.

    のようになります.これらの役割を達成するため,オペレーティングスシステムは,後の述べる様々なインタフェース機能を提供すると共に,コンピュータの資源を有効に管理します.

      以下において,オペレーティングシステムについてより詳しく説明していきますが,最初に,主なオペレーティングシステムの例を挙げておきます.

    • UNIX  1969 年にAT&T 社ベル研究所で開発が始まったオペレーティングシステム,及び,その流れを汲むオペレーティングシステムの総称.

    • Linux  1991 年に,フィンランドの学生だった Linus B. Torvalds が UNIX と同等の機能を持つように開発したオペレーティングシステム.

    • Windows  Microsoft 社がパソコン用に開発したオペレーティングシステム.

    • Mac OSmacOS )  Apple 社のパソコン Macintosh( Mac )用に開発された UNIX 系のオペレーティングシステム.

    • Android  Google 社が Linux をベースにして,スマホやタブレット用に開発したオペレーティングシステム.

    • iOS  Apple 社が Mac OS をベースにして,スマホ( iPhone )やタブレット( iPad )用に開発したオペレーティングシステム.

    • メインフレーム用オペレーティングシステム  IBM 社がシステム/360 用に開発し,1966 年から利用可能になった OS/360 が非常に有名であり,現在は,その後継が利用されている.IBM 社以外のメーカーも,各社独自のメインフレーム用オペレーティングシステムを提供している.

  2. オペレーティングシステムの機能

    1. ユーザインタフェース

        「コンピュータを起動する」,「コンピュータを停止する」,「ファイル(後述)をコピーする」,「ファイルを削除する」など,コンピュータに対して,外部から,何らかの形で,命令を与えてやる必要がある場合があります.このような命令の仲介を行うのがユーザインタフェースです.初期のオペレーティングシステムにおいては,このような命令を与えることができるのは専門家だけでした.しかし,1 台のコンピュータを複数人で利用可能になったり,また,パソコンが普及することにより,一般の利用者もコンピュータを操作可能になりました.

        当初は,文字列として命令を入力するといった方法でしたが,画面上のアイコンicon,ファイルの内容やプログラムの機能などを絵文字にして表示した図形)をマウスや指で操作することによっても可能になりました.この方式は,グラフィカルユーザインタフェースGUI : Graphical User Interface )と呼ばれ,オペレーティングシステムのユーザインタフェースの機能が画期的に向上しました.

    2. アプリケーションプログラミングインタフェース

        例えば,応用プログラムを開発する際,入出力装置とデータのやりとりを行いたい場合,入出力装置固有の機能を使用したい場合など,それらを全てプログラム内で記述していては大変な作業になります.しかし,アプリケーションプログラミングインタフェースAPI : Application Programming Interface )を利用することによって,より簡単に応用プログラムを作成することができます.このように,アプリケーションプログラミングインタフェースは,応用プログラムとコンピュータの仲介を行う機能です.

    3. 通信インタフェース

        最近のコンピュータにおいては,メール,SNS,インターネット,クラウドcloud,利用者がデータやソフトウェアを持たなくても,他のコンピュータ上にあるデータやソフトウェアを,インターネットを通して,それらを自分のコンピュータ上に存在するような感覚で利用できる環境)など,他のコンピュータとの通信が不可欠です.これを支えるのが,通信インタフェースです.通信インタフェースは,プロトコルとも呼ばれ,コンピュータ間の通信規約(受け渡されるデータの形式やその意味を定めている)を意味します.

  3. 資源管理

    1. 入出力管理

        入出力装置に対する入出力は,CPU の処理速度に比較して,非常に遅く,かつ,その処理は非常に複雑です.応用ソフトウェアを開発するプログラマに過度の負担を掛けないようにすることが,オペレーティングシステムを開発する一つのきっかけになりました.当初は,入出力の制御を CPU で行っていましたが,CPU への負担を軽減することを目的に,入出力の制御を入出力制御装置に任せるという方法に変わりました.さらに,主記憶装置へのデータの読み書きも入出力制御装置が行う直接メモリアクセス方式DMA : Direct Memory Access )が採用されるようになってきました.大型コンピュータでは,入出力チャネル(単に,チャネル)という入出力用のコンピュータをもうけ,チャネルを通して入出力制御装置を制御しています.入出力を制御するオペレーティングシステムのプログラムは,応用プログラムと入出力装置の中間に位置し,入出力装置に依存しない部分と入出力装置固有の部分(ドライバと呼ばれる)から構成されています.

        入出力を効率的に行うため,様々な工夫がなされています.その一つはバッファリングです.例えば,応用プログラムが出力要求を出すと,オペレーティングシステムがそのデータをバッファに書き,実際の出力装置への出力は入出力制御装置に任せるため,応用プログラムの実行を出力装置への出力と並行して行うことができます.また,外部記憶装置への入出力を高速な中間メモリ(キャッシュ,主記憶装置のキャッシュとは異なる)を介して行うことによってより高速な入出力処理が可能になります.例えば,過去に行った入出力データをキャッシュに残しておき,その後の入出力要求がキャッシュ内のデータで満足されれば,その入出力処理は非常に速くなります.

        最近は,USB を経由して接続する記憶装置が多く存在します.接続はどのようなタイミングで行っても構いませんが,取り外すときは十分注意してください.必ず,取り外す処理を行い,「取り外しても良い」というメッセージが出力されてから取り外してください.さもないと,内容が破壊される場合もありますので十分注意してください.

    2. ファイル管理

        ファイルfile )とは,データやプログラムの塊であり,ワープロで作成した文章,プログラム,カメラで撮影した画像など,その内容は様々ですが,後に利用する可能性があるものであるため,名前を付けてハードディスクなどの補助記憶装置に保存するのが一般的です.名前の付け方にあまり強い制約はありませんが,インターネット上で使用するようなファイルの場合は,半角英数字だけを使用して付けた方が無難です.一般に,ファイル名は,
      主部.拡張子				
      のような形で記述します.主部は,内容を表した任意の名前ですが,オペレーティングシステムによっては,英語の大文字と小文字を区別しない場合がありますので注意してください.拡張子は,ファイルの性質を表した特定の文字列であり,例えば,
      ~.txt  テキストファイル(文字の集まり)
      ~.htm,~.html  インターネットで表示可能なページ
      ~.jpg,~.jpeg  JPEG 形式の画像ファイル(カメラで撮影した写真など)
      ~.mp3  MP3 形式の音声ファイル(音楽など)
      ~.exe  実行可能なプログラム
      ~.cpp  C++ のソースプログラム				
      のようなものが存在します.ファイルを選択し,表示または実行しようとすると,拡張子に対応したプログラムが起動します.このようなことを必要としなければ,拡張子を含めたピリオド以下を記述しなくても問題ありませんが,通常は付けておいた方が便利です.また,拡張子を変更すると,そのファイルを開くことができなくなる場合もありますので注意してください.なお,ワープロなどのソフトウェアで作成した内容を保存する場合もファイル名を必要としますが,主部だけ入力すると,そのソフトウェア固有の拡張子,例えば,Word の場合は .docx,Excel の場合は xlsx などが付加されます.

        ハードディスク等にファイルを保存する場合,そのまま保存しても構いませんが,大量のファイルを保存した場合,後ほど希望するファイルを探すのが大変になります.ハードディスクは非常に大きな箱です.そこへ,次から次へとファイルを放り込んでいけば,どのようになるか想像が付くと思います.そこで,ファイルを,下の図に示すように分類して記憶する方法が採用されます.下の図において root と名付けられた最も大きな箱がハードディスク全体に相当します.その中に,dir1 と dir2 という箱が入れられ,さらに,dir2 の中には dir3 という箱が入れられています.このように分類して保存すれば,ファイルを探すのも簡単になります.なお,下の図において,~.txt は,ファイルを表しています.
        オペレーティングシステムにおいては,箱のことをディレクトリdirectory,オペレーティングシステムによっては,フォルダ)と呼びます.ディレクトリには任意の名前を付けられますが,一番外側のディレクトリは root という名前に決まっています.ディレクトリの区切り記号としては / (オペレーティングシステムによっては, \ )が使用され,上の図に示す各ファイルは,以下に示すような形で表現されます.
      /f1.txt
      /dir1/f2.txt
      /dir2/f3.txt
      /dir2/dir3/f1.txt				
        如何に分類して記憶されていても,様々な場所にあるファイルを指定して表示または実行するような行為は,かなり面倒になります.そこで,よく使用するプログラム等に対してはショートカットを作成し,そのショートカットを操作すると指定したプログラムが動作するように設定しておくことが可能です.例えば,パソコン,タブレット,スマホ等のトップ画面にあるアイコンはほとんどショートカットです.このように設定しておけば,目的とするプログラムやデータをハードディスク内から探す手続きは必要なくなります.

        オペレーティングシステムでは,ユーザインタフェースを通して,ファイルやディレクトリに対する以下に示すような操作が可能です(この例は,UNIX の場合).この例においては,文字列によるコマンドとして記述していますが,マウスや指で操作するなど,その操作方法は異なりますが,どのようなオペレーティングシステムであっても,必ず,以下の操作に対応する処理が可能です.
      cd  作業ディレクトリを移動
      cp  ファイルのコピー
      ls  ディレクトリの内容を表示
      mv  ファイルの移動,ファイル名やディレクトリ名の変更
      rm  ファイルを削除
      mkdir  ディレクトリを作成
      rmdir  ディレクトリを削除				
        自分が作成したファイルやディレクトリ等に対して,上で述べたどのような操作を行っても構いませんが,インストールされているプログラム等を削除したり,その名前を変更するようなことは絶対にしないで下さい.あるプログラムを必要としない場合は,必ずアンインストールuninstall )によって削除して下さい.ただし,どのようなプログラムであっても,そのショートカットアイコンに対しては,その削除,名前の変更など,どのような処理を行っても構いません(ショートカットが指している本体は影響を受けません).

    3. プロセスとメモリの管理

        初期のオペレーティングシステムにおいては,同時に一つのプログラムだけを実行し,そのプログラムが終了すると,次のプログラムの実行に移りました.しかし,そのような方法ですと,プログラムが入出力を行っているような場合は,CPU は全く遊んでいる状態になってしまいます.そこで,複数のプログラムを同時に実行するマルチプログラミングが主流となってきました.マルチプログラミングにおいては,いくつかのプログラムの実行を入出力,時分割処理,優先度などによって切り替えて実行します.ここで,時分割処理は,短い間隔で実行するプロセスを強制的に切り替えていくことから,タイムシェアリングシステムTSS )と呼ばれます.切り替える際は,各プログラムの実行環境( CPU や主記憶装置の状態)を保存しておき,後で中断した箇所から実行を再開できるようにしています.このような処理によって,少なくとも各プログラムの利用者からは,自分がコンピュータを占有しているかのように見えます.

        マルチプログラミングにおいては,あるプログラムから別のプログラムを呼び出した場合,オペレーティングシステムにとって,呼び出されたプログラムは,呼び出したプログラムと同じ管理対象となります.逆に,複数のプログラムにおいて,同じプログラムを共用して実行した場合は,それらは別々の管理対象となります.このように,オペレーションシステムにとっての管理対象は,通常のプログラムとは多少異なった概念になります.そこで,オペレーティングシステムにとって同じ管理対象となるプログラム群をプロセスprocess )またはタスクtask )と呼びます.各プロセスは,仮想的なコンピュータみなすこともできます.プロセスと似た概念に,スレッドthread軽量プロセスとも呼ぶ )という概念があります.各プロセスは独立したコンピュータに似ていますので,プロセス間のデータの受け渡しなどは多少面倒になります.しかし,1 つのプロセスの中に,プロセスに似た複数の制御の流れを生成したい場合があります.そのような制御の流れをスレッドと呼びます.

        プロセスを実行するためには,対応するプログラムが,必ず,主記憶装置に存在する必要があります.さらに,CPU からアクセスされる可能性が高い命令やデータは,キャッシュに存在するように設定されます.実行すべき命令等がキャッシュに存在しなくなった場合は,キャッシュを置き換える必要が出てきます.この制御も,オペレーティングシステムが行います.

        また,あるプロセスに対応するプログラム全体が主記憶装置にある必要は無く,実行に必要な部分だけが存在すれば実行可能です.このことによって,主記憶容量より大きなプログラムを実行したり,複数のプロセスを同時に実行することが可能になります.しかし,実行すべき命令等が主記憶に存在しなくなったときは,主記憶装置内の不必要な部分を削除し,補助記憶装置から必要な部分を主記憶装置に読み込んでやる必要があります.このような主記憶装置と補助記憶装置のやりとりは,オペレーティングシステムによって自動的に行われ,仮想記憶方式仮想メモリ方式)と呼ばれます.

        応用ソフトウェアだけでなく,オペレーティングシステムの一部も必ず主記憶装置内にある必要があります.その記憶に必要な容量はますます大きくなっています.コンピュータの電源を入れたとき,オペレーティングシステムが,通常,ハードディスクから読み込まれますが,かなり時間がかかります.その時間を短縮するため,オペレーティングシステムの一部を読み書き速度が速いソリッドステートドライブに記憶しているコンピュータも存在します.また,主記憶装置の容量が小さい,補助記憶装置の読み書き速度が遅いなどの場合は,仮想記憶方式における主記憶装置と補助記憶装置のやりとりに時間がかかり,十分な性能を発揮できない場合があります.仮想記憶方式を採用しているコンピュータ(ほとんどのコンピュータ)の性能にとって,主記憶装置の容量,補助記憶装置の読み書きの速度は非常に重要な要素ですので,パソコン等を購入するときは十分注意してください.

        勿論,補助記憶装置の容量に対する検討も非常に重要です.「Ⅰ.2 節」において述べたように,音楽,画像,動画等を記憶するためには,非常に大きな容量が必要です.したがって,それらを大量に記憶する可能性がある方は,その点を十分考慮して補助記憶装置の容量を決定すべきです.また,応用ソフトウェアを追加したいような方も,それが可能なような容量が必要です.さらに,「音楽,画像,動画等を大量に記憶することは無い」,「新しいソフトウェアを追加することはない」と思っている方も,ある程度余裕がある記憶容量が必要だと思います.なぜなら,購入時に記憶されているオペレーティングシステムや応用ソフトウェアに対しても,かなり頻繁にアップデートupdate,ソフトウェアの更新)が行われます.アップデートは,問題点を解決したり,機能を向上させるために行われますが,その結果,プログラムサイズが大きくなるのが一般的だからです.

情報学部 菅沼ホーム