TP Info GR 1
TP Info GR 1
TP Info GR 1
Le SE soustrait le matériel au regard du programmeur et offre une présentation agréables des fichiers.
Un SE a ainsi deux objectifs principaux:
• Présentation: il propose à l’utilisateur une abstraction plus simple et plus agréable que le
matériel: une machine virtuelle.
• Gestion: il ordonne et contrôle l’allocation des processeurs, des mémoires, des icônes et
fenêtres, des périphériques, des réseaux entre les programmes qui les utilisent. Il assiste les
programmes utilisateurs. Il protège les utilisateurs dans le cas d’usage partagé.
Les premiers systèmes d’exploitation ont été créés dans les années 1960.
L’histoire des systèmes d’exploitation est fortement liée à celle des ordinateurs. Les premières
générations d’ordinateur ont apparu dans les années 1945_1955, ne comportaient pas de système
d’exploitation. Dans ces ordinateurs équipés des tubes à vide, le programme manipulait les ressources
matérielles de l’ordinateur sans passer par un intermédiaire ; l’ordinateur était utilisé par une personne
à la fois : la tache de l’operateur consistait à placer des piles des cartes perforées dans le lecteur où
chaque carte comportait des instructions d’un programme ou des données. Les ordinateurs à tubes à
vides de cette génération n’avaient qu’une faible puissance de calcul. Ils étaient volumineux, peu
commode et peu faibles(les tubes à vides grillaient souvent).
APERÇU
Pour qu’un ordinateur soit capable de faire fonctionner un programme informatique (appelé parfois
application ou logiciel), la machine doit être en même capable d’effectuer un certain nombre
d’opération préparatoires afin d’assurer les échanges entre microprocesseur, la mémoire, et les
ressources physiques ou périphériques (comme clavier, souris, moniteur).
Historique
Les premiers ordinateurs ont apparu dans les années 40 et avaient des fonctionnalités très limitées,
dépendantes de l’homme, et à des vitesses très lentes.
L’arrivée des transistors et des cartes perforées dans les années 60 a marqué le début de systèmes
d’exploitation, permettant une meilleure gestion de l’ordinateur et beaucoup plus de souplesse de
calcul.
Historiquement, on peut dire que les SE sont vraiment nés avec les ordinateurs de la 3 ème génération
(ordinateurs à circuits intégrés apparus après 1965). Le premier SE digne de ce nom est l'OS/360, celui
des IBM 360, famille unique de machines compatibles entre elles, de puissances et de configurations
différentes. Bien que son extrême complexité (due à l'erreur de couvrir toute la gamme 360) n'ait
jamais permis d'en réduire le nombre de bogues, il apportait deux concepts nouveaux :
Au MIT4, F.J. CORBATO et son équipe ont réalisé dès 1962, sur un IBM 7094 modifié, le premier
SE expérimental à temps partagé (mode interactif entre plusieurs utilisateurs simultanés), baptisé
CTSS. Une version commerciale, nommée MULTICS5, a été ensuite étudiée par cette équipe, les Bell
Laboratories et General Electric. Les difficultés ont fait que MULTICS n'a jamais dépassé le stade
expérimental sur une douzaine de sites entre 1965 et 1974. Mais il a permis de définir des concepts
théoriques importants pour la suite.
La technologie à base de circuits intégrés de la 3ème génération d'ordinateurs a permis l'apparition des
mini-ordinateurs et leur diffusion massive (précédant celle des microordinateurs).
En 1968, l'un des auteurs de MULTICS, Ken Thompson a effectué une adaptation de MULTICS
mono-utilisateur sur un mini-ordinateur PDP-11 de DEC inutilisé dans son Laboratoire des Bell
Laboratories. Son collègue Brian Kernighan la nomma UNICS (Uniplexed - à l'opposé de Multiplexed
- Information and Computer Service), qui devint ensuite UNIX. En 1972, son collègue
Dennis Ritchie traduisit UNIX en C, langage qu'il venait de mettre au point avec Kernighan... L'ère
des grands SE avait commencé.
1 Job Control Language
2 Unité centrale
3 Direct Memory Access
4 Massachusetts Institute of Technology
5 MULTiplexed Information and Computing Service
Le premier OS à marquer de son empreinte l’histoire de l’informatique est apparu en 1969 sous le nom
de linux, OS sur lequel est fondé aujourd’hui l’IOS d’Apple. On citera aussi Apple DOS 3.1(78),
MSDOS(81), Mac Intish OS1(84), Microsoft Windows 1(85), Linux 0.01(91).
On notera aussi l’OS Androïde fondé sur le noyau Linux. Il était destiné initialement aux appareils
photos numériques mais fut de suite proposé gratuitement aux fabricants de téléphones mobiles, libres
à eux d’ajouter une surcouche à l’OS Androïde.
Mono tâches_multitâches
Graphique_non graphique
Monoprocesseur_multiprocesseur
Client-serveur
8_16_32_64 bits
Les interruptions
Une interruption est une commutation du mot d'état provoquée par un signal généré par le matériel. Ce
signal est la conséquence d'un événement interne au processus, résultant de son exécution, ou bien
extérieur et indépendant de son exécution. Le signal va modifier la valeur d'un indicateur qui est
consulté par le SE. Celui-ci est ainsi informé de l'arrivée de l'interruption et de son origine. A chaque
cause d'interruption est associé un niveau d'interruption. On distingue au moins 3 niveaux
d'interruption :
les interruptions externes : panne, intervention de l'opérateur, ....
les déroutements qui proviennent d'une situation exceptionnelle ou d'une erreur liée à
l'instruction en cours d'exécution (division par 0, débordement, ...)
les appels système
NB : UNIX admet 6 niveaux d'interruption : interruption horloge, interruption disque, interruption
console, interruption d'un autre périphérique, appel système, autre interruption.
Les ressources
On appelle ressource tout ce qui est nécessaire à l'avancement d'un processus (continuation ou
progression de l'exécution) : processeur, mémoire, périphérique, bus, réseau, compilateur, fichier,
message d'un autre processus, etc... Un défaut de ressource peut provoquer la mise en attente d'un
processus.
Un processus demande au SE l'accès à une ressource. Certaines demandes sont implicites ou
permanentes (la ressource processeur). Le SE alloue une ressource à un processus. Une fois une
ressource allouée, le processus a le droit de l'utiliser jusqu'à ce qu'il libère la ressource ou jusqu'à ce
que le SE reprenne la ressource (on parle en ce cas de ressource préemptif, de préemption).
On dit qu'une ressource est en mode d'accès exclusif si elle ne peut être allouée à plus d'un processus à
la fois. Sinon, on parle de mode d'accès partagé. Un processus possédant une ressource peut dans
certains cas en modifier le mode d'accès. Exemple : un disque est une ressource à accès exclusif (un
seul accès simultané), une zone mémoire peut être à accès partagé.
L'ordonnancement
Dans un système d'exploitation, il est courant que plusieurs processus soient simultanément prêts à
s'exécuter. II faut donc réaliser un choix pour ordonnancer dans le temps les processus prêts sur le
processeur, qui est dévolu à un ordonnanceur.
Pour les systèmes (le traitement par lots. l'algorithme d'ordonnancement est relativement simple,
puisqu'il consiste à exécuter le programme suivant de la file dès qu'un emplacement se libère dans la
mémoire de l'ordinateur (multi programmation).
Pour les systèmes multi-utilisateurs, mufti-tâches, et multiprocesseurs. L’algorithme
d'ordonnancement peut devenir très complexe.
Le choix d'un algorithme d'ordonnancement dépend de l'utilisation que l'on souhaite faire de la
machine. Et s'appuie sur les critères suivants:
équité : chaque processus doit pouvoir disposer de la ressource processeur; efficacité:
l'utilisation du processeur doit être maximale.
temps de réponse : il faut minimiser l'impression de temps de réponse pour les utilisateurs
interactifs.
temps d'exécution : il faut minimiser le temps d'exécution pris par chaque travail exécuté en
traitement par lots.
rendement : le nombre de travaux réalisés par unité de temps doit être maximal.
Le système de gestion de fichiers
Le stockage persistant, rapide, et fiable de grandes quantités de données (et de petites !) est un critère
déterminant de l'efficacité d'un système d'exploitation.
La gestion de la mémoire
Plus que la ressource processeur, la mémoire constitue la ressource la plus critique des systèmes
d'exploitation. Dont le mésusage peut avoir des effets dramatiques sur les performances globales du
système.
Les fonctionnalités attendues d'un gestionnaire efficace de la mémoire sont les suivantes :
connaître les parties libres de la mémoire physique.
allouer de la mémoire aux processeurs, en évitant autant que possible le gaspillage.
récupérer la mémoire libérée par la terminaison d'un processus.
offrir aux processus des services de mémoire virtuelle, de taille supérieure à celle de la
mémoire physique disponible, au moyen des techniques de va-et-vient et de pagination.
Le gestionnaire de mémoire : La mémoire est une ressource importante qui doit être gérée
avec prudence. Le moindre microordinateur a, dès la fin des années 1980, dix fois plus de
mémoire que l'IBM 7094, l'ordinateur le plus puissant du début des années soixante. Mais la
taille des programmes augmente tout aussi vite que celle des mémoires.
STRUCTURE INTERNE
Les systèmes monolithiques : Andrew Tanenbaum appelle système monolithique (d'un seul
bloc) un système d'exploitation qui est une collection de procédures, chacune pouvant à tout
moment appeler n'importe quelle autre procédure, en remarquant que c'est l'organisation
(plutôt chaotique) la plus répandue.
Systèmes à modes noyau et utilisateur : Dans beaucoup de systèmes d'exploitation, il existe
deux modes : le mode noyau et le mode utilisateur. Le système d'exploitation démarre en
mode noyau, ce qui permet d'initialiser les périphériques et de mettre en place les routines de
service pour les appels système, et commute ensuite en mode utilisateur. En mode utilisateur,
on ne peut pas avoir accès directement aux périphériques : on doit utiliser ce qu'on appelle des
appels système pour avoir accès à ce qui a été prévu par le système : le noyau reçoit cet appel
système, vérifie qu'il s'agit d'une demande valable (en particulier du point de vue des droits
d'accès), l'exécute, puis renvoie au mode utilisateur. Le mode noyau ne peut être changé que
par une compilation du noyau ; même le super-utilisateur agit en mode utilisateur.
Systèmes à couches : Les systèmes précédents peuvent être considérés comme des systèmes à
deux couches et être généralisés en systèmes à plusieurs couches : chaque couche s'appuie sur
celle qui lui est immédiatement inférieure. Le premier système à utiliser cette technique a été
le système THE développé au Technische Hogeschool d'Eindhoven (d'où son nom) aux Pays-
Bas par Diskstra (1968) et ses élèves. Le système d'exploitation Multics, à l'origine d'Unix,
était aussi un système à couches.
Systèmes à micronoyau : Les systèmes d'exploitation à base de micronoyau ne possèdent
que quelques fonctions, en général quelques primitives de synchronisation, un gestionnaire
des tâches simple, et un mécanisme de communication entre processus. Des processus système
s'exécutent au-dessus du micronoyau pour implémenter les autres fonctions d'un système
d'exploitation, comme l'allocation mémoire, les gestionnaires de périphériques, les
gestionnaires d'appels système, etc. Le système d'exploitation Amoeba de Tanenbaum fut l'un
des premiers systèmes à micronoyau.
Systèmes à modules : Un module est un _chier objet dont le code peut être lié au noyau (et en
être supprimé) en cours d'exécution. Ce code objet est en général constitué d'un ensemble de
fonctions qui implémente un système de fichiers, un pilote de périphérique, ou toute autre
fonctionnalité de haut niveau d'un système d'exploitation. Le module, contrairement aux
couches externes d'un système à base de micronoyau, ne s'exécute pas dans un processus
spécifique. Il est au contraire exécuté en mode noyau au nom du processus courant, comme
toute fonction liée statiquement dans le noyau.
1. AmigaOS,
2. AROS,
3. Bada (système destiné aux PDA),
4. Coherrent,
5. Google Chrome OS,
6. Jolicloud,
7. Linutop,
8. LynxOS,
9. Minix,
10. SmartOS,
11. TempleOS,
12. ZETA,
13. TvOS,
14. Tizen,
15. Firefox OS,
16. WebOS,
17. Hyperpanel OS,
18. Android TV,
19. UBUNTU TOUCH,
20. BlackBERRY OS,
21. Windows Phone
22. SYMBIAN
23. PALM OS
CONCLUSION
La complexité des systèmes d’exploitation est grande, elle résulte tant du nombre et de la taille des
programmes impliqués que de la multiplicité des processus de leurs interactions. L’homme cherchant
toujours à progresser, il ne laisse pas statique ses inventions tout comme les systèmes d’exploitation.
Aujourd’hui on continue à développer de nouveaux systèmes, tout en recherchant l’augmentation de
leur sureté de fonctionnement et la stabilité de ce dernier. Pour cela, on commence à utiliser des
techniques automatiques de certification de programme.