Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 Operativsystemsintroduktion Kursmaterial v1.1 1 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 Introduktion OS ....................................................................................................................................... 3 Introduktion ................................................................................... Fel! Bokmärket är inte definierat. Operativsystemets delar ..................................................................................................................... 4 Operativsystemets funktioner ............................................................................................................. 6 Operativsystemshistoria .......................................................................................................................... 8 1950 ‐talet: Batchsystem ..................................................................................................................... 8 1960‐talet: Time‐sharing ..................................................................................................................... 9 1970‐talet: UNIX & C ........................................................................................................................... 9 1980‐talet: DOS, Windows & System 1 ‐ 6 ........................................................................................ 10 1990‐talet: Windows 3.x, Windows NT, System 7, Mac OS 8 & Linux för servrar ............................ 12 2000‐talet: Windows 2000 ‐ Windows 7, Mac OS 9 ‐ X & Linux för hemmet ................................... 14 Filsystem ................................................................................................................................................ 19 Filstrukturer ....................................................................................................................................... 19 Vanliga diskfilsystem ......................................................................................................................... 20 Microsofts operativsystem: ........................................................................................................... 20 Linuxbaserade operativsystem: ..................................................................................................... 21 Filsystem för optiska läsare: .......................................................................................................... 21 Datakomprimering ................................................................................................................................ 22 Introduktion ...................................................................................................................................... 22 Huffmans komprimeringsalgoritm .................................................................................................... 23 Frekvenstabell ................................................................................................................................... 24 Huffmanträdet ................................................................................................................................... 24 Dekomprimering ............................................................................................................................... 28 Effektivitet ......................................................................................................................................... 28 Drivrutiner ............................................................................................................................................. 30 Introduktion ...................................................................................................................................... 30 Två delar ............................................................................................................................................ 32 2 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 Introduktion OS 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
3 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
4 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
I systembiblioteken ligger de filer som krävs av andra program, såsom
grafikbibiliotek, runtimefiler för diverse programmeringsmiljöer och så
vidare.
5 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
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.
6 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
7 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
8 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
9 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
10 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
11 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
12 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
13 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
14 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
15 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
16 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
fler versioner av Linux, och en del är lika enkla eller enklare att använda
än Windows.
17 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
18 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
19 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
20 Max. Filst.
32 MB
2 GB
4 GB
16 TB
16 TB
16 TB
16 TB
16 TB
Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
21 Max. Filst.
4 GB
512 GB
Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
22 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
23 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
24 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 Detta förfarande upprepas till dess att kön bara innehåller en nod
(Huffman-trädet):
25 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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).
26 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
27 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
28 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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
29 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
30 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
31 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
32 Operativsystemsintroduktion – v1.1 Jonas Holmstén 2010 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.
33