04_BS_Systemaufrufe_Interrupts_tmp_27d877d80c333b85383e71e7b273aa52.pdf
Document Details
Uploaded by RevolutionaryFern2779
Hochschule Esslingen
Tags
Related
Full Transcript
Betriebssysteme (BS) Prozesse & Threads, Systemaufrufe & Interrupts Prof. Dr.-Ing. Rainer Keller Prof. Dr. Tobias Heer Email: [email protected] 1 Überblick Wiederholung Prozesse & Threads Systemcalls unter Linux Interrupts Übung mit Linu...
Betriebssysteme (BS) Prozesse & Threads, Systemaufrufe & Interrupts Prof. Dr.-Ing. Rainer Keller Prof. Dr. Tobias Heer Email: [email protected] 1 Überblick Wiederholung Prozesse & Threads Systemcalls unter Linux Interrupts Übung mit Linux Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 2 Lernziele Prozesse & Threads verstehen Systemaufrufe verstehen Dabei User-/Kernel-Mode verstehen Software- von HW Interrupts unterscheiden können. Beides unter Linux kennenlernen Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 3 Betriebssystem: Definition 2/2 Was ist ein Betriebssystem ? „Ein Betriebssystem ist eine Software, die auf effiziente Weise die Komplexität eines Computers vor dem Benutzer und dem Programmierer versteckt und einer Gruppe von Benutzern und Programmen gemeinsamen, sicheren Zugriff auf Rechen-, Speicher-, Kommunikationsmittel zur Verfügung stellt.“ Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 4 Wiederholung C Programme übersetzen Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 5 Wie Compiler arbeiten Ein Compiler übersetzt einen Byte String in einen anderen; oder besser: Von (menschenlesbarer) Sprache in Binärrepräsentation der CPU: gcc –Wall –O2 –o app app.c # All Warnings, Optimization s's Gcc ruft den C-Präprozessor cpp, include (IJs -I app.c - defines sie. welcher alle #defines und includes gcc #include Header textuell ersetzt Gcc übersetzt C code in den Maschinen- finess app.E Assembler der Zielarchitektur, d.h. cpp Instruktionen (Mnemoics) im Format des Ziel Assembler (Intel oder ATT) Teil GNU Compiler Collection app.S Der Assembler generiert binäre Objektdateien daraus E pisip? as - compiler - HDD Chipsatz USB controller X99 vielenprozzen und Therad. fürBetriebssysteme jeder Prof. - Systemcalls & Interrupts prozzen Dr.-Ing. Rainer ist die Speiche etc-Zuweisen Keller, Hochschule Esslingen und wiedweg 8 Kennen Sie ? nicht Welche SWRessore kann die prozzes einfache wegnehmen. Java ( , x wor BS: Abstraktion der HW 2/3 Subsystem - couau Klassifikation von Ressourcen: : Sw Anwendungsprogramme - : Grafische Benutzeroberfläche Bibliothek Z.B. HW- undSound SW-Ressource Karte Teile siche in , System-nahe Programme 9 5-CPU. Entziehbar / Nicht entziehbar · Bibliothek Speichern Hauptspeiche. in EZwischen zu. Audio Apps Bibliotheken. Exklusiv / Gemeinsam nutzbar æ Kart- E Speicher- Task- Beispiele für Ressourcen?Grafikkar Zwischen subsystem scheduler. CPU-Hauptspeicher Druckerspeiche Netzwerk-Datei , IPC- Das BS regelt den konfliktfreien subsystem subsystem subsystem Zugriff auf Ressourcen >OBS Software Betriebssystem Treiber Oft verwendet das BS Hardware RAM gemeinsamnatz verschiedene Scheduling- Exklusiv & GPU 3 Dar CPU Algorithmen für Zuteilung s - Dabei sind versch. Subsysteme HDD Chipsatz des Kernels involviert! : controller X99 USB Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 9 Entziehbau : CPu , Grafikspeichen , Nicht Entzichhal : Scanner Mit P - B Drucker. ~ · ~ ** mit dem Scanner kann man nicht Zwei papier scannen man muss Warten bis , CPr die erst prozess fertigiet , aber Kann man es unterbrechen um ander prozessor zu machen. BS: Abstraktion der HW 3/3 · Für das Betriebssystem ist jede frori -b... e Anwendung 1 einzelner Prozess. Diese Prozesse laufen e & 4 unabhängig voneinander U ↳ A von einander geschützt d sind Prozesse laufen im User-Space. Das Betriebssystem läuft im Kernel-Space Software Betriebssystem Treiber Nur das erlaubt perfekten Hardware RAM Schutz zwischen Prozessen GPU CPU Dieser Schutz funktioniert nur HDD Chipsatz USB mittels CPU Unterstützung controller X99 Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 10 instruktionen. % 8 S Systemcalls 1/2B Dateioffnnen z. aufrufen. in Jeder Prozess kann über Systemcalls - ~ Funktionalität des BS aufrufen ⑳ & O Diese Instruktionen laufen im Kernel- & & Space. stem ↓ * Einige Beispiele für (Unix) API wären die Calls: system call Interface open: Öffnen einer Datei ↓ ↓ ↓ ↳ read: Lesen aus einem Dateideskriptor sös8 copie clone: repliziert den aufrufenden Software Betriebssystem Treiber i. S Prozess, d.h. es läuft eine weitere Hardware -58 Kopie des Prozesses RAM & gettimeofday: Zeit (im vDSO)E GPU CPU Mit dem Tool SystemTrace: HDD Chipsatz strace./app was macht mein prozess controller X99 USB lassen sich alle Systemcalls tracen! - * 3 * Ös. -- Betriebssysteme - Systemcalls & Interrupts Ei 11 Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen ~Seib - ! - E -. Systemcalls 2/2 Was schätzen, wie viele Systemfunktionen stellt Linux zur Verfügung? 64 Bit) ! der Zeit 450 (x86-64 d h Recherchen : ,. Nach meinen (s. arch/X86/ include/generated/asm/syscalls-64. 4). Keepit simple close Write read, open , , , Was schätzen wie viele Systemfunktionen stellt Win64 zur Verfügung? Tausend (wobei GUlfK sind) Einge hier. dabei sind es 494 Der Windows-Kern an Sich : Wiki Eintrage · eax : regester von prozess..1- Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 12 Der alte Weg in Linux einen Systemcall aufzurufen Damit eine Anwendung einen Systemcall aufruft, muss(te) sie folgende J Instruktionssequenz ausführen: regester prese (hier den Systemcall um die Prozess-ID pid des Prozesses rauszufinden) von - In C: In Assembler: ↑ prozesse. PID = getpid(); oder mit Linux Definitionen: D movl 0x27, %eax int $0x80 PID = syscall(SYS_getpid); L Dann trap" wie id Kernel jetzt. das EAX Regist es auf die ↑ mittels Interrupts-Gate - via Nummer das Systemcalls Vektor 39(0x27) des Interrupts getpid() : Nummer 128 (0x80). mit Nummer E Linux verwendet(e) also für den Wechsel von User- in den Kernel-Space sogenannte Software-Interrupts! Dieser Wechsel heißt O Trap (engl. für Falle) - CPH Ensführung Interrupts „unterbrechen“ den Prozessor... ~ deProzess Betriebssysteme - Systemcalls & Interrupts es Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen lij 13 User-space ↑ Prozess P Kernel space ↳ der Kernel-space ist das BS im die prozesses die für libling Ressourcen zuteilen. Interrupts verwendt oft und das BS schuedling Allgorith O der linux verwendet für Weschel von Usenspace- die ↳ für Dabei sind die Zuteilung.. versch Sub system in den Kernelspace im Kernel involviert - - die so gennanten "Software interrupts Betriebssysteme - Systemcalls & Interrupts 1 Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 14 · es s Di 91.. Interrupt Klassifikation Hoproduziert Zeit Stran Asynchrone Interrupts. - Interrupt Klassen ↑ system calle spring in Kurze und Synchrone Interrupts gibmin was (nicht vorhersehbar und auch (vorhersehbar und auch wieder -. nicht reproduzierbar) reproduzierbar) von Hu Wiss werden von prozzeso(put. Fehler selbs erzegnt. Bs Testat erzeugt.. Exceptions/ Systemcalls/SW- - Ch m Prozessor-Interrupts Ma Interrupt int 0x80 - - prozessse - - - & Speis , Kernel & - < = 8. I C Unterbrechung vor der Kernel · _. Faults Fankt - Ausführung, z.B.& PageFault - -. -ï - Unterbrechung nach der C - &51 Kernelis S e Traps Ausführung, z.B. Div0 -> - - - G - - - --- I Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 15 Interrupt Klassifikation am Beispiel Intel: Bei Um Unterscheidung Interrupt/Exception zu untermauern: Wie alle CPU-Hersteller liefert auch Intel eine Doku: Quelle: Intel 64 and IA-32 Architectures Software Developer‘s Manual Kapitel 6.4, Seite 147 Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 16 To - HW-Interrupts Zwei Methoden des OS zur Kommunikation mit HW: E » Polling: Das OS fragt die HW periodisch nach neuen Daten < &. :&5 » Interrupts: Die HW meldet sich und unterbricht die CPU! = ~--(p0 5 ~ ---. RAM · 3 5.3 3 nat eineodemehre. , ! GPU CPU Interrupt-Leitung !!! interrupts. - - - ŒÑï Testatur HDD Chipsatz USB controller X99 st i E ·.& // ~ & Ei Ein moderner Intel x86-64 kann viele (>100) HW- Interruptquellen unterscheiden. Dies schauen wir uns gleich an. Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 17 Interrupts unter Linux Die seit Systemstart gezählten Interrupts liegen unter /proc/interrupts (s. kernel/irq/proc.c) - me nur Die folgende Information ist sichtbar: Welche CPUs (cores) welchen Interrupt bedienen? Hier 1 CPU Int# Den Namen des Treibers Die (durch VM-emulierte) Schnittstelle: APIC: Advanced Programmable Interrupt Controller interpleissic - s Chrom. CPU s. Powerpoint, s S Architektur- · abhängige Interrupts ~ E Information zu einzelnen Interrupt- Typen, bspw. wie häufig Interrupts wg. PMI aufgetreten sind. Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 18 HW-Interrupts Ablauf Ablauf (vereinfacht): 1. Ein Gerät meldet Interrupt über Interrupt-Leitung & - 2. Der Mikroprozessor wird unterbrochen schreite 3. Die ausgeführte Anwendung bemerkt davon nichts # (außer, daß Sie evtl. etwas verzögert reagiert) ⑬ - uno · 4. Eine Interrupt-Behandlungsroutine (Interrupt Service Routine, kurz ISR) liest Daten (in BS-internen Puffer) & Es 5. BS springt in die unterbrochene Anwendung zurück wirdnangestarten.. 6. Periodisch muss der BS-interne Puffer kopiert werden 7. Wartet die Anwendung auf die Daten (bspw. Daten von der Festplatte) können diese gelesen werden. Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 19 HW-Interrupts Besonderheiten - CPU kann weitere Interrupts „maskieren“ und damit deaktivieren, um nicht bei der Abarbeitung des derzeitigen Interrupts gestört zu werden (fatal wäre eine Rekursion!) Bestimmte HW-Interrupts sind nicht maskierbar ↓ (bspw. Memory Errors ECC, Power - failure) Interrupts können eine Priorität besitzen, sodaß hoch-priore Time Interrupts andere ISRs unterbrechen. CPU HWüberwachung a , , interrupts. Generell sollten die ISR-Routinen so schnell wie möglich beendet sein! ab bspw. Apple Mac OSX Lion 10.7 (ca. 2011-2013): die Behandlung des Tastatur- 3 - Interrupts schaltete die Tastatur-Beleuchtung ein – dies störte latenz-sensitive Audio- Anwendung heftig! · 25- mit T. Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 20 Systemcalls und privilegierter Kernel- ↓ Space Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 21 Systemcalls aufrufen (Intel Architektur) 1/3 E Der Intel 80386 bietet den Software-Interrupt zum Sprung in den i - privilegierten Kernel Modus... welche privileg-Level hat Linux ? Kernel -Space. 7 - / & User-Space. _ In Assembler: movl 0x27, %eax int $0x80 Oder...? Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 22 & Systemcalls aufrufen (Intel Architektur) 2/3 ( Der Soft-Interrupt int 0x80 ist „langsam“ Ab 80586 gibt es die schnellere Instruktion sysenter Für den 64-bit Modus braucht es wiederum eine neue Instruktion: syscall und zum Rückspringen sysret er ( 1 Jeder instruktion hat einen ' he ×. A Op Code und Beschreibung in welchem Modus sie gültig ist Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 23. Systemcalls aufrufen (Intel Architektur) 3/3 Dazu werden die prozessorinternen Schritte gelistet: Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 24 Durchschnaufen Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 25 - &S Wiederholung:. Systemcall aufrufen Damit eine Anwendung einen Systemcall aufruft, muss(te) sie folgende Instruktionssequenz ausführen: (hier den Systemcall um die Prozess-ID pid rauszufinden) In C: In Assembler: PID = getpid(); movl 0x27, %eax oder mit Linux Definitionen: int $0x80 PID = syscall(SYS_getpid); ↑ Linux verwendet(e) also für den Wechsel von User- in den Kernel-Space sogenannte Software-Interrupts! Dieser Wechsel heißt Trap (engl. für Falle) Interrupts „unterbrechen“ den Prozessor... Betriebssysteme - Systemcalls & Interrupts Prof. Dr.-Ing. Rainer Keller, Hochschule Esslingen 26 wie lange dart z - B getpid. Zu haben. Wi Systemcalls ausmessen 1/4 Wir wollen messen, wie teuer ein Systemaufruf ist! all braucht : wie viele ein einfacher System Taktzyklen 1. Schritt: Funktion zur Zeitmessung (Taktzyklus-genau!): #include #include #include #include #define NUM_TIMES 10000 #define ull unsigned long long Ausgabe ind unsigned long long getrdtsc (void) { Reg EAX/EDX unsigned int hi, lo; - __asm__ __volatile__("rdtsc":"=a"(lo),"=d"(hi)); Read Time stack > car return (((ull)hi