109
Übung zu Betriebssysteme Zeitscheibenscheduling 21. Dezember 2018 & 7. Januar 2019 Andreas Ziegler Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte Systeme und Betriebssysteme

Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler

Ü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

Motivation

Page 3: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler

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

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

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

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

Zeitgeber

Page 8: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Umsetzung

Page 34: Übung zu Betriebssysteme - Zeitscheibenscheduling · ProgrammableIntervalTimer(PIT) Standardtimerseit1981(IBM-PC,Intel8253/8254) ca.1193182Hz(= 1 3 NTSC-Freq.) dreiKanälemitjeeinen16bitZähler

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

weitere Fragen?

Wir wünschen euch ein frohes Festund einen guten Rutsch ins neue Jahr