###### tags: `Dator- och nätverksteknik`
# OS (Operativsystem) - Main document
* Ett operativ system (OS) måste finnas för att vi ska kunna använda en dator
* Operativsystemet är Länk mellan användare och hårdvara
* Ett OS sköter bl.a.
* Inmatning och utmatning av data (också kallat I/O)
* Minneshantering för programmen som körs i RAM:et
* Processprioritering, bland annat schemaläggning
* Gränssnittet som tillåter programmen att "prata" med hårdvaran heter HAl (hardware abstraction layer)
---
> https://en.wikipedia.org/wiki/File:Computer_abstraction_layers.svg
* Ett operativsystem består av
* **Drivrutiner**
* Systemfiler (.dll)
* Programfiler (.exe)
---
---
* I Windows är detta oftast samlat under Windows C.
* En installation av Windows 7 består av över 30000 filer och tar ca 7 Gb diskutrymme.
---
## **Kopplingen mellan mjukvara och hårdvara**
* HAL:
* Hardware Abstract Layer (HAL)Operativsystem: Introduktion och viktiga begrepp
* Ett OperativSystem (OS) måste finnas om vi ska kunna använda en dator
* Länk mellan användare och hårdvara
---
* Ett OS sköter bl.a.
* Inmatning och utmatning av data
* Minneshantering för program
* Processprioritering
* Gränssnitt som tillåter programmen att “prata” med hårdvaran
* Loopen
---
* Ett operativsystem består av
* Systemfiler (.dll)
* Programfiler (.exe)
* Drivrutiner
---
* Kopplingen mellan mjukvara och hårdvara*
* Abstraherar hårdvaran från operativsystemet
* Gör att operativsystemet kan fungera på flera olika datorer med olik hårdvara så länge det är samma arkitektur (x86/x64)
---
* Application Programming Interface (API)
* Programvarufunktioner som operativsystemet tillhandahåller och som olika program kan använda sig av
* Mycket av detta är (i WIndows) DLL-filer
---
* Multitasking
* Förmågan att kunna göra flera saker samtidigt
* Ej samma sak som concurrency och parallellisering
* Concurrency: Datorn kör ej saker samtidigt men vi uppfattar det som samtidigt eftersom den gör det väldigt snabbt, alltså samtida processer
* Parallellisering: Datorn kör parallella processer
---
* Processer
* De program och tjänster som körs på datorn
* Tjänst (Service)
* Ett program som körs i bakgrunden
* TimeBroker är ett hatobjekt
* Trådar (Threads)
* En process eller program kan bestå av flera trådar och gör då flera saker parallellt
---
---
```mermaid
gantt
title Scheduler
section Process 1
Chrome :a1, 2025-01-01, 30d
Python App :after a1 , 20d
section Process 2
Windows :2025-01-12 , 12d
Macafee : 24d
```
---
* Virtuellt minne
* Används när arbetsminnet inte räcker till. Datorn lagrar då data på hårddisken i en s.k. växlingsfil eller pagefile. Filen heter pagefile.sys i Windows och ligger dold i roten på systempartitionen.
---
* Virtuell dator
* En Virtual Machine (VM) skapas med en hypervisor och är programvara som fungerar som en "dator i datorn".
---
* Interrupt
* Interrupt ReQuest (IRQ) är en hårdvarusignal som skickar en signal till processorn som pausar det program som körs.
---
* DMA
* Direct Memory Access används när någon komponent i datorn ska få direkt åtkomst till minnet utan att belasta processorn
---
* GUI
* Graphical User Interface är benämningen för det grafiska gränssnittet
* Eller "det man ser"
* CLI
* Command Line Interface är benämningen för teckenbaserat användargränsnitt
* T.ex. Terminal, CMD, Bash
<br>
---

<br>
## **Viktiga begrepp:**
* Hardware Abstract Layer (HAL)
* Gör att operativystemet kan fungera på flera olika datorer med olika hårdvara
* Så länge det är samma arkitektur (x86/x64)
* Application Programming Interface (API)
* Programvarufunktioner som tillhandahåller och hanterar olika funktioner.
* Dynamic Link Library (DLL)
* Innehåller programkod, data eller resurser såsom bilder, videor och ljud. Används främst i Windows och OS/2.
<br>
## **Olika slags OS**
* Microsoft Windows
* Windows XP, Vista, 7, 8, 8.1, 10, 11
* Windows Server 2003, 2008, 2012
* Linux
* Ubuntu, Linux Mint, Debian, Slackware, Red Hat, SuSE, CentOS, Arch Linux, Manjaro
* MacOS
* BSD Unix
* FreeBSD, OpenBSD
* Apple iOS
* Android
* Linuxbaserad
* Open Source
---
## **Operativsystem - Funktioner**
* Fortsättning:
* Windows, Dos, Linux, MacOS, iOS, Unix, Android, Ubuntu, Kali, Solaris, Arch, Solaris, Fedora, Chrome OS
* Headless - inget GUI (Graphical User Interface), endast terminal
* SSH:a - Innebär att man använder terminalen för att gå in på en annan dator.
* Är den del i datorn som kopplar ihop hårdvaran (och fast programvara) med mjukvaran.
* Funktioner:
* **Security**
* **User management**
* **Job accounting**
* **Error detecting aids**
* **Coordination between other software and users**
* "Operating systems also coordinate and assign interpreters and compilers"
* Compiler: Runs code via a compiled file, e.g. a .exe file.
* Interpreter: Runs code via direct input into the terminal
* **Memory management**
* It keeps track of memory, i.e which bytes of memory are occupied by each program and which bytes are free.
* The OS decides the order in which processes are granted access to memory, and for how long.
* It allocates the memory to a process when the process requests it and deallocates the memory when it is no longer needed.
* **Processor management**
* This function of the OS is called process scheduling.
* Keeps track of the status of processes.
* **Device management**
* Måste finnas om vi ska kunna använda en dator.
* Länk mellan användar eoch hårdvara.
* Sköter bland annat:
* Inmatning och utmatning av data
* Minneshantering för program
* Processprioritering
* Gränssnitt som tillåter programmen att "prata" med hårdvaran
* Består av:
* Systemfiler
* Programfiler
* Drivrutiner
**<u>Mobiler</u>**
- ARM-struktur
**<u>CPU-strukturer:</u>**
* AMD: 7 nm
* Intel: 12 nm
---
---
## Allmänt
* Alla OS är bara kod!
* http://www.minix3.org/documentation/AppendixB.html
* Som ni ser är detta operativsystem smått och får plats på ca 29000 rader
* Parallella körningar
* Exempel på schemaläggning:
* FIFO (First In, First Out)
* LIFO (Last In, Last Out)
* Process om körs i bakgrunden
* `herman$ sh minecraft.sh &`
* '& gör att det körs i bakgrunden
* **Minix**
* Är ett OS som man lätt kan
* Koda om schemaläggaren
* Från FIFO till något annat
* Skrivet i C++
* **Olika tolkar:**
* Bash/Zsh
* PowerShell (Windows)
* CMD: Kommandotolken
* Bash, Sh, Shell*
* Zsh, bra alternativ:
* Fler färgscheman
* Många fler funtktioner
* GitHub inbyggt
* Code completion
**WSL:**
* WSL står för Windows subsystem, som är ett eget filsystem som installeras på en windowsdator. Detta gör det möjligt att köra linux på windows utan att använda en VM
---
---
## **Krypteringsvarianter**
* **Symmetrisk kryptering**
* Både Alice (sändaren) och Bob (mottagaren) har en Public (Offentlig) och Private key.
* **Assymmetrisk kryptering**
* Bara Bob (mottagaren) har "nyckeln" till programmet.
* Används för Bitcoin, SSH, SSL
## Krypteringsprocessen - Asymetrisk kryptering
* Bob ger sin Public key till Alice
* Alice krypterar filen med Bobs publika nyckel
* Bob dekrypterar filen med sin Private key
---
# PLUGGA EJ PÅ DET NEDANFÖR
# PLUGGA EJ PÅ DET NEDANFÖR
# PLUGGA EJ PÅ DET NEDANFÖR
---
## Parallela processer
## Säkerhet
* **Denna genomgång behandlar följande:**
* Malware
* Skadliga program
* Virus
* En variant av malware som oftast samlar in information. Kräver interkation från användaren för att fungera
* Phishing
* Bedrägeri för att stjäla användaruppgifter
* Social Engineering
* Socialt manipulera folk eller institutioner för att få t.ex. information
## **Malware**
* Huvudsyftet med malware är att tjäna pengar, stjäla information, trolla, eller vad som helst, egentligen.
* **Olika sorters malware:**
* Kräver interkation av användare
* Skydd: Uppdaterat AV-program, utbildad persona
* Worm
* Kräver inte interaktion av användare
* Skydd: Uppdaterat AV-program, brandvägga
* Trojan Horse
* Utger sig för att vara något men har en dold funktio
* Skydd: Uppdaterat AV-program, utbildad persona
* Buffer Overflow
* Blottlägger minne genom att skicka input till systeme
* Skydd: Uppdaterat OS och progra
* Spyware
* Samlar information om användaren utan dess vetska
* Skydd: Uppdaterat AV-program, eller antispyware-progra
* Adware
* Fyller användarens dator med (ibland skadliga) annonse
* Skydd: Uppdaterat AV-program, utbildad personal
## **Virus**
* Ett datorvirus är ett körbart program som har förmågan att infektera andra filer och på så sätt sprida sig
* Ett virus kan göra skada i form av:
* Ansluta datorn till ett botnet
* Förstöra eller ta bort data
* Rensa hela diskar
* E-posta sig själv till andra i din kontaktlista
* Virus kommer i många former
* Vanligast är fortfarande e-postbilagor eller via IM
* Skript via e-post
* Infekterade USB-drives
* Infekterade filer som laddas hem
* Vanligt bland crackade programvaror
## **Worms**
* En *Worm* är ett program som kopierar sig själv från dator till dator via ett nätverk.
* Skillnaden mellan ett virus och en mask är att en mask installerar sig själv.
* I övrigt gör en mask samma skada som ett virus men kan utöver detta även överbelasta nätverket när den sprids.
* Kända masker
* Morris - en av de första, infekterade Unix-maskiner
* Conficker - största med 7 miljoner drabbade
* Sasser
* Blaster
## **Trojansk Häst**
* Mjukvara som verkar vara något annat än det egentligen är
* Har dolda funktioner som ofta gör skada i bakgrunden
* Kan hittas via aktivitetshanteraren
* Kan ta över din dator på fjärr och utpressa dig
## **Social Engineering**
* Hur säkert ett nätverk eller dator än är så kan en enskild person ställa till det.
* Istället för att lägga en massa tid och energi på att fånga upp lösenord och knäcka dem så kan en anfallare helt enkelt fråga efter lösenordet
* Social engineering är en samlingsterm
## Phishing
* Innebär att en förövare utger sig för att vara eller representera någon/något annat och genom bedrägeri lurar till sig användarinformation.
* En form av social engineering
## Bilder från lektioner



## Videor från lektioner
[Asymetrisk Kryptering](https://youtu.be/AQDCe585Lnc)
## Krypteringsprocessen - Asymetrisk kryptering
* Bob ger sin Public key till Alice
* Alice krypterar filen med Bobs publika nyckel
* Bob dekrypterar filen med sin Private key
## SSH - Secure Shell
* <u>SSH</u>
* Krav på
* "Connection" - Anslutning
* <u>SSL</u>
* HTTPS / HTTPS
* Om man kör SSH på WiFi (LAN) så måste man vara på samma.
* IP-adress
* Port
* Username [E:]
* Password [PGP - Pretty Good Privacy]

## SSH
* Secure Shell
* Networking Protocol
* Allows secure communications
* Can secure any network service
* Typically used for remote command line access
* "I princip en BASH/Terminal-version av TeamViewer (Fjärrkontroll av dator)"
## **Botnet**
* Mycket malware har som huvuduppgift att ta över en dator och ansluta den till ett **botnet** (robot network).
* Ett botnet består av flera datorer *clones*/*zombies*
* En server som kallas *command-and-control-server* kontrollerar datorerna i botnet.
* Ett botnet används oftast för DDoS-attacker (Distributed Denial of Service) och för att skicka *spam*
* Alla datorer med Internetaccess kan bli en zombie
* Även de enheter som tillhör Internet of Things kan övertas
## OS - End of line
The Carriage Return (CR) character (`0x0D, \r`) moves the cursor to the beginning of the line without advancing to the next line. This character is used as a new line character in Commodore and Early Macintosh operating systems (OS-9 and earlier).
The Line Feed (LF) character (`0x0A, \n`) moves the cursor down to the next line without returning to the beginning of the line. This character is used as a new line character in UNIX based systems (Linux, Mac OSX, etc)
The End of Line (EOL) sequence (`0x0D 0x0A, \r\n`) is actually two ASCII characters, a combination of the CR and LF characters. It moves the cursor both down to the next line and to the beginning of that line. This character is used as a new line character in most other non-Unix operating systems including Microsoft Windows, Symbian OS and others.
[Source](https://www.ni.com/sv-se/support/documentation/supplemental/21/labview-termination-characters.html)