Rechercher une page de manuel
ipc
Langue: pl
Version: 1993-11-01 (openSuse - 09/10/07)
Section: 5 (Format de fichier)
Sommaire
NAZWA
ipc - mechanizmy komunikacji miêdzy procesami w Systemie VSK£ADNIA
# include <sys/types.h> # include <sys/ipc.h> # include <sys/msg.h> # include <sys/sem.h> # include <sys/shm.h>
OPIS
Nieniejsza dokumentacja stara siê opisaæ implementacjê w systemie Linux mechanizmów komunikacji miêdzy procesami Systemu V: kolejek komunikatów, semaforów oraz segmentów pamiêci wspólnej. Dalej w tek¶cie s³owo zasób oznacza egzemplarz/realizacjê jednego z tych mechanizmów.Prawa dostêpu do zasobów
W przypadku ka¿dego zasobu system korzysta z ogólnej struktury typu struct ipc_perm, w której przechowuje informacje niezbêdne do okre¶lenia uprawnieñ do wykonania operacji. Struktura ipc_perm zdefiniowana w systemowym pliku nag³ówkowym <sys/ipc.h> sk³ada siê z nastêpuj±cych pól: ushort cuid; /* id u¿ytkownika tworz±cego */
ushort cgid; /* id grupy tworz±cego */
ushort uid; /* id w³a¶ciciela */
ushort gid; /* id grupy w³a¶ciciela */
ushort mode; /* uprawnieenia do odczytu/zapisu */
Pole mode struktury ipc_perm w swoich najni¿szych 9-ciu bitach przechowuje informacje o prawach dostêpu do zasobu dla procesu wywo³uj±cego funkcjê systemow± metod ipc. Uprawnienia s± interpretowane w sposób nastêpuj±cy:
0400 Prawo do odczytu przez u¿ytkownika. 0200 Prawo do zapisu przez u¿ytkownika. 0040 Prawo do odczytu przez grupê. 0020 Prawo do zapisu przez grupê. 0004 Prawo do odczytu przez innych. 0002 Prawo do zapisu przez innych.
Bity 0100, 0010 i 0001 (bity praw do uruchamiania) nie s± przez system wykorzystywane. Co wiêcej, w przypadku zestawu semaforów "zapisz" efektywnie oznacza "zmieñ".
W tym samym systemowym pliku nag³ówkowym zawarta jest definicja sta³ych symbolicznych:
- IPC_CREAT
- Utworzenie pozycji, gdy klucz nie istnieje.
- IPC_EXCL
- B³±d, gdy klucz istnieje.
- IPC_NOWAIT
- B³±d, gdy ¿±danie musi czekaæ.
- IPC_PRIVATE
- Klucz prywatny.
- IPC_RMID
- Usuniêcie zasobu.
- IPC_SET
- Ustawienie opcji zasobu.
- IPC_STAT
- Odczytanie opcji zasobu.
Proszê zauwa¿yæ, ¿e IPC_PRIVATE jest typu key_t podczas gdy pozosta³e sta³e s± polami znacznikowymi które mog± byæ sumowane bitowo (OR) do jednej zmiennej typu int.
Kolejki komunikaktów
Kolejka komunikatów jest w sposób jednoznaczny identyfikowana przez dodatni± liczbê ca³kowit± (jej msqid) oraz posiada skojarzon± strukturê typu struct msquid_ds, która jest zdefiniowana w pliku <sys/msg.h>, a sk³ada siê z nastêpuj±cych pól: struct ipc_perm msg_perm;
ushort msg_qnum; /* liczba komunikatów w kolejce */
ushort msg_qbytes; /* maks. liczba bajtów w kolejce */
ushort msg_lspid; /* PID ostatnio wywo³uj±cego msgsnd */
ushort msg_lrpid; /* PID ostatnio wywo³uj±cego msgrcv */
time_t msg_stime; /* czas ostatniego msgsnd */
time_t msg_rtime; /* czas ostatniego msgrcv */
time_t msg_ctime; /* czas ostatniej zmiany */
- msg_perm
- Struktura ipc_perm, która okre¶la prawa dostêpu do kolejki komunikatów.
- msg_qnum
- Liczba komunikatów znajduj±cych siê aktualnie w kolejce.
- msg_qbytes
- Maksymalna liczba bajtów tekstu komunikatu na jak± pozwala kolejka.
- msg_lspid
- Identyfikator procesu, który ostatni wykona³ funkcjê systemow± msgsnd.
- msg_lrpid
- identyfikator procesu, który ostatni wykona³ funkcjê systemow± msgrcv.
- msg_stime
- Czas ostatniego wykonania funkcji systemowej msgsnd.
- msg_rtime
- Czas ostatniego wykonania funkcji systemowej msgcv.
- msg_ctime
- Czas ostatniego wywo³ania funkcji systemowej, w wyniku którego zmienione zosta³o pole struktury msqid_ds.
Zestawy semaforów.
Semafor jest jednoznacznie identyfikowany przez dodatni± liczbê ca³kowit± (jego semid) i jest skojarzony ze struktur± typu struct semid_ds, zdefiniowan± w pliku <sys/sem.h>, która sk³ada siê z nastêpuj±cych pól: struct ipc_perm sem_perm;
time_t sem_otime; /* czas ostatniej operacji */
time_t sem_ctime; /* czas ostatniej zmiany */
ushort sem_nsems; /* liczba semaforów w zestawie */
- sem_perm
- Struktura ipc_perm, która okre¶la prawa dostêpu do zestawu semaforów.
- sem_otime
- Czas ostatniego wywo³ania funkcji systemowej semop.
- sem_ctime
- Czas ostatniego wywo³ania funkcji systemowej semctl, która zmieni³a element przedstawionej powy¿ej struktury lub jeden z semaforów nale¿±cych do zestawu.
- sem_nsems
- Liczba semaforów w zestawie. Ka¿dy semafor zestawu jest identyfikowany przez dodatni± liczbê ca³kowit± z zakresu od 0 do sem_nsems-1.
Semofor jest struktur± typu struct sem, która sk³ada siê z nastêpuj±cych pól:
ushort semval; /* warto¶æ semafora */
short sempid; /* PID procesu ostatniej operacji */
ushort semncnt; /* liczba oczekuj±cych na zwiêkszenie semval */
ushort semzcnt; /* liczba oczekuj±cych na semval = 0 */
- semval
- Warto¶æ semafora: nieujemna liczba ca³kowita.
- sempid
- Identyfikator ostatniego procesu, który wykona³ operacjê na tym semaforze.
- semncnt
- Liczba wstrzymanych procesów oczekuj±cych na zwiêkszenie warto¶ci zmiennej semval.
- semznt
- Liczba wstrzymanych procesów oczekuj±cych a¿ zmienna semval przyjmie warto¶æ zero.
Segmenty pamiêci wspólnej
Segment pamiêci wspólnej jest jednoznacznie identyfikowany przez dodatni± liczbê ca³kowit± (jego shmid) i jest skojarzony ze struktur± typu struct shmid_ds, zdefiniowan± w <sys/shm.h>, która sk³ada siê z nastêpuj±cych pól: struct ipc_perm shm_perm;
int shm_segsz; /* rozmiar segmentu */
ushort shm_cpid; /* PID procesu, który utworzy³ segment */
ushort shm_lpid; /* PID ostatnio operuj±cego na segmencie */
short shm_nattch; /* liczba aktualnych przy³±czeñ */
time_t shm_atime; /* czas ostatniego przy³±czenia*/
time_t shm_dtime; /* czas ostatniego od³±czenia*/
time_t shm_ctime; /* czas ostatniej zmiany */
- shm_perm
- Struktura ipc_perm, która okre¶la prawa dostêpu do segmentu pamiêci wspólnej.
- shm_segsz
- Rozmiar segmentu pamiêci wspólnej w bajtach.
- shm_cpid
- Identyfikator procesu, który utworzy³ ten segment pamiêci wspólnej.
- shm_lpid
- Identyfikator procesu, który ostatni wykona³ funkcjê systemow± shmat lub shmdt.
- shm_nattch
- Liczba aktualnych, aktywnych przy³±czeñ do tego segmentu pamiêci wspólnej.
- shm_atime
- Czas ostatniego wykonania funkcji systemowej shmat.
- shm_dtime
- Czas ostatniego wykonania funkcji systemowej shmdt.
- shm_ctime
- Czas ostatniego wykonania funkcji systemowej shmctl, w wyniku którego zmienione zosta³o shmid_ds.
ZOBACZ TAK¯E
ftok(3), msgctl(2), msgget(2), msgrcv(2), msgsnd(2), semctl(2), semget(2), semop(2), shmat(2), shmctl(2), shmget(2), shmdt(2)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre