Unix-Kernel + Unix-Shells: Ein paar Grundfragen

M

mech_animal

Mitglied
Hallo,

wie schon am Thema abzulesen, will ich euch heute mit ein paar Grundfargen zum Unix-Kernel und Unix-Shells auf den Geist gehen. :D

Ich habe mich jetzt etwas intensiver in die Materie hineingelesen und grundlegend auch alles verstanden.
Nur beim Systematisieren stoße ich manchmal auf kleine Probleme, weil mir dazu einerseits wohl das grundlegende Informatikwissen fehlt und ich andererseits auch keine Spezialkenntnisse zu diesen Dingen vorweisen kann.


Als erstes zum Kernel:

Der ist ja für eine Reihe von Dingen zuständig, darunter auch Speichermanagement.
Wenn ich das richtig verstanden habe bedeutet Speichermanagement nichts weiter als die Verwaltung bzw. Zuweisung v. realem und virtuellem Speicher an Prozesse, richtig?
Und gehe ich richtig in der Annahme, dass sich virtueller Speicher und Speicherschutz nur auf den Arbeitsspeicher beziehen? (Tja, hier haben wir schonmal das Problem des Grundwissens...)
Ich hab mir zu diesen Dingen auch schon Texte durchgelesen, aber teilweise nur Bahnhof verstanden.

Ein weiterer Punkt ist beim Kernel das Prozessmanagement. Ich habe gelesen, dass der Kernel auch Mittel bereit hält, um das System zu starten (das wusste ich auch schon vorher...).
Es kommt mir nur komisch vor, dass das in dem Schriftstück extra betont wurde.
Im Endeffekt gehört der Systemstart doch auch zum Prozessmanagement, weil der Systembetrieb nichts weiter ist als das Durchlaufen von Prozessen, richtig?

Nun noch zu dem Punkt, der im Englischen immer als network management bezeichnet wird.
Man könnte das natürlich einfach als Netzwerkmanagement übersetzen und Schluss. Aber den Begriff finde ich irgendwie nicht sehr aussagekräftig.
Ich kann das aber auch nicht wirklich anders übersetzen, weil ich eben nicht genau weiß, was damit gemeint ist.
Fakt ist ja, dass moderne Kernel "die Netzwerkunterstützung stellen". Das seh ich ja im Kernel-Menü.
Aber wie kann man das mal schön und vor allem richtig zusammenfassen? Heißt: Was wird da alles gestellt oder kann gestellt werden?


Nun zur Shell:

Für mich sind bezüglich der Shell noch 2 grundsätzliche Fragen zu klären:

1. Wozu wird die Shell eingesetzt?

2. Welche Funktionen bietet die Shell?

Dazu möchte ich kurz noch etwas erläutern, weil man evtl. meinen könnte, dass die beiden Fragen auf die selben Antworten hinauslaufen.
Also bei 1. geht es mir eher um die abstraktere Ebene, bei der nicht so genau darauf eingegangen wird, was eigentlich passiert.
Bei 2. geht es dann mehr darum, welche Funktionen die Dinge, die in 1. benannt wurden, ermöglichen.

Mal ein lustiges Praxisbeispiel:
Wenn ich einen Orangensaft-Automat vor mir habe, würde ich bei 1. notieren, dass er dazu eingesetzt wird um auf Knopfdruck frisch gepressten Orangensaft bereitzustellen.
Bei 2. würde dann vielleicht stehen, dass der Automat die Orange zertielt oder ausquetscht und besonders schnell neue Becher bereitstellen kann. Ich kenn mich auf dem Gebiet leider nicht so genau aus.

Unter dem, wozu die Shell eingesetzt wird, findet sich bei mir folglich:

- Manipulation des Dateisystems
- Ein-/Ausgabeumleitung
- Job Control (nutzerseitige Prozessverwaltung)
- allgemein: Lösen komplexer Aufgaben durch Kombination von Kommandos (Shell-Scripting)

Man kann die Shell aber auch zur Textverarbeitung nutzen. Sollte ich das also mit erwähnen?
Wenn ja, gehört das zur Manipulation des Dateisystems?

An Funktionen, die die Shell mit sich bringt, habe ich aus den unterschiedlichen Quellen folgendes zusammengetragen:

- Ausführen von Kommandos
- Stoppen und Starten von Prozessen
- Starten von mehreren Prozessen (Verkettung über Pipes)
- Prozesse im Vorder- und Hintergrund starten
- Verschieben von Prozessen in Vorder-/Hintergrund

Ist das vollständig?
Dinge wie completion system, command line editing und command history habe ich in einer extra Rubrik unter dem Namen "Zustanfunktionen" eingegliedert, weil sie eigentlich nicht von absolut zentraler Bedeutung sind, sondern nur den Komfort erhöhen.
Darüber kann man sich jetzt natürlich auch streiten. Ich seh es erstmal so.

So, zum Abschluss noch eine Frage:

Welche Shell benutzt ihr und warum?
Ich finde ja die zsh ganz interessant. Da kann man den Prompt auf die rechte Seite setzen und solche Scherze.
Hat damit jemand Erfahrung?


Vielen Dank schonmal für eure Antworten!
Gebe mich auch mit Links zufrieden.

P.S.: Das ist kein Hausaufgaben-Thread! Ich interessiere mich einfach für Unix und brauche eben manchmal ein Echo zu dem, was ich mir als vermeintlich richtig erarbeitet habe. Ich hoffe auf euer Verständnis!
 
Zuletzt bearbeitet:
1. Wozu wird die Shell eingesetzt?

2. Welche Funktionen bietet die Shell?

Dazu möchte ich kurz noch etwas erläutern, weil man evtl. meinen könnte, dass die beiden Fragen auf die selben Antworten hinauslaufen.
Also bei 1. geht es mir eher um die abstraktere Ebene, bei der nicht so genau darauf eingegangen wird, was eigentlich passiert.
Bei 2. geht es dann mehr darum, welche Funktionen die Dinge, die in 1. benannt wurden, ermöglichen.

Mal ein lustiges Praxisbeispiel:
Wenn ich einen Orangensaft-Automat vor mir habe, würde ich bei 1. notieren, dass er dazu eingesetzt wird um auf Knopfdruck frisch gepressten Orangensaft bereitzustellen.
Bei 2. würde dann vielleicht stehen, dass der Automat die Orange zertielt oder ausquetscht und besonders schnell neue Becher bereitstellen kann. Ich kenn mich auf dem Gebiet leider nicht so genau aus.

Hrhr, lustiges Posting.......:D

Na, dann versuch ich mich doch mal:

Und gehe ich richtig in der Annahme, dass sich virtueller Speicher und Speicherschutz nur auf den Arbeitsspeicher beziehen? (Tja, hier haben wir schonmal das Problem des Grundwissens...)

IMHO ja.

Im Endeffekt gehört der Systemstart doch auch zum Prozessmanagement, weil der Systembetrieb nichts weiter ist als das Durchlaufen von Prozessen, richtig?

Ja, ganz grob vereinfacht sieht es so aus:

Bootloader lädt Kernel -> Kernel startet die init-Prozesse.

Da allerdings alle anderen Prozesse von den init-Prozessen abhängen, bringt der Kernel "alleine" nicht viel.

Aber wie kann man das mal schön und vor allem richtig zusammenfassen? Heißt: Was wird da alles gestellt oder kann gestellt werden?

Der TCP/IP-Stack + Hilfsmittel zur Bearbeitung (z.B. iptables)

Welche Shell benutzt ihr und warum?
Ich finde ja die zsh ganz interessant. Da kann man den Prompt auf die rechte Seite setzen und solche Scherze.
Hat damit jemand Erfahrung?

Ich finde alles außer bash schrecklich, liegt wohl an der Gewohnheit...:)

So, hoffe mal ich hab keinen Bullshit erzählt.....8)
 
Wenn ich das richtig verstanden habe bedeutet Speichermanagement nichts weiter als die Verwaltung bzw. Zuweisung v. realem und virtuellem Speicher an Prozesse, richtig?
Nicht ganz, da ist natürlich noch vieles drumum. Paging, Swapping, Algorithmen die dies managen, TLB verwalten etc. Möglicherweise hast du das gemeint nur nicht erwähnt :). Wikipedia kennt die Begriffe (SWAP, Page).

Und gehe ich richtig in der Annahme, dass sich virtueller Speicher und Speicherschutz nur auf den Arbeitsspeicher beziehen? (Tja, hier haben wir schonmal das Problem des Grundwissens...)
Nein, virtueller Speicher = Arbeitsspeicher + Swap (Auslagerungspartition bzw. Datei). Dabei wird frisch fröhlich bei Bedarf ein- und ausgelagert (suche mal nach "Pagefault").

Ein weiterer Punkt ist beim Kernel das Prozessmanagement. Ich habe gelesen, dass der Kernel auch Mittel bereit hält, um das System zu starten (das wusste ich auch schon vorher...).
Es kommt mir nur komisch vor, dass das in dem Schriftstück extra betont wurde.
Im Endeffekt gehört der Systemstart doch auch zum Prozessmanagement, weil der Systembetrieb nichts weiter ist als das Durchlaufen von Prozessen, richtig?
Wenn du ein System aufstartest, führt es die Daten im Master Boot Record (MBR) aus -> meistens einen Bootloader. Dieser lädt dann das eigentliche System (Kernel) und init, welches dann für den Systemstart zuständig ist. Prozessmanagement hast du, sobald der Kernel aktiv ist.

Fakt ist ja, dass moderne Kernel "die Netzwerkunterstützung stellen". Das seh ich ja im Kernel-Menü.
Aber wie kann man das mal schön und vor allem richtig zusammenfassen? Heißt: Was wird da alles gestellt oder kann gestellt werden?
Guck dir mal das OSI-Modell an, dort siehst du, was der Kernel alles mit Networking meint (Beispiel Kartentreiber -> Ethernet -> IP -> Routing -> TCP -> Firewall ...).

1. Wozu wird die Shell eingesetzt?
Systemschnittstelle Mensch/Maschine sag ich mal ganz salopp. Triffts wohl auf den Punkt.

2. Welche Funktionen bietet die Shell?
Das Bedienen und Verwalten des Betriebssystem.

Unter dem, wozu die Shell eingesetzt wird, findet sich bei mir folglich:

- Manipulation des Dateisystems
- Ein-/Ausgabeumleitung
- Job Control (nutzerseitige Prozessverwaltung)
- allgemein: Lösen komplexer Aufgaben durch Kombination von Kommandos (Shell-Scripting)
Du machst in der Shell im Prinzip nur eines: du startest Programme. Viel gröber würde ich gar nicht unterscheiden, wenn du es abstrakt halten willst.

Man kann die Shell aber auch zur Textverarbeitung nutzen. Sollte ich das also mit erwähnen?
Wenn ja, gehört das zur Manipulation des Dateisystems?
Nein, Manipulation des Dateisystemes ist alles, was:
- Dateien erstellt / löscht
- Dateiinformationen verändert (Berechtigungen, Namen, Links etc.)

Der Hauptzweck eines Textprogrammes ist nicht die Manipulation des Dateisystemes, sondern die Erstellung von Daten (die letztenendes natürlich das Dateisystem verwenden). Aber Permissions ändern machst du normalerweise mit anderen Tools :).

An Funktionen, die die Shell mit sich bringt, habe ich aus den unterschiedlichen Quellen folgendes zusammengetragen:

- Ausführen von Kommandos
- Stoppen und Starten von Prozessen
- Starten von mehreren Prozessen (Verkettung über Pipes)
- Prozesse im Vorder- und Hintergrund starten
- Verschieben von Prozessen in Vorder-/Hintergrund

Ist das vollständig?
Ein Wort dafür? Prozessverwaltung :).

So, zum Abschluss noch eine Frage:

Welche Shell benutzt ihr und warum?
KSH und Bash. Bash weil sie auf (praktisch) allen Linux Systemen vorhanden ist, ksh weil ichs auf Solaris immer hatte auch, als bash noch nicht im Standardbuild hier dabei war. Zudem kann man sie mit vi-Kommandos benutzen was richtig rockt :).

Gruess
Joel
 
Zuletzt bearbeitet:
Danke für die hilfreichen Antworten!
Werde mir das in Ruhe zu Gemüte führen und evtl. nochnmal Rückfragen stellen.
 

Ähnliche Themen

Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

Systemd betrügt UNIX-Philosophie?

Linux Kernel VFS Panic HP Thin Client

Frage(n) zu Befehl

Grub1 im MBR, Grub2 in Partition: Ubuntu Studio nicht mehr bootbar

Zurück
Oben