티스토리 뷰
process는 각자 자신만의 독립적인 주소공간을 가져,
다른 process가 이 주소공간을 참조하는 것을 허용하지 않는다.
그렇기 때문에 다른 process와 데이터를 주고받을 수 없다.
이를 해결하기 위해 운영체제는 IPC 기법을 통해 process들 간에 통신을 가능하게 해준다.
IPC(Inter-Process Communication)
process간 통신(IPC)에는 기본적으로 공유메모리(shared memory)와 메시지 전달(message passing)의 두 가지 모델이 있다.
공유메모리(shared memory)
- process들이 주소 공간의 일부를 공유한다.
- 공유한 메모리 영역에 읽기/쓰기를 통해서 통신을 수행한다.
- process가 공유 메모리 할당을 kernel에 요청하면 kernel은 해당 process에 메모리 공간을 할당해준다.
장점
- 커널의 관여 없이 데이터를 통신할 수 있기 때문에 IPC 속도가 빠르다는 장점이 있다.
단점
- process 간의 통신을 수월하게 만들지만 동시에 같은 메모리 위치에 접근하게 되면 일관성 문제가 발생할 수 있다.
메시지 전달(message passing)
- system call을 사용하여 구현된다.
- kernel을 통해 send(message)와 receive(message)라는 두 가지 연산을 제공받는다.
- 예를 들면, process1이 kernel로 message를 보내면 kernel이 process2에게 message를 보내주는 방식을 동작한다.
장점
- 메모리 공유보다는 속도가 느리지만, 충돌을 회피할 필요가 없기 때문에 적은 양의 데이터를 교환하는데 유용하다. 또 구현하기 쉽다는 장점이 있다.
대표적인 예시로는 pipe, socket, message queue 등이 있다.
# 요약
원칙적으로 process는 독립적인 주소 공간을 갖기 때문에, 다른 process의 주소 공간을 참조할 수 없다. 하지만 경우에 따라 운영체제는 process 간의 자원 접근을 위한 매커니즘인 프로세스 간 통신(IPC, Inter Process Communication)을 제공한다. 프로세스 간 통신 방법으로는 파이프, 파일, 소켓, 공유메모리 등을 이용한 방법이 있다.
'CS > 운영체제' 카테고리의 다른 글
Context Switching에 대해 설명해주세요. (0) | 2023.07.17 |
---|---|
Multi Process/Thread 환경에서 동기화 문제를 어떻게 해결하나요? (0) | 2023.07.17 |
Multi Process와 Multi Thread의 특징과 차이점에 대해 설명해주세요. (0) | 2023.07.17 |
Process와 Thread의 특징과 차이점에 대해 설명해주세요. (0) | 2023.07.17 |
사용자 수준 스레드와 커널 수준 스레드 차이에 대해 설명해주세요. (0) | 2023.07.17 |