Sie sind auf Seite 1von 6

HAW-Hamburg

Department Informations- und Elektrotechnik

Studiengruppe
6a

Datum

bungstag
20.04.2015
Laborleiter

Labor
Betriebsysteme
27.04.2015

Teilnehmer
Testat
Shell

Inhaltsverzeichnis
1 Motivation und Ziele

2 Aufgaben

2.1 Umgang mit der Shell . . . . . . . . . . . . . . . . . . .


2.1.1 Mini Tutorial / Anleitung . . . . . . . . . . . . .
2.1.2 Aufgabe . . . . . . . . . . . . . . . . . . . . . . .
2.2 Automatisierung mit Shellskripten . . . . . . . . . . . .
2.2.1 Bekanntmachung von Gerten durch den Kernel
2.2.2 Reprsentation von Partitionen . . . . . . . . . .
2.2.3 udev - Linux Gertemanager . . . . . . . . . . .
2.2.4 Hndisches Einhngen und Testdateisystem . . .
2.2.5 Erstellen des Skripts . . . . . . . . . . . . . . . .
2.3 Erweitern des Skripts . . . . . . . . . . . . . . . . . . . .
2.4 Prozesserzeugung und Verwaltung . . . . . . . . . . . .
2.4.1 Grundlagen der Prozesserzeugung . . . . . . . . .
2.4.2 Prozesskoordinierung mit wait . . . . . . . . . .
2.4.3 Zombie-Prozesse, Vererbungsregeln . . . . . . . .
2.4.4 Prozesse und exec()-Systemaufruamilie . . . . .
2.4.5 Schreiben einer Minishell . . . . . . . . . . . . .
2.5 Interprozesskommunikation . . . . . . . . . . . . . . . .
2.5.1 Nachrichtenbasierte Kommunikation . . . . . . .
2.5.2 Pipes . . . . . . . . . . . . . . . . . . . . . . . .
2.5.3 Weitere Interprozesskommunikation . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

3
3
3
4
4
4
4
4
4
5
5
5
5
5
5
5
5
5
6
6

1 Motivation und Ziele


In diesem Praktikum sollen die Mglichkeiten der Shell (im Praktikum bash ) getestet und
verwendet werden.

2 Aufgaben
2.1 Umgang mit der Shell

2.1.1 Mini Tutorial / Anleitung


2.1.2 Aufgabe
a) Um die Abhngigkeit dynamischer Bibliotheken von /bin/bash festzustellen kann der
Befehl ldd /bin/bash verwendet werden, der genau diese Bindung anzeigt.
1
2
3
4
5

linux - gate . so .1
libtinfo . so .5
libdl . so .2
libc . so .6
/ lib / ld /- linux . so .2

b) echo $HOME zeigt das Heimverzeichnis der Shell-Instanz an: /home/praktikum


c) Mit echo ""> Datei wird die Datei "Datei" erzeugt und mit vi Datei genet. Wenn mit
lsof - PID die vom Prozess oenen Dateien angezeigt werden, bendet sich darunter die
(Swap-) Datei mit vorangestelltem Punkt und swp als Dateiendung. Diese wurde von vi
im Verzeichnis der zu bearbeitenden Datei erstellt. Die eigentlich genete Datei bendet
sich nicht unter den oenen Dateien.
d) Es existiert nach dem sauberen Beenden nur noch die ursprngliche Datei. Die Swap-Datei
wird mit dem Beenden gelscht.
e) Das Senden von Signal 9 bewirkt, dass die Instanz vom Texteditor vi abrupt beendet wird.
Der Prozess wird so nicht sauber beendet und die oene Swap-Datei wird nicht gelscht.
Dadurch existiert die im Heimverzeichnis erstellte Swap-Datei .Datei.swp weiterhin.
f) Der Prozess init ist der erste Prozess. Er fhrt den Prozess login aus, von wo aus die Shell
(bash ) gestartet wird.
g) Das Debian System bietet basierend auf dem Linux-Kernel die Methode der Threads an.
Daher ist die Mglichkeit Threads zu verwenden vorhanden. Sie wird von einigen aber
nicht allen Systemprogrammen auch verwendet. Mit dem Befehl ps -eLf lsst sich die
Zahl der Threads (NLWP) anzeigen.
h) Die Ressourcenumgebung ist bei mehreren Threads des gleichen Prozesses die selbe. Nur
der Stack ist fr die einzelnen Threads verschieden, sonst teilen sich die Threads pro
Prozess die Systemressourcen.

2 Aufgaben
2.2 Automatisierung mit Shellskripten

2.2.1 Bekanntmachung von Gerten durch den Kernel


Knnen Sie Gemeinsamkeiten bezglich der Gertebenennungen feststellen? Welche Datei reprsentiert den USB Stick?
Die Gerte werden als Dateien im Verzeichnis /dev reprsentiert. Sie beginnen mit sda. Der
letzte Buchstabe wird fr weitere Speichergerte im Alphabet weitergezhlt.

2.2.2 Reprsentation von Partitionen


Wie werden Partitionen im Dateisystem reprsentiert?
Die Partitionen werden ber eine an den Gertenamen angehngte Zahl reprsentiert.

2.2.3 udev - Linux Gertemanager


Erstellen Sie (mit Administratorrechten) die Datei /etc/udev/rules.d/50-mount-usb-stick.rules
mit folgendem Inhalt:
1

KERNEL ==" sd ??" , SUBSYSTEMS ==" usb " , ACTION ==" add " , RUN +="/ opt / mountAndAdd %N "

2.2.4 Hndisches Einhngen und Testdateisystem


Was geschieht mit Dateien, die sich zuvor in einem Verzeichnis befanden, wenn es als Einhngepunkt verwendet wird?
Sie werden, solange dort ein Laufwerk gemountet ist, nicht angezeigt, da nur Zugri auf das
Laufwerk besteht. Nach Unmounten ist wieder normaler Zugri vorhanden. Kann ein Dateisystem mehrmals eingehngt werden?
Es ist mglich, Dateisysteme mehrfach einzuhngen, allerdings aktualisieren sie sich nicht stndig gegenseitig.
Darf der Einhngepunkt eine Datei sein?
Nein, der Einhngepunkt muss ein Verzeichnis sein.
Wie hngen Sie nun eine Partition auf einem USB Stick oder einer Festplatte ein?
Es wird mit mount nur die entsprechende Partition gemountet. Fr ein Laufwerk mit mehreren
Partitionen wre so mounten jeder einzelnen ntig.
Ist /mnt fr die Verwendung als Einhngepunkt durch das zu schreibende Skript geeignet?
Was wren bessere Alternativen?
Da nur der root -Benutzer auf das Verzeichnis /mnt zugreifen kann, ist ein anderes, wie zum
Beispiel das Home Verzeichnis sinnvoller.

2.2.5 Erstellen des Skripts


(siehe Kommentare im Skript)

2 Aufgaben
2.3 Erweitern des Skripts
2.4 Prozesserzeugung und Verwaltung

2.4.1 Grundlagen der Prozesserzeugung


1. Das Kompilieren des gegebenen Programms erzeugt zwei Prozesse, die beide "Hallo Weltusgeben.
2. Durch Aneinanderreihung von fork-Befehlen verdoppelt sich die Zahl der Prozesse jeweils.

2.4.2 Prozesskoordinierung mit wait


Durch eine Bedingung fhrt nur der Elternprozess das Prozessklonen aus. Dadurch lsst sich die
gewnschte Anzahl an Klonen erreichen. Das wait liefert die PID des beendeten Kindsprozesses
zurck oder im Fehlerfall -1.

2.4.3 Zombie-Prozesse, Vererbungsregeln


Ein Zombieprozess ist ein Kindsprozess, der die Ausfhrung seines Programmcodes beendet hat,
der aber weiterhin einen geringen Speicherverbrauch besitzt, weil seine Rckgabe noch nicht
vom Elternprozess abgefangen wurde, da dieser (noch) keine (aktive) Rechenzeit hat (bspw weil
er auf einen anderen Prozess wartet oder sich im sleep-Zustand bendet). Wenn er wieder aktiv
wird empfngt er das Signal seines Kindsprozess und so verschwindet der Zombieprozess.
Lebt der Kindsprozess lnger als der Elternprozess, so lsst sich mittels Prozessliste prfen,
welcher Prozess dann zum Elternprozess wird. Dies ist der init-Prozess.

2.4.4 Prozesse und exec()-Systemaufruamilie


Das "Bye"wird nicht ausgegeben, weil der Prozess vorher anderen Code bekommt, den er ausfhrt. So wird der Abschnitt der "ByeAusgabe nicht erreicht.
Mit einem Klonen des Prozesses wird der Elternprozess mit dem "Byeusgegeben, nur der
Kindsprozess, wechselt in ein anderes Programm.

2.4.5 Schreiben einer Minishell


(siehe Kommentare im Quellcode)
2.5 Interprozesskommunikation

2.5.1 Nachrichtenbasierte Kommunikation


Message Queues bleiben ohne ausdrckliches Lschen auch ber Programmende hinaus

bestehen.

Prozessbergreifende Queueschlssels machen den Austausch des Schlssels im voraus

ntig.

2 Aufgaben

2.5.2 Pipes
Mit den verwendeten Pipes konnten wir bisher nur mit Prozessen kommunizieren die miteinander verwandt sind, also nur geforkte Prozesse. Mit den benannten Pipes ist die Kommunikation
auch mit vllig fremden Prozessen mglich. Zum Erstellen der Pipes ist ein fork erforderlich, der
die Pipes dann miteinander verbindet und man dann noch die nicht bentigten Richtungen der
Deskriptoren schliet um dann Nachrichten Verschicken zu knnen. Bei benannten Pipes wird
mit dem Befehl mkfo <Fifoname> eine benannte Pipe erzeugt, so das sich im gewhlten Verzeichnis diese FIFO (benannte Pipe) bendet. Damit ist es mglich das beliebige Programme
in dieses FIFO lesen und schreiben knnen.

2.5.3 Weitere Interprozesskommunikation


Eine weitere Art der Interprozesskommunikation, ist das Shared Memory Verfahren. Whrend
bei Pipes und Queues (egal ob verbindungsorientiert oder verbindungslos) immer eine Zieladresse angegeben werden muss, braucht man das beim Shared-Memory-Verfahren nicht. Ein
Prozess schreibt beim Shared-Memory-Verfahren in einen Speicherbereich. Dieser Speicherbereich kann dann von einem beliebigen Prozess ber Synchronisation mit Semaphoren abgefragt
und verndert werden.

Das könnte Ihnen auch gefallen