The holy bible of SWEB - Institute of Applied Information Processing ...
The holy bible of SWEB - Institute of Applied Information Processing ...
The holy bible of SWEB - Institute of Applied Information Processing ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
3.5. <strong>SWEB</strong> BOOT PROCESS CHAPTER 3. VM, PROTECTION AND PAGING<br />
Index Base Limit P DPL S Type A G D X U<br />
[24] [20] [1] [2] [1] [3] [1] [1] [1] [1] [1]<br />
0 0 0 0 00 0 000 0 0 0 0 0<br />
1 0 0 0 00 0 000 0 0 0 0 0<br />
2 0 FFFFFh 1 00 1 001 0 1 1 0 0<br />
3 0 FFFFFh 1 00 1 101 0 1 1 0 0<br />
4 0 FFFFFh 1 11 1 001 0 1 1 0 0<br />
5 0 FFFFFh 1 11 1 101 0 1 1 0 0<br />
Table 3.7: Sweb Global segment Descriptor Table<br />
3. zero out kernel BSS (uninitialized data section)<br />
4. set up stack (which is in the BSS section)<br />
5. call parseMultibootHeader()<br />
6. call initialiseBootTimePaging()<br />
7. enable PSE (extended PageSize 4k and 4m mixed)<br />
8. enable Paging (PG bit = 1)<br />
9. Paging Mode:<br />
10. reload GDT with new address<br />
11. load LINEAR_DATA_SEL into all segment registers<br />
12. call removeBootTimeIdentMapping()<br />
13. reload CR3<br />
14. call startup()<br />
14. 1. init KernelMemoryManager<br />
14. 2. init PageManager<br />
14. 3. init Console<br />
14. 4. init Scheduler<br />
14. 5. init kprintf_no_sleep<br />
14. 6. init KernelThreadInfo<br />
14. 7. init Interrupts<br />
14. 8. add Threads<br />
14. 9. enable synchronisation mechanisms in KMM and PM<br />
14. 10. enable Interrupts: from here on, tasks are executed pseudo-parallel.<br />
14. 11. yield away<br />
for details, refer to the files init_boottime_pagetables.cpp, boot.s and main.cpp.<br />
3.5.2 Sweb Global Descriptor<br />
Sweb’s boot time GDT can be found in boot.s and Table 3.7 with a per-descriptor<br />
elaboration in Table 3.8.<br />
44 <strong>of</strong> 151