Modul 1 - Processer Flashcards
Hur funkar heapen och vad allokeras här?
Heap är en region i data minnet som inte hanteras automatiskt. Utan du måste själv allokera minne genom kommandon malloc() eller calloc() som är inbyggda funktioner i C. När man allokerat minne i heapen, så ansvarar man själv för att frigöra minnet när man använt klart det. Används för det mesta för att allokera variabler som ska vara mer “långvariga” eller för större datastrukturer.
Unlike the stack, the heap does not have size restrictions on variable size (apart from the obvious physical limitations of your computer). Heap memory is slightly slower to be read from and written to, because one has to use pointers to access memory on the heap.
Unlike the stack, variables created on the heap are accessible by any function, anywhere in your program. Heap variables are essentially global in scope.
Hur funkar stacken och vad allokeras här?
Stacken är en datastruktur som används för att lagra temporära variabler som skapas av varje funktion. Lagrar enligt “LIFO” (last in, first out). Varje gång en ny variabel deklareras läggs den i stacken och när programmet kör ut funktionen så kommer de variablerna som skapades i funktion bli fria “freed” d.v.s. de tas bort från stacken.
To summarize the stack:
- The stack grows and shrinks as functions push and pop local variables.
- There is no need to manage the memory yourself, variables are allocated and freed automatically.
- The stack has size limits.
- Stack variables only exist while the function that created them, is running.
Stack vs heap?
Stack:
- Very fast access
- Don’t have to explicitly de-allocate variables
- Space is managed efficiently by CPU, memory will not become fragmented
- Local variables only
- Limit on stack size (OS-dependent)
- Variables cannot be resized
Heap:
- Variables can be accessed globally
- No limit on memory size
- (Relatively) slower access
- No guaranteed efficient use of space, memory may become fragmented over time as blocks of memory are allocated, then freed
- You must manage memory (you’re in charge of allocating and freeing variables)
- Variables can be resized using realloc()
Vilka minnesaddresser brukar stacken, heapen och koden finnas? (Tenta fråga 1.3) .
-
Hur funkar den inbyggda funktionen free()? (Heap)
Tenta fråga 1.4
-
Skillnad mellan user mode och kernel mode?
-
Vad gör instruktionen INT?
- The special instruction, INT 0x80, will set the execution in kernel mode and jump to the 0x80 position in the interrupt table (IDT).
Vad är skillnaden mellan systemanrop och biblioteksrutiner? Vilka tillhör operativsystemet?
-
Hur fungerar automatisk minneshantering på ex Java?
-
Varför virtualiserar man CPU:n?
För att ge illusionen om att det finns flera CPU:n än vad det egentligen finns. Detta gör man så att flera processer kan köras samtidigt.
Vad är en process?
En process är ett program som körs.
Hur virtualiserar man CPU:n? (Basic)
Man virtualiserar genom att switcha mellan olika processer. Alltså köra en process en stund, sen stoppa den och byta till en annan process o.s.v.
Tekniken heter time sharing av CPU:n, låter användare köra många processer samtidigt. Den potentiella kostnaden är prestanda, då varje process kommer köra långsammare om CPU:n måste delas.
Vad är time sharing?
En teknik som används av OS:n för att dela på en resurs. Genom att låta att resursen används en liten stund av en entitet (entity) och sen en liten stund av en annan o.s.v.
På detta sätt kan exempelvis CPU:n eller en nätverksläng delas av många samtidigt.
Vad är en mekanism?
Det är låg level (low-level) metoder eller protokoll för att implementera nödvändig funktionalitet.
Mekanismer ger helt enkelt svaret på hur något ska ske. Exempelvis hur ska OS:n utföra en context switch?
Vad är en policy?
En algoritm som gör beslut inom OS:n.
Exempelvis kommer schemaläggnings policyn bestämma vilket program OS:n ska köra givet många möjligt körbara program.
Policyn ger svaret på vilka grejer som ska ske. Exemeplvis vilken process ska OS:n köra?
Vad är en context switch?
Det är en time sharing mekanism som ger OS:n förmågan att kunna stoppa ett program och köra ett annat program på en given CPU.
Vad är en processens machine state?
Machine state är vad ett program kan läsa eller uppdatera när den körs.
Vilka kompontenter består processers “machine state” av?
Machinestate är vad ett program kan läsa eller uppdatera när den körs.
Består av:
Minnet - Då instruktioner och data som programmet läser och skriver till ligger här. Minnet som en process kan addressera till kallas för address space.
Register - Instruktioner läser eller uppdaterar register.
Program counter (PC) - Beskriver vilken instruktion i porgrammet som körs.
Stack pointer och frame pointer - Hanterar stacken för funktions parametrar, lokala variabler och retur addresser.
Lagringsenheter - Här finns exempelvis information om vilka filer som en process har för tillfället öppet.
Explain what the instruction pointer (EIP) also known as program counter (PC), stack pointer (ESP), base pointer (EBP) and general purpose registers are? The CPU can be described by these.
- The instruction pointer (EIP): a reference to the next instruction to execute
- The stack pointer (ESP): a reference to the top of the stack.
- The base pointer (EBP): a reference to the current stack frame.
- General purpose registers: used by a process to store data.
What is a stack frame?
The stack frame is the collection of all data on the stack associated with one subprogram call.
The stack frame generally includes the following components:
- The return address
- Argument variables passed on the stack
- Local variables
- Saved copies of any registers modified by the subprogram that need to be restored (e.g. $s0 - $s8).
The heap API?
- void *malloc(size_t size) : allocate size bytes on the heap, returns a pointer to the structure.
- free(void *ptr) : deallocates a structure pointed to by ptr
- void *calloc(size_t nmemb, size_t size) : allocate an array of nmemb element of size bytes initialize it to zero.
- void *realloc(void *ptr, size_t size) : changes the size of the structure pointed to by ptr.
How does the OS create a process from a program?
- The program is found on some external data storage (ex. hard-drive)
- Memory is allocated to hold the: code, static data, heap and stack.
- A process context is created holding the necessary register values.
How does the process execution work?
- Direct execution:
The operating system loads the code of the user process, sets the stack and heap pointers and jumps to the first instruction of the process.
- Creates an process entry on the process list.
- Allocates memory for the program.
- Loads the program to the memory from the hard-drive.
- Cleans the registers.
- Executes main().
Vad är en process lista?
En process lista används för att hålla reda på alla processer som är redo att köras och ytterliggare info för att se vilken process som körs.