[컴퓨터 시스템] 17. 시스템 호출과 IPC는 프로세스 사이를 어떻게 잇는가
16편에서 프로세스와 가상 메모리를 봤다면, 이제 서로 격리된 실행 단위가 운영체제와 어떻게 대화하고, 또 서로 어떻게 협력하는지 봐야 합니다. 바로 시스템 호출과 IPC가 그 경계면을 드러냅니다.
이번 글은 사용자 프로그램과 커널의 경계, 그리고 프로세스 사이 통신을 하나의 흐름으로 묶어 설명합니다.
- 왜 시스템 호출이 필요한지
- 사용자 공간과 커널 공간을 구분하는 이유
- IPC가 필요한 이유와 대표 방식
- 공유 메모리와 메시지 전달을 비교하는 관점
- 적용형 미니 문제
1. 시스템 호출은 운영체제 서비스로 들어가는 공식 문이다
프로그램이 파일을 열거나, 네트워크를 쓰거나, 새 프로세스를 만드는 일은 사용자 코드만으로 직접 해결할 수 없습니다. 이런 일은 운영체제가 가진 권한과 관리 기능을 거쳐야 하며, 그 공식 진입점이 시스템 호출입니다.
즉 시스템 호출은 '운영체제를 부탁해서 무언가 하게 만드는 방식'으로 이해하면 좋습니다.
| 하고 싶은 일 | 왜 시스템 호출이 필요한가 |
|---|---|
| 파일 열기 | 저장장치와 권한 관리를 운영체제가 맡기 때문 |
| 프로세스 생성 | 실행 단위와 자원 배분을 운영체제가 관리하기 때문 |
| 메모리 요청 | 가상 메모리와 보호 정책이 필요하기 때문 |
2. 사용자 공간과 커널 공간을 나누는 이유는 보호다
프로그램이 아무 메모리나 직접 건드릴 수 있다면 시스템 전체가 쉽게 무너집니다. 그래서 사용자 프로그램은 제한된 공간에서 실행되고, 운영체제 핵심은 더 높은 권한을 가진 커널 공간에서 실행됩니다.
이 구분 덕분에 프로그램은 함부로 시스템 전체를 건드리지 못하고, 필요한 일은 시스템 호출을 통해 요청하게 됩니다.
3. IPC는 격리된 프로세스가 협력하게 만든다
프로세스는 서로 격리돼 있어 안전하지만, 현실에서는 데이터와 결과를 주고받아야 할 때가 많습니다. 이때 필요한 것이 IPC입니다.
IPC는 크게 메시지를 주고받는 방식과, 일부 메모리를 함께 보는 방식으로 나눠 생각하면 초반 이해가 쉽습니다.
| 방식 | 강점 | 주의할 점 |
|---|---|---|
| 메시지 전달 | 경계가 비교적 명확하다 | 복사와 통신 비용이 들 수 있다 |
| 공유 메모리 | 빠르게 큰 데이터를 함께 볼 수 있다 | 동기화 책임이 더 커진다 |
4. 현실적인 예시로 보면 차이가 더 잘 보인다
로그를 남기기 위해 운영체제에 파일 쓰기를 요청하는 것은 시스템 호출 문제이고, 웹 서버 프로세스와 워커 프로세스가 작업 결과를 주고받는 것은 IPC 문제에 가깝습니다. 둘 다 '경계 바깥과 상호작용한다'는 점에선 닮았지만, 대화 상대가 다릅니다.
5. 직접 해볼 문제: 어떤 상황에서 어떤 방식이 더 자연스러울까
이 문제는 정답 하나를 외우는 것이 아니라, 경계와 비용을 함께 생각해 보는 연습입니다.
이번 글에서 기억할 것
스스로 점검
다음 글 예고
다음 글에서는 한 프로세스 안에서 여러 실행 흐름이 동시에 움직일 때 생기는 스레드와 동기화 문제로 넘어갑니다.
'학습 자료 글 > 컴퓨터시스템' 카테고리의 다른 글
| 컴퓨터시스템 기초 19. 분산 메모리와 가속기는 한 머신 밖에서 무엇을 바꿀까 (0) | 2026.03.31 |
|---|---|
| 컴퓨터시스템 기초 18. 스레드와 동기화는 왜 멀티코어에서 필수가 될까 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 16. 운영체제는 프로세스와 가상 메모리를 어떻게 관리할까 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 15. 코드 최적화는 왜 측정과 locality가 먼저일까 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 14. 메모리 계층은 왜 프로그램 속도를 바꿀까 (0) | 2026.03.31 |