inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리눅스 IPC 프로그래밍 - 이론과 실습

Linux IPC Programming 소개

Shared Memory와 동기화 관련

1180

DHPARK

작성한 질문수 3

1

안녕하세요. 첫 강의 잘 들었습니다.

IPC 중에 2번째 방법으로 Shared Memory를 이용하거나

3번재 방법으로 동기화를 이용한다고 하셨는데

Shared Memory는 메모리 동시 접근하는 '위치'이고, 동기화는 동시 접근시 발생하는 문제를 예방하기 위한 '방법' 이라서

결국엔 같이 사용해야 하는 것 아닌가요?

혹시 둘을 구분하는 다른 예시가 있는지 (혹시나 해서) 여쭈어 봅니다.

linux

답변 1

1

런잇(ProgCoach4U)

안녕하세요. 질문자님.먼저, 답변이 늦어져 죄송합니다.ㅠㅠ

shared memory롸 동기화 기법의 연관성에 대해 질문을 하셨는데요.. 말씀하신 대로 같이 사용하게 되는 경우가 많습니다. 하지만 필수인 것은 아닙니다.  

말씀하신 것처럼 shared memory에 대해 서로 다른 프로세스나 쓰레드가 read/write를 하게 되는 경우 뮤텍스 등의 동기화 기법이 필요합니다. 그래야 데이터가 깨지지 않습니다.

하지만 하나의 프로세스나 쓰레드만 read/write를 하는 경우에는 동기화 없이 shared memory를 사용할 수도 있습니다. 이런 경우에 왜 shared memory를 쓰나라고 반문을 하실 수 있는데요.. 프로세스가 재시작된다 하더라도 사용하던 데이터를 그대로 사용하고 싶은 경우 이렇게 사용할 수 있습니다. 한 프로세스가 파일에 mmap을 걸어 사용하는 경우도 이것에 포함되겠네요.

추가 질문 있으시면 댓글 남겨주세요! 감사합니다!!

fork() 후 address

0

40

2

bind(): Address already in use

0

57

2

POSIX named semaphore 자원이 제대로 해지되지 못한 상태로 프로세스가 종료됐을 때 해당 semaphore 재사용 방법

0

215

2

강의 순서

0

262

1

강의자료 질문

0

243

1

수업 관련 질문

0

354

3

안녕하세요! 메세지 큐 방식에 대해 질문있습니다.

0

268

1

리눅스는 디버깅이 없나요?

1

722

1

fcntl 에서 Read/Write 기능

1

354

1

시스템 프로그래밍 향후 공부

1

506

1

거의 모든 함수를 static 선언하시는 이유는 무엇인가요?

1

2323

1

SHM_REMAP

1

317

2

recvfrom 질문

1

715

6

컴파일 질문입니다

1

675

1

partial send/recv에 관하여

1

670

1

스레드끼리의 통신에도 적용가능한가요?

1

374

1

File Lock API - 정리 table에서 multi-thread 사용가능시....

1

412

1

WSL Ubuntu에서 메시지 큐

1

464

1

shared memory(14강) live programming file mapping 에 관한 질문입니다.

1

202

1

에러 - bind(): Address already in use

1

1136

1

POSIX MQ의 설정 문의

1

601

2

accept 함수에 대한 문의

1

291

1

datagram socket 구현시 recvfrom에서 블록킹됩니다.

1

1503

1

counting semaphore에 대해서 질문이 있습니다

0

304

3