| Hoewel de Bash-shell (en andere shells zoals Zsh, Fish, enz.) cruciale componenten zijn van een besturingssysteem en een sterke interactie hebben met de kernel, zijn ze dat niet beschouwd als het besturingssysteem zelf omdat ze verschillende belangrijke kenmerken van een besturingssysteem missen:
* Kernelinteractie: Shells zijn programma's op *gebruikersniveau*. Ze draaien *bovenop* de kernel van het besturingssysteem en vertrouwen op de kernel voor fundamentele diensten zoals toegang tot het bestandssysteem, procesbeheer, geheugentoewijzing en apparaat-I/O. De kernel is de kern van het besturingssysteem; de shell is een programma dat de services van de kernel gebruikt.
* Bronnenbeheer: De OS-kernel is verantwoordelijk voor het beheer van systeembronnen zoals CPU-tijd, geheugen en randapparatuur. De shell beheert deze bronnen niet rechtstreeks; het vraagt om het gebruik ervan vanuit de kernel.
* Hardwareabstractie: De kernel biedt een abstractielaag tussen de hardware en de software die op het systeem draait. De shell heeft geen directe interactie met de hardware; het gebruikt hiervoor de API's van de kernel.
* Beveiliging: De kernel is verantwoordelijk voor het afdwingen van beveiligingsbeleid, het beheren van gebruikersaccounts en het controleren van de toegang tot systeembronnen. De shell voert alleen opdrachten uit op basis van de machtigingen die door de kernel zijn verleend.
* Procesbeheer (meer dan eenvoudige uitvoering): Terwijl shells processen tot op zekere hoogte starten en beheren, is de kernel verantwoordelijk voor het creëren, plannen en beëindigen van processen op laag niveau. Shells verzorgen voornamelijk de gebruikersinteractie en de uitvoering van opdrachten binnen dat raamwerk.
Kort gezegd:de shell is een opdrachtregelinterpreter die een gebruikersinterface biedt voor interactie met de kernel van het besturingssysteem. Het is een krachtig hulpmiddel, maar het is slechts één van de vele programma's die op het besturingssysteem draaien. De OS-kernel is de fundamentele laag die verantwoordelijk is voor het beheer van het hele systeem. De relatie is analoog aan die van een bestuurder die een auto bestuurt:de bestuurder gebruikt de auto (OS), maar de bestuurder is niet de auto zelf. |