Cours SE2
Cours SE2
Cours SE2
1
2. Notion de processus........................................................................15
2.1. Définition d’un procesus :.........................................................15
2.2. contexte d’un processus..........................................................15
3. État d’un processus.........................................................................16
3.1. Cycle d’exécution d’un processus............................................16
3.2. Bloc de contrôle d’un processus (PCB)....................................17
4. Ordonnancement des processus.....................................................17
4.1. Le Dispatcheur.........................................................................17
4.2. L’Ordonnanceur.......................................................................18
4.3. Algorithmes d’ordonnancement...............................................18
4.4. Ordonnancement FCFS (first come first Served).....................19
4.5. Ordonnancement SJF (Shortest Job First)...............................20
4.6. Ordonnancement RR (round robin)..........................................20
4.7. Ordonnancement basé sur les priorités...................................21
Chapitre 3: Système de gestion de fichiers.....................................23
1. Introduction......................................................................................23
2. Rôle d’un système de gestion de fichiers........................................23
3. La structure d’un système de fichiers..............................................23
4. Anatomie d’un disque dur................................................................24
5. Formatage et Partitionnement.........................................................25
5.1. Partitionnement........................................................................25
5.2. Formatage................................................................................26
6. Le concept de fichier.......................................................................26
7. La notion de répertoire....................................................................26
8. Methodes d’allocation......................................................................27
8.1. Allocation contiguë...................................................................27
8.2. Allocation chaînée....................................................................28
9. Gestion de l’espace libre :...............................................................30
9.1. Vecteur binaire.........................................................................30
2
9.2. Liste chaînée............................................................................30
9.3. Liste chaînée avec groupement...............................................30
9.4. Liste avec comptage................................................................31
Chapitre 4: Etude du système d’exploitation MS-DOS...................32
1. Introduction......................................................................................32
2. Structure du DOS............................................................................32
2.1. Noyau.......................................................................................32
2.2. Interprétateur de commande....................................................32
3. Concepts fondamentaux..................................................................32
3.1. Unités et périphériques............................................................32
3.2. Fichiers.....................................................................................33
3.3. 2.3.3. Répertoires.....................................................................33
3.4. Chemin d‘accès........................................................................34
4. Commandes MS-DOS.....................................................................34
4.1. Syntaxe générale d'une commande MS-DOS.........................34
4.2. Obtenir de l'aide sur une commande MS-DOS........................35
5. 4. Commandes de base..................................................................35
5.1. Commandes sur les répertoires...............................................35
5.1.1. Lister le contenu d'un répertoire : dir..................................35
5.1.2. Se déplacer dans les répertoires : cd ou chdir...................35
5.1.3. Créer un répertoire : md ou mkdir.......................................35
5.1.4. Supprimer un répertoire : rd ou rmdir.................................35
5.1.5. Visualisation de l'arborescence : tree.................................36
5.1.6. Commandes sur les fichiers...............................................36
5.1.7. Afficher le contenu d'un fichier : Type.................................36
5.1.8. Copier un fichier : copy.......................................................36
5.1.9. Supprimer un fichier : delete...............................................36
5.1.10. Renommer un fichier : ren...............................................36
5.2. Commandes sur disque...........................................................36
3
5.2.1. Formatage du disque : format.............................................36
5.2.2. Dupliquer des disques diskcopy.........................................36
5.3. 4.3. Commandes avancées.....................................................36
5.3.1. Copier une arborescence Xcopy........................................36
5.3.2. Supprimer une arborescence : deltree...............................36
4
Chapitre 1: Généralités sur les systèmes d’exploitation
1. Introduction
Un système d'exploitation est un programme qui doit permettre aux utilisateurs
d'utiliser les fonctionnalités d'un ordinateur. Mais il doit aussi aider le programmeur à
développer des logiciels de la façon la plus efficace possible. Un système
d'exploitation est mis en route dès qu'on met en marche l'ordinateur. Dans les
grosses machines, il est toujours en exécution. Le système constitue donc une
interface entre l'utilisateur et la machine physique.
Le système d'exploitation gère et contrôle les composants de l'ordinateur. Il fournit
une base appelée machine virtuelle, sur laquelle seront construits les programmes
d'application et les utilitaires au moyen des services ou appels système. Le but d'un
système d'exploitation consiste donc à développer des applications sans se soucier
des détails de fonctionnement et de gestion du matériel. Ainsi, par exemple, on peut
effectuer la lecture d'un fichier par un simple appel système : read(fd, buf, 255); et
peu importe que le fichier en question se trouve dans un disque magnétique, un DVD
ou un disque en RAM.
2. Évolution des systèmes d'exploitation
L'apparition et l'évolution des systèmes d’exploitation est lié à l'évolution des
ordinateurs.
2.1. Première génération (1945-1955)
Dans les années 40, les premiers « ordinateur » apparaissent, les programmes et les
données sont codés directement en binaire sur des tableaux d'interrupteurs, puis
plus tard (1950) sur des cartes perforées (la présence ou l'absence de trous
correspondent à 0 ou 1), ils sont chargés en mémoire, exécutés et mis au point à
partir d'un pupitre de commande. C'est la même équipe qui conçoit, construit,
programme, administre et maintient la machine.
L'arrivée de l'assembleur facilite l'écriture des programmes, mais l'utilisation des
machines est toujours la même. L'ordinateur ne traite qu'un programme à la fois. Il
faut pour chaque travail (job), en amont insérer les cartes dans un lecteur de cartes,
en aval imprimer les résultats, ce sont des opérations très lentes par rapport au
travail du CPU. Par la suite, c'est un opérateur qui se charge de l'exploitation de la
machine mais le principe reste le même.
5
2.2. Deuxième génération (1955-1965)
Avec l'apparition du transistor (1955 environ), les ordinateurs sont beaucoup plus
fiables, mais coûtent très cher (seules de grandes entreprises privées ou publiques
en possèdent). Ce sont maintenant des équipes différentes qui conçoivent,
construisent, programment, administrent et maintiennent la machine.
Pour chaque travail (job) à réaliser, le programmeur transmet son paquet de cartes
perforées (programmes en assembleur ou en FORTRAN) à l’opérateur qui les
soumet
au compilateur puis à l'ordinateur. Une fois l'exécution terminée, l'opérateur récupère
le résultat sur l'imprimante. Comme les ordinateurs sont très coûteux, on cherche à
réduire les temps d'attente en automatisant les opérations manuelles.
Les gros ordinateurs disposent alors de trois dérouleurs de bande : un pour le
système
d'exploitation, un pour le programme et ses données, un pour les données en sortie.
En annexe, il existe des machines pour transcrire les cartes perforées (apportés par
les programmeurs) sur bandes et des machines pour imprimer les données en sortie
(contenues sur la bande) sur papier. On parle d'impression off-line (l'imprimante n'est
pas directement connectée à l'ordinateur).
Mais le calculateur principal ne fonctionne pas tout le temps : beaucoup de temps
sont encore perdus lors des déplacements des opérateurs qui sont chargés
d'alimenter les machines en cartes, papier, bandes.
On procède au traitement par lots (batch) : plusieurs travaux sont transcrits sur une
même bande d'entrée. Le calculateur principal lit le 1 er job, puis lorsque celui-ci est
terminé, lit le 2nd, etc... jusqu'à la fin de la bande. Un interprète de commande permet
le chargement du programme et des données puis l'exécution du programme, le
moniteur est le programme charger du séquencement des travaux des utilisateurs et
de la continuité des opérations. Le moniteur des années 60 est le précurseur du
système d'exploitation.
6
2.3. Troisième génération (1965-1980)
Au milieu des années 60, l'apparition des circuits intégrés permet une grande
avancée sur la performance et le coût des ordinateurs. Des familles de machines
partageant le même langage machine, le même système d'exploitation se mettent en
place.
Les travaux sont entièrement traités par l'ordinateur sans passer par des machines
annexes, les jobs sont stockés sur des fichiers disques. Comme l'accès sur un
disque est aléatoire (dans le sens de non-séquentiel) le moniteur peut choisir l'ordre
des travaux.
Dans le moniteur, le planificateur (scheduler) assure cette tâche. Mais les moniteurs
batch exécutent toujours un seul job à la fois, à tout instant un seul programme se
trouve en mémoire et peut seul exploiter le CPU.
On arrive à la multiprogrammation. La mémoire est partagée entre différents
programmes en attente d'une donnée en entrée par exemple peut être suspendu
temporairement au profit d'une tâche. Le but étant d'exploiter au maximum le CPU.
On appelle cette technique le spoule (de SPOOL : Simultaneous Peripheral
Operation On Line). Dans le système d'exploitation, l'allocateur (dispatcher) s'occupe
de la gestion instantanée du CPU en tenant compte de la planification établie par le
scheduler. Il a fallut mettre en place des systèmes de contrôle des accès mémoires,
de protection des données.
On voit apparaître également le temps-partagé (time-sharing) pour des ordinateur
multiutilisateurs (un ordinateur central connecté à plusieurs terminaux).
4) Quatrième génération (1980-Maintenant)
Depuis les années 80, on assiste au développement des ordinateurs personnels, à
l'amélioration constante du taux d'intégration des circuits (LSI : Large Scale
Integration,
VLSI, Very LSI), à la baisse des coûts et au développement des réseaux de
communications, au développement des réseaux locaux, à l'explosion d'internet.
Les interfaces Homme/Machine sont toujours améliorées.
7
3. Les roles du système d’exploitation
Les rôles du système d'exploitation sont divers
3.1. Gestion du processeur
Le système d'exploitation est chargé de gérer l'allocation du processeur entre les
différents programmes grâce à un algorithme d'ordonnancement. Le type
d'ordonnanceur est totalement dépendant du système d'exploitation, en fonction de
l'objectif visé.
3.2. Gestion de la mémoire vive
Le système d'exploitation est chargé de gérer l'espace mémoire alloué à chaque
application et, le cas échéant, à chaque usager. En cas d'insuffisance de mémoire
physique, le système d'exploitation peut créer une zone mémoire sur le disque dur,
appelée «mémoire virtuelle». La mémoire virtuelle permet de faire fonctionner des
applications nécessitant plus de mémoire qu'il n'y a de mémoire vive disponible sur le
système. En contrepartie cette mémoire est beaucoup plus lente.
3.3. Gestion des entrées/sorties
Le système d'exploitation permet d'unifier et de contrôler l'accès des programmes
aux ressources matérielles par l'intermédiaire des pilotes (appelés également
gestionnaires de périphériques ou gestionnaires d'entrée/sortie).
Gestion de l'exécution des applications
Le système d'exploitation est chargé de la bonne exécution des applications en leur
affectant les ressources nécessaires à leur bon fonctionnement. Il permet à ce titre
de «tuer» une application ne répondant plus correctement.
3.4. Gestion des droits
Le système d'exploitation est chargé de la sécurité liée à l'exécution des programmes
en garantissant que les ressources ne sont utilisées que par les programmes et
utilisateurs possédant les droits adéquats.
3.5. Gestion des fichiers
Le système d'exploitation gère la lecture et l'écriture dans le système de fichiers et
les droits d'accès aux fichiers par les utilisateurs et les applications.
3.6. Gestion des informations
Le système d'exploitation fournit un certain nombre d'indicateurs permettant de
diagnostiquer le bon fonctionnement de la machine.
8
4. Les types de systemes d’eploitation
4.1. Systèmes multitâches
Un système d'exploitation est dit «multi-tâche» (en anglais multithreaded) lorsque
plusieurs «tâches» (également appelées processus) peuvent être exécutées
simultanément.
Les applications sont composées en séquence d'instructions que l'on appelle
«processus légers» (en anglais «threads»). Ces threads seront tour à tour actifs, en
attente, suspendus ou détruits, suivant la priorité qui leur est associée ou bien
exécutés séquentiellement.
Un système est dit préemptif lorsqu'il possède un ordonnanceur (aussi appelé
planificateur), qui répartit, selon des critères de priorité, le temps machine entre les
différents processus qui en font la demande.
Le système est dit à temps partagé lorsqu'un quota de temps est alloué à chaque
processus par l'ordonnanceur. C'est notamment le cas des systèmes multi-
utilisateurs qui permettent à plusieurs utilisateurs d'utiliser simultanément sur une
même machine des applications différentes ou bien similaires : le système est alors
dit «système transactionnel». Pour ce faire, le système alloue à chaque utilisateur
une tranche de temps.
4.2. Systèmes multi-processeurs
Le multiprocessing est une technique consistant à faire fonctionner plusieurs
processeurs en parallèle afin d'obtenir une puissance de calcul plus importante que
celle obtenue avec un processeur haut de gamme ou bien afin d'augmenter la
disponibilité du système (en cas de panne d'un processeur).
On appelle SMP (Symmetric Multiprocessing ou Symmetric Multiprocessor) une
architecture dans laquelle tous les processeurs accèdent à un espace mémoire
partagé.
Un système multiprocesseur doit donc être capable de gérer le partage de la
mémoire entre plusieurs processeurs mais également de distribuer la charge de
travail.
4.3. Systèmes embarqués
Les systèmes embarqués sont des systèmes d'exploitation prévus pour fonctionner
sur des machines de petite taille, telles que des PDA (personal digital assistants ou
en français assistants numériques personnels) ou des appareils électroniques
9
autonomes (sondes spatiales, robot, ordinateur de bord de véhicule, etc.), possédant
une autonomie réduite. Ainsi, une caractéristique essentielle des systèmes
embarqués est leur gestion avancée de l'énergie et leur capacité à fonctionner avec
des ressources limitées.
Les principaux systèmes embarqués «grand public» pour assistants numériques
personnels sont :
PalmOS
Windows CE / Windows Mobile / Window Smartphone
4.4. Systèmes temps réel
Les systèmes temps réel (real time systems), essentiellement utilisés dans
l'industrie, sont des systèmes dont l'objectif est de fonctionner dans un
environnement contraint temporellement.
Un système temps réel doit ainsi fonctionner de manière fiable selon des contraintes
temporelles spécifiques, c'est-à-dire qu'il doit être capable de délivrer un traitement
correct des informations reçues à des intervalles de temps bien définis (réguliers ou
non).
Voici quelques exemples de systèmes d'exploitation temps réel :
OS-9 ;
RTLinux (RealTime Linux) ;
QNX ;
VxWorks.
5. Composition du systeme d’exploitation
Le système d’exploitation est composé d’un ensemble de logiciels permettant de
gérer les interactions avec le matériel. Parmi cet ensemble de logiciels on distingue
généralement les éléments suivants :
Le noyau (en anglais kernel) représentant les fonctions fondamentales du
système d’exploitation telles que la gestion de la mémoire, des processus, des
fichiers, des entrées-sorties principales, et des fonctionnalités de
communication.
L’interpréteur de commande (en anglais shell, traduisez «coquille» par
opposition au noyau) permettant la communication avec le système
d’exploitation par l’intermédiaire d’un langage de commandes, afin de
permettre à l’utilisateur de piloter les périphériques en ignorant tout des
10
caractéristiques du matériel qu’il utilise, de la gestion des adresses physiques,
etc.
Le système de fichiers (en anglais «file system», noté FS), permettant
d’enregistrer les fichiers dans une arborescence.
5.1. Exemples de systèmes d'exploitation
On distingue plusieurs types de systèmes d'exploitation, selon qu'ils sont capables
de gérer simultanément des informations d'une longueur de 16 bits, 32 bits, 64 bits
ou plus.
11
Au quatrième niveau, on trouve le gestionnaire de fichiers qui se charge de la
gestion de l'espace du disque, de la manipulation des fichiers tout en assurant
l'intégrité des données, la protection des fichiers, etc.
Au cinquième niveau, on a le module d'allocation de ressources qui se charge
d'assurer une bonne utilisation des ressources ; de comptabiliser et de fournir
des statistiques sur l'exploitation des ressources principales ; de créer de
nouveaux processus et leur attribuer un niveau de priorité : de permettre à
chaque processus existant dans le système d'obtenir les ressources
nécessaires dans des limites de temps raisonnables ; d'exclure mutuellement
les processus qui demandent une ressource non partageable et d'éviter les
situations de blocage.
12
6.3. Micro-kernel
Une architecture plus moderne que celle monolitique est l'architecture micro-kernel
(voir la figure …) utilisée en Minix et NT. L'attribut principal qui distingue les micro-
kernels des kernels monolitiques est l'implantation de leurs architectures respectives
en mode superviseur (kernel mode) et en mode usager (user mode). L'architecture
monolitique met en oeuvre tous les services du Système d'exploitation (controleurs
de dispositifs, mémoire virtuelle, système de fichiers, réseaux, etc) dans le domaine
du mode superviseur de l'UCT.
Par contre, l'architecture micro-kernel fait une division entre les services du Système
d'exploitation, en les divisant en « haut-niveau » implantés dans le domaine de
l'utilisateur et « bas-niveau » implantés dans l'espace du mode superviseur.
13
6.5. Machines virtuelles
Le cœur du système se charge de la multiprogrammation en fournissant à la couche
au dessus plusieurs machines virtuelles. Des systèmes d'exploitation différents
peuvent tourner au dessus d'une machine virtuelle.
Exemples de machines virtuelles :
IBM VM : offre à chaque usager sa propre machine virtuelle monotâche. Les
machines virtuelles étaient planifiées avec du temps partagé.
Java : les programmes compilés en Java tournent sur une machine virtuelle
(JVM).
VMWare7: sur PC, exécute en même temps des sessions Windows, Linux,
OS/2, etc.
14
Chapitre 2: Gestion des processus
1. Introduction
Dans un système multitâche, la ressource la plus importante d’une machine est le
processeur. Cette ressource est allouée à un et un processus sélectionné parmi un
ensemble des processus éligibles. Par conséquent, il convient à bien gérer ce
dernier afin de le rendre plus productif. En effet, un système d’exploitation dispose
d’un module qui s’occupe de l’allocation du processeur en l’occurrence le
Dispatcheur. Ce module est exécuté chaque fois qu’un processus se termine ou se
bloque dans le but de réquisitionner le processeur pour un autre processus. En plus
de ce Dispatcheur, un système d’exploitation dispose d’un autre module permettant
ainsi la mise en ordre des processus qui demandent le processeur.
2. Notion de processus
2.1. Définition d’un procesus :
Un processus représente l’exécution d’un programme comportant des instructions et
des données. C’est une entité dynamique crée à un instant donné et qui disparaît, en
général, au bout d’un temps fini. Chaque exécution d’un même programme donne
lieu à un nouveau processus.
2.2. contexte d’un processus
Le contexte d’un processus (ou vecteur d’état) est l’ensemble des informations
nécessaires pour que le processus puisse reprendre son exécution après une
interruption. (Il termine l’exécution du programme et non pas commencer dés le
début). Il comprend donc :
Le mot d’état et les registres généraux (le compteur ordinal, etc.)
Un espace de travail (segments, procédures, données statiques et
dynamiques, pile d’exécution,…)
Un ensemble d’attributs attachés au processus et spécifiant diverses
propriétés (nom, priorité, droits,…) ou encore des informations de gestion
(état, lien de chaînage,…)
On peut classer ces informations en deux classes :
Des informations utilisées explicitement par le processus (variables,
procédures,…)
Des informations utilisées par le système pour gérer l’attribution des
ressources
15
3. État d’un processus
Pour qu’un processus puisse s’exécuter, il a besoin de procédures et de données, de
mémoire destinée à les contenir, de l’unité centrale, éventuellement de fichiers et de
périphériques. Nous appelons toutes ces entités des ressources.
Comme les ressources du système sont en nombre limité, il n’est pas possible
d’attribuer à chaque processus, dès sa création toutes les ressources dont il aura
besoin. On peut aboutir à la situation ou un processus n’est pas en possession des
ressources indisponibles à l’exécution de l’instruction suivante. On dit que le
processus est dans l’état bloqué. Par opposition, un processus qui dispose de toutes
les ressources dont il a besoin pour évoluer est dit à l’état actif (ou élu ou en
exécution).
Un processus est à l’état éligible (ou prêt) s’il est en attente de l’unité centrale
uniquement.
Etant une entité nécessaire à l’exécution d’un processus, une ressource peut être
matérielle (unité centrale, mémoire centrale, périphériques,…) ou logicielle (variable
partagée, fichier,…)
Remarque :
A chaque type de ressource est associé dans le système une procédure d’allocation
et à chaque ressource correspond un descripteur. Le descripteur minimal se réduit à
un bit représentant l’état libre ou alloué de la ressource.
3.1. Cycle d’exécution d’un processus
L’exécution d’un processus peut être vue comme une séquence de phases. Chaque
phase comprend deux cycles : un cycle d’exécution (ou calcul) réalisé par le
processeur et un cycle d’entrée sortie assuré par le canal. La dernière phase de tout
processus doit comprendre obligatoirement un seul cycle dans lequel sera exécuté la
requête informant le système d’exploitation sur la terminaison du processus. Cet
16
appel permet au système de restituer les ressources utilisées par le processus qui
vient de terminer.
17
4.1. Le Dispatcheur
Il s’occupe de l’allocation du processeur à un processus sélectionné par
l’Ordonnanceur du
processeur. Une fois allouer, le processeur doit réaliser les tâches suivantes :
Commutation de contexte : sauvegarder le contexte du processus qui doit
relâcher le processeur et charger le contexte de celui qui aura le prochain
cycle processeur
Commutation du mode d’exécution : basculer du mode Maître (mode
d’exécution du dispatcheur) en mode utilisateur (mode d’exécution du
processeur utilisateur)
Branchement : se brancher au bon emplacement dans le processus
utilisateur pour le faire démarrer.
4.2. L’Ordonnanceur
Certains systèmes d’exploitation utilisent une technique d’ordonnancement à deux
niveaux qui intègre deux types d’Ordonnanceurs :
Ordonnanceur du processeur : c’est un Ordonnanceur court terme opère sur une
ensemble du processus présents en mémoire. Il s’occupe de la sélection du
processus qui aura le prochain cycle processeur, à partir de la file d’attente des
processus prêts.
Ordonnanceur de travail : ou Ordonnanceur long terme, utilisé en cas
d’insuffisance de mémoire, son rôle est de sélectionné le sous ensemble de
processus stockés sur un disque et qui vont être chargés en mémoire. En suite, il
retire périodiquement de la mémoire les processus qui sont restés assez longtemps
et les remplace par des processus qui sont sur le disque depuis trop de temps.
Nous distinguons plusieurs algorithmes d’ordonnancement, les plus répandus sont :
Ordonnancement Premier Arrivé Premier Servi
Ordonnancement du plus court d’abord
Ordonnancement circulaire : Tourniquet
Ordonnancement circulaire à plusieurs niveaux
Ordonnancement avec priorité
4.3. Algorithmes d’ordonnancement
L'ordonnancement est la partie du système d'exploitation qui détermine dans quel
ordre les processus prêts à s'exécuter (présents dans la file des prêts) seront élus.
Ses objectifs sont :
18
Assurer le plein usage du CPU (agir en sorte qu’il soit le moins souvent
possible inactifs);
Réduire le temps d'attente des utilisateurs.
Assurer l'équité entre les utilisateurs.
Un algorithme d’ordonnancement permet d’optimiser une des grandeurs temporelles
suivantes :
Le temps de réponse moyen décrit la moyenne des dates de fin d’exécution :
n
TRM=∑ TRi /n , avec TRi=date fin – date arrivée.
i=1
Les algorithmes d’ordonnancement se distinguent les uns des autres du fait que
certains autorisent la réquisition de l’unité centrale alors que d’autres l’interdisent. La
réquisition est la possibilité de retirer à n’importe quel instant le processeur à un
processus même si ce dernier est en cours d’exécution.
Remarque :
Pour représenter schématiquement l’évolution dans le temps des processus, on
recourt habituellement à des diagrammes de Gantt.
4.4. Ordonnancement FCFS (first come first Served)
Dans cet algorithme, connu sous le nom FIFO (First In, First Out), les processus sont
rangés dans la file d’attente des processus prêts selon leur ordre d’arriver. Les règles
régissant cet ordonnancement sont :
1. Quand un processus est prêt à s’exécuter, il est mis en queue de la file
d’attente des processus prêts.
2. Quand le processeur devient libre, il est alloué au processus se trouvant en
tête de file d’attente des processus prêts.
3. Le processus élu relâche le processeur s’il se termine ou s’il demande une
entrée sortie
19
20
Caractéristiques de l’Ordonnanceur
Ordonnanceur sans réquisition
Ordonnanceur non adapté à un système temps partagé car dans un système
pareil, chaque utilisateur obtienne le processeur à des intervalles réguliers.
4.5. Ordonnancement SJF (Shortest Job First)
SJF choisit de façon prioritaire les processus ayant le plus court temps d’exécution
sans réellement tenir compte de leur date d’arrivée.
Dans cet algorithme les différents processus sont rangés dans la file d'attente des
processus prêts selon un ordre croissant de leur temps d'exécution (cycle de calcul).
Les règles régissant cet ordonnancement sont :
1. Quand un processus est prêt à s’exécuter, il est inséré dans la file d’attente
des processus prêts à sa position approprie.
2. Quand le processeur devient libre, il est assigné au processus se trouvant en
tête de la file d’attente des processus prêts (ce processus possède le plus
petit cycle processeur.). Si deux processus ont la même longueur de cycle, on
applique dans ce cas l’algorithme FCFS.
3. Si le système ne met pas en oeuvre la réquisition, le processus élu relâche le
processeur s’il se termine ou s’il demande une entrée sortie. Dans le cas
contraire, le processus élu perd le processeur également. Quand un
processus ayant un cycle d’exécution inférieur au temps processeur restant
du processus élu, vient d’entrer dans la file d’attente des prêts. Le processus
élu dans ce cas sera mis dans la file d’attente des éligibles, et le processeur
est alloué au processus qui vient d’entrer.
Caractéristiques de l’Ordonnanceur
Cet Ordonnanceur peut être avec ou sans réquisition
Implémentation difficile, car il n’existe aucune manière pour connaître le cycle
suivant du processeur.
21
4.6. Ordonnancement RR (round robin)
Dans cet algorithme les processus sont rangés dans une file d'attente des éligibles,
le
processeur est alloué successivement aux différents processus pour une tranche de
temps fixe Q appelé Quantum.
Cet Ordonnancement est régit par les règles suivantes :
1. Un processus qui rentre dans l’état éligible est mis en queue de la file
d'attente des prêts.
2. Si un processus élu se termine ou se bloque avant de consommer son
quantum de temps, le processeur est immédiatement alloué au prochain
processus se trouvant en tête de la file d'attente des prêts.
3. Si le processus élu continue de s'exécuter au bout de son quantum, dans ce
cas le processus sera interrompu et mis en queue de la file d'attente des prêts
et le processeur est réquisitionné pour être réalloué au prochain processus en
tête de cette même file d’attente.
Caractéristiques de l’Ordonnanceur
Avec réquisition
Adapté aux systèmes temps partagé.
La stratégie du tourniquet garantit que tous processus est servis au bout d’un
temps fini. Son avantage est d’éviter la famine. On dit qu'un processus est en
famine lorsqu'il est prêt à être exécuté et se voit refuser l'accès à une
ressource (ici le processeur) pendant un temps indéterminé
L’efficacité de cet ordonnanceur dépend principalement de la valeur du
quantum Q:
o Le choix d'un Q assez petit augmente le nombre de commutation.
o Le choix d'un Q assez grand augmente le temps de réponse du
système
4.7. Ordonnancement basé sur les priorités
Dans cet algorithme, les processus sont rangés dans la file d’attente des processus
prêt par ordre décroissant de priorité. L’ordonnancement dans ce cas est régit par les
règles suivantes :
1. Quand un processus est admis par le système, il est inséré dans la file
d’attente des processus prêts à sa position approprie (dépend de la valeur de
priorité).
22
2. Quand le processeur devient libre, il est alloué au processus se trouvant en
tête de file d’attente des processus prêts (le plus prioritaire).
3. Un processus élu relâche le processeur s’il se termine ou se bloque (E/S ou
autre).
Remarque :
Si le système met en oeuvre la réquisition, quand un processus de priorité
supérieure à celle du processus élu entre dans l’état prêt ; le processus élu sera mis
dans la file d’attente des éligibles à la position approprie, et le processeur est alloué
au processus qui vient d’entrer.
Caractéristiques de l’Ordonnanceur
Les principales caractéristiques sont :
Peut être avec ou sans réquisition
Un processus de priorité basse risque de ne pas être servi (problème de
famine) d’où la nécessité d’ajuster périodiquement les priorités des processus
prêts. L’ajustement consiste à incrémenter graduellement la priorité des
processus de la file d’attente des éligibles (par exemple à chaque 15 mn on
incrémente d’une unité la priorité des processus prêts).
23
Chapitre 3: Système de gestion de fichiers
1. Introduction
Le système de gestion de fichiers (SGF) est le composant d’un système
d’exploitation
responsable de la gestion (stockage, lecture, écriture, etc.) des données des
utilisateurs sous forme de fichier enregistré sur les supports de stockage de manière
permanente (généralement sur le disque dur).
2. Rôle d’un système de gestion de fichiers
Le système de gestion de fichiers assure les fonctionnalités suivantes :
Le stockage des données des utilisateurs sous forme de fichiers sur les
supports de stockage (disque dur, etc.).
La mise en oeuvre d’un certain nombre de manipulations telles que la
structuration de l’ensemble des données, l’insertion d’éléments, etc.
La gestion de l'espace libre
La gestion des accès simultanés aux données
3. La structure d’un système de fichiers
Un fichier est une unité de stockage logique mise à la disposition des utilisateurs
pour l'enregistrement de leurs données. Le SGF établit de façon transparente aux
utilisateurs la correspondance entre le fichier et les bits enregistrés dans le support
de stockage.
Dans un fichier on peut écrire des images, du texte, des instructions d'un
programme, etc. Ces données sont structurées logiquement sous forme de fichier et
physiquement sous forme de bits.
Afin de différencier les fichiers, chacun possède un ensemble d'attributs comme le
nom, l'extension, la date de création, la dernière date de modification, la taille.
Un répertoire est une unité logique qui permet de stocker plusieurs fichiers. Il ne
contient pas directement des données, il contient des fichiers et ce sont les fichiers
qui contiennent des données.
Les répertoires sont, eux aussi, des fichiers, constitués des noms et des références
de tous les fichiers qu’ils contiennent. Cette structure permet alors de construire
l’arborescence du système. Pour désigner un fichier quelconque, il suffit de spécifier
l’enchaînement des répertoires nécessaires à son accès, à partir de la racine. Dans
24
le système Unix, les répertoires de cet enchaînement sont séparés par une oblique :
« / ». Dans le système DOS, par une contre-oblique : « \ ».
Dans le système Unix, chaque répertoire contient aussi sa propre référence, ainsi
que celle du répertoire immédiatement supérieur. « . » désigne le répertoire courant,
et « .. », le répertoire supérieur. L’inclusion de ces deux références permet de
désigner un fichier quelconque, relativement au répertoire courant.
Les systèmes d’exploitation modernes adoptent une structure hiérarchique des
fichiers. Chaque fichier appartient à un groupe d’autres fichiers et chaque groupe
appartient lui-même à un groupe d’ordre supérieur. On appelle ces groupes, des
répertoires ou des dossiers, suivant les terminologies.
Le schéma de la structure générale d’un système de fichiers prend l’aspect d’un
arbre, formé au départ d’un répertoire « racine » recouvrant des périphériques et
notamment un ou plusieurs disques. Dans chacun des répertoires on pourra trouver
d’autres répertoires ainsi que des fichiers de données ordinaires.
4. Anatomie d’un disque dur
Un disque dur possède la forme suivante:
25
Les têtes de lecture-écriture : sur chaque plateau, on peut écrire les données sur
les deux faces. Il faut ainsi associer une tête à chaque face. Les têtes sont reliées à
un bras qui permet de les déplacer simultanément. Le bras se déplace de
l'extérieur vers le centre et vice-versa. Chaque tête est collée à la face du plateau
lorsque le disque est au repos. Quand la machine est mise sous tension, le disque
entreprend un mouvement de rotation permanent et il se crée une dépression sous
chaque tête l'obligeant à s'éloigner du plateau de qqs millimètres.
Un moteur rotatif : il permet de faire tourner les plateaux à une vitesse de 7200
tr/min et même plus.
Des positionneurs de tête : ils permettent de positionner la tête de lecture/écriture à
l'emplacement voulu. Chaque face du plateau est constituée d'un ensemble de pistes
La surface de chaque plateau est divisée en pistes concentriques numérotées à
partir de 0 en commençant à partir de la piste la plus à l'extérieur. Chaque piste est
divisée en secteurs.
5. Formatage et Partitionnement
5.1. Partitionnement
Le partitionnement consiste à « cloisonner » le disque. Il permet la cohabitation de
plusieurs systèmes d’exploitation sur le même disque (il permet d’isoler certaines
parties du système). L’information sur le partitionnement d’un disque est stockée
dans son premier secteur (secteur zéro), le MBR (Master Boot Record).
Deux types de partitionnement :
Primaire : On peut créer jusqu’à 4 partitions primaires sur un même disque.
Etendue est un moyen de diviser une partition primaire en sous-partitions (une
ou plusieurs partitions logiques qui se comportent comme les partitions
primaires, mais sont créées différemment (pas de secteurs de démarrage))
Dans un même disque, on peut avoir un ensemble de partitions (multi-partition),
contenant chacune un système de fichier (par exemple DOS et UNIX)
26
5.2. Formatage
Avant qu’un système de fichiers puisse créer et gérer des fichiers sur une unité de
stockage, son unité doit être formatée selon les spécificités du système de fichiers.
Le formatage inspecte les secteurs, efface les données et crée le répertoire racine
du système de fichiers. Il crée également un superbloc pour stocker les informations
nécessaires à assurer l’intégrité du système de fichiers.
28
Figure 3-13: Allocation contiguë
30
Allocation indexée
L’allocation chaînée résout les problèmes de fragmentation, cependant elle ne peut
pas supporter l’accès direct de façon efficace, car les pointeurs vers les blocs ainsi
que les blocs eux-mêmes sont dispersés dans tout le disque et ils doivent être
récupérés dans l’ordre. L’allocation indexée résout ce problème en rangeant tous les
pointeurs dans un seul emplacement : le bloc d’index.
Chaque fichier possède son propre bloc index, qui est un tableau d’adresse de blocs
disque. La ième entrée dans le bloc index pointe sur le ième bloc du fichier. Le
répertoire contient l’adresse du bloc index. Pour lire le ième bloc, on utilise le
pointeur de la ième entrée du bloc index afin de trouver et de lire le bloc désiré. Ce
schéma est semblable à celui de la pagination.
Quand on crée le fichier, tous les pointeurs du bloc index sont fixés à nul. Quand le
ième bloc est écrit pour la première fois, on obtient un bloc du gestionnaire de
l’espace libre et son adresse est placée dans la ième entrée du bloc index.
Inconvénient : L’espace occupé par le bloc d’index.
Chaque fichier doit posséder un bloc d’index dont il est souhaitable qu’il soit le plus
petit possible. Cependant s’il est trop petit, il ne pourra pas ranger des pointeurs en
nombre suffisant pour un grand fichier et il faudrait un mécanisme pour traiter ce
détail.
Pour cela plusieurs solutions ont été proposées, dont :
Schéma chaîné : Pour des fichiers importants, on peut chaîner les blocs
d’index entre eux.
Index multiniveaux : Cette solution consiste à utiliser un bloc d’index séparé
pointant sur des blocs d’index.
31
9. Gestion de l’espace libre :
Comme il n’existe qu’une quantité limitée d’espace disque, il est nécessaire de
réutiliser l’espace des fichiers détruits pour les nouveaux fichiers. Pour cela, le
système doit maintenir une liste d’espace libre. Cette liste mémorise tous les blocs
libres du disque.
Pour créer un fichier, on recherche dans la liste d’espace libre la quantité requise
d’espace et on alloue cet espace au nouveau fichier. Cet espace est ensuite
supprimé de la liste. Quand un fichier est détruit, son espace disque est ajouté à la
liste d’espace libre. Mais comment implémenter la liste d’espace libre ?. Plusieurs
méthodes existent dont : le vecteur binaire et la liste chaînée.
9.1. Vecteur binaire
On implémente souvent la liste d’espace libre comme un tableau binaire. Chaque
bloc est représenté par un bit. Si le bloc est libre, le bit est à 1, s’il est alloué le bit est
à 0. Par exemple, si dans un disque les blocs 2, 3, 5, 8 et 9 sont libres, et les autres
alloués, le vecteur représentant l’espace libre est alors :
Avantage : Il est relativement facile de trouver le premier bloc libre ou les n blocs
libres consécutifs.
Inconvénient : la gestion du vecteur.
9.2. Liste chaînée
Il existe une autre approche pour représenter l’espace libre. Elle consiste à chaîner
les blocs disques libres, en maintenant un pointeur sur le premier bloc libre dans un
emplacement spécial du disque et en le mettant en mémoire cache. Exemple :
32
les adresses d’un grands nombres de blocs libres, à la différence de la méthode
chaînée standard.
33
Chapitre 4: Etude du système d’exploitation MS-DOS
1. Introduction
MS-DOS (Microsoft Disk Operating System) est un S.E. ancien (version 1.25 en
1981), mono tâche, mono utilisateur, dépourvu d‘une interface graphique. Pourquoi
le conserver ? Pourquoi l‘étudier ?
Pour son langage de commande qui est très utilisé
Pour installer une machine : démarrer avec une disquette de boot et préparer
la machine à recevoir le futur SE (par exemple partitionner et formater les
partitions)
Pour dépanner une machine, lorsque l‘interface graphique ne démarre pas
Pour créer des scripts de commandes ou fichier batch
Pour automatiser des traitements
Il sert de complément au SE muni d‘une interface graphique.
2. Structure du DOS
Le DOS est constitué de deux parties :
2.1. Noyau
Il fournit des services tels que gestion de fichiers, gestion de la mémoire...
Il réside dans deux fichiers cachés sur le disque :
IO.SYS: lien entre le BIOS et le noyau (routines d'accès aux périphériques)
MSDOS.SYS : primitives du DOS (routines d'accès aux lecteurs de
disquettes, fichiers, répertoires)
2.2. Interprétateur de commande
Il est stocké dans le fichier Command.com, analyse les ordres tapés par l'utilisateur
et les transmet au système.
Les commandes les plus courantes sont traitées directement par COMMAND.COM
(commandes internes ou résidentes) ; les autres sont chargées à la demande et
résident dans des fichiers (commandes externes).
3. Concepts fondamentaux
3.1. Unités et périphériques
Une unité est un élément physique permettant le stockage permanent des
informations. Le standard de nommage de ces unités est :
A : 1er lecteur de disquette
B : 2e lecteur de disquettes (sur les anciens systèmes)
34
C : 1er disque dur (ou première partition du premier disque)
D : 2e disque dur ou lecteur graveur CD-DVD ou 2e partition
3.2. Fichiers
Un fichier est un ensemble d'informations plus ou moins structurées stockées sur un
périphérique de masse (disquette, disque dur…). Il contient des données ou des
programmes, son nom est composé de :
d'un nom proprement dit
d'une extension facultative (3 caractères maximum) précédée d'un point.
L'extension est habituellement utilisée pour donner des informations sur la nature du
fichier. Quatre extensions sont imposées par le système :
.COM fichier de commandes exécutable
.EXE fichier exécutable
.BAT fichier de commande (batch) (il s'agit d'un fichier texte)
.SYS fichier système
Un fichier est doté de quatre attributs :
a: Archive : il est utilisé pour les commandes de sauvegarde (backup)
r: (read only) lecture seule (remarque : lorsque les fichiers sont copiés à partir
d'un Cd-rom, l'attribut de lecture seule est positionné sur chaque fichier)
s: attribut système : utilisé pour les fichiers systèmes
h: (hidden) fichier caché
3.3. 2.3.3. Répertoires
Un répertoire est un regroupement de fichiers et de sous répertoires. Il permet de
ranger dans un même emplacement des fichiers de même nature ou couvrant le
même sujet.
Le répertoire principal (ou répertoire racine) est l'unité complète. Il est représenté par
le nom de l'unité, suivi du symbole \. Ainsi C:\ représente le répertoire principal de
l'unité C.
Le répertoire courant est le répertoire avec lequel où l’on travaille à un moment
donné.
Exemple : C:\TP\AS\
Tout répertoire est doté de deux répertoires particuliers :
. : Répertoire courant ;
.. : Répertoire père (celui dans lequel est contenu le répertoire courant) ;
35
3.4. Chemin d‘accès
C’est la description complète des répertoires permettant d‘y accéder depuis l‘endroit
où on se trouve. Les noms de répertoires sont séparés par « \ »
Exemples :
C:\images\index\liste.txt : chemin absolu, commence la description depuis la
racine ;
.index\liste.txt : chemin relatif, commence la description depuis le répertoire
courant (ici, image par exemple)
..\index\liste.txt : idem, par contre le ".." indique que l'on passe par le
répertoire père (ici, on est dans labs, et on souhaite accéder au fichier dans le
répertoire image)
4. Commandes MS-DOS
Une commande Dos est une commande exécutée dans un mode appelé ligne de
commande. Cette commande pour être exécutée doit être présente dans
l'environnement de travail (sur une disquette de boot, toutes les commandes ne sont
pas présentes).
4.1. Syntaxe générale d'une commande MS-DOS
Nom commande [paramètre(s)] [option(s)]
Les trois éléments de la commande sont séparés par un ou plusieurs espaces. [ ],
certains paramètres étant optionnels. Les options s'expriment également sous forme
de lettre précédée par le signe /
Exemples :
dir
dir *.jpg
dir *.jpg /w
36
4.2. Obtenir de l'aide sur une commande MS-DOS
Il suffit de rajouter à la commande les caractères /? ou d'utiliser la commande help.
La commande help saisie directement donne la liste des commandes.
Exemples:
Help
dir / ?
help dir
5. 4. Commandes de base
5.1. Commandes sur les répertoires
5.1.1. Lister le contenu d'un répertoire : dir
dir *.doc : affiche la liste des fichiers .doc du répertoire courant
dir /p : affiche la liste des fichiers du répertoire courant page par page
dir a:\info\01 /w : liste des fichiers du répertoire \info\01 de l'unité a: sur cinq
colonnes
dir *.* /s : liste les fichiers contenus dans ce répertoire et dans tous ses sous-
répertoires.
5.1.2. Se déplacer dans les répertoires : cd ou chdir
cd a:\info\01
cd .. permet de remonter dans le répertoire parent.
cd \ permet de remonter au répertoire racine.
5.1.3. Créer un répertoire : md ou mkdir
md travail : créer le répertoire travail dans le répertoire courant.
mkdir a:\info\Travail : créer le répertoire travail dans le répertoire info de l'unité
a:
md \travail\exemple : créer le répertoire et le sous répertoire dans le répertoire
courant.
5.1.4. Supprimer un répertoire : rd ou rmdir
rd travail : supprime le répertoire travail du répertoire courant.
rmdir a:\info\Travail supprime le répertoire travail sur l'unité a:
Remarque :
Pour être supprimé, le répertoire ne doit contenir aucun fichier ni aucun sous-
répertoire. Ceci n'est plus vrai avec le versions récentes Windows : /S permet de
supprimer tous les fichiers et répertoires.
37
5.1.5. Visualisation de l'arborescence : tree
tree c:\travail : affiche l'arborescence de c:\travail
5.1.6. Commandes sur les fichiers
5.1.7. Afficher le contenu d'un fichier : Type
Type clients.txt : affiche à l'écran le contenu du fichier clients.txt
Remarque
Le fichier à afficher doit contenir uniquement des caractères imprimables (affichable).
5.1.8. Copier un fichier : copy
copy lettre.doc a: copie le fichier lettre.doc sur la disquette a:
copy c:\doc\*.txt c:\txt : copie les fichiers .txt du répertoire c:\doc dans le
répertoire c:\txt
5.1.9. Supprimer un fichier : delete
del toto.txt: efface le fichier toto.txt du répertoire courant
del *.* : efface tous les fichiers du répertoire courant
del *.* /p : un message de confirmation est affichée pour chaque fichier
5.1.10.Renommer un fichier : ren
ren toto.doc titi.doc : renomme le fichier toto.doc en titi.doc
5.2. Commandes sur disque
Certaines commandes ne peuvent pas être utilisées dans une fenêtre Dos. De plus,
certaines de ces commandes sont destructrices, donc, à manipuler avec précaution.
5.2.1. Formatage du disque : format
format a:
format a: /s :
5.2.2. Dupliquer des disques diskcopy
diskcopy a: b: copie la disquette de l'unité a sur la disquette de l'unité b
5.3. 4.3. Commandes avancées
5.3.1. Copier une arborescence Xcopy
XCopy c:\travail a: /e : Copie le répertoire travail et ses sous répertoires, y
compris les répertoires vides.
5.3.2. Supprimer une arborescence : deltree
Deltree a:\travail : Supprime tous les fichiers et répertoires à partir du
répertoire Travail.
38