Föreläsning 2


Talsystem
Vi människor använder tecknen 0,1,2,3,4,5,6,7,8,9 och kombination av de (t.ex 12) när vi vill t.ex tala om ett antal av en sak. Tyvärr det stora användningsområde av ovanstående tecken i vardagslivet har gjort så att vi har svårt att kunna se de som olika tecken som skulle lika gärna inte betytt något alls för oss, exempelvis så fort vi ser tecknet 7 då utan att behöva tänka efter vet vi att det handlar om sju enheter.
Det system som vi använder kallas för decimal system och systemet har basen 10.
När det gäller datorer och digitala världen så använder vi oss av ett annat system som kallas för binär-system, i det binära systemet man begränsar sig med endast två tecknen 0 och1 (basen 2) d.v.s. tecknen 2,3,4,5,6,7,8,9 existerar inte i detta system. Anledningen till att man är tvungen att använda binära-talsystemet är att transistorers natur kräver detta, man kan se det som en ledningen antingen leder (1) ström i ett visst ögonblick eller inte allas (0).
finns ett samband med talet Sedan har vi andra system som oktal och hexa-decimal som underlättar beräkning av olika beräkning av binära tal, dessutompotens av talet 2. (23 = 8(oktal) och 24 = 16(hexa-decimal) )
tabell över Existerande
Decimal
System
Existerande tecken i systemet
Decimal
0 1 2  4 5 6 7 8 9
Binär
0 1
Oktal
0 1 2 3 4 5 6 7
Hex-decimal
0 1 2 3 4 5 6 7 8 9 A B C D E F



Generella algoritmer för konvertering mellan olika system
Konvertera från decimal till system med bas B(B kan vara 2, 8 eller 16):
1. Dividera decimaltalet med B och anteckna resten och produkten.
2. Gör punkt 1 fast den här gången produkten från tidigare divition ska divideras med B.
3. Gör punkt 2  tills man får 0 i produkt.
4. Lägg alla rest från varje divition efter varandra, observera rest från sista divition ska komma först.




Konvertera från tal med bas
B (B kan vara 2, 8 eller 16) till decimal:
1. Numrera talet med bas B från 0 uppåt från höger till vänster.
2. Multiplicera varje siffra i talet med B upphöjd till det nummer som siffran fick i punkt 1.
3. Addera alla produkt av multiplikationen.



mer exempel finns i utdelade föreläsningspapper.

Operativsystem
Ett operativ system är ett program som startas automatiskt då man  slår på strömmen till en dator, förutsatt att datorn har  en installerat operativsystem.
Arbetsuppgift till ett operativsystem är svårtatt definera, men alla operativ system har till uppgift att hantera olika delar av hårdvaran så att de olika delar kan arbeta tillsammans, och detta innebär att fördela minnet rättvisst, fördlea CPU:n mellan olika program osv...
En dator utan operativsytem kn inte göra något, där finns endast BIOS (Basic Input Output System) som är ett program i hårdvaran, vilket bl.a. bestämmer från vilken enhet operativsystemet sa hämtas ifrån, ett operativ system kan hämtas från en hårddisk, ett nätverk(annan dator), en CD-läsare, DVD-läsare, från en diskett eller från något annat typ av minne.

Operativsystemet ser till att andra program som sk köras får tillgång till CPU:n framför allt och kanske andra delar av datorn som t.ex ljudkortet om det är så att programmet ska spela upp filer av typen wave, mp3, mpeg, etc.

Program

Ett program kod kan skrivas i olika hög nivå språk som Java, C, C++, Smaltalk, Prolog, Lisp, Python eller lågnivå språk som Assembler. Skillnaden mellan högnivå och lågnivå språk är att när man programmerar i lågnivå så måste ha exakta information om olika delar av hårdvaran som programmet är täknt att komma ikontakt med, men i högnivå språk programmeraren behöver inte tänka på hårdvaran så mycket som i lågnivåspråk.
Här nedan har vi ett exempelkod i Java som vill beräkna fakultet av talet 5;
int X = 1;
int W =6;
while( W != 0 ){
  X = X * W;
  W = W-1;
}

Motsvarande kod i assembler (det finns olika assembley instruktioner) kommer ungefär se ut som nedan:

PLATS
INSTRUKTION
0
2
4
6
8
10
14
16
18
20
22
24
LOD #1
STO X
LOD #6
STO W
LOAD W
MUL X
STO X
LOD W
SUB #1
JMZ 22
JMP 8
HLT

Följande är beskrivning till de assembly instruktioner vi har använt i ovanstående program

:
Instruktion
Betydelse
Data flöde
LOD X (or #<n>) Hämta från minnet plats X(eller talet <n>) till accumulatorn
STO Y Lagra innehållet av accumulatorn i minnet plats Y
Kontrollflöde
JMP P Gå till instruktion nummer P
JMZ P Om Acc har värdet 0 gå till instruktion nummer P annars go till nästa instruktion.
HLT Avsluta exekveringen och gör inget mer
Aritmetisk-operation
SUB X (or #<n>)
minska innehållet Subtract contents of memory location X (or #<n>) to Acc.
MUL X (or #<n>) Multiply Acc. by contents of memory location X (or #<n>)

Process
Med begreppet process menar man en del av programkod och data som programmet behöver för att kunna köras.
När man startar ett eller flera program så skapas olika processer som kommer att pendlas mellan CPU:n och primärminnet tills deras körning är klar. Eftersom att en processor är väldigt snabb på att exekvera programkod och processväxlingen  också är snabb så tror vi människor att flera program kan köras samtidigt, men detta är bara ett falsk signal som beror endast på att datornsförmåga att växla mellan processer så snabb så att vi inte märker att ett process är i vilande läge.

Processtillstånd

Ett process kan hamna i tre olika tillstånd:
1. under körning: det är då processen finns hos processorn och körs. Varje process får ett timeslies(körningstid) och när processen kommer till  centralenheten så får den bara köras under den tiden.
2. vilande (färdig för körning): Det är då ett process har redan exekverat en del av sin totala exekveringstiden och processen finns på primärminnet.
3. blockerad: det är då en process med den befintliga data som redan finns kan inte fortsätta exekveringen utan att processorn behöver ytterligare indata som hämtas från någon typ av inenhet som tangentbort, mus, CD-läsare, osv...
 
Från tillstånd 1 kan en process hamna på tillstånd 2 eller 3, från 2kan endast gå till 3 och från 3 kan endast gå till 1, varför?
Varje process kan få ett prioritetsnummer som beroende på den operativsystemet vet hur ofta processen ska köras, t.ex process P1 har prioritetsnummer 2 och process B har prioritetsnummer 4, alltså när process A kommer till processorn så har process B varit hos processorn 1 eller  2 ggr. Att prioritetsätta processer är ett sätt att hantera körning av processer det finns andra sätt som vi inte går in  i det.