04_BS_Systemaufrufe_Interrupts_tmp_27d877d80c333b85383e71e7b273aa52.pdf

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

Use Quizgecko on...
Browser
Browser