• Keine Ergebnisse gefunden

Pr¨ ufung Betriebssysteme 1

N/A
N/A
Protected

Academic year: 2021

Aktie "Pr¨ ufung Betriebssysteme 1"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Pr¨ufung BS 1 2008/041, 2008/043, und W 10. 02. 2009

Pr¨ ufung Betriebssysteme 1

Hinweise:

Die Klausur umfaßt 10 Aufgaben auf 4 Bl¨attern. Die Arbeitszeit betr¨agt 90 Minuten.

Bitte notieren Sie auf jedem abgegebenen Blatt Ihren Namen und Ihre Matrikelnummer!

Zur Bearbeitung der Aufgaben sind keine Hilfsmittel zugelassen. Bitte geben Sie alle Aufgabenbl¨atter mit ab! Mit Ihrer Unterschrift best¨atigen Sie die Bereitschaft zur Pr¨ufung sowie die Belehrung ¨uber die Pr¨ufungsbedingungen. Bei versuchter oder erfolgter T¨auschung gilt die Pr¨ufung als

”nicht bestanden“.

Name: Mat.-Nr.: Unterschrift:

Aufgabe 1 2 3 4 5 6 7 8 9 10 P

Punkte 3 15 6 12 7 7 8 10 8 5 81

erreicht

1. Nennen Sie 3 Aufgaben eines Betriebssystems! (3)

2. Entwerfen Sie ein C-Programm, das einen Sohnprozess erzeugt und von diesem mittels einer Pipe eine (15) Nachricht

”Hallo, Vater!“ ¨ubermittelt. Der Sohn soll sich nach Sendung der Nachricht beenden. Der Vater soll die empfangene Nachricht ausgeben, auf das Ende des Sohnes warten und sich danach selbst beenden.

Achten Sie auf die folgenden Aspekte:

• Welche Systemrufe ben¨otigen Sie?

• Die Reihenfolge der Systemrufe ist wesentlich.

• Wie wird die Pipe vernichtet?

• Es kommt mir nicht auf syntaktische Details wie die genaue Reihenfolge und der Typ der System- rufparameter an.

3. Schreiben Sie einfache regul¨are Ausdr¨ucke (basic regular expressions) regexp, um aus der Datei da- tei.txtdie folgenden Zeichenfolgen mittels des Kommandos

cat datei.txt | grep -o "regexp"

zu selektieren:

(a) alle Worte, die mit ’A’ beginnen, (1)

(b) alle dreistelligen Zahlen (Hilfe: die zugeh¨orige Zeichenklasse heißtdigit), (1) (c) alle Worte, die nur aus den Buchstaben A-F bestehen, egal ob groß oder klein geschrieben, (1) (d) alle Worte, die mit ’B’ oder ’b’ beginnen und auf einen Vokal enden, (1) (e) alle Zeichenketten, die entweder zweimal das Wort ’Wort’ oder einmal das Wort ’Beule’ enthalten. (2) 4. Was bewirken die folgenden Linux-Kommandos, auf welche Verzeichnisse beziehen Sie sich?

(a) find *.tex | wc -l (2)

(b) ls -lR / | grep ".tex" | wc -l (2)

(2)

Pr¨ufung BS 1 2008/041, 2008/043, und W 10. 02. 2009

(c) scp ../datei.txt foo@192.168.178.2:~/txt/hobby/kochen (3)

(d) x=0; for file in ./*.tex; do let x++; done; echo $x (3)

(e) chmod +x ‘ls *.sh‘ (2)

5. Schreiben Sie ein Bash-Shellskript, das einen Dateinamen als Kommandozeilenparameter einliest, die (7) Existenz der Datei pr¨uft und eine Kopie der Datei in das Verzeichnis~/backupschreibt. Der Name der

Kopie soll der originale Dateiname mit angeh¨angtem’.bak’sein. Falls die Datei nicht existiert, soll eine Fehlermeldung ausgegeben werden.

Hinweise:

• Die Existenz (und Lesbarkeit) einer Datei pr¨ufen Sie mittelstest -r <dateiname>

• Denken Sie an ordnungsgem¨aße Beendigung inklusive vern¨unftigem R¨uckgabewert!

• Was steht in der ersten Zeile des Shellskriptes?

6. Analysieren Sie das folgende Programm und geben Sie die Reihenfolge der Bildschirmausgaben an! Ist (7) die Reihenfolge eindeutig determiniert? Beschreiben Sieknapp, was jeder Prozess tut.

Hinweis: Der execl-Systemruf ist ¨aquivalent zur Ausf¨uhrung des Shellkommandos echo Vater2. Er schl¨agt nicht fehl.

#include <unistd.h>

#include <stdio.h>

#include <sys/types.h>

int main(int argc, char∗ argv[]) {

pid t pid, pid2;

pid = fork();

wait();

if (pid == 0) { printf("Sohn\n");

} else {

printf("Vater\n");

}

pid2 = fork();

wait();

if (pid2 == 0) { printf("Sohn2\n");

} else {

execl("/bin/echo", "/bin/echo", "Vater2", NULL);

printf("nochmal\n");

} }

7. (a) Wie k¨onnen Sie innerhalb eines C-Programms ein Signal verschicken? (2) (b) Wie stellen Sie ein Signal an der Kommandozeile zu, wenn Sie 1.) nur die PID bzw. 2.) nur den (2)

Namen des Zielprozesses kennen?

(c) Was passiert, wenn ein in Abarbeitung befindliches Programm das Signal SIGUSR1 zugestellt be- (1) kommt?

Page 2

(3)

Pr¨ufung BS 1 2008/041, 2008/043, und W 10. 02. 2009

(d) Das Signal SIGINT beendet normalerweise die Abarbeitung eines Programmes. K¨onnen Sie das (2) Verhalten eines Programmes hinsichtlich dieses Signales ¨andern? Wenn ja, wie?

(e) Ist es m¨oglich, ein- und denselben Signalhandler f¨ur mehrere Signale zu installieren? (1) 8. (a) Nennen Sie die 3 (Makro-)Zust¨ande eines Prozesses und beschreiben Sie, was einen Prozess im (6)

jeweiligen Zustand kennzeichnet.

(b) Nennen Sie zwei M¨oglichkeiten, wie ein Prozeß in den Zustand ’wartend’ ger¨at und wie er wieder (4) herauskommt!

9. (a) Was ist das Round-Robin-Verfahren? (3)

(b) Was ist ein Quantum? (1)

(c) In welcher Weise beeinflusst seine L¨ange das Computersystem? (4) 10. Analysieren Sie das folgende Programm und beantworten Sie die folgenden Fragen!

(a) Wieviele Threads werden erzeugt? (1)

(b) Ist deren Anzahl beschr¨ankt? (2)

(c) Ist der Zugriff auf xein kritischer Abschnitt? Begr¨unden Sie Ihre Antwort! (2)

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <pthread.h>

long x = 42;

void∗ thread function(void ∗arg) {

int ret;

pthread t thid;

x = 8;

printf("%d\n", x);

ret = pthread create(&thid, NULL, &thread function, NULL);

if (ret != 0) {

perror("pthread_create");

pthread exit(NULL);

}

ret = pthread join(thid, NULL);

if (ret != 0) {

perror("pthread_join");

}

pthread exit(NULL);

}

int main (int argc, char ∗argv[]) {

int ret;

pthread t thid;

ret = pthread create(&thid, NULL, &thread function, NULL);

Page 3

(4)

Pr¨ufung BS 1 2008/041, 2008/043, und W 10. 02. 2009

if (ret != 0) {

perror("pthread_create");

pthread exit(NULL);

}

ret = pthread join(thid, NULL);

if (ret != 0) {

perror("pthread_join");

}

x = 8;

printf("x is %ld.\n", x);

exit(EXIT SUCCESS);

}

Page 4

Referenzen

ÄHNLICHE DOKUMENTE

Kotten über Aphasietherapie stellt sich die Frage, für welche Adressaten ein derart komprimierter und sehr viel an speziel- len Terminologie- oder Literaturkenntnissen

Dies kann man entweder durch direkte Rechnung verifi- zieren, oder aus der Ungleichung rang(CD) ≤ rang(C) = 2 herleiten..

Lies dir die Wörter nach dem Schreiben nochmals selbst durch und prüfe, ob du richtig geschrieben hast.. Anschließend lasse

Lies dir deine Sätze am Ende noch einmal sorgfältig durch. Vielleicht findest du selbst

Lies dir deine Sätze am Ende noch einmal sorgfältig durch. Vielleicht findest du selbst

Lies dir deine Sätze am Ende noch einmal sorgfältig durch. Vielleicht findest du selbst

Lies dir deine Sätze am Ende noch einmal sorgfältig durch. Vielleicht findest du selbst

Streiche den falschen Buchstaben durch, schreibe ihn richtig darüber und schreibe das Wort unten nochmals richtig. 1) Mein hund ist noch ganz Jung und will immer spielen... 2)