656 lines
11 KiB
Markdown
656 lines
11 KiB
Markdown
<link rel="stylesheet" href="./static/main.css"/>
|
|
|
|
<!-- .slide: data-background-color="#283681" -->
|
|
|
|
# ITGK Teori-kurs
|
|
|
|
<img src="./static/graphics/PVV-logo-blue.svg" width=40%/>
|
|
|
|
Note: Introduksjon
|
|
|
|
---
|
|
|
|
## <span class="red">⏺ **OBS:** Opptak</span>
|
|
|
|
Note:
|
|
PVV sin youtube-kanal
|
|
|
|
selv-introduksjon
|
|
|
|
Angående forelesningen
|
|
|
|
Planen min er å gå over alle temaene nevnt i pensum.
|
|
Kommer til å nevne en del biter som ikke nødvendigvis er viktig for pensum,
|
|
men som er viktig for å forstå innholdet
|
|
|
|
---
|
|
|
|
## Generelt
|
|
|
|
Hva er IT
|
|
|
|
Kort Historie
|
|
|
|
---
|
|
|
|
### Folk som er viktige
|
|
|
|
<!-- TODO: Add people and pictures -->
|
|
|
|
- Von Neumann
|
|
|
|
---
|
|
|
|
<!-- .slide: data-auto-animate -->
|
|
|
|
### Et par begreper:
|
|
|
|
<div class="columns">
|
|
<div>
|
|
|
|
- PC <!-- .element: data-id="pc" -->
|
|
- Operativsystem
|
|
- Abstraksjon
|
|
- Transistorer
|
|
- IC
|
|
|
|
</div>
|
|
<div>
|
|
|
|
- Hardware
|
|
- Software
|
|
- Kernel
|
|
- WWW/Internet
|
|
- High level/Low level
|
|
- bit
|
|
|
|
</div>
|
|
</div>
|
|
|
|
Note:
|
|
Operativsystem -> Ressursallokering -> Kernel -> Grafisk brukergrensesnitt
|
|
|
|
----
|
|
|
|
<!-- .slide: data-auto-animate data-transition="zoom-in" -->
|
|
|
|
<div class="columns">
|
|
<div>
|
|
|
|
- PC <!-- .element: data-id="pc" -->
|
|
|
|
</div>
|
|
<div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
----
|
|
|
|
---
|
|
|
|
<div class="columns">
|
|
<div class="column">
|
|
|
|
| Enhet | Størrelse |
|
|
|------------|-------------------|
|
|
| byte | 8 bits |
|
|
| kilobyte | \\(1000\\) bytes |
|
|
| megabyte | \\(10^6\\) bytes |
|
|
| gigabyte | \\(10^9\\) bytes |
|
|
| terabyte | \\(10^{12}\\) |
|
|
| petabyte | \\(10^{15}\\) |
|
|
| exabye | \\(10^{18}\\) |
|
|
|
|
</div>
|
|
<div class="column"> <!-- .element: class="fragment" data-fragment-index="1" -->
|
|
|
|
| Enhet | Størrelse |
|
|
|------------|-------------------|
|
|
| byte | 8 bits |
|
|
| kilobyte | \\(1000\\) bytes |
|
|
| megabyte | \\(10^6\\) bytes |
|
|
| gigabyte | \\(10^9\\) bytes |
|
|
| terabyte | \\(10^{12}\\) |
|
|
| petabyte | \\(10^{15}\\) |
|
|
| exabye | \\(10^{18}\\) |
|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
### Datatyper
|
|
|
|
- Integer
|
|
- Character
|
|
- Float
|
|
- Array
|
|
- String
|
|
|
|
Note:
|
|
|
|
char -> ASCII 7b, Extended ASCII 8b, UTF-8
|
|
|
|
Finnes flere, men disse
|
|
|
|
Objekter
|
|
|
|
---
|
|
|
|
### Tallsystemer
|
|
|
|
Note:
|
|
|
|
Forventet å kunne octal, binær, heksadesimal
|
|
|
|
går tom for siffer
|
|
|
|
delbarhet
|
|
|
|
hexadesimal i 4 binær chunks om gangen
|
|
octal i 3 binær chunks om gangen
|
|
revers
|
|
|
|
lurt å trene på
|
|
|
|
brukt ca. 20 min
|
|
|
|
---
|
|
|
|
*Slide med konversjon fra binær til octal og heksadesimal*
|
|
|
|
---
|
|
|
|
### Negative tall
|
|
|
|
Signed magnitude
|
|
|
|
bruker første biten
|
|
|
|
0000 = 1000
|
|
kaster bort en plass
|
|
|
|
Løsning: Twos complement:
|
|
|
|
0001 = 1
|
|
0000 = 0
|
|
1111 = -1
|
|
|
|
1000 = MIN_INT
|
|
|
|
Algoritme:
|
|
- finn ut hva minste negative tall er
|
|
- ta resten av bitsene, og konverter til desimal
|
|
- regn ut offsett
|
|
|
|
---
|
|
|
|
### Flyttall
|
|
|
|
```
|
|
>>> 0.1 + 0.2
|
|
0.30000000000000004
|
|
```
|
|
|
|
<img src="./static/graphics/floating-point-structure.svg" width=80%/> <!-- .element: class="fragment" data-fragment-index="1" -->
|
|
|
|
\\[ (+,\ \ 4,\ \ 1949284) = +1.949284 \cdot 10^4 = 19492.84 \\] <!-- .element: class="fragment" data-fragment-index="2" -->
|
|
|
|
Note:
|
|
|
|
Matematisk tilnærming
|
|
|
|
Signed bit, exponent - 2^?, signifikant?
|
|
|
|
består av 3 biter, kan gi rare utregninger iblant
|
|
|
|
Opphøyd i 10, men i virkeligheten opphøyd i 2
|
|
|
|
Ikke veldig viktig, men kan være oppklarende.
|
|
|
|
---
|
|
|
|
# Hardware
|
|
|
|
<!-- TODO: add toc -->
|
|
|
|
- Datamaskin
|
|
|
|
---
|
|
|
|
# Datamaskin
|
|
|
|
Note:
|
|
|
|
Består av mange forskjellige biter.
|
|
datamaskin er bare et begrep vi bruker.
|
|
Kan gå galt på veldig mange lag i prosessen.
|
|
Moores law, antall transistorer i en IC dobles hver 2. år.
|
|
|
|
---
|
|
|
|
## Hovedkort (Motherboard)
|
|
|
|
<img src="./static/graphics/motherboard2.png" width="50%"/>
|
|
|
|
Note:
|
|
|
|
Limet som fester alle de andre bitene sammen.
|
|
Inneholder litt logikk for konfigurasjon av alle bitene, men lite ellers.
|
|
|
|
---
|
|
|
|
## CPU
|
|
|
|
<img src="./static/graphics/cpu.png" width=40%/>
|
|
<img src="./static/graphics/processor.gif" width=40%/>
|
|
|
|
Note:
|
|
|
|
Viktigste biten. Gjør alle beregningene.
|
|
Består av 3 biter, kontrollenhet, minneenhet, ALU
|
|
Kjører raskt, gHz
|
|
Har et visst sett med ting den kan gjøre, kalt et instruksjonssett.
|
|
Setter du disse på rad, så har du et program.
|
|
|
|
----
|
|
|
|
### Fetch Decode Execute Cycle (De 5 stegene)
|
|
|
|
|
|
Note:
|
|
*5 steg* hver gang den skal kjøre en instruksjon
|
|
|
|
PC - program counter
|
|
Branching - hopp til andre steder/loop
|
|
Kjører en instruksjon for hver klokkesykel, men gjør flere steg samtidig. Verdt å merke seg.
|
|
|
|
---
|
|
|
|
## Minne
|
|
|
|
<div class="columns" style="font-size: 0.6em;">
|
|
<div>
|
|
<h3>Primary</h3>
|
|
|
|
- Volatile
|
|
- Random Access
|
|
|
|
<img src="./static/graphics/ram.png" width=80% />
|
|
|
|
</div>
|
|
<div>
|
|
<h3>Secondary</h3>
|
|
|
|
- Nonvolatile
|
|
- Sequential Access?
|
|
|
|
<img src="./static/graphics/storage_combined.svg" width=80% />
|
|
|
|
</div>
|
|
</div>
|
|
|
|
Note:
|
|
|
|
Primær - RAM
|
|
tilfeldig access - kan nå hvor som helst øyeblikkelig
|
|
volatilt - uten strøm så forsvinner dataen.
|
|
|
|
Sekundær - Harddisk
|
|
Tregt - cd som spinner
|
|
Sekvensiell aksess - Må lete for å lese på riktig sted.
|
|
ikke volatilt - holder på data uten strøm
|
|
SSD - Nesten random access, ligner på ram, men er ikke volatil
|
|
CD, DVD, Ekstern harddisk, USB, osv.
|
|
|
|
---
|
|
|
|
# Digital Representasjon
|
|
|
|
---
|
|
|
|
## Analog/Digital
|
|
|
|
|
|
|
|
<div class="columns">
|
|
<div>
|
|
|
|
<img src="./static/graphics/sound-points-white.svg" width=100%/>
|
|
|
|
</div>
|
|
<div class="column">
|
|
|
|
- ADC - inn på computeren
|
|
- DAC - ut fra computeren
|
|
|
|
</div>
|
|
</div>
|
|
|
|
Note:
|
|
|
|
Analog kan du måle bortimot så nøyaktig du vil
|
|
Digital har et visst sett med 0 og 1
|
|
|
|
|
|
---
|
|
|
|
## Piksler
|
|
|
|
<div class="columns">
|
|
<div class="column">
|
|
<img src="./static/graphics/subpixel.svg" width=30%/>
|
|
</div>
|
|
<div class="column">
|
|
<img src="./static/graphics/e.jpg" width=100%/>
|
|
</div>
|
|
</div>
|
|
|
|
Note:
|
|
|
|
Piksler er en måte å representere bilder
|
|
En piksel er en liten bit av bildet, med en farge.
|
|
Ofte tilsvarer 1 piksel 1 LED på skjermen
|
|
Den fargen er representert som en sammensetning av 3 farger
|
|
Pleier ofte å være RGB
|
|
|
|
----
|
|
|
|
<style>
|
|
.rgb-pvv {color: #283681;}
|
|
.rgb-red {color: #FF0000;}
|
|
.rgb-gre {color: #00FF00;}
|
|
.rgb-blu {color: #0000FF;}
|
|
.rgb-cof {color: #C0FFEE;}
|
|
.rgb-whi {color: #FFFFFF;}
|
|
.rgb-bla {color: #000000;}
|
|
</style>
|
|
|
|
<h3>
|
|
<span class="rgb-red">R</div><span class="rgb-gre">G</div><span class="rgb-blu">B</div>
|
|
<span style="width: 10%; display: inline-block;"/>
|
|
<img style="vertical-align:middle;" src="./static/graphics/subpixel.svg" width=40%/>
|
|
</h3>
|
|
|
|
Hver verdi er mellom 0 og 255
|
|
|
|
Kan derfor representeres som et hexadecimal med 6 tegn
|
|
|
|
<div class="replacable-fragment" style="font-size: 0.8em;">
|
|
<div>
|
|
|
|
| Farge | <span class="rgb-red">Rød</span> | <span class="rgb-gre">Grønn</span> | <span class="rgb-blu">Blå</span> |
|
|
|--------------------------------------|---------------|---------------|---------------|
|
|
| <span class="rgb-pvv">#283681</span> | 28\\(_{16}\\) | 36\\(_{16}\\) | 81\\(_{16}\\) |
|
|
| <span class="rgb-red">#FF0000</span> | FF\\(_{16}\\) | 00\\(_{16}\\) | 00\\(_{16}\\) |
|
|
| <span class="rgb-cof">#C0FFEE</span> | C0\\(_{16}\\) | FF\\(_{16}\\) | EE\\(_{16}\\) |
|
|
| <span class="rgb-whi">#FFFFFF</span> | FF\\(_{16}\\) | FF\\(_{16}\\) | FF\\(_{16}\\) |
|
|
| <span class="rgb-bla">#000000</span> | 00\\(_{16}\\) | 00\\(_{16}\\) | 00\\(_{16}\\) |
|
|
|
|
</div> <!-- .element: class="fragment fade-out" data-fragment-index="1" -->
|
|
|
|
<div>
|
|
|
|
| Farge | <span class="rgb-red">Rød</span> | <span class="rgb-gre">Grønn</span> | <span class="rgb-blu">Blå</span> |
|
|
|--------------------------------------|----------------|----------------|----------------|
|
|
| <span class="rgb-pvv">#283681</span> | \\(40_{10}\\) | \\(54_{10}\\) | \\(129_{10}\\) |
|
|
| <span class="rgb-red">#FF0000</span> | \\(255_{10}\\) | \\(0_{10}\\) | \\(0_{10}\\) |
|
|
| <span class="rgb-cof">#C0FFEE</span> | \\(192_{10}\\) | \\(255_{10}\\) | \\(238_{10}\\) |
|
|
| <span class="rgb-whi">#FFFFFF</span> | \\(255_{10}\\) | \\(255_{10}\\) | \\(255_{10}\\) |
|
|
| <span class="rgb-bla">#000000</span> | \\(0_{10}\\) | \\(0_{10}\\) | \\(0_{10}\\) |
|
|
|
|
</div> <!-- .element: class="fragment fade-in" data-fragment-index="1" -->
|
|
</div>
|
|
|
|
Note:
|
|
|
|
Regn ut 1920x1080 x 24 bits
|
|
|
|
---
|
|
|
|
# PAUSE
|
|
|
|
---
|
|
|
|
## Lyd
|
|
|
|
<div class="columns">
|
|
<div class="column">
|
|
|
|
<img src="./static/graphics/sound-points-white.svg" width=100%/>
|
|
|
|
</div>
|
|
<div class="column">
|
|
|
|
- Bør være dobbelt så ofte som høyeste frekvensen
|
|
- Bitdybde (16 bit er standard)
|
|
|
|
</div>
|
|
</div>
|
|
|
|
\\[ 16\ bits \cdot 44100\ Hz \cdot (3 \cdot 60)s \cdot 2\ kanaler \\]
|
|
|
|
Note:
|
|
|
|
tegn en bølge, og vis frekvensen
|
|
|
|
---
|
|
|
|
## Encoding og Komprimering
|
|
|
|
- "Hvordan tolke dataen"
|
|
- Lossless vs lossy
|
|
|
|
Note:
|
|
|
|
Alt er 1 og 0, men det kan tolkes på forskjellige måter.
|
|
|
|
Grunnen til at de ofte diskuteres sammen
|
|
|
|
----
|
|
|
|
### Eksempel på komprimering
|
|
|
|
\\[ AAAAAAABBBBAAAAABB \\]
|
|
|
|
\\[ A6B4A5B2 \\] <!-- .element: class="fragment" data-fragment-index="1" -->
|
|
|
|
Note:
|
|
|
|
Rart for tekst, men gir mening for bilder -> Runlength encoding
|
|
|
|
----
|
|
|
|
### Eksempel på lossy komprimering
|
|
|
|
Dette er en eksempelsetning.
|
|
|
|
Dte e en eksmplstnig <!-- .element: class="fragment" data-fragment-index="1" -->
|
|
|
|
Note:
|
|
ikke vanlig for tekst, men akseptabelt for video/lyd/bilde
|
|
Gjøres ofte på tjenester som messenger.
|
|
|
|
---
|
|
|
|
# Algoritmer
|
|
|
|
Note:
|
|
Beskriver stegvis og nøyaktig hvordan man løser et problem
|
|
Uten tolkning
|
|
Pseudokode
|
|
|
|
----
|
|
|
|
(Eksempel på pseudokode)
|
|
|
|
---
|
|
|
|
## Kompleksitet
|
|
|
|
<table>
|
|
<tr>
|
|
<td>
|
|
|
|
\\[ \mathcal{O}(1) \\]
|
|
|
|
</td>
|
|
<td>
|
|
|
|
```python
|
|
def f(lst):
|
|
print('Hi!')
|
|
```
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
|
|
\\[ \mathcal{O}(n) \\]
|
|
|
|
</td>
|
|
<td>
|
|
|
|
```python
|
|
def f(lst):
|
|
for item in lst:
|
|
print(item)
|
|
```
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
|
|
\\[ \mathcal{O}(n^2) \\]
|
|
|
|
</td>
|
|
<td>
|
|
|
|
```python
|
|
def f(lst):
|
|
for item in lst:
|
|
for itemOnceMore in lst:
|
|
print(item, itemOnceMore)
|
|
```
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
Note:
|
|
brukes mer om dere skal programmere mye
|
|
|
|
----
|
|
|
|
Sorteringsalgortimer:
|
|
|
|
- Bubble sort: \\(\mathcal{O}(n^2)\\)
|
|
- Merge sort : \\(\mathcal{O}(n\ log\ n)\\)
|
|
|
|
---
|
|
|
|
# Nettverk
|
|
|
|
---
|
|
|
|
## Internett
|
|
|
|
- Hva er det
|
|
|
|
----
|
|
|
|
### Historie
|
|
|
|
- ARPAnet
|
|
|
|
Note:
|
|
Sponset av Dep. of defense, USA
|
|
Kjellermaskiner, matte
|
|
Ble ikke brukt aktivt hele tiden
|
|
Overføre instruksjoner
|
|
Maksimal utnyttelse
|
|
Flere universiteter koblet seg på
|
|
Ikke veldig planlagt
|
|
|
|
---
|
|
|
|
### 5 lags modellen
|
|
|
|
<img src="./static/graphics/network-layers/network-stack.svg" width=40%/>
|
|
|
|
Note:
|
|
pakker
|
|
pakket inn i hverandre
|
|
|
|
----
|
|
|
|
### Physical layer
|
|
|
|
Note:
|
|
Medium for kommunikasjon mellom 2 eller flere endrepunkter
|
|
|
|
----
|
|
|
|
### Data link layer
|
|
|
|
Note:
|
|
Etablert: Kommunikasjonsmedium
|
|
|
|
Stabil overføring, og kontakt med andre ender
|
|
|
|
----
|
|
|
|
### Network layer
|
|
|
|
Note:
|
|
Etablert: Flere computere er koblet sammen
|
|
|
|
Kommunikasjon gjennom flere computere.
|
|
|
|
Oppfører seg litt som postkontorer
|
|
|
|
----
|
|
|
|
### Transport layer
|
|
|
|
Note:
|
|
Etablert: Link over mange computere.
|
|
|
|
Stabil og sikker kommunikasjon til tross for forsvunnede pakker,
|
|
|
|
----
|
|
|
|
### Application layer
|
|
|
|
Etablert: Stabil og sikker kommunikasjon.
|
|
|
|
Applikasjonsspesifikk data.
|
|
|
|
---
|
|
|
|
|
|
|
|
# Programvareutvikling
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
Note:
|
|
|
|
Løs tidligere eksamener
|
|
|
|
Crash course
|
|
|
|
|
|
|
|
|