Systèmes Flashcards
def. : Système d’exploitation
Logiciel entre les applications et le matériel. Ses principales fonctions sont : - gestion de l'activité - gestion de l'information (mémoire) - gestion des communications - protection
def : interface + 2 types
L’interface est l’ensemble des fonctions accessibles aux utilisateurs du service
Interface de commande (ex : commande Shell) et interface de programmation
Les différentes couches du système avec ce qu’elles contiennent
+ Niveau utilisateur : Applications utilisateur, Logiciels de base, Bibliothèques système, Appels de fonction
+ Niveau noyau : Gestion des processus, Système de fichier, Gestion de la mémoire
+ Niveau matériel : Firmware, contrôleur, SOC (système complet embarqué sur une seule puce)
Méthodes d’isolation des programmes (et utilisateurs) dangereux
+ Préemption : ne donner aux applications que ce qu’on peut leur reprendre
+ Interposition : pas d’accès direct, vérification de la validité de chaque accès
+ Mode privilégié : certaines instructions machines réservées à l’OS
def : processus + exemples
Entité dynamique représentant l’exécution d’un programme sur un processeur
ex : - L’exécution d’un programme
- La copie d’un fichier sur disque
- La transmission d’une séquence de données sur un réseau
Un processus est identifié grâce à son PID et possède une mémoire propre et un contexte
Le père attend la fin de l’un des fils (donner la fonction)
pid_t wait (int *ptr_etat) retour : pid du fils qui a terminé ; code de fin stocké dans ptr_etat
Attendre la fin du fils pid (donner la fonction)
pid_t waitpid (pid_t pid, int *ptr_etat, int options)
def : processus zombie
un fils terminé dont le père n’a pas fait wait()
résultat création fork()
0 = fils >0 = père <0 = erreur
Moyens de communication entre processus sous Unix
- Signaux
- Fichiers et tubes (pipes, FIFOs)
- Files de messages : pas étudié dans ce module
- Mémoire partagée et sémaphores
- Sockets (dans les réseaux, mais aussi en local)
Signal : synchrone ou asynchrone ? émis par ? limites ? Intérêt ? Exemples de signaux
- asynchrone
- émis par l’OS ou un processus
- intérêts : simplifient le contrôle d’un ensemble de processus, pratique pour des événements liés au temps
- limites : à manipuler avec précaution (risque de pertes de signaux)
- exemples : SIGINT -> frappe du caractère
SIGTSTP -> frappe du caractère
SIGSTOP / SIGCONT
SIGTERM
SIGKILL
fonction open
fd = open(“/home/toto/fich”, O_RDONLY, 0);
Ici, ouverture en lecture seule
- Autres modes : o_rdwrite, o_wronly
- fd stocke le descripteur alloué par le système (ou –1 si erreur)
- Fichier créé s’il n’existe pas
création d’un pipe()
int fd[2]
pipe(fd)
utilisation write et read
write(fd, &BUFF, TAILLE). ex : #define BUFSIZE 10 char bufin[BUFSIZE] = "empty"; char bufout[ ] = "hello"; write(fd[1], bufout, strlen(bufout)+1);
def : cluster
Découpages du disque en clusters (4Ko en général)
Le cluster est la plus petite unité de stockage du système de fichiers.
def : i-node
C’est un cluster du disque où sont stockées les meta-données du système de fichiers décrivant
un fichier particulier. On y trouve le propriétaire du fichier, les droits d’accès, ainsi que la liste des clusters contenant les données du fichier (si le fichier est trop gros, il y a une indirection).
def bibliothèque
recueil de fonctions utilisées dans divers programmes
bibliothèques statiques vs dynamiques
Statique :
- Pourquoi : collection de fonctions
- Comment : archive ar
- Avantages et défauts : simple, mais le code est dupliqué dans chaque processus les utilisant et la liaison a lieu à la compilation (nouvelle version de bibliothéque ⇒ recompilation)
Dynamique :
- Pourquoi : partage du code entre applications
- Comment : édition de liens au lancement
condition de compétition
Deux banques modifient un compte en même temps
mode de verrouillage impératif vs consultatif
impératif : bloque les accès incompatibles avec verrous présents
consultatif : ne bloque que la pose de verrous incompatibles
def famine
un processus attend indéfiniment une ressource (problème d’équité)
def sémaphore
Objet composé de :
- D’une variable : valeur du sémaphore (nombre de places restantes)
- D’une file d’attente : liste des processus bloqués sur le sémaphore
def Exclusion mutuelle + solution
ressource accessible par une seule entité à la fois
on utilise : sem=semaphore(1)
Problème de cohorte + solution
ressource partagée par au plus N utilisateurs
on utilise : sem=semaphore(3) (pour 3 places)
def Rendez-vous
Des processus collaborant doivent s’attendre mutuellement.
def Moniteurs
Objet auto-protégé par sémaphore
Pas d’erreur de manipulation possible
def thread + avantages
- Techniquement : un flot d’exécution pouvant être ordonnancé par l’OS
- En pratique : une procédure s’exécutant indépendamment du main
avantages :
- Les threads contiennent moins de choses qu’un processus (ils partagent la plupart des ressources du processus lourd)
- Les threads sont plus rapides à créer
- Les communications inter-threads sont rapides
def code réentrant
Peut être appelé récursivement ou depuis plusieurs ≪endroits≫
def code thread-safe
Fonctionne même si utilisé de manière concurrente
Fichiers et flots d’entrée sortie
Tout processus est créé avec des flots d’entrée/sortie standard :
- stdin : entrée standard (connecté au terminal, descripteur 0)
- stdout : sortie standard (connecté à l’écran, descripteur 1)
- stderr : sortie d’erreur (connecté à l’écran, descripteur 2)
On lit sur 0 (stdin), et on écrit sur 1 (stdout)