IKT218 prøveeksamen handler i stor grad om hvordan operativsystemer fungerer, hvordan x86-arkitekturen er bygget opp, hvordan minne styres, hvordan interrupts fungerer, og hvordan sentrale systemkomponenter som GDT, IDT, PIC og PIT brukes. For å forstå eksamen godt må man først forstå de grunnleggende byggesteinene. Et operativsystem er hovedprogrammet som styrer hele datamaskinen. Det fungerer som mellomledd mellom brukerprogrammer og maskinvaren. Programmer som Chrome, Spotify eller et tekstredigeringsprogram kommuniserer vanligvis ikke direkte med CPU, RAM eller harddisk. I stedet bruker de operativsystemet, som organiserer ressurser, fordeler prosessortid, styrer minne, håndterer filer og kommuniserer med hardware via drivere. Operativsystemets viktigste rolle er altså å styre systemets ressurser på en sikker og organisert måte. Når et program kjører, kalles det en prosess. En prosess er altså et aktivt program i kjørende tilstand. Hvis et program bare ligger lagret på harddisken, er det bare en fil, men når det åpnes og bruker systemressurser, blir det en prosess. Hver prosess får sitt eget minneområde og sine egne ressurser, slik at prosesser holdes adskilt fra hverandre. Dette gjør systemet mer stabilt, fordi ett program normalt ikke skal kunne ødelegge et annet. Multitasking betyr at operativsystemet kan håndtere flere prosesser samtidig. Hvis man for eksempel har både nettleser, musikkprogram og kodeeditor åpne samtidig, håndterer operativsystemet flere prosesser parallelt ved å bytte raskt mellom dem. Multithreading betyr derimot at én enkelt prosess kan ha flere tråder, altså flere arbeidsoppgaver, som kjører samtidig innenfor samme program. For eksempel kan en nettleser ha én tråd som spiller video, én som håndterer lyd og én som registrerer tastaturinput. System calls er en sentral del av operativsystemet. System calls er grensesnittet mellom brukerprogrammer og operativsystemet. Når et program ønsker å lese en fil, skrive til disk eller bruke hardware, må det be operativsystemet om dette gjennom system calls. Dette gir sikkerhet og kontroll fordi programmer ikke får fri direkte tilgang til hele maskinen. Device drivers, eller enhetsdrivere, er programvare som lar operativsystemet kommunisere med hardware. Uten drivere ville ikke operativsystemet forstå hvordan det skal snakke med tastatur, skjerm, harddisk eller andre enheter. Driveren fungerer som en oversetter mellom operativsystemet og den fysiske enheten. Minnehåndtering er også et hovedtema. Operativsystemet må fordele minne til programmer, beskytte minnet og bruke det effektivt. Dette gjøres blant annet gjennom paging, segmentation og virtual memory. Paging deler minnet inn i sider, segmentation deler det inn i segmenter med regler og grenser, mens virtual memory lar programmer bruke virtuelle adresser som operativsystemet oversetter til faktiske fysiske adresser i RAM. Virtual memory gir bedre sikkerhet, bedre organisering og gjør at systemet kan håndtere minne mer fleksibelt. I x86-arkitektur starter systemet i real mode. Real mode er en enkel 16-bits modus med direkte tilgang til fysisk minne og lite beskyttelse. Dette brukes typisk under oppstart. Protected mode er mer avansert og brukes i moderne systemer. Protected mode gir 32-bits funksjonalitet, minnebeskyttelse, virtual memory og tilgangskontroll. Overgangen fra real mode til protected mode er en viktig del av systemoppstart og OS-utvikling. CPU-en bruker registers, som er små og svært raske lagringsplasser inni prosessoren. General-purpose registers som EAX, EBX, ECX og EDX brukes til generell databehandling. Segment registers som CS, DS og SS brukes til segmentering, mens control registers som CR0 og CR3 brukes til kontroll av CPU-modus og minnestyring. For eksempel brukes CR0 til å aktivere protected mode. GDT, eller Global Descriptor Table, er en systemomfattende tabell som beskriver minnesegmenter. Den inneholder informasjon som base address, limit, access rights og granularity. GDT brukes for å definere hvordan minneområder skal brukes og beskyttes. LDT, eller Local Descriptor Table, fungerer lignende, men er knyttet til én spesifikk oppgave eller prosess. IDT, eller Interrupt Descriptor Table, brukes derimot til interrupts. IDT forteller CPU-en hvilken kode som skal kjøres når et interrupt eller en exception oppstår. Interrupts er signaler som forteller CPU-en at noe krever oppmerksomhet. Hardware interrupts kommer fra hardware, som tastatur eller mus. Software interrupts kommer fra programmer. IRQ, Interrupt Request, er selve forespørselen fra hardware. Når et tastatur registrerer et tastetrykk, sendes for eksempel en IRQ. ISR, Interrupt Service Routine, er koden som faktisk kjøres som respons på interruptet. PIC, Programmable Interrupt Controller, håndterer og prioriterer interrupts fra flere hardware-enheter før de sendes videre til CPU-en. Dette gjør at systemet kan organisere hvilke interrupts som skal behandles først. PIT, Programmable Interval Timer, er systemets timer. PIT genererer periodiske interrupts som brukes til klokke, timing og task scheduling. Dette er avgjørende for at operativsystemet skal kunne holde styr på tid og fordele CPU-tid mellom oppgaver. Når det gjelder minne i programmering, er stack og heap sentrale begreper. Stack brukes hovedsakelig til lokale variabler og funksjonskall, og styres automatisk. Heap brukes til dynamisk minneallokering, som malloc og calloc i C, og må styres mer manuelt. Hvis et program allokerer minne på heapen, men ikke frigjør det, kan det oppstå memory leaks. Compiler og linker er også viktige. Compiler oversetter kildekode til object code eller machine code. Linker kombinerer object files og biblioteker til ett ferdig kjørbart program. Static linking betyr at bibliotekkode bygges inn i programmet ved kompilering, mens dynamic linking betyr at biblioteker kobles til under runtime. C preprocessor er et tidlig steg i C-kompilering og håndterer blant annet #include, #define og conditional compilation før selve kompileringen skjer. I kodegjenkjenning er det spesielt viktig å kjenne igjen GDT-strukturer. Hvis man ser felt som limit_low, base_low, base_middle, access, granularity og base_high, handler det svært sannsynlig om oppsett av en GDT entry. For denne prøveeksamenen er det spesielt viktig å kunne forklare forskjellen mellom multitasking og multithreading, real mode og protected mode, GDT og IDT, hardware og software interrupts, stack og heap, samt static og dynamic linking. Kort oppsummert tester denne eksamenen forståelse av hvordan et operativsystem organiserer programmer, minne, hardware og CPU gjennom strukturerte mekanismer. Kjernen er operativsystemets rolle, x86-moduser, minnehåndtering, descriptor tables, interrupts og systemtiming. Hvis man forstår hvordan disse delene henger sammen som et samlet system, blir både multiple choice-spørsmål og kodeoppgaver langt lettere å forstå
IKT218 prøveeksamen handler i stor grad om hvordan operativsystemer fungerer, hvordan x86-arkitekturen er bygget opp, hvordan minne styres, hvordan interrupts fungerer, og hvordan sentrale systemkomponenter som GDT, IDT, PIC og PIT brukes. For å forstå eksamen godt må man først forstå de grunnleggende byggesteinene.
Et operativsystem er hovedprogrammet som styrer hele datamaskinen. Det fungerer som mellomledd mellom brukerprogrammer og maskinvaren. Programmer som Chrome, Spotify eller et tekstredigeringsprogram kommuniserer vanligvis ikke direkte med CPU, RAM eller harddisk. I stedet bruker de operativsystemet, som organiserer ressurser, fordeler prosessortid, styrer minne, håndterer filer og kommuniserer med hardware via drivere. Operativsystemets viktigste rolle er altså å styre systemets ressurser på en sikker og organisert måte.
Når et program kjører, kalles det en prosess. En prosess er altså et aktivt program i kjørende tilstand. Hvis et program bare ligger lagret på harddisken, er det bare en fil, men når det åpnes og bruker systemressurser, blir det en prosess. Hver prosess får sitt eget minneområde og sine egne ressurser, slik at prosesser holdes adskilt fra hverandre. Dette gjør systemet mer stabilt, fordi ett program normalt ikke skal kunne ødelegge et annet.
Multitasking betyr at operativsystemet kan håndtere flere prosesser samtidig. Hvis man for eksempel har både nettleser, musikkprogram og kodeeditor åpne samtidig, håndterer operativsystemet flere prosesser parallelt ved å bytte raskt mellom dem. Multithreading betyr derimot at én enkelt prosess kan ha flere tråder, altså flere arbeidsoppgaver, som kjører samtidig innenfor samme program. For eksempel kan en nettleser ha én tråd som spiller video, én som håndterer lyd og én som registrerer tastaturinput.
System calls er en sentral del av operativsystemet. System calls er grensesnittet mellom brukerprogrammer og operativsystemet. Når et program ønsker å lese en fil, skrive til disk eller bruke hardware, må det be operativsystemet om dette gjennom system calls. Dette gir sikkerhet og kontroll fordi programmer ikke får fri direkte tilgang til hele maskinen.
Device drivers, eller enhetsdrivere, er programvare som lar operativsystemet kommunisere med hardware. Uten drivere ville ikke operativsystemet forstå hvordan det skal snakke med tastatur, skjerm, harddisk eller andre enheter. Driveren fungerer som en oversetter mellom operativsystemet og den fysiske enheten.
Minnehåndtering er også et hovedtema. Operativsystemet må fordele minne til programmer, beskytte minnet og bruke det effektivt. Dette gjøres blant annet gjennom paging, segmentation og virtual memory. Paging deler minnet inn i sider, segmentation deler det inn i segmenter med regler og grenser, mens virtual memory lar programmer bruke virtuelle adresser som operativsystemet oversetter til faktiske fysiske adresser i RAM. Virtual memory gir bedre sikkerhet, bedre organisering og gjør at systemet kan håndtere minne mer fleksibelt.
I x86-arkitektur starter systemet i real mode. Real mode er en enkel 16-bits modus med direkte tilgang til fysisk minne og lite beskyttelse. Dette brukes typisk under oppstart. Protected mode er mer avansert og brukes i moderne systemer. Protected mode gir 32-bits funksjonalitet, minnebeskyttelse, virtual memory og tilgangskontroll. Overgangen fra real mode til protected mode er en viktig del av systemoppstart og OS-utvikling.
CPU-en bruker registers, som er små og svært raske lagringsplasser inni prosessoren. General-purpose registers som EAX, EBX, ECX og EDX brukes til generell databehandling. Segment registers som CS, DS og SS brukes til segmentering, mens control registers som CR0 og CR3 brukes til kontroll av CPU-modus og minnestyring. For eksempel brukes CR0 til å aktivere protected mode.
GDT, eller Global Descriptor Table, er en systemomfattende tabell som beskriver minnesegmenter. Den inneholder informasjon som base address, limit, access rights og granularity. GDT brukes for å definere hvordan minneområder skal brukes og beskyttes. LDT, eller Local Descriptor Table, fungerer lignende, men er knyttet til én spesifikk oppgave eller prosess. IDT, eller Interrupt Descriptor Table, brukes derimot til interrupts. IDT forteller CPU-en hvilken kode som skal kjøres når et interrupt eller en exception oppstår.
Interrupts er signaler som forteller CPU-en at noe krever oppmerksomhet. Hardware interrupts kommer fra hardware, som tastatur eller mus. Software interrupts kommer fra programmer. IRQ, Interrupt Request, er selve forespørselen fra hardware. Når et tastatur registrerer et tastetrykk, sendes for eksempel en IRQ. ISR, Interrupt Service Routine, er koden som faktisk kjøres som respons på interruptet.
PIC, Programmable Interrupt Controller, håndterer og prioriterer interrupts fra flere hardware-enheter før de sendes videre til CPU-en. Dette gjør at systemet kan organisere hvilke interrupts som skal behandles først.
PIT, Programmable Interval Timer, er systemets timer. PIT genererer periodiske interrupts som brukes til klokke, timing og task scheduling. Dette er avgjørende for at operativsystemet skal kunne holde styr på tid og fordele CPU-tid mellom oppgaver.
Når det gjelder minne i programmering, er stack og heap sentrale begreper. Stack brukes hovedsakelig til lokale variabler og funksjonskall, og styres automatisk. Heap brukes til dynamisk minneallokering, som malloc og calloc i C, og må styres mer manuelt. Hvis et program allokerer minne på heapen, men ikke frigjør det, kan det oppstå memory leaks.
Compiler og linker er også viktige. Compiler oversetter kildekode til object code eller machine code. Linker kombinerer object files og biblioteker til ett ferdig kjørbart program. Static linking betyr at bibliotekkode bygges inn i programmet ved kompilering, mens dynamic linking betyr at biblioteker kobles til under runtime.
C preprocessor er et tidlig steg i C-kompilering og håndterer blant annet #include, #define og conditional compilation før selve kompileringen skjer.
I kodegjenkjenning er det spesielt viktig å kjenne igjen GDT-strukturer. Hvis man ser felt som limit_low, base_low, base_middle, access, granularity og base_high, handler det svært sannsynlig om oppsett av en GDT entry.
For denne prøveeksamenen er det spesielt viktig å kunne forklare forskjellen mellom multitasking og multithreading, real mode og protected mode, GDT og IDT, hardware og software interrupts, stack og heap, samt static og dynamic linking.
Kort oppsummert tester denne eksamenen forståelse av hvordan et operativsystem organiserer programmer, minne, hardware og CPU gjennom strukturerte mekanismer. Kjernen er operativsystemets rolle, x86-moduser, minnehåndtering, descriptor tables, interrupts og systemtiming. Hvis man forstår hvordan disse delene henger sammen som et samlet system, blir både multiple choice-spørsmål og kodeoppgaver langt lettere å forstå.