オペレーティング システムは、私たちのコンピューター体験を定義します。 オペレーティング システムは、コンピュータの電源を入れたときに最初に目にするソフトウェアであり、コンピュータの電源を切ったときに最後に目にするソフトウェアです。 これは、私たちが使用するすべてのプログラムを有効にするソフトウェアです。 オペレーティング・システムは、私たちの机の上や手にあるハードウェアを整理し制御しますが、ほとんどのユーザーは、オペレーティング・システムが行うことが何であるかを正確に説明することができません。
今回の HowStuffWorks では、オペレーティング システムと呼ばれるためにソフトウェアの一部が何をしなければならないかを説明し、オペレーティング システムがハードウェアの集合を強力なコンピューティング ツールに変えるためにどのように動作するかを紹介します!
The Bare Bones
すべてのコンピューターにオペレーティングシステムがあるわけではないことを認識することが重要です。 例えば、台所にある電子レンジを制御するコンピュータには、オペレーティング・システムは必要ありません。 実行するのは比較的単純な1組のタスク、非常に単純な入出力方法(キーパッドとLCDスクリーン)、そして単純で変化のないハードウェアを制御しているのです。 このようなコンピュータにとって、オペレーティングシステムは不必要な荷物であり、必要ないところに複雑さを加えることになります。 その代わり、電子レンジの中のコンピューターは、常に1つのプログラムを走らせるだけでいいのです。
しかし、電子レンジの複雑さを超えるコンピューター システムでは、オペレーティング システムが、より高い運用効率と容易なアプリケーション開発の鍵になりえます。 すべてのデスクトップ・コンピュータはオペレーティング・システムを持っています。 最も一般的なものは、Windows 系 OS、UNIX 系 OS、および Macintosh 系 OS です。 その他にも、メインフレーム、ロボット工学、製造業、リアルタイム制御システムなど、特殊な用途に特化したオペレーティングシステムが何百とあります。
最も単純なレベルでは、オペレーティングシステムは2つのことをします。
- それは、コンピュータ システムのハードウェアおよびソフトウェア リソースを管理することです。 これらのリソースには、プロセッサ、メモリ、ディスク領域などが含まれます。
- アプリケーションがハードウェアの詳細をすべて知らなくても、ハードウェアを処理できる安定した一貫した方法を提供します。
最初のタスクであるハードウェアおよびソフトウェア リソースの管理は、さまざまなプログラムや入力メソッドが中央処理装置 (CPU) の注意を引き、それぞれの目的のためにメモリ、ストレージ、入出力 (I/O) バンド幅を要求するため、非常に重要である。 オペレーティングシステムは、他のすべてのアプリケーションと協調しながら、各アプリケーションが必要なリソースを取得できるようにし、また、すべてのユーザーとアプリケーションのためにシステムの限られた能力を最大限に活用する、良き親としての役割を担っているのです。
2 番目のタスクである一貫したアプリケーション インターフェイスの提供は、オペレーティング システムを使用する特定のタイプのコンピューターが複数ある場合や、コンピューターを構成するハードウェアが常に変更可能な場合に特に重要です。 一貫性のあるアプリケーション・プログラム・インターフェース(API)により、ソフトウェア開発者はあるコンピュータでアプリケーションを書き、それが同じ種類の別のコンピュータでも、たとえメモリやストレージの量が違っても、確実に動作することを確認することができます。 アプリケーションではなく、オペレーティングシステムがハードウェアとそのリソースの配分を管理しているため、特定のコンピュータがユニークであっても、ハードウェアのアップグレードや更新が行われたときにアプリケーションが継続して動作することを保証することができるのです。 Windows 98は、オペレーティングシステムが提供する柔軟性の好例です。 Windows 98は、何千ものベンダーのハードウェア上で動作する。 何千ものプリンター、ディスクドライブ、特殊な周辺機器をあらゆる組み合わせで搭載することができるのです。
オペレーティング・システムには、一般に4つのタイプがあり、制御するコンピュータの種類とサポートするアプリケーションの種類に基づいて分類されています。 大まかな分類は以下のとおりです。
- リアルタイム・オペレーティング・システム (RTOS) – リアルタイム・オペレーティング・システムは、機械、科学機器、および産業用システムを制御するために使用されます。 RTOS は通常、ユーザー インターフェイス機能をほとんど持たず、エンド ユーザー ユーティリティもありません。 RTOSの非常に重要な部分は、特定の操作が発生するたびに正確に同じ時間で実行されるように、コンピュータのリソースを管理することです。 複雑な機械では、システムリソースが利用可能だからといって部品をより速く動かすことは、システムがビジー状態だからといって部品を全く動かさないのと同じように致命的なことになりかねない。
- シングルユーザー、シングルタスク – その名前が示すように、このオペレーティングシステムは、1 人のユーザーが一度に 1 つのことを効果的に行えるようにコンピューターを管理するように設計されています。 Palm ハンドヘルドコンピュータ用の Palm OS は、現代のシングルユーザー、シングルタスクのオペレーティングシステムの良い例です。
- シングルユーザー、マルチタスク – 今日、ほとんどの人がデスクトップおよびラップトップ コンピュータで使用しているオペレーティング システムのタイプはこれです。 Windows 98 と MacOS はどちらも、1 人のユーザーが複数のプログラムを同時に操作できるオペレーティング システムの例です。 例えば、Windowsのユーザーがワープロでメモを書きながら、インターネットからファイルをダウンロードし、電子メールの本文を印刷することは十分に可能なのです。
- マルチユーザー – マルチユーザー・オペレーティングシステムは、多くの異なるユーザーが同時にコンピューターのリソースを利用することを可能にします。 オペレーティング・システムは、さまざまなユーザーの要件のバランスが取れていること、そして、あるユーザーの問題がユーザーのコミュニティ全体に影響しないように、ユーザーが使用する各プログラムが十分かつ個別のリソースを持っていることを確認する必要があります。 Unix、VMS、およびMVSなどのメインフレームOSは、マルチユーザーオペレーティングシステムの一例です。
ここで、マルチユーザーオペレーティングシステムと、ネットワーキングをサポートするシングルユーザーオペレーティングシステムを区別することが重要です。 Windows 2000 と Novell Netware は、それぞれネットワーク接続された何百、何千ものユーザーをサポートできますが、オペレーティング・システム自体は真のマルチユーザー・オペレーティング・システムとは言えません。 Windows 2000やNetwareでは、システム管理者が唯一の「ユーザー」である。 ネットワークサポートと、ネットワークが可能にするすべてのリモートユーザーログインは、オペレーティングシステムの全体計画では、管理ユーザーによって実行されているプログラムです。
オペレーティングシステムの種類を念頭に置いて、オペレーティングシステムが提供する基本的な機能を見ていきましょう。
ウェイクアップ コール
コンピュータの電源が入ると、最初に実行されるプログラムは通常、コンピュータの読み取り専用メモリ (ROM) に保存された命令のセットで、すべてが正しく機能しているかどうかシステム ハードウェアを検査します。 このパワーオンセルフテスト(POST)は、CPU、メモリ、基本入出力システム(BIOS)にエラーがないかどうかをチェックし、その結果を特別なメモリ位置に保存します。 POSTが正常に終了すると、ROMにロードされたソフトウェア(ファームウェアと呼ばれることもあります)が、コンピュータのディスクドライブを起動し始めます。 ほとんどの最新コンピュータでは、コンピュータがハードディスクドライブを起動すると、オペレーティングシステムの最初の部分であるブートストラップローダを見つけます。
ブートストラップローダーは、1 つの機能を持つ小さなプログラムです。 オペレーティング システムをメモリにロードし、動作を開始できるようにします。 最も基本的な形式では、ブートストラップローダは、コンピュータのさまざまなハードウェアサブシステムとインタフェースし、制御する小さなドライバプログラムをセットアップします。 オペレーティングシステム、ユーザー情報、アプリケーションを格納するメモリの分割をセットアップします。 コンピュータのサブシステムとアプリケーションの間で通信するために使用される無数の信号、フラグ、セマフォを保持するデータ構造を確立します。 そして、コンピュータの制御をオペレーティングシステムに引き渡します。
オペレーティング・システムのタスクは、最も一般的な意味で、6つのカテゴリに分類されます。
- プロセッサ管理
- メモリ管理
- デバイス管理
- ストレージ管理
- アプリケーションインターフェース
- ユーザーインターフェース
一方で、OSはこれらの6つのタスク以上のことを行うべきだという意見もある。 しかし、この6つのタスクは、ほぼすべてのオペレーティング・システムの核となるものです。 オペレーティングシステムがこれらの機能を実行するために使用するツールを見てみましょう。
Processor Management
プロセッサの管理の中心は、2 つの関連する問題に帰着します。
- 各プロセスおよびアプリケーションが適切に機能するために十分なプロセッサ時間を確保する
- 可能な限り多くのプロセッサ サイクルを実際の作業に使用する
オペレーティング システムがプロセッサによる作業をスケジュールする際に扱うソフトウェアの基本単位は、オペレーティング システムによって、プロセスまたはスレッドのどちらかです。
プロセスをアプリケーションとして考えることは魅力的ですが、プロセスがオペレーティング システムおよびハードウェアとどのように関連するかについて、不完全なイメージを与えてしまいます。 あなたが見ているアプリケーション (ワープロ、表計算、ゲーム) は確かにプロセスですが、そのアプリケーションは、他のデバイスや他のコンピューターとの通信などのタスクのために、いくつかの他のプロセスを開始させるかもしれません。 また、存在することを直接示すことなく実行されるプロセスも数多く存在します。 つまり、プロセスとは、何らかのアクションを実行するソフトウェアであり、ユーザー、他のアプリケーション、またはオペレーティング・システムによって制御することができるものです。
オペレーティング システムが制御し、CPU による実行をスケジュールするのは、アプリケーションではなく、プロセスです。 シングル・タスク・システムでは、スケジュールは単純です。 オペレーティングシステムはアプリケーションの実行を開始させ、割り込みやユーザー入力を処理するのに十分な時間だけ実行を一時停止させる。 割り込みとは、ハードウェアやソフトウェアからCPUに送られる特別な信号のことです。 あたかもコンピュータのどこかが突然手を挙げて、にぎやかな会議でCPUの注意を引くように要求するようなものです。 オペレーティングシステムは、割り込みがマスクされるようにプロセスの優先順位をスケジューリングすることがあります — つまり、オペレーティングシステムは特定のジョブができるだけ早く終了できるように、いくつかのソースからの割り込みを無視するのです。 しかし、中には無視できないほど重要な割り込み(エラー状態やメモリの問題など)もあります。 これらのノンマスカブル割込み(NMI)は、手元の他のタスクに関係なく、直ちに処理されなければなりません。
シングル・タスク・システムでのプロセスの実行に割り込みはいくらかの複雑さを加えるが、マルチタスク・システムではオペレーティング・システムの仕事ははるかに複雑になる。 さて、オペレーティングシステムは、一度に複数のことが起こっていると思わせるように、アプリケーションの実行をアレンジしなければなりません。 CPUは一度に1つのことしかできないので、これは複雑です。 同時にたくさんのことが起こっているように見せるために、オペレーティングシステムは1秒間に何千回も異なるプロセスを切り替えなければならないのです。 以下はその様子です。
- プロセスは一定量の RAM を占有しています。 また、CPU およびオペレーティング・システムのメモリ空間内のレジスタ、スタック、およびキューを使用します。
- 2つのプロセスがマルチタスクである場合、オペレーティングシステムは1つのプログラムに一定数のCPU実行サイクルを割り当てる。
- そのサイクル数の後、オペレーティング・システムはプロセスによって使用されるすべてのレジスタ、スタックおよびキューのコピーを作成し、プロセスがその実行で一時停止した時点を記録する。
- 次に、2 番目のプロセスによって使用されるすべてのレジスタ、スタック、およびキューをロードし、特定の数の CPU サイクルを許可します。
- それらが完了すると、2番目のプログラムによって使用されるすべてのレジスタ、スタックおよびキューのコピーを作成し、1番目のプログラムをロードします。
スイッチング時にプロセスを追跡するために必要なすべての情報は、プロセス制御ブロックと呼ばれるデータ・パッケージで保持されます。 プロセスコントロールブロックには、通常、以下のものが含まれます。
- プロセスを識別する ID 番号
- 最後に処理が行われたプログラムとそのデータの場所へのポインタ
- レジスタの内容
- 各種フラグとスイッチの状態
- 上限値へのポインタ プロセスに必要なメモリの下限
- プロセスによって開かれたファイルのリスト
- プロセスの優先度
- プロセスが必要とするすべての I/O デバイスの状態
プロセスの状態が変化したとき。 プロセス制御ブロック内の情報は、他のプログラムのデータと同様に、オペレーティングシステムのタスク切り替え部分の実行を指示するために使用されなければなりません。
このプロセススワップは、ユーザーが直接干渉することなく行われ、各プロセスは妥当な時間でそのタスクを達成するのに十分な CPU サイクルを得ます。 しかし、ユーザーがあまりにも多くのプロセスを同時に機能させようとすると、問題が発生する可能性があります。 オペレーティングシステム自体は、アプリケーションプロセスのすべてのレジスタ、キュー、スタックの保存とスワッピングを実行するために、いくつかのCPUサイクルを必要とします。 十分な数のプロセスが起動され、オペレーティングシステムが慎重に設計されていない場合、システムは利用可能なCPUサイクルの大部分を、プロセスを実行するのではなく、プロセス間のスワップに使用し始める可能性があります。 このような現象はスラッシングと呼ばれ、通常はユーザーが直接介入してプロセスを停止させ、システムに秩序を取り戻すことが必要です。
オペレーティング システム設計者がスラッシングの可能性を減らす方法の 1 つは、さまざまなタスクを実行するための新しいプロセスの必要性を減らすことです。 一部のオペレーティング・システムでは、スレッドと呼ばれる「プロセス・ライト」を許可しており、通常のプロセスのすべての CPU 集中作業を処理できますが、一般にさまざまなタイプの I/O を処理せず、通常のプロセスの大規模なプロセス制御ブロックを必要とする構造を確立することはありません。 プロセスは多くのスレッドや他のプロセスを起動することができますが、スレッドはプロセスを起動することができません。
これまで、説明したすべてのスケジューリングは単一の CPU に関するものでした。 2つ以上のCPUを持つシステムでは、オペレーティングシステムはCPU間で作業負荷を分割し、必要なプロセスの要求と異なるCPUで利用可能なサイクルのバランスを取ろうとしなければなりません。 非対称オペレーティングシステムは、1つのCPUを自分たちの必要性に使用し、アプリケーションプロセスを残りのCPUに振り分けます。 対称型オペレーティングシステムは、さまざまなCPUに自分自身を分割し、オペレーティングシステム自体がすべて実行されている場合でも、需要とCPUの可用性のバランスを取ります。
実行ニーズのあるソフトウェアがオペレーティング システムだけであっても、CPU はスケジュールされる唯一のリソースではありません。 メモリ管理は、すべてのプロセスがスムーズに実行されるようにするための次の重要なステップです。
Memory and Storage Management
オペレーティング システムがコンピュータのメモリを管理する場合、達成すべき 2 つの大まかなタスクがあります。
- 各プロセスは実行するのに十分なメモリを持たなければならず、他のプロセスのメモリ領域に入り込んだり、他のプロセスから入り込まれたりしてはならない。
- 各プロセスが最も効果的に実行できるように、システム内のさまざまなタイプのメモリを適切に使用する必要があります。
最初のタスクは、オペレーティング システムがソフトウェアの種類と個々のアプリケーションのメモリ境界を設定することです。
例として、1 メガバイト (1,000 キロバイト) の RAM を持つ想像上のシステムを見てみましょう。 ブート プロセス中、この架空のコンピューターのオペレーティング システムは、利用可能なメモリの最上位に移動し、その後、オペレーティング システム自体のニーズを満たすのに十分な距離まで「バックアップ」するように設計されています。 例えば、オペレーティングシステムが動作するために300キロバイトが必要だとしましょう。 さて、オペレーティングシステムはRAMのプールの底に行き、コンピュータのハードウェアサブシステムを制御するために必要な様々なドライバソフトウェアを構築し始めます。 このコンピュータでは、ドライバが200キロバイトを占めます。 したがって、オペレーティングシステムが完全にロードされた後、アプリケーションプロセス用に500キロバイトが残ります。
アプリケーションがメモリにロードされ始めると、オペレーティング システムによって決定されたブロック サイズでロードされます。 ブロック・サイズが 2 キロバイトの場合、ロードされるすべてのプロセスには、2 キロバイトの倍数の大きさのメモリ塊が与えられます。 アプリケーションはこの固定ブロックサイズにロードされ、ブロックは4バイトまたは8バイトのワードで確立された境界で始まり、終了します。 このようにブロックと境界を設けることで、1〜2ビットの計算ミスでアプリケーション同士が重なってロードされることがないように配慮している。 500キロバイトのアプリケーション領域がいっぱいになったら、どうするかということです。
ほとんどのコンピュータでは、元の容量を超えてメモリを追加することが可能です。 たとえば、RAM を 1 メガバイトから 2 メガバイトに拡張することができます。 これはうまく機能しますが、比較的高価になる傾向があります。 アプリケーションがメモリに保存している情報のほとんどは、ある瞬間には使用されていないのです。 プロセッサは一度に1箇所しかメモリにアクセスできないので、RAMの大部分は常に未使用の状態なのです。 ディスクスペースはRAMに比べて安価なので、RAMの情報をハードディスクに移動させれば、コストをかけずにRAMスペースを大幅に拡張することができます。 この技術を仮想メモリ管理と呼びます。
ディスク ストレージは、オペレーティング システムが管理しなければならないメモリ タイプの 1 つにすぎず、最も低速です。 速度の順にランク付けすると、コンピュータ・システム内のメモリの種類は次のとおりです。
- 高速キャッシュ – これは高速で、比較的少量のメモリで、最速の接続を通じてCPUが利用できるものです。 キャッシュコントローラは、CPUが次に必要とするデータの断片を予測し、メインメモリから高速キャッシュに引き出して、システムパフォーマンスを高速化します。
- メインメモリ – これは、コンピュータを購入したときにメガバイト単位で表示されるRAMです。
- 2 次メモリ – これは、ほとんどの場合、アプリケーションとデータを使用可能に保つある種の回転磁気ストレージであり、オペレーティング システムの制御下で仮想 RAM として機能します。
オペレーティング システムは、さまざまなプロセスのニーズとさまざまなタイプのメモリの可用性のバランスをとる必要があり、プロセスのスケジュールに応じて、利用可能なメモリ間でブロック (ページと呼ばれる) のデータを移動させます。
Device Management
オペレーティング システムと、コンピュータのマザーボード上にないほぼすべてのハードウェアとの間の経路は、ドライバと呼ばれる特別なプログラムを介して行われます。 ドライバの機能の多くは、ハードウェア サブシステムの電気信号と、オペレーティング システムおよびアプリケーション プログラムの高レベルのプログラミング言語との間のトランスレータとなることです。 ドライバは、オペレーティングシステムがファイルとして定義したデータを、ストレージデバイスの特定の場所に置かれたビットのストリームや、プリンターの一連のレーザーパルスに変換する。
ドライバーを介して制御されるハードウェアには大きな違いがあるため、ドライバー プログラムが機能する方法にも違いがありますが、ほとんどはデバイスが必要なときに実行され、他のプロセスとほとんど同じように機能します。 オペレーティングシステムは、ハードウェアリソースをできるだけ早く解放し、さらなる使用のために準備できるように、優先度の高いブロックを頻繁にドライバに割り当てます。
ドライバーがオペレーティング システムから分離している理由の 1 つは、オペレーティング システム自体を変更、再コンパイル、再配布することなく、ドライバーに、ひいてはハードウェア サブシステムに新しい機能を追加できるようにするためです。 新しいハードウェアデバイスドライバの開発を通じて、多くの場合、オペレーティングシステムの発行元ではなく、サブシステムの製造元によって行われたり、開発費用が支払われたりしますが、システム全体の入出力機能は大幅に強化されます。
コンピュータシステムのすべてのリソースを管理することは、オペレーティングシステムの機能の大部分であり、リアルタイムオペレーティングシステムの場合、事実上必要な機能のすべてであるかもしれません。 しかし、他のオペレーティング・システムでは、アプリケーションと人間がハードウェアの力を利用するための比較的簡単で一貫した方法を提供することが、その存在理由の重要な部分である。
Interface to the World
Application Interface
ドライバが、アプリケーションがハードウェアの動作の詳細をすべて把握せずにハードウェア サブシステムを利用する方法を提供するように、アプリケーション プログラム インターフェイス (API) により、アプリケーション プログラマは CPU 動作におけるすべての詳細を直接把握せずにコンピュータとオペレーティング システムの機能を利用することができます。 なぜこれが重要なのか、データを保持するためのハードディスクのファイルを作成する例で見てみましょう。
科学機器からデータを記録するアプリケーションを書くプログラマーは、科学者が作成されるファイルの名前を指定できるようにしたいと思うかもしれません。 オペレーティングシステムは、ファイルを作成するためのMakeFileというAPI関数を提供するかもしれません。 プログラムを書くとき、プログラマーは次のような行を挿入するでしょう。
MakeFile
この例では、オペレーティングシステムに、データへのランダムアクセスを許可し(1)、ユーザーが入力した名前(%Name)を持ち、ファイルに格納されるデータの量に応じてサイズが変わる(2)ファイルを作成するように指示しています。 さて、この命令を実行に移すために、オペレーティングシステムが何をするのかを見てみましょう。
- オペレーティング・システムはディスク・ドライブに問い合わせを送信し、最初に利用可能な空きストレージの場所を取得します。
- その情報により、オペレーティング・システムは、ファイルの開始および終了位置、ファイルの名前、ファイルの種類、ファイルがアーカイブされているかどうか、どのユーザーがファイルを見たり変更する権限を持っているか、ファイルの作成日時がわかるエントリーをファイル・システムに作成します。
- オペレーティング システムは、ファイルを識別する情報をファイルの先頭に書き込み、可能なアクセスの種類を設定し、ファイルをアプリケーションに関連付けるその他の情報を含めます。
この情報すべてにおいて、ディスク ドライブへの問い合わせと、ファイルの開始点と終了点のアドレスは、ディスク ドライブのメーカーとモデルに大きく依存する形式になっています。
プログラマはディスク ストレージの API を使用するようにプログラムを書いているので、ありとあらゆるハード ディスクやテープ ドライブの命令コード、データ型、および応答コードを把握する必要はありません。 オペレーティングシステムは、様々なハードウェアサブシステム用のドライバに接続され、ハードウェアの変化する細部を扱う。プログラマは単にAPI用のコードを書き、残りはオペレーティングシステムを信頼しなければならない。
API は近年、コンピューター業界で最も熱い争いのある分野の 1 つになっています。 企業は、プログラマが自社の API を使用することは、最終的に業界の特定の部分を制御し利益を得る能力につながることを認識しています。 これが、多くの企業がリーダーやビューアなどのアプリケーションを無償で提供してきた理由の一つである。 彼らは、消費者が無料のリーダーを活用したプログラムを要求することを知っており、アプリケーション会社は、消費者が要求する機能を自社のソフトウェアで提供できるようにするために、ロイヤリティを支払う用意があるのです。
ユーザー インターフェース
API がアプリケーションにコンピューター システムのリソースを使用する一貫した方法を提供するように、ユーザー インターフェース (UI) はユーザーとコンピューターの間の相互作用に構造をもたらすものです。 過去10年間、ユーザーインターフェースの開発はほとんどすべてグラフィカルユーザーインターフェース(GUI)の分野で行われ、AppleのMacintoshとMicrosoftのWindowsという2つのモデルが最も注目を集め、市場シェアの大部分を獲得してきました。 他のOSにも、グラフィカルなものとそうでないものがあり、他のユーザーインターフェイスも存在する。
たとえば、Unix にはシェルと呼ばれるユーザー インターフェースがあり、標準のオペレーティング システムのテキスト ベースのインターフェイスよりも柔軟で強力なユーザー インターフェースを提示しています。 Korn シェルや C シェルなどのプログラムは、重要なユーティリティを追加したテキストベースのインターフェイスですが、その主な目的は、ユーザーがオペレーティング システムの機能を簡単に操作できるようにすることです。 また、X-Windows や Gnome などのグラフィカル・ユーザー・インターフェースもあり、ユーザーの視点から Unix や Linux を Windows や Macintosh コンピュータにより近づけることができます。
これらの例のすべてにおいて、ユーザー インターフェイスはオペレーティング システム自体の上に位置するプログラムまたはプログラムのセットであることを覚えておくことが重要です。 Windows と Macintosh オペレーティング システムの両方において、多少異なるメカニズムではありますが、同じことが言えます。 オペレーティングシステムの核となる機能、つまりコンピュータシステムの管理は、オペレーティングシステムのカーネルにある。 ディスプレイマネージャは、その下のカーネルと密接に結びついている場合もあるが、別個のものである。 オペレーティングシステムのカーネルとユーザーインターフェース、ユーティリティ、その他のソフトウェアとの間の結びつきが、今日のオペレーティングシステムの違いの多くを定義しており、将来的にはさらに定義することになるでしょう。
The Future
オペレーティングシステムの将来に関する 1 つの疑問は、ソフトウェア配布の特定の哲学が、企業と消費者が共に使用できるオペレーティングシステムを作成できるかどうかという点に集中しています。
Linux は、オープン ソースの原則に従って作成および配布されるオペレーティング システムであり、オペレーティング システム全体に大きな影響を与える可能性があります。 ほとんどのオペレーティング・システム、ドライバ、およびユーティリティ・プログラムは、ソフトウェアの実行可能バージョン — 研究や変更ができないバージョン — を配布している商業組織によって作成されています。 オープンソースは、研究し、変更し、構築することができるオリジナルのソースを配布し、その結果を再び自由に配布することを要求しています。
インターネットの継続的な成長と、標準的なデスクトップまたはラップトップ マシンではないコンピュータの普及は、オペレーティング システムが歩調を合わせて変化することを意味しますが、中核の管理およびインターフェース機能は進化しながらも継続されます。