---
# System prepended metadata

title: OS (Operativsystem) - Main document
tags: [Dator- och nätverksteknik]

---

###### 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>
---


![img](https://i.imgur.com/dM3h7UC.png)
<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

![](https://i.imgur.com/T0iQu9E.jpg)
![](https://i.imgur.com/RPYfhrK.jpg)
![](https://i.imgur.com/f9vbBbK.png)

## 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]

![](https://cdn.discordapp.com/attachments/885115655504920606/911164672667942912/daodac_encryption_a-b-e.png)

## 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)