UnixまたはLinuxシステムはどのように機能しますか? [閉鎖]

UnixまたはLinuxシステムはどのように機能しますか? [閉鎖]

オペレーティングシステムがどのように機能するかを知りたいです。要するに:

  • 基本コンポーネントは基本コンポーネントです。
  • これらのコンポーネントが連携する方法
  • UNIXをUNIXにする理由
  • Windowsなど他のオペレーティングシステムとの違い

ベストアンサー1

UNIXシステムは、いくつかの部分、つまり私が呼ぶ「階層」で構成されています。

システムを起動するには、ブートローダと呼ばれるプログラムがハードディスクパーティションの最初のセクタに配置されます。これは、システムによって開始された次のオペレーティングシステムカーネルを見つけてロードします。

階層化

  1. コア。これはブートローダによって開始される中央プログラムです。これは、システムへの基本的なハードウェアインタラクション(ディスク、メモリ、ビデオ、サウンド)を提供し、プログラムを起動できる仮想環境を提供します。カーネルはまた、ハードウェアデバイス間のすべての微妙な違いを処理するすべてのドライバを提供します。外部の世界(上位層)では、各タイプのデバイスがまったく同じように動作するように見えます。その結果、このベースでプログラムを構築できます。

  2. バックエンドサブシステム。ただ規則的な日常なので邪魔することはありません。リモートログインなどのタスクを処理し、中央メッセージバスを提供し、ハードウェア/ネットワークイベントに基づいてタスクを実行します。たとえば、Bluetooth検索、Wi-Fi管理などがあります。すべてのネットワークサービス(ファイルサーバー、プリントサーバー、Webサーバー)もこのレベルにあります。 UNIXシステムでは、これは一般的なプログラムです。

  3. コマンドラインツール。これは、テキストの編集、ファイルのダウンロード、システム管理などのタスクを実行するために開始できる小さなプログラムです。これで、システム管理者がUNIXシステムを使用する準備が整いました。 Windowsでは、このレイヤーは事実上もはや存在しません。

  4. GUI。これらも単なるプログラムであり、唯一の違いは、テキストを書くのではなく、画面にウィンドウを描くことです。これにより、一般ユーザーがシステムを使いやすくなります。

すべてのサービスまたは活動は以下から上に行われます。

図書館 - 公共プラットフォーム

プログラムは、ウィンドウの表示、画面へのコンテンツの描画、ファイルのダウンロードなど、さまざまな一般的なタスクを実行します。これらは複数のプログラムで同じであるため、コードは別の「ライブラリ」ファイル(.soファイル - 共有オブジェクトを意味)に配置されます。このライブラリは、すべてのプログラム間で共有できます。

想像できるものすべてのためのライブラリがあります。 PNGファイルを読み書きする方法があります。 JPEGファイル用、XML読み取り用、暗号化用、ビデオ再生用などがあります。

Linuxでは、アプリケーション開発者のための共通ライブラリはQtとGtkです。これらのライブラリは、特定の要件を満たすために内部的に低レベルのライブラリを使用し、アプリケーション開発者がアプリケーションをより迅速に作成できるように、一貫した簡潔な方法でその機能を公開します。

ライブラリは、プログラマーがオペレーティングシステム用のエンドユーザーアプリケーションを構築できるアプリケーションプラットフォームを提供します。システムが提供する高品質ライブラリが多いほど、プログラマーが美しいプログラムを書くために書く必要があるコードが少なくなります。

一部のライブラリはさまざまなオペレーティングシステム(Qtなど)で利用でき、一部のライブラリは実際には特定のオペレーティングシステムに関連付けられています。これにより、プログラムはそのプラットフォームでのみ実行されるように制限されます。

プロセス間通信

オペレーティングシステムの3番目の角は、プログラムが互いに通信する方法です。これはプロセス間通信(IPC)メカニズムです。共有メモリの断片やデータを交換するための2つのプログラム間の小さなチャネルなど、さまざまな形で存在します。各プログラムがメッセージを公開して応答を受信できる中央メッセージバスもあります。これは、どのプログラムが応答できるかわからないグローバル通信に使用されます。

ライブラリからオペレーティングシステムまで

プログラマは、ライブラリ、IPC、およびカーネルを使用して、システムサービス、ユーザー管理、構成、管理、オフィス、エンターテイメントなどのさまざまなアプリケーションを構築できます。これにより、初心者ユーザーが「オペレーティングシステム」として認識できる完全なスイートが誕生します。 」。

UNIX / Linuxシステムでは、すべてのサービスは単なるプログラムです。すべてのシステム管理ツールは単なるプログラムです。彼らはすべて自分の役割を持っており、一緒に縛ることができます。いくつかの主要な手順をまとめました。http://codingdomain.com/linux/sysadmin/


Windowsと区別できる部分

UNIXは、デフォルトでプログラム、ファイル、および制限された権限で構成されるシステムです。多くの複雑さを避け、簡単に見えながら強力なシステムを作成できます。

特に、これらの原則はUNIX / Linuxシステムで見つけることができます。

  • 情報にアクセスする統一された方法があります。 (「すべては単なるファイルです」)。ファイル、ネットワークソケット、IPCチャネル、カーネルパラメータ、およびブロックデバイスをファイルとして開くことができます。したがって、仮想ファイルシステムは/ dev、/ sys、および/ procに表示されます。必要なAPIはopenreadおよびのみですclose

  • 基本システムは透明です。すべてのプログラムは同じ規則に従って動作します。 Windowsとは異なり、「コンソールプログラム」、「GUIプログラム」、または「バックグラウンドサービス」の間に人工的な区別はありません。それらはすべて偶然に別のことをするプログラムです。また、すべて同じ方法で観察、分析、およびデバッグできます。

  • 設定を読み、編集したり、コメントでコメントできます。通常はINIスタイルの形式を使用しますが、アプリケーションのニーズに応じてカスタム形式を使用できます。これは単純なファイルなので、標準ツールを使用して他のシステム、アーカイブ、またはバックアップにコピーできます。

  • 「一度にすべての作業を行う」という大規模なアプリケーションはありません。マントラは「何かをしなさい、よくしなさい」である。コマンドラインツールは互いに接続でき、強力です。個々のサービス(SMTP、IMAP、POP、ログインなど)は別々のサブルーチンであるため、複雑に絡み合ったコードやセキュリティの問題を回避できます。複雑なデスクトップ環境では、重い作業を個々のプログラムに委任します。

  • fork()。既存のプログラムを複製して新しいプログラムを起動します。 Cloneはすべてのもの(ファイルハンドルなど)を設定し、オプションで自分自身を新しいプログラムコードに置き換えます。これにより、新しいプログラム、共有メモリ、またはIPCメカニズム設定に同じセキュリティ設定と制限を非常に簡単に適用できます。プロセスを開始するためのコストも非常に低いです。

  • ファイルシステムは、他のディスクパーティションとネットワーク共有をマウントできるツリーです。これは再びデータにアクセスする一般的な方法です。共通システムの場所(たとえば、/usrネットワーク共有で簡単にマウント可能)

  • システムは低ユーザー権限のために構築されています。ログインすると、各ユーザー(ルートを除く)は独自のリソースに制限され、アプリケーションとファイルのみを実行できます。ネットワークサービスはできるだけ早く権限を減らします。より多くの権限を取得したり、他の人に自分の代わりに権限のあるタスクを実行するように求める明確な方法があります。他のすべての呼び出しにはプログラム制限が適用されます。

  • すべてのプログラムは、ユーザーのホームディレクトリの隠しファイル/フォルダに設定を保存します。どのプログラムもグローバル設定ファイルに書き込もうとしません。

  • 秘密のメカニズムや特定の1対1のメカニズムよりも一般的に説明されている通信メカニズムを好みます。他のベンダーとソフトウェア開発者は、簡単に接続、交換、および疎結合を維持するために同じ仕様に従うことをお勧めします。

おすすめ記事