출처: https://velog.io/@yanghl98/OS운영체제-IPC란
IPC(Inter Process Communication)란?
프로세스들끼리 서로 데이터를 주고받는 행위 또는 그에 대한 방법을 말한다.
프로세스는 완전히 독립된 실행객체이다. 서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는다는 장접이 있지만 독립되어 있는 만큼 별도의 설비가 없이는 서로간에 통신이 어렵다는 문제가 있다. 이를 위해서 커널 영역에서 IPC라는 내부 프로세스간 통신을 제공하게 되고 , 프로세스는 커널이 제공하는 IPC설비를 통해 프로세스간 통신을 할 수 있다.
IPC의 종류
1. 메시지 전달(Message Passing)
커널이 제공하는 API를 이용해서 커널 공간을 통해 통신한다. 메시키 큐를 사용하여 송신 프로세스는 큐에 enqueue, 수신 프로세스는 큐에 dequeue 하며 상호간 통신한다.
2. 메모리 공유(Shared Memory)
프로세스끼리 특정 공통의 메모리 영역을 공유하며 상호간 통신하는 방법. 데이터 자체를 공유하도록 지원하고 한 프로세스에서 변경한 메모리 내용을 다른 프로세스에서 접근할 수 있다. 공유 메모리는 커널에서 관리한다.
이러한 IPC 통신에서 프로세스 간 데이터를 동기화하고 보호하기 위해 세마포어와 뮤텍스를 사용한다.
세마포어란?
프로세스 간 메시지를 전송하거나, 공유 메모리를 통해 특정 데이터를 공유하게 되는 경우 문제가 발생할 수 있다. 공유된 자원의 데이터 혹은 임계영역(Critical Section) 등에 여러 Process 혹은 Thread가 접근하는 것을 막아준다.
(화장실이 여러개인 식당이라고 생각, 입구에서 몇개의 화장실이 비었는지 알려주는 전광판 존재)
뮤텍스란?
상호배제라고도 하는데 임계영역을 가진 쓰레드들의 Running Time이 서로 겹치지 않게 단독으로 실행되게 하는 길이다. 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 locking / unlocking을 사용한다.
(화장실 키가 하나 뿐인 식당이라고 생각하기)
임계영역: 여러 개의 쓰레드가 수행되는 시스템에서 각 쓰레드들이 공유하는 데이터를 변경하는 코드 영역으로 이것을 통해서 Race Condition을 막을 수 있다. (상호 배제, 진행, 한정된 대기)
'IT지식 > 운영체제' 카테고리의 다른 글
[운영체제] POSIX (0) | 2022.12.04 |
---|---|
[운영체제] 입출력 관리 (1) | 2022.12.04 |
[운영체제] 프로세스와 쓰레드 (0) | 2022.12.04 |
[운영체제] 운영체제의 구조와 동작원리 + @ (0) | 2022.12.04 |
[운영체제] 운영체제란? (0) | 2022.12.03 |