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

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

オペレーティングシステムOSは)あるシステムソフトウェアを管理するコンピュータのハードウェアソフトウェアのリソースを、共通の提供サービスをするためにコンピュータプログラム

タイムシェアリングオペレーティングシステムは、システムを効率的に使用するためのタスクスケジュールします。また、プロセッサ時間大容量記憶装置、印刷、およびその他のリソースのコスト割り当てのための会計ソフトウェアが含まれる場合もあります

入出力メモリ割り当てなどのハードウェア機能の場合、オペレーティングシステムはプログラムとコンピュータハードウェアの間の仲介役として機能しますが[1] [2]、アプリケーションコードは通常ハードウェアによって直接実行され、頻繁にシステムコール行います。 OS機能またはそれによって中断されます。オペレーティングシステムは、携帯電話やビデオゲームコンソールからWebサーバースーパーコンピューターまで、コンピューターを含む多くのデバイスに搭載されています

主要な汎用[3] パーソナルコンピュータオペレーティングシステムは、約76.45%の市場シェアを持つMicrosoftWindowsです。MacOSのことで、アップル社は第二位(17.72パーセント)であり、かつ品種のLinuxは第三位(1.73パーセント)で総称しています。[4]において、モバイル(スマートフォンを含むセクタ錠剤)、Androidのシェアは、年に72%までである2020 [5]第三四半期2016年のデータによると、スマートフォンでAndroidのシェアは、成長率で87.5パーセントで支配的です年間10.3%で、AppleのiOSがそれに続く12.1%で、市場シェアは5.2%減少しますが、他のオペレーティングシステムはわずか0.3%です。[6] Linuxディストリビューションは、サーバーおよびスーパーコンピューティングセクターで支配的です。組み込みシステムやリアルタイムシステムなど、他の特殊なクラスのオペレーティングシステム(専用オペレーティングシステム)[3] [7]は、多くのアプリケーションに存在します。セキュリティに重点を置いたオペレーティングシステムも存在します。一部のオペレーティングシステムのシステム要件は低くなっています(軽量Linuxディストリビューションなど)。他の人はより高いシステム要件を持っているかもしれません。

一部のオペレーティングシステムはインストールが必要であるか、購入したコンピューターにプリインストールされている場合があります(OEMインストール)が、他のオペレーティングシステムはメディア(ライブCDなど)またはフラッシュメモリ(USBスティックなど)から直接実行できます

オペレーティングシステムの種類

シングルタスクとマルチタスク

シングルタスクシステムでは一度に1つのプログラムしか実行できませんが、マルチタスクオペレーティングシステムでは複数のプログラムを並行して実行できます。これは、利用可能なプロセッサ時間を複数のプロセスに分割するタイムシェアリングによって実現されます。これらのプロセスはそれぞれ、オペレーティングシステムのタスクスケジューリングサブシステムによってタイムスライスで繰り返し中断されます。マルチタスクは、プリエンプティブタイプと協調タイプで特徴付けることができます。でプリエンプティブマルチタスキング、オペレーティング・システムは、スライスのCPU時間とプログラムのそれぞれにスロットを捧げ。Unixライクのようなオペレーティング・システム、SolarisのLinux(およびAmigaOSなどの非Unixライク)は、プリエンプティブマルチタスクをサポートします。協調マルチタスクは、定義された方法で他のプロセスに時間を提供するために各プロセスに依存することによって実現されます。16ビットバージョンのMicrosoftWindowsは、協調マルチタスクを使用していました。Windows NTとWin9xの両方の32ビットバージョンは、プリエンプティブマルチタスクを使用していました。

シングルユーザーおよびマルチユーザー

シングルユーザーオペレーティングシステムには、ユーザーを区別する機能はありませんが、複数のプログラムを並行して実行できる場合があります。[8]マルチユーザーのオペレーティングシステムは、複数のユーザに属する、ディスク領域などのプロセスとリソースを識別設備とマルチタスクの基本概念を拡張し、システムは、複数のユーザが同時にシステムと対話することを可能にします。タイムシェアリングオペレーティングシステムは、システムを効率的に使用するためのタスクをスケジュールします。また、プロセッサ時間、大容量記憶装置、印刷、およびその他のリソースを複数のユーザーにコスト配分するための会計ソフトウェアが含まれる場合もあります。

分散

分散オペレーティングシステムは、別個の群管理ネットワークコンピュータを、すべての計算がされるように、それらは、単一のコンピュータであるように見えることができる分散(構成コンピュータ間で分割します)。[9]

テンプレート化

OSの分散およびクラウドコンピューティングのコンテキストでは、テンプレートとは、ゲストオペレーティングシステムとして単一の仮想マシンイメージを作成し、それを複数の実行中の仮想マシンのツールとして保存することを指します。この手法は、仮想化とクラウドコンピューティングの両方の管理で使用され、大規模なサーバーウェアハウスで一般的です。[10]

埋め込み

組み込みオペレーティングシステムは、組み込みコンピュータシステムで使用するように設計されていますこれらは、自律性の低い小型マシン(PDAなど)で動作するように設計されています。それらは非常にコンパクトで設計上非常に効率的であり、限られた量のリソースで操作することができます。WindowsCEMinix3は、組み込みオペレーティングシステムの例です。

リアルタイム

リアルタイム・オペレーティング・システムは、オペレーティングシステムであるプロセスに保証しているイベント時間内の特定のモーメントによって、またはデータ。リアルタイムオペレーティングシステムは、シングルタスクまたはマルチタスクの場合がありますが、マルチタスクの場合は、特殊なスケジューリングアルゴリズムを使用して、動作の決定論的な性質を実現します。このようなイベント駆動型システムは、優先順位または外部イベントに基づいてタスクを切り替えますが、タイムシェアリングオペレーティングシステムは、クロック割り込みに基づいてタスクを切り替えます。

図書館

ライブラリオペレーティングシステムは、ネットワークなどの一般的なオペレーティングシステムが提供するサービスがライブラリの形式で提供され、アプリケーションと構成コードで構成されてユニカーネル(特殊な単一アドレス空間、マシンイメージ)を構築するものですクラウドまたは組み込み環境にデプロイできます。

歴史

初期のコンピューターは、電卓のような一連の単一のタスクを実行するように構築されていました。基本的なオペレーティングシステム機能は1950年代に開発されました。たとえば、処理を高速化するためにさまざまなプログラムを連続して自動的に実行できる常駐モニター機能などです。オペレーティングシステムは、1960年代初頭まで、現代的でより複雑な形で存在していませんでした。[11]ランタイムライブラリ割り込み、および並列処理の 使用を可能にするハードウェア機能が追加されました1980年代にパーソナルコンピュータが普及したとき、より大きなコンピュータで使用されているものと概念が似たオペレーティングシステムがそれらのために作られました。

1940年代、初期の電子デジタルシステムにはオペレーティングシステムがありませんでした。この時代の電子システムは、機械式スイッチの列またはプラグボード上のジャンパー線によってプログラムされていました。これらは、たとえば、軍用の弾道表を生成したり、パンチされた紙のカードのデータから給与小切手の印刷を制御したりする特殊な目的のシステムでした。プログラム可能な汎用コンピュータが発明された後、プログラミングプロセスを高速化する機械語(パンチ紙テープ上の2桁の0と1の文字列で構成される)が導入されました(Stern、1981)。[完全な引用が必要]

OS / 360は、Apolloプログラムで使用されるコンピューターを含め、1966年以降ほとんどのIBMメインフレームコンピューターで使用されていました

1950年代初頭、コンピューターは一度に1つのプログラムしか実行できませんでした。各ユーザーは限られた期間だけコンピューターを使用し、プログラムとデータをパンチ紙カードまたはパンチテープに入れて予定された時間に到着しました。プログラムはマシンにロードされ、プログラムが完了するかクラッシュするまでマシンは動作するように設定されます。プログラムは通常、トグルスイッチとパネルライトを使用してフロントパネルからデバッグできます。アランチューリングは初期のマンチェスターマーク1マシンでこれをマスターしたと言われており、彼はすでに万能チューリングマシンの原理からオペレーティングシステムの原始的な概念を導き出していました[11]

後のマシンにはプログラムのライブラリが付属しており、ユーザーのプログラムにリンクして、入出力やコンパイル(人間が読める形式のシンボリックコードからマシンコードを生成)などの操作を支援します。これが現代のオペレーティングシステムの起源でした。ただし、マシンはまだ一度に1つのジョブを実行していました。イギリスのケンブリッジ大学では、ジョブキューはかつて洗濯ライン(物干し)であり、そこからテープをさまざまな色の洗濯バサミで吊るして、仕事の優先順位を示していました。[要出典]

改善点はAtlasSupervisorでした。1962年にマンチェスターアトラス導入されたこのアトラスは、多くの人に最初に認識された最新のオペレーティングシステムであると考えられています。[12] ブリンチ・ハンセンはそれを「オペレーティングシステムの歴史の中で最も重要な突破口」と表現した。[13]

メインフレーム

1950年代を通じて、バッチ処理、入出力割り込みバッファリングマルチタスクスプーリングランタイムライブラリリンクローディングファイル内のレコード並べ替えるためのプログラムなど、メインフレームコンピュータのオペレーティングシステムの分野で多くの主要な機能が開拓されました。これらの機能は、すべてのアプリケーションで使用される個別のオペレーティングシステムではなく、アプリケーションプログラマーのオプションでアプリケーションソフトウェアに含まれるか含まれませんでした。 1959年、SHAREオペレーティングシステムは、のための統合ユーティリティとしてリリースされたIBM 704、および後に709および7090メインフレームで、709、7090、および7094でIBSYS / IBJOBにすぐに取って代わられました

1960年代に、IBMのOS / 360は、製品ライン全体にまたがる単一のOSの概念を導入しました。これは、System / 360マシンの成功に不可欠でした。IBMの現在のメインフレームオペレーティングシステムは、この元のシステムの子孫であり、最新のマシンは、OS / 360用に作成されたアプリケーションと下位互換性があります。[要出典]

OS / 360は、オペレーティングシステムが、メインメモリのプログラムとデータスペースの割り当て、セカンダリストレージのファイルスペース、更新中のファイルロックなど、使用されているすべてのシステムリソースを追跡するという概念も開拓しました。何らかの理由でプロセスが終了すると、これらのリソースはすべてオペレーティングシステムによって再利用されます。

S / 360-67の代替CP-67システムは、仮想マシンの概念に焦点を合わせたIBMオペレーティングシステムの全ラインを開始しましたIBM S / 360シリーズのメインフレームで使用されるその他のオペレーティングシステムには、IBMが開発したシステムが含まれます:DOS / 360 [a](ディスクオペレーティングシステム)、TSS / 360(タイムシェアリングシステム)、TOS / 360(テープオペレーティングシステム)、BOS / 360(基本オペレーティングシステム)、ACP(航空会社管理プログラム)、およびIBM以外のいくつかのシステム:MTS(ミシガンターミナルシステム)、MUSIC(インタラクティブコンピューティング用マルチユーザーシステム)、ORVYL (スタンフォードタイムシェアリングシステム)。

Control Data Corporationは、1960年代にバッチ処理用のSCOPEオペレーティングシステムを開発しました。ミネソタ大学と協力して、クロノスとその後のNOSオペレーティングシステムが1970年代に開発され、バッチとタイムシェアリングの同時使用がサポートされました。多くの商用タイムシェアリングシステムと同様に、そのインターフェイスはダートマスBASICオペレーティングシステムの拡張であり、タイムシェアリングおよびプログラミング言語の先駆的な取り組みの1つです。 1970年代後半、コントロールデータとイリノイ大学がPLATOを開発しました。プラズマパネルディスプレイと長距離タイムシェアリングネットワークを使用したオペレーティングシステム。プラトンは、リアルタイムチャットとマルチユーザーグラフィックゲームを特徴として、当時としては非常に革新的でした。

1961年、バロース社MCP(マスターコントロールプログラム)オペレーティングシステムを搭載しB5000を発表しました。 B5000は、アセンブラなしで高級言語のみをサポートするように設計されスタックマシンでした。[b]実際、MCPは、高級言語(ESPOLALGOLの方言のみで記述された最初のOSでした。 MCPは、仮想メモリの最初の商用実装など、他の多くの画期的なイノベーションも導入しましたAS / 400の開発中、IBMは、AS / 400ハードウェアで実行するMCPのライセンスを取得するためにBurroughsにアプローチしました。この提案は、既存のハードウェア生産を保護するためにバロウズの経営陣によって拒否されました。MCPは、現在もUnisys社のMCP / ClearPathコンピューターラインで使用されています。

最初の商用コンピュータメーカーであるUNIVACは、一連のEXECオペレーティングシステムを作成しました[要出典]初期のすべてのメインフレームシステムと同様に、このバッチ指向のシステムは、磁気ドラム、ディスク、カードリーダー、およびラインプリンターを管理していました。1970年代に、UNIVACは、ダートマスBCシステムに倣ってパターン化された、大規模なタイムシェアリングをサポートするReal-Time Basic(RTB)システムを作成しました。

General ElectricMITは、General Electric Comprehensive Operating Supervisor(GECOS)を開発しました。これは、リングセキュリティ特権レベルの概念を導入したものです。Honeywellによる買収後、General Comprehensive Operating System(GCOS)に名前が変更されまし

Digital Equipment Corporationは、36ビットPDP-10クラスシステム用のTOPS-10およびTOPS-20タイムシェアリングシステムを含む、さまざまなコンピュータライン用の多くのオペレーティングシステムを開発しました。 UNIXが広く使用される前は、TOPS-10は大学や初期のARPANETコミュニティで特に人気のあるシステムでしたRT-11PDP-11クラスのミニコンピューター用のシングルユーザーリアルタイムOSでありRSX-11は対応するマルチユーザーOSでした。

1960年代後半から1970年代後半にかけて、同様のソフトウェアまたは移植されたソフトウェアを複数のシステムで実行できるようにするいくつかのハードウェア機能が進化しました。初期のシステムでは、マイクロプログラミング利用してシステムに機能を実装し、基盤となるさまざまなコンピュータアーキテクチャをシリーズの他のアーキテクチャと同じように見せていました。実際、360/40以降のほとんどの360(360 / 44、360 / 75、360 / 91、360 / 95、および360/195を除く)は、マイクロプログラムされた実装でした。

1960年代以降に行われたこれらのシステム用のソフトウェアへの莫大な投資により、元のコンピューターメーカーのほとんどは、ハードウェアとともに互換性のあるオペレーティングシステムを開発し続けました。サポートされている注目すべきメインフレームオペレーティングシステムは次のとおりです。

マイコン

PC DOSは、コマンドラインインターフェイスを備えた初期のパーソナルコンピュータOSでした。
よるMac OSのアップルコンピュータが搭載した最初の広範なOSとなったグラフィカル・ユーザー・インターフェースを。ウィンドウやアイコンなどの機能の多くは、後でGUIで一般的になります。

最初のマイクロコンピューターには、メインフレームとミニ用に開発された精巧なオペレーティングシステムの容量や必要性がありませんでした。最小限のオペレーティングシステムが開発され、多くの場合ROMからロードされ、モニターとして知られています。注目すべき初期のディスクオペレーティングシステムの1つCP / Mでした。これは、多くの初期のマイクロコンピュータでサポートされ、IBM PC用に選択されたオペレーティングシステムとして広く普及したMicrosoftMS-DOSによって厳密に模倣されました(IBMのバージョンはIBMDOSまたはPCDOS)。 1980年代に、Apple Computer Inc.(現在のApple Inc.)はその人気を放棄しましたアップルIIを導入するマイコンの一連のアップルのMacintosh革新的でコンピュータをグラフィカル・ユーザー・インターフェースに(GUI)のMac OS

導入インテル80386 1985年10月にCPUチップ、[14]、32ビットアーキテクチャとページングを実行する能力を備えたパーソナルコンピュータを提供する機能、マルチタスク、以前のもののようなオペレーティングシステムミニコンピュータメインフレーム。マイクロソフトは、雇用することによって、この進歩に応えデヴィッド・カトラー開発した、VMSのためのオペレーティング・システムのディジタルイクイップメント株式会社。彼は、Microsoftのオペレーティングシステムラインの基盤として機能し続けるWindowsNTオペレーティングシステムの開発を主導しましたスティーブ・ジョブズAppleInc 。の共同設立者であるNeXTComputer Inc.NEXTSTEPオペレーティングシステムを開発しました。 NEXTSTEPは、後にApple Inc.によって買収されMac OS X(最新の名前変更後のmacOS)のコアとしてFreeBSDからのコードとともに使用されます

GNUプロジェクトは、活動家やプログラマによって開始されたリチャード・ストールマン、完全な作成を目的としたフリーソフトウェア独自に交換するUNIXオペレーティング・システムを。プロジェクトはUNIXのさまざまな部分の機能を複製することに大成功を収めましたが、GNUHurdカーネルの開発は非生産的であることが判明しました。 1991年、フィンランドのコンピュータサイエンスの学生であるLinus Torvaldsは、インターネットを介して協力しているボランティアの協力を得て、Linuxカーネルの最初のバージョンをリリースしました。それはすぐにGNUユーザースペースコンポーネントとシステムソフトウェア統合されました完全なオペレーティングシステムを形成します。それ以来、2つの主要なコンポーネントの組み合わせは、通常、ソフトウェア業界では単に「Linux」と呼ばれています。これは、ストールマンとフリーソフトウェアファウンデーションが反対し続け、GNU / Linuxという名前を好む命名規則ですBSDとして知られるBerkeleySoftware Distributionは、1970年代からカリフォルニア大学バークレー校によって配布されたUNIX派生物です。自由に配布され、多くのミニコンピューターに移植され、最終的にはPCで使用するために、主にFreeBSDNetBSDOpenBSDとして次のようになりました

UnixおよびUnixライクなオペレーティングシステム

Unixシステムの進化

Unixはもともとアセンブリ言語で書かれていました[15] Ken ThompsonMULTICSプロジェクトでの経験に基づいて、主にBCPLに基づいてBを作成しました。BはCに置き換えられ、UnixはCで書き直され、すべての最新のオペレーティングシステムに影響を与えてきた相互に関連するオペレーティングシステムの大規模で複雑なファミリに発展しました(履歴を参照)。

Unixライクな家族はを含むいくつかの主要なサブカテゴリーで、オペレーティングシステムの多様なグループであるSystem VのBSD、およびLinuxの。 「UNIXという名前は、The Open Groupの商標であり、その定義に準拠していることが示されているオペレーティングシステムでの使用を許可しています。 「UNIXライク」は通常、元のUNIXに似たオペレーティングシステムの大規模なセットを指すために使用されます。

Unixライクなシステムは、さまざまなコンピュータアーキテクチャで実行されます。これらは、ビジネスのサーバーだけでなく、学術およびエンジニアリング環境のワークステーション頻繁に使用されますLinuxBSDなどの無料のUNIXバリアントは、これらの分野で人気があります。

4つのオペレーティングシステムは、The Open Group(Unix商標の所有者)によってUnixとして認定されています。 HPのHP-UXとIBMのAIXは、どちらも元のSystem V Unixの子孫であり、それぞれのベンダーのハードウェアでのみ実行されるように設計されています。対照的に、Sun MicrosystemsSolarisは、x86サーバーSparcサーバー、PCなどの複数のタイプのハードウェアで実行できます。 Appleの以前の(非Unix)Mac OSの代替品であるAppleのmacOSは、NeXTSTEPMach、およびFreeBSDから派生しハイブリッドカーネルベースのBSDバリアントです

Unixの相互運用性は、POSIX標準を確立することによって求められましたPOSIX標準は、元々さまざまなUnixバリアント用に作成されたものですが、どのオペレーティングシステムにも適用できます。

BSDとその子孫

World Wide Web最初のサーバーは、BSDベースのNeXTSTEPで実行されていました。

A subgroup of the Unix family is the Berkeley Software Distribution family, which includes FreeBSD, NetBSD, and OpenBSD. These operating systems are most commonly found on webservers, although they can also function as a personal computer OS. The Internet owes much of its existence to BSD, as many of the protocols now commonly used by computers to connect, send and receive data over a network were widely implemented and refined in BSD. The World Wide Web was also first demonstrated on a number of computers running an OS based on BSD called NeXTSTEP.

1974年、カリフォルニア大学バークレー校は最初のUnixシステムをインストールしました。時が経つにつれて、そこでのコンピュータサイエンス部門の学生とスタッフは、テキストエディタなど、物事を簡単にするための新しいプログラムを追加し始めました。バークレーが1978年にUnixをインストールした新しいVAXコンピュータを受け取ったとき、学校の学部生は、コンピュータのハードウェアの可能性を活用するために、Unixをさらに変更しました。米国防総省の国防高等研究計画庁、米国の国防総省は、興味を持った、そしてプロジェクトに資金を提供することを決めました。多くの学校、企業、政府機関が注目し、AT&Tが配布する公式バージョンの代わりにバークレーバージョンのUnixを使用し始めました。

Steve Jobsは、1985年にApple Inc.を去った後、NeXTSTEPと呼ばれるBSDのバリエーションで動作するハイエンドコンピュータを製造する会社であるNeXTInc。を設立しましたこれらのコンピューターの1つは、ワールドワイドウェブを作成した最初のWebサーバーとしてTimBerners-Leeによって使用されました。

キースボスティックのような開発者は、ベル研究所で作成されたフリーでないコードを置き換えることをプロジェクトに奨励しました。しかし、これが行われると、AT&Tは訴訟を起こしました。2年間の法的な論争の後、BSDプロジェクトは、NetBSDFreeBSD(両方とも1993年)、OpenBSD(1995年のNetBSDからなどの多くの無料の派生物を生み出しました

マックOS

macOS(以前の「MacOSX」およびその後の「OSX」)は、Apple Inc.によって開発、販売、販売されているオープンコアのグラフィカルオペレーティングシステムのラインであり、最新のものは現在出荷されているすべてのMacintoshコンピュータにプリロードされています。 macOSは、1984年以来Appleの主要なオペレーティングシステムであった元のクラシックMac OSの後継です。前任者とは異なり、macOSは1980年代後半からまでNeXTで開発されたテクノロジーに基づいて構築されUNIXオペレーティングシステムです。Appleは1997年の初めに会社を買収しました。オペレーティングシステムは1999年にMacOS X Server1.0として最初にリリースされました。、2001年3月にクライアントバージョン(Mac OS X v10.0 "Cheetah")が続きます。それ以来、macOSの6つの異なる「クライアント」エディションと「サーバー」エディションがリリースされ、2つがOS X10.7「ライオン」に統合されました

macOSと統合する前は、サーバーエディション( macOS Server  )は、デスクトップ版とアーキテクチャ的に同一であり、通常はAppleのMacintoshサーバーハードウェアラインで実行されていました。 macOS Serverにはメール転送エージェントSambaサーバーLDAPサーバー、ドメインネームサーバーなどの主要なネットワークサービスへの簡単なアクセスを提供するワークグループ管理および管理ソフトウェアツールが含まれていました。Mac OS X v10.7ライオン、Mac OS X Serverのすべてのサーバーの側面がクライアントバージョンに統合され、製品のブランドが「OSX」に変更されました(名前から「Mac」が削除されました)。サーバーツールがアプリケーションとして提供されるようになりました。[16]

Linux

UNIXライクなオペレーティングシステムであるLinux、1991年9月17日にLinusTorvaldsによって初めてリリースされました[17] [18] [19] LinuxのマスコットであるペンギンTux写真[20]

Linuxカーネルは、フィンランドの大学生のときに、LinusTorvaldsのプロジェクトとして1991年に始まりました。彼は自分のプロジェクトに関する情報をコンピューターの学生とプログラマー向けのニュースグループに投稿し、完全で機能的なカーネルの作成に成功したボランティアからサポートと支援を受けました。

LinuxUnixに似ていますが、BSDやその亜種とは異なり、Unixコードなしで開発されました。Linuxカーネルコードはオープンライセンスモデルであるため、調査と変更が可能であり、その結果、スーパーコンピューターからスマートウォッチまでの幅広いコンピューティング機械で使用されるようになりました。 Linuxはすべての「デスクトップ」(またはラップトップ)PCの1.82%でしか使用されていないと推定されていますが、[21]サーバー[22]携帯電話などの組み込みシステム[23]での使用に広く採用されています。 Linuxは多くのプラットフォームでUnixに取って代わり、上位385を含むほとんどのスーパーコンピューターで使用されています。[24]同じコンピューターの多くはGreen500でも使用されています。(ただし順序は異なります)、Linuxは上位10位で実行されます。Linuxは、スマートフォンスマートウォッチなど、エネルギー効率の高い他の小型コンピューターでも一般的に使用されています。Linuxカーネルは、Red HatDebianUbuntuLinux MintGoogleAndroidChrome OSChromiumOSなどの一般的なディストリビューションで使用されています。

マイクロソフトウィンドウズ

Microsoft Windowsは、Microsoft Corporationによって設計された独自のオペレーティングシステムのファミリであり、主にIntelアーキテクチャベースのコンピュータを対象としており、Web接続されたコンピュータでの合計使用シェアは推定88.9%です。[21] [25] [26] [27]最新バージョンはWindows11です。

2011年、Windows 7は、使用されている最も一般的なバージョンとしてWindowsXPを追い抜きました。[28] [29] [30]

Microsoft Windowsは、当時ほとんどのIntelアーキテクチャのパーソナルコンピュータに搭載されていた標準のオペレーティングシステムであるMS-DOS上で実行されるオペレーティング環境として1985年に最初にリリースされました。 1995年に、ブートストラップとしてMS-DOSのみを使用するWindows95がリリースされました。下位互換性のために、Win9xはリアルモードのMS-DOS [31] [32]および16ビットのWindows3.x [33]ドライバーを実行できます。2000年にリリースされたWindowsMEは、Win9xファミリの最後のバージョンでした。それ以降のバージョンはすべてWindowsNTカーネルに基づいています。 Windowsの現在のクライアントバージョンはIA-32x86-64で実行されます およびARM マイクロプロセッサ[34]さらに、Itaniumは古いサーバーバージョンのWindows Server 2008R2でも引き続きサポートされますこれまで、WindowsNTは追加のアーキテクチャをサポートしていました。

Windowsのサーバーエディションが広く使用されています。近年、Microsoftは、サーバーオペレーティングシステムとしてのWindowsの使用を促進するために多額の資本を費やしていますただし、サーバーでのWindowsの使用は、Windowsがサーバーの市場シェアを求めてLinuxやBSDと競合するため、パーソナルコンピューターほど普及していません。[35] [36]

ReactOSは、Windowsの代替オペレーティングシステムであり、Microsoftのコードを使用せずに、Windowsの原則に基づいて開発されています。

他の

AmigaOSのように、当時は重要であったがもはや重要ではない多くのオペレーティングシステムがありましたIBMおよびMicrosoftのOS / 2 ;クラシックMacOS、AppleのmacOSの非Unix前駆体。BeOS ; XTS-300 ; RISC OS ; MorphOS ;俳句; BareMetalFreeMint。いくつかはまだニッチ市場で使用されており、愛好家のコミュニティや専門家のアプリケーションのためのマイノリティプラットフォームとして開発され続けています。以前はDECのOpenVMSはVMS SoftwareIncによって現在も活発に開発されています。。さらに他のオペレーティングシステムは、オペレーティングシステムの教育や、オペレーティングシステムの概念の研究を行うために、ほとんど学術界でのみ使用されています。両方の役割を果たすシステムの典型的な例はMINIXですが、たとえば、特異点は純粋に研究に使用されます。もう1つの例は、1980年代にNiklaus WirthJürgGutknecht、および旧Computer SystemsInstituteの学生グループによってETHチューリッヒで設計されOberonシステムです。主にWirthのグループでの研究、教育、日常業務に使用されました。

他のオペレーティングシステムは大きな市場シェアを獲得できませんでしたが、主流のオペレーティングシステム、特にベル研究所のPlan9に影響を与えたイノベーションを導入しました

コンポーネント

オペレーティングシステムのコンポーネントはすべて、コンピューターのさまざまな部分を連携させるために存在します。すべてのユーザーソフトウェアは、マウスやキーボードのように単純なものであれ、インターネットコンポーネントのように複雑なものであれ、ハードウェアを使用するためにオペレーティングシステムを経由する必要があります。

カーネル

カーネルは、アプリケーションソフトウェアをコンピューターのハードウェアに接続します。

ファームウェアデバイスドライバーの助けを借りて、カーネルはコンピューターのすべてのハードウェアデバイスに対して最も基本的なレベルの制御を提供します。RAM内のプログラムのメモリアクセスを管理し、どのプログラムがどのハードウェアリソースにアクセスできるかを決定し、常に最適な動作を実現するためにCPUの動作状態を設定またはリセットし、長期の不揮発性ストレージ用にデータを整理します。、ファイル・システムなどのディスク、テープ、フラッシュメモリ、などのメディアに

プログラムの実行

オペレーティングシステムは、アプリケーションプログラムとコンピュータハードウェア間のインターフェイスを提供するため、アプリケーションプログラムは、オペレーティングシステムにプログラムされたルールと手順に従うだけでハードウェアと対話できます。オペレーティングシステムは、アプリケーションプログラムの開発と実行を簡素化する一連のサービスでもあります。アプリケーションプログラムの実行には、オペレーティングシステムカーネルによるプロセスの作成が含まれます。このプロセスは、メモリスペースやその他のリソースを割り当て、マルチタスクシステムでプロセスの優先順位を確立し、プログラムのバイナリコードをメモリにロードし、アプリケーションプログラムの実行を開始します。次に、ユーザーおよびハードウェアデバイスと対話します。

割り込み

割り込みは、オペレーティングシステムがその環境と相互作用し、それに反応するための効率的な方法を提供するため、オペレーティングシステムの中心です。別の方法(オペレーティングシステムに、アクションを必要とするイベント(ポーリング)のさまざまな入力ソースを「監視」させる)は、スタックが非常に小さい(50バイトまたは60バイト)古いシステムで見られますが、スタックが大きい最近のシステムでは珍しいことです。割り込みベースのプログラミングは、ほとんどの最新のCPUで直接サポートされています。割り込みは、ローカルレジスタコンテキストを自動的に保存し、イベントに応答して特定のコードを実行する方法をコンピュータに提供します。非常に基本的なコンピューターでもハードウェア割り込みをサポートしており、プログラマーはそのイベントが発生したときに実行される可能性のあるコードを指定できます。

割り込みを受信すると、コンピューターのハードウェアは、現在実行中のプログラムを自動的に一時停止し、そのステータスを保存して、以前に割り込みに関連付けられていたコンピューターコードを実行します。これは、電話に応答して本にブックマークを配置することに似ています。最新のオペレーティングシステムでは、割り込みはオペレーティングシステムのカーネルによって処理されます。割り込みは、コンピュータのハードウェアまたは実行中のプログラムのいずれかから発生する可能性があります。

ハードウェアデバイスが割り込みをトリガーすると、オペレーティングシステムのカーネルは、通常、何らかの処理コードを実行することにより、このイベントの処理方法を決定します。実行されるコードの量は、割り込みの優先度によって異なります(たとえば、人は通常、電話に応答する前に煙探知器のアラームに応答します)。ハードウェア割り込みの処理は、通常、デバイスドライバーと呼ばれるソフトウェアに委任されるタスクであり、オペレーティングシステムのカーネルの一部、別のプログラムの一部、またはその両方である可能性があります。次に、デバイスドライバは、さまざまな方法で実行中のプログラムに情報を中継できます。

プログラムは、オペレーティングシステムへの割り込みをトリガーする場合もあります。たとえば、プログラムがハードウェアにアクセスしたい場合、オペレーティングシステムのカーネルに割り込む可能性があります。これにより、制御がカーネルに戻されます。次に、カーネルが要求を処理します。プログラムがメモリなどの追加のリソースを必要とする(またはリソースを削減することを希望する)場合、カーネルの注意を引くために割り込みをトリガーします。

モード

プロテクトモードで使用可能なx86マイクロプロセッサアーキテクチャの特権リングオペレーティングシステムは、各モードで実行されるプロセスを決定します。

最新のコンピューターは、複数の操作モードをサポートしています。この機能を備えたCPUは、ユーザーモードスーパーバイザーモードの少なくとも2つのモードを提供します。一般的に、スーパーバイザーモードの操作では、すべてのMPU命令を含む、すべてのマシンリソースへの無制限のアクセスが許可されます。ユーザーモード操作は、命令の使用に制限を設定し、通常、マシンリソースへの直接アクセスを許可しません。 CPUには、32ビットプロセッサの16ビットプロセッサや64ビットプロセッサの32ビットプロセッサなど、古いプロセッサタイプをエミュレートするための仮想モードなど、ユーザーモードと同様の他のモードがある場合があります

電源投入時またはリセット時に、システムはスーパーバイザーモードで起動します。オペレーティングシステムカーネルがロードされて開始されると、ユーザーモードとスーパーバイザーモード(カーネルモードとも呼ばれます)の境界を確立できます。

スーパーバイザーモードは、メモリへのアクセス方法の制御や、ディスクドライブやビデオディスプレイデバイスなどのデバイスとの通信など、ハードウェアへの無制限のアクセスを必要とする低レベルのタスクのためにカーネルによって使用されます。対照的に、ユーザーモードは他のほとんどすべてに使用されます。ワードプロセッサやデータベースマネージャなどのアプリケーションプログラムは、ユーザーモード内で動作し、制御をカーネルに切り替えることによってのみマシンリソースにアクセスできます。このプロセスにより、スーパーバイザーモードに切り替わります。通常、カーネルへの制御の転送は、Motorola68000などのソフトウェア割り込み命令を実行することによって実現されます。TRAP命令。ソフトウェア割り込みにより、プロセッサはユーザーモードからスーパーバイザーモードに切り替わり、カーネルが制御できるようにするコードの実行を開始します。

ユーザーモードでは、プログラムは通常、制限された一連のプロセッサ命令にアクセスでき、通常、システムの動作を中断させる可能性のある命令を実行することはできません。スーパーバイザーモードでは、通常、命令実行の制限が解除され、カーネルがすべてのマシンリソースに無制限にアクセスできるようになります。

「ユーザーモードリソース」という用語は、通常、実行中のプログラムが変更を許可されていない情報を含む1つ以上のCPUレジスタを指します。これらのリソースを変更しようとすると、通常、スーパーバイザーモードに切り替わります。このモードでは、オペレーティングシステムは、プログラムを強制的に終了(「強制終了」)するなどして、プログラムが試みていた不正な操作に対処できます。

メモリ管理

特に、マルチプログラミングオペレーティングシステムカーネルは、プログラムによって現在使用されているすべてのシステムメモリの管理を担当する必要があります。これにより、プログラムが別のプログラムですでに使用されているメモリに干渉しないことが保証されます。プログラムは時分割であるため、各プログラムはメモリに独立してアクセスできる必要があります。

多くの初期のオペレーティングシステムで使用されている協調メモリ管理は、すべてのプログラムがカーネルのメモリマネージャを自発的に使用し、割り当てられたメモリを超えないことを前提としています。プログラムには、割り当てられたメモリを超える原因となる可能性のあるバグが含まれていることが多いため、このメモリ管理システムはほとんど見られなくなりました。プログラムに障害が発生すると、1つ以上の他のプログラムによって使用されているメモリが影響を受けたり上書きされたりする可能性があります。悪意のあるプログラムやウイルスは、意図的に別のプログラムのメモリを変更したり、オペレーティングシステム自体の動作に影響を与えたりする可能性があります。協調的なメモリ管理を使用すると、システムをクラッシュさせるのに1つの不正なプログラムしか必要ありません。

メモリ保護により、カーネルはプロセスのコンピュータのメモリへのアクセスを制限できます。メモリセグメンテーションページングなど、メモリ保護にはさまざまな方法があります。すべての方法で、ある程度のハードウェアサポート(80286 MMUなど)が必要ですが、これはすべてのコンピューターに存在するわけではありません。

セグメンテーションとページングの両方で、特定のプロテクトモードレジスタは、実行中のプログラムがアクセスできるようにするメモリアドレスをCPUに指定します。他のアドレスにアクセスしようとすると、割り込みがトリガーされ、CPUがスーパーバイザモードに戻り、カーネルが担当します。これは、セグメンテーション違反または略してSeg-Vと呼ばれ、そのような操作に意味のある結果を割り当てることは困難であり、通常は不正なプログラムの兆候であるため、カーネルは通常、問題のあるプログラムを終了することになります。 、およびエラーを報告します。

Windowsバージョン3.1からMEにはある程度のメモリ保護がありましたが、プログラムはそれを使用する必要性を簡単に回避できました。一般保護違反は、セグメンテーション違反が発生していた示し、生成されます。ただし、とにかくシステムがクラッシュすることがよくありました。

仮想メモリ

多くのオペレーティングシステムは、プログラムをだまして、ハードディスクとRAMに散在するメモリを、仮想メモリと呼ばれる1つの連続したメモリチャンクであるかのように使用させることができます。

仮想メモリアドレス指定(ページングやセグメンテーションなど)を使用すると、カーネルは各プログラムがいつでも使用できるメモリを選択できるため、オペレーティングシステムは複数のタスクに同じメモリ位置を使用できます。

プログラムが現在のアクセス可能なメモリの範囲内にないメモリにアクセスしようとしたが、それでも割り当てられている場合、プログラムが割り当てられたメモリを超えた場合と同じ方法でカーネルが中断されます。(メモリ管理のセクションを参照してください。)UNIXでは、この種の割り込みはページフォールトと呼ばれます

カーネルは通常、ページフォールトを検出すると、それをトリガーしたプログラムの仮想メモリ範囲を調整し、要求されたメモリへのアクセスを許可します。これにより、特定のアプリケーションのメモリが格納されている場所、または実際に割り当てられているかどうかに関係なく、カーネルに任意の権限が与えられます。

最近のオペレーティングシステムでは、アクセス頻度の低いメモリをディスクまたは他のメディアに一時的に保存して、そのスペースを他のプログラムで使用できるようにすることができます。これは、メモリの領域を複数のプログラムで使用でき、そのメモリ領域に含まれるものをオンデマンドで交換または交換できるため、スワッピングと呼ばれます。

「仮想メモリ」は、プログラマまたはユーザーに、実際に存在するよりもはるかに大量のRAMがコンピュータにあるという認識を提供します。[37]

マルチタスク

マルチタスクとは、同じコンピューター上で複数の独立したコンピュータープログラムを実行することを指します。同時にタスクを実行しているように見せます。ほとんどのコンピューターは一度に最大で1つまたは2つのことを実行できるため、これは通常、タイムシェアリングを介して実行されます。つまり、各プログラムはコンピューターの時間の一部を使用して実行します。

オペレーティングシステムカーネルには、各プロセスの実行に費やす時間と、実行制御をプログラムに渡す順序を決定するスケジューリングプログラムが含まれています。制御はカーネルによってプロセスに渡され、プログラムがCPUとメモリにアクセスできるようにします。その後、何らかのメカニズムを介して制御がカーネルに戻されるため、別のプログラムがCPUを使用できるようになります。カーネルとアプリケーション間のこのいわゆる制御の受け渡しは、コンテキストスイッチと呼ばれます

プログラムへの時間の割り当てを管理する初期のモデルは、協調マルチタスクと呼ばれていましたこのモデルでは、制御がカーネルによってプログラムに渡されると、制御がカーネルに明示的に返される前に、必要なだけ実行される可能性があります。つまり、悪意のあるプログラムや誤動作しているプログラムは、他のプログラムがCPUを使用できなくなるだけでなく、無限ループに入るとシステム全体がハングする可能性があります

最新のオペレーティングシステムは、アプリケーションプリエンプションの概念をデバイスドライバーとカーネルコードに拡張しているため、オペレーティングシステムは内部ランタイムもプリエンプティブに制御できます。

プリエンプティブマルチタスクを管理する哲学は、すべてのプログラムがCPU上で定期的に与えられることを保証することです。これは、すべてのプログラムが、中断されることなくCPUに費やすことができる時間を制限する必要があることを意味します。これを実現するために、最新のオペレーティングシステムカーネルは時限割り込みを利用します。プロテクトモードのタイマーが指定した時間が経過した後にスーパーバイザモードへの復帰をトリガカーネルによって設定されています。 (割り込みとデュアルモード操作に関する上記のセクションを参照してください。)

多くのシングルユーザーオペレーティングシステムでは、家庭用コンピュータは一般に少数の十分にテストされたプログラムを実行するため、協調マルチタスクは完全に適切です。AmigaOSのは、その最初のバージョンからプリエンプティブマルチタスキングを有する、例外です。Windows NTは、プリエンプティブマルチタスクを適用したMicrosoft Windowsの最初のバージョンでしたが、Windows XPWindows NTは専門家を対象としていたため)までホームユーザー市場に到達しませんでした

ディスクアクセスとファイルシステム

ファイルシステムを使用すると、ユーザーとプログラムは、多くの場合ディレクトリ(または「フォルダ」)を使用して、コンピュータ上のファイルを整理および並べ替えることができます。

ディスクに保存されているデータへのアクセスは、すべてのオペレーティングシステムの中心的な機能です。コンピューターは、ファイルを使用してデータをディスクに保存します。ファイルは、アクセスの高速化と信頼性の向上を可能にし、ドライブの使用可能なスペースをより有効に活用するために、特定の方法で構造化されています。ファイルがディスクに保存される特定の方法はファイルシステムと呼ばれ、ファイルに名前と属性を持たせることができます。また、ディレクトリツリーに配置されたディレクトリまたはフォルダの階層に保存することもできます

初期のオペレーティングシステムは、通常、1種類のディスクドライブと1種類のファイルシステムのみをサポートしていました。初期のファイルシステムは、容量、速度、および使用できるファイル名とディレクトリ構造の種類に制限がありました。これらの制限は、多くの場合、設計されたオペレーティングシステムの制限を反映しているため、オペレーティングシステムが複数のファイルシステムをサポートすることは非常に困難です。

多くのより単純なオペレーティングシステムは、ストレージシステムにアクセスするための限られた範囲のオプションをサポートしますが、UNIXLinuxなどのオペレーティングシステムは、仮想ファイルシステムまたはVFSと呼ばれるテクノロジをサポートします。 UNIXなどのオペレーティングシステムは、設計やファイルシステム関係なく、さまざまなストレージデバイスをサポートしているため、共通のアプリケーションプログラミングインターフェイス(API)を介してアクセスできます。これにより、プログラムがアクセスしているデバイスに関する知識を持っている必要がなくなります。 VFSを使用すると、オペレーティングシステムは、特定のを使用して、無限の種類のファイルシステムがインストールされた無制限の数のデバイスへのアクセスをプログラムに提供できます。デバイスドライバーとファイルシステムドライバー。

ハードドライブなどの接続されたストレージデバイスは、デバイスドライバを介してアクセスしますデバイスドライバは、ドライブの特定の言語を理解し、その言語を、オペレーティングシステムがすべてのディスクドライブにアクセスするために使用する標準言語に翻訳することができます。UNIXでは、これはブロックデバイスの言語です

カーネルに適切なデバイスドライバが配置されている場合、カーネルは1つ以上のファイルシステムを含む可能性のあるraw形式でディスクドライブの内容にアクセスできます。ファイルシステムドライバは、特定の各ファイルシステムにアクセスするために使用されるコマンドを、オペレーティングシステムがすべてのファイルシステムと通信するために使用できる標準のコマンドセットに変換するために使用されます。プログラムは、階層構造内に含まれるファイル名、およびディレクトリ/フォルダに基づいて、これらのファイルシステムを処理できます。ファイルを作成、削除、開く、閉じるだけでなく、アクセス許可、サイズ、空き容量、作成日と変更日など、ファイルに関するさまざまな情報を収集できます。

ファイルシステム間のさまざまな違いにより、すべてのファイルシステムのサポートが困難になっています。ファイル名で許可される文字、大文字と小文字の区別、およびさまざまな種類のファイル属性の存在により、すべてのファイルシステムに単一のインターフェイスを実装することは困難な作業になります。オペレーティングシステムは、それらのために特別に設計されたファイルシステムの使用を推奨する(したがって、ネイティブにサポートする)傾向があります。たとえば、WindowsではNTFS、Linuxではext3ReiserFSです。ただし、実際には、サードパーティのドライバは通常、ほとんどの汎用オペレーティングシステムで最も広く使用されているファイルシステムをサポートするために利用できます(たとえば、NTFSはLinuxでNTFS-3gを介して利用できます)。、およびext2 / 3とReiserFSは、サードパーティソフトウェアを介してWindowsで利用できます)。

ファイルシステムのサポートは、最新のオペレーティングシステム間で大きく異なりますが、ほとんどすべてのオペレーティングシステムにサポートとドライバーが含まれている一般的なファイルシステムがいくつかあります。オペレーティングシステムは、ファイルシステムのサポートと、インストールされる可能性のあるディスクフォーマットによって異なります。Windowsでは、通常、各ファイルシステムのアプリケーションは特定のメディアに制限されています。たとえば、CDはISO 9660またはUDFを使用する必要がありWindowsVista以降は、NTFSは、オペレーティングシステムをインストールできる唯一のファイルシステムです。Linuxは多くの種類のファイルシステムにインストールできます。他のオペレーティングシステムとは異なり、LinuxおよびUNIXでは、ハードドライブ、ディスク(CD、DVD ...)、USBフラッシュドライブ、さらには含まれているメディアに関係なく、任意のファイルシステムを使用できます。別のファイルシステムにあるファイル内。

デバイスドライバ

デバイスドライバは、ハードウェアデバイスとの対話を可能にするために開発された特定のタイプのコンピュータソフトウェアです。通常、これは、ハードウェアが接続されている特定のコンピュータバスまたは通信サブシステムを介してデバイスと通信するためのインターフェイスを構成し、デバイスにコマンドを提供したり、デバイスからデータを受信したりします。システムおよびソフトウェアアプリケーション。これは、オペレーティングシステム固有の特殊なハードウェア依存コンピュータプログラムであり、別のプログラム、通常はオペレーティングシステムまたはアプリケーションソフトウェアパッケージ、またはオペレーティングシステムカーネルの下で実行されるコンピュータプログラムが、ハードウェアデバイスと透過的に対話できるようにします。通常、必要な非同期の時間依存ハードウェアインターフェイスのニーズに必要な割り込み処理を提供します。

デバイスドライバーの主要な設計目標は抽象化です。ハードウェアのすべてのモデル(同じクラスのデバイス内であっても)は異なります。新しいモデルは、より信頼性の高い、またはより優れたパフォーマンスを提供するメーカーからもリリースされており、これらの新しいモデルは多くの場合、異なる方法で制御されます。コンピュータとそのオペレーティングシステムは、現在および将来の両方で、すべてのデバイスを制御する方法を知っていると期待することはできません。この問題を解決するために、オペレーティングシステムは基本的に、あらゆるタイプのデバイスをどのように制御するかを指示します。デバイスドライバーの機能は、これらのオペレーティングシステムで義務付けられている関数呼び出しをデバイス固有の呼び出しに変換することです。理論的には、新しい方法で制御される新しいデバイスは、適切なドライバーが利用可能であれば正しく機能するはずです。この新しいドライバーは、オペレーティングシステムの観点から、デバイスが通常どおりに動作しているように見えることを保証します。

Vistaより前のバージョンのWindowsおよび2.6より前のバージョンのLinuxでは、すべてのドライバーの実行は協調的でした。つまり、ドライバーが無限ループに入った場合、システムがフリーズしていました。これらのオペレーティングシステムの最近のリビジョンには、カーネルプリエンプションが組み込まれています。カーネルプリエンプションでは、カーネルがドライバーに割り込みてタスクを与え、デバイスドライバーからの応答を受信するか、実行するタスクを増やすまで、プロセスから分離します。

ネットワーキング

現在、ほとんどのオペレーティングシステムは、それらを使用するためのさまざまなネットワークプロトコル、ハードウェア、およびアプリケーションをサポートしています。これは、異なるオペレーティングシステムを実行しているコンピューターが、有線または無線接続を使用して、コンピューティング、ファイル、プリンター、スキャナーなどのリソースを共有するための共通ネットワークに参加できることを意味します。ネットワークは基本的に、コンピューターのオペレーティングシステムがリモートコンピューターのリソースにアクセスして、それらのリソースがローカルコンピューターに直接接続されている場合と同じ機能をサポートできるようにします。これには、単純な通信から、ネットワーク化されたファイルシステムの使用、さらには別のコンピューターのグラフィックスやサウンドハードウェアの共有まで、すべてが含まれます。一部のネットワークサービスでは、コンピュータのリソースに透過的にアクセスできます。ネットワークユーザーがコンピューターのコマンドラインインターフェイスに直接アクセスできるようにするSSH

クライアント/サーバーネットワークを使用すると、クライアントと呼ばれるコンピューター上のプログラムが、ネットワークを介してサーバーと呼ばれる別のコンピューターに接続できます。サーバーは、他のネットワークコンピューターやユーザーにさまざまなサービスを提供(またはホスト)します。これらのサービスは通常、サーバーのIPアドレス以外のポートまたは番号付きアクセスポイントを介して提供されます通常、各ポート番号は、そのポートへの要求の処理を担当する最大1つの実行中のプログラムに関連付けられています。ユーザープログラムであるデーモンは、オペレーティングシステムのカーネルに要求を渡すことにより、そのコンピューターのローカルハードウェアリソースにアクセスできます。

Many operating systems support one or more vendor-specific or open networking protocols as well, for example, SNA on IBM systems, DECnet on systems from Digital Equipment Corporation, and Microsoft-specific protocols (SMB) on Windows. Specific protocols for specific tasks may also be supported such as NFS for file access. Protocols like ESound, or esd can be easily extended over the network to provide sound from local applications, on a remote system's sound hardware.

Security

コンピュータが安全であるかどうかは、適切に機能する多くのテクノロジに依存します。最新のオペレーティングシステムは、システム上で実行されているソフトウェアや、カーネルを介したネットワークなどの外部デバイスで利用できる多くのリソースへのアクセスを提供します。[38]

オペレーティングシステムは、処理を許可する必要がある要求と処理しない必要がある要求を区別できる必要があります。一部のシステムは単に「特権」と「非特権」を区別する場合がありますが、システムには通常、ユーザー名などの要求者IDの形式があります。 IDを確立するために、認証のプロセスが存在する場合があります。多くの場合、ユーザー名は引用符で囲む必要があり、各ユーザー名にはパスワードが付いている場合があります。代わりに、磁気カードや生体認証データなどの他の認証方法が使用される場合があります。場合によっては、特にネットワークからの接続では、認証なしでリソースにアクセスすることがあります(ネットワーク共有を介したファイルの読み取りなど)。リクエスターIDの概念にも含まれています承認;システムにログインすると、リクエスターがアクセスできる特定のサービスとリソースは、リクエスターのユーザーアカウント、またはリクエスターが属するさまざまに構成されたユーザーグループのいずれかに関連付けられます。[要出典]

セキュリティの許可または禁止モデルに加えて、高レベルのセキュリティを備えたシステムは、監査オプションも提供します。これらにより、リソースへのアクセス要求(「このファイルを誰が読んだか」など)を追跡できます。内部セキュリティ、またはすでに実行中のプログラムからのセキュリティは、オペレーティングシステムカーネルへの割り込みを介してすべての有害な可能性のある要求を実行する必要がある場合にのみ可能です。プログラムがハードウェアとリソースに直接アクセスできる場合、それらを保護することはできません。[要出典]

External security involves a request from outside the computer, such as a login at a connected console or some kind of network connection. External requests are often passed through device drivers to the operating system's kernel, where they can be passed onto applications, or carried out directly. Security of operating systems has long been a concern because of highly sensitive data held on computers, both of a commercial and military nature. The United States Government Department of Defense (DoD) created the Trusted Computer System Evaluation Criteria (TCSEC) which is a standard that sets basic requirements for assessing the effectiveness of security. This became of vital importance to operating system makers, because the TCSEC was used to evaluate, classify and select 機密情報または機密情報の処理、保存、および取得について検討されている信頼できるオペレーティングシステム

ネットワークサービスには、ファイル共有、印刷サービス、電子メール、Webサイト、ファイル転送プロトコル(FTP)などのサービスが含まれ、そのほとんどがセキュリティを侵害している可能性があります。セキュリティの最前線には、ファイアウォールと呼ばれるハードウェアデバイスがありますまたは侵入検知/防止システム。オペレーティングシステムレベルでは、侵入検知/防止システムだけでなく、多数のソフトウェアファイアウォールを利用できます。最新のオペレーティングシステムのほとんどには、デフォルトで有効になっているソフトウェアファイアウォールが含まれています。ソフトウェアファイアウォールは、オペレーティングシステムで実行されているサービスまたはアプリケーションとの間のネットワークトラフィックを許可または拒否するように構成できます。したがって、TelnetやFTPなどの安全でないサービスをインストールして実行することができ、ファイアウォールがそのポートでサービスに接続しようとするすべてのトラフィックを拒否するため、セキュリティ違反の脅威にさらされる必要はありません。

代替戦略、およびPopekとGoldbergの仮想化要件を満たさないシステムで利用可能な唯一のサンドボックス戦略は、オペレーティングシステムがユーザープログラムをネイティブコードとして実行せず、代わりにプロセッサをエミュレートするpのホストを提供する場合です。-Javaなどのコードベースのシステム。

内部セキュリティは、マルチユーザーシステムに特に関係があります。これにより、システムの各ユーザーは、他のユーザーが改ざんしたり読み取ったりできないプライベートファイルを持つことができます。プログラムは、監査のバイパスを含め、オペレーティングシステムをバイパスする可能性があるため、監査を使用する場合は、内部セキュリティも重要です。

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

Bashコマンドラインのスクリーンショット。各コマンドは「プロンプト」の後に入力され、その出力が画面の下に表示されます。現在のコマンドプロンプトは下部にあります。

個人が操作するすべてのコンピューターには、ユーザーインターフェイスが必要です。ユーザーインターフェイスは通常シェル呼ばれ、人間との対話をサポートする場合に不可欠です。ユーザーインターフェイスは、ディレクトリ構造表示し、キーボードマウスクレジットカードリーダーなどの入力ハードウェアデバイスからデータを取得するオペレーティングシステムにサービスを要求し出力ハードウェアにプロンプトステータスメッセージなどを表示するようにオペレーティングシステムサービスに要求します。ビデオモニタープリンターなどのデバイスユーザーインターフェイスの2つの最も一般的な形式は、歴史的に、コンピューターコマンドが行ごとに入力されるコマンドラインインターフェイス、視覚環境(最も一般的にはWIMP)が存在するグラフィカルユーザーインターフェイスでした。

グラフィカルユーザーインターフェイス

KDE Plasma5のグラフィカルユーザーインターフェイスのスクリーンショットプログラムは画面上の画像の形式を取り、ファイル、フォルダー(ディレクトリ)、およびアプリケーションはアイコンと記号の形式を取ります。マウスを使用してコンピューターをナビゲートします。

最新のコンピューターシステムのほとんどは、グラフィカルユーザーインターフェイス(GUI)をサポートしており、多くの場合、それらが含まれています。従来のMacOSの元の実装など、一部のコンピュータシステムでは、GUIがカーネルに統合されています

技術的にはグラフィカルユーザーインターフェイスはオペレーティングシステムサービスではありませんが、オペレーティングシステムカーネルにグラフィカルユーザーインターフェイスのサポートを組み込むと、GUIが出力機能を実行するために必要なコンテキストスイッチの数を減らすことで、GUIの応答性を高めることができます。他のオペレーティングシステムはモジュール式であり、グラフィックサブシステムをカーネルお​​よびオペレーティングシステムから分離します。 1980年代のUNIX、VMS、およびその他の多くのオペレーティングシステムには、このように構築されたオペレーティングシステムがありました。 LinuxとmacOSもこのように構築されています。WindowsVistaなどのMicrosoftWindowsの最新リリースでは、ほとんどがユーザースペースにあるグラフィックサブシステムが実装されています。ただし、Windows NT4.0との間のバージョンのグラフィックス描画ルーチンWindows Server 2003 exist mostly in kernel space. Windows 9x had very little distinction between the interface and the kernel.

Many computer operating systems allow the user to install or create any user interface they desire. The X Window System in conjunction with GNOME or KDE Plasma 5 is a commonly found setup on most Unix and Unix-like (BSD, Linux, Solaris) systems. A number of Windows shell replacements have been released for Microsoft Windows, which offer alternatives to the included Windows shell, but the shell itself cannot be separated from Windows.

Numerous Unix-based GUIs have existed over time, most derived from X11. Competition among the various vendors of Unix (HP, IBM, Sun) led to much fragmentation, though an effort to standardize in the 1990s to COSE and CDE failed for various reasons, and were eventually eclipsed by the widespread adoption of GNOME and K Desktop Environment. Prior to free software-based toolkits and desktop environments, Motif was the prevalent toolkit/desktop combination (and was the basis upon which CDE was developed).

グラフィカルユーザーインターフェイスは時間とともに進化します。たとえば、Windowsは、Windowsの新しいメジャーバージョンがリリースされるたびにユーザーインターフェイスを変更し、1999年のMac OSXの導入によりMacOSGUIは劇的に変化しました。[39]

リアルタイムオペレーティングシステム

リアルタイムオペレーティングシステム(RTOS)は、期限が固定されたアプリケーション(リアルタイムコンピューティング)を対象としたオペレーティングシステムです。このようなアプリケーションには、いくつかの小さな組み込みシステム、自動車のエンジンコントローラー、産業用ロボット、宇宙船、産業用制御、およびいくつかの大規模なコンピューティングシステムが含まれます。

大規模なリアルタイムオペレーティングシステムの初期の例は、アメリカン航空IBMセイバー航空予約システム用に開発したトランザクション処理機能でした

期限が固定されている組み込みシステムはVxWorksPikeOSeCosQNXMontaVista LinuxRTLinuxなどのリアルタイムオペレーティングシステムを使用します。Windows CEは、デスクトップWindowsと同様のAPIを共有するが、デスクトップWindowsのコードベースを共有しないリアルタイムオペレーティングシステムです。[40] Symbian OSには、バージョン8.0b以降のRTOSカーネル(EKA2)もあります。

一部の組み込みシステムは、Palm OSBSDLinuxなどのオペレーティングシステムを使用しますが、そのようなオペレーティングシステムはリアルタイムコンピューティングをサポートしていません。

趣味としてのオペレーティングシステム開発

趣味のオペレーティングシステムは、コードが既存のオペレーティングシステムから直接派生しておらず、ユーザーやアクティブな開発者がほとんどいないオペレーティングシステムとして分類される場合があります。[要出典]

場合によっては、趣味の開発は「自作」コンピューティングデバイス、たとえば6502マイクロプロセッサを搭載したシンプルなシングルボードコンピュータをサポートしています。または、開発はすでに広く使用されているアーキテクチャー向けである可能性があります。オペレーティングシステムの開発は、まったく新しい概念から生まれるか、既存のオペレーティングシステムをモデル化することから始まる場合があります。どちらの場合でも、趣味は彼/彼女自身の開発者であるか、または同じような興味を持っている個人の小さな、時には構造化されていないグループと対話するかもしれません。

趣味のオペレーティングシステムの例には、SyllableTempleOSが含まれます。

オペレーティングシステムの多様性と移植性

アプリケーションソフトウェアは通常、特定のオペレーティングシステムで使用するために作成されており、特定のハードウェア用に作成されている場合もあります。[要出典]アプリケーションを別のOSで実行するように移植する場合、そのアプリケーションに必要な機能(関数の名前、引数の意味など)は、アプリケーションの適合、変更、または変更を必要とするOSによって異なる方法で実装される場合があります。それ以外の場合は維持されます。

Unixは、アセンブリ言語で記述されていない最初のオペレーティングシステムであり、ネイティブのPDP-11とは異なるシステムに非常に移植性があります[41]

オペレーティングシステムの多様性をサポートするためのこのコストは、代わりにJavaQtなどのソフトウェアプラットフォームに対してアプリケーションを作成することで回避できますこれらの抽象化は、特定のオペレーティングシステムとそのシステムライブラリへの適応のコストをすでに負担しています

もう1つのアプローチは、オペレーティングシステムベンダーが標準を採用することです。たとえば、POSIXおよびOS抽象化レイヤーは、移植コストを削減する共通性を提供します。

市場占有率

も参照してください

ノート

  1. ^ DOS / 360とエミュレーションソフトウェアの組み合わせは、互換性オペレーティングシステム(COS)として知られていました。
  2. ^ ただし、ESPOLでは、ソースプログラムで命令レパートリーのすべての操作を指定できました。

参考文献

  1. ^ ストール(2005)。オペレーティングシステム、内部および設計原則ピアソン:プレンティスホール。NS。6.6。
  2. ^ Dhotre、IA(2009)。オペレーティングシステム技術出版物。NS。1.1。
  3. ^ a b "VII。特殊用途システム-オペレーティングシステムの概念、第7版[本]"www.oreilly.com
  4. ^ 「世界中のデスクトップオペレーティングシステムの市場シェア」StatCounterグローバル統計2020年10月31日取得
  5. ^ 「世界中のモバイルおよびタブレットオペレーティングシステムの市場シェア」StatCounterグローバル統計2020年10月31日取得
  6. ^ 「戦略分析:Androidは2016年第3四半期に世界のスマートフォン出荷の記録的な88%のシェアを獲得しました」2016年11月2日。2016年11月5日のオリジナルからアーカイブ
  7. ^ 「特別な目的のオペレーティングシステム-複雑な電力システムの自動化のためのRWTHアーヘン大学研究所-英語」www.acs.eonerc.rwth-aachen.de
  8. ^ Lorch、Jacob R.、およびAlan JaySmith。「シングルユーザーオペレーティングシステムのプロセッサ時間管理を改善することにより、プロセッサの消費電力を削減します。」モバイルコンピューティングとネットワーキングに関する第2回年次国際会議の議事録。ACM、1996年。
  9. ^ ミシュラ、B。; シン、N。; シン、R。(2014)。「コーディネーター選択のためのマスタースレーブグループベースのモデル、いじめアルゴリズムの改善」。並列、分散、グリッドコンピューティングに関する国際会議(PDGC)pp。457–460。土井10.1109 /PDGC.2014.7030789ISBN 978-1-4799-7682-9S2CID  13887160
  10. ^ ガニェ、シルバーシャッツガルビン(2012)。オペレーティングシステムの概念ニューヨーク:ワイリー。NS。716. ISBN 978-1118063330
  11. ^ a b Hansen、Per Brinch、ed。(2001)。クラシックオペレーティングシステムスプリンガー。pp。4–7。ISBN 0-387-95113-X
  12. ^ Lavington、Simon(1998)。マンチェスターコンピュータの歴史(第2版)。スウィンドン:英国コンピュータ協会。pp。50–52。ISBN 978-1-902505-01-5
  13. ^ ブリンチ・ハンセン、パー(2000)。従来のオペレーティングシステム:バッチ処理から分散システムまでSpringer-Verlag。
  14. ^ 「インテル®マイクロプロセッサークイックリファレンスガイド-年」www.intel.com2016年4月25日にオリジナルからアーカイブされました取得した24年4月2016
  15. ^ リッチー、デニス。「Unixマニュアル、初版」ルーセントテクノロジーズ。2008年5月18日にオリジナルからアーカイブされまし取得した22年11月2012
  16. ^ 「OSXMountain Lion –Macをさらに先に進めてください」アップル。2011年5月23日にオリジナルからアーカイブされました取り出さ年8月7 2012
  17. ^ 「LinusTorvaldsによるLinuxの20年」ZDNet。2011年4月13日。2016年9月19日のオリジナルからアーカイブ2016年9月19日取得
  18. ^ Linus Benedict Torvalds(1991年10月5日)。「386-AT用の無料のminixのようなカーネルソース」ニュースグループ:  comp.os.minix 取得した30年9月2011
  19. ^ 「Linuxとは:Linuxオペレーティングシステムの概要」ミディアム2019年12月21日取得
  20. ^ Linux Online(2008)。「Linuxロゴとマスコット」2010年8月15日にオリジナルからアーカイブされまし取得した11年8月2009年
  21. ^ B 「2011年4月に1月からトップ5オペレーティングシステム」StatCounter。2009年10月。2012年5月26日のオリジナルからアーカイブ2009年11月5日取得
  22. ^ 「サーバーの市場シェアへのIDCレポート」Idc.com。2012年9月27日にオリジナルからアーカイブされまし取り出さ年8月7 2012
  23. ^ LinuxDevicesスタッフ(2008年4月23日)。「Linuxは依然としてトップの組み込みOS」LinuxGizmos.com2016年4月19日にオリジナルからアーカイブされまし取り出さ年4月5 2016
  24. ^ 「サブリストジェネレータ」Top500.org 2017年2月6日取得
  25. ^ 「グローバルWeb統計」ネット市場シェア、ネットアプリケーション。2011年5月。2010年1月25日のオリジナルからアーカイブ検索された5月7 2011
  26. ^ 「グローバルWeb統計」W3Counter、AwioWebサービス。2009年9月。2012年6月28日のオリジナルからアーカイブ取得した24年10月2009年
  27. ^ 「オペレーティングシステムの市場シェア」ネットアプリケーション。2009年10月。2010年1月25日のオリジナルからアーカイブ2009年11月5日取得
  28. ^ 「w3schools.comOSプラットフォーム統計」2011年8月5日にオリジナルからアーカイブされました取得した30年10月2011
  29. ^ 「統計はグローバル統計トップ5オペレーティングシステムを数えます2012年5月26日にオリジナルからアーカイブされました取得した30年10月2011
  30. ^ 「w3counter.comのグローバル統計」2012年6月28日にオリジナルからアーカイブされました取り出さ年1月23 2012
  31. ^ 「ハードディスクのMS-DOS互換モードのトラブルシューティング」Support.microsoft.com。2012年8月10日にオリジナルからアーカイブされました取り出さ年8月7 2012
  32. ^ 「Windows95でのNDIS2PCMCIAネットワークカードドライバの使用」Support.microsoft.com。2013年2月17日にオリジナルからアーカイブされました取り出さ年8月7 2012
  33. ^ "INFO: Windows 95 Multimedia Wave Device Drivers Must be 16 bit". Support.microsoft.com. Archived from the original on 17 February 2013. Retrieved 7 August 2012.
  34. ^ Arthur, Charles. "Windows 8 will run on ARM chips - but third-party apps will need rewrite". The Guardian. Archived from the original on 12 October 2016.
  35. ^ "Operating System Share by Groups for Sites in All Locations January 2009". Archived from the original on 6 July 2009. Retrieved 3 May 2010.
  36. ^ "Behind the IDC data: Windows still No. 1 in server operating systems". ZDNet. 26 February 2010. Archived from the original on 1 March 2010.
  37. ^ Stallings, William (2008). Computer Organization & Architecture. New Delhi: Prentice-Hall of India Private Limited. p. 267. ISBN 978-81-203-2962-1.
  38. ^ "Operating Systems: Security". www.cs.uic.edu. Retrieved 27 November 2020.
  39. ^ Poisson, Ken. "Chronology of Personal Computer Software" Archived 14 May 2008 at the Wayback Machine. Retrieved on 2008-05-07. Last checked on 2009-03-30.
  40. ^ "Reading: Operating System". Lumen. Retrieved 5 January 2019.
  41. ^ "The History of Unix". BYTE. August 1983. p. 188. Retrieved 31 January 2015.

Further reading

External links