EXAMEN OS - REZO (REPONSES)
Selon les informations qu'a reçues la Commission, Microsoft, à l'occasion de la ...
et la première étape d'un examen provisoire des allégations dont la Commission
.... de licences pour MS-DOS et Windows à des fabricants de PC par Microsoft.
Part of the document
EXAMEN OS (REPONSES) J'ai essayé d'être assez complet dans les réponses en me basant sur le
livre de Tanenbaum et le cours. Faut pas faire attention aux fautes
d'orthographes façon :
Des fôte d'ortograffe tous le momde an fé. Moua ossi mé j' esséye de
mamélioré... Ses pa fassile mé je suit sûre ke je vé y arrivé :-p
1. Qu'est-ce qu'un système d'exploitation (définition - historique -
principe) Définition :
Interface vers le hardware gestionnaire de ressource (répartir les
charges vers les différents périphériques) appel système : demande d'un
programme pour une action précise gérée par l'OS
Masquer la complexité
Historique :
Au début -> (1945-1955)
. Utilisation de tubes à vide
. OS inexistant
. Ordinateurs sont conçus , construits, utilisés et
maintenus par les mêmes personne.
. Tranche de temps définie pour chaque programmeur
. Programmation en assembleur
Ensuite -> (1955-1965)
. Apparition des transistors
. La fiabilité des ordinateurs croît
. OS présent
. Ordinateur conçu par des groupes et utilisé par d'autres
. Programmation Assembleur ou en Fortran Après -> (1965-1980)
. Utilisation des circuits intégrés et multiprogrammation
. OS complexe
. Mode batch
. Apparition des mini-ordinateurs Et -> (1980-1990)
. 2 familles d'OS : Microsoft MS-DOS et UNIX
. apparition du C
. utilisation des LCI
. IBM PC équipé du processeur i8088 et 80x86 Principe :
OS fournit des services aux applications par les appels systèmes
Ex (gestion des fichiers et gestion des processus)
Multi-tâches
CPU unique
Éventuellement en multi post
Schéma qui en gros veut dire :
On remarque une lecture donc on doit aller chercher le fichier sur le
disque lecture demande vient de l'OS Donc On part de là jusqu'au CPU (IR)
décode l'opération transmets au contrôleur de disque qui lui va chercher
dans la zone tampon qui a été garnie par le fichier provenant du disque il
le renvoie au contrôleur lui il renvoie un message au CPU pour dire j'ai le
fichier ensuite il le place dans le cache qui se trouve dans l'OS et lui il
le fous dans une variable. 2. Définition d'un processus (définition, création, états) Définition :
Programme exécutable qui contient la pile, données, registres et
programme counter PROCESSUS :
Programme en cours d'exécution, avec son environnement. Terme
essentiellement utilisé dans le monde Unix à l'origine ( Prog. EXE +
données + piles + reg. + programme counter Création du processus . Les processus sont créés par l'appel système fork() . Le processus ainsi créé est appelé fils tandis que le processus
qui demande la création d'un autre est le processus père . Tous les processus ont un père sauf le 1° le processus init . Le processus fils est la copie conforme du processus père . Possibilité d'avoir une hiérarchie de processus . Les données sont recopiées : zone de mémoire indépendante . Les ID des processus (PID) sont différents . Fork() rend un entier
P1
Fork()
P2 (suite au fork() ) ( P2 est fils de P1
( P1 a créer P2)
P2 est clone de P1 (même code , même donnée, même stack) 2 processus indépendant : chaque processus à un numéro unique
fork() = 0 -> fils
1 -> père
-1 -> erreur Données associées . Code du programme
. Donnée statique
. Donnée dynamique (stack et heap)
. Les fichiers ouverts
. PID ET PPID
. Etat du processus
. Priorité du processus PID :
UNIX : Process IDentifier. Identificateur de programme (ou plus exactement
de processus). Nombre servant à désigner les différents processus en cours
d'exécution au même moment, dans un système multitâche
getpid() -> Numéro Identification du Processus
Etats dessin On crée le processus ensuite 2 cas se présente espace de mémoire suffisant
ou non ? si oui il est en attente que le scheduler le choisisse soit il est
choisi et traité ou alors il est en attente d'une ressource si la mémoire
n'a pas été suffisante au début il va attendre que assez de mémoire dans ce
cas et dans l'autre qu'une ressource se libère mais ils repassent tous les
deux au même endroit dans le cas ou il était traité si son slot de temps a
été écoulé il attend de nouveau ou fais des I/O il peut être aussi à l'état
de zombie après 3. Synchronisation inter-processus (intérêts, signaux, sémaphores et
section critique) Il est souvent nécessaire que les processus communiquent entre eux pour :
. Se synchroniser (grâce aux signaux et sémaphores)
. Partager des données (via des pipes ou mémoire partagée)
. Signaler un cas d'exception (erreur)
. Assurer la cohérence de l'information ex : interdire l'écriture
ou la lecture de ces données à plus d'un processus à la fois
SIGNAL :
Équivalent logiciel de l'interruption matérielle, qui permet d'avertir un
processus de l'apparition d'un événement (erreurs système, communication
interprocessus ...)
Moyens simples qui permettent à deux processus de se synchroniser
facilement
Le système associe à chaque signal un comportement déterminé
Quelques signaux :
. SIGINT : interruption volontaire du programme
. SIGKILL : signal imparable
. SIGUSR1 : signal utilisateur
. SIGUSR2 : signal utilisateur
Pour envoyer un signal à un processus : kill
Peut-être utilisé pour synchroniser deux programmes
SECTION CRITIQUE :
La multiprogrammation fait apparaître des problèmes d'accès pour assurer la
cohérence de l'information section critique comme par ex : interdire
écriture ou lecture de ces données à plus d'un processus à la fois
Sections critiques = ensemble de suites d'instructions qui peuvent produire
des résultats imprévisibles lorsqu'elles sont exécutées simultanément par
des processus différents
Donc : bout de programme qui devrait être réalisé du début à la fin sans
que le déroulement ne soit perturbé par un évènement extérieur (opération
atomique) SEMAPHORE :
Ca sert à synchroniser des processus, ou à réaliser leur exclusion
mutuelle, en s'assurant qu'un et un seul d'entre eux fonctionne à un moment
donné.
Les sémaphores peuvent être employés pour synchroniser des processus. Nous
considérons que les fonctions suivantes existent :
- sem_transf() qui convertit une clef en sémaphore
- p(sem) qui permet d'attendre que le sémaphore se libère
- v(sem) qui libère le sémaphore
Sémaphore valeur 0 si aucun réveil n'a été mémorisé
0 -> processus est mis en attente
Utilisé comme un verrou. 4. Communication inter-processus (but, tube, file et mémoire partagée) But : se partager des données, s'échanger LES TUBES:
Les tubes sont un moyen simple et rapide d'échanger des informations entre
plusieurs processus. Les tubes sont bidirectionnels et sont alloués avec la
fonction.
Méthode de redirection sous Unix. Syn. anglais pipe En fait, un tube est
simplement un pseudo fichier dans lequel on lit et on écrit comme dans un
fichier normal, pour échanger des données entres des processus. Existe
aussi dans d'autres environnements. Int pipe (int fd[2]) ; Avec chaque processus est associé une table des fichiers. Les 3° premières
entrées sont réservées pour stdin, stdout et stderr MEMOIRE PARTAGEE :
. Moyen le plus performant pour échanger des données.
. Plusieurs processus se partagent une zone de mémoire spécifique
. La taille n'est pas prédéfinie mais limitée par l'administrateur
. Apres fork() le fils hérite de la mémoire partagée
La fonction int shmget(key_t key, int size, int shmflag)
Permet d'allouer une mémoire partagée associée à la clé. Un ID est
retourné.
( donne l'identifiant du segment ayant la clé key. Un nouveau segment
(de taille size) est créé. Int shmctl (int shmid, int cmd, struct shmid_ds *ds)
Permet de contrôler (libérer, verrouiller) la mémoire partagée Char shmat (int shmid, char addr, int shmflag)
Attache le segment de mémoire identifié par shmid au segment de donnée du
processus 5. Ordonnancement des processus (définition et but, différents types) Le scheduler ==> décide quel processus doit être démarré
Programme ou système hardware distribuant le temps de calcul du ou des
processeur(s) aux différentes tâches en cours
. Il doit s'assurer que chaque processus reçoit sa part de temps
. Utiliser le temps du processeur à 100 %
. Maximiser le nombre de travaux effectués
. Minimiser le temps de réponse pour les utilisateurs en mode interactif
. Minimiser l'attente des utilisateurs qui travaillent en batch
. Tourniquet : chaque processus dispose d'un certain temps
une file de processus est réalisée -> mais problème pas de
priorité ( présume que tous les processus sont d'égale
importance.
. Scheduler avec priorité : chaque processus possède une
priorité et le processus avec la plus haute priorité est
lancé. Problème : tous les processus doivent recevoir le
processeur -> le scheduler diminue la priorité des
processus élus.
Priorités : statique ou dynamique
Statique : priorité établie de facto
Dynamique : pour optimiser l'utilisation du CPU l'OS
modifie la