blatt2

Werbung
Übungen zu
Grundlagen der Betriebssysteme
Wintersemester 2012/2013
Prof. Hannes Frey / Frank Bohdanowicz
Übungsblatt 2
Abgabe bis Freitag, den 02.11.2012, 16 Uhr,
als PDF via SVN
Gruppenname:
Name
Aufgabe 1
@Uni-Kennung
(6 Punkte) Was ist ein Betriebssystem?
Recherchieren Sie die Antworten zu folgenden Fragen im Internet (z.B. Wikipedia)!
a) (3 Punkte)
Erläutern Sie mit wenigen Worten den Begriff Betriebssystem und zählen Sie einige
Hauptaufgaben eines Betriebssystems (im Allgemeinen) auf.
b) (3 Punkte)
Unterscheiden Sie mit wenigen Worten die Funktion eines BIOS (Basic Input/Output
System) von einem Betriebssystem (OS - Operating System).
Grundlagen der Betriebssysteme – WS 2012/13 – Blatt1
Aufgabe 2
2/4
(6 Punkte) Pointer Algebra
Schreiben Sie ein C-Programm welches die folgende Deklarationen enthält:
int A[] = {2,6,5,1,3};
int *p;
p=A;
Welches Ergebnis (welche Ausgabe) erhalten Sie dann für die folgenden Instruktionen:
1) *p
6) p
11) &A[0]+3
2) *p+2
7) A
12) p+(*(p+4)-3)
3) *(p+2)
8) A[0]
4) &p
9) A[0]+3
5) &p+1
10) &A[0]
Aufgabe 3
(8 Punkte)
a) (5 Punkte)
Schreiben Sie ein C-Programm, welches den Wochentag anhand eines eingegebenen
Datums berechnet. Die Wochentagsfunktion soll dabei in einer eigenen Datei liegen, auf
die über eine zusätzliche Headerdatei von der main-Funktion aus zugegriffen wird.
Das Datum soll über 3 Integervariablen d (Tag), m (Monat) und y (Jahr) eingegeben und
an die Wochentagsfunktion übergeben werden. Die Eingabe kann entweder über die
Tastatur zur Programmlaufzeit ( scanf() ) oder über die Startparameter des Programms (
int main (int argc, char *argv[]) ) erfolgen. Eventuell müssen Sie die Eingabe von String in
Integer umwandeln ( int atoi( const char * str) ).
Nutzen Sie zur Wochentagsberechnung die folgende Funktion:
d = day , m= month , y = year
m1 = m− 2 wenn m≥ 3
m+10 wenn m<3
{
y1 =
m≥ 3
{y−y 1wenn
wenn m<3
wobei yc die beiden ersten Stellen der Jahreszahl darstellen (Jahrhundert) und yd die
beiden letzten Stellen (Jahrzehnt). (Bsp: y1 = 1985 → yc = 19, yd = 85)
y
y 26⋅ m1− 2
f = d + y d + d − 2⋅ y c + c +
4
4
10
Der Tag der Woche wird dann durch modulo von f und 7 (dow=(f%7);) zurückgegeben
(0=Sonntag, 1=Montag, …, 6=Samstag) und soll auf ein Array mit den ausgeschriebenen
Wochentagen abgebildet und auf der Konsole ausgegeben werden.
char * week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
Geben Sie ihr Programm in kompilierfähig und ausführbar ab!
Grundlagen der Betriebssysteme – WS 2012/13 – Blatt1
3/4
b) (3 Punkte)
Schreiben ein Makefile für ihr Programm. Nutzen sie dabei soweit möglich Variablen,
Makros und Wildcards, um ihr Makefile so klein und übersichtlich wie möglich zu halten.
Aufgabe 4
(10 Punkte)
Schreiben Sie ein C-Programm, das die Zufallsfunktion rand() benutzt, um 100
Zufallszahlen zwischen 0 und 9999 zu generieren. Die Zahlen sollen in einem Array
gespeichert werden. Anschließend sollen die Zufallszahlen mit einem Sortierarlgorithmus
ihrer Wahl (z.B. Insertionsort oder Bubblesort) sortiert werden. Schließlich soll ihre
sortierte Zahlenfolge in einer Datei abgespeichert werden, wobei immer nach 10 Zahlen
eine neue Zeile begonnen werden soll. Zahlen dürfen in der Zahlenfolge doppelt
vorkommen.
Anmerkung:
rand() liefert eine ganzzahlige Zufallszahl zwischen 0 und 215-1
srand() wird zur Initialisierung des Zufallsgenerators benutzt.
#include <stdlib.h>
rand() % 9999 ;
/* liefert immer die gleiche Zahlenfolge*/
/* Zufallsgenerator muss zuvor initialisiert werden */
time_t t;
time(&t);
srand((unsigned int) t);
Hinweis:
Geben sie alle ihre Programme in einer kompilierfähigen und ausführbaren Version sowei
die C-Quelltext-Datei ab.
Weitere Hinweise finden sie hier: http://openbook.galileocomputing.de/c_von_a_bis_z/
Für die Programmieraufgaben können Sie einen virtuellen BS-Server unter der folgenden
Grundlagen der Betriebssysteme – WS 2012/13 – Blatt1
URL nutzen: http://bs.uni-koblenz.de/bs2012/
4/4
Herunterladen