ARCHITECTURE DE L’ORDINATEUR Victor Alibert, ‘ZIo’ (avec l’aide des diapos de « night »)
Registres du processeur ultra rapide Cache du processeur très rapide Mémoire vive (RAM : Random Access Memory) rapide Mémoire morte lente mais non volatile ( interne ou externe ) capacité - + ‘’vitesse’’ ns ms coût € €€€€€
Ici, quand on va parler de mémoire : Mémoire ≠ Disque dur !
Bits ≠ Bytes 1 Byte = 1 Octet = 8 Bits
Central Processing Unit : Unité Centrale de Calcul Récupère les instructions et les données dans la mémoire puis exécute les instructions demandées.
L’OS (Operating System) est composé : De programmes (ex : explorateur de fichiers ) D’un noyau qui fait l’interface entre tous les programmes et le matériel
La plupart des OS actuels sont multi-tâche: Ils effectuent plusieurs processus simultanément…
La plupart des OS actuels sont multi-tâche : Ils effectuent plusieurs processus simultanément… …Ou pas : Un CPU, à moins qu’il n’ait plusieurs cœurs, ne peut exécuter qu’une instruction à la fois, et on ne peut lire ou écrire qu’une information à la fois sur le disque dur. Comment l’odieux mensonge passe-t-il inaperçu ?
La plupart des OS actuels sont multi-tâches : Ils effectuent plusieurs processus simultanément… …Ou pas : Un CPU, à moins qu’il n’ait plusieurs cœurs, ne peut exécuter qu’une instruction à la fois, et on ne peut lire ou écrire qu’une information à la fois sur le disque dur. Comment l’odieux mensonge passe-t-il inaperçu ?
Préemption : Un processus est en cours de traitement. Un autre processus veut prendre la main. Il est prioritaire. Mais le processus précédent n’est pas terminé. Le processeur doit donc l’arrêter. Commutation de contexte : Le processus arrêté est stocké en vue d’un traitement ultérieur. Le nouveau processus est lancé.
Comment nous trompe le multi-tâche ? >> Il fait de la commutation de contexte en permanence ! Il traite un petit bout d’un processus, puis d’un autre, puis d’un autre… Puis revient au premier processus, et recommence… Et tous les processus semblent avancer simultanément !
Comment nous trompe le multi-tâche ? >> Il fait de la commutation de contexte en permanence ! Il traite un petit bout d’un processus, puis d’un autre, puis d’un autre… Puis revient au premier processus, et recommence… Et tous les processus semblent avancer simultanément !
Comment nous trompe le multi-tâche ? >> Il fait de la commutation de contexte en permanence ! Il traite un petit bout d’un processus, puis d’un autre, puis d’un autre… Puis revient au premier processus, et recommence… Et tous les processus semblent avancer simultanément !
Comment nous trompe le multi-tâche ? >> Il fait de la commutation de contexte en permanence ! Il traite un petit bout d’un processus, puis d’un autre, puis d’un autre… Puis revient au premier processus, et recommence… Et tous les processus semblent avancer simultanément !
Comment nous trompe le multi-tâche ? >> Il fait de la commutation de contexte en permanence ! Il traite un petit bout d’un processus, puis d’un autre, puis d’un autre… Puis revient au premier processus, et recommence… Et tous les processus semblent avancer simultanément !
Comment nous trompe le multi-tâche ? >> Il fait de la commutation de contexte en permanence ! Il traite un petit bout d’un processus, puis d’un autre, puis d’un autre… Puis revient au premier processus, et recommence… Et tous les processus semblent avancer simultanément !
Comment nous trompe le multi-tâche ? >> Il fait de la commutation de contexte en permanence ! Il traite un petit bout d’un processus, puis d’un autre, puis d’un autre… Puis revient au premier processus, et recommence… Et tous les processus semblent avancer simultanément !
CPU = ressource critique Engorgement à l’entrée… Il faut donc choisir quel processus traiter en premier…
Quelques exemples courants : FIFO (First In First Out) SPN (Shortest Process Next) Round Robin
Quelques exemples courants : FIFO (First In First Out) SPN (Shortest Process Next) Round Robin Un algorithme est bon s’il n’y a pas famine
Quelques exemples courants : FIFO (First In First Out) SPN (Shortest Process Next) Round Robin Un algorithme est bon s’il n’y a pas famine, si le temps moyen de traitement d’un processus n’est pas trop long
Quelques exemples courants : FIFO (First In First Out) SPN (Shortest Process Next) Round Robin Un algorithme est bon s’il n’y a pas famine, si le temps moyen de traitement d’un processus n’est pas trop long, et si le CPU ne passe pas trop de temps à ne rien faire.
Si on vous demande de commenter la performance d’un algorithme : Pas d’algorithme miracle, Il faut faire des compromis entre 3 exigences incompatibles ! Et tout dépend de ce que l’on veut privilégier ! Ce qui semble être une amélioration dans un cas peut être un défaut dans un autre cas.
Tout est dans le titre. Si on vous demande de commenter l’algorithme FIFO, gardez en tête qu’il est très simple, et très bête, donc pas optimisé du tout !
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) Traitement dans l’ordre d’arrivée Pas de préemption
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 16
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) Temps moyen de traitement : ( ) / 5 = 29,2 ms Pas de famine, mais pas optimisé du tout ! t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) Pas de préemption Le processus le plus court passe en premier
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) Temps moyen de traitement : ( ) / 5 = 18 ms Temps optimisé, mais risque de famine… t (ms) 0
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) Un certain quantum de temps est alloué aux processus pour s’effectuer S’il ne s’est pas terminé avant la fin du temps imparti : changement de contexte L’algorithme est préemptif
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms Temps restant
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms 0 Temps restant 8
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms 04 Temps restant 12 8
Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms 084 Temps restant
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms 0804 Temps restant
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms Temps restant
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms Temps restant
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms Temps restant
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms Temps restant
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms Temps restant
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) t (ms) 0 Quantum : 4ms Temps restant
12 Processus (dans l’ordre d’arrivée)12345 Temps de calcul demandé (ms) Temps moyen de traitement : ( ) / 5 = 27,6 ms Evite la famine, mais les changements de contextes induisent un temps supplémentaire, et les quanta peuvent être inadéquats t (ms) 0 Quantum : 4ms Temps restant
On a besoin de stocker des choses sur son PC et la mémoire qui répond à la ns : c’est CHER !!! Donc on stocke sur le disque dur (« Hard drive »)
Fred : « Mais Jamy, comment sont stockées les données dans le Disque Dur ? »
Le disque tourne à des vitesses de l’ordre de 100 tours par seconde La tête de lecture se déplace pour sélectionner la piste C’est ce dernier mouvement qui est lent
2 Problèmes : Plusieurs processus veulent accéder au disque « simultanément » (engorgement du disque dû à sa lenteur) >> Comment traiter l’ordre de priorité ?
FIFO ou FCFS (First In First Out ou First Come First Served) SS(T)F (Shortest Seek (Time) First) SCAN et LOOK (ascenseur)
On considère un disque de 10 pistes, le bras de lecture est initialement sur la piste 5 et on peut négliger le temps entre les différentes demandes d’accès. Ordre d’arrivée12345 Piste demandée102619
Ordre d’arrivée12345 Piste demandée Demande traitée1 Piste d’arrivée10 Déplacement de la tête5
Ordre d’arrivée12345 Piste demandée Demande traitée12 Piste d’arrivée102 Déplacement de la tête58
Ordre d’arrivée12345 Piste demandée Demande traitée123 Piste d’arrivée1026 Déplacement de la tête584
Ordre d’arrivée12345 Piste demandée Demande traitée1234 Piste d’arrivée10261 Déplacement de la tête5845
Ordre d’arrivée12345 Piste demandée Demande traitée12345 Piste d’arrivée Déplacement de la tête58458
Ordre d’arrivée12345 Piste demandée Demande traitée12345 Piste d’arrivée Déplacement de la tête58458 Nombre total de déplacements : 30, c’est servi !
On va à chaque fois chercher la piste demandée la plus proche de la position actuelle de la tête de lecture Nécessite moins de déplacements Mais possibilité de « famine » Ressemble au SPN pour la mémoire virtuelle…
Ordre d’arrivée12345 Piste demandée102619
Ordre d’arrivée12345 Piste demandée Demande traitée3 Piste d’arrivée6 Déplacement de la tête1
Ordre d’arrivée12345 Piste demandée Demande traitée35 Piste d’arrivée69 Déplacement de la tête13
Ordre d’arrivée12345 Piste demandée Demande traitée351 Piste d’arrivée6910 Déplacement de la tête131
Ordre d’arrivée12345 Piste demandée Demande traitée3512 Piste d’arrivée69102 Déplacement de la tête1318
Ordre d’arrivée12345 Piste demandée Demande traitée35124 Piste d’arrivée Déplacement de la tête13181
Ordre d’arrivée12345 Piste demandée Demande traitée35124 Piste d’arrivée Déplacement de la tête13181 Nombre total de déplacements : 14, c’est bien mieux !
Principe de l’ascenseur La tête de lecture fait des allers-retours entre les pistes extrêmes. Les accès au disque sont faits lorsque la tête se trouve au- dessus de la piste demandée. LOOK : SCAN amélioré, la tête fait demi-tour lorsqu’il n’y a plus d’accès disque à effectuer dans la direction où elle va.
On considère un disque de 10 pistes, le bras de lecture est initialement sur la piste 5 et on peut négliger le temps entre les différentes demandes d’accès. Ordre d’arrivée12345 Piste demandée102619
Ordre d’arrivée12345 Piste demandée Demande traitée2 Piste d’arrivée2 Déplacement de la tête3
Ordre d’arrivée12345 Piste demandée Demande traitée24 Piste d’arrivée21 Déplacement de la tête31
Ordre d’arrivée12345 Piste demandée Demande traitée243 Piste d’arrivée216 Déplacement de la tête315
Ordre d’arrivée12345 Piste demandée Demande traitée2435 Piste d’arrivée2169 Déplacement de la tête3153
Ordre d’arrivée12345 Piste demandée Demande traitée24351 Piste d’arrivée Déplacement de la tête31531
Ordre d’arrivée12345 Piste demandée Demande traitée24351 Piste d’arrivée Déplacement de la tête31531 Nombre total de déplacements : 13, C’est bien aussi !
2 façons de créer un programme : -Programme interprété : code source ->code objet-> resultat Exemple : Java, PHP, Basic,… -Programme compilé : code source->compilateur->code objet->éditeur de liens->executable (xxx.exe)->computer->resultat Exemple : C,C++,…
Code source : Ce que l’on écrit avec le logiciel pour programmer ainsi que les modules que l’on a prélablement écrit et que notre programme utilise (Code::Blocks, …). Code objet : La même chose mais dans un langage que l’ordinateur comprend. Code executable (xxx.exe) : Les différents blocs de notre programme contient (eh oui : un programme s’écrit par bloc) sont lié pour ne former plus qu’UN !
COOL : Notre programme est fait ! Je n’ai plus qu’à le mettre dans la RAM et c’est PARTI !!!! FACILE !!!!
Il n’y a pas assez de place dans la RAM On a besoin du lourd : le disque dur (eh oui : il fallait bien qu’il revienne lui car je frôlais le hors sujet…) En fait : le programme est sur les deux en même temps et ces deux mémoires (RAM et disque dur) forment le concept de la mémoire virtuelle Oui je sais : ça fait flipper….
On fait croire à l’ordinateur qu’une partie de son disque dur est de la mémoire. Le programme est vu comme un ensemble de pages qui sont regroupées dans cette mémoire virtuelle et il existe une fonction, dite « paging function » qui demande : « toi, page n, t’es où ??? »
Les données sont regroupées par pages La page (le processus) a besoin doit se trouver dans la RAM Si elle n’y est pas, il y a défaut de page, il faut charger la page dans la RAM Un défaut de page représente un temps d’inactivité pour le processus, le temps d’accéder au disque Processus : il me faut la page 3 RAM : ah… attends je l’ai pas je vais la chercher Processus : j’attends…….
2 cas : -Soit il y a de la place dans la mémoire centrale : Dans ce cas on utilise la fonction « page allocation » -Soit on a plus de place : On doit dans ce cas sacrifier une page (appelée victime) pour la remplacer par la novelle à l’aide de la fonction « page replacement »
FIFO (First In, First Out) : On remplace la page qui a été chargée il y a le plus longtemps LRU (Least Recently Used) : On remplace la page qui a été utilisée il y a le plus longtemps LFU (Least Frequently Used) : On remplace la page la moins souvent utilisée
Trois cases dans la mémoire centrale On demande les pages 1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 1
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X 1
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X X X 4 9 défauts de pages
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 1
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X 1
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demanedéÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X X X
1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4 page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X X X X
page demandéeÉtat de la mémoiredéfaut de page 11X 21 2X X X X X X X X X 10 défauts de pages 1, 2, 5, 3, 1, 2, 4, 1, 2, 5, 3, 4
2 cas : -Soit il y a de la place dans la mémoire centrale : Dans ce cas on utilise la fonction « page allocation » -Soit on a plus de place : On doit dans ce cas sacrifier une page (appelée victime) pour la remplacer par la novelle à l’aide de la fonction « page replacement »
Au fur et à mesure des allocations et désallocations de mémoire, celle-ci devient fragmentée : 10 Ko 4 Ko 20 Ko18 Ko7 Ko Comment choisir les emplacements où l’on va allouer la mémoire ?
First Fit Next Fit Best Fit Worst Fit
La mémoire est allouée dans la première zone libre disponible 10 Ko 4 Ko 20 Ko18 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko
La mémoire est allouée dans la première zone libre disponible 10 Ko 4 Ko 8 Ko18 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 12 Ko
La mémoire est allouée dans la première zone libre disponible 10 Ko 4 Ko 8 Ko18 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 12 Ko
La mémoire est allouée dans la première zone libre disponible 10 Ko 4 Ko 8 Ko9 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 12 Ko9 Ko First Fit n’est pas optimisé !
Petite variante du First Fit, on choisi la première case à partir de la dernière allouée 10 Ko 4 Ko 18 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 20 Ko
Petite variante du First Fit, on choisi la première case à partir de la dernière allouée 10 Ko 4 Ko 18 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 8 Ko12 Ko
Petite variante du First Fit, on choisi la première case à partir de la dernière allouée 10 Ko 4 Ko 8 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 8 Ko12 Ko10 Ko
Petite variante du First Fit, on choisi la première case à partir de la dernière allouée 9 Ko 4 Ko 8 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 8 Ko12 Ko10 Ko 1 Ko1 Ko Pas plus optimisé que First Fit…
On choisit l’emplacement qui minimise l’espace résiduel 10 Ko 4 Ko 7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 20 Ko18 Ko
On choisit l’emplacement qui minimise l’espace résiduel 10 Ko 4 Ko 12 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 20 Ko 6 Ko
On choisit l’emplacement qui minimise l’espace résiduel 10 Ko 4 Ko 12 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 20 Ko 6 Ko
On choisit l’emplacement qui minimise l’espace résiduel 10 Ko 4 Ko 12 Ko7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 9 Ko 6 Ko 11 Ko
On choisit l’emplacement qui maximise l’espace résiduel 10 Ko 4 Ko 7 Ko Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 20 Ko18 Ko
On choisit l’emplacement qui maximise l’espace résiduel Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 10 Ko 4 Ko 7 Ko18 Ko8 Ko12 Ko
On choisit l’emplacement qui maximise l’espace résiduel Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 10 Ko 4 Ko 7 Ko8 Ko12 Ko 6 Ko
On choisit l’emplacement qui maximise l’espace résiduel Ex : On doit allouer 12 Ko, 10 Ko et 9 Ko 4 Ko 7 Ko8 Ko12 Ko 6 Ko 9 Ko 1 Ko1 Ko