2012年3月6日 星期二

IPC object的life time

IPC Objectlifetime
FIFOprocess
Posix mutexprocess
Posix conditional varprocess
Posix read/write lockprocess
fcntl recorder lockprocess
Posix message queuekernel
Posix named semaphorekernel
Posix memory semaphoreprocess
Posix shared memorykernel
System V message queuekernel
System V semaphorekernel
System V shared memorykernel
TCP socketprocess
UDP socketprocess
Unix domain socketprocess

明顯的kernel將會隨著有無釋放相關的IPC物件而影響lifetime,另外一個影響因素就是為是否為kernel等級,如果是kernel的lifetim,該物件如果沒有釋放,將會被保留到系統結束為止,換句話說,他會相當的佔用系統的資源

底下是兩大主流Posix與System V所支援的IPC的head file
IPC ObjectHeader filefunctions
Posix msg queuemqueue.hmq_open、mq_close、mq_closemq_getattr、mq_setattrmq_send、mq_receive、mq_notify
Posix semaphoresemaphore.hsem_open、sem_close、sem_unlinksem_init、sem_destroysem_wait、sem_trywait、sem_post、semgetvalue
Posix shared memorysys/mman.hshm_open、shm_unlinkftruncate、fstatmmap、munmap
System V msg queuesys/msg.hmsggetmsgctlmsgsndmsgrcv
System V semaphoresys/sem.hsemgetsemctlsemop
System V shared memorysys/shm.hshmgetshmctlshmatshmdt
在Posix系統,藍色為建立/開啟予刪除的function,而System V則是只有建立,同樣綠色都為屬性操作的函數,System V大多把刪除的部分交給綠色的function,最後紅色則是物件操作,看的出來system V大概應該是依賴輸入的flag/definition去作為辨識,雖然感覺function比posix少,但是操作起來語意可能反而不明顯,但是也換來了一個好處,Posix擴充可能必須新增function name,但是System V只要擴充參數的意義跟定義就好

沒有留言:

張貼留言