Lösungsvorschlag zur 7. Übung
|
|
- Rainer Fischer
- vor 7 Jahren
- Abrufe
Transkript
1 Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 7. Übung 1 Präsenzübungen 1.1 Schnelltest a) Ein C-Programm wird kompiliert und ausgeführt. Bringen Sie die folgenden Schritte in die korrekte Reihenfolge: Linker Loader Compiler Assembler Interpreter 1. Compiler, 2. Assembler, 3. Linker, 4. Loader Interpreter gehört nicht dazu b) Welche Aussagen treffen auf den Assembler zu? Externe Marken sind nicht vorhanden und daher kann eine Referenzierung von aussen nicht erfolgen. Der Assembler erzeugt Objektdateien. Der Assembler bearbeitet jede Datei eines Programms separat, weshalb man keine Labels anspringen kann, die ausserhalb der gerade assemblierten Datei liegen. Vorwärtsreferenzen sind wegen des 2-Phasen-Vorgehens nicht möglich. c) Die Relocation Information beinhaltet binäre Darstellung der Daten der Quelldatei.... beinhaltet resultierenden Programmtext in Maschinensprache.... beinhaltet Adressen externer Marken in Quelltextdatei und Listen ungelöster Referenzen.... beinhaltet die Identifizierung von Instruktionen und Daten-Worte, die von absoluten Adressen abhängen.... beinhaltet präzise Beschreibung der Art der Übersetzung des Programms, so dass Debugger die zu einer Instruktion gehörende Quelltextzeile auffinden kann. d) Welche Aussagen treffen auf Lader zu? Das Binden muss vor Aktivität des Laders abgeschlossen sein. Der Lader legt ein Programm nicht ab einer festen Adresse im Hauptspeicher ab, sondern ab einer aktuell verfügbaren. Der Lader ersetzt relativ gehaltene Programmadressen zum Programmanfang durch ihren jeweils endgültigen Wert. Das Programm muss vor jeder Ausführung assembliert werden. 1
2 e) Was gehört nicht zu den Aufgaben des Laders (loader)? Laden des Program Counters mit der Anfangsadresse des Programms. Anpassung der adressabhängigen Referenzen an deren aktuelle Position im Hauptspeicher. Auflösung eventuell existierender Bezüge zu Shared-Libaries. Kombination aller Objekt-Dateien (Objekt-Module) aller Programmteile und aller benötigten Programm-Bibliotheken zu einem ausführbaren Programm. 1.2 TLB Untersucht werden Speicherzugriffe auf einem System mit 256 MByte Hauptspeicher, 1 GByte virtuellem Adressraum, 64 KByte Kachel-/Seitengröße und vollassoziativem Translation Lookaside Buffer mit 4 Einträgen (Ersetzungstrategie LRU). a) Wie groß ist der TLB (ohne Verwaltungsinformationen)? Wir haben 2 28 Byte Hauptspeicher und 2 30 Byte virtueller Adressraum. Mit einer Seitengröße von 64 KByte benötigen wir = 14 Bit für die virtuelle Seitennummer sowie = 12 Bit für die physikalische Seitennummer. Insgesamt werden also 104 = 4 ( ) Bit für den TLB benötigt. b) Füllen Sie die folgenden Tabellen aus. Felder, die keinen Eintrag erhalten sollen, sind mit zu kennzeichnen. Nehmen Sie an, dass zu Beginn sowohl der Translation Lookaside Buffer noch nicht gefüllt ist und dass die angeforderten Seiten sich zunächst nicht im Speicher befinden. Die einzelnen auszufüllenden Tabellen sollen jeweils für sich alleine betrachtet werden. Zugriff virtl.adresse Seitenfehler virtuelle Seitennummer 0x134F B00F ja 0x134F 0x3D ja 0x3D49 0x ja 0x2010 0x4F ja 0x4F46 0x ja 0x1467 0x134F 4326 nein 0x134F 0x ja 0x0348 0x ja 0x2321 0x ja 0x1421 0x ja 0x4235 2
3 hit/miss virtuelle Seitennummer (TLB) Zugriff virtl.adresse im TLB neu eingelagert ersetzt 0x miss 0x1467 0x3D miss 0x3D49 0x miss 0x0010 0x miss 0x1466 0x1348 B756 miss 0x1348 0x1467 0x1467 1A34 miss 0x1467 0x3D49 0x hit 0x0010 6B35 hit 0x C1 miss 0x2321 0x1348 0x3D miss 0x3D49 0x1467 0x miss 0x2235 0x1466 Anmerkung: die erste Tabelle enthält virtuelle Adressen, die mit einem virtuellen Adressraum von 1 GByte nicht darstellbar sind. Dies sind diejenigen Adressen, deren vordeste Hex-Ziffer größer als 3 ist. 1.3 Prozesse vs. Threads Sie möchten in einem System Multi-Threading einführen, also neben den regulären, nebenläufigen Prozessen noch leichtgewichtige Prozesse einführen. Bisher sehen Ihre PCBs folgendermaßen aus: 1 typedef struct struct_ process 2 { 3 int id; 4 int state ; // 0: running, 1: idle, 2: dead 5 int priority ; 6 byte * textsegment ; 7 byte * datasegment ; 8 byte * stacksegment ; 9 int pc; 10 int stackpointer ; 11 File * openfiles ; 12 NetworkSocket * opensockets ; 13 }; Das Verständnis der genauen C-Syntax ist für diese Aufgabe nicht notwendig. Skizzieren Sie basierend auf dieser Struktur geeignete Strukturen für PCBs und TCBs (Thread Control Blocks). 3
4 Hier gibt es verschiedene mögliche Lösungen. Eine Möglichkeit: 1 typdefdef struct pcb 2 { 3 int pid ; 4 int priority ; 5 tcb * threads ; 6 byte * textsegment ; 7 byte * datasegment ; 8 File * openfiles ; 9 NetworkSocket * opensockets ; 10 }; typedef struct tcb 13 { 14 int tid ; 15 pcb * father ; 16 int state ; 17 byte * stacksegment ; 18 int pc; 19 int stackpointer ; 20 }; 1.4 Interrupts von Interrupts Die folgenden Interrupts mit Prioritäten prio laufen zu den angegebenen Zeiten t auf. Der Wert d gibt die Zeiteinheiten an, die jeweils zur Bearbeitung eines Interrupts benötigt werden: Clock prio = 28, t = {2, 11, 20}, d = 1 Device 1 prio = 3, t = {0, 12, 17}, d = 6 Device 2 prio = 4, t = {15}, d = 2 Device 3 prio = 5, t = {4, 13, 21}, d = 3 Ein Interrupt mit hoher Priorität (= niedriger Wert) kann dabei einen Interrupt mit niedrigerer Priorität (= hoher Wert) unterbrechen. Erarbeiten Sie eine Grafik aus der ersichtlich ist, welche Interrupts zu welchem Zeitpunkt bearbeitet werden. Userland Clock Device 3 Device 2 Device t 4
5 2 Hausübungen Wichtiger Hinweis: Schicken Sie Ihre Lösungen von Programmieraufgaben zusätzlich zur schriftlichen Abgabe per an Ihren Tutor. Kommentieren Sie Ihren Quellcode grundsätzlich. Fehlende oder unsinnige Kommentare führen zu Punktabzug. 2.1 Der Lader in der Praxis In dieser Aufgabe wollen wir betrachten, wie der Lader auf einem realen System Prozesse aus Programmen erzeugt. Dazu analysieren wir das folgende Programm auf einem Linux- System mittels der Systemwerkezeuge strace und ltrace. 1 Das folgende (nicht unbedingt sinnvolle) C-Programm besteht aus einigen Aufrufen von Systemfunktionen: 1 # include <stdio.h> 2 # include <sys / mman.h> 3 # include <sys / stat.h> 4 # include <fcntl.h> 5 # include < unistd.h> 6 7 int main () { 8 char *a,c; 9 int fd; 10 struct stat attr ; fd = open (" datei. txt ", O_RDWR ); 13 fstat (fd, & attr ); 14 a = ( char *) mmap (NULL, attr. st_size, PROT_READ, MAP_PRIVATE, fd, 0); 15 c = (*( a +18) ) -51; lseek (fd, 18, SEEK_SET ); 18 write (fd, &c, 1); close (fd); 21 printf (" Bearbeitung abgeschlossen.\n"); 22 return 0; 23 } In dem gleichen Verzeichnis liegt eine Textdatei datei.txt mit folgendem Inhalt: GdI 3 ist toll! :-\ (ohne die Anführungszeichen). Mit dem Programm ltrace können die Aufrufe von Funktionen in dynamischen Bibliotheken verfolgt werden, die während der Ausführung eines Programms erfolgen. Für unser Programm sieht die Ausgabe folgendermaßen aus: libc_start_main(0x4006e4, 1, 0x7fff2ebfcaf8, 0x4007b0, 0x4007a0 <unfinished...> open("datei.txt", 2, ) = 3 fxstat(1, 3, 0x7fff2ebfc970) = 0 mmap(0, 20, 1, 2, 3) = 0x7f60cf5cd000 1 Weitere Informationen zu beiden Befehlen gibt es auf der Man-Page man strace und man ltrace bzw. unter 5
6 lseek(3, 18, 0) = 18 write(3, "\366", 1) = 1 close(3) = 0 puts("bearbeitung abgeschlossen."bearbeitung abgeschlossen. ) = exited (status 0) +++ Das Programm strace protokolliert die Syscalls, die ein Prozess absetzt. Hier ist die Ausgabe für unser Programm deutlich umfangreicher: 1 execve ( "./ t e s t ", [ "./ t e s t " ], [/ 45 vars /]) = 0 2 brk ( 0 ) = 0 x mmap(null, 4096, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_ANONYMOUS, 1, 0) = 0 x7f9d694b a c c e s s ( "/ e t c /ld. so. nohwcap ", F_OK) = 1 ENOENT (No such f i l e or d i r e c t o r y ) 5 mmap(null, 8192, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_ANONYMOUS, 1, 0) = 0 x7f9d694b a c c e s s ( "/ e t c /ld. so. preload ", R_OK) = 1 ENOENT (No such f i l e or d i r e c t o r y ) 7 open ( "/ e t c /ld. so. cache ", O_RDONLY) = 3 8 f s t a t ( 3, { st_mode=s_ifreg 0644, s t _ s i z e =135007,... } ) = 0 9 mmap(null, , PROT_READ, MAP_PRIVATE, 3, 0) = 0 x7f9d c l o s e ( 3 ) = 0 11 a c c e s s ( "/ e t c /ld. so. nohwcap ", F_OK) = 1 ENOENT (No such f i l e or d i r e c t o r y ) 12 open ( "/ l i b / l i b c. so. 6 ", O_RDONLY) = 3 13 read ( 3, " \177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\353\1\0\0\0\0\0 "..., 832) = f s t a t ( 3, { st_mode=s_ifreg 0755, s t _ s i z e = ,... } ) = 0 15 mmap(null, , PROT_READ PROT_EXEC, MAP_PRIVATE MAP_DENYWRITE, 3, 0) = 0 x7f9d68f2c mprotect ( 0 x7f9d , , PROT_NONE) = 0 17 mmap( 0 x7f9d , 20480, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_FIXED MAP_DENYWRITE, 3, 0 x ) = 0 x7f9d mmap( 0 x7f9d , 18440, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_FIXED MAP_ANONYMOUS, 1, 0) = 0 x7f9d c l o s e ( 3 ) = 0 20 mmap(null, 4096, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_ANONYMOUS, 1, 0) = 0 x7f9d mmap(null, 4096, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_ANONYMOUS, 1, 0) = 0 x7f9d a r c h _ p r c t l (ARCH_SET_FS, 0 x7f9d694936f0 ) = 0 23 mprotect ( 0 x7f9d , 16384, PROT_READ) = 0 24 mprotect ( 0 x600000, 4096, PROT_READ) = 0 25 mprotect ( 0 x7f9d694b9000, 4096, PROT_READ) = 0 26 munmap( 0 x7f9d , ) = 0 27 open ( " d a t e i. t x t ", O_RDWR) = 3 28 f s t a t ( 3, { st_mode=s_ifreg 0666, s t _ s i z e =20,... } ) = 0 29 mmap(null, 20, PROT_READ, MAP_PRIVATE, 3, 0) = 0 x7f9d694b l s e e k ( 3, 18, SEEK_SET ) = write ( 3, " \303 ", 1) = 1 32 c l o s e ( 3 ) = 0 33 f s t a t ( 1, { st_mode=s_ifchr 0620, st_rdev=makedev ( 1 3 6, 5),... } ) = 0 34 mmap(null, 4096, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_ANONYMOUS, 1, 0) = 0 x7f9d694b write ( 1, " Bearbeitung abgeschlossen.\n", 27 Bearbeitung abgeschlossen. 36 ) = exit_group ( 0 ) =? 6
7 Es ist nicht nötig, dass Sie jede Zeile im Detail verstehen. Einige Anmerkungen sollen Ihnen beim Beantworten der folgenden Fragen behilflich sein: Zeile 7: Die Datei /etc/ld.so.cache enthält eine Tabelle, mit deren Hilfe der Lader die Datei einer dynamische Bibliothek im Dateisystem lokalisieren kann. Zeile 8, 14: Die Funktion fstat() ermittelt Details zu der Datei, deren File-Descriptor als erstes Argument übergeben wurde und speichert das Ergebnis im zweiten Argument: int fstat(int filedes, struct stat *buf); Zeile 3, 5 ff.: Die Funktion mmap() blendet angegebene Teile des Inhalts von Dateien in den virtuellen Speicherbereich eines Prozesses ein. Die Signatur dazu lautet: void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t pgoffset); Zeile 12: Die Datei /lib/libc.so.6 unter Linux ist die dynamische Standardbibliothek der C-Funktionen. Sie stellt die Funktionalitäten bereit, die über Header wie <stdio.h> eingebunden werden. Beantworten Sie folgenden Fragen zur strace-ausgabe: a) Was bewirkt der Befehl execve() in Zeile 1? Was bedeuten seine Parameter? 1 Punkt Der Befehl startet das Programm./programm (1. Argument) und übergibt ihm den eigenen Namen als Parameter (2. Argument). Zusätzlich werden sämtliche gesetzten Umgebunbsvariablen an den Prozess übertragen (3. Argument). b) Aus welchem Grund öffnet der Lader die Bibliothek libc.so.6? 1 Punkt Der Lader lokalisiert damit die Datei libc.so.6 im Dateisystem. In dieser kompilierten Bibliotheksdatei befinden sich Standard-C-Funktionen, wie etwa printf, welche dieses Programm aufruft. c) Welchen Vorteile hat die Verwendung von mmap bei häufigen, wahlfreien Zugriffen auf eine Datei? 1 Punkt Lese- und Schreibzugriffe erfolgen in der sehr hohen Geschwindigkeit des Arbeitsspeichers. Ein Programm kann eine Datei in den Speicher einblenden, dort sehr viele Zugriffe ausführen und die fertig bearbeiteten Daten (falls gewünscht) wieder in die physische Datei zurückschreiben. d) Betrachten Sie die beiden Aufrufe von mmap() in Zeile 15 und 17. Woher kommt der Wert 3 im fünften Argument? Welchen Effekt haben die beiden Aufrufe vermutlich? 1,5 Punkte Die 3 ist der File-Descriptor der libc.so.6, wie er in Zeile 11 durch den Aufruf von open() an das Programm zurückgegeben wurde. Durch die beiden mmap()-befehle werden die benötigten Code-Segmente der C-Bibliothek in den Speicher des Prozesses eingeblendet. e) Wie hängen die vorletzte Zeile der ltrace-ausgabe (die mit puts beginnt) und Zeile 35 der strace-ausgabe zusammen? 1 Punkt Die ltrace-ausgabe zeigt den Aufruf der Bibliotheksfunktion puts(), während in der strace-ausgabe der Syscall write() auftaucht. Die puts()-funktion schreibt den übergebenen String mittels write() in den File-Descriptor der Standardausgabe, welcher immer 1 lautet. f) Was bedeutet das Ergebnis der Zeile 29? 1 Punkt 7
8 Dies ist der Rückgabewert des Funktionsaufrufes von mmap (im C-Code in Zeile 14). Er gibt die Speicheradresse an, ab der der Dateiinhalt in den Speicher eingeblendet ist. g) In welchem Speicherbereich (Startadresse, Endadresse) befindet sich also der Inhalt der Datei datei.txt? 1,5 Punkte 0x7f60cf5cd000 bis 0x7f60cf5cd012 Bytes (die Datei enthält 19 Zeichen) h) Was bewirken die Zeilen 30 und 31 der strace-ausgabe? 1 Punkt Die Funktion lseek setzt den Zeiger zum Bearbeiten auf das letzte Byte der Datei. Die Funktion write schreibt genau ein Ausrufezeichen an diese Stelle. i) Wie lautet nach Ausführung des Programmes der Inhalt der Datei datei.txt? 1 Punkt GdI 3 ist toll! :-) 8
Grundlagen der Informatik 3 Wintersemester 09/10. 7. Übung. Abgabe: 12.01. 18.01.2010
Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 7. Übung Abgabe: 12.01. 18.01.2010 1 Präsenzübungen 1.1 Schnelltest a) Ein C-Programm wird kompiliert
MehrGrundlagen der Informatik III Wintersemester 2010/2011
Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, atrik Schmittat 12. Aufgabenblatt 07.02.2011 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen bearbeitet werden.
MehrGrundlagen der Informatik III Wintersemester 2010/2011
Grundlagen der Informatik III Wintersemester 21/211 Wolfgang Heenes, atrik Schmittat 12. Aufgabenblatt mit Lösungsvorschlag 7.2.211 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 9 I/O (2) Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät UNIX I/O UNIX I/O: ähnlich wie Standard-I/O, jedoch File-Deskriptoren
MehrLösungsvorschlag zur 6. Übung
rof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 9/1 Lösungsvorschlag zur 6. Übung 1 räsenzübungen 1.1 Schnelltest a) Caches und virtueller Speicher können
MehrLösungsvorschlag zur 10. Übung
Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 10. Übung 1 Präsenzübungen 1.1 Wissensfragen Versuchen Sie diese Aufgabe erst
MehrSystem Monitoring mit strace. Systemcall tracing
System Monitoring mit strace Systemcall tracing 1 Gliederung Einleitung: Was ist strace Grundlagen zu strace Kernel Kernelspace vs. Userspace Systemcalls ptrace Simple strace (Demo) strace die wichtigsten
MehrTafelübung zu BS 5. Dateioperationen
Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2014/bs/
MehrAssignment #2. Virtueller Speicher Virtual Memory WS 2012/2013 IAIK 1
Assignment #2 Virtueller Speicher Virtual Memory WS 2012/2013 IAIK 1 Organisatorisches:Termine Ab Montag Tutorien 10.12.-14.12. Designdiskussionen 18.12. Abgabe Designdokument 18.1. Abgabe Implementierung
MehrLösungsvorschlag zur 5. Übung
Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 5. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche Aussagen über Caches sind
MehrU23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides
Twix e.v. http://koeln.ccc.de 2016-11-28 Überblick 1 Motivation Was ist Shellcode? Beispiel 2 Einstieg Erzeugen, Testen von Shellcode 3 Der erste Shellcode Strings in Shellcode 4 Nullbytes, NOP Slides
MehrAufgabe 4 : Virtueller Speicher
Sommer 216 Technische Informatik I Lösungsvorschlag Seite 16 Aufgabe 4 : Virtueller Speicher (maximal 27 Punkte) 4.1: Generelle Funktionsweise (maximal 5 Punkte) (a) (1 Punkt) Nennen Sie zwei Gründe, weshalb
MehrTutorium Rechnerorganisation
Woche 11 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
MehrRO-Tutorien 15 und 16
Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 10 am 29.06.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft
MehrFortgeschrittene I/O
Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)
MehrKlausur Betriebssysteme I
Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme I 18.3.2011 Bitte bearbeiten Sie die Aufgaben auf den Aufgabenblättern. Die Benutzung von Unterlagen oder Hilfsmitteln ist nicht erlaubt. Die Bearbeitungszeit
MehrSystemnahe Programmierung in C/C++
Systemnahe Programmierung in C/C++ Signalbehandlung & MMap Knut Stolze stolze@informatik.uni-jena.de Lehrstuhl für Datenbanken und Informationssysteme Fakultät für Mathematik und Informatik 2006 11 29
MehrÜbung 1 - Betriebssysteme I
Prof. Dr. Th. Letschert FB MNI 13. März 2002 Aufgabe 0: Basiswissen Rechnerarchitektur: Übung 1 - Betriebssysteme I Aus welchen Komponenten besteht ein Rechner mit Von-Neumann Architektur? Was sind Bits
MehrEinschub: HW-Zugriff aus dem Userspace
Einschub: HW-Zugriff aus dem Userspace Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2010/2011 Einschub: HW-Zugriff aus dem
MehrKlausur Betriebssysteme I
Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme I 14.3.2008 Bitte bearbeiten Sie die Aufgaben auf den Aufgabenblättern. Die Benutzung von Unterlagen oder Hilfsmitteln ist nicht erlaubt. Die Bearbeitungszeit
Mehr, 2014W Übungsgruppen: Mo., Mi.,
VU Technische Grundlagen der Informatik Übung 7: Speichermanagement 183.579, 2014W Übungsgruppen: Mo., 12.01. Mi., 14.01.2015 Aufgabe 1: Cache-Adressierung Ein Prozessor mit einer Adresslänge von 20 Bit
MehrEine Mini-Shell als Literate Program
Eine Mini-Shell als Literate Program Hans-Georg Eßer 16.10.2013 Inhaltsverzeichnis 1 Eine Mini-Shell 1 1.1 Einen Befehl parsen......................... 2 1.2 Was tun mit dem Kommando?...................
MehrPROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN
PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 3. UNIX/Linux-Dateisysteme und zugehörige Systemaufrufe und Kommandos (Teil I) Wintersemester 206/7 UNIX/Linux-Dateisystem(e) Systemaufrufe zur Dateiarbeit:
MehrBesprechung des 9. Übungsblattes Virtuelle Speicherverwaltung Aufgaben
Themen heute Besprechung des 9. Übungsblattes Virtuelle Speicherverwaltung Aufgaben Besprechung des 9. Übungsblattes Aufgabe 2 Ist in einer Aufgabe wie hier keine explizite Wortbreite angegeben, nicht
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
MehrTechnische Informatik 1 - Übung & 22. Dezember Philipp Miedl
Technische Informatik 1 - Übung 11 21. & 22. Dezember 2017 Philipp Miedl Philipp Miedl 21.12.2017 22.12.2017 1 Motivation Aufteilen des Hauptspeichers auf mehrere Prozesse Philipp Miedl 21.12.2017 22.12.2017
MehrBetriebssysteme. Wie geht das? Andreas Galauner SigInt 2010
Betriebssysteme Wie geht das? Andreas Galauner SigInt 2010 Was ist ein Betriebssystem? DIN 44300: "Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften dieser Rechenanlage die
MehrVirtueller Speicher und Memory Management
Virtueller Speicher und Memory Management Speicher-Paradigmen Programmierer ein großer Adressraum linear adressierbar Betriebssystem eine Menge laufender Tasks / Prozesse read-only Instruktionen read-write
MehrProbeklausur Name: (c)
Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume
MehrMichael Dienert. 8. Dezember 2016
C für Unverdrossene Michael Dienert 8. Dezember 2016 Vorbemerkung Natürlich könnte ich als erstes C-Programm Hello World nehmen. Um mit dem Kompiler zu spielen, kann man aber auch gleich einen sinnvolleren
MehrOrganisatorisches. Übungsleiter: Karsten Otto Homepage: Aufgaben
Organisatorisches Übungsleiter: Karsten Otto (otto@inf.fu-berlin.de) Homepage: http://www.inf.fu-berlin.de/lehre/ss04/sysi/ Aufgaben Montags im Netz Vorbesprechung Dienstag/Mittwoch in den Übungen Abgabe
MehrKonzepte von Betriebssystemkomponenten Referat am Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner
Konzepte von Betriebssystemkomponenten Referat am 24.11.2003 Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner Gliederung Adressräume Page Faults Demand Paging Copy
MehrEchtzeitbetriebssysteme
Speicherverwaltung (Memory Management) Aufgaben der Memory-Management-Unit ist l der Speicherschutz und l die Adressumsetzung Wird durch Hardware unterstützt l Memory Management Unit (MMU) l MMU wird vom
MehrLösungsvorschlag zur 3. Übung
Prof Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik Wintersemester 09/10 1 Präsenzübungen 11 Schnelltest Lösungsvorschlag zur Übung a) Welche der folgenden Aussagen entsprechen
MehrTechnische Informatik 1 - HS 2017
Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2017 Übung 11 Datum: 21. 22. 12. 2017 Virtueller Speicher 1 Performanz Gehen Sie von einem virtuellen
MehrVorlesung: Rechnerstrukturen, Teil 2 (Modul IP7)
Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) J. Zhang zhang@informatik.uni-hamburg.de Universität Hamburg AB Technische Aspekte Multimodaler Systeme
MehrKlausur Betriebssysteme
Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme 5.2.2016 Die Dauer der Klausur beträgt 90 Minuten. Es sind keine Unterlagen und Hilfsmittel erlaubt. Bitte bearbeiten Sie die Aufgaben soweit wie
MehrPeter Prinz. Das Übungsbuch. CTestfragen und Aufgaben mit Lösungen
Peter Prinz Das Übungsbuch CTestfragen und Aufgaben mit Lösungen Grundlagen Dieses Kapitel enthält grundlegende Fragen und Aufgaben zur Erstellung von C-Programmen. Hierzu gehören folgende Themen: Header-Dateien
MehrEinführung in die Systemprogrammierung
Einführung in die Systemprogrammierung Der Binder Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 28. Mai 2015 Herausforderungen durch große Programme Große Programme: die meisten
MehrLösungsvorschlag zur 8. Übung
Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 8. Übung 1 Bonuspunkteübungen Diese Übungen werden nicht in den Präsenzübungen
MehrFreispeicherverwaltung
Freispeicherverwaltung Allgemeine Techniken und Anwendung unter Linux Martin Wahl, 17.11.03 Freispeicherverwaltung 1 Überblick Allgemeines Suchstrategien Verwaltungsstrategien externer / interner Verschnitt
MehrLinker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft
Prozeß: drei häufigste Zustände Prozeß: anatomische Betrachtung jeder Prozeß verfügt über seinen eigenen Adreßraum Sourcecode enthält Anweisungen und Variablen Compiler überträgt in Assembler bzw. Binärcode
MehrCache Grundlagen. Schreibender Cache Zugriff. SS 2012 Grundlagen der Rechnerarchitektur Speicher 22
Cache Grundlagen Schreibender Cache Zugriff SS 212 Grundlagen der Rechnerarchitektur Speicher 22 Eine einfache Strategie Schreibt man nur in den Cache, werden Cache und darunter liegender Speicher inkonsistent.
MehrWie groß ist die Page Table?
Wie groß ist die Page Table? Im vorigen (typischen) Beispiel verwenden wir 20 Bits zum indizieren der Page Table. Typischerweise spendiert man 32 Bits pro Tabellen Zeile (im Vorigen Beispiel brauchten
MehrMalware-Analyse und Reverse Engineering. 10: Systemaufrufe und Tracing Prof. Dr. Michael Engel
Malware-Analyse und Reverse Engineering 10: Systemaufrufe und Tracing 1.6.2017 Prof. Dr. Michael Engel Überblick Themen: Systemaufrufe in Linux Verfolgen von Systemaufrufen: strace/ptrace Verhaltensanalyse
MehrZwei Möglichkeiten die TLB zu aktualisieren
Zwei Möglichkeiten die TLB zu aktualisieren Die MMU kümmert sich um alles (Hardware-Lösung) sucht die p-entry wenn diese nicht da ist, behandelt direkt das TLB-miss zum Schluss wird die neue p-entry (virt
Mehr2Binden 3. und Bibliotheken
3 Vom C-Programm zum laufenden Prozess 3.1 Übersetzen - Objektmodule 1Übersetzen 3. - Objektmodule (2) Teil III 3Vom C-Programm zum laufenden Prozess 2. Schritt: Compilieren übersetzt C-Code in Assembler
MehrKlausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert
MehrZeiger in C und C++ Zeiger in Java und C/C++
1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,
MehrÜbungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 9 und Präsenzaufgaben Übung 10
Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 9 und Präsenzaufgaben Übung 10 Dominik Schoenwetter Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität
MehrTechnische Informatik II Rechnerarchitektur
Technische Informatik II Rechnerarchitektur MMIX-Crashkurs Matthias Dräger, Markus Rudolph E-Mail: mdraeger@mi.fu-berlin.de rudolph@mi.fu-berlin.de www: tinyurl.com/mmix2010 www.matthias-draeger.info/lehre/sose2010ti2/mmix.php
MehrÜbung zu Betriebssystemtechnik
Übung zu Betriebssystemtechnik Paging in StuBSmI 14. Mai 2018 Andreas Ziegler Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte Systeme
MehrMikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen
Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)
MehrUlrich Stein
Von C nach MATLAB Einführung in MATLAB für Personen mit C-Kenntnissen Datentypen ähnlich in C und MATLAB, dort aber automatische Typzuweisung möglich double a = 2; Arrays a = double( 2 ); aber auch a =
MehrHinweise C-Programmierung
Hinweise C-Programmierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2016/2017 V. Sieh Hinweise C-Programmierung
Mehr8.1 Vom Quellcode zur ausführbaren Programm
8. Die Umgebung von C- 8.1 Vom Quellcode zur Programmausführung 8.2 Präprozessor-Anweisungen 8.3 Compiler, Assembler, Binder 8.4 Das Make-Utility 8.5 Datenübergabe vom und zum Betriebssystem 8-1 8.1 Vom
MehrK Ergänzungen zur Einführung in C
K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K.1 Zeiger, Felder und Zeichenketten Zeichenketten sind Felder von Einzelzeichen (char), die in der internen Darstellung durch ein \0
MehrKonzepte von Betriebssystemkomponenten
Konzepte von Betriebssystemkomponenten Systemstart und Programmausführung Seminarvortrag 15.12.2003, Michael Moese Übersicht 2. Systemstart 3. Programmausführung TEIL 1: Systemstart 1.1 Das BIOS 1.2 Der
MehrÜbungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
MehrBetriebssysteme BS-S SS Hans-Georg Eßer. Foliensatz S: Speicherverwaltung. Dipl.-Math., Dipl.-Inform. v1.0, 2015/04/14
BS-S Betriebssysteme SS 2015 Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. Foliensatz S: Speicherverwaltung v1.0, 2015/04/14 Betriebssysteme, SS 2015 Hans-Georg Eßer Folie S-1 Übersicht: BS Praxis und BS
MehrSpeicher- und Cacheverwaltung unter Linux. Ralf Petring & Guido Schaumann
Speicher- und Cacheverwaltung unter Linux Ralf Petring & Guido Schaumann Übersicht Virtueller Adressraum Virtuelle Speicheraufteilung Reale Speicheraufteilung Speicherverwaltung Speicherzugriff Auslagerungsstrategien
MehrWarum funktioniert das nicht? Wie man Fehler in Linuxapplikationen findet und behebt. Einführung. LinuxFocus article number 343 http://linuxfocus.
LinuxFocus article number 343 http://linuxfocus.org Warum funktioniert das nicht? Wie man Fehler in Linuxapplikationen findet und behebt by Guido Socher (homepage) About the author: Guido mag die Möglichkeiten,
MehrBetriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)
Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/
MehrEinführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009
Einführung Übungen zur Vorlesung Virtuelle Maschinen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SoSe 2009 Übungsaufgaben 1 Entwickeln
Mehr5. Aufgabenblatt Speicherverwaltung
Faculty of Computer Science Institute for System Architecture, Operating Systems Group Betriebssysteme und Sicherheit, WS 0/. Aufgabenblatt Speicherverwaltung Geplante Bearbeitungszeit: drei Wochen Aufgabe.
MehrProgrammiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1
Programmiertechnik 1 Unit 12: Programmiersprache C - Betriebssystemschnittstellen Andreas Polze 1 Ablauf Zugriff auf Betriebssystemdienste Dateideskriptoren low-level I/O read and write open, creat, close,
MehrBeispiel 3. Shared Memory und Explizite Synchronisation. Daniel Prokesch. 27. April 2015. Überblick. Shared Memory. Semaphore. Ressourcenverwaltung
3 e 3 und Explizite Synchronisation Daniel Prokesch Institut für Technische Informatik Technische Universität Wien 27. April 2015 1 2 3 e Bisher betrachtet... Implizite Synchronisation Blockierende Lese-
MehrHomogene Multi-Core-Prozessor-Architekturen
Homogene Multi-Core-Prozessor-Architekturen Praktikum Parallele Rechnerarchitekturen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2009
MehrRO-Tutorien 17 und 18
RO-Tutorien 17 und 18 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery TUTORIENWOCHE 12 AM 19.07.2012 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der
MehrTeilprüfung Software- und Internettechnologie Programmierkurs 2 Wintersemester 2004/2005
Universität Mannheim Fakultät für Mathematik und Informatik Lehrstuhl für Praktische Informatik IV Prof. Dr. Wolfgang Effelsberg Teilprüfung Software- und Internettechnologie Programmierkurs 2 Wintersemester
MehrKlausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 15 Pkt.) Was liefert
MehrProseminar Konzepte von Betriebssystem- Komponenten (KVBK) Vortrag zum Thema: Speicheraddressierung, Segmentierung, Paging
Proseminar Konzepte von Betriebssystem- Komponenten (KVBK) Vortrag zum Thema: Speicheraddressierung, Segmentierung, Paging Grundlegende Bedeutung von Speicheradressierung: Wie sind die Daten auf Dem Speicher
MehrTechnische Informatik 1
Technische Informatik 1 7 Prozesse und Threads Lothar Thiele Computer Engineering and Networks Laboratory Betriebssystem 7 2 7 3 Betriebssystem Anwendung Anwendung Anwendung Systemaufruf (syscall) Betriebssystem
MehrSchreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).
Schreiben von Pages Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen). Write Through Strategie (siehe Abschnitt über Caching) ist hier somit nicht sinnvoll. Eine sinnvolle
MehrÜbungen zu Systemprogrammierung 1
Übungen zu Systemprogrammierung 1 Ü1-2 Speicherverwaltung Sommersemester 2018 Christian Eichler, Jürgen Kleinöder Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl
MehrModul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 4 SS 2016
MehrSpeicherverwaltung in Minix
Speicherverwaltung in Minix Speicher-Layout ausführbare Datei wird in Speicher geladen a.out-header bestimmt Gesamt-Speicherplatz Resultat: Gap zwischen Stack- und Daten-Segmenten Segment-Liste (kombinierte
MehrÜbungen zu Systemprogrammierung 1 (SP1)
Übungen zu Systemprogrammierung 1 (SP1) Ü1-2 Speicherverwaltung Andreas Ziegler, Stefan Reif, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität
MehrTafelübung zu BS 4. Dateioperationen
Tafelübung zu BS 4. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2013/bs/
MehrC++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung
MehrIn heutigen Computern findet man schnellen/teuren als auch langsamen/billigen Speicher
Speicherhierarchie In heutigen Computern findet man schnellen/teuren als auch langsamen/billigen Speicher Register Speicherzellen, direkt mit der Recheneinheit verbunden Cache-Speicher Puffer-Speicher
MehrKlausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Geben
MehrÜbung Praktische Informatik II
Übung Praktische Informatik II FSS 2009 Benjamin Guthier Lehrstuhl für Praktische Informatik IV Universität Mannheim guthier@pi4.informatik.uni-mannheim.de 22.05.09 11-1 Heutige große Übung Ankündigung
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
MehrAufgabenblatt 5 Musterlösung
Prof. Dr. rer. nat. Roland Wismüller Aufgabenblatt 5 Musterlösung Vorlesung Betriebssysteme I Wintersemester 2017/18 Aufgabe 1: Implementierung von Threads (Bearbeitung zu Hause) Der größte Vorteil ist
MehrBetriebssysteme Übung 2. Tutorium System Calls & Multiprogramming
Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Task Wiederholung 1 System SysCalls (1) Wozu? Sicherheit Stabilität Erfordert verschiedene modes of execution: user mode privileged mode
MehrSystemprogrammierung
Systemprogrammierung 3Vom C-Programm zum laufenden Prozess 6. November 2008 Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2008 SS 2006 SOS 1 (03-Pro.fm 2008-11-06 08.52) 3 Vom C-Programm
Mehré Er ist software-transparent, d.h. der Benutzer braucht nichts von seiner Existenz zu wissen. Adreßbus Cache- Control Datenbus
4.2 Caches é Cache kommt aus dem Französischen: cacher (verstecken). é Er kann durch ein Anwendungsprogramm nicht explizit adressiert werden. é Er ist software-transparent, d.h. der Benutzer braucht nichts
MehrLinux Paging, Caching und Swapping
Linux Paging, Caching und Swapping Inhalte Paging Das Virtuelle Speichermodell Die Page Table im Detail Page Allocation und Page Deallocation Memory Mapping & Demand Paging Caching Die verschiedenen Caches
MehrPropädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik
MehrBetriebssysteme 1 BS1-F SS Prof. Dr.-Ing. Hans-Georg Eßer Fachhochschule Südwestfalen
BS1-F Betriebssysteme 1 SS 2016 Prof. Dr.-Ing. Hans-Georg Eßer Fachhochschule Südwestfalen Foliensatz F: Speicherverwaltung, Paging Speichernutzung unter Linux v1.0, 2016/06/15 15.06.2016 Betriebssysteme
MehrDateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien
Informatik I SS 2003 Dateioperationen 1 Textdateien, Öffnen Abspeichern und Einlesen von Texten (Strings) in Dateien 1. Das Öffnen einer Datei a) Deklaration eines Zeigers auf eine Datei FILE *pfile; b)
MehrÜbungspaket 25 Kommandozeilenargumente
Übungspaket 25 Kommandozeilenargumente Übungsziele: Skript: 1. Umgang mit argc/argv 2. argc/argv als Schnittstelle von Programm und Betriebssystem 3. Vereinfachtes Testen mit argc/argv Kapitel: 51 und
Mehr