0% ont trouvé ce document utile (0 vote)
63 vues18 pages

SP Sequence 3

Le document traite des concepts fondamentaux de la gestion de la mémoire, des processus, des threads, de la communication inter-processus, de la synchronisation et de la sécurité système. Il présente également des appels système importants tels que malloc(), free(), calloc(), realloc(), mmap() et munmap(), avec des exemples de syntaxe et d'utilisation. Enfin, il aborde la création et l'accès à des zones de mémoire partagée via shmget().

Transféré par

Mahamat Khalil yakhoub
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
63 vues18 pages

SP Sequence 3

Le document traite des concepts fondamentaux de la gestion de la mémoire, des processus, des threads, de la communication inter-processus, de la synchronisation et de la sécurité système. Il présente également des appels système importants tels que malloc(), free(), calloc(), realloc(), mmap() et munmap(), avec des exemples de syntaxe et d'utilisation. Enfin, il aborde la création et l'accès à des zones de mémoire partagée via shmget().

Transféré par

Mahamat Khalil yakhoub
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

G   
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
E  ’  L /-

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
V    

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
V    

Appel système: malloc()

• Syntaxe:

  i n c l u d e  s t d l i b . h
 void * malloc ( s i z e _ t s i z e ) ;

• Retourne un pointeur sur l’espace


mémoire alloué, ou NULL en cas
d’erreur

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
V    

Appel système: malloc()

• Syntaxe:

  i n c l u d e  s t d l i b . h
 void * malloc ( s i z e _ t s i z e ) ;

• Retourne un pointeur sur l’espace


mémoire alloué, ou NULL en cas
d’erreur

Appel système: free()


• Syntaxe:
  i n c l u d e  s t d l i b . h
 void f r e e ( void * p t r ) ;

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
V    

Appel système: calloc()


• Syntaxe:

  i n c l u d e  s t d l i b . h
 void * c a l l o c ( s i z e _ t numitems , s i z e _ t s i z e ) ;

• Retourne un pointeur sur l’espace mémoire alloué, ou NULL en cas


d’erreur

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
V    

Appel système: calloc()


• Syntaxe:

  i n c l u d e  s t d l i b . h
 void * c a l l o c ( s i z e _ t numitems , s i z e _ t s i z e ) ;

• Retourne un pointeur sur l’espace mémoire alloué, ou NULL en cas


d’erreur

Appel système: realloc()


• Syntaxe:

  i n c l u d e  s t d l i b . h
 void * r e a l l o c ( void * ptr , s i z e _ t s i z e ) ;

• Retourne un pointeur sur l’espace mémoire alloué, ou NULL en cas


d’erreur
 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
A  mmap()

Appel système: mmap()

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
A  mmap()

Appel système: mmap()


• Syntaxe:
  i n c l u d e  sys / types . h
  i n c l u d e  sys /mman. h

 void *mmap( void * addr , s i z e _ t len , i n t prot , i n t f l a g s , i n t
fd , o f f _ t o f f s e t ) ;

• Retourne un pointeur sur le début d’adresse de mapping, ou MAP_FAILED


en cas d’erreur
Valeur Description
PROT_NONE La région ne doit pas être accédée
PROT_READ Le contenu de la région peut-être lu
PROT_WRITE Le contenu de la région peut-être modié
PROT_EXEC Le contenu de la région peut-être exécuté

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
A  mmap()

Appel système: mmap()


• Exemple :
  i n c l u d e  sys /mman. h
  i n c l u d e  sys / s t a t . h
  i n c l u d e  f c n t l . h

 i n t main ( i n t argc , char * argv [ ] )
 {
 char * addr ;
 i n t fd ;
 s t r u c t s t a t sb ;

 fd  open ( argv [  ] , O_RDONLY ) ;

 i f ( f s t a t ( fd , &sb )  −)
 errExit ( " fstat " ) ;

 addr  mmap( NULL , sb . s t _ s i z e , PROT_READ , MAP_PRIVATE , fd , ) ;
 i f ( addr  MAP_FAILED )
 e r r E x i t ( "mmap" ) ;
 i f ( w r i t e ( STDOUT_FILENO , addr , sb . s t _ s i z e ) !  sb . s t _ s i z e )
 p r i n t f ( " p a r t i a l / f a i l e d w r i t e \n " ) ;
 e x i t ( EXIT_SUCCESS ) ;
 }

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
A  mmap()

Appel système: mmap()


• Exemple :
 // . . .
 fd  open ( " /dev/ zero " , O_RDWR) ;
 i f ( fd  −)
 e r r E x i t ( " open " ) ;
 addr  mmap( NULL , length , PROT_READ | PROT_WRITE ,
MAP_PRIVATE , fd , ) ;
 i f ( addr  MAP_FAILED )
 e r r E x i t ( "mmap" ) ;
 // . . .

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
A  munmap()

Appel système: munmap()


• Syntaxe:
  i n c l u d e  sys /mman. h

 i n t munmap( void * addr , s i z e _ t l e n g t h ) ;

• Retourne  en cas de succès, ou - en cas d’erreur

• Exemple:
 // . . .
 addr  mmap( NULL , length , PROT_READ | PROT_WRITE , MAP_PRIVATE , fd , ) ;
 i f ( addr  MAP_FAILED )
 e r r E x i t ( "mmap" ) ;

 /* Code f o r working with mapped r e g i o n */

 i f (munmap( addr , l e n g t h )  −)
 f p r i n t f ( s t d e r r , "munmap \n " ) ;
 // . . .

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
A    

Deux processus accèdent à une région partagée

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
M 

Appel système: shmget()


Description: Permet la création d’une zone mémoire partagée, ou l’accès à
une zone déjà existante.
Syntaxe:
  i n c l u d e  sys / types . h
  i n c l u d e  sys /shm . h

 i n t shmget ( key_t key , s i z e _ t s i z e , i n t shmflg ) ;

Retourne l’ID du segment de la mémoire partagée, ou - en cas d’erreur


Exemple:
 // . . .
 i n t shmid ;
 s t r u c t shmseg *shmp ;

 shmid  shmget ( SHM_KEY , s i z e o f ( s t r u c t shmseg ) , IPC_CREAT | SHM_R | tSHM_W ) ;
 i f ( shmid  −)
 e r r E x i t ( " shmget " ) ;
 // . . .

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
M 

Appel système: shmget()


Description: Permet la création d’une zone mémoire partagée, ou l’accès à
une zone déjà existante.
Syntaxe:
  i n c l u d e  sys / types . h
  i n c l u d e  sys /shm . h

 i n t shmget ( key_t key , s i z e _ t s i z e , i n t shmflg ) ;

Retourne l’ID du segment de la mémoire partagée, ou - en cas d’erreur


Exemple:
 // . . .
 i n t shmid ;
 s t r u c t shmseg *shmp ;

 shmid  shmget ( SHM_KEY , s i z e o f ( s t r u c t shmseg ) , IPC_CREAT | SHM_W ) ;
 i f ( shmid  −)
 e r r E x i t ( " shmget " ) ;
 // . . .

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
M 

Appel système: shmat()


Description: Permet d’attacher la mémoire référencée à l’adresse virtuelle
spéciée en argument.
Syntaxe:
  i n c l u d e  sys / types . h
  i n c l u d e  sys /shm . h

 void * shmat ( i n t shmid , const void * shmaddr , i n t shmflg ) ;

Retourne l’adresse attachée à la mémoire partagée, ou (void *)- en cas


d’erreur
Exemple:
 // . . .
 shmid  shmget ( SHM_KEY , s i z e o f ( s t r u c t shmseg ) , IPC_CREAT | OBJ_PERMS ) ;
 i f ( shmid  −)
 e r r E x i t ( " shmget " ) ;
 shmp  shmat ( shmid , NULL , ) ;
 i f ( shmp  ( void * ) −)
 e r r E x i t ( " shmat " ) ;
 // . . .

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
M 

Appel système: shmdt()


Description: Détachement d’une zone partagée de l’espace virtuel du
processus.
Syntaxe:
  i n c l u d e  sys / types . h
  i n c l u d e  sys /shm . h

 i n t shmdt ( const void * shmaddr ) ;

Retourne  en cas de succès, ou (void *)- en cas d’erreur


Exemple:
 // . . .
 shmp  shmat ( shmid , NULL , SHM_RDONLY ) ;
 i f ( shmp  ( void * ) −)
 e r r E x i t ( " shmat " ) ;
 i f ( shmdt ( shmp )  −)
 e r r E x i t ( " shmdt " ) ;
 // . . .

 
Concepts de base Concepts fondamentaux Gestion de la mémoire Processus / Threads Communication Inter-processus Synchronisation Sécurité système

E 
M 

Appel système: shmctl()


Description: Permet de consulter ou de modier les caractéristiques d’un
segment mémoire ainsi que de le supprimer.
Syntaxe:
  i n c l u d e  sys / types . h
  i n c l u d e  sys /shm . h

 i n t shmctl ( i n t shmid , i n t cmd , s t r u c t shmid_ds * buf ) ;

Retourne  en cas de succès, ou - en cas d’erreur


Exemple:
 // . . .
 // shmat to a t t a c h to shared memory
 char * s t r  ( char * ) shmat ( shmid , ( void * )  ,  ) ;
 p r i n t f ( " Data read from memory : s \n " , s t r ) ;
 // detach from shared memory
 shmdt ( s t r ) ;
 // destroy the shared memory
 shmctl ( shmid , IPC_RMID , NULL ) ;
 // . . .

 

Vous aimerez peut-être aussi