Übung zu betriebssysteme - zeitscheibenscheduling · programmableintervaltimer(pit)...
TRANSCRIPT
![Page 1: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/1.jpg)
Übung zu BetriebssystemeZeitscheibenscheduling
21. Dezember 2018 & 7. Januar 2019
Andreas ZieglerBernhard Heinloth
Lehrstuhl für Informatik 4Friedrich-Alexander-Universität Erlangen-Nürnberg
Lehrstuhl für Verteilte Systeme und Betriebssysteme
![Page 2: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/2.jpg)
Motivation
![Page 3: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/3.jpg)
Kooperative Ablaufplanung
int i = 0;while (true){
Secure section;kout << i++ << endl;scheduler.resume();
}
![Page 4: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/4.jpg)
Unterbrechende Ablaufplanung
int i = 0;while (true){
Secure section;kout << i++ << endl;
}
Aufgabe: Präemptives Scheduling mittels Timer.
![Page 5: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/5.jpg)
Unterbrechende Ablaufplanung
int i = 0;while (true){
Secure section;kout << i++ << endl;
}� Scheduler Interrupt
Aufgabe: Präemptives Scheduling mittels Timer.
![Page 6: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/6.jpg)
Unterbrechende Ablaufplanung
int i = 0;while (true){
Secure section;kout << i++ << endl;
}� Scheduler Interrupt
Aufgabe: Präemptives Scheduling mittels Timer.
![Page 7: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/7.jpg)
Zeitgeber
![Page 8: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/8.jpg)
Programmable Interval Timer (PIT)
Standardtimer seit 1981 (IBM-PC, Intel 8253/8254)ca. 1193182 Hz (= 1
3 NTSC-Freq.)drei Kanäle mit je einen 16 bit Zähler
Kanal 0 löst standardmäßig alle 54.9254ms IRQ 0 ausKanal 1 früher für ArbeitsspeicherKanal 2 für PC Speaker (Tonfrequenz)
Genauigkeit: 828 ns
via PIC bzw. I/O APIC (relativ) langsamausreichend für BS
(bis WS13), geht aber besser.
APIC-BusCPU 1
localAPIC
… CPU N
localAPIC
I/O-APIC
PITTimer 1Timer 2Timer 3
Arbeitsspeicher
Systemlautsprecher
![Page 9: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/9.jpg)
Programmable Interval Timer (PIT)
Standardtimer seit 1981 (IBM-PC, Intel 8253/8254)ca. 1193182 Hz (= 1
3 NTSC-Freq.)drei Kanäle mit je einen 16 bit Zähler
Kanal 0 löst standardmäßig alle 54.9254ms IRQ 0 ausKanal 1 früher für ArbeitsspeicherKanal 2 für PC Speaker (Tonfrequenz)
Genauigkeit: 828 ns
via PIC bzw. I/O APIC (relativ) langsamausreichend für BS
(bis WS13), geht aber besser.
APIC-BusCPU 1
localAPIC
… CPU N
localAPIC
I/O-APIC
PITTimer 1Timer 2Timer 3
Arbeitsspeicher
Systemlautsprecher
![Page 10: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/10.jpg)
Programmable Interval Timer (PIT)
Standardtimer seit 1981 (IBM-PC, Intel 8253/8254)ca. 1193182 Hz (= 1
3 NTSC-Freq.)drei Kanäle mit je einen 16 bit Zähler
Kanal 0 löst standardmäßig alle 54.9254ms IRQ 0 ausKanal 1 früher für ArbeitsspeicherKanal 2 für PC Speaker (Tonfrequenz)
Genauigkeit: 828 nsvia PIC bzw. I/O APIC→ (relativ) langsam
ausreichend für BS
(bis WS13), geht aber besser.
APIC-BusCPU 1
localAPIC
… CPU N
localAPIC
I/O-APIC
PITTimer 1Timer 2Timer 3
Arbeitsspeicher
Systemlautsprecher
![Page 11: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/11.jpg)
Programmable Interval Timer (PIT)
Standardtimer seit 1981 (IBM-PC, Intel 8253/8254)ca. 1193182 Hz (= 1
3 NTSC-Freq.)drei Kanäle mit je einen 16 bit Zähler
Kanal 0 löst standardmäßig alle 54.9254ms IRQ 0 ausKanal 1 früher für ArbeitsspeicherKanal 2 für PC Speaker (Tonfrequenz)
Genauigkeit: 828 nsvia PIC bzw. I/O APIC→ (relativ) langsamausreichend für BS
(bis WS13), geht aber besser.
APIC-BusCPU 1
localAPIC
… CPU N
localAPIC
I/O-APIC
PITTimer 1Timer 2Timer 3
Arbeitsspeicher
Systemlautsprecher
![Page 12: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/12.jpg)
Programmable Interval Timer (PIT)
Standardtimer seit 1981 (IBM-PC, Intel 8253/8254)ca. 1193182 Hz (= 1
3 NTSC-Freq.)drei Kanäle mit je einen 16 bit Zähler
Kanal 0 löst standardmäßig alle 54.9254ms IRQ 0 ausKanal 1 früher für ArbeitsspeicherKanal 2 für PC Speaker (Tonfrequenz)
Genauigkeit: 828 nsvia PIC bzw. I/O APIC→ (relativ) langsamausreichend für BS (bis WS13), geht aber besser.
APIC-BusCPU 1
localAPIC
… CPU N
localAPIC
I/O-APIC
PITTimer 1Timer 2Timer 3
Arbeitsspeicher
Systemlautsprecher
![Page 13: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/13.jpg)
Real Time Clock (RTC)
seit 1984 (IBM-PC/AT)32768 Hz (= 215 Hz, Verwendung in Uhren)- Standardmäßig Interrupts bei 1024 Hz (fast 1 ms)- 12 weitere Möglichkeiten von 2 bis 8192 Hz durch Vorteiler- IRQ 8 (Problem?)
für Zeit & DatumBetrieb im ausgeschalteten Zustand mittels Batterie
![Page 14: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/14.jpg)
Time Stamp Counter (TSC)
seit 1993 (Pentium)64 bit, auslesbar über Assemblerinstruktion rdtscTaktfrequenz wie CPU- ursprünglich Erhöhung mit jedem Clock-Signal- unterschiedliche Takte abhängig vom Stromsparmodus- bei neueren Versionen: konstante Rate entsprechendnominaler Geschwindigkeit
kann keinen Interrupt auslösen
![Page 15: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/15.jpg)
ACPI Power Management Timer
seit es ACPI-Mainboards gibt (1996)3579545 Hz (= NTSC-Freq.)ein 24 oder 32 bit Zähler- besser als alte (nicht konstante) TSC- Zugriff über I/O Port
kann auch keinen Interrupt auslösen
![Page 16: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/16.jpg)
High Precision Event Timer (HPET)
von Intel und Microsoft 2005 als PIT- & RTC-Ersatzveröffentlicht≥ 10 MHzein 64 bit Zähler- min. drei 32 oder 64 bit breite Vergleichseinrichtungen- konfigurierbarer Interrupt bei Gleichheit
Genauigkeit: 100 ns oder besser
![Page 17: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/17.jpg)
LAPIC Timer
≥ 100 MHz32 bit ZählerTaktfrequenz wie CPU Busfrequenz- abhängig vom System- aber unabhängig von Stromsparmodus- Interrupt geht nur an den entsprechenden Kern- 8 Möglichkeiten (bis 1
128 Busfrequenz) durch Vorteiler
Genauigkeit: 10 ns oder besser
Perfekt für unsere Bedürfnisse
![Page 18: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/18.jpg)
LAPIC Timer
≥ 100 MHz32 bit ZählerTaktfrequenz wie CPU Busfrequenz- abhängig vom System- aber unabhängig von Stromsparmodus- Interrupt geht nur an den entsprechenden Kern- 8 Möglichkeiten (bis 1
128 Busfrequenz) durch Vorteiler
Genauigkeit: 10 ns oder besser
Perfekt für unsere Bedürfnisse
![Page 19: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/19.jpg)
Funktionsweise des LAPIC Timers
APIC-Bus
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
Timer
Count Register
Timer
Count Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 20: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/20.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
Timer
Count Register
Timer
Count Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 21: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/21.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
Timer
Count Register
Timer
Count Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 22: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/22.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
Timer
Count Register
Timer
Count Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 23: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/23.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
Timer
Count Register
Timer
Count Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 24: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/24.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
Timer
Count Register
Timer
Count Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 25: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/25.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
Timer
Count Register
Timer
Count Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 26: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/26.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
TimerCount Register
TimerCount Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 27: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/27.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
TimerCount Register
TimerCount Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 28: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/28.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
TimerCount Register
TimerCount Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 29: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/29.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
TimerCount Register
TimerCount Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 30: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/30.jpg)
Funktionsweise des LAPIC Timers
CPU 1
local APIC
… CPU N
local APIC
I/O-APIC
externe Geräte
TimerCount Register
TimerCount Register
Vorteiler Vorteiler
Interruptbei0
Interruptbei0
Divide Configuration Register
0xfee003e0
Divide Configuration Register
0xfee003e0
0xfee00320
Timer Control Register
0xfee00320
Timer Control Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
0xfee00380
Initial
0xfee00390
CurrentControl Register
![Page 31: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/31.jpg)
Aufbau des Timer Control Register Eintrags31
1918171615
131211
87
0
Betriebsmodus: einmalig (0) oder periodisch (1)Interrupt-Mask: Interrupt aktiv (0) oder inaktiv (1)
Zustellstatus Interrupt Nachricht noch unterwegs? (RO)
Interrupt Vektor: Nummer in der Vektortabelle (32-255)
![Page 32: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/32.jpg)
Zusammenfassung LAPIC Timer
jede CPU hat einen eigenen 32bit TimerÄnderung am Initial Count Register startet den Timerzu Beginn wird der initiale Startzählwert aus dem InitialCount Register in das Current Count Register kopiertwelches im Bustakt
Vorteiler dekrementiert wirdbei 0 wird – sofern aktiviert – ein Interrupt ausgelöstje nach Betriebsmodus wird gestoppt oder wieder neubegonnen
![Page 33: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/33.jpg)
Umsetzung
![Page 34: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/34.jpg)
Watch
windup stellt das Unterbrechungsintervall (z.B. alle 1000Mikrosekunden) ein
activate setzt den Timer und aktiviert Interruptsprologue fordert Epilog an
(und kann zu Testzwecken eine Ausgabe tätigen)
epilogue wechselt die Anwendung mittelsscheduler.resume()
Scheduling läuft nun auf Epilogebene(d.h. automatische Synchronisation der Ready-Liste)somit Guarded_Scheduler fürAnwendungsebene notwendig
![Page 35: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/35.jpg)
Watch
windup stellt das Unterbrechungsintervall (z.B. alle 1000Mikrosekunden) ein
activate setzt den Timer und aktiviert Interruptsprologue fordert Epilog an
(und kann zu Testzwecken eine Ausgabe tätigen)
epilogue wechselt die Anwendung mittelsscheduler.resume()
Scheduling läuft nun auf Epilogebene(d.h. automatische Synchronisation der Ready-Liste)
somit Guarded_Scheduler fürAnwendungsebene notwendig
![Page 36: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/36.jpg)
Watch
windup stellt das Unterbrechungsintervall (z.B. alle 1000Mikrosekunden) ein
activate setzt den Timer und aktiviert Interruptsprologue fordert Epilog an
(und kann zu Testzwecken eine Ausgabe tätigen)
epilogue wechselt die Anwendung mittelsscheduler.resume()
Scheduling läuft nun auf Epilogebene(d.h. automatische Synchronisation der Ready-Liste)somit Guarded_Scheduler fürAnwendungsebene notwendig
![Page 37: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/37.jpg)
Probleme bei Umrechnung der Zeiteinheit
1. Frequenz des LAPIC-Timers herausfinden
Kalibrieren unter Verwendung des PITin der (vorgegebenen) Funktion LAPIC::timer_ticks(Funktion gibt die Anzahl der Ticks in einer Millisekunde zurück)
benötigt jedoch zum Setzen der LAPIC Timer Register dienoch zu implementierende Funktion LAPIC::setTimerDatei lapic_registers.h bietet passende Structs undeine write-Funktion
![Page 38: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/38.jpg)
Probleme bei Umrechnung der Zeiteinheit
1. Frequenz des LAPIC-Timers herausfinden
Kalibrieren unter Verwendung des PIT
in der (vorgegebenen) Funktion LAPIC::timer_ticks(Funktion gibt die Anzahl der Ticks in einer Millisekunde zurück)
benötigt jedoch zum Setzen der LAPIC Timer Register dienoch zu implementierende Funktion LAPIC::setTimerDatei lapic_registers.h bietet passende Structs undeine write-Funktion
![Page 39: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/39.jpg)
Probleme bei Umrechnung der Zeiteinheit
1. Frequenz des LAPIC-Timers herausfinden
Kalibrieren unter Verwendung des PITin der (vorgegebenen) Funktion LAPIC::timer_ticks(Funktion gibt die Anzahl der Ticks in einer Millisekunde zurück)
benötigt jedoch zum Setzen der LAPIC Timer Register dienoch zu implementierende Funktion LAPIC::setTimerDatei lapic_registers.h bietet passende Structs undeine write-Funktion
![Page 40: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/40.jpg)
Probleme bei Umrechnung der Zeiteinheit
1. Frequenz des LAPIC-Timers herausfinden
Kalibrieren unter Verwendung des PITin der (vorgegebenen) Funktion LAPIC::timer_ticks(Funktion gibt die Anzahl der Ticks in einer Millisekunde zurück)
benötigt jedoch zum Setzen der LAPIC Timer Register dienoch zu implementierende Funktion LAPIC::setTimer
Datei lapic_registers.h bietet passende Structs undeine write-Funktion
![Page 41: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/41.jpg)
Probleme bei Umrechnung der Zeiteinheit
1. Frequenz des LAPIC-Timers herausfinden
Kalibrieren unter Verwendung des PITin der (vorgegebenen) Funktion LAPIC::timer_ticks(Funktion gibt die Anzahl der Ticks in einer Millisekunde zurück)
benötigt jedoch zum Setzen der LAPIC Timer Register dienoch zu implementierende Funktion LAPIC::setTimerDatei lapic_registers.h bietet passende Structs undeine write-Funktion
![Page 42: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/42.jpg)
Probleme bei Umrechnung der Zeiteinheit
2. Initialen Wert und Vorteiler korrekt setzen
Interrupt soll alle n Mikrosekunden ausgelöst werdenStartwertzähler initial n LAPIC::timer_ticks()
Vorteiler 1000 berechnen,dabei gilt Vorteiler 2x mit x 0 7Möglichst kleiner Vorteiler, aber kein Überlauf (32bit!)Überlauferkennung: Berechnung mit 64bit (sieheMath::div64), auf 32bit casten und Werte vergleichenProtipp: auch elegant lösbaruint64_t tmp = Math::div64((uint64_t)n *
lapic.timer_ticks(), 1000);int x = 0;while (tmp >> (32+x) != 0)
x++;uint32_t initial = tmp >> x;uint8_t vorteiler = 1 << x;
![Page 43: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/43.jpg)
Probleme bei Umrechnung der Zeiteinheit
2. Initialen Wert und Vorteiler korrekt setzen
Interrupt soll alle n Mikrosekunden ausgelöst werden
Startwertzähler initial n LAPIC::timer_ticks()Vorteiler 1000 berechnen,
dabei gilt Vorteiler 2x mit x 0 7Möglichst kleiner Vorteiler, aber kein Überlauf (32bit!)Überlauferkennung: Berechnung mit 64bit (sieheMath::div64), auf 32bit casten und Werte vergleichenProtipp: auch elegant lösbaruint64_t tmp = Math::div64((uint64_t)n *
lapic.timer_ticks(), 1000);int x = 0;while (tmp >> (32+x) != 0)
x++;uint32_t initial = tmp >> x;uint8_t vorteiler = 1 << x;
![Page 44: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/44.jpg)
Probleme bei Umrechnung der Zeiteinheit
2. Initialen Wert und Vorteiler korrekt setzen
Interrupt soll alle n Mikrosekunden ausgelöst werdenStartwertzähler initial = n·LAPIC::timer_ticks()
Vorteiler·1000 berechnen,dabei gilt Vorteiler = 2x mit x ∈ {0, . . . , 7}
Möglichst kleiner Vorteiler, aber kein Überlauf (32bit!)Überlauferkennung: Berechnung mit 64bit (sieheMath::div64), auf 32bit casten und Werte vergleichenProtipp: auch elegant lösbaruint64_t tmp = Math::div64((uint64_t)n *
lapic.timer_ticks(), 1000);int x = 0;while (tmp >> (32+x) != 0)
x++;uint32_t initial = tmp >> x;uint8_t vorteiler = 1 << x;
![Page 45: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/45.jpg)
Probleme bei Umrechnung der Zeiteinheit
2. Initialen Wert und Vorteiler korrekt setzen
Interrupt soll alle n Mikrosekunden ausgelöst werdenStartwertzähler initial = n·LAPIC::timer_ticks()
Vorteiler·1000 berechnen,dabei gilt Vorteiler = 2x mit x ∈ {0, . . . , 7}Möglichst kleiner Vorteiler, aber kein Überlauf (32bit!)
Überlauferkennung: Berechnung mit 64bit (sieheMath::div64), auf 32bit casten und Werte vergleichenProtipp: auch elegant lösbaruint64_t tmp = Math::div64((uint64_t)n *
lapic.timer_ticks(), 1000);int x = 0;while (tmp >> (32+x) != 0)
x++;uint32_t initial = tmp >> x;uint8_t vorteiler = 1 << x;
![Page 46: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/46.jpg)
Probleme bei Umrechnung der Zeiteinheit
2. Initialen Wert und Vorteiler korrekt setzen
Interrupt soll alle n Mikrosekunden ausgelöst werdenStartwertzähler initial = n·LAPIC::timer_ticks()
Vorteiler·1000 berechnen,dabei gilt Vorteiler = 2x mit x ∈ {0, . . . , 7}Möglichst kleiner Vorteiler, aber kein Überlauf (32bit!)Überlauferkennung: Berechnung mit 64bit (sieheMath::div64), auf 32bit casten und Werte vergleichen
Protipp: auch elegant lösbaruint64_t tmp = Math::div64((uint64_t)n *
lapic.timer_ticks(), 1000);int x = 0;while (tmp >> (32+x) != 0)
x++;uint32_t initial = tmp >> x;uint8_t vorteiler = 1 << x;
![Page 47: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/47.jpg)
Probleme bei Umrechnung der Zeiteinheit
2. Initialen Wert und Vorteiler korrekt setzen
Interrupt soll alle n Mikrosekunden ausgelöst werdenStartwertzähler initial = n·LAPIC::timer_ticks()
Vorteiler·1000 berechnen,dabei gilt Vorteiler = 2x mit x ∈ {0, . . . , 7}Möglichst kleiner Vorteiler, aber kein Überlauf (32bit!)Überlauferkennung: Berechnung mit 64bit (sieheMath::div64), auf 32bit casten und Werte vergleichenProtipp: auch elegant lösbaruint64_t tmp = Math::div64((uint64_t)n *
lapic.timer_ticks(), 1000);int x = 0;while (tmp >> (32+x) != 0)x++;
uint32_t initial = tmp >> x;uint8_t vorteiler = 1 << x;
![Page 48: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/48.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
relay
resume()
app2
leave
relay
resume()
app1
leave
![Page 49: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/49.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
�
relay
resume()
app2
leave
relay
resume()
app1
leave
![Page 50: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/50.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
�
relay
resume()
app2
leave
relay
resume()
app1
leave
![Page 51: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/51.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
�
relay
resume()
app2
leave
relay
resume()
app1
leave
![Page 52: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/52.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
�
relay
resume()
app2
leave
relay
resume()
app1
leave
![Page 53: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/53.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
�
relay
resume()
app2
leave
relay
resume()
app1
leave
![Page 54: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/54.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
�
relay
resume()
app2
leave
�
relay
resume()
app1
leave
![Page 55: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/55.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
�
relay
resume()
app2
leave
�
relay
resume()
app1
leave
![Page 56: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/56.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
�
relay
resume()
app2
leave
�
relay
resume()
app1
leave
![Page 57: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/57.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
�
relay
resume()
app2
leave
�
relay
resume()
app1
leave
![Page 58: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/58.jpg)
Ablaufbeispiel (Standardfall)
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
�
relay
resume()
app2
leave
�
relay
resume()
app1
leave
![Page 59: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/59.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
enter
relayrelay
enqueue
leaveleave
resume()
app2
leave
relay
resume()
leave
app1
![Page 60: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/60.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
relayrelay
enqueue
leaveleave
resume()
app2
leave
relay
resume()
leave
app1
![Page 61: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/61.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
relayrelay
enqueue
leaveleave
resume()
app2
leave
relay
resume()
leave
app1
![Page 62: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/62.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relayrelay
enqueue
leaveleave
resume()
app2
leave
relay
resume()
leave
app1
![Page 63: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/63.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leaveleave
resume()
app2
leave
relay
resume()
leave
app1
![Page 64: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/64.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leaveleave
resume()
app2
leave
relay
resume()
leave
app1
![Page 65: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/65.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leave
leave
resume()
app2
leave
relay
resume()
leave
app1
![Page 66: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/66.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leave
leave
resume()
app2
leave
relay
resume()
leave
app1
![Page 67: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/67.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leave
leave
resume()
app2
leave
relay
resume()
leave
app1
![Page 68: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/68.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leave
leave
resume()
app2
leave
relay
resume()
leave
app1
![Page 69: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/69.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leave
leave
resume()
app2
leave
�
relay
resume()
leave
app1
![Page 70: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/70.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leave
leave
resume()
app2
leave
�
relay
resume()
leave
app1
![Page 71: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/71.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leave
leave
resume()
app2
leave
�
relay
resume()
leave
app1
![Page 72: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/72.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leave
leave
resume()
app2
leave
�
relay
resume()
leave
app1
![Page 73: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/73.jpg)
Ablaufbeispiel bei Faden in Systemebene
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
�
relay
relay
enqueue
leave
leave
resume()
app2
leave
�
relay
resume()
leave
app1
![Page 74: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/74.jpg)
Ablaufbeispiel mit neuem Thread
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1
enter
ready(&app2)
leave
Guarded_Scheduler
relay
resume() kickoff
leave
app2
![Page 75: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/75.jpg)
Ablaufbeispiel mit neuem Thread
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
ready(&app2)
leave
Guarded_Scheduler
relay
resume() kickoff
leave
app2
![Page 76: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/76.jpg)
Ablaufbeispiel mit neuem Thread
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
ready(&app2)
leave
Guarded_Scheduler
relay
resume() kickoff
leave
app2
![Page 77: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/77.jpg)
Ablaufbeispiel mit neuem Thread
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
ready(&app2)
leave
Guarded_Scheduler
relay
resume() kickoff
leave
app2
![Page 78: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/78.jpg)
Ablaufbeispiel mit neuem Thread
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
ready(&app2)
leave
Guarded_Scheduler
relay
resume() kickoff
leave
app2
![Page 79: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/79.jpg)
Ablaufbeispiel mit neuem Thread
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
ready(&app2)
leave
Guarded_Scheduler
�
relay
resume() kickoff
leave
app2
![Page 80: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/80.jpg)
Ablaufbeispiel mit neuem Thread
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
ready(&app2)
leave
Guarded_Scheduler
�
relay
resume() kickoff
leave
app2
![Page 81: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/81.jpg)
Ablaufbeispiel mit neuem Thread
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
ready(&app2)
leave
Guarded_Scheduler
�
relay
resume()
kickoff
leave
app2
![Page 82: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/82.jpg)
Ablaufbeispiel mit neuem Thread
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
ready(&app2)
leave
Guarded_Scheduler
�
relay
resume() kickoff
leave
app2
![Page 83: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/83.jpg)
Ablaufbeispiel mit neuem Thread
E0 (Anwendung)
E 12
(Epilog)
E1 (IRQ/Prolog)
app1 enter
ready(&app2)
leave
Guarded_Scheduler
�
relay
resume() kickoff
leave
app2
![Page 84: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/84.jpg)
Besonderheiten bei MPStuBS
![Page 85: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/85.jpg)
Anwendungsfaden beenden
Präemptives Beenden mittels Scheduler::kill(Thread&)
OOStuBS keine Änderung: aus der Ready-Liste entfernenbzw. Kill-Flag setzen und bei resume prüfen
(Was muss man tun, damit der Thread sich selbst killenkann?)
MPStuBS der Anwendungsfaden kann auch gerade aufeiner anderen CPU laufen
Kill-Flag setzen (wie gehabt)falls er nicht in der Ready-Liste ist, läuft erwohl gerade auf einer anderen CPUdiese andere CPU muss benachrichtigtwerden
Inter Processor Interrupt (IPI)
die angesprochene CPU muss dann dasKill-Flag des aktuellen Prozesses prüfen
![Page 86: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/86.jpg)
Anwendungsfaden beenden
Präemptives Beenden mittels Scheduler::kill(Thread&)
OOStuBS keine Änderung: aus der Ready-Liste entfernenbzw. Kill-Flag setzen und bei resume prüfen
(Was muss man tun, damit der Thread sich selbst killenkann?)
MPStuBS der Anwendungsfaden kann auch gerade aufeiner anderen CPU laufen
Kill-Flag setzen (wie gehabt)falls er nicht in der Ready-Liste ist, läuft erwohl gerade auf einer anderen CPUdiese andere CPU muss benachrichtigtwerden
Inter Processor Interrupt (IPI)
die angesprochene CPU muss dann dasKill-Flag des aktuellen Prozesses prüfen
![Page 87: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/87.jpg)
Anwendungsfaden beenden
Präemptives Beenden mittels Scheduler::kill(Thread&)
OOStuBS keine Änderung: aus der Ready-Liste entfernenbzw. Kill-Flag setzen und bei resume prüfen(Was muss man tun, damit der Thread sich selbst killenkann?)
MPStuBS der Anwendungsfaden kann auch gerade aufeiner anderen CPU laufen
Kill-Flag setzen (wie gehabt)falls er nicht in der Ready-Liste ist, läuft erwohl gerade auf einer anderen CPUdiese andere CPU muss benachrichtigtwerden
Inter Processor Interrupt (IPI)
die angesprochene CPU muss dann dasKill-Flag des aktuellen Prozesses prüfen
![Page 88: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/88.jpg)
Anwendungsfaden beenden
Präemptives Beenden mittels Scheduler::kill(Thread&)
OOStuBS keine Änderung: aus der Ready-Liste entfernenbzw. Kill-Flag setzen und bei resume prüfen(Was muss man tun, damit der Thread sich selbst killenkann?)
MPStuBS der Anwendungsfaden kann auch gerade aufeiner anderen CPU laufen
Kill-Flag setzen (wie gehabt)falls er nicht in der Ready-Liste ist, läuft erwohl gerade auf einer anderen CPUdiese andere CPU muss benachrichtigtwerden
Inter Processor Interrupt (IPI)
die angesprochene CPU muss dann dasKill-Flag des aktuellen Prozesses prüfen
![Page 89: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/89.jpg)
Anwendungsfaden beenden
Präemptives Beenden mittels Scheduler::kill(Thread&)
OOStuBS keine Änderung: aus der Ready-Liste entfernenbzw. Kill-Flag setzen und bei resume prüfen(Was muss man tun, damit der Thread sich selbst killenkann?)
MPStuBS der Anwendungsfaden kann auch gerade aufeiner anderen CPU laufen
Kill-Flag setzen (wie gehabt)
falls er nicht in der Ready-Liste ist, läuft erwohl gerade auf einer anderen CPUdiese andere CPU muss benachrichtigtwerden
Inter Processor Interrupt (IPI)
die angesprochene CPU muss dann dasKill-Flag des aktuellen Prozesses prüfen
![Page 90: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/90.jpg)
Anwendungsfaden beenden
Präemptives Beenden mittels Scheduler::kill(Thread&)
OOStuBS keine Änderung: aus der Ready-Liste entfernenbzw. Kill-Flag setzen und bei resume prüfen(Was muss man tun, damit der Thread sich selbst killenkann?)
MPStuBS der Anwendungsfaden kann auch gerade aufeiner anderen CPU laufen
Kill-Flag setzen (wie gehabt)falls er nicht in der Ready-Liste ist, läuft erwohl gerade auf einer anderen CPU
diese andere CPU muss benachrichtigtwerden
Inter Processor Interrupt (IPI)
die angesprochene CPU muss dann dasKill-Flag des aktuellen Prozesses prüfen
![Page 91: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/91.jpg)
Anwendungsfaden beenden
Präemptives Beenden mittels Scheduler::kill(Thread&)
OOStuBS keine Änderung: aus der Ready-Liste entfernenbzw. Kill-Flag setzen und bei resume prüfen(Was muss man tun, damit der Thread sich selbst killenkann?)
MPStuBS der Anwendungsfaden kann auch gerade aufeiner anderen CPU laufen
Kill-Flag setzen (wie gehabt)falls er nicht in der Ready-Liste ist, läuft erwohl gerade auf einer anderen CPUdiese andere CPU muss benachrichtigtwerden
Inter Processor Interrupt (IPI)die angesprochene CPU muss dann dasKill-Flag des aktuellen Prozesses prüfen
![Page 92: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/92.jpg)
Anwendungsfaden beenden
Präemptives Beenden mittels Scheduler::kill(Thread&)
OOStuBS keine Änderung: aus der Ready-Liste entfernenbzw. Kill-Flag setzen und bei resume prüfen(Was muss man tun, damit der Thread sich selbst killenkann?)
MPStuBS der Anwendungsfaden kann auch gerade aufeiner anderen CPU laufen
Kill-Flag setzen (wie gehabt)falls er nicht in der Ready-Liste ist, läuft erwohl gerade auf einer anderen CPUdiese andere CPU muss benachrichtigtwerden→ Inter Processor Interrupt (IPI)
die angesprochene CPU muss dann dasKill-Flag des aktuellen Prozesses prüfen
![Page 93: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/93.jpg)
Anwendungsfaden beenden
Präemptives Beenden mittels Scheduler::kill(Thread&)
OOStuBS keine Änderung: aus der Ready-Liste entfernenbzw. Kill-Flag setzen und bei resume prüfen(Was muss man tun, damit der Thread sich selbst killenkann?)
MPStuBS der Anwendungsfaden kann auch gerade aufeiner anderen CPU laufen
Kill-Flag setzen (wie gehabt)falls er nicht in der Ready-Liste ist, läuft erwohl gerade auf einer anderen CPUdiese andere CPU muss benachrichtigtwerden→ Inter Processor Interrupt (IPI)die angesprochene CPU muss dann dasKill-Flag des aktuellen Prozesses prüfen
![Page 94: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/94.jpg)
Inter Processor Interrupt
APIC-BusCPU 1
localAPIC #1
… CPU 2
localAPIC #2
I/O-APIC
![Page 95: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/95.jpg)
Inter Processor Interrupt
APIC-BusCPU 1
localAPIC #1
… CPU 2
localAPIC #2
I/O-APIC
![Page 96: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/96.jpg)
Inter Processor Interrupt
sendIPI(destination, data)
sendCustomIPI(logicalDestination, vector)verwendet
Empfängermaske Interrupt
unter Zuhilfenahme vongetLogicalLAPICID(cpu)
![Page 97: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/97.jpg)
Inter Processor Interrupt
sendIPI(destination, data)
sendCustomIPI(logicalDestination, vector)verwendet
Empfängermaske Interrupt
unter Zuhilfenahme vongetLogicalLAPICID(cpu)
![Page 98: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/98.jpg)
Inter Processor Interrupt
sendIPI(destination, data)
sendCustomIPI(logicalDestination, vector)verwendet
Empfängermaske
Interrupt
unter Zuhilfenahme vongetLogicalLAPICID(cpu)
![Page 99: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/99.jpg)
Inter Processor Interrupt
sendIPI(destination, data)
sendCustomIPI(logicalDestination, vector)verwendet
Empfängermaske Interrupt
unter Zuhilfenahme vongetLogicalLAPICID(cpu)
![Page 100: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/100.jpg)
Inter Processor Interrupt
sendIPI(destination, data)
sendCustomIPI(logicalDestination, vector)verwendet
Empfängermaske Interrupt
unter Zuhilfenahme vongetLogicalLAPICID(cpu)
![Page 101: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/101.jpg)
Der Teufel steckt im Detail
Was kann hier schon schief gehen?
lock[system.getCPUID()] = true;
Viel - diese Zeile wird nicht atomar ausgeführt:
; Array lock an Adresse 0x2000call <system.getCPUID>mov [eax+0x2000], 0x1
Was passiert nun, wenn der Anwendungsfaden anschließendauf einer anderen CPU eingeplant wird?
![Page 102: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/102.jpg)
Der Teufel steckt im Detail
Was kann hier schon schief gehen?
lock[system.getCPUID()] = true;
Viel - diese Zeile wird nicht atomar ausgeführt:
; Array lock an Adresse 0x2000call <system.getCPUID>mov [eax+0x2000], 0x1
Was passiert nun, wenn der Anwendungsfaden anschließendauf einer anderen CPU eingeplant wird?
![Page 103: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/103.jpg)
Der Teufel steckt im Detail
Was kann hier schon schief gehen?
lock[system.getCPUID()] = true;
Viel - diese Zeile wird nicht atomar ausgeführt:
; Array lock an Adresse 0x2000call <system.getCPUID>mov [eax+0x2000], 0x1 � Scheduler Interrupt
Was passiert nun, wenn der Anwendungsfaden anschließendauf einer anderen CPU eingeplant wird?
![Page 104: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/104.jpg)
Der Teufel steckt im Detail
Was kann hier schon schief gehen?
lock[system.getCPUID()] = true;
Viel - diese Zeile wird nicht atomar ausgeführt:
; Array lock an Adresse 0x2000call <system.getCPUID>mov [eax+0x2000], 0x1 � Scheduler Interrupt
Was passiert nun, wenn der Anwendungsfaden anschließendauf einer anderen CPU eingeplant wird?
![Page 105: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/105.jpg)
Fragen über Fragen
Kann nun eine fehlerhafte Anwendung unserBetriebssystem blockieren?
Ist unser implementiertes Schedulingverfahren fair?Unter welchen Umständen wäre es effizienter, den Timerabzuschalten (Stichwort tickless)?Sollen wir beim IPI in Scheduler::kill auf Antwortwarten?
![Page 106: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/106.jpg)
Fragen über Fragen
Kann nun eine fehlerhafte Anwendung unserBetriebssystem blockieren?Ist unser implementiertes Schedulingverfahren fair?
Unter welchen Umständen wäre es effizienter, den Timerabzuschalten (Stichwort tickless)?Sollen wir beim IPI in Scheduler::kill auf Antwortwarten?
![Page 107: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/107.jpg)
Fragen über Fragen
Kann nun eine fehlerhafte Anwendung unserBetriebssystem blockieren?Ist unser implementiertes Schedulingverfahren fair?Unter welchen Umständen wäre es effizienter, den Timerabzuschalten (Stichwort tickless)?
Sollen wir beim IPI in Scheduler::kill auf Antwortwarten?
![Page 108: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/108.jpg)
Fragen über Fragen
Kann nun eine fehlerhafte Anwendung unserBetriebssystem blockieren?Ist unser implementiertes Schedulingverfahren fair?Unter welchen Umständen wäre es effizienter, den Timerabzuschalten (Stichwort tickless)?Sollen wir beim IPI in Scheduler::kill auf Antwortwarten?
![Page 109: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler](https://reader034.vdocuments.mx/reader034/viewer/2022043003/5f81a6a599c87127cb68be7d/html5/thumbnails/109.jpg)
weitere Fragen?
Wir wünschen euch ein frohes Festund einen guten Rutsch ins neue Jahr