Reword and syntax corrections
This commit is contained in:
parent
5c682b618a
commit
ed9e311212
1 changed files with 11 additions and 13 deletions
|
@ -8,9 +8,9 @@ categories: ["Systèmes d'exploitation", "Cours"]
|
|||
Les processus sont des instances vivants de programmes. Un programme représente
|
||||
du code binaire stocké sur un support de stockage.
|
||||
|
||||
Un processus est un espace d'adressage en mémoire et d'un contexte d'exécution.
|
||||
Plus d'information est disponible [dans les cours de prog. système]({{< ref
|
||||
"../../progsys/3-processus/index.md">}} "Les processus")
|
||||
Un processus est composé d'un espace d'adressage en mémoire et d'un contexte
|
||||
d'exécution. Plus d'information est disponible [dans les cours de prog.
|
||||
système]({{<ref "../../progsys/3-processus/index.md">}} "Les processus")
|
||||
|
||||
## Accès à la mémoire
|
||||
|
||||
|
@ -26,8 +26,7 @@ L'espace d'adressage contient des segments mémoire :
|
|||
la `libc` effectue un appel système (mais le noyau peut refuser d'allouer)
|
||||
* la *pile d'exécution*, sa taille est de 8MiB maximum sous Linux. Ce segment
|
||||
contient les paramètres des fonctions et leurs variables locales.
|
||||
* les *librairies partagées* mappees à la demande.
|
||||
|
||||
* les *librairies partagées* mappées à la demande.
|
||||
|
||||
Il est possible de voir les espaces de mémoire alloués pour un processus donné :
|
||||
|
||||
|
@ -65,11 +64,11 @@ On y voit biens les adresses de début, ceux de fin, les droits (`r`ead,
|
|||
L'accès par un processus à un espace mémoire invalide donne lieu à la fameuse
|
||||
`segmentation fault`. Mais il est tout à fait possible de lire et écrire vers
|
||||
une zone non allouée du tas. Par exemple j'initialise un tableau de 10 éléments
|
||||
et les rmpli avec une boule de 15 itérations.
|
||||
et le rempli avec une boucle de 15 itérations.
|
||||
|
||||
## Attributs d'un processus
|
||||
|
||||
en plus de l'espace mémoire alloué pour le processus, le noyau stocke en mémoire
|
||||
En plus de l'espace mémoire alloué pour le processus, le noyau stocke en mémoire
|
||||
un ensemble d'attributs : son identitiants (`PID`), sa priorité, l'`UID`
|
||||
(réel/effectif), la table des descripteurs de fichiers, la table des signaux, un
|
||||
espace pour sauvegarder les registres (changement de contexte, reprise sur
|
||||
|
@ -109,7 +108,7 @@ détailler certaines.
|
|||
Une liste chainée de processus, on exécute le premier jusquà la fin de son
|
||||
exécution ou qu'il soit bloqué puis le second et ainsi de suite.
|
||||
|
||||
C'est une technique facile à implémenter, il est très peu couteux en temps
|
||||
C'est une technique facile à implémenter, elle est très peu couteuse en temps
|
||||
processeur (le noyau intervient peu, peu de changement de contexte) mais
|
||||
comporte un gand risque de **famine** : un processus en boucle ne rendrai jamais
|
||||
la main.
|
||||
|
@ -134,7 +133,7 @@ comportement.
|
|||
|
||||
Dans le cas d'une **opération de compilation** par exemple, le
|
||||
compilateur lit les fichiers sources effectuant beaucoup de `read` et se
|
||||
bloauqnt donc. Ensuite il compile et utilise beaucoup de CPU.
|
||||
bloque régulièrement donc. Ensuite il compile et utilise beaucoup de CPU.
|
||||
|
||||
L'ordonnanceur observe donc les métriques du passé pour prévoir l'avenir. Dans
|
||||
l'example du compilateur, le noyau observe que sur les 10ms de temporisation,
|
||||
|
@ -195,5 +194,4 @@ opération de lecture ou écriture à la fois*. Mais ce n'est pas suffisant, un
|
|||
example de code est disponible [dans les cours de prog. système]({{<ref
|
||||
"../../progsys/5_les-processus_legers/index.md">}} "Les processus légers")
|
||||
|
||||
|
||||
Le noyau doit donc mettre en place des primitive de synchronisation.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue