Operativsystemer - dopsys Erik Ernst eernst@cs.au.dk
[Q/A] Mange deltagere er nu på 2. år af datalogistudiet eller cand.it., med dcomnet Er din baggrund anderledes? dopsys 2
Praktiske oplysninger http://cs.au.dk/dopsys dopsys 3
Forelæsninger Fredag 12.15-14, Store Auditorium, IT-huset Onsdag 14.15-16, Store Auditorium, IT-huset 4 timer pr. uge, evt. lidt mindre NB: ugen løber fra torsdag til onsdag! dopsys 4
Undervisningsmateriale Lubomir F. Bic og Alan C. Shaw Operating Systems Principles 1. udgave, Pearson-Education, 2003 ISBN 0-13-026611-6 + supplerende materiale fra www-siderne. dopsys 5
Øvelser Alle øvelser foregår i Stibitz: Hold 1 Tirsdag 15-19 Stibitz-113 Hold 2 Fredag 8-12 Stibitz-113 Hold 3 Mandag 8-12 Stibitz-113 Hold 4 Mandag 8-12 Stibitz-123 Holdbytte under hensyntagen til holdstørrelser. Styres af instruktorerne. dopsys 6
Ugesedler og opgaver Ugeseddel for uge x offentliggøres på hjemmesiden ca. midt i uge x-1. Tavle- og diskussionsopgaver Een udvalgt startopgave Ugeopgave Ugeopgaver er obligatoriske, laves i grupper. 2-3 personers grupper dannes ved de første øvelser. dopsys 7
Eksamen Kræver at samtlige ugeopgaver er godkendt. Eksamen er mundtlig, uden forberedelsestid og varer 15 minutter per studerende (plus 5 min. til votering). Eksamenspensum inkluderer ugeopgaverne. Medbring en kopi af besvarelser af ugeopgaverne med instruktorens kommentarer og underskrift. Vær opmærksom på tilmelding! dopsys 8
Clickers Et typisk forelæsningsproblem: Blodhastighed 0 mm 3 /s Spørgsmål er altid velkomne, men svært at organisere høj aktivitet Med clickers kan alle byde ind på een gang, uden kaos ;-) Tages i brug på dette kursus 9
[Click] Baggrund som angivet på tavlen (A/B/..) dopsys 10
spørgsmål om praktiske ting? dopsys 11
[Q/A] Hvilke operativsystemer har du brugt? dopsys 12
Operativsystemer Målbeskrivelse Målet med kurset er at give den studerende kendskab til opbygning og virkemåde af operativsystemer. Herunder hvorledes operativsystemer dels kan opfattes som en abstrakt maskine, der stiller en række primitiver og abstraktioner til rådighed via systemkald, dels som en administrator af maskinresurser, såsom CPU, lager og ydre enheder. dopsys 13
Organisation af en Computer.. kan opfattes som niveauer af virtuelle maskiner*: software hardware *A.S. Tanenbaum: Structured Computer Organisation. 5th edition, Prentice-Hall, 2005. dopsys 14
ISA-niveauet.. baseret på von Neumann maskinarkitektur: Program og data Centrale begreber: Registre (eks: PC, SP, PSW, ) Lagermodel (eks: 4 Gb byte-adresserbart lager) Instruktionssæt, instruktionsformat Datatyper og adresseringformer registre.. instruktioner udføres via fetch-decode-execute cycle i hardware ydre enheder (I/O devices) dopsys 15
Arkitektur-varianter Shared-memory multiprocessor: Multicomputer: Distributed-memory multiprocessor: dopsys 16
Hardware vs. Applikations-niveau Hardware/ISA niveau Maskininstruktioner: Læse/skrive registre og lagerceller Aritmetiske/logiske operationer Forgreninger og hop Lageret: Lineær sekvens af celler Eksternt lager (eks harddisk): Spor og blokke Læse og skrivehoveder Ydre enheder: Tilgang via ydreenhedsregistre software Applikationsniveau Klasser oa. komplekse typer Kontrolstrukturer Moduler Procedurer/metoder Programmer/processer Filer og kataloger Uniformt højniveauinterface Compiler Assembler Linker OS dopsys 17
Eksempel: udskrivning af fil #include <stdio.h> int main(int argc, char *argv[]) { int c; FILE *fp; fp = fopen(argv[1],"r"); c = getc(fp); while (c!= EOF) { putchar(c); c = getc(fp); } exit(0); } dopsys 18
Symbolsk maskinsprog.globl main.type main, @function main: pushl %ebp movl %esp, %ebp subl $24, %esp movl (%eax), %eax movl %eax, (%esp) call fopen movl %eax, -8(%ebp) movl -8(%ebp), %eax movl %eax, (%esp) call _IO_getc movl %eax, -4(%ebp).L2:.L4:.L3: cmpl $-1, -4(%ebp) jne.l4 jmp.l3 movl -4(%ebp), %eax movl %eax, (%esp) call putchar movl -8(%ebp), %eax movl %eax, (%esp) call _IO_getc movl %eax, -4(%ebp) jmp.l2 movl call $0, (%esp) exit dopsys 19
%>cat eks.txt dopsys %>strace -o syscalls.log example eks.txt execve("./example", ["example", "eks.txt"]= 0 uname({sys="linux", node="zebra03",...}) = 0 brk(0) = 0x804a000 fstat64(3,...) = 0 munmap(0xb7fdf000, 134002) = 0 brk(0) = 0x804a000 brk(0x806b000) = 0x806b000 open("eks.txt", O_RDONLY) = 3 fstat64(3,... = 0 mmap2(null, 8192,...) = 0xb7ffe000 read(3, "dopsys\n", 8192) = 7 fstat64(1,...) = 0 mmap2(null,...) = 0xb7ffd000 write(1, "dopsys\n", 7) = 7 read(3, "", 8192) = 0 munmap(0xb7ffd000, 4096) = 0 exit_group(0) =? dopsys 20
[Q/A] C-programmering er vigtigt i dette kursus, men forudsættes kendt og læres ved selvstudium Hvilke forudsætninger har du i C? dopsys 21
OS som abstrakt maskine..implementerer en samling primitiver kaldet systemkald:.. maskinnære detaljer er abstraheret væk. dopsys 22
OS som virtuel maskine.. hardware-resurser deles mellem programmer under afvikling: Virtuel maskine til rådighed for hvert program under afvikling. Understøtter deling af de fysiske maskin-resurser. dopsys 23
OS som resurse-administrator.. hardware-resurser skal udnyttes bedst muligt : Aspekter: Adgang til resurser. Parallelisme og udnyttelse. Fairness og fremdrift. Responstid og deadlines. dopsys 24
Hardware Interface Systemkald Virtualisering Resurse-administration Traps Interrupts CPU tilstande dopsys 25
.. intern hændelse i CPU en: Traps Eksplicit: supervisor call (SVC) Implicit: division med 0, lagertilgang, dopsys 26
Interrupts.. hardware signal fra ydre enheder: Process management: timeout interrupt og schedulering. Håndtering af ydre enheder: ved afslutning af I/O operationer. dopsys 27
CPU tilstande Behov for at kontrollere udførelsen af visse instruktioner: Tilgang til ydre enheder Tilgang til system-registre og -flag Systemtabeller CPU tilstande: Privileged / kernel / supervisory mode: Kan bruge det fulde instruktionssæt Non-privileged / user mode: Kan kun bruge et begrænset instruktionssæt Tilstandsskift sker i forbindelse med: Interrupts og traps Systemkald dopsys 28
[Q/A] Forklar hvad der kan gå galt hvis CPUtilstande afskaffes dopsys 29
Systemkald.. udføres i privilegeret CPU-tilstand: Typiske kategorier af systemkald: Styring af processer Brug af memory Tilgang til filer Input/output dopsys 30
Udvalgte POSIX systemkald dopsys 31
Vigtige emner i kurset Processer og koordinering: Begreber omkring processer og tråde. Kommunikation og synkronisering. Schedulering og deadlocks. Lageradministration (memory management): Virtuel hukommelse. Paging og segmentering. Filsystemer og input/ouput Filer og kataloger. Device-drivere og buffering. dopsys 32
Kursets organisering Forelæsningerne: Grundlæggende principper og begreber bag operativsystemer. Unix/Linux OS vil oftest blive brugt som eksempel. Øvelserne: Opgaver/diskussion i forlængelse af forelæsninger. C Programmering under Linux OS. Eksperimenter med Linux OS kernen via VMware. dopsys 33
Opsummering Perspektiv på operativsystemet: Udvidet maskine (systemkald). Virtual maskine for programmer. Resurse-administrator. Hardware interface: Traps og interrupts CPU tilstande: privilegeret/uprivilegeret tilstand User-mode vs. kernel-mode dopsys 34