학습 자료 글/컴퓨터시스템

컴퓨터시스템 기초 17. 시스템 호출과 IPC는 프로세스 사이를 어떻게 잇는가

cedis 2026. 3. 31. 16:26

[컴퓨터 시스템] 17. 시스템 호출과 IPC는 프로세스 사이를 어떻게 잇는가

16편에서 프로세스와 가상 메모리를 봤다면, 이제 서로 격리된 실행 단위가 운영체제와 어떻게 대화하고, 또 서로 어떻게 협력하는지 봐야 합니다. 바로 시스템 호출과 IPC가 그 경계면을 드러냅니다.

이번 글은 사용자 프로그램과 커널의 경계, 그리고 프로세스 사이 통신을 하나의 흐름으로 묶어 설명합니다.

먼저 짚고 갈 용어
system call: 사용자 프로그램이 운영체제 서비스에 공식적으로 요청하는 진입점
kernel: 운영체제의 핵심 권한 영역
IPC: 프로세스 사이 통신 기법
이번 글에서 다루는 것
  • 왜 시스템 호출이 필요한지
  • 사용자 공간과 커널 공간을 구분하는 이유
  • IPC가 필요한 이유와 대표 방식
  • 공유 메모리와 메시지 전달을 비교하는 관점
  • 적용형 미니 문제
한눈에 보는 흐름
1
왜 시스템 호출이 필요한지
2
사용자 공간과 커널 공간을 구분하는 이유
3
IPC가 필요한 이유와 대표 방식
4
공유 메모리와 메시지 전달을 비교하는 관점

1. 시스템 호출은 운영체제 서비스로 들어가는 공식 문이다

프로그램이 파일을 열거나, 네트워크를 쓰거나, 새 프로세스를 만드는 일은 사용자 코드만으로 직접 해결할 수 없습니다. 이런 일은 운영체제가 가진 권한과 관리 기능을 거쳐야 하며, 그 공식 진입점이 시스템 호출입니다.

그림으로 먼저 보기
파일 열기
왜 시스템 호출이 필요한가: 저장장치와 권한 관리를 운영체제가 맡기 때문
프로세스 생성
왜 시스템 호출이 필요한가: 실행 단위와 자원 배분을 운영체제가 관리하기 때문
메모리 요청
왜 시스템 호출이 필요한가: 가상 메모리와 보호 정책이 필요하기 때문

즉 시스템 호출은 '운영체제를 부탁해서 무언가 하게 만드는 방식'으로 이해하면 좋습니다.

하고 싶은 일왜 시스템 호출이 필요한가
파일 열기저장장치와 권한 관리를 운영체제가 맡기 때문
프로세스 생성실행 단위와 자원 배분을 운영체제가 관리하기 때문
메모리 요청가상 메모리와 보호 정책이 필요하기 때문

2. 사용자 공간과 커널 공간을 나누는 이유는 보호다

프로그램이 아무 메모리나 직접 건드릴 수 있다면 시스템 전체가 쉽게 무너집니다. 그래서 사용자 프로그램은 제한된 공간에서 실행되고, 운영체제 핵심은 더 높은 권한을 가진 커널 공간에서 실행됩니다.

이 구분 덕분에 프로그램은 함부로 시스템 전체를 건드리지 못하고, 필요한 일은 시스템 호출을 통해 요청하게 됩니다.

16편과 이어지는 감각
가상 메모리와 프로세스 보호를 본 뒤에야 사용자/커널 경계가 왜 필요한지 훨씬 자연스럽게 읽힙니다.

3. IPC는 격리된 프로세스가 협력하게 만든다

프로세스는 서로 격리돼 있어 안전하지만, 현실에서는 데이터와 결과를 주고받아야 할 때가 많습니다. 이때 필요한 것이 IPC입니다.

그림으로 먼저 보기
메시지 전달
강점: 경계가 비교적 명확하다
주의할 점: 복사와 통신 비용이 들 수 있다
공유 메모리
강점: 빠르게 큰 데이터를 함께 볼 수 있다
주의할 점: 동기화 책임이 더 커진다

IPC는 크게 메시지를 주고받는 방식과, 일부 메모리를 함께 보는 방식으로 나눠 생각하면 초반 이해가 쉽습니다.

방식강점주의할 점
메시지 전달경계가 비교적 명확하다복사와 통신 비용이 들 수 있다
공유 메모리빠르게 큰 데이터를 함께 볼 수 있다동기화 책임이 더 커진다

4. 현실적인 예시로 보면 차이가 더 잘 보인다

로그를 남기기 위해 운영체제에 파일 쓰기를 요청하는 것은 시스템 호출 문제이고, 웹 서버 프로세스와 워커 프로세스가 작업 결과를 주고받는 것은 IPC 문제에 가깝습니다. 둘 다 '경계 바깥과 상호작용한다'는 점에선 닮았지만, 대화 상대가 다릅니다.

구분 기준
운영체제 서비스에 부탁하는가, 아니면 다른 프로세스와 데이터를 주고받는가를 먼저 물으면 시스템 호출과 IPC 구분이 쉬워집니다.

5. 직접 해볼 문제: 어떤 상황에서 어떤 방식이 더 자연스러울까

이 문제는 정답 하나를 외우는 것이 아니라, 경계와 비용을 함께 생각해 보는 연습입니다.

미니 문제
두 프로세스가 아주 큰 데이터 덩어리를 자주 주고받아야 한다면, 메시지 전달과 공유 메모리 중 무엇이 더 자연스러울지 그리고 왜 동기화 문제가 함께 따라오는지 설명해 보세요.

이번 글에서 기억할 것

시스템 호출은 사용자 프로그램이 운영체제 서비스에 접근하는 공식 진입점이다.
사용자 공간과 커널 공간 구분은 보호와 안정성을 위해 필요하다.
IPC는 격리된 프로세스가 협력하게 만드는 방법이며, 메시지 전달과 공유 메모리는 서로 다른 장단점을 가진다.

스스로 점검

시스템 호출이 왜 필요한지 운영체제 권한 관점에서 설명할 수 있는가
사용자 공간과 커널 공간을 왜 나누는지 말할 수 있는가
메시지 전달과 공유 메모리의 장단점을 구분할 수 있는가

다음 글 예고

다음 글에서는 한 프로세스 안에서 여러 실행 흐름이 동시에 움직일 때 생기는 스레드와 동기화 문제로 넘어갑니다.

한 줄 정리
시스템 호출과 IPC는 모두 경계를 넘는 상호작용이지만, 하나는 운영체제 서비스로의 요청이고 다른 하나는 프로세스 사이 협력이라는 점에서 구분됩니다.