Översikt av operativsystem (kap 1 & 2) Vad är ett operativsystem? Vilka komponenter innehåller ett operativsystem? Vilka tjänster erbjuder operativsystemet till användare, processer och andra system? På vilka olika sätt kan man strukturera ett operativsystem?
Vad är ett operativsystem (OS)? Ett program som agerar mellanhand mellan användarna och datorns hårdvara. OS:et kontrollerar hårdvaran och fungerar som en bas för applikationsprogram. Mål för ett operativsystem: Köra användarprogram och underlätta för användaren att lösa problem Användarvänlighet Prestanda Effektivt användande av resurser
Vad ingår i operativsystemet? Det finns ingen universell accepterad definition, men vanligast är…. ”Det program som alltid är igång” – också kallad kärnan (the kernel) Allting annat är antingen systemprogram eller applikationsprogram
Multiprogrammering OS:et kan ha flera program i minnet samtidigt Anledning: ett enda program använder sällan all CPU-tid (eller alla I/O-enheter) När ett program befinner sig i vänteläge växlar CPU:n till nästa När CPU:n växlar så fort mellan program att användaren kan interagera med alla dessa kallas det time sharing (eller multitasking) Svarstiden bör vara < 1 sekund
Operationer i operativsystemet Moderna OS är avbrottsdrivna (interrupt driven) För varje typ av avbrott finns en service-rutin OS:et måste kunna skydda sig självt och andra systemkomponenter Dual-mode (user mode och kernel mode) – bit i hårdvaran Vissa instruktioner är priviligerade – får bara köras i kernel mode
Processhantering Ett program som exekverar (körs) kallas för en process Ett system består av både operativsystemprocesser och användarprocesser En process behöver resurser (t ex CPU-tid, minne, filer, I/O) – allokeras av operativsystemet OS:et ansvarar också för följande: Skapa och avsluta processer Schemaläggning av processer Synkronisering av processer Kommunikation mellan processer
Minneshantering Vad skall ligga i minnet vid varje tillfälle? OS:et försöker optimera både CPU-utnyttjandet och svarstiden för användarna OS:et ansvarar för följande: Hålla reda på vilka delar av minnet som används och av vem Bestämma vilka processer och data som skall flyttas in i och ut ur minnet Allokera och avallokera minne efter behov
Lagringshantering All information lagras i logiska lagringsenheter – filer Filerna är oftast organiserade i kataloger OS:et ansvarar för följande: Skapa och ta bort filer och kataloger Tillhandahåller primitiver för att manipulera filer och kataloger Lagra filer på sekundärminne Bestämma vem som får accessa vad Filerna kan lagras på olika fysiska media med olika egenskaper (kapacitet, access-tid mm) OS:et ansvarar för allokering av diskutrymme, hantering av ledigt utrymme och diskschemaläggning
I/O-systemet Ett av syftena med ett operativsystem är att gömma detaljer om specifika hårdvaruenheter för användaren OS:et ansvarar för följande: Buffra och cacha I/O-data Ha ett generellt drivrutinsgränssnitt Ha drivrutiner för de specifika hårdvaruenheterna
Skydd och säkerhet Access till data måste regleras i ett system med flera användare och/eller där flera processer kan exekvera samtidigt Skydd – mekanismer som kontrollerar processers eller användares access till operativsystemet Säkerhet – Försvar mot interna och externa attacker Virus, maskar, denial-of-sevice, identitetsstöld
Tjänster i operativsystemet
Användartjänster Användargränssnitt – CLI, GUI, batch Programexekvering I/O-operationer – access av filer och I/O-enheter Filsystemsoperationer – skapa, läsa och skriva filer mm Kommunikation – processer kan behöva utbyta information (internt eller externt) Feldetektering
Systemtjänster Tjänster som ser till att systemet opererar effektivt: Resursallokering Bokföring – hålla reda på hur mycket resurser var och en använder Skydd och säkerhet
Systemanrop Gränssnitt för operativsystemets tjänster Är oftast funktioner i C eller C++ Accessas oftast genom ett API Win32 för Windows POSIX för UNIX, Linux och Mac OS X Java för JVM (Java Virtual Machine) Portabilitet och enkelhet
Exempel stdio.h (del av API)
Exempel på systemanrop i Windows och Unix
Systemprogram Systemprogram är program som underlättar programutveckling och exekvering. Olika kategorier finns: Filhantering – skapa, ta bort, kopiera, lista, skriva ut filer Statusinformation – datum, tid, tillgängligt minne eller diskutrymme Filmodifiering – texteditorer Programmeringsstöd – kompilatorer, debuggers, länkare, laddare Kommunikation – e-mail, Web, filöverföring, chat
Design och implementation av OS Designen är beroende av hårdvaran och typ av system Användarmål och systemmål Användarmål – lätt att använda och lära sig, snabbt, pålitligt och säkert Systemmål – lätt att designa, implementera och underhålla, flexibelt, pålitligt, felfritt och effektivt Implementation Skrivs oftast i ett högnivåspråk (C eller C++) Bara en liten del av koden är prestandakritisk Viktigt med bra datastrukturer och algoritmer
Enkel struktur – MS-DOS
UNIX
Lagrad struktur
Mikrokärnor Flyttar så mycket som möjligt från kärnan till user space Kommunikation sker mellan användarmoduler genom utbyte av meddelanden Fördelar: Lättare att bygga ut OS:et Lättare att flytta till ny hårdvara Pålitligare och säkrare Nackdel Sämre prestanda pga mycket kommunikation mellan kernel och user space
Mac OS X
Modulbaserade OS Består av en kärna och ett antal moduler som kan laddas in dynamiskt vid behov
Virtuella maskiner En virtuell maskin tillhandahåller ett gränssnitt som är identiskt med den underliggande hårdvaran Skapar illusion att en process (ofta ett OS) har sin egen processor och sitt eget minne Flera OS kan köras i samma dator, var och en i sin egen virtuella maskin
VMware 26
The Java Virtual Machine 27