• Keine Ergebnisse gefunden

SS 2003 – ¨ Ubungsblatt 6 25. Juni 2003

N/A
N/A
Protected

Academic year: 2022

Aktie "SS 2003 – ¨ Ubungsblatt 6 25. Juni 2003"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

BERGISCHE UNIVERSIT ¨AT GESAMTHOCHSCHULE WUPPERTAL

GAUSS-STRASSE 20 42097 WUPPERTAL (Korrespondenzanschrift) 42119 WUPPERTAL (Lieferanschrift) TELEX 8 592 262 bughw TELEFAX (0202) 439-2901 TELEFON (0202) 439-1

Fachbereich 7

MATHEMATIK

Prof. Dr. Hans-J ¨urgen Buhl Praktische Informatik / Numerik

e-mail: Juergen.Buhl@math.uni-wuppertal.de

Betriebssysteme: Konzepte, Dienste, Schnittstellen

(Betriebssysteme und betriebssystemnahe Programmierung)

SS 2003 – ¨ Ubungsblatt 6 25. Juni 2003

Ausgabe: 18. Juni 2003

Aufgabe 1. Hochfahren eines Linux-Systems

Beschreiben Sie in eigenen Worten die verschiedenen Phasen beim Boo- ten eines Linux-Systems.

Aufgabe 2. cat1.c

Bringen Sie das folgende Programm zum Ablauf

/* cat1.c -- simple version of cat */

#include <stdio.h>

#include <unistd.h>

/* While there is data on standard in (fd 0), copy it to standard out (fd 1). Exit once no more data is available. */

int main(void) { char buf[1024];

int len;

/* len will be >= 0 while data is available, and read() is successful */

while ((len = read(STDIN_FILENO, buf, sizeof(buf))) > 0) { if (write(STDOUT_FILENO, buf, len) != len) {

perror("write");

return 1;

} }

/* len was <= 0; If len = 0, no more data is available.

1

(2)

Otherwise, an error occurred. */

if (len < 0) { perror("read");

return 1;

}

return 0;

}

Lesen Sie die Manual-Seiten von read und write. Erkl¨aren Sie die Wirkungsweise des Programms. Ist das Programm korrekt?

Aufgabe 3. cat2.c

Bringen Sie das folgende Programm zum Ablauf

/* cat2.c -- simple 2nd version of cat */

#include <stdio.h>

#include <unistd.h>

/* While there is data on standard in (fd 0), copy it to standard out (fd 1). Exit once no more data is available. */

int main(void) { char buf[1024];

int len;

int wlen, n;

/* len will be >= 0 while data is available, and read() is successful */

while ((len = read(STDIN_FILENO, buf, sizeof(buf))) > 0) { if (len == -1){

perror("write");

return 1;

}

wlen = 0;

do {

if ((n = write(STDOUT_FILENO, &buf[wlen], len-wlen)) == -1) { perror("write");

return 1;

}

wlen += n;

} while (wlen < len);

}

/* len was <= 0; If len = 0, no more data is available.

Otherwise, an error occurred. */

if (len < 0) { perror("read");

return 1;

2

(3)

}

return 0;

}

und erkl¨aren Sie seine Wirkungsweise Zeile f¨ur Zeile. Warum unter- scheidet es sich von cat1.c?

Aufgabe 4. cat.c aus coreutils

Installieren Sie auf Ihrem Linux-System die Quellen der coreutils, die unter anderemcat.cdes Unix-Betriebssystems enthalten (benutze anschließend rpm -bp coreutils.spec).

Betrachten Sie dann im Verzeichnis

/usr/src/packages/BUILD/coreutils-4.5.8/src

die Datei cat.c. Welche zus¨atzlichen Funktionalit¨aten enth¨alt sie?

Ubersetzen Sie (als Superuser):¨

cd /usr/src/packages/BUILD/coreutils-4.5.8 ./configure

make all file src/cat make check make clean make distclean

Was l¨auft in den einzelnen Phasen ab?

Aufgabe 5. net-tools

Besorgen Sie sich analog die net-tools. Entpacken Sie und ¨ubersetzen Sie mittels:

cd /usr/src/packages/BUILD/net-tools-1.60 make config

make

./hostname make clean

Versuchen Sie den Inhalt von hostname.cin groben Z¨ugen funktional zu beschreiben.

3

Referenzen

ÄHNLICHE DOKUMENTE

Informieren Sie sich mit Hilfe des Kommandos man 2 read ¨ uber Zweck und Aufrufsyntax (Signatur) des

Warum ist die Erzeugung relokatiblen Codes auch heute (im Zeitalter der Benutzung virtuellen Speichers, virtuel- le versus physikalische Adressen, memory Management unit, ...) noch

Versuchen Sie in einem zweiten Terminalfenster das Programm ein zweites Mal zu starten und hier eine Schreibsperrung zu bekommen, w¨ ahrend im anderen Prozess noch eine

Wie heissen die Tools unter Windows beziehungsweise Linux, mit denen die genannten Aufgaben durchgef¨ uhrt werden?.

¨ Uberpr¨ ufen Sie dessen Wirkungs- weise mit Hilfe des Kommandos stty -a}. Wie kann man den gleichen Effekt interaktiv mit Hilfe von

#define doit(name) pr_limits(#name, name) static void pr_limits(char *,

Erg¨ anzen Sie das Programm aus Aufgabe 1 um einen Handler f¨ ur das Signal SIGINT, der die Zeichenkette &#34;interrupt&#34; ausgibt und das Pro- gramm dann beendet.

Erl¨ autern Sie die einzelnen Zeilen der folgenden Messung der Laufzeit eines Programms mittels time :.. real 0m6.866s user 0m0.340s