Repetisjon - Modul 1 Lars Vidar Magnusson October 7, 2011 Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 1 / 18
Forelesning 1 - Maskinvare De fire hovedkomponentene i en datamaskin og deres funksjon Prosessor, minne, I/O moduler og systembuss Prosessorregistere To typer: bruker og kontroll Instruksjoner Assemblykode som forteller en prosessor skal operere Iterrupts (avbrudd) Hardwaremekanisme for å bryte normal operasjonsekvens Minne hierarki Cache, RAM, og virtuelt minne, strukturert som en pyramide Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 1 / 18
Forelesning 1 - Operativsystem De tre nevnte fordelene ved bruk av et operativsystem Abstraksjon fra hardware. Utnyttelse av resurser. Enklere oppgradering av maskinvare. Historien til operativsystem Utviklet seg fra batch til time-sharing Viktige milepæler Prosessen Minnehåndtering Sikkerhet (innsyn og integritet) Resursstyring Det moderne operativsystemet Tråder, SMP, objektorientert... Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 2 / 18
Forelesning 2 - UNIX Historien til UNIX Unix System III... SVR4 og 4.4BSD Strukturen til et UNIX system Maskinvare, Kernel, Systemkallgrensesnitt, UNIX kommandoer og applikasjoner Moderne UNIX systemer Modulisert og oppgradert Linux, SVR4, 4.4BSD og Solaris 10 Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 3 / 18
Forelesning 2 - Linux Historien til Linux Linus Thorvalds, FSF og Richard Stallman Åpen kildekode med mange bidragsytere Linux kjernen (kernel) Monolithic med lastbare moduler (preemptive) GNU/Linux Linux står for kommunikasjon med maskinvaren. GNU kommuniserer med kjernen Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 4 / 18
Forelesning 2 - Prosessen Prosessens oppbygning og funksjone ID, status, program counter, memory, I/O status... Gjør det mulig å kjøre flere prosesser (programmer) samtidig Struktureres i process control blocks Prosessens image Inneholder programmet, minnet (stack og heap) og control block Starte prosesser Ny batch, ny interaktiv bruker, spawned fra eksisterende Stoppe prosesser Normal avslutting, segmentation error, divide by zero... Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 5 / 18
Forelesning 2 - Prosessmodeller Hva er en prosessmodell? I hvilke tilstander en prosess kan være Two-state modellen Not running og Running Five-state modellen New, Ready, Running, Blocked og Exit Suspended states Flytte låste prosesser til virtuelt minne. Utvide Ready og Blocked med Ready/Suspend og Blocked/Suspend Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 6 / 18
Forelesning 2 - Kjøring av OS Kjøring av operativsystemet Kernelen ligger på utsiden/separat fra prosessene Brorparten av operativsystemet kjøre i prosessene Operativsystemet består bare av prosesser Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 7 / 18
Forelesning 2 - Prosesshåndtering i SVR4 Kompleks prosessmodell Created, Ready to run in Memory, Ready to run Swapped, Asleep in Memory, Sleep Swapped, Kernel running, User running, Preempted and Zombie Hvordan en prosess startes 1 Alloker plass 2 Lag identifier 3 Kopier image fra forelder 4 Øk tellere 5 Sett til Ready 6 Return 0 og ny PID Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 8 / 18
Forelesning 3 - UNIX Shells og Kommandolinje grensesnitt Beskrivelse Command-line interpreter (kommandolinjetolker) Bourne, Korn, C, Bash... Definisjon Et kommandonavn og et valgfritt antall elementer Tolking (parsing) av kommandolinjen Les inn kommandonavn og argumenter, Sjekk om programmet eksisterer i PATH, Kjør kommando eller meld i fra om feil. Kjøring av kommandolinjen Lag ny prosess, Legg alle argumenter til på programstack, Start kommando Kjøre en kommando i bakgrunnen En i forgrunn, mange i bakgrunnen (&) Pathname expansion Wildcards som erstattes med filer (? * []) Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 9 / 18
Forelesning 3 - Input og Output Standard Input og Output Standard er keyboard og terminal Redirection Standard Input og Output kan flyttes (><) Appending/Legge til Output Legge til i stedet for å skrive over med >> Pipes Output fra et program til Input til et annet Kan brukes som et filter Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 10 / 18
Forelesning 3 - Bash builtins og GNU/Linux utitilities Bash builtins Innebygde verktøy i Bash Vises med help og help KOMMANDO cd, echo, kill... GNU/Linux har en rekke verktøy Filhåndtering, Søking/Sortering... cp, mv, cat, man, ls, more, grep... Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 11 / 18
Forelesning 4 - Bash-skripting Beskrivelse av et Bash-skript En samling kommandoer i en og samme fil Hvordan lage et Bash-skript? Starte filen med #!/bin/bash og endre rettigheter med chmod Avansert redirecting Standard Error redirectes med 2> Oppstartskript /etc/profile,.bash profile,.profile... Separere kommandoer NEWLINE \; & Command line expansion (kommandolinje utvidelser) Brace, Tilde, Parameter, Variable, Command substitution, Arithmetic, Word splitting og Pathname Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 12 / 18
Forelesning 4 - Parametere, Variabler og Kontrollstrukturer Flere måter å lage og bruke variable i Bash VAR=value, $VAR, declare, unset... Kommandlinje variable $0, $1, $2,... $N Antall argumenter i $# Andre viktige parametere og variabler PID i $$, Exit status i $?, Hjemmekatalog i $HOME Kontrollstrukturer if TEST then COMMANDS fi for LOOPINDEX in ARGUMENTLIST do COMMANDS done while TEST do COMMANDS done until TEST do COMMANDS done case TEST in PATTERN1) COMMANDS1 ;; PATTERN2) COMMANDS2 ;; esac... Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 13 / 18
Forelesning 5 - C programmering C er et kompilert språk Kildekode Header- og Source-filer som knyttes sammen med #include Kompilering Preprocessing, Compiling, Assembling og Linking Funksjoner Består av header og body Innebygde datatyper int, float, char, long,... Egendefinerte datatyper Enumerations, Unions og Structures Pekere, Arrays og teskstrenger Representert som adresser til begynnelsen av elementet Kontrollstrukturer if, switch, for, while, do-while... Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 14 / 18
Forelesning 6 - Tråder Beskrivelse av en tråd Støtte for flere parallelle eksekveringer i samme prosess Deler samme minneområde Oppdaterte prosess-modeller og -design Deler minne, separate stacks og programteller Fordeler med tråder Mindre tid å starte, mindre tid å bytte, trenger ikke involvere kernel User-level tråder Trådene blir kontrollert helt og holdent i prosessene Kernel-level tråder Gjør det mulig å fortsette kjøring av andre tråder i samme prosess selv om en skulle bli låst. Solaris tråder Bruker en kombinasjon Linux tråder Linux skiller ikke mellom prosesser og tråder, men kan plassere flere prosesser i samme gruppe Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 15 / 18
Forelesning 7 og 8 - Systemkall Arkitekturen til et standard UNIX system Systemkallene kan struktureres i kategorier Filsystem, Prosess, IPC, Nettverk, Scheduling,... Dokumentasjon Den mest detaljerte dokumentasjonen finnes i manualsidene (man) Filsystem open, creat, close, write, read... Prosesskontroll fork, wait, waitpid, exit, kill, execve Interprocess communication (IPC) msgget, msgctl, msgsnd, msgrcv, shmget, shmat Pthreads (-lpthreads) pthread create, pthread join, pthread exit Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 16 / 18
Forelesning 9 - Concurrency/Samtidighet Concurrency begrepet Kjør flere programmer samtidig, Fordele et program utover flere prosessorer eller maskiner Essensielle prinsipper Critical section, deadlock/vranglås, mutual exclusion, race conditions Vanskeligheter med concurrency Deling av globale resurser. Vanskelig å finne feil. Vanskelig å fordele jevnt Økte arbeidsoppgaver for OS Kjøretiden må være uavhengig av andre samtidige programmer/prosesser Prosesser i konkurranse Deadlock, Starvation Prosesser med delte resurser Deadlock, Starvation og Coherency Prosesser som kommuniserer Ingen delte resurser borsett fra kommunikasjonskanalen, så ingen mutual exlusion nødvendig Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 17 / 18
Forelesning (9)10 - Concurrency mekanismer Krav til mutual exclusion Må opprettholde ekslusiviteten, at ingen antagelse blir gjort i forhold til ytelse,... Interrupt disabling Sørger for mutual exclusion Maskinkode instruksjon Kan brukes til mutual exclusion Det finnes mange typer mekanismer Semaphore, Binary semaphore, Mailbox, Spinlock... Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 18 / 18
Deadlock og Minnehåndtering Disse ble temaene ble akkurat presentert. Lars Vidar Magnusson () Forelesning i Operativsystemer 07.10.2011 October 7, 2011 19 / 18