1. Inter-Process Communication
✅ 2가지 유형의 프로세스
- 각 process마다 address space가 존재하고 기본적으로 다른 프로세스의 address space에 접근하지 못함 (IPC 매커니즘을 통해서만 가능)
- Independent Process
- 독립 프로세스는 다른 프로세스의 실행에 영향을 받지 않음
- Cooperating Process
- 협력 프로세스는 다른 프로세스에 영향을 주거나 받을 수 있다
✅ IPC란?
-
프로세스가 서로 통신하고 작업을 동기화할 수 있도록 하는 메커니즘
-
이런 커뮤니케이션을 프로세스 간의 협력 방법으로 볼 수 있다.
-
sharing data를 통해 서로 통신할 수 있음
2. Signal
-
hardware가 신호를 탐지하면 해당 handler가 처리하듯이 software 적으로도 외부에서 signal을 날리면 이 signal에 대한 handler 처리하는 방식을 구현해보자!
-
즉, 특정 이벤트를 알려주기 위한 프로세스 간의 커뮤니케이션 방식이다
-
A process -> B process에게 signal을 보낼 수 있음
- 각 signal을 처리하는 handler가 존재함
-
software interrupt라고 볼 수 있음
3. Pipes
- 두 개의 process가 마치 pipe가 연결된 것처럼 작동되게 하는 것
- IPC 매커니즘 중 하나 = 프로세스 간의 통신하는 방법 중 하나
✅ 구분
- unidirectional pipe (단방향)
- bidirectional pipe (양방향)
- half-duplex : 양쪽으로 흐를 수는 있지만, 동시에 양쪽으로 흐를 순 없다 (특정 시점에서는 항상 단방향으로 흐른다)
- full-duplex : 동시에 양쪽으로 흐를 수 있다
✅ pipe 종류 2가지
1. ordinary pipe

- child - parent 프로세스 관계에서만 pipe 열 수 있음
- unidirectional하다
- parent에서 write하면 child에서 읽을 수 있는 구조
- 우리는 이 ordinary pipe만 알아볼거임
2. named pipe
- child - parent 프로세스가 아니더라도 가능한 파이프
- bidirectional하다
✅ Ordinary pipe 활용 예시
File descriptor
- OS에게 file을 주고 우린
file descriptor만 받아와서 이 값만 가지고 file을 처리한다
int fd = open("my_file", "r");
write(fd, "this data", strlen(buffer));
int sockfd = socket(AF_INET, SOCK_STREAM, ...);
close(sockfd);
int fd : file이나 기타 IO 리소스에 접근하는데 사용되는 고유한 식별자. 즉, my_file 열고 그 내용을 fd가 보유
- 어떻게
int 값이 file의 내용을 가지고 있냐?
- OS가 알아서 처리해주고 그 식별자(숫자)를 할당해주는 것 -> 이런걸
OS가 추상화 해준다라고 이해하면 된다
- 만약 parent를
fork하면 file descriptor도 그대로 child에게 복사된다
| Integer | Name | <unistd.h> |
|---|
| 0 | Standard input | STDIN_FILENO |
| 1 | Standard output | STOUT_FILENO |
| 2 | Standard error | STDERR_FILENO |
Ordinary Pipe in Linux
pipefd[1] : write 용
pipefd[1]을 통해 write하면 pipefd[0]을 통해 read 할 수 있다
- 중간에서 OS가 write한 내용을 buffering 해준다
- 실제 파일에 쓰고, 그걸 읽는게 아니라 buffer를 통해 읽고 쓰는 것
- 이렇게 Ordinary pipe를 통해 하나의 process에서는 write하고 이걸 다른 process에서 read가 가능해진다
self quiz 링크
https://overjoyed-goldfish-618.notion.site/f81e3c203cff4bfcb5841da8e9bfbc02?pvs=4