1. 序章

オペレーティングシステムは、おそらく私たちのコンピューターで実行されている最も関連性の高いソフトウェアです。 オペレーティングシステムは、コンピュータのハードウェアとソフトウェアの両方を管理する責任があります。 そのため、コンピューターユーザーに一連のサービスを提供し、さまざまなタスクを実行できるようにします。

これらのサービスの中には、たとえば、ユーザーがコンピューターと対話するために提供されるインターフェース、リソースの割り当て、ネットワーク通信などが挙げられます。

もちろん、オペレーティングシステムによって提供される各サービスは、期待どおりに実行するために特定のリソースと条件を必要とします。さらに、サービスは共通の目的を達成するために協力します。

このチュートリアルでは、オペレーティングシステムの基本的なサービスについて説明し、それらがどのように機能し、他のサービスと連携するかに焦点を当てます。

まず、オペレーティングシステムについて簡単に説明し、オペレーティングシステムに関する一般的ではあるが重要な概念を理解します。 最後に、特に主要なオペレーティングシステムサービス(ユーザーインターフェイス、プログラム実行者、ファイルシステムなど)について説明します。

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

要約すると、オペレーティングシステムは、ハードウェアリソースを抽象化および管理し、複数のソフトウェアプログラムを実行する環境を提供します。

運用システムは、カーネルとサービスの2つの主要部分に分けることができます。

The オペレーティングシステムのカーネルコンピュータのハードウェアリソースを抽象化する責任があります。 このようにして、カーネルはハードウェアとソフトウェアの間にブリッジを作成します。

次に、オペレーティングシステムのサービスは、カーネルによって有効化されたリソースを使用して、コンピュータープログラムとコンピューターユーザーの両方に機能を提供します。

したがって、ソフトウェアプログラムを実行するだけでなく、オペレーティングシステムサービスを使用すると、コンピュータユーザーはこれらのプログラムを操作できます。

次の画像は、コンピュータシステムのコンテキストでのオペレーティングシステムを示しています。

最後に、私たちにはいくつかの異なるものがあることを強調することが重要です オペレーティングシステムの種類。 したがって、各タイプのオペレーティングシステムには、いくつかの機能に取り組むための個別の手順がある場合があります。 たとえば、バッチオペレーティングシステムは、リアルタイムのプログラムとは異なる方法でプログラムの実行をスケジュールします。

3. オペレーティングシステムの典型的なサービス

前のセクションで説明したように、オペレーティングシステムがユーザーに複数のサービスを提供することはわかっています。 これらのサービスの一部は、ユーザー、オペレーティングシステム自体、およびその他のソフトウェアプログラム間の対話を可能にします。 次に、他のサービスは、コンピュータシステムのライフサイクルの内部ルーチンに取り組みます。

次のサブセクションでは、オペレーティングシステムによって提供される関連サービスについて説明します。

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

ユーザーインターフェイスは、ユーザーがオペレーティングシステムと実際に対話できるようにするサービスです。 つまり、コンピュータシステム全体と対話することを意味します。

オペレーティングシステムのユーザーインターフェイスには、コマンドラインインターフェイス(CLI)とグラフィカルユーザーインターフェイス(GUI)の2つの一般的な形式があります。

次の画像は、コマンドラインとグラフィカルユーザーインターフェイスの例です。

CLIは、テキストベースのコマンドセットを介してユーザーとオペレーティングシステム間の対話を確立します。 したがって、ユーザーはコマンドとそれぞれの引数を入力し、オペレーティングシステムで処理するためにそれらを送信します。

CLIインターフェイスの例としては、WindowsのコマンドプロンプトやLinuxベースのシステムの端末があります。

2番目のオプションであるGUIは、ウィンドウ化されたグラフィカルデザインで構成されており、ユーザーはマウスをクリックしてキーボードで入力することで対話できます。

グラフィカルインターフェイスは、コマンドラインのものよりもユーザーフレンドリーであると考えられています。 そのため、汎用オペレーティングシステムで広く採用されています。

GUI設計の例は、MicrosoftMetroおよびLinuxGNOMEです。

3.2. プログラムの実行

オペレーティングシステムのもう1つの重要なサービスは、プログラムの実行です。 プログラムの実行は簡単な作業ではありません。 そのために、オペレーティングシステムは、プログラムの読み込み、実行スタックの管理、プロセスのスケジューリングなど、無数の操作に取り組んでいます。

次の画像は、オペレーティングシステムのプログラム実行サービスを示しています。

複雑ですが、プログラムを実行するサービスは、ユーザーにとってオペレーティングシステムを重要なものにします。 このサービスを使用すると、さまざまなユーザーが同じオペレーティングシステムを使用して、異種プログラムを実行することで個別のタスクを処理できます。

3.3. 入出力操作

ユーザーは、モニター、スピーカー、キーボード、マウスなどの入出力(I / O)デバイスを直接制御することはできません。 したがって、オペレーティングシステムは、ユーザー、I / Oデバイス、およびコンピューターシステム間の通信を仲介します。 次の画像でいくつかの例を見てみましょう。

このような場合、オペレーティングシステムは、使用可能なI/Oデバイスとの間で操作要求を送受信できる複数のシステムコールと割り込みを備えたサービスを提供します。

特定のデバイスのI/O操作を制御するには、ドライバーのインストールが必要になる場合があることを強調することが重要です。ドライバーは、特定のIとの通信方法に関する一種のガイドラインをオペレーティングシステムに提供します。 /Oデバイス。

3.4. ファイルシステム管理

ファイルシステムは、コンピューターのすべてのファイルを永続メモリ(通常はハードディスク(HD)またはソリッドステートドライブ(SSD))に保持して整理します。

ただし、ユーザーがファイルシステム内のデータファイルを作成、変更、削除、および検索するのは通常のことです。 このように、オペレーティングシステムは、ユーザーがファイルシステムを操作するためのサービスを提供し、ユーザーが引用された管理操作を実行できるようにします。

さらに、オペレーティングシステムは、ファイルにアクセスするためにユーザーとプログラムに付与されるアクセス許可を制御します。 これらのアクセス許可(または制限)は、コンピューターシステムに損傷を与える可能性のある重要なファイルの不正な変更や読み取りを回避するために適用されます。

次の画像は、オペレーティングシステムのアクセス許可制御の抽象的な例を示しています。

3.5. コミュニケーション

特定のシナリオでは、通信はプロセス間のデータ交換に関係します。 これらのプロセスは、同じコンピューターまたは異なるコンピューターで実行される場合があります。 したがって、後者の場合、異なるコンピュータがネットワークを介して相互に通信します。

オペレーティングシステムには、同じコンピューターで実行されているプロセスが通信できるようにするための特定のメカニズムがあります。 最も一般的な例は、パイプと共有メモリです。

つまり、パイプは2つのプロセスを接続するデータバッファで構成されます。 技術的には、オペレーティングシステムは、ファイル記述子を各パイプに関連付けます。1つは読み取り用で、もう1つは書き込み用です。

もう1つのオプションは、2つ以上のプロセス間で共有されるメモリ領域を使用することです。 この場合、オペレーティングシステムは共有メモリ領域を定義します。 これらの領域のアドレスは、プロセスのアドレス空間に含まれており、プロセスを介してデータを交換できます。

ネットワークを介して通信するプロセスを検討すると、ほとんどのオペレーティングシステムはソケットのメカニズムを提供します。 

ソケットは、ネットワーク接続を表すファイルに関連付けられた記述子です。 したがって、プロセスは、ソケットを介して送信されるデータとその宛先を示すことができます。 次に、オペレーティングシステムは、ネットワークを介して送信された要求されたメッセージをトリガーします。

次の画像は、前述の通信メカニズムを示しています。

オペレーティングシステムは、パイプ、共有メモリ、ソケットに加えて、プロセス間通信を実装するための他のメカニズムも利用できることを強調する必要があります。

3.6. エラー検出

コンピュータシステムのライフサイクル中に、いくつかのエラーが発生する可能性があります。 たとえば、CPUエラー、メモリの割り当てやアクセスの誤り、ハードウェアエラーの原因となるコンポーネントの障害、さらにはI/Oデバイスによって引き起こされるエラーが発生する可能性があります。

まず、オペレーティングシステムのエラー検出サービスは、エラーが発生したときにコンピュータシステムが完全に故障するのを回避する必要があります。 したがって、このサービスはエラーをキャッチして管理し、システム全体を可能な限り機能させる必要があります。

さらに、エラー検出サービスは、エラーについてユーザーに通知し、コード、説明、および既知の場合はエラーを修正する方法を示す必要があります。

次に、オペレーティングシステムで発生し、処理される可能性のあるエラー状況を示します。

3.7. 資源配分

リソース割り当てとは、コンピューティングリソースをプロセスとユーザー専用にすることを意味します。 CPU(実際には、CPU時間)、メモリ、ネットワーク、I / Oデバイスなど、多くのリソースタイプがあります。 したがって、オペレーティングシステムはこれらのリソースを制御するため、どのプロセスがそれらを使用するかを自然に決定します。

プロセスは通常、ライフサイクル中に複数のコンピューティングリソースを必要とします。 2つの主要なリソース管理の課題があります。(i)特定のリソースを要求するプロセスが決してそれを取得しないことを回避する。 (ii)リソースを持つプロセスがリソースを解放しないことを回避します。

前に引用した課題に対処しないことの結果は複雑になる可能性があります。 たとえば、2つのプロセスは、両方に必要な特定のリソースを保持します。 したがって、彼らはお互いがこれらのリソースを解放するのを無期限に待ちます。 この状態をデッドロックと呼びます。

次の画像は、デッドロック状態の例です。

発生する可能性のある他の複雑な条件は ライブロックと飢餓。 オペレーティングシステムは、効率的なリソース管理でこれらの状態を回避し、とにかく発生した場合にそれらを解決する必要があります。

3.8. 会計

アカウンティングは、コンピューティングシステム内のユーザーとプロセスの両方の動作を追跡することで構成されます。

たとえば、オペレーティングシステムは、どのユーザーがどのプロセスの実行を必要としているかを分析します。 したがって、コンピューター上で実行されているプロセスによって要求されているコンピューティングリソースの数を調査することもできます。

最後に、オペレーティングシステムは、取得した情報を相互に関連付け、コンピューターシステムのユーザーとその上で実行されているプロセスに関する統計を生成できます。

次の画像は、システムリソース使用量アカウンティングの簡略化された例を示しています。

3.9. 安全

オペレーティングシステムに関しては、さまざまな側面でセキュリティを理解できます。

最初の側面は、プロセスの内部セキュリティで構成されています。 オペレーティングシステムは、プロセスの正しい実行を保証できる必要があります。

したがって、オペレーティングシステムは、プロセスに必要なコンピューティングリソースを提供し、それらを適切に制御する必要があります。さらに、他のプロセスが特定のプロセスの実行に不注意または悪意を持って干渉するのを防ぐ必要があります。

セキュリティのもう1つの関連する側面は、許可されたユーザーのみが、コンピューターシステム内のリソースとプロセスの作成、変更、およびリモーションをトリガーすることを保証することです。

したがって、オペレーティングシステムは、ユーザーが本人であることを証明するために、ユーザーに認証方法を提供する必要があります。 オペレーティングシステムで採用されている最も一般的な認証方法は次のとおりです。 単一要素のパスワードベースの認証.

次の画像は、運用システムの従来のログイン画面の例を示しています。

4. 結論

このチュートリアルでは、オペレーティングシステムの基本的なサービスについて学習しました。 最初に、オペレーティングシステムの簡単なレビューを行い、それらの一般的な概念と要件を調査しました。 したがって、オペレーティングシステムによって提供される最も関連性の高いサービスを調べました。

ユーザーインターフェイス、プログラム実行、入出力操作、ファイルシステム管理、通信、エラー検出、リソース割り当て、アカウンティング、セキュリティの9つの重要なサービスに焦点を当てました。

オペレーティングシステムは、あらゆるコンピュータのコアソフトウェアであると結論付けることができます。 それらの重要なサービスにより、プロセスを正しく効率的に実行できるため、ユーザーはコンピューターシステムを適切に利用できます。