다음 위로 이전 목차 리눅스 프로그래머를 위한 가이드

내부와 사용자 자료 구조 (Internal and User Data Structures)

공유 메모리 세그먼트를 위해 커널에서 관리되는 자료 구조를 간단히 살펴보자.



Kernel shmid_ds structure

메세지 큐 또는 세마퍼 집합에서와 같이, 커널은 주소 공간안이 존재하는 각각의 공유 메모리 세그먼트에 대해 특별한 내부 자료 구조를 관리한다. 이 구조는 shmid_ds 타입으로 다음과 같이 linux/shm.h에 정의되어있다.


	/* 시스템안에서 각 공유 메모리 세그먼트에 대한 shmid 자료 구조 */
        struct shmid_ds {
                struct ipc_perm shm_perm;        /* 동작 허가사항 */
                int     shm_segsz;               /* 세그먼트의 크기(bytes) */
                time_t  shm_atime;               /* 마지막 attach 시간 */
                time_t  shm_dtime;               /* 마지막 detach 시간 */
                time_t  shm_ctime;               /* 마지막 change 시간 */
                unsigned short  shm_cpid;        /* 생성자의 pid */
                unsigned short  shm_lpid;        /* 마지막 동작자의 pid */
                short   shm_nattch;              /* 현재 attaches no. */

                                                 /* the following are private */

                unsigned short   shm_npages;     /* 세그먼트의 크기 (pages) */
                unsigned long   *shm_pages;      /* array of ptrs to frames -> SHMMAX */ 
                struct vm_area_struct *attaches; /* descriptors for attaches */
        };

이 구조상의 동작은 특별한 시스템 호출에 의해만 수행되고, 직접적으로 다루어 지지 말아야 한다. 여기 보다 적절한 필드의 설명이 있다.

shm_perm

이것은 ipc-perm 구조체의 한 예로, linux/ipc.h 안에 정외되어있다. 이것은 세그먼트의 생성자에 대한 정보와 접근 허가사항을 포함한 세그먼트에 대한 허가사항 정보를 갖는다.

shm_segsz

세그먼트의 크기 (bytes로 측정된)

shm_atime

마지막 프로세스가 세그먼트를 attach한 시간

shm_dtime

마지막 프로세스가 세그먼트를 detach한 시간

shm_ctime

이 구조가 마지막으로 바뀐 시간 (mode change, etc)

shm_cpid

생성한 프로세스의 PID

shm_lpid

세그먼트에서 동작을 수행한 마지막 프로세스의 PID

shm_nattch

현재 세그먼트에 attach된 프로세스의 수


이전:기본 개념 (Basic Concepts) 다음:시스템 호출:shmget()

Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved

Email To:Webmaster , Another address
LAST UPDATE Nov 28,1997
Created Nov 28,1997