Chapter 11. Shared Memory
1. Shared Memory
- IPC(Inter Process Communication)
· Process와 Process가 통신하는 방법을 말한다.
· IPC의 종류
◦ Signal
◦ Piped
◦ Message Queue
◦ Shared Memory
◦ Mail Box
- Shared Memory
· IPC(Inter Process Communication)를 Data 공유 방법으로 System V 즉, UNIX 기반 System에서 사용되는 방법이다.
· 32Bit System은 각 Process에 제공되는 연속적인 4GB의 Virtual Memory를 사용하는데 Virtual Memory중 절반은 사용자(Stack, Heap)가 사용하고 나머지 절반은 Kernel(운영체제가 관리)이 사용한다.
· Shared Memory는 Virtual Memory에서 Kernel이 사용하는 절반을 활용해 Process간에 통신하는 것을 이용한 기법이다.
· Process 간의 통신을 하기 위한 것이기 때문에 여러 Process가 한 Memory 영역에 동시에 접근하는 기법이다.
· 과다한 복사를 방지하고 해당 Process 간의 통신을 위해 고안되었다.
· Shared Memory의 사용
◦ 일반적인 Process는 각각의 독립적인 Memory 영역을 사용하지만 Shared Memory를 사용하는 Process들은 Memory 공간을 공유해 사용한다.
◦ Process 간의 Memory 공유 덕분에 Data의 복사와 같은 불필요한 자원소모가 필요가 없어지며 처리속도가 빠르게 된다.
◦ 문제점
▹ 여러 개의 Process가 한 Memory 영역에 접근하기 때문에 Cache Coherence(일관성)에서 문제가 발생하는데 Cache가 잠시 Data 값을 저장한 후 Cache 값과 일치해야하는 Shared Memory 영역의 값과 비교했을 시 값이 서로 달라 문제가 발생할 수 있기 때문에 이러한 Data 불일치 문제를 해결해줘야 한다.
▹ 하나의 기계 내에서만 사용가능하기 때문에 Network를 이용해 다른 기계와 Memory를 공유하는 것이 불가능하다.
▹ 한 Memory 영역을 공유하는 점으로 볼 때 같은 영역의 한 사용자의 권한을 악용해 Shared Memory의 영역을 빼내면 다른 사용자의 Memory 정보 또한 같기 때문에 동시에 두 사용자의 정보를 빼올 수 있다.
2. Shared Memory 관련 함수
- shmget
· Shared Memory를 생성하거나 생성되어 있는 Shared Memory의 ID 값 반환
· Header File 및 기본 형태
1 2 3 | #include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, int size, int shmflg); | cs |
◦ 매개변수
▹ key : Shared Memory를 읽기 위한 Key 변수
▹ size : Shared Memory Size
▹ shmflg : Shared Memory의 생성 또는 사용 Option 지정(IPC_CREAT : 생성 | 0666 : Memory 사용 권한 etc.)
- shmat
· 생성된 Shared Memory를 Process에 연결
· Header File 및 기본 형태
1 2 3 | #include <sys/types.h> #include <sys/shm.h> void xshmat(int shmid, const void xshmaddr, int shmflg); | cs |
◦ 매개변수
▹ shmid : Shared Memory를 생성할 때 만들어진 Shared Memory의 ID
▹ xshmaddr : Shared Memory가 할당된 주소
▹ shmflg : Shared Memory 사용 Option 지정(SHM_RND : Process에 Shared Memory 주소 알맞게 할당 | SHM_RDONLY : Shared Memory를 읽기 전용으로 설정)
- shmdt
· Process에 연결된 Shared Memory 연결해제
· Header File 및 기본 형태
◦ 매개변수
1 2 3 | #include <sys/types.h> #include <sys/shm.h> void xshmat(const void xshmaddr); | cs |
▹ xshamaddr : Shared Memory가 할당된 주소
'System Security > Theory' 카테고리의 다른 글
Chapter 12. Format String Attack (0) | 2015.08.18 |
---|---|
Chapter 10. Race Condition Attack (0) | 2015.08.18 |
Chapter 9. 취약점 분석 (0) | 2015.08.18 |
Chapter 7. BOF(Buffer OverFlow) III (0) | 2015.08.18 |
Chapter 6. BOF(Buffer OverFlow) II (0) | 2015.08.18 |