Innehåll Operativsystem Vad är operativsystem och hur fungerar de Vad är ett OS? Syfte Att tillåta flera program att köra samtidigt Att fungera som ett abstraktionslager mot hårdvaran Att hantera olika resurser 84 Operativsystemets funktion Ett operativsystem (OS) är det som kontrollerar alla aktiviteter som sker i en dator Microsoft Windows XP, Mac OS X, Linux, UNIX Operativsystemet interagerar både med datorn och de olika applikationerna Hanterar processorns resurser Hanterar RAM-minnet Håller koll på lagringsresurserna Ser till att input och output fungerar som det ska Etablerar grunderna för användarytan Vart hittar men ett OS? Persondatorer Handdatorer/Mobiltelefoner Stordatorer Inbyggda system (embedded systems) Ett radarsystem En symaskin En tryckpress Olika krav på operativsystemet beroende på vart de finns 86 OS hanterar processorns resurser Ett OS styr också processorn lite, fast på en högre nivå. Många aktiviteter = många processer som behöver CPU-kraft. Kommandon för program, input från mus och tangentbord, information till skärm, skrivare, nätverk OS hjälper processorn att fördela arbetet så att alla processer får utnyttja CPUn. Alla ska få lika mycket kraft och CPUn ska inte vara sysslolös. Idealt ser det ut som att datorn gör flera saker samtidigt...
OS och minnet När processorn jobbar lagras information i RAM-minnet När flera applikationer körs samtidigt måste OS:et se till att alla får var sitt område i RAM-minnet att programmen bara kommer åt sitt eget område i minnet (om minnet inte ska vara delat) Om detta händer kan data förstöras, och ett program krascha Ofta får man felmeddelanden som General Protection Fault, Segmentation Fault eller Bus Error Datorns övriga program klarar sig från programmet det gått fel i. Interagerar man som användare direkt med OS? Ja, ibland. Oftast via nyttoprogrammen (utilities) n!" man startar upp program hanterar filer (skapar, flyttar, döper om) använder hjälpen förändrar den grafiska användarytan konfigurerar utrustning (hårdvara och externa enheter) Hur kommunicerar våra program med OS? Systemanrop Särskilda funktioner som ett program kan anropa för att be operativsystemet utföra en tjänst åt programmet (som programmet inte själv får utföra) Används tex för: lågnivå fil I/O (inte tex printf utan på lägre nivå än så) process kontrol (avsluta program) processkomunikation (kommunicera med andra program) Ser ut som vanliga funktionsanrop i C, men själva uppgiften kommer att utföras av operativsystemet 90 Systemanrop För det mesta så behöver våra program inte direkt använda sig av systemanropen utan vi kan använda oss av mer användarvänliga biblioteksfunktioner (som i sin tur använder sig av systemanropen) På kursen Systemnära programmering kommer ni få skriva program som jobbar mer intimt med operativsystemet 91 Unix arkitektur Exempel på systemanrop (Solaris) Systemanrop för lågnivå I/O int creat(const char *path, mode_t mode) int open(const char *path, int oflag, /* mode_t mode */...) int close(int fildes) ssize_t read(int fildes, void *buf, size_t nbyte) ssize_t write(int fildes, const void *buf, size_t nbyte) Systemanrop för process kontroll pid_t fork(void) int execvp(const char *file, char *const argv[]) void exit(int status) Systemanrop för rättighetshantering int setuid(uid_t uid) int chmod(const char *path, mode_t mode) I/O funktionerna ovan används tex av printf som ni använt er av för utskrifter 93
OS och input och output Alla enheter som är kopplade till en dator ses som en resurs. OS håller reda på dessa och använder drivrutiner för att kunna prata med dem på ett enkelt sätt Varnar om något gått fel Ser till att informationen till och från enheterna lagras i buffrar så att inget tappas bort och för att öka prestanda. OS och användarytan Användaryta (user interface) definieras som den kombination av hårdvara och mjukvara som hjälper människa och dator att kommunicera Ett OS kan antingen ha en grafisk användaryta - Graphical user interface (GUI) Xerox, Apple (Macintosh) 1984, PC-datorer ca 1992 vara kommandoradsbaserad - Command-line user interface Vart lagras operativsystemet? På handdatorer/speldatorer ryms hela OS i ROM På de flesta datorer ryms endast ett litet program som kallas bootstrap-program i ROM. Ger instruktioner om vilka program som ska lagras in i RAM när datorn startar upp (bootar) Minneshantering och filaccess laddas alltid in, andra delar laddas när de behövs Den del av OS som alltid är inladdat kallas kärnan (kernel). OS och lagringsresurser OS beter sig som en arkivarie Kommer ihåg namnet och platsen för alla dina filer. Filsystemet Håller koll på tomma utrymmen där nytt data kan lagras. Typer av operativsystem forts Single-user operating system Förutsätter att en enda person använder datorn handdatorer och en del persondatorer DOS Multi-user operating system en dator kan användas av flera personer samtidigt IBMs OS/390 Network operating system/server operating system fleranvändarsystem där man dessutom kan dela på resurser som skrivare, data, program UNIX, LINUX, Solaris Dessa är både server och mulit-user OS! Multitasking operating system kan hantera två eller flera processer samtidigt, de flesta OS är detta! Desktop operating system utvecklad för en enskild datoranvändare men har också nätverkshantering ofta två typer av OS Home och Professional där Home har mindre nätverkshanteringsverktyg Windows och MacOS 99
Fleranvändarsystem Operativsystemet ansvarar för att de olika användarna kan jobba med datorn samtidigt Måste hantera säkerhet mellan användarna internt på datorn Måste tex. hantera filrättigheter, vilka program som får köras av en viss användare etc. 100 Olika operativsystem DOS är det första OS som använts av många personer DOS (Disk Operating System) utvecklades 1982 av Microsoft och var kärnan i Windows 3.1, 95, 98 och ME Mac OS är det första OS:et med grafisk användaryta Utvecklades tidigare (ca 1984) än Windows och har samma uppbyggnad med fönster, ikoner, menyer och muspekare Sedan 2000 MacOS X som är ett unix-system i grunden. Windows utvecklades från DOS och blev populärt ca 1992 80% av persondatorerna kör ett Windows OS (data från 2004) UNIX/LINUX UNIX utvecklades redan 1969 medan Linux utvecklades 1991 LINUX är gratis och distribueras under en speciell licens General Public License (GPL). Alla får vara med och skriva på OS-koden Red Hat Linux, Caldera OpenLinux, Debian GNU/Linux PalmOS och Windows MobileOS är exempel på OS till handdatorer Multitasking Hur schemalägger man processer? Multitasking är en metod som tillåter flera program (processer), att dela på gemensamma resurser som tex en CPU. Om vi bara har en CPU kan endast en process körs samtidigt vid varje given tidpunkt på processorn. Multitasking löser problemet genom att bestämma vilket program som ska få köra vid varje tillfälle, och när nästa program ska få chans att köras. Bytet mellan program som får köra på processorn kallas en context switch. När detta sker nog ofta ges illusionen av att programmen körs parallellt (samtidigt). Vid en context switch sparas programmets tillstånd undan (tex register) Ibland finns inbyggt stöd i processorn för detta Även på system med flera processorer används detta för att man ska kunna köra fler program än man har processorer. Hushålla med olika resurser Att tänka på Minimera respons tiden Maximera CPU effektiviteten Rättvisa mellan olika program 102 103 Interaktiva system Svarstid Användarna accepterar inte fördröjningar Förväntad svarstid Mycket subjektiv Kopiera till en annan maskin jmf. lokalt Maxtiden en process får köra innan man måsta byta måste hållas relativt kort Flera program samtidigt Cooperative multitasking/time-sharing Tidiga operativsystem som tillät att flera program körde samtidigt bestod av grupper av program som frivilligt gav exekveringstid till varandra. Denna strategi stöddes tillslut av många operativsystem. Idag känt som cooperative multitasking. Används i stort sett inte längre Användes bla av: Microsoft Windows innan Windows 95 och Windows NT MacOS innan MacOSX Förutsätter att varje applikation regelbundet ger tid till andra applikationer att exekvera. Ett enda program kan få allt att sluta fungera genom att inte låta de andra fortsätta Preemptive multitasking/time-sharing Timer avbryter processen som körs och ger kontrollen till operativsystemet Operativsystemet kan då avgöra vilket program som ska få exekvera härnäst Olika system kan användas för vilket program som ska köras. Tex kan olika program ges olika prioritet I ett sådant här system så kan inte ett enskilt program låsa upp hela datorn. Vanligast idag 104 105
Batch system I ett sådant system ställer man sin applikation på kö för att köras, och kör en (eller ett fåtal) applikationer tills de har exekverat färdigt och meddelar sedan användaren vad resultatet blev av programkörningen. Fyller sedan på med nya applikationer när det blir ledigt Används på datorer där det är viktigt att hålla CPU:n arbetande (med att lösa problem) hela tiden, och där användaren inte måste interagera med programmet under körningen 106