オペレーティングシステム(2):オペレーティングシステムの構造

一生懸命勉強して毎日進歩する

この記事は私のGithubリポジトリに含まれていますDayDayUP:github.com/RobodLee/DayDayUP、Starへようこそ

オペレーティングシステムのサービスとインターフェイス

前回の記事でオペレーティングシステムとは何かについてお話ししたときに例を挙げましたが、オペレーティングシステムは家の管理を手伝ってくれるハウスキーパーだと言いましたが、ハウスキーパーなので才能がたくさんあるはずです。さもないと、この大きな仕事を引き受けるのは難しいです。私たちにより良いサービスを提供できるのは、多くの才能を持っている家政婦です。オペレーティングシステムにとって、これらの才能はオペレーティングシステムサービスです。では、どのようなオペレーティングシステムサービスがありますか?いくつか例を挙げると:

· 用户界面
· 程序执行
· I/O 操作
· 文件系统操作
· 通信
· 错误检测
· 增值服务
· 资源分配
· 统计
· 保护和安全
· 操作系统服务
· 操作系统程序接口(系统调用)
· 操作系统用户界面
· 系统程序
  · · · · · 

オペレーティングシステムには非常に多くのサービスがあるので、通常、オペレーティングシステムをどのように使用しますか。つまり、ハウスキーパーをどのように使用してサービスを提供しますか。2つの方法があります。

1つ目は、家政婦に小さなメモを残して、午後に野菜市場に行ってチンタオビールを数本買うように言った後、家政婦はそれを見て逃げました。この方法は、一般にコマンドライン、つまりブラックウィンドウと呼ばれます。ブラックウィンドウにコマンドを入力すると、システムがコマンドを実行します。この方法は使い勝手が悪く、複雑な操作をする場合は、長時間キーボードを押す必要があります。

2つ目は、どこで戦うかということです。たとえば、庭の草むしりの時間だと思ったら、家政婦に電話して、「ここには雑草がたくさんあるので、整理して除草できます」と言いました。その後、家政婦は再び仕事に行きました。この方法は、WindowsやMacOSなどのグラフィカルインターフェイスです。この方法は最初の方法よりもはるかに簡単です。多くの操作はマウスを数回クリックするだけで実行でき、非常に快適です~~~

オペレーティングシステムは何もないように見えますか?通常のユーザーは、キーボードをマウスで数回クリックするだけで非常に複雑な操作を完了できます。開発者でも、共通のAPIを調整して要件を満たすことができます。オペレーティングシステムを非常に便利に使用できる理由は、オペレーティングシステムが多くの実装の詳細を保護しているためです。私たちが通常使用するのは、ユーザーインターフェイスとシステムプログラムです。ユーザーインターフェイスとシステムプログラムは、オペレーティングシステムがユーザーに提供するサービスの形式であるため、システムプログラムのサービスを提供するのは誰ですかシステム呼び出しシステム呼び出しは、オペレーティングシステムからプログラムに提供されるサービスプログラムです。

システム呼び出しが存在するため、プログラマーの作業は大幅に簡素化されます。前回の記事では、システム操作がユーザーモードとカーネルモードに分かれているとは述べていませんでしたか?システムAPIを呼び出すと、オペレーティングシステムはユーザーモードから切り替わります。カーネルモードに移動し、一連のタスクを実行します。open()など

openを実行すると、CPUはユーザーモードからカーネルモードに切り替わります。オペレーティングシステムは、「open」という名前でテーブルを検索してシステムコールの場所を検索し、システムコールベクトルテーブルでエントリアドレスを検索して、システムコールコードの実行を開始します。実行後、CPUはユーザーモードに切り替わり、実行結果をアプリケーションプログラムに返します。

システムコールは、大きく5つのに分け进程控制カテゴリ:文件管理设备管理、、信息维护通信

システム呼び出しはシステムプログラムにサービスを提供するため、オペレーティングシステムの管理と保守に使用されるプログラムはシステムプログラムであると一般に考えられていますでは、システムプログラムとは何ですか?

  • ファイル管理
  • ステータス情報
  • ファイルの変更
  • プログラミング言語のサポート
  • プログラムのロードと実行
  • 通信

オペレーティングシステムの構造

10年以上前は、スマートフォンはなく、機能的な電話しかありませんでした。機能的な電話のパフォーマンスは限られており、テトリスか何かしか再生できませんでした。携帯電話のパフォーマンスが継続的に向上するにつれて、AndroidやIOSなどのスマートフォンオペレーティングシステムが登場し始めました。初期のAndroidシステムは機能が制限されていて、インターフェイスが醜いものでした。長年の開発を経て、現在のシステムになりました。オペレーティングシステム構造の開発を促進する理由は2つあると思います。1つは既存のハードウェアに基づいてシステム構造を最適化してパフォーマンスを向上させること、もう1つは常に更新される反復的なコンピューターハードウェアに適応してハードウェアの価値を反映することです

  • 简单结构

    初期のコンピューター機能は非常にシンプルで、オペレーティングシステムを開発する際に、システムの設計方法についてあまり考える必要はありませんでした。優れたデザインであっても、コンピューターハードウェアの制限の下では、その価値を十分に反映することはできません。そのため、初期のオペレーティングシステムは規模が小さく、機能もシンプルです。1人で数か月間オペレーティングシステムを構築できます。欠点は、メンテナンスに役立たないことです。コンピュータの開発に伴い、このようなオペレーティングシステムは適していません。アップ。

  • 层次结构

    オペレーティングシステムをより適切に設計するために、モジュール性のアイデアを採用することができ、階層構造はモジュール式のアイデアです。階層構造は建物と同じです。最下層はハードウェア、最上位層はユーザー層です。各層は低レベルの機能とサービスのみを使用します。つまり、上位層は下位層のサービスを呼び出すことができますが、他の層のサービスは呼び出すことができません。下の写真のように:

    この構造の利点は、システム設計が簡素化され、デバッグとアップグレードのメンテナンスが容易になることです。たとえば、最初に最初のレイヤーをデバッグしてから、最初のレイヤーに問題がないときに2番目のレイヤーをデバッグできます。ただし、この設計には欠点もあります。つまり、レイヤーの定義が難しく、効率が悪いということです。たとえば、プログラムがI / O操作を実行する必要がある場合、プログラムはI / O層、メモリ管理層、CPUスケジューリング層を通過してから、ハードウェアに渡す必要があります。各層は追加のオーバーヘッドを追加し、その結果は非層状システムよりも多くなります。実行にはさらに時間がかかります。

  • 微内核结构

    オペレーティングシステムのさらなる開発に伴い、機能が重ね合わされ、カーネルも拡張されています。問題は、管理がますます困難になることです。人と同じように、太るほど動き回るのが難しくなります。そのため、モジュラー構造を最適化するマイクロカーネルテクノロジーがあります。これは、一部の非コア機能をユーザースペースに移動することです。この設計の利点は、システムを拡張するのに便利なことです。すべての新しいサービスをユーザースペースに追加できます。カーネルは基本的に変更する必要はありません。ただし、これには、ユーザースペースとカーネルスペース間の通信オーバーヘッドが増加するという問題も発生するため、メッセージ転送メカニズムが導入されています。

  • 模块化结构

    モジュール構造は、システムの機能をさまざまなモジュールに分割し、モジュールはインターフェイスを介して通信します。モジュラー構造はレイヤード構造に似ていますが、レイヤード構造は2つの隣接するレイヤー間でのみ通信できるという違いがあり、モジュラー構造はこれによって制限されません。

    モジュラー構造の特徴は、マウスやキーボードを使ってコンピューターに接続するときと同じように、使用時にカーネルに読み込まれることです。柔軟性があり、自分で設計できるという利点があります。次に、モジュールがシステムにロードされます。

  • 混合结构

    システム設計者が単一のシステム構造に不満を持っている場合、パフォーマンス、安全性、およびその他の要件、つまり複数の構造の共存を満たすために、混合構造を選択します。以下のようなMacのX-OS

仮想マシン

多くの人が仮想マシンを使用していると思います。仮想マシンは、ソフトウェアシミュレーションによって実装され、完全なハードウェアシステム機能を備え、完全に分離された環境で実行される完全なコンピュータシステムです仮想マシンも多くのタイプに分類されます。特定の言語の操作と使用のための高レベル言語の仮想マシンと、コンピューター上で仮想化された複数のオペレーティングシステムがあります。

  • Java虚拟机

    Javaを学ぶ人なら誰でも、Javaの主な機能は「一度書けば多くの場所で実行できる」ことであることを知っておく必要があります。Javaにこの機能があるのはなぜですか?Java仮想マシン(JVM)が存在するためJavaプログラムはJVMで実行され、コンピューターのオペレーティングシステムやコンピューターハードウェアに直接接続することはありません。LinuxバージョンやWindowsバージョンなどの特定のプラットフォームに特定のJVMをインストールする限り、どこでも実行できる一連のコードを実装できます。

  • 工作站虚拟机

    ワークステーション仮想マシンは、ホストオペレーティングシステムに多くのオペレーティングシステムをインストールすることです。たとえば、VMWareをコンピューターにインストールしてから、VMWareにさまざまなオペレーティングシステムをインストールできます。

    この方法の最大の利点は利便性です。たとえば、私は通常CentOSでDockerを使用する必要があります。CentOSを別のコンピューターにインストールすると、コストがかかるだけでなく面倒でもあります。仮想マシンをインストールすれば、多くのお金を節約でき、クラスターとして同時に多くのCentOSを実行することもできます。

  • 服务器虚拟机

    サーバー仮想マシンはワークステーション仮想マシンに少し似ていますが、違いは、サーバーの物理リソースを論理リソースに直接抽象化し、ホストオペレーティングシステムなしでサーバーを数百または数百の分離された仮想サーバーに変えることです。 。2つのモードがあります:

    1つの仮想マシン:1つのサーバーが複数のサーバー仮想マシンに仮想化されます

    複数の仮想サーバー:複数の独立した物理サーバーが1つのサーバー仮想マシンとして仮想化されます

    このアプローチの最大のメリットは、リソースの使用率を向上させることだと思います。たとえば、私たちの学校には、従来のコンピュータールームだけでなくクラウドコンピュータールームもあります。私の最大の気持ちの一つは、一部の研究所のコンピューターは、通常はほとんど使用されないため、授業中にのみ使用でき、使用していないときでも使用できるということです。数年待った後、パフォーマンスが足りなくなって少し行き詰まり、とても不快でした。クラウドコンピュータルームのサーバー仮想マシンは非常に優れており、動的に拡張してリソース使用率を向上させることができます。

総括する

この記事では、最初にオペレーティングシステムのサービスとインターフェイスを紹介し、次に、単純な構造、階層構造、マイクロカーネル構造など、いくつかのオペレーティングシステム構造を紹介します。最後に、JVM、ワークステーション仮想マシン、サーバー仮想マシンなど、いくつかの仮想マシンが導入されています。次の記事でプロセスを開始します~~~

コードワードは、あなたが、私を与えることができれば、容易ではない点赞收藏关注

この論文は私のGithubリポジトリのために受理されましたdaydayup:github.com/RobodLee/DayDayUP、歓迎スター

おすすめ

転載: blog.csdn.net/weixin_43461520/article/details/108545283