database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9781 게시물 읽기
No. 9781
dynamic shared memory 질문드립니다.
작성자
검콤이(검콤이)
작성일
2017-04-04 10:35
조회수
7,722

 안녕하세요.

 

9.4 부터는 dynamic_shared_memory 라는 파라미터가 생긴거 같더라구요..

값이 posix, sysv, windows, mmap, none 이렇게 있는거 같은데

메뉴얼을 봐도 잘 이해가 가질 않습니다..

이해하기 쉽게 설명해주실분 계신가요..

 

 

Specifies the dynamic shared memory implementation that the server should use. 

Possible values are posix (for POSIX shared memory allocated using shm_open), 

sysv (for System V shared memory allocated via shmget), 

windows (for Windows shared memory), 

mmap (to simulate shared memory using memory-mapped files stored in the data directory), 

and none (to disable this feature). Not all values are supported on all platforms; the first supported option is the default for that platform. 

The use of the mmap option, which is not the default on any platform, is generally discouraged because the operating system may write modified pages back to disk repeatedly, 

 

이 글에 대한 댓글이 총 3건 있습니다.

긴 이야기입니다.

옛날에, (지금도) 프로세스간 자료를 서로 주고 받을 방법으로 소켓 통신 말고 더 빠른게 뭐가 있을까 고민한 사람들이 OS의 공유 메모리 영역에 자료를 두고 그걸 다른 프로세스가 사용할 수 있도록 하겠다는 생각을 구현한 것이 IPC랍니다. 이걸 SystemV 계열 OS에서 구현했고, 리눅스에서 그대로 가져옵니다. 흔히 말하는 세마포어, 쉐어메모리 이런 용어들이 ipc의 중요 용어들입니다.

그런데, 이 방식이 국제 산업표준(POSIX)으로 수렴합니다. 흔히 말하듯이 기업의 독점에 대한 군소 단체들의 반항인게죠. 여튼 이런 저런 이유로 유닉스 범용 OS에서 모두 똑 같은 방식으로 프로세스간 자료를 공유 할 수 있는 방법이 표준으로 발표되고, SystemV 계열에서는 자신이 사용하는 ipc 기법을 posix 기법으로도 사용할 수 있게 인터페이스를 제공하게 되면서, 일단락됩니다.  posix 공유 메모리 기법은 아주 단순합니다. 그냥 하나의 파일에 쓰고, 그 파일을 다른 프로세스가 읽는 방식입니다. 초창기 BSD 계열 OS는 정말 이랬습니다. 이렇게 하면, SystemV에서 이야기하던 세마포어 개수가 부족하다느니, 공유 메모리가 부족하다느니 이런 문제를 피할 수 있겠죠.

리눅스는 BSD 계열과, SystemV 계열 OS의 장점들만 잘 가져와서 둘 다 잘 지원합니다. 그래서, sysv 쪽을 선택하면, ipcs 에서 그 상황을 볼 수 있고, posix 를 쓰면 /dev/shm 에서 볼 수 있습니다.

이와 달리 독자적으로 MS 동네에서도 자신들의 프로세스간 자료 공유 방법을 구현했고, (내부적으로는 어떻게 움직이는지는 모르겠습니다) 그 방법을 예전에는 PG 쪽에서 윈도우즈 환경이면 코드를 분리했었는데, 이 부분을 인터페이스화 해서 환경설정으로 변경할 수 있도록 한 것입니다.

mmap은 단순하게 옛날 posix 기법을 사용한 것입니다. 프로세스간 자료 공유를 pg 자체적으로 파일 기반으로 아에 구현해 버린 것이죠. 이렇게 하면, 공유 메모리를 사용할 수 있는 표준 인터페이스를 제공하지 않는 OS 환경에서도 프로세스간 자료 공유를 할 수 있게 되었습니다.

 

김상기(ioseph)님이 2017-04-04 11:23에 작성한 댓글입니다.

 자세한 설명 감사드립니다!

그럼 windows 라는 값은

windows OS 에서만 사용할 수 있는 것인가요?

검콤이(검콤이)님이 2017-04-04 11:31에 작성한 댓글입니다.

windows 버전 얼마이상부터인지는 저도 모릅니다. 아무튼 리눅스에서 windows 이리 지정하면 서버 기동이 안될 듯

김상기(ioseph)님이 2017-04-04 11:40에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9784테이블 생성 기본키와 인덱스 관계문의 드립니다. [1]
김범식
2017-04-06
7027
9783event trigger 질문 [4]
검콤이
2017-04-04
6738
9782postgresql설치 질문입니다. [4]
postgres
2017-04-04
7797
9781dynamic shared memory 질문드립니다. [3]
검콤이
2017-04-04
7722
9780PostgreSQL 이중화 관련 [3]
검콤이
2017-03-31
7723
9779postgreSQl vacuum 관련 [3]
검콤이
2017-03-31
7407
9778Oracle의 synonym 과 같은 역할을 하는게 있나요?? [1]
전산천재
2017-03-28
9237
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.053초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다