Académique Documents
Professionnel Documents
Culture Documents
RAD
RDO
Bus données
Bus adresses
Bus commandes
DMA
PROGRAMME P1
UTILISATEUR
P1
P2
PROGRAMME
UTILISATEUR CPU
P2
DMA
Joëlle Delacroix NSY103 4
Multiprogrammation et gestion mémoire
allocation en partitions
fixes ou variables espace d'adressage paginé
espace d'adressage segmenté
0 0
Page 1 512 octets
Page 2
Case1
Page 1 Case 2
Page 1
Page 3 Case 3
Page 2
Page 4
Case 4
Page 3
Case 5
Adresse paginée
<n°page; déplacement>
2 6
Case 4
Page 3
3 3 Case 5
Page 4 4 7
Page 2 Case 6
Page 1 PA
CO PA
Page 2 PA Page 1 PB
PCB PA PCB PB
PSW PA
Page 3 PA Page 2 PB
Page 3 PB CO PB
Page 4 PA
PSW PB
Registres MMU
Joëlle Delacroix NSY103 Registres MMU 13
Implémentation de la table des pages
PSW PA
PCB PA
CO PB PCB PB
A PTBR PSW PB
B PTBR
Joëlle Delacroix NSY103 14
La mémoire paginée
Mémoire
Adresse logique
p d
+
adr page
En MC
Matériel
Adresse logique
p d
adresse table +
+
adr page
Adresse logique
p d
données
Sqrt Segment 1
Programme
principal
Segment 4
Pile Segment 2
Segment 3
Vue Utilisateur
Espace d'adressage
du programme Espace d'adressage
Ensemble de pages du programme
Ensemble de segments
Joëlle Delacroix NSY103 18
La mémoire segmentée
S3
Espace
Espace 100 K d'adressage
d'adressage S1 segmenté
linéaire 180K
50 K
30 K
S2
Joëlle Delacroix NSY103 19
La mémoire segmentée
S3 Espace
0 d'adressage
Espace 100 K
d'adressage S1 segmenté
180K 50 K
linéaire 0
SEGMENT
adresse
physique
<n°segment; deplacement>
1 50 K
Segment 2
25K 95K
2 195 K Segment 3
Segment 3 95 K
3
15K 150 K
Segment 4
4 150 K
Segment 4
10K
195 K
Espace d'adressage Segment 2
du programme
Joëlle Delacroix NSY103 22
La mémoire segmentée
Mémoire
s d <
Registre adresse
Table des Segments
+
LT adresse table
< +
oui
taille adr debut
0 0
n Système Système
n
Zone libre 60K Zone libre 60K
Segment P1 80K Segment P1
Zone libre 120K Segment P3
Segment P3 40K
Segment P2 Segment P2
0 0
n Système Système
n
Zone libre 60K Zone libre 60K
Segment P1 80K Segment P1
Zone libre 120K Zone libre
Segment P3 40K
Segment P2 Segment P2
Segment P3
Zone libre 100K 20K
Segment P1 Segment P1
350 K
Zone libre Zone libre
150K
Fragmentation
Joëlle Delacroix NSY103 27
Compactage de la mémoire
P1
Joëlle Delacroix NSY103 29
La mémoire segmentée paginée
Mémoire
d
oui
s d < p d'
P1 S
Registre adresse
Table des Segments + c +
LT adresse table
P3 S
< +
oui Adresse
S taille table P2 S
des pages
V N° de case physique
Adresse logique
p d
adresse table
I -
Adresse logique
p 4. Reprise
d
instruction
Registre adresse
Table des pages
adresse table
case libre
2 Chargement de la page
+
I 5
3. Mise à jour table des pages
Chaine de référence
7 0 1 2 0 3 0 4 2 3 0
7 7 7 2 2 2 2 4 4 4 0
0 0 0 0 3 3 3 2 2 2
1 1 1 1 0 0 0 3 3
D D D D D D D D D D
Chaine de référence
7 0 1 2 0 3 0 4 2 3 0
7 7 7 2 2 2 2 4 4 4 0
0 0 0 0 0 0 0 0 3 3
1 1 1 3 3 3 2 2 2
D D D D D D D D D
A M V N° de case physique
• Champ Accès :
FIFO : date de chargement
LRU : date de dernier accès
A M V N° de case physique
• Champ Accès :
FIFO : date de chargement
LRU : date de dernier accès
Adresse logique
p 4. Reprise
d
instruction
Registre adresse
Ec
rit
ur
adresse table
e
de
la
pa
ge
+
I
M
2. Chargement de la page
Table des pages 3. Mise à jour table des pages
Champ age
privé
Processus A
Processus B privé
Identification
Constantes IPC_CREAT,
Interne de la région Identification Taille de la région
externe de la région en octet IPC_EXCL
et droits d'accès
• Attachement d'une région de mémoire partagée
void *shmat (int shmid, const void *shmadd, int option)
main()
{
int shmid;
char *mem ;
/* attachement */
if((mem=shmat(shmid,NULL,0))==(char *)-1)
{
perror("shmat");
exit(2);
}
main()
{
/* récupération du segment de mémoire */
shmid=shmget((key_t)CLE,0,0);
/* attachement */
mem=shmat(shmid,NULL,0);
/* détachement du processus */
shmdt(mem);
/* destruction du segment */
shmctl(shmid,IPC_RMID,NULL);
exit(0)
}