Operativsystemsintroduktion Innehåll Introduktion OS ....................................................................................................................................... 2 Introduktion ........................................................................................................................................ 2 Operativsystemets delar ..................................................................................................................... 3 Operativsystemets funktioner............................................................................................................. 5 Operativsystemshistoria.......................................................................................................................... 7 1950 -talet: Batchsystem..................................................................................................................... 7 1960-talet: Time-sharing ..................................................................................................................... 8 1970-talet: UNIX & C ........................................................................................................................... 8 1980-talet: DOS, Windows & System 1 - 6 .......................................................................................... 9 1990-talet: Windows 3.x, Windows NT, System 7, Mac OS 8 & Linux för servrar ............................ 11 2000-talet: Windows 2000 - Windows 7, Mac OS 9 - X & Linux för hemmet ................................... 13 Filsystem ................................................................................................................................................ 18 Filstrukturer ....................................................................................................................................... 18 Vanliga diskfilsystem ......................................................................................................................... 19 Microsofts operativsystem: ........................................................................................................... 19 Linuxbaserade operativsystem:..................................................................................................... 20 Filsystem för optiska läsare: .......................................................................................................... 20 Datakomprimering ................................................................................................................................ 21 Introduktion ...................................................................................................................................... 21 Huffmans komprimeringsalgoritm .................................................................................................... 22 Frekvenstabell ................................................................................................................................... 23 Huffmanträdet................................................................................................................................... 23 Dekomprimering ............................................................................................................................... 27 Effektivitet ......................................................................................................................................... 27 Drivrutiner ............................................................................................................................................. 29 Introduktion ...................................................................................................................................... 29 Två delar ............................................................................................................................................ 31 1 Introduktion OS Introduktion För att man ska kunna använda en dator, är man beroende av operativsystemet eller OS. Vad är då ett operativsystem? Datorns enheter kommunicerar internt med hjälp av strömpulser som vi brukar representera med binära talsekvenser. De här binära talsekvenserna är ganska svåra för de flesta av oss människor att förstå. För att på något vettigt sätt kunna använda en dator, måste vi ha en länk till datorn eller ett gränssnitt av något slag. Operativsystemet skyddar oss från binärkoden Generellt utgörs ett gränssnitt av de metoder vi kan kommunicera med datorn, och de metoder datorn kan kommunicera med oss. Ett gränssnitt kan se ut hur som helst. Windows gränssnitt är fönsterhanteraren. Det MS-DOS hade som gränssnitt var text. Altair 8800 hade en samling lampor och vippkontakter som gränssnitt. Altair 8800 med sitt intuitiva gränssnitt 2 Något måste också se till att de program vi vill använda får tillgång till de resurser de behöver. Förutom att vara ett gränssnitt för oss människor och tillhandahålla resurser för programvara, måste något se till att datorns olika enheter kan kommunicera med varandra och att ingen enhet tar någon annan enhets resurser. Operativsystemets uppgift är att tillgodose alla dessa behov. Operativsystemets uppgift är främst att ordna kommunikation mellan enheter Operativsystemets delar Operativsystemet består av kärnan, grundläggande användarprogram och systembibliotek. 3 Kärnan (kernel på engelska) är den innersta delen av operativsystemet (därav namnet) - den som ligger närmast hårdvaran - som hanterar systemets uppstart, enheternas kommunikation med varandra och resurstilldelning (till exempel minneshantering eller processorbalansering vid flera CPUer). Här ser vi en schematisk skiss över Ubuntu, med därnan innerst mot hårdvaran De grundläggande användarprogrammen är en samling applikationer som behövs för att kunna installera nya program eller enheter, redigera text, hantera filer och mappar och liknande. Filhantering är en grundläggande funktion som tillhandahålls av OS, här på en Ericssonmobiltelefon 4 I systembiblioteken ligger de filer som krävs av andra program, såsom grafikbibiliotek, runtimefiler för diverse programmeringsmiljöer och så vidare. Operativsystemets funktioner Vid programexekvering (programkörning) är det operativsystemets uppgift att se till att det finns tilldelat minne och att de resurser som programmet behöver finns tillgängligt. Avbrott (på engelska interrupt) kallas det när en enhet behöver uppmärksamhet från någon avde övriga enheterna, och skickar en signal till operativsystemet. Interruptet behandlas sedan av operativsystemet på lämpligt sätt beroende på vad som orsakat det. Moderna CPUer och operativsystem stödjer dual mode operation(tvåläges-operation på svenska) som innebär att applikationer körs med olika behörighet på operativsystemsnivå - protected mode och supervisor mode. Vid uppstart är OSet i supervisor mode - alltså har obegränsad tillgång till systemets resurser. När det lämnar över CPUn till något annat program går OSet ner i protected mode, där det har tillgång till en begränsad mängd resurser - både för att skydda programmets data och för att skydda OSet från programmets eventuella skadliga (avsiktliga eller oavsiktliga) bieffekter. När ett program vill ha tillgång till fler resurser än protected mode tillåter, får användaren en förfrågan om operationen är i sin ordning. Dual mode operation skyddar OSet från skadlig kod Minneshantering kallas det när operativsystemet ordnar minne för en ny process och ser till att eventuell data som legat i samma minnesområde sparas undan. Minneshanteringen ser också till att ingen process kan skriva i ett minnesområde som ägs av någon annan process. En process är den för tillfället körande delen av ett program. 5 När det fysiska minnet - RAM - inte räcker till, måste processernas data lagras någon annanstans. Då får operativsystemet använda sig av virtuellt minne, det vill säga någon slags sekundärminne (för mer information om sekundärminne, se avsnittet om dators delar). Detta kallas också swapping. För att kunna köra flera program samtidigt, måste operativet utnyttja multitasking. De flesta processorkärnor kan köra en eller möjligtvis två processer samtidigt (det finns ju i och för sig flerkärninga CPUer, se avsnittet om CPU). För att användaren ska uppleva att det faktiskt går att köra fler applikationer än så, måste någon form av snabb växling av processer ske. Detta kallas time-sharing. En del av operativsystemskärnan kallas scheduler (schemaläggare på svenska), som bara ser till att time-sharingen fungerar, och att varje process får den tid den behöver. Drivrutiner ser till att kärnan vet hur den ska kommunicera med olika enheter. Man kan säga att drivrutinernas uppgift är att abstrahera hårdvaran. Det finns många olika tillverkare av hårdvara, och för att programmerare inte ska behöva skriva sin program specifikt för en viss tillverkares hårdvara, ordnar drivrutinen ett gränssnitt mot operativsystemet. 6 Operativsystemshistoria 1950 -talet: Batchsystem På 50-talet använde datorerna hålkort och kostade fantasieggande summor pengar. Hålkort var pappkort som man stansade hål i, som motsvarade bokstäver och siffror. Dessa kort matade man in i stora buntar i datorerna (som var så stora att de tog upp flera rum) på kvällen. Sedan arbetade datorn med informationen över natten och kunde presentera resultatet på morgonen. Man kallar dessa typer av system för batchsystem, efter engelskans ord batch för bunt. Dessa typer av datorer höll sig kvar på större företag och statliga verk långt in på 80-talet. Hålkort användes bl.a. för att hålla reda på deltagarna i Vasaloppet 1969 7 1960-talet: Time-sharing Under 60-talet kostade datorerna fortfarande oerhört mycket pengar. Man hade inte råd att ge varje person som skulle arbeta en egen dator, utan man kopplade upp sig med en s.k. terminal, medan datorerna ägdes och sköttes av stora företag. För att varje användare skulle känna att de hade obegränsad tillgång till datorkraften, växlades processorns tid mellan användarnas processer. Detta kallas Time-sharing. Ett exempel på timesharing-system är Multics. Terminaler har ingen egen processor och inget eget minne, utan kopplas mot en central stordator 1970-talet: UNIX & C 1969 funderade Ken Thompson, en programmerare på Bell Labs (som stod bakom Multics) på att skapa ett operativsystem som skulle köras på en (för tiden) liten dator. Han och hans arbetskamrat Dennis Ritchie kallade sin skapelse UNIX. Eftersom UNIX var designat att köras på smådatorer (det vill säga, datorer som universiteten och kanske mindre företag hade råd att köpa - de var fortfarande för dyra för privatpersoner) blev det mycket populärt bland universitetsstuderande. 8 Eftersom utvecklingen av program till UNIX - liksom UNIX självt - skedde mestadels i programspråket C (som Dennis Ritchie hade skapat), blev C snart standardspråk. UNIX ägdes fortfarande av Bell Labs och kostade i runda slängar skjortan och lite till. Ken Thompson och Dennis Ritchie, skaparna av Unix 1980-talet: DOS, Windows & System 1 - 6 I slutet på 70-talet kom persondatorn. Detta innebar att man inte längre behövde dela processortid med andra, utan persondatorerna hade egen processor, minne och lagringsutrymme. Detta innebar också att det behövdes en ny typ av operativsystem - avsett för en ensam användare. 1979 släppte Apple Computer sitt operativsystem DOS. UNIX fortsatte (och fortsätter än idag) vara ett stort operativsystem på universitet och högskolor. DOS var ett textbaserat operativsystem, precis som UNIX 9 Under 1979 började utvecklingen av Apple Computers Macintosh-datorer. 1984 släpptes den första versionen av Mac-operativsystemet System, följaktligen kallad System 1. Det var helt grafiskt, till skillnad från Microsofts grafiska DOS-skal. System 2 - 6 släpptes under tiden 1985 1990. Det första Macintosh-operativsystemet System 1 1985 släpptes den första versionen av Windows - Windows 1.0 Microsofts grafiska gränssnitt till DOS. Detta betyder att det fortfarande låg en kärna av DOS i botten, med ett "skal" av grafik ovanpå. Windows, det grafiska skalet till DOS 10 1990-talet: Windows 3.x, Windows NT, System 7, Mac OS 8 & Linux för servrar 1990 släpptes nästa version av Windows - Windows 3.0 - som blev mycket populärt. Windows 3.11 for Workgroups med nätverksstöd, kom inte förrän 1992. 1991 satt finländaren Linus Thorvalds på universitetet i Helsingfors och funderade på ett operativsystem som skulle påminna om UNIX, men vara helt gratis. Han lade ut idén på en mailing-lista, och satte igång att utveckla Linux med hjälp av alla intresserade som läst mailinglistan. Han visste nog inte då att det skulle bli en revolution i datorvärlden. På ett par år tog Linux över som operativsystem på de flesta webservrar och fick en stor mängd anhängare på grund av att det var helt gratis. Linux, ett gratis operativsystem Windows med DOS i grunden fortsatte att utvecklas, men framför allt företag och organisationer efterlyste ett säkrare och mer stabilt operativsystem med bättre nätverksstöd. Microsoft släppte 1993 sitt Windows NT, där NT stod för New Technology. Windows NT hade stöd för en mängd nya tekniker (som man kunde ha gissat av namnet) och var designat för att vara igång länge. Det gamla Windows med DOS i botten klarade max omkring 30 dagar innan det kraschade. 11 Det var inte många program som var gjorda för det gamla Windows som fungerade i Windows NT, och det var ett problem. Windows New Technology 1995 kom Windows 95 (DOS-kärna) och 1996 kom Windows NT 4.0 (NTkärna) som båda hade ett nytt utseende, som ligger till grund för hur Windows ser ut idag, med bl.a. ett aktivitetsfält längst ner. Windows NT 4.0 var också första gången som Microsoft släppte flera olika varianter av ett operativsystem (Windows NT 4.0 Server, Windows NT 4.0 Enterprise Server, Windows NT 4.0 Embedded, Windows NT 4.0 Workstation och Windows NT 4.0 Terminal Server). Det har man fortsatt med på de NT-baserade Windows-varianterna. 1998 släpptes (har du en bra gissning för namnet?) Windows 98, som i princip var Windows 95 med förbättringar. 12 1991 kom Macintosh-operativsystemet System 7. I och med 7:an tog man bort bakåtkompabiliteten, som gjort att man kan kunde program från äldre versioner av operativsystemet. Detta möjliggjorde en rejäl prestandaförbättring. Mac OS 8 kom 1997 och erbjöd bland annat en bättre hantering av multi-tasking (som gör att operativsystemet kan köra flera applikationer samtidigt). Mac OS 8 2000-talet: Windows 2000 - Windows 7, Mac OS 9 - X & Linux för hemmet På grund av att det fortfarande fanns en klyfta mellan gamla Windowsprogram och Windows NT-program, försökte Microsoft år 2000 skapa ett Windows som skulle klara att köra både de tyngre programmen som NT klarade med samma stabilitet, och de spel och underhållningsprogram som gamla Windows klarade. Resultatet blev Windows 2000. Den nya versionen nådde inte hela vägen fram som bro mellan Windows-varianterna, men innebar en rejäl uppfräschning av den numer ganska gamla nya (!) teknologin NT. 13 För att täcka upp för det nu åldrande Windows 98 tog man fram Windows ME, som egentligen bara var en liten uppfräschning av Windows 98. Windows 2000, överbryggaren mellan Windows och Windows NT? 2000 släpptes även Mac OS 9. 9:an var en logisk fortsättning på Mac OS 8. En större förändring kom i och med nästa version. Det sista Mac OS Classic 14 2001 kom Windows XP, som var en rejäl uppfräschning av NT-kärnan och med ett nytt användargränssnitt. Den överbryggar i princip det gap som fanns mellan DOS-baserade Windows och Windows baserat på NT-kärnan. Windows XP, överbryggaren mellan Windows och Windows NT. 2001 kom Mac OS X som ver det första av Apples operativsystem som bygger på UNIX (ja, den gamla stofilen från sent 1960-tal, som faktiskt lever än idag!). I och med släppet av detta kallade man alla äldre versioner för "Mac OS Classic". För att kunna köra Mac OS 9-applikationer har man byggt in en emulator-lösning (en emulator är enkelt sagt ett program som härmar ett annat operativsystem). Mac OS X är också det första operativsystemet till Macintosh som har en kommandotolk (som är ett fönster där man kan skriva kommandon som på den gamla goda DOSoch UNIX-tiden). Mac OS X, med ekon från 1969 15 2007 släpptes Windows Vista (även om många företag och skolor istället valde att fortsätta använda Windows XP). Microsoft hade byggt in en hel del säkerhetsfunktioner i Vista och användargränssnittet Aero (endast i Vista Ultimate och Vista Premium) bjöd på snygga 3D-effekter. Dock drogs Vista med en del prestandaproblem och drivrutinsstödet var bristande vid släppet. Windows Vista bjuder på 3D-grafik i användargränssnittet Problemen med Windows Vista låg helt säkert bakom att man redan 2009 släppte Windows 7. Windows 7 är en inkrementell (inkrementell betyder förändringar av ursprunget, alltså inte en helt ny version) uppdatering av Vista-kärnan och man har siktat på att göra den snabbare och säkrare. Windows 7 - Windows Vistas efterföljare Linux fortsätter att växa och börjar nu ta mer och mer av hemmamarknaden, såväl som servermarknaden. Det har kommit fler och 16 fler versioner av Linux, och en del är lika enkla eller enklare att använda än Windows. Vill man prova Linux utan att riskera att förstöra sin Windowsinstallation kan man använda någon av alla live cd-distributioner som finns. Ett tips är Ubuntu. Ta hem en .iso-fil och bränn den på en cd (med t.ex. InfraRecorder). Sedan ställer du in din dator att boota från CD (i BIOS), starta sedan datorn med cd-skivan i. Ubuntu - Linux för oss vanliga användare 17 Filsystem Ett filsystem är ett system för att kunna lagra data i hanterbara filer samt katalogstruktur, namn och metadata om filerna (tidsstämplar, filstorlek och så vidare). Operativsystemet består av en mängd filer, och vi skapar filer med olika applikationer. Olika operativsystem stödjer olika filsystem. Filsystem kan delas in i följande: Diskfilsystem som används för lagring på diskar. Diskfragmentering kan vara ett problem, eftersom flyttningar av läshuvudena i hårddisken skivans rotation till rätt sektor tar tid. Därför försker diskfilsystem i största möjliga mån samla filer till inbördes närliggande områden. Flashfilsystem har inte fragmenteringsproblem, eftersom det är ett direktåtkomstminne - liksom med RAM finns det inga mekaniska delar som tar tid på sig att hitta rätt plats i minnet. Att köra diskfilsystem på ett flashminne är egentligen suboptimalt och rent av direkt olämpligt av främst två orsaker: 1. Diskfilsystem är gjorda för att minska fragmentering och detta tar onödig prestanda. 2. Flashminnen slits med tiden - diskfilsystem är optimerade för samlad skrivning för att minska mekanisk förflyttning, flashfilsystem skriver över hela flashminnet för att undvika onödigt slitage. Eftersom flashdiskar är ett ganska nytt fenomen, finns det inte så många flash-optimerade filsystem än. Nätverksfilsystem är en klient för åtkomst av filer på en nätverksenhet. Det gåt för det mesta att montera dessa nätverksfilsystem så att de ser ut som en lokal enhet. Vanliga nätverksfilsystem är NFS (Windows) och SMB. Filstrukturer De flesta moderna filsystem har stöd för hierarkiska katalogstrukturer (pyramidliknande strukturer med en rot i toppen som kan ha underkataloger som i sin tur kan ha underkataloger) för att underlätta sökning av filer och administration. 18 I Unixliknande system finns det en rot vari alla andra kataloger ligger. Om man monterar ett nytt filsystem hamnar det i en egen katalog under roten. I Unixliknande filsystem finns det enrot I Windows däremot får varje partition (del av disk med eget filsystem) och enhet (till exempel CD-ROM, Nätverksenhet, flashminne) en egen hierarkisk struktur, som skiljs åt genom att ha olika bokstavsbeteckningar. Systemdisken i ett Windowssystem brukar traditionellt ha C:. I Windows har alla enheter en egen rot Vanliga diskfilsystem Microsofts operativsystem: Filsystem FAT12 FAT16 FAT32 NTFS1.0* NTFS1.1* NTFS1.2* NTFS3.0* NTFS4.0* Stöds av OS: DOS, Windows NT, XP, Vista, 7 DOS, Windows NT, XP, Vista, 7 DOS, Windows NT, XP, Vista, 7 Windows NT 3.1 Windows NT 3.5 Windows NT 3.51 & 4.0 Windows 2000 Windows XP, Vista, 7 Max. Part.st. 32 MB 2 GB 8 TB 256 TB 256 TB 256 TB 256 TB 256 TB 19 Max. Filst. 32 MB 2 GB 4 GB 16 TB 16 TB 16 TB 16 TB 16 TB Linuxbaserade operativsystem: Filsystem ext2 ext3* ext4* JFFS2* Stöds av OS: Linux, Mac OS X Linux, Mac OS X Linux Linux 2.4.10 Max. Part.st. 32 TB 2 GB 1 EB ? Max. Filst. 16 GB 2 GB 16 TB ? Noteringar Flashfilsystem Filsystem för optiska läsare: Filsystem ISO9660 UFS Stöds av OS: OS som använder optiska läsare OS som använder optiska läsare Max. Part.st. 8 TB 1 YB * - Journalförande filsystem 20 Max. Filst. 4 GB 512 GB Datakomprimering Introduktion Datakomprimering innebär att minska lagringsstorleken på en datamängd. Två huvudvarianter finns: lossless (icke destruktiv - icke förstörande) och lossy (destruktiv - förstörande) komprimering. Det är ofta önskvärt att minska lagringsstorleken på en datamängd Lossless komprimering kräver att det data som komprimerats kandekomprimeras (återskapas) exakt ner till varje enskild bit. Exempel på detta är ZIP-, RAR-, PNG-, TIFF-, GIF- och FLAC-komprimering. Lossy komprimering tillåter att data går förlorat vid komprimeringen, främst data som inte innehåller någon uppfattbar information. Exempel på detta är MP3- MPEG- och JPG-komprimering samt i olika former av telefoni. Det går alltså inte att få tillbaka exakt samma data som innan. Lossy komprimering ligger utanför den här kursens område, så vi får ta det en annan gång. Vid så gott som all datakomprimering används någon variant av Huffmans algoritm, en komprimeringsteknik uppkallad efter skaparen David A. Huffman. Algoritmen uppfanns 1952. 21 David A. Huffman (1925 - 1999) Huffmans komprimeringsalgoritm Huffmans algoritm är en i grunden lossless komprimering som bygger på att vissa Byte förekommer oftare än andra i en datamängd. Det kan man utnyttja för att komprimera datats filstorlek med Huffmankomprimering. Man börjar med att frekvensanalysera datat (räkna de förekommande Byten och hur ofta de förekommer). För att förenkla resonemanget använder jag här bokstäver för att representera Byte. Algoritmen fungerar förstås på alla typer av data. Frekvensanalysen görs genom att räkna hur ofta ett tecken (ett visst Byte) förekommer i datat. Varje gång ett Byte förekommer räknas en räknare för Byten upp. Som exempel tar vi texten "go go gophers", som är kort och bra till syftet att förklara Huffmans algoritm. I normala fall skulle den datalagringsmässigt bestå av 8 bitar per tecken gånger 13 tecken = 104 bitar: 01100111 01101111 00100000 01100111 01101111 00100000 01100111 01101111 01110000 01101000 01100101 01110010 01110011 22 Frekvenstabell Textsträngen innehåller de olika tecknen "g","o",mellanslag, "p","h","e","r" samt "s". Efter frekvensanalys skulle vi få en frekvenstabell som ser ut så här: Tecken Antal g 3 o 3 2 p 1 h 1 e 1 r 1 s 1 Huffmanträdet Vi tänker oss att vi skapar ett träd av trädnoder. Trädnoderna kan innehålla ett tecken (eller vilken Byte som helst) en frekvens (antalet gånger Bytet finns i datat). Trädnoden kan dessutom ha ett "vänsterbarn" och/eller ett "högerbarn" som isåfall också består av trädnoder. Trädnoder skapas som innehåller våra tecken och deras frekvens. Dessa läggs i en sorterad kö, en så kallad prioritetskö. Jag visar för tydlighetens skull kön som en grå linje, minsta talet till vänster och större tal åt höger. Ur prioritetskön plockas de två minsta noderna (de med lägst frekvens) och fogas samman som barn till en ny nod, som får barnens sammanlagda frekvens. Denna nod läggs tillsammans med sina barnnoder tillbaka på sin nya plats i kön (finns fler noder med samma frekvens som den nya nodens läggs den nya noden sist av dem): 'e' + 'h' blir en ny nod med frekvensen (1 + 1 =) 2 och placeras sist av de noder som har frekvensen 2 23 Detta förfarande upprepas till dess att kön bara innehåller en nod (Huffman-trädet): 24 Bara två noder kvar i kön, som tillsammans blir... det färdiga huffmanträdet! Genom att traversera (vandra genom) trädet och genom att låta varje väg till ett vänster underträd representeras av 0 och vägen till höger underträd av 1, får vi en bitrepresentation av varje löv(noder utan barn). 25 Den observante ser snart att de tecken som återkommer oftast hamnar högt upp i trädet, och får därmed kortare bitrepresentationer, medan de mer sällan förekommande hamnar längre ner och får längre bitrepresentationer. Inget tecken kan dock få längre bitrepresentation än 8 bitar. Tecken Bitrep. g 01 o 10 111 p 0010 h 1101 e 1100 r 0011 s 000 När vi använder oss av de nya bitrepresentationerna istället för originalbitströmmen får vi: 0110111011011101100010110111000011000 Alltså 37 bitar istället för de 104 okomprimerade bitarna (35,5% av originalstorleken). Om vi vill kunna återskapa datat blir vi dock tvungna att spara undan Huffmanträdet också, annars vet vi ju inte vad de olika bitrepresentationerna betyder... Skulle vi öppna en sådan här fil i en texteditor blir det bara rappakalja, eftersom datat inte längre är uppdelat i Byte. 26 Dekomprimering Hur får vi nu tillbaka vår text från det komprimerade datat? Jo, genom att med hjälp av den komprimerade bitströmmen traversera trädet (0 – vänster underträd, 1 – höger underträd) tills ett löv påträffas. Detta upprepas till dess bitströmmen är slut. Klart! Exempelvis bokstaven "r" - 0011 Effektivitet När är Huffmans komprimering effektivast? Algoritmen bygger på att mönster som förekommer ofta representeras av kortare bitsekvenser än mönster som förekommer mer sällan. Alltså fungerar den bäst på till exempel texter, där det är sannolikt att en del tecken förekommer oftare än andra, eller rena grafikbitmappar, där färger förekommer i olika omfattning. Mindre lämpliga data att komprimera är redan komprimerad data (JPG, MPEG, ZIP, RAR och så vidare), eftersom de redundanta(återkommande) mönster som eventuellt har funnits redan förbrukats för att få ner storleken en gång. 27 Krypterad data går inte heller att komprimera speciellt framgångsrikt, eftersom krypteringsalgoritmerna försöker minska mönster som kan hjälpa obehöriga att forcera kryptot. I krypterad text är mönstren minimerade av krypteringsalgoritmen 28 Drivrutiner Introduktion En drivrutin är ett program som hjälper andra program att använda hårdvara. Alla drivrutiner är hård- och operativsystemspecifika. Det går alltså inte att använda en drivrutin avsedd för ett nVidia-grafikkort till ett ATI-grafikkort. Många tillverkare lägger dock in drivrutiner till flera modeller av sina kort i ett stort drivrutinspaket som då kan vara mer än 100 MB stort. Detta gör man för att slippa ha flera olika filer att hålla reda på i sin drivrutinshantering. Utan drivrutiner är hårdvaran bara en massa kisel och koppar Om tillverkaren av operativsystemet skulle ha full kontroll över vilken hårdvara det skulle köras på skulle det inte vara något problem, eftersom programmerarna hade då kunnat skriva koden direkt mot hårdvaran. Nu är det ju inte så, utan programmerarna får skriva mot en standardiserad uppsättning instruktioner. 29 Det är till exempel ganska sällan du behöver uppdatera drivrutinerna i din mobiltelefon, eftersom det oftast är tillverkaren av hårdvaran som också gör operativsystemet. I de flesta fall är det tillverkaren av mobiltelefonerna som också gör operativsystemet till dem I Windows måste du däremot ha speciella drivrutiner för grafikkort, ljudkort, nätverkskort o.s.v, eftersom det är Microsoft som skriver operativsystemet, det kanske är nVidia som gör grafikkretsen, Creative Labs som gör ljudkretsen och Realtek som gör nätverkskretsen. Dessutom finns flera modeller och äldre generationer av hårdvara som fortfarande används och måste fungera i Windows. 30 När du vill skriva ut något från Word behöver inte tillverkaren av Word känna till hur skrivaren fungerar på hårdvarunivå, utan behöver bara anropa standardkommandon som i drivrutinen översätts till skrivarens specifika kontrollspråk. Användaren talar om för applikationen vad han/hon vill göra, applikationen kommunicerar med operativsystemet via drivrutinen som i sin tur vet hur hårdvaran ska användas på kretsnivå Två delar Drivrutiner har två delar - en logisk och en fysisk del. Den logiska drivrutinsdelen eller LDD (Logical Device Driver) skrivs ofta av mjukvarutillverkaren som till exempel Microsoft, medan den fysiska delen eller PDD (Physical Device Driver) av kretstillverkaren. Programvaran kommunicerar med den logiska delen och den fysiska med hårdvaran. Till exempel känner den logiska delen till saker som ett visst datapaket ska skickas till och den fysiska delen hur signalerna ska sändas genom nätverkskretsen. På senare tid har dock Open Source-rörelsen (som gör till exempel Linux och andra fria operativsystem) börjat göra drivrutiner för kretsar som inte har officiellt stöd för andra operativsystem än Windows. 31 I vissa fall tillhandahåller kretstillverkarna information om hårdvaran för att underlätta detta. I andra fall får programmerarna använda sig av reverse engineering (att genom att undersöka och experimentera med en produkt ta fram information om hur den fungerar). Detta är mycket svårare och mer tidskrävande än fallen där kretstillverkarna ger informationen, och prestanda blir ofta lidande. Reverse engineering innebär att man undersöker hur något fungerar i syfte att efterlika funktionaliteten Eftersom PDD kommunicerar direkt med hårdvaran är det viktigt att den är korrekt skriven. En bug (felaktigt skriven kod) i den fysiska delen av drivrutinen kan hänga hela systemet. 32