• Aucun résultat trouvé

06 Le Système d'exploitation

N/A
N/A
Protected

Academic year: 2022

Partager "06 Le Système d'exploitation "

Copied!
39
0
0

Texte intégral

(1)

C A H I E R

06 Le Système d'exploitation

Avertissement

L'étude présentée sur les système d'exploitation se veut avant tout généraliste.

Le but est de donner une idée des problèmes qui se posent aux concepteurs de ces systèmes et de la complexité des mécanismes mis en oeuvre pour satisfaire les exigences, souvent contradictoires, de simplicité, d'efficacité, de fiabilité et de transparence.

Mais cette étude devrait surtout mettre en évidence le fait que, dans un système informatique moderne, le matériel et le logiciel-système sont intimement liés, et forment ensemble une véritable machine virtuelle.

INTRODUCTION AU SYSTEME D'EXPLOITATION LOGICIEL ET MATERIEL

Dans son fonctionnement même, la composante "matérielle" d'un ordinateur est indissociable de l'aspect "logiciel". L'un comme l'autre sont intimement liés dans la machine.

Pour illustrer cette idée, on peut considérer que l'aspect logiciel est à l'ordinateur ce qu'un tableau de bord est à un avion.

Dans la très grande diversité de logiciels, certains sont regroupés sous la catégorie "système d'exploitation" (operating system).

EXPLOITATION DE L'ORDINATEUR - SYSTEME D'EXPLOITATION

Ces logiciels sont d'une grande importance puisqu'ils sont à la base de l'exploitation proprement dite de l'ordinateur.

Le système d'exploitation est l'ensemble des programmes qui se chargent de tous les problèmes relatifs à l'exploitation de l'ordinateur. Aussi peut-on proposer la définition suivante d'un système d'exploitation:

"Ensemble de programmes conçus dans le but de faciliter l'exploitation de l'ordinateur et d'en optimiser son fonctionnement".

Un système d'exploitation assure un certain nombre de grandes fonctionnalités dont les principales sont :

(2)

• la gestion des ressources de l'ordinateur en coordonnant l'ensemble des tâches essentielles à son bon fonctionnement ;

• l'interaction directe entre l'homme et la machine, en offrant une interface qui permette l'expression des besoins de l'utilisateur ;

• la gestion des tâches fastidieuses et complexes d'entrées-sorties, comme le contrôle des périphériques ou le stockage et les manipulations des fichiers ;

• la sécurité et l'intégrité des données, des programmes et des utilisateurs.

SYSTEME D'EXPLOITATION – CLASSIFICATIONS

Il est possible d'appréhender les systèmes d'exploitation au travers de deux grands types de classification.

L'une selon leur nature: systèmes "ouverts" ou "propriétaires".

L'autre en fonction des familles d'ordinateur auxquelles ils sont destinés.

LES SYSTEMES D'EXPLOITATION OUVERT/PROPRIETAIRE

Les systèmes ouverts sont portables sur différentes machines, c'est-à-dire qu'ils ont été conçu pour fonctionner indépendemment de l'architcture matériel de l'ordinateur sur lequel ils ont été installé.

Le système Unix, qui a été un précurseur en la matière, est l'exemple type d'un système ouvert. Il a été implanté sur des machines très diverses allant des micro-ordinateurs jusqu'aux super- ordinateurs tels que les Cray.

Les systèmes d'exploitation propriétaires, quant à eux, sont des systèmes spécifiques à une machine ou une gamme de machine d'un certain constructeur (et en général conçus, réalisés et commercialisés par le constructeur lui-même).

On peut citer des systèmes tels que MS/DOS pour les micro-ordinateurs basés sur les microprocesseurs d'Intel, MacOS pour les Macintosh d'Apple basés sur les microprocesseurs Motorola, VMS développé par DEC pour la gamme VAX, MVS et GCOS7 pour les gros ordinateurs respectivement d'IBM et de Bull, etc.

LES FAMILLES D'ORDINATEUR Les micro-ordinateurs

La plupart des ordinateurs personnels sont gérés par des systèmes mono-utilisateur. Le but essentiel est de faciliter l'exploitation de la machine. Ces systèmes offrent un langage de commande (interface utilisateur/système) facile à utiliser, un système de gestion des fichiers aussi simple que possible et des facilités d'entrées-sorties permettant l'utilisation aisée du clavier, de l'écran et des unités de disques.

(3)

Un certain nombre de systèmes d'exploitation existent pour les micro-ordinateurs dont les plus importants sont MS-DOS, Windows, Unix, MacOS, OS/2, Windows 95, etc.

MS-DOS (MicroSoft Disk Operating System) est certainement le plus répandu. Comme son nom l'indique, son but initial était de gérer les fichiers sur disque. Il ne gère qu'une seule tâche d'un seul utilisateur. Il a évolué en même temps que les micro-ordinateurs, mais il comporte toujours des limitations importantes telles que la limitation de l'espace mémoire adressable. Il s'est doté d'une interface utilisateur graphique, appelée Windows. Malgré cela il n'est plus capable de gérer pleinement les capacités des machines actuelles et est progressivement remplacé par le système d'exploitation Windows95.

Le système MacOS du Macintosh mérite d'être mentionné comme le précurseur des interfaces graphiques qui est une référence en matière de cohérence, mais d'autres fonctionnalités lui font cruellement défauts telles qu'un vrai multitâche. Car il ne s'agit que d'un multitâche non- préemptif, ce qui implique qu'il n'y a pas répartition de tranches de temps aux différents processus. Ainsi, lorsque l'on formate une disquette il est impossible de faire autre chose.

Les mini-ordinateurs

Bien que le système Unix soit implantable sur une grande diversité d'ordinateur, on le trouve très fréquemment installé sur la gamme des mini-ordinateurs.

Le système Unix est multitâche, multi-utilisateur, et il dispose de la mémoire virtuelle et de possibilités de communication inter-processus. Il est le standard de fait pour les stations de travail et une norme standard, appelé OSF1 a été développé par l'organisme OSF (Open Software Foundation). Il s'est doté d'interfaces utilisateur graphiques telles que l'interface OSF/Motif basée sur le système de fenêtres X.

Une nouvelle génération de systèmes d'exploitation est en train d'apparaître, tels que le système Windows NT de Microsoft, qui sont des systèmes ouverts multitâches, multi-utilisateurs, avec une interface utilisateur graphique et intégrant les possibilités offertes par les réseaux.

Il a été conçu pour pouvoir être installé facilement sur différentes machines RISC et CISC, ainsi que sur des machines multiprocesseurs.

C'est un système multitâche et multi-utilisateur, c'est-à-dire que plusieurs utilisateurs peuvent effectuer plusieurs tâches simultanément, des tranches de temps étant allouées périodiquement par le système à chaque processus.

Les gros systèmes (mainframe)

Les systèmes d'exploitation sur gros ordinateurs sont essentiellement de type propriétaire. Citons MVS pour le monde IBM et GCOS7 pour le monde Bull.

Les ordinateurs haut de gamme sont le plus souvent des architectures multiprocesseurs exploitées dans les modes batch et temps réel. Ils servent simultanément plusieurs centaines d'utilisateurs et ils accomplissent les tâches les plus variées (édition de textes, compilation, petits travaux de mise au point, grands jobs de production, etc.).

(4)

La tendance à connecter les ordinateurs en réseau a poussé les systèmes d'exploitation à se doter de modules de communications (Network Operating Systems). Des systèmes distribués (Distributed Operating Systems) sont développés qui exploitent les ressources de plusieurs machines, tout en donnant l'impression à l'utilisateur de dialoguer avec un seul ordinateur.

STRUCTURE D'UN SYSTEME D'EXPLOITATION RAPPEL DE NOTIONS DE BASE

Avant d'aborder la description d'un système d'exploitation actuel, il est nécessaire de préciser certains concepts de base.

Un programme peut être défini comme une suite statique d'instructions. Il est écrit dans un langage de programmation "source". Il n'est véritablement exploitable par l'ordinateur qu'après une traduction (compilation ou interprétation) en langage machine binaire sous une version

"exécutable".

Un processus est un programme (en version "exécutable") en cours d'exécution, c'est-à-dire où une séquence d'instructions est déroulée pour réaliser un traitement déterminé.

Le processeur est un dispositif matériel (hardware) qui exécute les processus. Le processus est l'unité de travail de base du système d'exploitation.

L'exploitation d'un ordinateur s'organise autour de l'exécution de processus très divers comme par exemple un processus d'entrées-sorties des données, un processus de calcul déterminé, ou encore un processus lié à l'activité d'un terminal interactif.

En généralisant, on peut distinguer les processus "utilisateurs" des processus "systèmes" générés par le système d'exploitation lui-même.

DESCRIPTION STRUCTURELLE D'UN SYSTEME D'EXPLOITATION

Le modèle stratifié proposé décrit l'organisation d'ensemble d'un ordinateur géré en multiprogrammation, en groupant les différentes fonctions logicielles typiques d'un système d'exploitation moderne.

Ces fonctions ne sont pas toutes d'un même niveau. On peut considérer qu'un système d'exploitation est basé sur une superposition de couches fonctionnelles, les couches les plus basses étant celles qui servent d'interaction directe avec le matériel, et les plus hautes, celles qui servent d'interface avec l'utilisateur.

Chaque couche utilise les fonctions définies par les couches inférieures à l'instar de l'approche adoptée pour la définition des niveaux fonctionnels concernant les protocoles de communications d'un réseau (cf. modèle OSI cahier 07 & 3.7.2).

Sans véritablement être parties intégrante du système d'exploitation proprement dit, on trouve au plus bas niveau les fonctions fournies par le matériel. Mélange de matériel et de logiciel, elle

(5)

constitue ce que l'on nomme le Bios (Basic Input Output System), programme constitué d'instructions "micro-codées" et mémorisées sur des mémoires mortes (ROM) encore appelé (firmware).

La fonction du Bios est d'initialiser l'ordinateur à sa mise sous tension. Il vérifie l'état de disponibilité de l'environnement interne et externe de l'ordinateur (périphériques) et procède ensuite au chargement, en mémoire vive (RAM) du système d'exploitation mémorisé sur disque magnétique.

MODULES RESIDENTS

Mais seule une partie du système d'exploitation est chargé. Plusieurs modules sont implantés dont le fonctionnement capital nécessite une présence permanente dans la mémoire centrale de l'ordinateur pendant toute la durée de son fonctionnement. De ce fait, ils sont appelés et regroupé sous le terme de "résidents".

Parmi les programmes résidents on trouve tout d'abord le noyau (ou superviseur, moniteur).

Interface entre le matériel et le logiciel, sa finalité est de gérer :

• l'allocation du CPU ;

• la gestion des interruptions ;

• le support de l'environnement des processus.

Le noyau est la seule partie du système qui doit entièrement résider en mémoire centrale. Ses fonctions impliquent des interventions fréquentes et rapides. On ne saurait attendre un module stocké sur disque pour répondre à une disponibilité soudaine du CPU ou pour réagir à une interruption.

On rencontre ensuite le module de gestion de la mémoire, suivi par la gestion des entrées-sorties.

MODULES NON RESIDENTS - PROGRAMMES UTILITAIRES

Un certain nombre de module ne font pas partie des fonctions de base du système d'exploitation.

Ils sont chargé en mémoire au fur et à mesure des besoins. Ils intègrent de services du système, comme la gestion des fichiers, la planification des travaux (l'allocation des ressources) et enfin l'interface utilisateur avec l'interpréteur de commandes.

Les logiciels utilitaires aident à développer les applications, tels les compilateurs, assembleurs, éditeurs de liens, chargeurs et débogueurs. Ils comprennent aussi d'autres outils tels que des outils graphiques, des outils de communication, etc.

Le système de gestion des fichiers fait appel, par exemple, aux services du système de gestion des entrées-sorties, qui, à son tour, utilise le module de traitement des interruptions, etc.

Il faut noter que, dans ce modèle, des programmes tels les compilateurs, les assembleurs, les éditeurs de liens, les interpréteurs, les éditeurs de texte, et les utilitaires divers (tri, fusion, sélection, etc. ...).

(6)

PERSPECTIVES D'EVOLUTION

Pendant un quart de siècle, les systèmes d'exploitation et les matériels ont évolué en parallèle, en s'influençant mutuellement.

Les fonctionnalités des systèmes contemporains trouvent leurs racines dans un matériel toujours plus performant, où des dispositifs spécifiques ont été conçus à leurs intentions. Les canaux d'E/S, le système d'interruption, les différents types de mémoires "caches", les mémoires auxiliaires comme les unités de disque et les terminaux interactifs ont joué un rôle déterminant dans l'évolution des concepts fondamentaux des systèmes d'exploitation tels que la protection des programmes et des données, la réallocation dynamique des programmes en mémoire centrale ou pour la gestion de la mémoire virtuelle.

Les tâches d'un système d'exploitation n'ont ainsi cessé de croître au fil des années en terme de services et de convivialité. Il n'est donc pas surprenant de constater un accroissement continuellement de leur taille et de leur complexité. Un système d'exploitation moderne est constitué de centaines de milliers, voire de millions d'instructions.

Après un quart de siècle de développement et une somme d'expériences plus ou moins concluantes, les fonctions de base de tout système d'exploitation commencent à être assez bien identifiées et une certaine structure hiérarchisée entrevue. On observe une convergence des idées et des structures, bien que les réalisations restent pour la plupart encore assez différentes et incompatibles.

Cependant, on assiste actuellement à un certain effort de normalisation où la tendance est de se conformer aux systèmes existants plutôt que d'en développer des nouveaux.

Les systèmes propriétaires ont tendance à disparaître au profit de systèmes ouverts qui essayent de s'imposer comme "systèmes standard" pour tout type de machine.

Les progrès spectaculaires à attendre dans les domaines des technologies matérielles et logicielles nous laissent entrevoir, pour les années à venir, des changements et des innovations dans les développements des systèmes d'exploitation et des logiciels associés.

LA GESTION DE LA MEMOIRE

Les programmes ont besoin de mémoire pour leur exécution (pour le stockage des instructions et des données). Seules les instructions stockées en mémoire centrale peuvent être exécutées par le processeur (CPU).

La mémoire centrale est une ressource coûteuse: par conséquent elle est limitée et devient facilement un élément critique dans la performance d'un ordinateur. La taille des mémoires a augmenté considérablement avec l'adoption des mémoires électroniques, mais la taille des programmes a suivi une tendance semblable. Il s'est avéré donc nécessaire de gérer l'espace mémoire efficacement.

(7)

Au fil des années, des techniques ont été développées, allant des plus simples aux plus sophistiquées.

LA GESTION DE L'ESPACE MEMOIRE EN MONOPROGRAMMATION

Lorsqu'un l'ordinateur est exploité en monoprogrammation, le problème se réduit au partage de la mémoire entre le programme d'application à exécuter et la partie du système résidant en mémoire.

C'est la technique la plus simple à mettre en œuvre.

Le programme utilisateur dispose alors de toutes les ressources de l'ordinateur pour son exécution. Tel était le cas des ordinateurs de la première génération qui étaient dépourvues de tout logiciel. Ils étaient programmées en binaire et les programmes étaient chargés en mémoire, exécutés et mis au point depuis un pupitre de commande.

Ces machines ne pouvaient exécuter qu'un seul programme à la fois, chaque unité passait la plupart de son temps à attendre qu'une autre unité ait terminé son travail.

Cela s'explique, dans la mesure où une disproportion énorme existe entre les temps de traitements internes (nanoseconde) et externes (milliseconde pour les disques magnétiques), et que par ailleurs, en informatiques de gestion les manipulations de données (E/S) sont très fréquentes, il s'est très rapidement avéré que ce type de gestion de la ressource mémoire devenait très coûteuse.

LA GESTION DE L'ESPACE MEMOIRE EN MULTIPROGRAMMATION

A la fin des années 50, avec l'amélioration des performances, le coût relatif du temps perdu était devenu prohibitif. C'est pourquoi, avec l'arrivée des ordinateurs de la deuxième génération, on chercha à réduire les temps morts en automatisant les opérations manuelles et en améliorant l'exploitation des différentes unités.

Aussi, l'idée s'est développée selon laquelle, plusieurs programmes pouvaient être stockés en mémoire et être traités successivement par le processeur lorsque celui-ci était libéré par une demande d'opération d'E/S.

Plusieurs techniques ont été développé en fonction l'état d'avancement de la technologie disponible. Elles sont regroupé sous le terme de multiprogrammation.

En multiprogrammation, plusieurs programmes sont implantés en mémoire centrale et sont exécutés alternativement par un seul processeur.

Dans ce type de gestion, la problématique revient à organiser la mémoire afin qu'elle puisse contenir un nombre maximum de programmes.

Ainsi naquit le "moniteur", ou exécutif, programme chargé d'assurer la bonne marche des opérations. Il s'occupait du séquence ment des travaux des utilisateurs et de la continuité des opérations.

(8)

PARTITIONS DE TAILLE FIXE

L'idée la plus simple a consisté à découper la mémoire physique en partitions fixes, mais non nécessairement de tailles identiques, fixées de façon paramétrable à chaque début de session de fonctionnement de l'ordinateur.

Ces partitions étant fixées à l'avance, leur allocation présentait quelques problèmes, notamment du fait d'un certain gaspillage de mémoire, à cause des différences entre les tailles des processus et celles des partitions. La taille des processus à exécuter étant difficilement prévisible, leur taille ne correspondait pas exactement à celles des partitions établies à l'avance. L'utilisation de la mémoire n'était pas totalement optimum du fait de la présence de ces espaces perdus "trous de mémoire", elle prit, de ce fait, le qualificatif de "mémoire en gruyère".

PARTITIONS DE TAILLE VARIABLE

L'inévitable gaspillage de mémoire des systèmes à partitions fixes conduisit à la conception de partitions adaptables à la taille des programmes. Ainsi naquit la partition de taille variable.

La solution consiste naturellement dans la possibilité de déplacer physiquement les programmes en mémoire. De temps en temps le système suspend les exécutions et effectue un compactage.

Cela permet de ressasser la mémoire émiettée et de faire place aux programmes en attente.

Pour réaliser cette opération de ressassement, ou compactage, on doit disposer d'une technique pour déplacer correctement les programmes, afin qu'ils puissent continuer leur exécution. On appelle cette technique, la "relocation" (réallocation), ou translation dynamique (dynamic relocation).

Elle est réalisée à l'aide des registres de base et du dispositif calculant, au moment de l'exécution, l'adresse effective. L'adresse effective est égale à la somme de l'adresse de base et de l'adresse relative au début du programme. La réallocation dynamique de l'espace mémoire peut ainsi être réalisée en déplaçant le programme et en modifiant le contenu du registre de base associé.

Les techniques des systèmes multiprogrammés, s'accompagnent également de dispositif de sécurité, protégeant chaque programme contre les fautes éventuelles des autres usagers. Les fautes susceptibles de mettre en danger l'exécution correcte d'un programme d'autrui sont liées à la possibilité de déborder dans la zone mémoire d'un autre programme. En principe, il suffit donc de vérifier que toute adresse calculée pendant l'exécution soit interne à l'intervalle des adresses allouées au programme exécutant.

La solution consiste à comparer, à l'aide d'un dispositif spécial, l'adresse effective calculée avec les adresses extrêmes de la zone allouée au programme, stockées dans des registres bornes.

Cependant, si la gestion à partitions de taille variable permet une optimisation de l'occupation de la mémoire, elle ne supprime pas la difficulté pour un programme volumineux à obtenir de la ressource mémoire suffisante.

Dans ce système, l'attribution de la ressource mémoire est dépendante de la taille de celui-ci.

(9)

Dans l'évolution conceptuelle des systèmes de gestion de la mémoire, l'étape suivante a consisté à chercher des méthodes de fractionnement des programmes et de partitionnement de la mémoire, de telles sorte qu'un programme puisse être chargé par module ("morceaux"), et ceci indépendamment de sa taille.

LA SEGMENTATION

Une technique offrant une solution à ce problème est la segmentation. Elle concerne la division du programme en modules, ou segments, chaque segment correspondant à une entité logique, telle une procédure ou un bloc de données, indépendante des autres segments.

La segmentation permet au programmeur de définir plusieurs espaces d'adresses séparés. Le système d'exploitation se charge de placer en mémoire les segments nécessaires à l'exécution des programmes prêts à utiliser le processeur. C'est le système qui doit savoir où sont stockés les différents segments. Pour cela, il organise et il gère un ensemble de tables de segments, une table par processus, contenant les adresses de chargement des segments de chaque programme.

L'adresse est structurée et contient deux champs : le numéro du segment et le déplacement à l'intérieur du segment. Chaque processus est associé à une table de segments. Le calcul de l'adresse effective est réalisé, comme d'habitude, à l'aide d'un dispositif spécial, en ajoutant le déplacement à l'adresse de chargement du segment, qui est stockée dans la table des segments.

La protection peut être assurée au niveau de la table des segments, en y ajoutant la taille de chaque segment ou la dernière adresse du segment. Ces informations sont utilisées pour vérifier que l'adresse calculée ne tombe pas en dehors de la portion de mémoire occupée par le segment.

LA NOTION DE MEMOIRE VIRTUELLE

L'idée de mémoire virtuelle (virtual memory) consiste à traiter séparément les adresses référencées par un programme (adresses virtuelles) et les adresses de la mémoire physique (adresses réelles).

L'ensemble des adresses virtuelles utilisées dans un programme est indépendant de l'implantation du programme en mémoire physique. C'est un espace mémoire virtuel qui n'existe donc pas, mais qui peut être utilisé par le programmeur comme modèle de mémoire centrale à sa disposition.

Tout se passe comme si l'utilisateur avait accès à une mémoire ayant 2n locations adressables (les adresses allant de 0 à 2n-1), n étant le nombre de bits utilisés pour les adresses du programme.

Ce nombre n peut être naturellement beaucoup plus grand que le nombre m déterminant la taille de la mémoire physique. Une table de correspondance, dite topographie de mémoire ou table des pages (page table), gérée par le système, met en relation ces deux espaces d'adresses. Un dispositif matériel assure la transformation d'une adresse virtuelle en adresse réelle.

Un processus utilisera donc une partie de l'espace des adresses virtuelles à sa disposition, notamment celle déterminée par l'éditeur de liens et constituée des adresses comprises entre 0 et une adresse extrême correspondant à la taille du programme prêt au chargement (load module).

L'allocation de mémoire réelle à un tel processus sera traitée par le système d'exploitation sans

(10)

tenir compte de la taille du programme dans l'espace virtuel. L'idée est de libérer le programmeur de toute contrainte imposée par la taille de la mémoire physique.

Par exemple, un champ adresse de 32 bits permet d'adresser un espace virtuel de 4 Gmots (4 milliards de mots). Si la mémoire réelle est de taille beaucoup plus petite (par exemple, 16 Mmots, correspondant à des adresses réelles de 24 bits), le programmeur ne doit pas s'en soucier.

Des mécanismes transparents, gérés par le système d'exploitation, assurent la correspondance entre adresses virtuelles et adresses réelles, donnant ainsi la possibilité d'exécuter tout programme contenu dans les limites de l'espace virtuel. Pour réaliser un tel miracle, le système sera amené à utiliser des mémoires auxiliaires (disques, tambours, mémoires électroniques d'appui, etc. ), comme extensions de la mémoire centrale.

Le concept de mémoire virtuelle, développé pendant les années 60, fut à la base de nombreux projets de recherche avant de devenir une réalité. Au début des années 70, la plupart des gros ordinateurs étaient dotés de mémoire virtuelle. La technique qui permit la réalisation du concept de mémoire virtuelle, est appelée pagination.

LA PAGINATION

Pour réaliser une mémoire virtuelle, il faut d'abord avoir suffisamment de mémoire secondaire pour y stocker le programme tout entier et ses données. A l'exécution, des fragments du programme seront chargés en mémoire par le système d'exploitation. Il s'agit, bien sûr, de copies des fragments originaux, qui resteront sur disque ou sur d'autres supports auxiliaires et qui ne seront modifiés qu'en cas de changements effectués sur la copie en mémoire principale. Pour éviter des complications inutiles, il convient de définir une taille fixe et unique pour tous ces fragments de programme, qu'on appelle des pages. Le concept de pagination consiste à découper les deux espaces adresses en pages de la même taille et à mettre en œuvre un mécanisme de transfert de pages entre la mémoire virtuelle et la mémoire réelle.

L'espace des adresses virtuelles est donc divisé en pages de taille fixe, par exemple, 1.024 ou 2.048 mots (la taille des pages étant toujours une puissance de 2). La mémoire réelle est aussi divisée en pages réelles de la même taille. Les pages réelles sont allouées par le système d'exploitation aux processus en attente. A tout instant, un programme prêt à l'exécution n'aura que quelques copies de ses pages en mémoire, opportunément choisies pour permettre à l'exécution d'avancer.

Une table des pages fait correspondre à chaque page virtuelle toute une série d'informations, mises à jour par le système et concernant son emplacement sur disque et, le cas échéant, en mémoire. Un bit indicateur signale la présence (ou l'absence) de la page en mémoire principale.

Lorsqu'une adresse référencée appartient à une page n'ayant pas de copie en mémoire, on se trouve en "défaut de page "(page fault). Le système cherche alors sur disque une copie de la page demandée, la charge en mémoire en déplaçant une autre page et met à jour la table des pages.

PAGINATION ET ANTEMEMOIRE

L'antémémoire est une mémoire relativement petite mais très rapide, annexée au processeur dans le but d'augmenter la performance de l'ordinateur. Si l'instruction ou la donnée cherchée se trouve

(11)

dans l'antémémoire, elle sera immédiatement transférée à l'unité de commande ou à l'UAL, sans attendre le temps, beaucoup plus long, d'un accès à la mémoire.

Si le CPU est doté d'une antémémoire, dite aussi cache (cache memory), les instructions et les données d'un programme peuvent être stockées sur trois niveaux : la mémoire auxiliaire, où se trouve le programme tout entier; la mémoire principale, où se trouve un petit ensemble de pages du programme; le cache, où se trouve une partie (lignes ou blocs) des pages chargées en mémoire centrale.

PAGINATION DU SYSTEME D'EXPLOITATION

Le système d'exploitation est composé de logiciels, même s'ils ne sont pas tout à fait comme les autres (instructions privilégiées, mode superviseur, etc.) et est, à ce titre, également soumis à la pagination. A cause de sa taille, le système d'exploitation ne peut pas être entièrement stocké en mémoire principale. Seuls font exception le noyau et une partie des programmes de gestion de la mémoire et des entrées-sorties (par exemple, ceux qui s'occupent de la pagination).

Les programmes de service, tels les compilateurs, les éditeurs de texte, etc., sont aussi paginés et traités de la même manière que les programmes utilisateurs.

CONCLUSION

En règle générale, les programmes qui s'exécutent dans un système multiprogrammé moderne n'ont que quelques pages en mémoire centrale.

Les tendances actuelles sont, d'un côté, de traiter la plupart des fonctions du système d'exploitation comme des processus utilisateurs et, d'un autre côté, de profiter de la micro- électronique pour confier au matériel ou au niveau de microprogrammation les tâches les plus fréquemment exécutées.

LA GESTION DU TEMPS DU CPU

La gestion du temps du processeur (CPU) se pose dans un contexte de fonctionnement multiprogrammée.

Cette fonctionnalité fondamentale d'un système d'exploitation revient à gérer l'exécution d'un ensemble de processus concurrents.

La gestion du temps CPU est donc une technique qui vise l'attribution entre plusieurs processus de la ressource que constitue le processeur (ressource CPU) par l'élimination des temps d'attente du processeur.

En assurant la présence en mémoire centrale de plusieurs programmes ou parties de programmes capables de profiter de tout cycle CPU disponible, elle cherche à exploiter plus efficacement l'ordinateur.

La différence entre systèmes mono et multiprogrammés réside dans le nombre de programmes chargés en mémoire et prêts à utiliser le CPU.

(12)

Mais cette exécution de processus concurrents par un seul processeur n'est pas simultanéité car dans la réalité elle s'effectue en alternance. La fréquence (extrêmement rapide à l'échelle humaine) des passages d'une activité à l'autre donne une impression de simultanéité.

FONCTIONNALITES DE L'ALLOCATEUR (DISPATCHER)

L'allocateur, un des modules du noyau (appelé également dispatcher) est responsable de la répartition du temps disponible de l'unité de traitement (ou des unités de traitement dans le cas d'une architecture multiprocesseur) entre les différents processus. Sa tâche implique la gestion d'une file d'attente, où les processus prêts à utiliser le CPU sont classés par ordre de priorité. La priorité d'un processus est attribuée par le planificateur (scheduler) selon l'urgence du traitement et les ressources requises; elle est ensuite modifiée dynamiquement sur la base du temps d'attente entre deux exécutions partielles.

L'allocateur se contente d'allouer le CPU au processus qui se trouve en tête de la queue au moment où le CPU devient disponible. Il intervient dans tous les cas où il faut changer le processus maître du CPU. Par exemple, lorsque le processus exécutant déclenche une opération d'entrées-sorties, ou lorsqu'une interruption d'horloge signale que la tranche de temps allouée s'est écoulée (cf. temps partagé) et qu'il faut suspendre l'exécution (préemption). L'allocateur sera aussi activé dès qu'une interruption externe modifie l'état du processus maître du CPU, ou le rend momentanément inopérant (par exemple, traitement d'une erreur). Il attribue alors la ressource CPU à un autre processus. L'allocateur doit aussi sauvegarder l'état du processus dont l'exécution s'interrompt et doit fournir au CPU les éléments de l'environnement du processus désigné comme successeur.

SUPPORT DE L'ENVIRONNEMENT DES PROCESSUS

Cependant, les processus sont parfois en compétition pour le partage de certaines ressources (CPU, mémoire, périphériques, fichiers, etc.). Il est donc nécessaire de coordonner leur progression.

Des méthodes ont été développées, qui permettent la synchronisation et la communication entre processus évoluant de manière asynchrone. C'est la responsabilité d'un module du noyau de pourvoir à ces mécanismes.

Dans le domaine de la synchronisation on peut citer le problème posé par deux processus se trouvant dans une relation producteur/consommateur, où l'un produit des résultats qui doivent être traités par l'autre. Bien que les vitesses d'avancement des deux processus ne soient pas prévisibles, on doit éviter que le deuxième processus ne consomme plus vite que le premier ne peut produire. On dit que ces deux processus sont en compétition pour une ressource partageable et qu'ils se trouvent dans une situation de course de vitesse.

Il faut éviter que deux processus compétitifs puissent accéder simultanément à une même ressource non-partageable qu'ils convoitent. C'est le cas dit de l'exclusion mutuelle et la solution consiste à s'assurer que les ressources non partageables ne sont accessibles que par un processus à la fois.

(13)

Enfin, on peut citer la possibilité de tomber dans des situations de blocages (appelées étreinte fatale: "deadlock") où plusieurs processus cherchant à obtenir une même ressource n'arrivent plus à sortir d'une situation d'impasse. Le système d'exploitation doit prévenir et éviter ces blocages et, le cas échéant, intervenir pour débloquer la situation.

Parmi les mécanismes de synchronisation et de communication entre processus utilisés dans les systèmes d'exploitation, on peut citer les sémaphores, proposés par Dijkstra en 1965.

Pour donner une idée de ces méthodes nous introduisons brièvement le concept de sémaphore : un sémaphore est une variable entière positive (un compteur, prenant les valeurs 0,1,2...n) pouvant être modifiée seulement par deux opérations primitives, appelées Wait et Signal.

L'opérateur Signal (S) incrémente le sémaphore S d'une unité. L'opérateur Wait (S) décrémente S d'une unité, à condition que le résultat ne devienne pas négatif. Cela signifie que si S = "0"

l'opération Wait (S) ne peut pas être effectuée; par conséquent elle doit attendre que le sémaphore S devienne positif (à la suite d'une opération Signal (S) effectuée par un autre processus).

GESTION DES INTERRUPTIONS

La tâche de ce module est de déterminer la source de l'interruption et d'activer la procédure de service, ou de réponse, correspondante.

Parmi les interruptions qu'il faut traiter à ce niveau, il faut inclure les interruptions internes provoquées, par exemple, par la détection d'une erreur, ou par une action requérant le passage à l'état superviseur, ainsi que toutes les interruptions externes.

Comme exemples d'actions causant le passage à l'état superviseur, on peut citer le cas d'un utilisateur essayant d'exécuter une instruction privilégiée ou cherchant à accéder à une information protégée, etc. Si l'interruption implique un changement d'allocation du processeur, ce module du noyau activera le dispatcher.

TEMPS PARTAGE

Les systèmes à temps partagé (time-sharing), sont une variante des systèmes multiprogrammés où le temps CPU est distribué par petites tranches prédéfinies à un très grand nombre d'utilisateurs en mode de fonctionnement interactifs ou non.

Le système d'exploitation partage les ressources de traitement entre les différents utilisateurs, de telle sorte que chacun d'entre eux ait l'impression de disposer de la machine pour lui tout seul.

LA GESTION DES TRAVAUX

Une des fonctionnalités d'un système d'exploitation concerne l'organisation de l'exploitation proprement dite de l'ordinateur.

La gestion des travaux assure un ensemble de tâches telles que :

(14)

• la communication de l'utilisateur avec le système d'exploitation notamment par la rédaction et la formulation de la demande (interface utilisateur),

• la prise en charge de la demande (affectation des ressources et planification),

• la comptabilité et les statistiques concernant l'utilisation des ressources, NOTIONS DE BASE

Les ressources matérielles et logicielles d'un système informatique (CPU, mémoires, dispositifs d'entrées-sorties, etc.), sont disponibles en quantité limitée et doivent être partagées entre les différents processus.

D'une façon générale, on peut définir une ressource comme un élément nécessaire à un processus pour mener à bien son exécution (CPU, mémoires centrale et auxiliaire, périphériques d'entrées- sorties, fichiers, programmes utilitaires divers, liaisons à d'autres systèmes, etc.).

La demande d'exploitation est formalisée par un langage de commande, le JCL (Job Control Language) et au travers d'une entité appelée "travail" ou Job.

Le job se décompose en "étape" (step) qui correspondent à un processus.

Un job est toujours identifié et rattaché à un utilisateur connu du système d'exploitation (cf.

catalogue § 9.1 du présent cahier).

INTERFACE UTILISATEUR

La communication entre utilisateur et système d'exploitation s'effectue par l'intermédiaire d'un langage de commande, appelé JCL (Job Control Language) relativement souple et puissant, permettant à l'utilisateur de spécifier à l'avance :

• l'identification de l'utilisateur et du job,

• les différents processus à exécuter (step),

• les ressources nécessaires à leur déroulement.

• l'enchaînement à réaliser en tenant compte de toutes les alternatives possibles.

Les environnements interactifs (TSO pour IBM, IOF pour Bull) offrent des interfaces plus simples. L'utilisateur peut suivre le déroulement de son job par l'intermédiaire d'un terminal et décider de la suite des opérations au fur et à mesure que les alternatives se présentent.

Les demandes que l'utilisateur soumet au système à l'aide du langage de commande, sont interprétées par l'interpréteur de commandes (command interpreter). Celui-ci lit les commandes provenant du terminal et, après les avoir interprétées, fait parvenir les requêtes aux services appropriés. C'est ainsi que, si l'utilisateur commande une compilation, l'interpréteur en informe le scheduler, qui va créer un processus utilisant le compilateur demandé.

La plupart des langages de commande sont de type propriétaire car ils reflètent la structure interne de l'ordinateur. Ils ne peuvent que difficilement être changés. Cependant, dans le cas d'un

(15)

système d'exploitation ouvert comme Unix, l'interface constituée par l'interpréteur de commandes, appelée shell, peut être modifiée ou même remplacée par l'utilisateur, qui peut ainsi communiquer par un langage de son choix.

En effet, l'interpréteur ou shell ne fait pas partie du système d'exploitation Unix, comme d'ailleurs les éditeurs, assembleurs, compilateurs, éditeurs de liens, débogueur, ainsi que le système de fichiers. Tous ces programmes de service, aussi importants qu'ils soient, sont traités comme des programmes utilisateurs.

ALLOCATION DES RESSOURCES ET PLANIFICATION

SOUMISSION DES JOBS

Les systèmes actuels combinent les traitements batch et temps réel.

Dans un système à temps réel, tout job soumis à partir d'un terminal peut être contrôlé directement par l'utilisateur (mode de soumission nommé "Remote job entry"). Il peut, par exemple, décider de corriger des erreurs, recompiler et resoumettre le job pour exécution. Ce mode d'exploitation est particulièrement adapté à la phase de mise au point d'un programme, tandis que le mode batch ("Remote batch processing") est généralement utilisé pour des travaux de production et pour d'autres tâches non interactives.

ALLOCATION DES RESSOURCES

Les jobs sont lus et traduits au fur et à mesure de leur soumission par les utilisateurs puis rangés en leur attribuant les ressources demandées dans un fichier système sur disque ("spool":

Simultaneous Peripheral Operation On-Line).

Les mécanismes d'allocation d'une ressource particulière sont réalisés par le dispatcher, un des modules du moniteur.

Mais la stratégie de répartition et d'allocation des ressources doit être déterminée globalement pour tout le système.

Les objectifs de cette couche du système peuvent être ainsi résumés :

• permettre à chaque processus existant d'obtenir les ressources nécessaires dans des limites de temps raisonnables;

• exclure mutuellement les processus qui demandent une même ressource non- partageable et éviter les situations de blocage (attente sans fin d'une ressource par plusieurs processus).

• comptabiliser et fournir des statistiques sur l'exploitation des ressources principales;

LA PLANIFICATION

Le planificateur (scheduler) détermine l'ordre d'exécution des jobs soumis par les utilisateurs.

(16)

Sa fonction principale est d'assurer une exploitation équilibrée et, par conséquent, un service satisfaisant à tous les usagers. Il choisit le moment pour lancer une exécution et il refuse l'accès à un utilisateur interactif si le nombre d'utilisateurs connectés est tel qu'on peut craindre une dégradation inacceptable du temps de réponse.

Le moniteur procède à l'exécution des processus sur la base de critères de priorités attribuées par le planificateur.

LA GESTION DES ENTREES/SORTIES

Les entrées-sorties sont le domaine le plus délicat dans la conception et la réalisation d'un système d'exploitation. La gestion des entrées-sorties revêt une importance fondamentale, mais les procédures d'entrées-sorties utilisées par les ordinateurs actuels sont complexifiées par la grande variété des unités périphériques gérées.

QUELQUES ASPECTS DU PROBLEME

Les difficultés proviennent de causes matérielles et de facteurs objectifs, mais aussi du souci de gestion optimale des ressources et de simplification de la tâche de l'utilisateur. Voici quelques exemples :

• la diversité fonctionnelle des unités périphériques (imprimantes à laser, unités de disques magnétiques et optiques, cartouches magnétiques, etc.) ;

• l'énorme différence de vitesse entre les unités (de quelques caractères par seconde du clavier d'un terminal, à quelques millions de caractères transférés en une seconde par une unité de disques) ;

• la diversité de codage et de structure des informations échangées (ASCII, EBCDIC, binaire ; mots, octets, blocs) ;

• la différence entre les méthodes d'accès aux unités (accès séquentiel ou aléatoire : adressage complètement différent des unités de bande, de disques, ou des grandes mémoires d'archivage);

• la différence des conditions de partage des périphériques (une unité de disques peut être utilisée en même temps par plusieurs processus; l'écran d'un terminal peut être partagé entre des processus d'un même utilisateur tandis qu'une imprimante ne peut être partagée que dans le temps et par jobs entiers) ;

• la grande diversité des conditions d'erreur (erreur de parité, imprimante sans papier, erreur de positionnement d'une tête de lecture/écriture sur disque, unité déconnectée, erreurs d'adressage ou de format, etc.) ;

• la complexité des systèmes de liaison entre périphériques et unité centrale (DMA, canaux, bus, unités de commande, unités de télécommunications, etc.);

• le haut degré de parallélisme des opérations ;

(17)

• la nécessité de protéger les utilisateurs et de leur cacher les détails des opérations d'entrées-sorties, les idiosyncrasies (les réactions individuelles propres à chaque homme) des unités périphériques et les incidents de parcours ;

• la nécessité de rendre les programmes le plus possible indépendants des types de périphériques concernés (un même programme doit pouvoir recevoir des données d'une disquette, d'un disque dur ou d'une unité de bande ; doit pouvoir envoyer ses résultats sur l'écran d'un terminal ou à l'imprimante).

EVOLUTIONS TECHNOLOGIQUES

Une étape importante est franchie au milieu des années 60, elle suit une série de développements fondamentaux dans le domaine des entrées-sorties.

D'abord, l'arrivée sur le marché des tambours magnétiques mais surtout des unités de disques à des prix de plus en plus abordables. Ils offrent l'accès aléatoire et des capacités importantes; ce qui permet le stockage de tout programme d'application ou de système dans ces mémoires auxiliaires rapides.

Ensuite, l'introduction des canaux et du système d'interruption élimine la dépendance des E/S, qui peuvent désormais procéder en parallèle avec les traitements.

C'est le cas notamment des opérations d'entrée-sortie, strictement réservées au système d'exploitation et qu'il serait trop difficile et trop risqué de laisser effectuer par les utilisateurs. Dés que l'utilisateur doit faire une opération d'entrées-sorties, il fait appel à un ensemble de procédures spéciales (system calls), fournies par le système d'exploitation.

Ces procédures, tout en simplifiant la programmation des E/S, contiennent une requête au superviseur qui provoque le passage à l'état superviseur, permettant ainsi au système d'effectuer toute opération délicate ou dangereuse, sous sa responsabilité.

LA GESTION DES ENTREES/SORTIES

Le système d'exploitation réalise cette gestion en s'efforçant de traiter tous les périphériques de la même manière (périphériques virtuels, codification interne standard des caractères, etc.) et en confinant tous les traitements particuliers dans des modules spécialisés, appelés gestionnaires d'unité périphérique (device handlers, drivers).

La gestion des entrées-sorties est organisée autour de quatre modules :

• des modules standard (programmes de bibliothèque) utilisées par les applications et contenant des requêtes au superviseur provoquant le passage en mode privilégié ;

• des modules d'entrées-sorties indépendants des unités périphériques ;

• des drivers commandant chaque unité dans le détail ;

• des programmes de service des interruptions agissant en collaboration avec les fonctions du noyau.

(18)

L'utilisateur dispose d'un jeu d'instructions d'entrées-sorties virtuelles. Elles s'opposent aux instructions d'entrées-sorties machine, qui ne sont utilisées que par le système d'exploitation. Une instruction d'entrées-sorties virtuelle se présente, selon le langage de programmation utilisé, sous la forme d'un appel de procédure système (Read, Write, Print, etc.), contenant les arguments nécessaires (noms des variables ou des fichiers, taille, format, unité logique, etc.).

Au niveau de la compilation, ces instructions sont remplacées par les procédures système correspondantes, contenant des instructions privilégiées.

A l'exécution, le système d'exploitation est invoqué par l'activation d'une requête au superviseur.

Cette demande n'est pas nécessairement traitable immédiatement, le chemin d'accès à l'unité désirée pouvant être occupé par un autre transfert de données. Le système gère des files d'attente pour chaque type de ressource. A ce niveau, les entrées-sorties ne concernent pas encore des ressources physiques. On parle, par exemple, de canal logique, pour indiquer un processus exécutable par un canal physique.

Dés que le périphérique demandé est libre, et que l'on dispose d'une voie d'accès (canal, bus, contrôleur, etc.), le module spécifique à l'unité concernée (handler) est activé. Le handler est chargé des échanges avec ce type de périphérique. Il y a un handler par type de contrôleur de périphérique. Il s'occupe de l'initialisation, de la supervision (vérification de parité, traitement des erreurs, etc.) et de la terminaison correcte d'un transfert.

Dans certains cas, le système empêche l'accès direct à une unité. Par exemple, l'accès à des périphériques lents, tels les lecteurs de cartes ou les imprimantes, ne peut se faire que par l'intermédiaire de fichiers disques servant de tampons (technique de spooling).

Il y a aussi des questions de protection au niveau des entrées-sorties. Le système doit vérifier, par exemple, que les adresses virtuelles concernées par un échange sont converties en adresses réelles au moment de l'initialisation.

Il doit aussi s'assurer que l'attribution de ces adresses en mémoire n'est pas modifiée avant la fin de l'opération d'entrées-sorties (par exemple, en verrouillant les pages concernées).

LA GESTION DES FICHIERS

Les ordinateurs de première génération stockaient leurs fichiers sur cartes perforées. Avec l'arrivée des bandes magnétiques ces données furent recopiées sur ce support que l'on entreposait dans des bandothèques.

Dans les années 70, avec l'introduction des systèmes interactifs, il devint de plus en plus attrayant de stocker les fichiers sur des supports reliés en permanence à l'ordinateur. Les unités de disques, qui offraient en plus un accès quasi aléatoire, devinrent le lieu privilégié de stockage des fichiers.

Cette multiplication des besoins de stockage rendit de plus en plus impérieux la nécessité d'une gestion optimale des données.

(19)

Aussi le système d'exploitation s'est-il vu également confier la responsabilité de l'organisation des fichiers, de leur stockage sur un support matériel et de l'accès aux informations contenues dans les fichiers.

La fonction fondamentale d'un système de gestion de fichiers (file system) est d'établir un lien entre le modèle logique des données, avec lequel travaille l'informaticien (analyste et programmeur), et la réalité physique des dispositifs de stockage.

De manière primordiale, tout système de gestion de fichiers doit assurer une interface simple et conviviale pour l'utilisateur et que les fichiers soient protégés et leurs intégrités assurées.

Ses grandes fonctionnalités assurent :

• la création et la destruction de fichiers, et sa manipulation en supportant une variété d'opérations telles que la fusion, la concaténation, la subdivision,

la reproduction, etc. ;

• son identification par l'attribution d'un nom symbolique ;

• la protection d'accès aux fichiers selon les directives de ceux qui les ont créés et contre toute défaillance du matériel ou du logiciel ;

• l'offre de méthodes d'accès aux données efficaces et adaptées aux différentes applications (par exemple, accès séquentiel, direct, séquentiel indexé) ;

• le partage des fichiers ;

Du point de vue du concepteur/réalisateur, d'autres aspects du système sont extrêmement importants, par exemple :

• la gestion efficace de l'espace disque ;

• le choix et l'implantation d'un système de catalogage ;

• la manipulation des fichiers physiques de façon transparente pour l'utilisateur travaillant sur des fichiers logiques ;

• la mise en œuvre d'un système de sauvegarde acceptable, pour assurer l'intégrité des données ;

• la réalisation d'une certaine indépendance du matériel spécifique ;

• l'efficacité et la rapidité du système ;

• la protection des fichiers contre les erreurs des utilisateurs et du système et envers les accès non autorisés.

RAPPELS ET DEFINITIONS Fichier

(20)

Un fichier, dans l'environnement informatique, est une collection de données, d'informations enregistrées de façon à être lues et traitées par ordinateur, et qui représente une entité pour l'utilisateur.

Mais plus généralement et d'un point de vue système, on peut considérer tout entité codifiée comme un fichier, comme par exemple un programme source, un programme objet, des résultats, un texte, une collection d'images, etc.

Enregistrement logique

Un fichier est composé d'enregistrements logiques (logical record) regroupés par bloc (enregistrement physique).

Un enregistrement logique est un ensemble de données ayant un sens pour l'utilisateur et demeure l'unité de traitement des données du programme. Un enregistrement contient des zones (ou champ) significatives de stockage des données proprement dites (nom, identifiant, adresse, prix , etc.).

La notion d'enregistrement logique est indépendante du dispositif physique sur lequel est stocké le fichier. L'utilisateur organise ses données en enregistrements et en fichiers selon un dimensionnement prédéfini.

Enregistrement physique

L'enregistrement physique (bloc) est l'unité de stockage manipulée par le système.

Ces blocs physiques sont numérotés par le système et forment la base de toute structure de fichiers. Si le bloc est l'unité de stockage, le caractère (octet, byte) est, dans la plupart des cas, la plus petite quantité d'information manipulée par le système.

Vu par le système, un fichier est donc un ensemble de blocs de taille fixe, chaque bloc étant une suite de caractères.

Sur disque magnétique par exemple, et à cause de la nature et de la structure de ce support, la longueur des blocs est un multiple de la taille d'un secteur (512 octets en général).

L'enregistrement physique (bloc) est également l'unité d'échange entre la mémoire centrale et l'unité périphérique. Les enregistrements logiques sont en effet regroupés par bloc pour des raisons d'optimisation des E/S dont la multiplication est une source de lenteur au déroulement d'un programme.

On peut définir un enregistrement physique comme la quantité d'information d'un fichier transférée entre la mémoire principale et son support de stockage permanent.

(21)

ORGANISATION DE FICHIER CLASSIQUE

Les systèmes d'exploitation des gros ordinateurs comportent un gestionnaire de données (Ufas pour Bull, Vsam pour IBM) dont les fonctions assurent l'organisation et offrent des méthodes d'accès aux données sur les supports périphériques.

On distingue 3 grandes organisations :

• l'organisation séquentielle,

• l'organisation relative,

• l'organisation séquentielle indexée.

L'avantage de ses organisations est d'assurer une totale indépendance dans la gestion des données entre le niveau applicatif (l'utilisateur) et le niveau matériel, de telles sortes qu'un changement d'une unité de disque et de ses caractéristiques (nombre et densité des secteurs, des pistes, des cylindres, ...) n'implique pas une maintenance des programmes applicatifs correspondants.

En dehors de ses organisations, l'utilisateur à la possibilité de développer ces propres méthodes d'accès (généralement en langage assembleur) et connues sous le qualificatif d'organisation adressée.

Chaque organisation offre des méthodes d'accès :

• l'organisation séquentielle: méthode d'accès séquentielle ;

• l'organisation relative: méthodes d'accès séquentiel, directe et dynamique ;

• l'organisation séquentielle indexée: méthodes d'accès séquentiel, directe et dynamique.

L'accès séquentiel

En accès séquentiel, il est nécessaire lire tous les blocs précédant un bloc donné avant de pouvoir le traiter. Cette méthode n'utilise pas les possibilités d'adressage éventuelles du support.

L'accès direct

L'accès direct ou aléatoire permet d'obtenir un enregistrement quelconque quel que soit son emplacement sur disque, indépendamment des autres enregistrements à partir d'une clé d'accès (le plus souvent un identifiant). Cette méthode nécessite l'implantation du fichier sur un support adressable.

Dans ce type d'utilisation des fichiers (le plus souvent en télétraitement), le temps d'accès est une composante importante.

L'accès séquentiel indexé associe une clé à chaque enregistrement, et organise une table de correspondance (index) entre les clés et les numéros d'enregistrement (qui peuvent être les adresses physiques des blocs) ; une recherche sur l'index des clés, permet de trouver l'adresse de l'enregistrement.

(22)

L'accès dynamique

L'accès dynamique conjugue l'accès direct et l'accès séquentiel. Ce type d'accès est particulièrement adapté aux fichiers naturellement structurés en "sous-populations".

LA GESTION DES RESSOURCES DISQUES

Les disques magnétiques sont constitués d'un empilement de plateaux, appelé dispack.

Pour des raisons d'optimisation de temps d'accès, les fichiers sont implantés sur les pistes situées sur une même verticale. L'ensemble de ces pistes est appelé "cylindre".

En effet, le dispositif de lecture/écriture en forme de peigne évite des déplacements pour les données du fichier se situant sur le même cylindre.

Le gain de temps de positionnement des têtes n'est pas négligeable dans la mesure où il est l'ordre de plusieurs milli-secondes par rapport au temps de traitement interne de l'unité centrale (nano- seconde). Si le système identifie l'emplacement sur disque (numéro de cylindre, piste et secteur) de chaque fichier dans une table "répertoire des fichiers " (appelée "file directory", Vtoc, ...).

En fonction des traitements qui leur sont appliqués, les fichiers ont tendance à s'accroître, ce qui requièrt de gérer des extensions d'espaces.

Pour rechercher les extensions désirées, certains systèmes gèrent une table de pointeurs, contenant les indications nécessaires pour déterminer l'emplacement d'un bloc cherché. Il suffit de suivre l'enchaînement des blocs sur cette table, qui peut être transférée en mémoire centrale, où elle est traitée rapidement.

On peut gagner en flexibilité, si l'on adopte une structure de bloc, selon le modèle des listes chaînées : chaque bloc contient un pointeur indiquant l'emplacement du bloc suivant. Cette approche facilite les modifications et l'accroissement, mais alourdit la recherche d'un enregistrement, qui devient pratiquement séquentielle.

Un autre problème est celui de l'allocation de l'espace disque. Le système tient à jour des tables facilitant la recherche de secteurs disponibles. Un premier type de table donne des indications sur les suites de blocs contigus disponibles sur une unité. Un deuxième type de table associe un bit à chaque bloc physique d'une unité de disques, indiquant si le bloc est libre ou occupé.

PERFORMANCE

L’accès aux disques est beaucoup plus lent que l'accès à la mémoire centrale. Pour lire ou écrire un mot en mémoire, il faut quelques dizaines ou centaines de nanosecondes. Pour effectuer la même opération sur disque il faut compter des dizaines de millisecondes, ce qui fait 100.000 fois plus de temps. Il est donc important de minimiser le nombre d’accès disques nécessaires au traitement d'un fichier.

On peut accroître la performance du système si les blocs d'un fichier sont stockés dans des secteurs consécutifs d'une même piste ou, au moins, d'un même cylindre.

(23)

Pour des blocs fréquemment référencés, on utilise une technique, dite bloc cache, consistant à garder quelques blocs dans une zone mémoire utilisée de façon semblable au cache du CPU, avec, bien sûr, tous les problèmes que cela comporte.

Dans les cas des fichiers à fort taux de mise à jour comportant plusieurs extensions, il devient alors nécessaire de réallouer un nouvel espace fichier plus grand pour contenir l'intégralité des données.

Le système de gestion de fichier fournit un ensemble de données statistiques sur l'activité de chaque fichier.

SERVEURS DE FICHIERS

Une approche récente, de plus en plus répandue grâce à l'essor de l'informatique distribuée, consiste à confier à un ordinateur indépendant, toute la gestion des fichiers d'une communauté d'utilisateurs connectés à un réseau local. On appelle serveur de fichiers un tel ordinateur. Dans une telle architecture, la majeure partie de l'espace disque est concentrée autour du serveur, les autres machines du réseau n'ont pas besoin de capacité disque locale pour leurs fichiers.

Un autre développement récent, dû à l'intégration toujours plus poussée des ordinateurs et des réseaux, est celui des systèmes de fichiers dispersés dans un réseau (network file system).

L'ordinateur de stockage de ses fichiers n'est pas connu de l'utilisateur. Dés qu'une requête d'accès parvient au système des fichiers, celui-ci détermine la position du fichier cherché et, en utilisant les services du réseau, en fait parvenir une copie au demandeur.

LA GESTION DES SECURITES

La gestion de la sécurité revêt principalement deux aspects.

Le premier concerne la protection des données et des programmes. Le second aspect relève de l'organisation interne des utilisateurs, des ressources qui leurs sont attribuées et des droits d'accès qui leur sont attachés.

En confiant de plus en plus de données aux systèmes d'informations, en les mettant à la disposition d'un nombre croissant d'utilisateurs via des connexions en réseau, les sites informatiques deviennent de plus en plus exposés aux connexions malveillantes.

Les systèmes d'exploitation sont exposés aux attaques des intrus, pirates et autres "hackers", cherchant à accéder aux données confidentielles d'une entreprise, d'une organisation civile ou militaire.

C'est pourquoi les systèmes d'exploitation sont dotés d'une quantité de techniques et d'outils mis au point, pour mieux protéger les données et les programmes.

Mais beaucoup reste encore à faire pour rendre les systèmes informatiques moins vulnérables face notamment à l'ingéniosité des intrus.

(24)

Tous les utilisateurs, les projets (applications) auxquels ils sont rattachés ainsi que les ressources privatives (bibliothèques JCL, de programme, fichiers, etc ...) qui leurs sont attribuées sont mémorisés dans un fichier système dénommé "Catalogue".

LE CATALOGUE

Le catalogue recense les données d'identifications relatives aux projets, aux utilisateurs qui y sont rattachés, à leur ressources privatives et à leur droits d'accès et priorité d'exploitation.

Le projet constitue l'élément central du catalogue. Un projet est associé à des utilisateurs identifiés, à un numéro comptable et à un ensemble de ressources privatives (bibliothèques JCL, de programme, fichiers, etc. ...). En associant un objet de facturation à un projet, le système d'exploitation est à même de fournir des information de comptabilité analytique quant aux coûts de fonctionnement de chaque application.

Le catalogue permet également de réglementer les droits d'accès et de priorité à l'ensemble des ressources de l'ordinateur.

On peut concevoir des catalogues sur un seul niveau, contenant donc les noms de tous les fichiers gérés par le système, ou sur deux niveaux, c'est-à-dire un catalogue système contenant des pointeurs vers les catalogues utilisateurs.

Une structure mieux adaptée aux exigences actuelles est celle prévoyant plusieurs niveaux, permettant ainsi à chaque utilisateur d'organiser ses fichiers de façon hiérarchique.

Le système Unix permet une organisation arborescente des fichiers et des catalogues. Ces derniers sont considérés comme les autres fichiers. L'inconvénient d'un tel système est la longueur du chemin d'accès à un fichier particulier.

En général, le catalogue contient, pour chaque utilisateur, le nom de tous les fichiers qui lui appartiennent et pour chaque fichier les informations suivantes :

• son nom symbolique ;

• le type du fichier (caractère, binaire, exécutable, etc.) ;

• les bits de protection d'accès (lecture, écriture, exécution, etc.) ;

• la taille en blocs ;

• l'adresse du fichier sur disque: cette information dépend du système de stockage (adresse du premier bloc pour les listes, adresse de la table des pointeurs, etc.) ;

• la date de création et celle de la dernière manipulation.

Le catalogue est lui-même un fichier, stocké sur disque, accessible aux utilisateurs seulement en lecture, et mis à jour par le système.

Dans les systèmes arborescents, les catalogues peuvent être éclatés sur plusieurs niveaux, mais leur fonction et leurs restrictions d'accès ne changent pratiquement pas.

(25)

INTEGRITE ET SAUVEGARDE

Etant donné que l'utilisateur dépend du système de fichiers pour tout ce qui concerne son travail et ses données, il est essentiel que le système soit doté de mécanismes de sauvegarde, permettant l'éventuelle reconstitution des fichiers perdus lors d'un accident du matériel ou du logiciel.

Parmi les méthodes communément utilisées, nous citerons :

• la sauvegarde complète (backup), consistant à recopier sur bande magnétique (ou cartouche, cassette) les fichiers disque selon une fréquence déterminée. En cas d'accident, on peut reconstituer, par une opération inverse la restauration, les fichiers tels qu'ils étaient au moment du dernier backup ;

• la sauvegarde incrémentale, permettant de recopier seulement les informations modifiées après le dernier backup. Cette approche permet de réduire la fréquence des backups massifs (par exemple une fois par semaine ou par mois). En cas de besoin de reconstruction de fichiers, les procédures sont plus complexes ;

• le doublement systématique des fichiers sur disque, consistant à garder toujours deux copies de chaque fichier sur deux unités disques différentes. Cette méthode exige moins d'interventions de la part des opérateurs, mais implique que l'espace disque disponible soit doublé ;

• la technique de la "journalisation" utilisée surtout en matière de télétraitement dans laquelle tous les mouvements de mise à jour affectant un fichier sont sauvegardés.

Dans le cas d'un incident disque, il est alors possible de reconstituer le fichier dans le dernier état où il se trouvait en appliquant l'ensemble des mouvements de mise à jour à la dernière sauvegarde effectuée ;

• les technologies "Raid".

Avec la croissance spectaculaire de la capacité disque, le problème de la sauvegarde des fichiers est devenu très important et très complexe. Les ordinateurs passent un temps considérable à faire des copies des informations qui leur sont confiées. Même si la fiabilité du matériel s'accroît continuellement et que les pannes se font de plus en plus rares, on n'est pas à l'abri d'une mauvaise surprise. Il arrive qu'une tête de lecture/écriture touche la surface du disque (head crash) et ne l'abîme irrémédiablement, ou qu'un "bug" dans le système provoque la destruction d'un catalogue.

Il devient impérieux de préserver des données irremplaçables afin d'éviter que des années de travail ne soient perdues.

Actuellement les serveurs de fichiers, les systèmes d'archivage sur cassettes magnétiques ou disques optiques, et le logiciels adaptés permettent de résoudre ce problème de façon plus simple, plus économique et plus automatique.

(26)

A QUOI SERVENT LES SAUVEGARDES ?

Un système d'information même fiable et récent n'est jamais à l'abri d'une défaillance matérielle ou logicielle, d'une erreur humaine, d'un acte de malveillance, d'une infection virale, d'une panne de courant, d'un vol, d'un sinistre (incendie, dégât des eaux, foudre, …), etc.

Le destin du système est de tomber en panne. Ce n'est qu'une question de temps.

Le problème de la restauration des données se pose toujours après réparation du système. Ceci montre l'importance qui doit être accordée à la sauvegarde des données.

Afin de limiter les risques, tout doit être mis en œuvre pour éviter la perte des données et garantir leur disponibilité et leur intégrité, en établissant une procédure systématique de sauvegarde.

Il est primordial de ne pas sous-estimer l'importance des données des utilisateurs et de garder à l'esprit les conséquences liées à leur disparition. Les règles élémentaires de sécurité informatique imposent l'élaboration d'une stratégie de sauvegarde. Celle-ci nécessite une planification allant de la sélection du matériel de sauvegarde à la détermination du schéma de sauvegarde.

La sauvegarde consiste à enregistrer les données vitales sur un support généralement autre que le(s) disque(s) se trouvant à l'intérieur de l'ordinateur. Elle se fait principalement sur des unités amovibles.

LES DIFFERENTS SUPPORTS DE SAUVEGARDE

De la simple disquette au disque optique ou aux bibliothèques de sauvegarde, le choix ne manque pas. On s'y perd allègrement d'autant que les technologies évoluent sans cesse...

Tout dépendra une fois encore du budget que vous comptez accorder à votre système de sauvegarde…

Malgré tout, la fiabilité et la capacité des supports restent un choix des plus objectifs.

Voici un tableau non exhaustif qui vous présente les types de supports les plus connus ainsi que leurs caractéristiques principales :

Nom Capacité Débit Technologie Fiabilité

Disquette de 1,44Mo à 2,88Mo jusqu'à 0,5Mo/s Magnétique La plus faible

ZIP 2 formats disponibles : 100Mo ou 250 Mo

de 0,6Mo/s (port parallèle) à 2,4 Mo/s (en ATAPI interne pour le modèle 250)

Magnétique Peu fiable

JAZZ 2 formats disponibles :

1Go ou 2Go de 5,5Mo/s à 8Mo/s Magnétique Peu fiable

Disque Dur Plusieurs Go

selon interface

(IDE ou SCSI et technologie associée)

Magnétique Assez fiable

QIC : Quarter Inch Cartridge

de 250Mo à 8Go

(compressé) jusquà 0,8Mo/s Magnétique Assez Fiable

DAT : Digital Audio

Tape de 2 à 24 Go (selon lecteur) 1,5Mo/s

taux de compression de 2 pour 1. Magnétique

Assez bonne fiabilité usure assez rapide : 2000h pour les têtes et 20000 passages pour les bandes DDS : Digital Data

Storage

(évolution du DAT)

jusqu'à 40 Go jusqu'à 4,7Mo/s Magnétique

Bonne fiabilité

(bandes garantie sans erreur au contraire du DAT)

DLT : Data Linear Tape 10 Go en natif 3Mo/s

taux de compression de 2 pour 1 Magnétique Bonne fiabilité usure moins rapide :

Références

Documents relatifs

Réalisez un classement alphabétique en tenant compte, uniquement, de l’initiale des rubriques et à l’intérieur de chacune des lettres de l’alphabet, attribuez un numéro à

Il y a plus d'attributs communs entre le chien et la poule (yeux, bouche ; squelette interne ; 4 membres) qu'avec le poisson (yeux, bouche ; squelette interne mais il ne possède pas

8 La contribution de Barbara Morovich met ensuite en scène les processus de construction du récit mémoriel dans les quartiers où l’habitat, et non plus l’usine, est la cible

souples 8 pouces et 5,25 pouces sont données en millimètres (fig. Un trou pratiqué dans le mylar et dans l'enveloppe de pro- tection et appelé trou d'index per- met de repérer

C’est en fonction du contexte (l’ensemble des mots qui l’accompagnent) que l’on peut identifier le sens dans lequel il est employé.. Exemple : Cet explorateur a parcouru la terre

Votre Commission, Monsieur le Président, Mesdames et Messieurs les parlementaires s’inscrit dans cette recherche de la vérité, elle devrait avoir le courage de reconnaître que

Les entrées sont les données envoyées par un périphérique (disque, réseau, clavier…) à destination de l'unité centrale ;.. • Les sorties sont les données émises par

[r]