SYSTEME D'EXPLOITATION

Telechargé par Ibrahim Pahimi
SYSTEME D’EXPLOITATION MULTI-TACHES
Un système d’exploitation multitâche est un type de système d’exploitation qui permet
l’exécution simultanée de plusieurs taches ou processus. Cela signifie que plusieurs programmes
peuvent être en cours d’exécution en même temps, ce qui améliore l’efficacité et la réactivité du
système. Les systèmes multitâches utilisent des techniques d’ordonnancement pour partager le
temps du processeur entre les différents processus.
Un processus est une instance d’un programme en cours d’exécution. Il comprend le code du
programme, ses donnees, et l’état d’exécution, qui inclut le compteur de programme, les registres,
et les informations de gestion de la mémoire.
1. Ordonnancement dans les systèmes multitâches
L’ordonnancement est le mécanisme par lequel le système d’exploitation décide quel processus
doit être exécuté par le processeur à un moment donne.
L’ordonnanceur utilise divers algorithmes pour gérer l’accès au processeur, en tenant des critères
tels que :
- La priorité des processus
- Le temps d’attente
- Le temps d’exécution
Les algorithmes d’ordonnancement peuvent être préemptifs (ou un processus en cours
d’exécution peut être interrompu pour donner la place à un autre) ou non préemptifs (ou un
processus s’exécute jusqu’à la fin ou jusqu’à ce qu’il se bloque).
Elu
Prêt
Bloqué
Exercice : SGF des systèmes Unix
On rappelle que, dans le SGF (Système de Gestion de Fichiers) d’Unix, un fichier est représenté
de façon interne par une structure de données appelée inode. Cette structure a une taille
totale (généralement) de 128 octets et comprend deux parties : la représentation de l’ état
(nom du fichier, droits, …) (68 octets) et un ensemble de pointeurs dont chacun représente
l’adresse d’un bloc sur disque. La taille d’un bloc est de 8192 octets. La taille d’un pointeur
est de 4 octets. Les pointeurs comprennent (voir figure ci-dessous) : un ensemble de
pointeurs directs, qui pointent vers des blocs contenant les premières données du fichier ;
un pointeur indirect simple, qui pointe vers un bloc contenant des pointeurs vers les blocs
suivants du fichier ; un pointeur indirect double, qui pointe vers un bloc contenant des
pointeurs vers des blocs de pointeurs vers les blocs suivants du fichier ; et enfin un pointeur
indirect triple (un degré de plus d’indirection).
inode
Contenu du fichier
a) Combien l’inode contient- t- il de pointeurs directs ?
b) Quelle est la taille maximale de fichier que l’on peut représenter à l’aide de pointeurs directs
uniquement ?
c) Même question avec les pointeurs indirects simple, double et triple.
d) Quels sont les avantages et les inconvénients d'une telle représentation?
Solution :
a) Combien l'inode contient-il de pointeurs directs ?
Pour calculer le nombre de pointeurs directs, on utilise la taille de l'inode dédiée aux pointeurs et
la taille d'un pointeur.
Taille de l'inode dédiée aux pointeurs = Taille totale de l'inode - Taille de l'état
état
pointeur direct
pointeur direct
……….
pointeur direct
pointeur indirect simple
pointeur indirect double
pointeur indirect triple
Taille de l'inode dédiée aux pointeurs = 128 octets - 68 octets = 60 octets
Nombre de pointeurs directs = Taille de l'inode dédiée aux pointeurs / Taille d'un pointeur
Nombre de pointeurs directs = 60 octets / 4 octets = 15 pointeurs directs.
b) Quelle est la taille maximale de fichier que l'on peut représenter à l'aide de pointeurs
directs uniquement ?
Taille maximale = Nombre de pointeurs directs * Taille d'un bloc
Taille maximale = 15 * 8192 octets = 122 880 octets.
c) Même question avec les pointeurs indirects simple, double et triple.
- Pointeur indirect simple :
Un bloc peut contenir : 8192 octets / 4 octets par pointeur = 2048 pointeurs.
Taille représentée par un pointeur indirect simple = 2048 * 8192 octets = 16 777 216 octets.
- Pointeur indirect double :
Un bloc de pointeurs peut contenir 2048 pointeurs. Ces 2048 pointeurs pointent chacun vers un
bloc de pointeurs, qui à leur tour pointent vers des blocs de données.
Taille représentée par un pointeur indirect double = 2048 * 2048 * 8192 octets = 34 359 738
368 octets (environ 32 Go).
- Pointeur indirect triple :
Un bloc de pointeurs peut contenir 2048 pointeurs. Ces pointeurs de premier niveau pointent
vers des blocs de pointeurs de deuxième niveau, qui pointent vers des blocs de pointeurs de
troisième niveau, qui enfin pointent vers des blocs de données.
Taille représentée par un pointeur indirect triple = 2048 * 2048 * 2048 * 8192 octets = 70 368
744 177 664 octets (environ 64 To).
d) Quels sont les avantages et les inconvénients d'une telle représentation ?
Avantages :
- Flexibilité et gestion des fichiers de tailles variées : Ce système permet de gérer
efficacement à la fois de très petits fichiers (en utilisant principalement les pointeurs
directs) et de très grands fichiers (en utilisant les pointeurs indirects).
- Optimisation de l'espace disque pour les petits fichiers : Pour les petits fichiers, seuls les
pointeurs directs sont utilisés, ce qui évite la surcharge d'avoir des blocs de pointeurs
supplémentaires, économisant ainsi de l'espace.
- Accès rapide pour les petites portions de fichiers : Les premières données d'un fichier sont
accessibles très rapidement via les pointeurs directs, car elles ne nécessitent qu'une
seule lecture de bloc de données après la lecture de l'inode.
- Extensibilité : Le système est facilement extensible pour prendre en charge des fichiers
encore plus grands en ajoutant de nouveaux niveaux d'indirection si nécessaire.
- Localisation des données : Bien que les données puissent être fragmentées sur le disque,
l'inode centralise les informations de localisation, ce qui facilite la gestion du fichier.
Inconvénients :
- Accès plus lent pour les grandes portions de fichiers (pointeurs indirects) : Pour accéder
aux données situées plus loin dans un fichier (nécessitant des pointeurs indirects),
plusieurs lectures de blocs sont nécessaires (blocs de pointeurs puis bloc de données).
Cela entraîne une latence accrue par rapport aux pointeurs directs.
- Complexité de gestion : Le système de gestion des fichiers doit gérer la hiérarchie des
pointeurs, ce qui ajoute à la complexité de l'implémentation.
- Gaspillage d'espace pour les blocs de pointeurs vides : Si un fichier utilise un pointeur
indirect mais n'occupe qu'une petite partie du bloc de données qu'il pointe, le reste du
bloc de pointeurs ou du bloc de données peut être sous-utilisé.
- Fragilités dues à la corruption : Si un bloc de pointeurs est corrompu, cela peut rendre
inaccessible une grande partie du fichier qu'il est censé pointer.
APPEL SYSTEME
L’appel système fork () permet de dupliquer de processus courant, le processus crée est en tout
point identique au processus courant excepté la valeur de retour du fork () qui vaut zéro dans le
processus fils (processus crée) et est égale au pid du processus fils dans le processus père.
Exemple : soit le code suivant
#include <stdio.h>
#include <sys/type.h>
#include <unistd.h>
int main () {
fork () ;
fork () ;
printf (‘’ Hello Genius ! ’’) ;
return 0 ;}
Apres l’exécution de ce code, la sortie écran serait :
Hello Genius !
Hello Genius !
Hello Genius !
Hello Genius !
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!