0

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. – Petr Skocik Jun 15 '16 at 00:22

2 Answers2

1

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. –  Jun 15 '16 at 04: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 'SO- stop being evil' Jun 15 '16 at 11:05
0

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.