Intro OS Flashcards
Hvilken generelle data registere har vi i IA32?
Følgende fire registere kan brukes som ‘general purpose registers’, men hver har også en spesialisert hensikt.
EAX - Dedicated accumulator which is used for all major calculations. (At 000)
ECX - The universal loop counter which has a special interpretation for loops. (At 001)
EDX - The data register, which is an extension to the accumulator, stores data relevant to the operation applied to the accumulator. (At 010)
EBX - Currently used for free storage but was originally used as a pointer in 16-bit mode. (At 011)
Each of these registers also have 16-bit or 8-bit subset names.
Hvilken generelle adresse registere har vi i IA32?
Brukes kun for address pointing.
ESP (At 100) - Stack pointer. Is used to hold the top address of the stack.
EBP (At 101) - Base pointer. Is used to hold the address of the current stack frame. It is also sometimes used as free storage.
ESI (At 110) - Source index. Commonly used for string operations. It has a one-byte opcode for loading data from memory to the accumulator.
EDI (At 111) - Destination index. Commonly used for string operations. Has a one-byte STOS instruction to write data out of the accumulator.
EIP Instruction pointer. Holds the current instruction address
They have 16-bit subset names, but no 8-bit subsets.
Hva brukes en stack-frame base pointer til?
En stack er typisk delt inn i frames. Og hver frame kan inneholde lokale variabler, parametere som skal sendes til andre prosedyrer, og ‘procedure linking information’..
Stackframe base pointeren (som er holdt i EBP registeret) identifiserer et fixed referanse punkt innen stack framen for den kallte prosedyren.
Den gir en lett aksess til data strukturer som er passed on til stacken, til return instruction pointeren, og lokale variabler som er lagt til på stacken av ‘the called procedure’.
Hva er et OS?
It is an extended machine (top-down view)
- Hides the messy details.
- Presents a virtual machine, easier to use.
It is a resource manager (bottom-up view)
- Each program gets time/space on the resource.
Hvilken kategorier av OS har vi?
Single-user, singel-task
- Historisk, og sjelden i dag.
Single-user, multi-tasking
- PC-er og arbeidsstasjoner kan være konfigurert som dette, typisk mobiler i dag.
Mulit-user, multi-tasking
- Mye i bruk, gamle mainframes, og i dag for håndholdte, PC-er, arbeidsstasjoner og servere.
Distributed OSes
- Support for administrering av distribuerte ressursser.
Realt-time OSes:
- Support for systemer med sanntids krav, slik som biler, kjernereaktorer o.l.
Embedded OSes:
- Innebyggd i en enhet for å kontrollere en spesifikk type equipment som mobiler, mikrøbølgeovner, vaskemaskiner, etc.
Hva er det som definerer interfacet mellom OS’et og brukere?
Et set med forskjellige systemkall.
Å gjøre et systemkall ligner på å kalle en prosedyre eller funksjon, men systemkall går inn i kjernen (OS’et).
Hvilken to namespaces deler vi et OS?
User space og kernel space
Hvilken steg inneholder et systemkallet read?
count = read(fd,buffer,nbyte)
- Parametere blir pushet på stacken.
- Applikasjonen kaller biblioteks (library) code.
- Plasserer systemakall nummeret i registeret.
- Kaller kjernen (TRAP / exceptioninstruksjon)
- Kjener undersøker systemkall nummeret.
- Finner så den forrespurte systemkall handleren
- Eksekverer den forrespurte operasjonen - Returnerer til bibliotek og gjør cleanup.
- Øker instruksjons pekeren
- Fjerner parametere fra stacken - Fortsetter prosessen (applikasjonen).
Hva er en interrupt?
Interrupts er elektroniske signaler som (vanligvis) resulterer i en tvunget overføring av kontroll til en interrupt handling routine.
Hva slags events forrårsaker en interrupt?
Interrupts forrårsakes av asynkrone hendelser som når en disk operasjon er ferdig, innkommende nettverkspakker, eller utgåtte timers.
Hva er en IDT (ifht. interrutps)
En IDT er en forkortelse for et interrupt description table.
En IDT assosierer hver interrupt med en code descriptor (pointer to code segment).
Brukes altså av prosessoren for å avgjøre den korrekte responsen til interrupts og exceptions.
Hva slags events forrårsaker en exception?
Exceptions forrårsakes av synkrone hendelser generert når prosessoren oppdager en predefinert betingelse når den eksekverer en instruksjon.
Hvilken type exceptions har vi?
TRAPS
- The processor reaches a condition the exception handler can handle (e.g., overflow, break point in code like making a system call, …).
FAULTS
- The processor reaches a fault the exception handler can correct (e.g., division by zero, wrong data format, …) .
ABORTS
- Terminate the process due to an unrecoverable error (e.g., hardware failure) which the process itself cannot correct.
Responderer prosessoren forskjellig på interrupts og exceptions?
Nei, i hovedsak blir de håndtert på samme måte ved at prosessoren sjekker signalet opp mot en IDT for å avgjøre den korrekte responsen (hvilket kode segment som må kjøres).
Hva er forskjellen på User Level og Kernel Level?
Applikasjoner og flere sub-systemer kjører som regel i user mode (level 3)
- Protected mode.
- Ikke tilgang til HW eller device drivere direkte, kun via API.
- Aksess kun til tildelt minne.
- Begrenset instruksjon set.
OS kjører i kernel mode
- Real mode.
- Aksess til hele minnet.
- Alle instruksjoner kan bli eksekvert.
- Bypasser sikkerhet.