itgk-kurs-2021/main.md

512 lines
8.9 KiB
Markdown
Raw Normal View History

2021-11-15 14:01:58 +01:00
<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
2021-11-15 22:01:28 +01:00
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
2021-11-15 14:01:58 +01:00
---
## Generelt
Hva er IT
Kort Historie
---
2021-11-15 22:01:28 +01:00
### Folk som er viktige
<!-- TODO: Add people and pictures -->
2021-11-15 14:01:58 +01:00
2021-11-15 22:01:28 +01:00
- Von Neumann
2021-11-15 14:01:58 +01:00
---
<!-- .slide: data-auto-animate -->
2021-11-15 22:01:28 +01:00
### Et par begreper:
2021-11-15 14:01:58 +01:00
<div class="columns">
2021-11-15 22:01:28 +01:00
<div>
2021-11-15 14:01:58 +01:00
2021-11-15 18:26:51 +01:00
- PC <!-- .element: data-id="pc" -->
- Operativsystem
- Abstraksjon
2021-11-15 14:01:58 +01:00
- Transistorer
- IC
</div>
2021-11-15 22:01:28 +01:00
<div>
2021-11-15 14:01:58 +01:00
2021-11-15 18:26:51 +01:00
- Hardware
- Software
2021-11-15 14:01:58 +01:00
- Kernel
- WWW/Internet
- High level/Low level
2021-11-15 18:26:51 +01:00
- bit
2021-11-15 14:01:58 +01:00
</div>
</div>
Note:
Operativsystem -> Ressursallokering -> Kernel -> Grafisk brukergrensesnitt
----
2021-11-15 22:01:28 +01:00
<!-- .slide: data-auto-animate data-transition="zoom-in" -->
<div class="columns">
<div>
2021-11-15 18:26:51 +01:00
2021-11-15 22:01:28 +01:00
- PC <!-- .element: data-id="pc" -->
2021-11-15 18:26:51 +01:00
2021-11-15 22:01:28 +01:00
</div>
<div>
</div>
</div>
2021-11-15 14:01:58 +01:00
2021-11-15 22:01:28 +01:00
----
---
2021-11-15 14:01:58 +01:00
<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
---
2021-11-15 22:01:28 +01:00
### Tallsystemer
Note:
2021-11-15 14:01:58 +01:00
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*
---
2021-11-15 22:01:28 +01:00
### Negative tall
2021-11-15 14:01:58 +01:00
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
---
2021-11-15 22:01:28 +01:00
### 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:
2021-11-15 14:01:58 +01:00
Matematisk tilnærming
Signed bit, exponent - 2^?, signifikant?
består av 3 biter, kan gi rare utregninger iblant
2021-11-15 22:01:28 +01:00
Opphøyd i 10, men i virkeligheten opphøyd i 2
Ikke veldig viktig, men kan være oppklarende.
2021-11-15 14:01:58 +01:00
---
# Hardware
2021-11-15 22:01:28 +01:00
<!-- TODO: add toc -->
- Datamaskin
---
2021-11-15 14:01:58 +01:00
# Datamaskin
2021-11-15 22:01:28 +01:00
Note:
2021-11-15 14:01:58 +01:00
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%"/>
2021-11-15 22:01:28 +01:00
Note:
Limet som fester alle de andre bitene sammen.
Inneholder litt logikk for konfigurasjon av alle bitene, men lite ellers.
2021-11-15 14:01:58 +01:00
---
## CPU
2021-11-15 22:01:28 +01:00
<img src="./static/graphics/cpu.png" width=40%/>
<img src="./static/graphics/processor.gif" width=40%/>
Note:
2021-11-15 14:01:58 +01:00
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.
2021-11-15 22:01:28 +01:00
----
### Fetch Decode Execute Cycle (De 5 stegene)
2021-11-15 14:01:58 +01:00
2021-11-15 22:01:28 +01:00
Note:
2021-11-15 14:01:58 +01:00
*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
2021-11-15 22:01:28 +01:00
<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:
2021-11-15 14:01:58 +01:00
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.
2021-11-15 22:01:28 +01:00
---
2021-11-15 14:01:58 +01:00
2021-11-15 22:01:28 +01:00
# Digital Representasjon
2021-11-15 14:01:58 +01:00
---
2021-11-15 22:01:28 +01:00
## Analog/Digital
2021-11-15 14:01:58 +01:00
2021-11-15 22:01:28 +01:00
<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:
2021-11-15 14:01:58 +01:00
Analog kan du måle bortimot så nøyaktig du vil
Digital har et visst sett med 0 og 1
2021-11-15 22:01:28 +01:00
---
2021-11-15 14:01:58 +01:00
2021-11-15 22:01:28 +01:00
## Piksler
2021-11-15 14:01:58 +01:00
2021-11-15 22:01:28 +01:00
<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>
2021-11-15 14:01:58 +01:00
2021-11-15 22:01:28 +01:00
Note:
2021-11-15 14:01:58 +01:00
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;}
2021-11-15 22:01:28 +01:00
.rgb-gre {color: #00FF00;}
.rgb-blu {color: #0000FF;}
2021-11-15 14:01:58 +01:00
.rgb-cof {color: #C0FFEE;}
.rgb-whi {color: #FFFFFF;}
.rgb-bla {color: #000000;}
</style>
2021-11-15 22:01:28 +01:00
<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>
2021-11-15 14:01:58 +01:00
2021-11-15 22:01:28 +01:00
| Farge | <span class="rgb-red">Rød</span> | <span class="rgb-gre">Grønn</span> | <span class="rgb-blu">Blå</span> |
2021-11-15 14:01:58 +01:00
|--------------------------------------|---------------|---------------|---------------|
| <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" -->
2021-11-15 22:01:28 +01:00
<div>
2021-11-15 14:01:58 +01:00
2021-11-15 22:01:28 +01:00
| Farge | <span class="rgb-red">Rød</span> | <span class="rgb-gre">Grønn</span> | <span class="rgb-blu">Blå</span> |
2021-11-15 14:01:58 +01:00
|--------------------------------------|----------------|----------------|----------------|
| <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}\\) |
2021-11-15 22:01:28 +01:00
| <span class="rgb-bla">#000000</span> | \\(0_{10}\\) | \\(0_{10}\\) | \\(0_{10}\\) |
2021-11-15 14:01:58 +01:00
</div> <!-- .element: class="fragment fade-in" data-fragment-index="1" -->
</div>
Note:
Regn ut 1920x1080 x 24 bits
---
# PAUSE
---
2021-11-15 22:01:28 +01:00
## 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 \\]
---
## Encoding og Komprimering
-
-
- 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" -->
----
### 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
---
2021-11-15 14:01:58 +01:00
# Algoritmer
2021-11-15 22:01:28 +01:00
----
---
## Kompleksitet
---
2021-11-15 14:01:58 +01:00
# Nettverk
2021-11-15 22:01:28 +01:00
---
## Internett
- Hva er det
----
### Historie
---
2021-11-15 14:01:58 +01:00
# Programvareutvikling
2021-11-15 22:01:28 +01:00