I am new to Linux. I guess everyone here knows Dennis Ritchie's basic hierarchy for Unix: Kernel, Shell & Utilities.

Given a server bundle (such as LAMP) isn't part the kernel but also isn't part of its shell (Services), than on what layer is it actually?

I wouldn't say these are utilities since they have their own utilities to control them (either within the shell terminal or shell GUI which are utilities themselves).

I thus conclude that a server software is actually somewhere "between" the shell/utility layers, if we follow Ritchie's hierarchy, Would you deem that correct ?

  • 1
    why can't utilities control other utilities? A shell could control a utility; a utility could control a shell; a shell could control a (properly-instrumented) kernel. – Jeff Schaller Jun 13 '16 at 23:52
  • 1
    The original Unix didn't have TCP/IP networking stacks. Those came from BSD and the operate under a somewhat different paradigm (suddenly open/read/write/close became insufficient for sockets) . The Unix OS paradigm isn't all powerful and all-encompassing either, despite what many fans would have you believe. – PSkocik Jun 15 '16 at 0:22

The distinction between kernel and user (user = non-kernel) is very clear: they have different interfaces, they run in different processor modes, ...

Further separations inside the user realm are not so clear. A shell is a program whose job is to run other programs. By this definition, a web server may or may not be a shell depending on what it's used for: a web server that serves static files isn't a shell, a web server that runs web applications is a shell.

My advice is not to attach much importance to this hierarchy. It makes sense in one specific context (that of typical early 1970s computers), it isn't a generally useful concept.

  • I didn't understand the sentence: "Further separations inside the user realm are not so clear"; could you please a bit explain it to me? Would thank you dearly! I fully understood the rest of what you wrote; I very much thank you for your answer. – JohnDoea Jun 15 '16 at 4:26
  • @Benia Distinctions between types of user processes are usually not clear: you can make categories, but often there are programs that aren't clearly in one of the categories. – Gilles Jun 15 '16 at 11:05

I am not familiar with Ritchie's layering, but in general you put things into separate layers if one depends on the other. In UNIX/Linux, everything depends on the kernel so it should be in a layer below shell/utilities/server. But web server and shell are mutually independent (mostly, though the shell is needed for service start/stop, too). In general, layering is a subjective structuring mechanism, there's not always just one correct answer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.