オペレーティングシステム パート3
マイクロコンピュータ
大規模集積回路の発明により、1980年頃からパーソナルコンピュータ(当初はマイクロコンピュータと呼ばれていました)の製造が可能になりました。約5年間、CP/M(Control Program for Microcomputers)がマイクロコンピュータ向けの最も一般的なオペレーティングシステムでした。その後、IBMはMicrosoftからDOS(Disk Operating System)を買収しました。IBMの要請により改良が加えられた結果、MS-DOS(MicroSoft Disk Operating System)と呼ばれるようになり、IBM製マイクロコンピュータで広く使用されました。後期バージョンでは、UNIXの機能を取り入れるなど、より高度な機能が追加されました。
AppleのMacintoshは、グラフィカルユーザーインターフェース(GUI)を採用した最初の普及型コンピュータでした。GUIは、それ以前のオペレーティングシステムが使用していたテキストのみのコマンドラインインターフェースよりもはるかにユーザーフレンドリーであることが証明されました。Macintoshの成功を受けて、MS-DOSはWindowsと呼ばれるGUIオーバーレイを搭載してアップデートされました。 Windowsは後にスタンドアロンのオペレーティングシステムとして書き直され、他のオペレーティングシステム(VAX VMS)から多くの機能を借用したため、多額の法的和解金が支払われました。21世紀においても、Windowsはパーソナルコンピュータでは依然として人気がありますが、サーバー市場ではシェアが低下しています。UNIXオペレーティングシステム、特にLinuxは、エンタープライズシステムやサーバーで最も人気がありますが、モバイルデバイスやその他の多くのコンピュータシステムでも使用されています。
モバイルデバイスでは、当初はSymbian OSが主流でしたが、BlackBerry OS(2002年導入)とiPhone向けiOS(2007年以降)にその座を奪われました。その後、LinuxカーネルとBSDコードを部分的にベースとしたCライブラリ(Bionic)を搭載したオープンソースのAndroidオペレーティングシステム(2008年導入)が最も人気を博しました。
コンポーネント
オペレーティングシステムのコンポーネントは、コンピュータの様々な部分が連携して機能するように設計されています。DOSが事実上廃止されたため、すべてのユーザーソフトウェアはハードウェアにアクセスするためにオペレーティングシステムと連携する必要があります。
カーネル
カーネルは、オペレーティングシステムの一部であり、異なるアプリケーションとユーザー間の保護を提供します。この保護は、エラーを1つのプログラムに隔離することで信頼性を向上させるだけでなく、悪意のあるソフトウェアの力を制限し、個人データを保護し、1つのプログラムがコンピュータのリソースを独占できないようにすることでセキュリティを確保するためにも重要です。ほとんどのオペレーティングシステムには2つの動作モードがあります。ユーザーモードでは、ハードウェアがソフトウェアが正当な命令のみを実行しているかどうかをチェックします。一方、カーネルは無制限の権限を持ち、これらのチェックの対象にはなりません。カーネルは、他のプロセス用のメモリを管理し、入出力デバイスへのアクセスを制御します。
プログラム実行
オペレーティングシステムは、アプリケーションプログラムとコンピュータハードウェア間のインターフェースを提供します。これにより、アプリケーションプログラムは、オペレーティングシステムにプログラムされた規則と手順に従うことによってのみ、ハードウェアと対話できます。オペレーティングシステムはまた、アプリケーションプログラムの開発と実行を簡素化する一連のサービスでもあります。アプリケーションプログラムの実行には通常、オペレーティングシステムカーネルによるプロセスの作成が伴います。カーネルは、メモリ空間やその他のリソースを割り当て、マルチタスクシステムにおけるプロセスの優先度を設定し、プログラムのバイナリコードをメモリにロードし、アプリケーションプログラムの実行を開始します。そして、アプリケーションプログラムはユーザーやハードウェアデバイスと対話します。しかし、一部のシステムでは、アプリケーションはオペレーティングシステムに対し、サブルーチンまたは別のスレッドとして、同じプロセス内で別のアプリケーションを実行するよう要求することができます。例えば、OS/360および後継機種のLINK機能やATTACH機能などが挙げられます。
割り込み
割り込み(アボート、例外、フォールト、シグナル、トラップとも呼ばれます)は、ほとんどのオペレーティングシステムが環境に効率的に対応するための手段を提供します。割り込みは、中央処理装置(CPU)の制御フローを、現在実行中のプログラムから割り込みハンドラ(割り込みサービスルーチン(ISR)とも呼ばれます)へと切り替えます。割り込みサービスルーチンは、中央処理装置(CPU)のコンテキストスイッチを引き起こす場合があります。コンピュータが割り込みを処理する詳細はアーキテクチャによって異なり、割り込みサービスルーチンの動作もオペレーティングシステムによって異なります。しかし、いくつかの割り込み関数は共通です。アーキテクチャとオペレーティングシステムは、以下の処理を実行する必要があります。
割り込みサービスルーチンに制御を移す。
現在実行中のプロセスの状態を保存する。
割り込み処理後の状態を復元する。