---
# System prepended metadata

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

---

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

# SYS2 3

Sujet du jour: scheduling

Le but du scheduling est d'ordonner des tâches.

Une tâche contient:
- Deadline
- Temps d'execution
- Dépendances
- (priorité mais bon...)

Sur les ordis on a plusieurs types de scheduling.

- Batch
- FCFS (first come first served)
- SJF (shortest job first)

==le batch scheduling==: on execute une tâche/programme à la fois. Les uns à la suite des autres.

Pour vérifier l'efficacité d'un systeme de scheduling on utilise le ++turnaround time++ qui est le temps qu'un programme met pour finir toutes les tâches, le ++throughput (débit)++ qui est le nombre de tâches faisable en un certain laps de temps donné.

==FCFS==: First come, fist served

==SJF==: Shortest jobfirst

==Time sharing==:


Parmi ces choses là, on a aucun moyen de définir une deadline, un temps d'execution ou des dépendances $\rightarrow$ c'est la merde.


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

Le but dans ce schéma est de maximiser le temps en run.
Les caractéristique de  l'algo de scheduling doit donc être:
- rapide (O_1)
- Fair (pas autant de ressources pour chacun mais plutôt suffisament pour que tout le monde puisse tourner convenablement)
- Starvation

Dans un algo fifo:
- On est enn O_1
- Fair
- Mais on change de process uniquement quand un process passe en waiting


==Response time==: le temps entre la transition new et running.

==Waiting time==: Temps passé en ready

Dans un algo quantum:
On va avoir des problèmes avec les syscalls. S'il reste 0.0000001 sec à un program, et qu'il vient de lancer un syscall.



Deux types de programmes:

- Interactif: Qui exécute des syscalls
    - Shell
    - Serveur http
    - Browser
    - Init

- Non interactif:
    - Un truc qui fait des calculs
        - Par ex: un compilo

bottleneck:
    - IO Bound -> Interactif
    - Memory bound
    - CPU Bound -> Non interactif


:::info
Si je suis interactif -> je suis io bound -> j'execute des syscalls
:::

Un programme interactif aura tendance a ne pas finir le quantum.

