| Zeile 26: | Zeile 26: | ||
Der 32-Bit-Kernel setzt erstmal ein paar interne Dinge auf, unter anderem Variablen, Structs und Arrays, die für Idle-Tasks, Anzahl der Prozessoren und Umlaute (für die [[Textausgabe]]) genutzt werden. | Der 32-Bit-Kernel setzt erstmal ein paar interne Dinge auf, unter anderem Variablen, Structs und Arrays, die für Idle-Tasks, Anzahl der Prozessoren und Umlaute (für die [[Textausgabe]]) genutzt werden. | ||
| − | Dann wird der Bildschirm initialisiert und stoiber32 meldet sich zu Wort. Nachdem eine neue [[GDT]] und [[IDT]] aufgesetzt wurden wird das physische Speichermanagement initialisiert; Dazu wird die von GRUB übergebene Memory-Map der Funktion „init_pmm()“ übergeben, die die weitere Initialisierung übernimmt (mehr dazu im Abschnitt „Arbeitsspeicherverwaltungsgedrisse“). Danach wird das allseits beliebte [[Paging]] aktiviert. darauffolgend dann die [[Interrupt|Interrups]] sowie der Dispatcher für unser Multitasking. | + | Dann wird der Bildschirm initialisiert und stoiber32 meldet sich zu Wort. Nachdem eine neue [[GDT]] und [[IDT]] aufgesetzt wurden wird das physische Speichermanagement initialisiert; Dazu wird die von GRUB übergebene Memory-Map der Funktion „init_pmm()“ übergeben, die die weitere Initialisierung übernimmt (mehr dazu im Abschnitt „Arbeitsspeicherverwaltungsgedrisse“). Danach wird das allseits beliebte [[Paging]] aktiviert. darauffolgend dann die [[Interrupt|Interrups]] sowie der Dispatcher und der Scheduler für unser Multitasking. |
Ist bis dahin alles glatt gelaufen werden die am Anfang deaktivierten Interrupts wieder eingeschaltet und stoiber32 verkündet elegant und souverän mit einer kleinen Hommage an den Ex-Bundespräsidentschaftskandidaten Edmund Stoiber, dass niwohlOS vollständig geladen und bisher reibungslos initialisiert wurde. | Ist bis dahin alles glatt gelaufen werden die am Anfang deaktivierten Interrupts wieder eingeschaltet und stoiber32 verkündet elegant und souverän mit einer kleinen Hommage an den Ex-Bundespräsidentschaftskandidaten Edmund Stoiber, dass niwohlOS vollständig geladen und bisher reibungslos initialisiert wurde. | ||
| Zeile 42: | Zeile 42: | ||
Paging wurde bereits im niwohunloader aktiviert, genauso wie PAE. | Paging wurde bereits im niwohunloader aktiviert, genauso wie PAE. | ||
| + | |||
| + | |||
| + | === Scheduler === | ||
| + | Da niwohlOS zukunftsorientiert ist, besitzt es einen Scheduler, der auch auf Quantencomputern zuverlässig funktioniert. Er arbeitet nach dem Prinzip des Lottery Scheduling. Das heißt, es gibt eine große Lostrommel, in die alle Threads bei ihrer Erstellung entsprechend ihrer Priorität mehr oder weniger Lose werfen. Bei jedem Schedulingvorgang wird dann von der Lottofee persönlich ein Los gezogen und der entsprechende Thread ausgeführt – es sei denn, er ist unabkömmlich, weil er bereits auf einer anderen CPU läuft; in diesem Fall verfällt der Gewinn. | ||
| + | |||
| + | Vorteile sind die einfache Implementierung von Prioritäten und Prioritätsverschiebungen zugunsten anderer Threads sowie natürlich, dass dieser Scheduler zuverlässig sowohl mit Java2k als auch auf Quantencomputern läuft. | ||
== [[Interprozesskommunikation]] == | == [[Interprozesskommunikation]] == | ||