---
# System prepended metadata

title: SYS2 4
tags: [' system', ' ING1', ' réseaux', ' S6', SYS2]

---

---
lang: fr
title: SYS2 4
tags: SYS2, system, réseaux, ING1, S6
date: 04/03/2019
---

# SYS2 4


### Résumé de la dernière fois :clock1: 

<img src="https://docs.google.com/drawings/d/e/2PACX-1vTExhEoLrknQfqhDXB-SZv0A9y3rXl6nXVkwRhKgUoJrFfgRXPl2wosoirJPHywyckdJ245y0GhRSzT/pub?w=960&amp;h=720">

Deux types de tâches:
- IO bound
- CPU-Bound

Waiting time

<hr>

<img src="https://docs.google.com/drawings/d/e/2PACX-1vSlyfVhPVQp9QJJR1b99NfP_Ol7D710KJJJA88n1f1PS-xFtyxlLXlnAuCK3Y_e8dyJkDUFV5gviNCy/pub?w=960&amp;h=720">



### Type de caches

- TLB: Comme un cache L1, mais ça garde les dernières mapping entre adresses virtuel et physique 
- L1 (I,O): Cache le plus rapide d'accès, ça stocke les dernière variables utilisés et leurs valeurs.
- L2: Comme L1 mais un peu moins rapide, mais plus gros donc on le sollicite ne deuxieme
- L3, L4: Plus gros, moins rapide

Quand on met dans le cache, on met toujours un  peu plus.
Quand on déréference un case d'un tableau y'a de fortes chances qu'on deréference la deuxieme...

++Rappel de la pipeline++:

- Fetch: Récupère une insctruction
- Decode: Savoir quels registre nous interesse etc.
- Execute: On commence a executer
- Memory : on ecrit dans la mémoire si besoin
- Writeback: Remet a jour les registres si besoin

Cela permet d'aller plus vite que si on faisait l'execution d'un coup car comme ça, on peut découper les tâches.

Les étapes qui sont touchés par le cache sont le fetch et memory.
Du coup c'est fetch et memory qui vont ralentir la pipeline car ils utilisent tous les deux L2 -> Solution: L1I et L1D


L2 est partagé entre les coeurs.

```graphviz
graph G {
    rankdir = LR
    node [shape=box]
    Coeur1--L2--Coeur2
}
```

:::danger
Gaby a expliqué au dernier cours que c'est L3 qui est entre les coeurs. A vérifier.
:::

==TLB==: Lien entre adresse physique et virtuelle.


### Comment améliorer l'algo du round robin ?


Pour le moment on a une queue, et on rentre des process IO-Bound et CPU-Bound.

IO-BOUND: Quantum plus petit mais plus fréquemment
CPU-Bound: Plus long mais moins fréquement

On a deux queue: IO Bound prgram et CPU bound program

Quand on passe de run a waiting -> Queue des IO Bound
Quand on passe de run a ready -> Queue des CPU Bound


==CFS (Completly fair scheduler)==: Il faut minimiser le waiting time. On considère que chaque programmes a son propre cpu et on va compter leurs temps passer sur le cpu. Dans le CFS on a 4 scheduler différent. (plus d'info sur kernel.org)




<hr>

## Cours d'alex

