OS Flashcards
C’est quoi un OS ?
Ensemble logiciel qui orchestre l’accès aux
ressources matérielles et logicielles d’un ordinateur,
et fourni des services aux programmes.
A quoi sert un OS ?
couche d’abstraction
partage, isolation et protection des ressources
Donner des fonctionalités des OS
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)
Comment parler avec le kernel ?
Avec des syscall CE QUI AMENE A UN CHANGEMENT DE MODE
A quoi servent des protections rings
- Protection hardware
- Niveau de privilège
- Virtualisation
Donner les caracteristiques possibles d’un OS :
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
UNIX a quelle caracteristiques ?
Multi-tâche
Multi-utilisateurs
Donner les deux concepts fondamentaux de linux
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
C’est quoi POSIX ?
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 !
C’est quoi le Virtual File System ?
associer Nom -> Fichier + Méta donné
C’est quoi un I-node ?
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)
Quels sont les types de fichiers en UNIX ?
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)
Quelle différence entre les hard link et les soft link ?
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)
C’est quoi un point de montage ?
répertoire du SF racine où l’on attache un autre SF
Comment identifier de manière unique un fichier ?
numéro d’inode + identifiant du support (device ID)
Donner les fonctionalités d’un système de fichier
- 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)
C’est quoi le Shell ?
Logiciel permettant d’interagir avec le système d’exploitation (coque)
Donner les avantages du shell
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é
Que défini la colling convention ?
La calling convention défini comment le caller parle avec le callee
* Où stocker les valeurs
* Dans quel ordre
Comment partager de la mémoire ?
Avec shm et mmap
Comment créer un processus en C ?
posix_spawn()
Comment copier le processurs courrant en C ? (Sauf PID etc…)
fork/clone
Que fait exec
Remplace tout le processus par un autre programme
* Sauf les file descriptors !
C’est quoi le Loader
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
Que permet wait() ?
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 !
C’est quoi un processus zombie ?
Un processus terminé reste dans la table des processus jusqu’à ce
que son parent le « wait », et récupère son code de retour.
C’est quoi un processus orphelin ? Par qui est il adopté ?
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 !
Donner les états d’un processus
- 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.
C’est quoi l’ordonanceur ?
L’ordonnanceur (scheduler)
est responsable des
changements d’états entre
C’est quoi la préomption ?
Préemption :
L’ordonnanceur force le
changement d’état
Running → Ready
(Tache suspendu au profit d’un autre)
C’est quoi le PCB ?
Structure qui contient les informations d’un processus
* PID, PPID
* Temps CPU accumulé
C’est quoi un Context switch ?
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
Expliquer ce qu’est un scheduler Préemptif ?
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)
Expliquer ce qu’est un scheduler Collaboratif ?
Les programmes ont la charge de libérer le processeur (via un Wait/Yield)