본문 바로가기

System Security/Theory

Chapter 11. Shared Memory

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