OS Flashcards

1
Q

C’est quoi un OS ?

A

Ensemble logiciel qui orchestre l’accès aux
ressources matérielles et logicielles d’un ordinateur,
et fourni des services aux programmes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

A quoi sert un OS ?

A

couche d’abstraction
partage, isolation et protection des ressources

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Donner des fonctionalités des OS

A

Gestion des pilotes de périphériques (drivers)
* Ordonnanceur (scheduler)
* Interruptions
* Système de fichiers (filesystem)
* Gestion multi-utilisateurs
* Sécurité
* Interface (graphique ou non)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Comment parler avec le kernel ?

A

Avec des syscall CE QUI AMENE A UN CHANGEMENT DE MODE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

A quoi servent des protections rings

A
  • Protection hardware
  • Niveau de privilège
  • Virtualisation
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Donner les caracteristiques possibles d’un OS :

A

Mono vs Multi-tâches
* Plusieurs programmes en « parallèle »
* Mono vs Multi-utilisateurs
* Isolation via droits d’accès (matériel, fichiers, temps de calcul …)
* Temps Réel
* Contraintes et stabilité des temps d’exécution
* Embarqué
* Compacts et demandant peu de ressources.
* Distribué
* Abstrait plusieurs machines en une seule

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

UNIX a quelle caracteristiques ?

A

Multi-tâche
Multi-utilisateurs

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Donner les deux concepts fondamentaux de linux

A

Les processus
* programme en cours d’exécution
* Incarnation dynamique d’un programme statique (code)
* Les fichiers
* Utilisés pour quasiment tout représenter
* Hiérarchie mais une seule racine

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

C’est quoi POSIX ?

A

Portable Operating System Interface
* Standards pour les interfaces logicielles
* fonctions et structures en C
* Standards pour les interfaces utilisateurs
* Ligne de commande (Bourne Shell)
* Peut être implémenté sur des OS non-UNIX
* C’est le cas de Windows
* Il y a plusieurs versions du standard !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

C’est quoi le Virtual File System ?

A

associer Nom -> Fichier + Méta donné

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

C’est quoi un I-node ?

A

Identifié par un numéro d’indexation dans une table système
ilist[inumber] = inode

Contient des métas donnés

Pas d’informations sur la hiérarchie ! (chemin/nom)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Quels sont les types de fichiers en UNIX ?

A

Régulier: binaire/text (.pdf, .txt, .json, .png, …)
* Répertoire: Liste associant noms et inode
* Spécial: Lecture par bloc / caractère (périphérique)
* Lien symbolique: Référence un autre fichier (par son chemin)
* Tube nommé (pipe): Communication unidirectionnelle (local)
* Socket: Communication bidirectionnelle (distant)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quelle différence entre les hard link et les soft link ?

A

Hard link
* Association nom (chemin => inode)
* Incrémente le compteur de liens
* Il pointera toujours vers un fichier
* Fichier réellement supprimé lorsque le compteur tombe à 0
* Soft link
* Association chemin => chemin
* Si le chemin pointé disparait, le soft link ne fonctionne plus (dangling link)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

C’est quoi un point de montage ?

A

répertoire du SF racine où l’on attache un autre SF

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Comment identifier de manière unique un fichier ?

A

numéro d’inode + identifiant du support (device ID)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Donner les fonctionalités d’un système de fichier

A
  • Journalisation
  • Redondance multi-disques (RAID)
  • Partitions/volumes multi-disques
  • Redimensionnement à chaud
  • Compression
  • Chiffrement
  • Gestion des droits d’accès
  • Quotas
  • Déduplication
  • Copy-On-Write (Shadow copy)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

C’est quoi le Shell ?

A

Logiciel permettant d’interagir avec le système d’exploitation (coque)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Donner les avantages du shell

A

Très commun : le shell « standard »
+ Sa syntaxe sert généralement de base pour d’autres shell
+ Très riche : accès facile aux fichiers, processus, …
+ Bien documenté

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Que défini la colling convention ?

A

La calling convention défini comment le caller parle avec le callee
* Où stocker les valeurs
* Dans quel ordre

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Comment partager de la mémoire ?

A

Avec shm et mmap

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Comment créer un processus en C ?

A

posix_spawn()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Comment copier le processurs courrant en C ? (Sauf PID etc…)

A

fork/clone

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Que fait exec

A

Remplace tout le processus par un autre programme
* Sauf les file descriptors !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

C’est quoi le Loader

A

Partie de l’OS responsable du chargement d’un processus.
Il doit notamment :
* Valider des droits d’exécution
* Mapper en mémoire du code à exécuter
* Le programme lui-même
* Les bibliothèques dynamiques
* Copier les paramètres de ligne de commande
* Initialiser les registres (SP, BP, …)
* Jumper à l’adresse de début du programme (entrypoint)
* Correspond à modifier l’IP

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Que permet wait() ?

A

Attente de la fin d’un processus enfant
* Récupération du code de retour
* Un processus est considéré comme « zombie » tant que son parent n’a pas
récupéré son code de retour !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

C’est quoi un processus zombie ?

A

Un processus terminé reste dans la table des processus jusqu’à ce
que son parent le « wait », et récupère son code de retour.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

C’est quoi un processus orphelin ? Par qui est il adopté ?

A

Un processus dont le parent se termine avant l’enfant
* C’est un processus « orphelin ».
* Le processus est adopté par
* Le premier un processus marqué comme « subreaper » parmi les ancêtres
* le processus racine init
* Il n’est donc pas orphelin très longtemps !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Donner les états d’un processus

A
  • Running : En cours d’exécution
  • Runnable : Mis en pause par l’ordonnanceur
  • Uninterruptible : ne se réveille pas en cas de signal
  • En général en train de faire de l’I/O
  • Interruptible : se réveille en cas de signal
  • Stopped : Arrêté par un signal SIGTSTP/SIGSTOP,
    peut être réveillé par le signal SIGCONT
  • Zombie : Processus terminé (soit par lui-même, soit
    par un utilisateur) mais qui n’a pas été attendu par
    son parent.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

C’est quoi l’ordonanceur ?

A

L’ordonnanceur (scheduler)
est responsable des
changements d’états entre

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

C’est quoi la préomption ?

A

Préemption :
L’ordonnanceur force le
changement d’état
Running → Ready
(Tache suspendu au profit d’un autre)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

C’est quoi le PCB ?

A

Structure qui contient les informations d’un processus
* PID, PPID
* Temps CPU accumulé

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

C’est quoi un Context switch ?

A

Lorsqu’un processus sort de l’état « Running », il faut sauvegarder son
état actuel pour reprendre son calcul plus tard :
* Changement de mode → kernel
* Sauvegarde
* registres et pointeurs (IP, SP, BP, …)
* PCB
* Mitigations de failles de sécurité Hardware (e.g. Spectre)
* …
* Restauration du process de destination

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Expliquer ce qu’est un scheduler Préemptif ?

A

Le système réquisitionne l’utilisation d’un processeur quand il estime qu’il
faut l’attribuer à un autre processus
* Généralement basé sur un Quantum de temps (a.k.a. time slice)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Expliquer ce qu’est un scheduler Collaboratif ?

A

Les programmes ont la charge de libérer le processeur (via un Wait/Yield)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Expliquer l’ordonancement FCFS ?

A

First Come First Served

36
Q

Expliquer l’ordonancement SJF ?

A

(Shortest Job First) : Préemptif ou non

37
Q

Expliquer l’ordonancement Priority ?

A

FCFS avec une liste par priorité

38
Q

Expliquer l’ordonancement RR ?

A

FCFS avec un quantum - Préemptif

39
Q

Expliquer l’ordonancement CFS ?

A

Completely Fair Scheduler) Par défaut sur Linux

40
Q

Quelle est la différence entre la mémoire interne et externe

A

Interne : accessible depuis le CPU
* Dite « de travail »
* RAM, PCI-express,…
* Externe : les données doivent être copiées en mémoire interne pour
être accédées par le CPU

41
Q

Avantages de l’adressage virtuel

A

Pas d’accès à la mémoire d’un autre processus (sauf si partage explicite)
* (taille de l’espace virtuel) ≠ (taille de l’espace physique)
* Pour ne charger en mémoire que le nécessaire
* Ou utiliser plus de mémoire que l’on peut adresser (>4Go avec CPU 32 bits)
* Plusieurs adresses virtuelles → une adresse physique
* Partage/réutilisation de mémoire entre processus
* Pas de problèmes de fragmentation causés par les autres processus
* Mapping de fichiers
* Permet de lire des fichiers comme s’ils étaient en RAM !

42
Q

C’est quoi la pagination ?

A

Découpage en blocs de taille fixe
* Adresse = PageNumber x PageSize + Offset

43
Q

C’est quoi les Segments ?

A

pace mémoire contigu de taille variable
* Table des segments => Adresse de la base | taille | permissions
* Origine de la segmentation fault
* Plus vraiment utilisé côté HW de nos jours

44
Q

C’est quoi la page table

A

TRADUIT ADRESSE VIRTUELLE EN ADRESSE PHYSIQUE

Page Table (structure de donnée)
* Traduction Page Number → Page Frame Number (PFN)
* Peut également contenir des informations sur la page (protection, validité…)
* Chaque processus a ses propres tables
* Changement lors d’un context switch
* La page table peut elle aussi être allouée en mémoire virtuelle
* Permet d’éviter de créer un mapping complet de la mémoire (coûteux)
* Tout ça est de nos jours géré côté hardware par le
MMU (Memory Management Unit)
* La structure dépend donc du CPU (x86 ≠ x64 ≠ ARM ≠ …)

45
Q

C’est quoi une page fault ?

A

Exception renvoyée par le MMU, traitée par le kernel (sinon envoie SIGSEGV)
* Si l’adresse est invalide
* Si les droits ne correspondent à l’opération (e.g. écrire dans une page read-only)
* Si on tente d’exécuter une page No-Execute
* Si l’un des bits « Reserved » vaut 1
Le kernel peut utiliser ce mécanisme pour :
* délayer le mapping avec la page physique (on-demand paging)
* charger des bouts de fichiers (file mapping)
* Copy On Write (COW

46
Q

C’est quoi le TLB ?

A

Traduire une adresse peut nécessiter 3 indirections !

C’EST UN CACHE

Tableau avec X (16-512) paires Page Number ⇔ Page Frame Number
* Si le numéro de page est déjà présent, on renvoie le numéro de frame
* Sinon, on demande au MMU et stocke le résultat pour après

47
Q

C’est quoi le Résident / Working set ?

A

Comme mentionné plus tôt, l’OS n’assigne pas (toujours) directement
une page physique pour une adresse mémoire.
On appelle Resident Set l’ensemble des pages virtuelles ayant un
mapping valide vers une page physique.
RSS (Resident Set Size)
→ C’est la métrique principale à regarder dans ps/top
N’inclue pas la mémoire partagée, ni en général les hugepages

48
Q

C’est quoi un page file / Swap file

A

Que se passe-t-il lorsque le système n’a plus assez de mémoire ?
- On choisit des pages à « expulser » (evict) de la mémoire
- On rend la page invalide
- On écrit son contenu sur une mémoire externe : le page file
- Typiquement votre disque dur/SSD
- Si plus de place dans le swap file => « out of memory ! »
- Uniquement si la page est « dirty » ou pas déjà sur le disque
- Lors d’un futur accès
- Page Fault => on recharge les données depuis le disque

49
Q

Donner des algorithmes de remplacement de page

A

Aléatoire : Le meurtrier fou, rapide, mais dangereux
* FIFO : Page la plus anciennement chargée
* LRU : Page la plus anciennement utilisée
* Clock : Pseudo LRU basé sur un compteur incrémenté tout
les X ticks si la page a été utilisée depuis le dernier tick
* 2nd chance : On commence par les pages non utilisées, puis fallback
sur un autre algorithme
* Belady: Page qui sera utilisée dans le futur le plus lointain
Utilisé pour comparaison théorique car optima

50
Q

Donner la définition de parallélisme

A

Lorsque l’exécution des tâches
est simultanée.
Dans le cas d’un processeur,
ce n’est possible uniquement que
si l’on a plusieurs cores ou SMT.

51
Q

Donner la définition de concurence

A

capacité d’un système à gérer plusieurs tâches en même temps, mais pas nécessairement en les exécutant simultanément. Il s’agit de la gestion de plusieurs tâches qui progressent, potentiellement en alternance, dans le temps.

52
Q

Donner le lien entre parallelisme et concurence

A

Parallélisme => Concurrence

53
Q

C’est quoi un Thread ? Quelle propriété ça à par rapport à un processus ?

A

Un process contient autant de threads qu’il le souhaite.

Les ressources (mémoire et puissance) du processus sont partagées entre les threads

=> Context swtich plus rapide

54
Q

C’est quoi l’oversubscription ?

A

Quand un process à trop de thread.

55
Q

Que fait join ?

A

C’est pour attendre un autre thread, sinon on peut le détaché si on le syncronise d’une autre manière

56
Q

C’est quoi une coroutine ?

A

Thread en plus :
- Légé
- Simple à syncro
Un thread peut switcher d’une coroutune à une autre

57
Q

Quelle est la différence entre Stackful coroutines et Stackless coroutines ?

A
  • Chaque fibre sauvegarde sa propre stack au complet VS Données copiées pour la reprise de l’exécution
58
Q

Que fait fork vis à vis des descripteur de fichier ?

A

Il duplique la table donc pointe sur les même fichers

59
Q

Que fait fork vis à vis des descripteur de fichier ?

A

Il ne ferme pas les descripteurs

60
Q

C’est quoi le Buffering user-land ?

A

fwrite
Copie les données dans un
buffer du process
Appelle write qu’une fois le
seuil atteint (Evite de couteux syscalls) = Flush

61
Q

C’est quoi le Cache kernel-land ?

A

Copie des données dans une
page de cache
Flushé régulièrement

62
Q

C’est quoi IO rings ?

A

On a deux file,
App met dans la queue de la submistion queue
Kernel prend dans la tête et l’execute

Kernel met le resultat dans la completion queue
L’app les récupères en tête de la completion queue

63
Q

C’est quoi une ressource ?

A

Entité requise par un processus pour s’exécuter
-Matérielle (CPU, RAM, périphérique…)
- Logicielle (variable)

64
Q

C’est quoi une race condition ?

A

Situation de compétition entre deux precessus :
RESULATAT DIFFERENT EN FONCTION DE L’ORDRE D’EXECUTION DES PROCESSUS

65
Q

C’est quoi une ressource critique ?

A

Si des accès peuvent mener à un état incohérent

66
Q

C’est quoi une section critique ?

A

Section de programme où est manipulé une ressource critique

67
Q

C’est quoi une primitives de synchronisation ?

A

instruction simple qui permet la synchronisation de processus

68
Q

C’est quoi Mutual exclusion ?

A

A tout instant du programme, au plus UNE seule unité d’exécution
peut obtenir et accéder la ressource critique

69
Q

C’est quoi un mutex ?

A

Objet permettant de réaliser une exclusion mutuelle. (Lock / Unlock)

70
Q

C’est quoi un Mutex réentrant ?

A

Mutex qui autorise un même thread à lock plusieurs fois la même ressource

71
Q

C’est quoi un deadlock ?

A

Deux thread :
Un lock A et veut B
Lautre veut A et lock B

72
Q

C’est quoi une Starvation / Famine ?

A

Un thread lock A et pleins d’autre thread veulent A

73
Q

Comment éviter la famine ?

A

(Multiple)Readers-(Single)Writer lock

74
Q

C’est quoi un Semaphore ?

A

Un compteur initialisé à une valeur qui ne doit pas aller en dessous de 0.
Si cette valeur d’init est 1, on l’appelle une binary-semaphore

A voir comme un parking avec un compteur d’emplacements disponibles.
Si 0, j’attends qu’une place se libère, sinon je me gare

75
Q

C’est quoi une Busy loop ?

A

Loop qui vérifie en boucle s’il y a des choes à faire => Pas bien car ne s’endort jamais du coup

76
Q

C’est quoi une condition variable ?

A

De façon atomique: Libère le mutex + Met le thread courant dans la liste des
threads à réveiller + Endort le thread

Puis une fois réveillé, acquiert à nouveau le mutex

77
Q

Comment éviter les spurious wakeups ?é

A

toujours vérifier la condition associée
au réveil !

78
Q

C’est quoi une priority inversion ?

A

LP lock A
MP veut taffer donc passe avant LP
HP veut taffer donc passe avant MP mais a besoin de A donc attends.

Résultat : MP est executé avant HP

79
Q

Comment éviter une priority inversion ?

A

Priority ceiling
* Si une tache acquiert une ressource, sa priorité devient la priorité la plus
haute

Priority inheritance
* Si un thread tente de lock une ressource déjà lockée, le thread qui la
possède reçoit la plus haute priorité des deux threads.

Priority boost / Random boosting
* On boost la priorité d’un thread resté inactif

80
Q

C’est quoi une Barrière ?

A

Aucun ne peux continuer sans attendre les autres

81
Q

C’est quoi opérations atomiques

A

Une opération atomique est une opération (ou semble d’opérations) ne pouvant être interrompues avant leur fin.

82
Q

Que permettent les opérations atomique ?

A

Permet de faire des structures lockless / lockfree

83
Q

Les volatiles sont ils utilies avec les threads ?

A

NON (une variable volatile est une variable sur laquelle aucune optimisation de compilation n’est appliquée)

84
Q

Méthodes de programmation concurrente

A
  • Message queues (Apache Kafka, RabbitMQ, ActiveMQ …)
  • Event loops (Windowing APIs, Javascript, D-Bus…)
  • Streaming processing (Kafka Spark, Google Dataflow, Datastreams…)
  • Transactions (Base de données, votre CPU, Filesystems…)
  • SPMD Single Program Multiple Data (SIMD, ISPC, HLSL, GLSL, CUDA…)
  • Task/job systems (task graphs, threadpools, Unity, UE5, …)
85
Q

C’est quoi IPC ?

A

Communication Inter-Processus
Pour le partage de données : Fichier / mémoire partagée

Pour la syncro : Signaux, sémaphores, verrous

Pour les deux : Tube