私はLinuxに初めて触れました。私はここにいるすべての人が、Dennis Ritchieの基本的なUnix階層であるカーネル、シェル、ユーティリティを知っていると思います。
サーバーパッケージ(LAMPなど)がカーネルまたはそのシェル(サービス)の一部ではないと仮定すると、実際にどの階層にありますか?
私はこれらを制御するための独自のユーティリティがあるのでユーティリティとは言わないでしょう(シェルターミナルやシェルGUIではユーティリティ自体です)。
だから私はサーバーソフトウェアが実際にシェル/ユーティリティ階層「間」のどこかにあるという結論に達しました。 Ritchieの階層に従うなら、これは正しいと思いますか?
答え1
カーネルとユーザー(ユーザー=非カーネル)の違いは非常に明白です。インターフェイスが異なり、プロセッサモードが異なります。
ユーザードメイン内での追加の分離はあまり明確ではありません。シェルは、他のプログラムを実行する役割を果たすプログラムです。この定義によれば、Webサーバは目的に応じてシェルであってもなくてもよい。静的ファイルを提供する Web サーバーはシェルではなく、Web アプリケーションを実行する Web サーバーはシェルです。
私のアドバイスは、この階層を真剣に受け入れないでください。これは特定の状況(1970年代初頭のコンピュータの一般的な場合)では意味がありますが、普遍的に有用な概念ではありません。
答え2
私はRitchieのレイヤリングに慣れていませんが、通常、あるレイヤが別のレイヤに依存している場合は、別のレイヤに入れます。 UNIX / Linuxでは、すべてがカーネルに依存しているため、シェル/ユーティリティ/サーバーより1階層下にある必要があります。ただし、Webサーバーとシェルは互いに独立しています(ほとんどの場合、サービスの起動/停止にもシェルが必要です)。一般に、レイヤリングは主観的な構造化メカニズムであり、常に1つの正解があるとは限りません。