2.10 & 2.11 & 2.12 - Operating System Debugging, Generation and Booting (p.85)
Debugging
Kernighans Law:
- "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."
Debuggers zorgen voor een stapsgewijze doorloop van een process, waarbij de variabelen en statements kunnen worden bekeken.
- Profilers kunnen de uitvoer van een programma documenteren. Hierbij wordt duidelijk hoeveel (cpu) tijd was besteed aan verschillende delen van de code.
- Memory dumps kunnen worden gemaakt bij crashes, om uit te zoeken waar het progamma crashte.
Generation
- OS kan worden ontworpen en gebouwd worden voor een specifieke hardware configuratie.
- Recentelijk worden ze ontworpen met een aantal variabelen/parameters/componenten in gedachten, welke worden geconfigureerd bij installatie.
- Een OS kan worden gereconfigureerd na installatie voor extra componenten of extra mogelijkheden.
- Wat wordt geconfigureerd:
- (aantal/eigenschappen) CPU, (aantal) RAM, externe apparaten, chipset, welke OS opties zijn wenselijk voor deze configuratie.
- In extreme gevallen wordt de kernel aangepast en opnieuw gebouwd.
Boot
- Wat gebeurd er bij een systeem boot (algemene overview):
- Power up. (Jij drukt op de aan knop ;0)
- Een interrupt is gemaakt welke een geheugenaddres van het moederboard ROM chip, in de programcounter plaatst.
- De gevonden instructies worden uitgevoerd, dit programma wordt de "bootstrap" genoemd.
- Hardware checks worden uitgevoerd (waaronder POSTs (PowerOnSelfTests))
- De gebruiker kan op een toets drukken om in de BIOS configuratie te komen.
- De bootstrap zoekt naar een non-volatile opslag (DVD,HDD,SSD) om een OS te laden.
- De bootstrap kijkt in de fdisk table van de opslag om te bepalen waar de "actieve" partitie is met de boot voor het OS.
- De kernel van dit OS wordt van de opslag in het geheugen geplaatst.
- Het commando wordt van de bootstrap overgedragen aan de kernel.
- De kernel bepaald welke services en configuratie etc er moet worden geladen.
- De gebruiker kan nu inloggen (afhankelijk van welk OS de gebruiker draait)