Chap3 - Structure des systèmes d`exploitation

publicité
Structure des Systèmes Informatiques
Chapitre 3
Beaucoup de choses dans ce chap. du manuel sont
faciles à lire et ne je les discuterai pas en classe
(donc, pas matière d’examen).
Nous reviendrons sur plusieurs de ces concepts.
Section 3.8 sera discutée dans les sessions exercices.
http://w3.uqo.ca/luigi/
1
Concepts importants du Chapitre 3




Responsabilités et services d’un SE
Le noyau
Appels du système (system calls)
Communication entre processus
 Messagerie


Ch.3
et mémoire partagée
Structure à couches
Machines virtuelles
2
Gestion de processus et UCT


Un processus=tâche est un programme en
exécution
Le SE est responsable pour:

création, terminaison des processus


chargement en mémoire, exécution (load, run …)
allocation de ressources aux processus

mémoire, périphériques
exécution des ops d’E/S
 suspension, reprise des processus
 synchronisation, communication


Ch.3
entre processus
Le SE intervient pour chacun de ces besoins
3
Gestion de mémoire principale (RAM)

Le SE est responsable pour:
 savoir
quels processus utilisent quelles parties
de la mémoire
 allouer la mémoire quand elle est demandée si
elle est disponible
 libérer la mémoire quand un processus n’en a
plus besoin

Ch.3
Parfois c’est le système d’exécution des langages de
programmation qui gère la mémoire en détail (Ex.: Java)
4
Autres services importants


Ch.3
Protection de ressources
Comptabilité, p.ex. pour charger les
usagers payants
5
Noyau (kernel) et appels de système
Ch.3
6
Le noyau (kernel) du SE





Ch.3
La partie résidente (toujours en mém. principale) du SE est
appelée Kernel = noyau
Les autres parties sont amenées en mém. principale au
besoin
Kernel contient les fonctionnalités critiques du SE: elles
doivent toujours être prêtes à l’utilisation
 traitement d’interruptions
 gestion de UCT
 gestion mémoire principale
 communication entre processus
 etc., nous verrons
À part ça, quoi exactement mettre dans le kernel est une
question pour les concepteurs des SE
Presque toutes les fonctionnalités discutées dans ce cours
sont dans le kernel
7
Appels du système

L’interface entre un processus et le SE
 directement
disponibles dans un shell UNIX ou
dans un command prompt MS-Windows
 aussi dans les langages de programmation
`bas niveau` (assembleur)
 ils sont cachés dans les langages de haut
niveau (C, Java...)
Ch.3
8
Appels de systèmes pour interpréter le
commandes (Unix, Linux ou MS-Windows)
Configuration de
mémoire hypothétique
En Unix, le command interpreter (shell) peut exécuter des programmes
pour démarrer et charger différents processus en mémoire, exécutant
des appels de système appropriés (fork, exec).
Ch.3Détails dans sessions exercices.
9
Deux modèles de communication entre
processus par appels de système
a) transfert de messages entre processus (message passing)
- utilisant le service de messagerie offert par le noyau
b) à travers mémoire partagée entre processus (shared memory)
Ch.3
10
Messagerie et mémoire partagée

Messagerie:
 Les processus doivent établir une connexion entre processus

appels de système open connection, accept connection, close connection,
read/send message
les processus s’envoient des messages utilisant des
identificateurs de processus préalablement établis
Mémoire partagée
 les processus doivent établir des zones de communication
entre eux
 les processus doivent mutuellement synchroniser leur accès
a cette zone



Ch.3
Pour ceci, il font appel au SE (Chap. 7)
11
Programmes système (compilateur, assembleur, éditeur …)
kernel
Pas partie du kernel, en augmentent la fonctionnalité.
Voir discussion et exemples dans le manuel
Ch.3
12
Partage de responsabilités entre programmes
de systèmes et noyau

Ch.3
C’est une décision de conception de SE de décider quelles
fonctionnalités doivent être implémentées dans le kernel, et
quelles dans les programmes de système.
13
Concept de Microkernel: le plus petit possible
(Linux, mais pas Windows)
https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27exploitation
(consulté sept 2016)
Ch.3
14
Fonctionnalités qui doivent forcément être dans le noyau

Elles sont les fonctionnalités dont tout
processus a besoin, inclus les processus
du noyau!




Ch.3
traitement d’interruptions, inclus E/S
gestion de UCT
gestion mémoire principale
communication entre processus
15
Structure à couches
Ch.3
16
Structure à couches dans les SE modernes


Ch.3
Un SE est divisé dans un certain nombre de
couches, bâties les unes sur les autres
 la couche la plus basse communique avec le
matériel
 la plus élevée est l’interface usagers
Les couches supérieures utilisent les
fonctionnalités fournies par les niveaux inférieurs
17
Couches dans logiciels
Couche n+1
Utilise les services de la couche n et
fournit des services à la couche n+2
Couche n
Utilise les services de la couche n-1 et
fournit des services à la couche n+1
Couche n-1
Utilise les services de la couche n-2 et
fournit des services à la couche n
Ch.3
INF6001 Chap 1
Services = fonctionnalités
En pratique, les services seront des méthodes
ou fonctions
18
Structure à couches, variations


Ch.3
opérations créées par une couche et rendues disponibles à la
prochaine couche seulement (cachées aux autres couches)
opérations créées dans une couche pour plusieurs couches
supérieures
19
Structure à couches, variations

Opérations qui contournent une couche

Ch.3
À éviter en principe, mais on le fait ….
20
L’autre possibilité serait la structure réseau

Plus difficile à gérer, à cause des nombreuses
interfaces et relations possibles
À couches
Ch.3
Réseau
21
Avantages, désavantages de suivre fidèlement une
structure en couches

Avantages:
Chaque couche ne doit connaître que les
fonctionnalités fournies par la couche sous-jacente
 Chaque couche ajoute ses propres fonctionnalités
 Les erreurs peuvent plus facilement être isolés dans
une couche spécifique



Désavantages:


Pas efficace car un appel des programmes usager à
des ressources du matériel implique autant d’appels
qu’il y a des couches intermédiaires
Excellent principe, pas toujours fidèlement suivi

Ch.3
Maison construite un étage à la fois… poser l’étage n
seulement quand l’n-1 est solide
Pour des raisons d’efficacité
22
Structure de système - Approche simple

MS-DOS (1982) - cherchait à obtenir une
fonctionnalité maximale avec des ressources
limitées

pas bien modularisé


accès direct aux périphériques (écran, etc.) permis aux
programmes d`application


manque de séparation claire entre couches
manque de contrôles, vulnérabilité
malheureusement, il fut adapté à des fonctionnalités
plus complexes... Systèmes très instables
DOS fut la première version de Windows et une grande
partie de l’histoire de Windows a été un effort de dépasser
les limitations de MS-DOS
 Jusqu’à Windows NT  Windows XP
 Enfin, des systèmes plus fiables

Ch.3
23
Couches du MS-DOS (premiers systèmes Microsoft)
Ch.3
24
Structure UNIX  LINUX (1970  1991 … )


Multi-tâches, multi-usagers depuis le début
Distinction claire entre:
programmes du système
 noyau




Ch.3
tout ce qu’il y a entre l’interface des appels de système et
le matériel.
Plus modulaire et protégé que MS-DOS
Plus tard, évolution vers le concept de microkernel (Linux)
25
noyau
Structure UNIX: trois couches principales
Ch.3
26
Autre figure pour Linux
A. Rubini and J. Corbet. Linux Device Drivers.
Sebastopol, CA: O'Reilly & Associates, 2d ed., 2001.
Online version at http://www.oreilly.com/catalog/linuxdrive2/index.html.
Ch.3
27
Systèmes d’exécution de langages:
couches entre le langage usagers et le SE

Chaque langage de programmation repose sur
 Des compilateurs
 Des ‘systèmes d’exécution’ (run-time systems) qui
rendent possible l’exécution de programmes après
compilation
P.ex. le système d’exécution Java se préoccupe de gérer
la mémoire pour les programmes Java
 Gérer les appels de sous-programmes ou méthodes, etc.


Les systèmes d’exécution ne sont pas partie du
SE

Ch.3
Mais en utilisent les fonctionnalités, qui donc sont
cachées aux usagers
28
Java run-time system
Code Java compilé
Java run-time system
Couches du SE
Ch.3
29
Machines Virtuelles
Ch.3
30
Machines virtuelles: le problème et la solution





Ch.3
Comment permettre de rouler différents SE
sur une seule machine physique?
Pas évident, car chaque SE demande
accès direct au matériel
SOLUTION: Un programme qui crée une
couche qui met à disposition plusieurs
machines virtuelles
Chaque machine virtuelle se comporte
comme une machine physique séparée
Sur chacune, nous pouvons rouler un SE
différent
31
Machines Virtuelles



Virtuel en informatique dénote quelque chose qui
n ’est pas réel, n’est pas du matériel: il est
construit par le logiciel sur la base des
ressources fournies par le matériel
Une machine virtuelle est une machine créée par
des couche de logiciel
Elle peut avoir des caractéristiques identiques à la
machine physique du système:


Ou elle peut ‘simuler’ une autre machine physique


Ch.3
mêmes instructions, etc.
p.ex.pour exécuter Microsoft sur Apple
Plusieurs machines virtuelles peuvent être créées
sur une machine physique donnée!
32
(a) Une seule mach. réelle et un seul noyau
(b) plus. mach. virtuelles et plus. noyaux
Ch.3
33
Fonctionnement typique


Ch.3
Le système VM laisse exécuter normalement les instructions
non privilégiées
 Mais les adresses des instructions doivent être modifiées
pour les renvoyer à la zone de mémoire de la VM appropriée
Les appels au système sont exécutés par le système VM et
les résultats sont passés à la machine virtuelle sur laquelle
le processus exécute
34
Modification d’adresses

Dans l’UCT il y a un registre qui renvoie de fois en
fois les adresses de chaque instruction de
programme à la machine virtuelle pour laquelle
l’UCT est en train d’exécuter
OP REG
ADR
VM1
+
REGISTRE
VM2
Ch.3
De cette manière, un seul programme
peut être exécuté par plus. machines
virtuelles
35
Avantages

Plusieurs machines virtuelles peuvent être obtenues à partir d’une
seule machine physique:



Chaque machine virtuelle peut utiliser un SE différent
Utile à fins d’expérimentation:


Ch.3
Des nouvelles machines virtuelles peuvent être créés sur requête d’usagers
Un nouveau SE ou une nouvelle application peuvent être développés sur une
machine virtuelle sans affecter les autres
Protection complète, car les machines virtuelles sont isolées les
unes des autres (théoriquement)
36
Architecture VMWare: ici le virtualisateur n’es pas directement
sur le matériel, il est sur Linux
Ch.3
37
Implémentations


MAC, LINUX et autres permettent de rouler
Windows sur leur plateforme
Ils doivent fournir à Windows un
environnement que Windows reconnaît
comme son environnement matériel usuel
 Normalement,

Ch.3
environnement INTEL
Pareillement, Windows peut supporter
d’autres SE
38
Simulateur: un concept différent
Applications
Windows
Applications
Apple MAC
Windows
Simul. Intel
MAC OS
PC SUN Microsystems
Dans le cas précédent, toutes les machines étaient basées sur le même
matériel, les mêmes instructions
Ici, les instructions Intel doivent être simulées une par une dans
l’environnement Apple-MAC
Ch.3
39
Différence entre virtualisateur et simulateur

Un virtualisateur permet de rouler
plusieurs SE différents (ou identiques) sur
une seule machine physique
 Mais
toutes les SE se basent sur le même
matériel, les mêmes instructions

Un simulateur permet de rouler
programmes conçus pour matériels
différents sur une seule machine physique
 Différents
Ch.3
ensembles d’instructions
40
L’infonuagique (cloud computing)



Ch.3
Dans l’infonuagique l’usager utilise les services
offerts par un ‘nuage’ d’ordinateurs à travers
connexions internet
 Au lieu d’utiliser simplement son propre ordi ou le
serveur local
L’offre de puissance de calcul et stockage du
nuage doit être élastique pour suivre les besoins
des usagers
 Plus ou moins de serveurs UCT selon la demande
La création et destruction dynamique d’ordis
virtuels en est un des mécanismes
41
Infonuagique
Trois ordis physiques
mais possiblement
plus que 3 ‘virtuels’
Chaque ordi peut être subdivisé en ordis virtuels
Pour une offre élastique de puissance de calcul et stockage
Pour chaque usager séparément et selon la demande
Ch.3
42
Concepts importants du Chapitre 3




Responsabilités et services d’un SE
Le noyau
Appels du système (system calls)
Communication entre processus
 Messagerie


Ch.3
et mémoire partagée
Structure à couches
Machines virtuelles
43
Par rapport au manuel…



Ch.3
Étudier sections 3.1 jusqu’à 3.7.
La section 3.8 n’a pas été discutée en
classe mais elle contient des concepts
importants concernant Java donc c’est une
excellente idée de la lire
Les sections 3.9, 3.10, 3.11 ne sont pas
sujet d’examen cependant il est utile de les
lire.
44
MATÉRIAUX SUPPLÉMENTAIRES
Ch.3
45
Structure à couches dans le système THE (1968)

La structure à couches fut inventée dans le système THE
(E.W. Dijkstra) qui avait les couches suivantes:
Interface usager
programmes usagers
gestion E/S
pilotage console opérateur
gestion mémoire et tampons
gestion UCT
matériel
Ch.3
46
Différentes visions du nom: UNIX



Ch.3
Originairement, UNIX était un SE spécifique
Il est devenu plus tard un nom pour une famille de
SE qui fournissent un certain type de
fonctionnalité
Souvent, le nom UNIX est compris comme une
simple interface de commandes:
 Sont UNIX les systèmes qui fournissent les
instructions shell et API de l’UNIX
 La structure interne du système pourrait être très
différente (c’est le cas dans QNX)
47
POSIX

POSIX est le nom d'une famille de standards
définie depuis 1988 par IEEE.


POSIX = Portable Operating System Interface,


X exprime l'héritage UNIX de l'Interface de
programmation
Essentiellement POSIX a cherché à normaliser
l’interface typique des systèmes UNIX

Ch.3
Résultat d'un projet de standardisation des API des
logiciels destinés à fonctionner sur des variantes du
systèmes d’exploitation UNIX.
Instructions shell, API
48
QNX: Un succès dans notre région

QNX est un SE pour les applications temps-réel et
les système embarqués
Il est essentiellement Unix
 Offre l’interface POSIX




Développé dans la région (à Kanata) à partir de
1980
A été utilisé dans un grand nombre d’applications
temps-réel et embarquées, par un grand nombre
de compagnies
La compagnie a été achetée par Research in
Motion (RIM) qui utilise QNX dans ses produits

Ch.3
Playbook, BlackBerry, etc
49
Note historique-théorique

Ch.3
Le concept d’ordinateur universel qui peut
simuler n’importe quel ordinateur, inclus
soi-même, fut conçu par Alan Turing dans
les années 1930
 «La machine de Turing »
 Bien avant les premiers ordinateurs
électroniques
 Ce concept est à la base du concept de
machine virtuelle
 Il est aussi à la base de nombreux concepts
informatiques, pratiques et théoriques
50
Questions pour révision 1



Ch.3
Expliquer la différence: processus,
processeur, programme
Que c’est que le noyau du SE? Expliquer la
différence essentielle entre le noyau et
autres composants du SE.
Expliquer pourquoi chacun des suivants
doit être dans le noyau:
 traitement d’interruptions
 gestion de l’UCT
 gestion mémoire principale
 communication entre processus
51
Questions pour révision 2




Ch.3
Quelle est la relation entre appels du
système et interruptions?
Quels sont les avantages et les
désavantages de structurer un SE en
couches plutôt que d’une autre manière,
p.ex. en réseaux de composantes
Quelle est la différence entre systèmes
d’exploitation et systèmes d’exécution de
langages?
La gestion de la mémoire en Java,
appartient-elle au SE ou au système
d’exécution Java?
52
Questions pour révision 3



Ch.3
Quels sont les avantages principaux des
machines virtuelles?
Quelle est la différence entre une machine
virtuelle et un simulateur d’un autre
matériel?
Décrire l’idée de base de l’infonuagique
53
Téléchargement