Dagens OS En översikt av dagens OS Titt på hur de gör Unix, Linux och Windows Unix Många varianter Mycket gemensamt Unix En del som skiljer
Vanliga program, shell, etc System calls Interupts and traps Standard libraries OS Hardware Terminal handling Raw TTY Cooked TTY Line Disciplines Character devices Sockets Network protocols Routing Network device drivers Disk device drivers Process dispatching Hardware File naming File Systems Buffer cache Map ping Page fault Virtual memory Page chache Signal handling Process creation and termination Process scheduling Begrepp Hur skapas en process Deamon Process Föräldrar & barn 237 237 237 237 Processkommunikation Pipes - signaler Zombie Fork 1057 1057 Exec
Trådar - Unix pthreads User space space Problem enl tidigare lektioner Processer implementation Två delar - user och kernel Process table (finns alltid) Parametrar för schemaläggning Olika minnesreferenser Signaler Diverse Implementation User structure Maskinregister Tillståndet för systemanrop Schemaläggning Prio-nivåer Round-robin -20 20 File descriptors Accounting stack prio = CPU + nice + base
Boot En process Läser första sektorn (MBR) Läser in kärnan Stack Hoppar till kärnan Fixa till systemet för körning Device drivers - statiska/dynamiska Process 0, 1 och 2 Heap Data Text Minnesmappad fil Unix använder paging Demand paging User structure + page table Om detta finns i minnet så kan processen schemaläggas Page daemon Core map
Algoritm Page deamon kollar med jämna mellanrum Finns tillräckligt med lediga frames? Jäpp - Gör ingenting Nix - Flytta sidor så att det finns tillräckligt Algoritm Klocka med en visare Klocka med två visare Mycket byte och inte tillräckligt med sidor swapper flyttar processer till disk Trådar - Linux clone mer kontroll Linux
Schemaläggning Linux Algoritm threads Real-time FIFO Real-time round robin Timesharing if (class == real_time) goodness = 1000 + priority if (class == timesharing && quantum > 0) goodness = quantum + priority if (class == timesharing && quantum == 0) goodness = 0 Problem (2.4) 2.6 Många processer funkar inte bra Flera processorer funkar inte heller så bra
Process 3GB adress + 1GB reserverat Kärna alltid i minne Grupp av fria sidor Reserverat Minneshantering Buddy algorithm En process kollar det finns tillräckligt Nya lediga genom att kolla vilka som använts minst, delade sidor som inte används och vanliga sidor Annan process skriver modifierade sidor till disk Area Page User Windows
Object Manager En enhet => full koll och enhetligt gränssnitt Skapas vid boot Paged / non-paged Säkerhet Object name space Schemaläggning Processer: realtime, high, above normal, normal, below normal, idle. Trådar: time critical, highest, above normal, normal, below normal, lowest, idle. 42 => 32
Schemaläggning Basprioritet Nuvarande prioritet Prioritetskö Round-robin Trådbaserat Tillfällig höjning Prioritetsinversion Schemaläggning Ingen central tråd Tråden går in i kernel Tråd blockar Signal Quantum IO klar Wait klar Processer Process Jobs - samling processer Process - resurser Thread - schemaläggs Fiber - tråd i user space Behöver inte byta adressområde, snabbare, mindre adressområde Sidorna kan vara i tre tillstånd: free, commited, reserved Paging files. Kärna, delat mellan alla processer Ogiltliga Bara läs Ingen barn - förälder relation Mappa filer i minne (filen och minnet kan vara ur sync) För programmet Stödjer delat minne Copy-on-write
Implementation Page lists Demand paging Försöker hålla ett visst antal lediga sidor Varje process har en working set, med max och minimum (kan ändras) Använder en lokal algoritm med lite extra styrning baserat på det globala läget. Skriv disk Process klar Nolla Balance set manager => Working set manager (stora passiva först, sedan mindre, sist den aktiva) Modifierad Beredd Ledig Nollad Trasigt