ソフトウェアを実行するのは、ある種のCPU、電子回路、ハードウェアです。
ソフトウェアがOSであろうと他の種類のプログラムであろうと、CPUは気にしません。可能な限り実行します(たとえば、上記のソフトウェアによって回復不能なエラーが発生し、CPUが奇妙な状態になるか、単にリセットされるまで)。
電源を入れると、CPUはメモリ内の特定の場所で見つかったコードの実行を開始します。その場所は、CPUに配線するか、CPU回路の外部で構成するか、ソフトウェアでプログラムすることができます。どちらであるかは、CPUとデバイス全体の設計方法によって異なります。
すべてのプログラムがCPU上で実行するためにOSを必要とするわけではありません。OSはそのようなプログラムの良い例です。すべてのOSに別のOSが必要な場合、この無限再帰をどのように止めますか?:)しかし、それだけではありません。
多くの電子機器、特にデジタル時計のような非常に単純な機器には、OSが搭載されていません。
OSが別のOSの上で実行されるのは、仮想化がある場合だけです。しかし、私はこの答えでそこに行くつもりはありません。
OSは、スケジューリング、スレッド/プロセスの同期、メモリ割り当てなどの基本機能、またはデバイスI / O自体のすべてまたはほとんどを実行し、OSで実行されているプログラム(IOW)からハードウェアの特性を隠して許可するためにのみ必要です。ポータブルプログラム。Pythonで作成print 123
すると、表示、解像度、およびさまざまなコンピューターやさまざまなOSに存在する可能性のある他の多くの違いに関係なく、Pythonと互換性のある(=使用可能な)任意のOSで123が印刷されます。汎用OSが、コンソールおよびファイルI / Oやメモリ管理などの一般的な機能(および多かれ少なかれ一般的なAPI)を提供していなかった場合、Pythonは利用できず、それらのOSは一般的ではなかったでしょう。 -そもそも目的。
OSカーネルはOSのコアです。それは、以下を処理する、低レベルで汚い仕事のほとんどを行います。
- 割り込み処理
- スレッド/プロセスのスケジューリングと同期
- メモリ管理
- 同様のもの
OSの機能で十分な場合もありますが、そのような場合、OSとカーネルの間に違いはありません。ここでは同じです。
OTOHの場合、柔軟性、さまざまなデバイスのサポート、それらすべてを管理するためのコード、ファイルシステム、ネットワーク、TCP / IPスタックなどの特別なドライバーの束など、より多くのものが必要な場合は、単純です(おそらく、比較的単純なだけです)カーネルだけでは十分ではありません。その周りにもっと多くのものが必要です。そこで、OSとカーネルを区別し始め、OS=カーネル+エクストラに到達します。使用しているテキストエディタは、OSに付属している場合でも、それらの追加機能の1つではなく、通常のプログラムであり、OSにバンドルする必要はありませんが、便宜上、バンドルすることができます。
UNIXはOSの一例です。さらに多くの、特にLinuxとWindowsがあります。
コンピュータが一般的にどのように機能するかを学ぶために、コンピュータアーキテクチャと組織に関する本を手に入れる必要があります。そこに何があるのか、どのように組み立てられるのか、ボンネットの下で何が起こっているのかなど。