私はMaurice J Bachの本「Unix Architecture」でUnixを学んでいます。
私の混乱はカーネルの概念にあります。カーネルとは何ですか?私はそれがオペレーティングシステムであり、プロセスであることを理解しています。
しかし、先生が彼にシステムコール()を使用すると、プロセスはユーザーモードからカーネルモードに入ることになると教えました。
システムコールでは実際に何が起こりますか?ユーザープロセスはスリープモードになり、オペレーティングシステムはユーザープロセスの代わりに実行され、値をユーザープロセスに返しますか、それともユーザープロセスはカーネルモードで実行されますか?後者が正しいなら、それはどういう意味ですか?
答え1
カーネルとは何ですか?
あなたの質問によると、プロセッサで特別な特権レベルで実行される単一の大きなプログラムです。すべてのコアオペレーティングシステム機能を提供します。マルチタスク、産業用コンピュータ、ファイルシステムなど。実行中のプロセスでもあります。デバイスドライバは、コンピュータのハードウェアを制御するカーネルを表します。
オペレーティングシステムだと思いました。
実はそうではありません。一つオペレーティングシステムだけでなくコア。
Maurice Bachが本を書いたときも、シェル、翻訳者、便利、テキストエディタ、等。
時間の経過とともに、オペレーティングシステムという用語には、次のようなより多くの項目が含まれていました。グラフィカルユーザーインターフェースサブシステム。
オペレーティングシステムと一般ユーザープログラムの間に線を引くことは個人的な決定です。ほとんどの人は、GUIワードプロセッサがオペレーティングシステムと共にインストールされていても、オペレーティングシステムの一部ではないことに同意します。しかし、多くの人は、オペレーティングシステムに付属のプレーンテキストエディタにも同意します。はいオペレーティングシステムの一部。このキャンプの多くの人も同意します。タグハンドラオペレーティングシステムに付属のツール(troff、TeXなど)は現在、オペレーティングシステムツールと見なされます。ただし、テキストエディタとマークアッププロセッサを組み合わせると、ある意味ではワードプロセッサと区別できない結果が得られます。
誰もが同意できる明確な線を引くことは不可能です。
これは1つのプロセスです。
正確ではありません。
ㅏマイクロカーネルアーキテクチャはその記述を実現するのに最も近いものです。それにもかかわらず、カーネルはまだ集めるプロセス。そのうちの1つは、すべてのプロセスを実行できるという点で特別です。その他プロセス。したがって、この場合でもまだコア(小さなコア)が存在し、それ自体は正常なプロセスとは言えません。
の場合フルカーネル、カーネルは特別な場所にあります。走るすべてのプロセス。
システムコールでは実際に何が起こりますか?
バッハの本の残りの部分を読んでください。
この回答には多くのWikipediaリンクがあり、私がリンクしたほとんどの記事は長くて複雑で、より多くのリンクがあることがわかります。これは基本的に非常に複雑なトピックを簡単な答えで抽出するように求めているからです。簡単な答えがないので答えをしようとします。ガイド答え、複数形。
ユーザープロセスはスリープモードになり、OSはユーザープロセスの代わりにそれを実行し、値をユーザープロセスに返しますか?
バッハが議論したクラシックアンサンブルの核心内ではそうです。
しかし、現代のシステムはこの単純な絵をぼかします。
まず、「オペレーティングシステム」はシステムコールを実行しませんが、カーネルは実行します。私は単に賢明ではありません。現代のオペレーティングシステムの大部分はさまざまなユーザ空間プログラムで構成されており、現代のオペレーティングシステムはマルチタスクを行うため、オペレーティングシステムが停止してシステムコールだけを実行するとは言えません。オペレーティングシステムは同時に多くのタスクを実行できます。一つシングルユーザープログラムのシステムコールを処理します。
しかし、2番目で重要なのは、最新のオペレーティングシステムカーネルが、一度に1つのシステムコールを処理する単一の作業プログラムではないということです。オペレーティングシステムは中間のどこかにあります。たくさんすぐにシステムコールをしてください。システムコールを実行する単一作業ユーザー空間プログラムは次のとおりです。知覚システムコールが完了するまで世界は停止しますが、システムコールが継続している間、カーネルは他の多くの操作を実行できます。
古いシングルジョブカーネルの場合でもドライバのようなものがありました。上半分と下半分、などの比較的高いレベルのシステムコールをサポートするために、カーネルはディスクI / Oなどの操作を終了して処理できますopen(2)
。
または、ユーザープロセスはカーネルモードで実行されていますか?
このように見ることができますが、私のWebブラウザとStack Exchangeは相互運用されており、1つの凝集した経験を提供するため、同じプログラムであることは事実です。