Uživatelské nástroje

Nástroje pro tento web


inter-process-comm

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
inter-process-comm [2016/05/18 11:16] – [Mezi-procesová komunikace] djbuldoginter-process-comm [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
-====== Mezi-procesová komunikace ======+====== Mezi-procesová komunikace (IPC) ======
  
   * sdílená paměť   * sdílená paměť
Řádek 11: Řádek 11:
 ===== Sdílená paměť ===== ===== Sdílená paměť =====
  
-  * http://www3.physnet.uni-hamburg.de/physnet/Tru64-Unix/HTML/APS33DTE/DOCU_004.HTM +  * [[http://advancedlinuxprogramming.com/alp-folder/alp-ch05-ipc.pdf|výborné čtení o meziprocesorové komunikaci, sdílené paměti, semaforech....]] 
-    * všechny procesy mají přístup do paměti ihned + 
-    * začíná se voláním ''shm_open'' +  * POSIX Shared Memory Operations [[http://menehune.opt.wfu.edu/Kokua/More_SGI/007-2478-008/sgi_html/ch03.html#id29423|1]] [[http://www.cs.cf.ac.uk/Dave/C/node27.html#SECTION002740000000000000000|2]] 
-    * pro přístup do sdílené paměti musí procesy použít stejný name... což je string, například pathname +    * mmap(2) - Map a file or shared memory object into the address space. 
-    *  +    * shm_open(2) - Create, or gain access to, a shared memory object. 
-    * +    * shm_unlink(2) - Destroy a shared memory object when no references to it remain open. 
 +    * http://www3.physnet.uni-hamburg.de/physnet/Tru64-Unix/HTML/APS33DTE/DOCU_004.HTM 
 +      * všechny procesy mají přístup do paměti ihned 
 +      * začíná se voláním ''shm_open'' 
 +      * pro přístup do sdílené paměti musí procesy použít stejný name... což je string, například pathname 
 + 
 +  * System V Shared Memory Functions [[http://menehune.opt.wfu.edu/Kokua/More_SGI/007-2478-008/sgi_html/ch03.html#id17480|1]] [[http://www.cs.cf.ac.uk/Dave/C/node27.html|2]] 
 +    * shmget(2) - Create a shared memory IPC object or return the ID of one. 
 +    * shmctl(2) - Get the status of a shared memory segment, change permissions or user IDs, or lock or unlock a segment in memory. 
 +    * shmat(2) - Attach a shared memory segment to the address space. 
 +    * shmdt(2) - Detach a shared memory segment from the address space. 
 + 
 +==== Zamykaní ==== 
 + 
 +  * obecně existuje zámek (mutex) nebo semafor (semaphor) 
 +  * mutex 
 +    * pouze jeden proces/vlakno může vstoupit 
 +    * dá se říct, že je to semafor s číslem 1 
 +    * slouží k serializaci přístupu 
 +  * semafor 
 +    * nastaví se počet X, kolik procesů/vláken může max vstoupit 
 +    * slouží k omezení paralelního přístupu na max X 
 + 
 +Existuje C++ třída mutex 
 + 
 +POSIX semafory [[http://linux.die.net/man/7/sem_overview|1]] [[http://menehune.opt.wfu.edu/Kokua/More_SGI/007-2478-008/sgi_html/ch04.html#id82695|2]] 
 +  * pojmenované semafory 
 +    * identifikuje se jménem se ve tvaru "/řetězec" s max délkou 251 
 +    * vytváří se jako soubor v /dev/shm s názvem "sem.řetězec" 
 +    * ''sem_open'' - vytváří 
 +    * ''sem_close'' - ukončuje práci s 
 +    * ''sem_unlink'' - úplně likviduje (poslední proces) 
 +    * ''sem_post'' 
 +    * ''sem_wait'' 
 +  * nepojmenované semafory 
 +    * identifikuje se číslem 
 +    * vytváří se v paměti 
 +      * jako globální proměnná - mezi vlákny 
 +      * ve sdílené paměti - mezi procesy 
 +    * ''sem_init'' - vytváří 
 +    * ''sem_destroy'' - volat před dealokaci paměti 
 +    * ''sem_post'' 
 +    * ''sem_wait'' 
 + 
 +System V Semafor [[http://menehune.opt.wfu.edu/Kokua/More_SGI/007-2478-008/sgi_html/ch04.html#id16331|1]] 
 +    * oprávnění se nastavuje 9 bitovým číslem (obdoba oprávnění u souboru), tedy například 666 
 +    * ''semget'' - alokuje (ve sdílené paměti) nebo získá semafor s daným id 
 +    * ''semop'' - provádí operace se smaforem jako init, wait, post nebo i dealokaci 
 +    * semafor prý existuje, i když všechny procesy skončí!!! 
 +      * lze vypsat přes ipcs -s 
 ===== Nepojmenovaná roura ===== ===== Nepojmenovaná roura =====
  
inter-process-comm.1463562977.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki