Systemcalls (Systemaufrufe) Nina, Helen & Nicole proudly present: Systemcalls (Systemaufrufe)
Gliederung 1.1.1. Exception 1. Definitionen 1.1. Interrupt 1.1.2. Hardware-Interrupt 1.1.3. Software-Interrupt 1.2. Systemcall 1.2.1. Unix – Schalenmodell 1.2.2. Definition Systemcall 1.2.3. 5 Bereiche 2. Schematischer Ablauf 3. Beispiele 3.1. ausführlich: creat 3.2. weitere Beispiele
Gliederung 1.1.1. Exception 1. Definitionen 1.1. Interrupt 1.1.2. Hardware-Interrupt 1.1.3. Software-Interrupt 1.2. Systemcall 1.2.1. Unix – Schalenmodell 1.2.2. Definition Systemcall 1.2.3. 5 Bereiche 2. Schematischer Ablauf 3. Beispiele 3.1. ausführlich: creat 3.2. weitere Beispiele
= Unterbrechung des aktuellen Prozesses durch CPU Interrupt = Unterbrechung des aktuellen Prozesses durch CPU Unterteilung in : Exception Hardware – Interrupt Software – Interrupt
Hardware – Interrupt
Software – Interrupt = gewollte Unterbrechung des laufenden Progammes, weil Kernel wichtige Funktionen ausführen soll - Software – Interrupt wird durch prozessortypabhängige Befehle (Systemcalls) ausgelöst
Gliederung 1.1.1. Exception 1. Definitionen 1.1. Interrupt 1.1.2. Hardware-Interrupt 1.1.3. Software-Interrupt 1.2. Systemcall 1.2.1. Unix – Schalenmodell 1.2.2. Definition Systemcall 1.2.3. 5 Bereiche 2. Schematischer Ablauf 3. Beispiele 3.1. ausführlich: creat 3.2. weitere Beispiele
Unix Schalenmodell – Systemstruktur Anwenderprogramme nroff sh who cpp Kernel a.out comp Systemcalls Hardware as date Systemmode ld wc vi grep ed Usermode
Systemcalls = Anfrage an den Kernel - Programme fordern per Systemcall Dienstleistungen vom Kernel an - definiert Schnittstelle zwischen Kernel und Benutzerprogramm
5 Bereiche der Systemcalls 1. Prozessverwaltung fork, exit, exec 2. Speicherverwaltung brk, mmap, munmap 3. Dateiverwaltung open, read, write 4. Geräteverwaltung io_ctl 5. Kommunikation kill, pipe
Gliederung 1.1.1. Exception 1. Definitionen 1.1. Interrupt 1.1.2. Hardware-Interrupt 1.1.3. Software-Interrupt 1.2. Systemcall 1.2.1. Unix – Schalenmodell 1.2.2. Definition Systemcall 1.2.3. 5 Bereiche 2. Schematischer Ablauf 3. Beispiele 3.1. ausführlich: creat 3.2. weitere Beispiele
Systemebenen User- Anwendungen Bibliotheken Benutzerstack Benutzerebene Usermode Trap PSR Mehr- zweck- register weitere Register Tabel- len System- stack Systemebene Kernel Systemmode Hardware-Steuerung Hardware Prozessor etc.
BENUTZEREBENE - USERMODE User-Anwendungen Benutzerstack . . . 204 mode Angabe (Oktal 666) 1b6 Adresse von name 6a Rückkehradresse creat(name, 0666); SYSTEMCALL
BENUTZEREBENE - USERMODE SYSTEMEBENE - SYSTEMMODE Bibliothek Mehrzweckregister Nr … 58 Befehl … ;ASM .CODE BEGINN MOV JSR JMP . exit 1 … 7e fork 2 142 8 read 3 . … 80 . . 13c … . TRAP … 146 create 8
TRAP PSR BENUTZEREBENE - USERMODE Softwareinterrupt TF 1 15 DF IF TF SF ZF AF PF CF PSR 1 15 SYSTEMEBENE - SYSTEMMODE
SYSTEMEBENE - SYSTEMMODE BENUTZER- EBENE – USERMODE SYSTEMEBENE - SYSTEMMODE Benutzerstack Register Tabelle Mehrzweckregister . . funktion0(); . … 58 … funktion1(); 1 funktion2(); 2 … … 7e 204 funktion3(); 3 1b6 U-Bereich funktion4(); 4 142 8 funktion5(); 5 204 funktion6(); 6 … 80 6a 1b6 funktion7(); 7 13c … funktion8(); 8 funktion9(); 9 146 … funktion10(); 10 funktion11(); 11
SYSTEMEBENE - SYSTEMMODE ;Ken Thompson 1969 ; .STACK 1000H .DATA VARA DW1; VARB DW2; .CODE BEGINN MOV AX,@DATA; MOV AX,VARA; ADD AX,VARB, … END BEGIN; 1 0 11 0 1 00 1 1 101 11 0 010 110 1 0 100 Hardware Prozessor
SYSTEMEBENE - SYSTEMMODE Register Mehrzweckregister … … 58 … … 7e U-Bereich 142 8 204 … 80 1b6 13c 0x800CCC6F … 146 1 Fehlerfeld OF CF CF DF IF TF SF ZF AF PF PSR 1 15
? BENUTZEREBENE - USERMODE User-Anwendungen Benutzerstack Bibliothek . Nr ;ASM .CODE BEGINN MOV JSR JMP . Befehl exit 1 204 fork 2 1b6 read 3 . creat(name, 0666); 6a . I . ? . creat Returncode = 0 8 SYSTEMEBENE - SYSTEMMODE OF DF PF CF IF TF SF ZF AF PSR
? BENUTZEREBENE - USERMODE User-Anwendungen Mehrzweckregister Bibliothek … 58 Befehl Nr ;ASM .CODE BEGINN MOV JSR JMP . … 7e exit 1 142 8 fork 2 … 80 read 3 . 13c 0x800CCC6F -1 creat(name, 0666); . ? 146 … . ? . creat Returncode = -1 8 errno 0x800CCC6F SYSTEMEBENE - SYSTEMMODE CF OF DF IF TF SF ZF AF PF PSR 1
… BENUTZEREBENE - USERMODE errno User-Anwendungen 2 Returncode = -1 0x800CCC6F User-Anwendungen errno Makro error message 1 3 4 … 19 20 23 24 25 EPERM ENOENT ESRCH EINTR … ENODEV ENOTDIR ENFILE EMFILE ENOTTY Permission No such file or directory No such process interrupted system call … No such device Not a directory ... File table overflow Too many open files Not a typewriter 2 creat(name, 0666); gmake[1]: *** [libswt- gnome-gtk-3063.so] Error 1 gmake[1]: Leaving directory`/usr/ports/ java/eclipse/work/plugins /org.eclipse.swt/Eclipse SWT PI/gtk/library' gmake: *** [libswt] Error 2 *** Error code 2 Returncode = -1
Gliederung 1.1.1. Exception 1. Definitionen 1.1. Interrupt 1.1.2. Hardware-Interrupt 1.1.3. Software-Interrupt 1.2. Systemcall 1.2.1. Unix – Schalenmodell 1.2.2. Definition Systemcall 1.2.3. 5 Bereiche 2. Schematischer Ablauf 3. Beispiele 3.1. ausführlich: creat 3.2. weitere Beispiele
Systemcall creat char name[]=„file“; main { int fd; Ausschnitt aus C-Programm char name[]=„file“; main { int fd; fd = creat(name, 0666); }
Teil des Assemblercodes für Motorola 68000
Weitere Beispiele open(<dateiname>,<art>) öffnet eine vorhandene Datei mit angegebener Benutzungsart read(<filehandle>,<puffer>,<puffergröße>) liest Datei ein, mit angegebener Anzahl an Bytes write(<filehandle>,<puffer>,<puffergröße>) schreibt angegebene Anzahl an Bytes in spezifizierte Datei
ENDE