백엔드 면접 용어 사전
운영체제process

프로세스

실행 중인 프로그램의 독립된 주소 공간 단위. 서로 메모리를 공유하지 않아 통신에 IPC가 필요하다.

실행 중인 프로그램. 디스크에 있는 파일(프로그램)이 메모리에 올라와 CPU를 받는 상태가 되면 프로세스다.

메모리에 어떻게 잡히는가

OS는 프로세스마다 독립된 주소 공간을 준다. 그 안은 네 구역으로 나뉜다.

높은 주소
┌───────────────┐
│   스택        │  지역 변수, 함수 호출 정보 (아래로 자람)
├───────────────┤
│      ↓        │
│      ↑        │
├───────────────┤
│    힙         │  동적 할당(new, malloc) (위로 자람)
├───────────────┤
│  데이터       │  전역·정적 변수
├───────────────┤
│  코드(text)   │  실행할 기계어 (읽기 전용)
└───────────────┘
낮은 주소

스택과 힙이 서로를 향해 자라는 이유는 남은 공간을 둘이 나눠 쓰기 위해서다. 둘이 만나면 스택 오버플로 또는 메모리 부족이 된다.

독립이라는 말의 의미

프로세스 A가 주소 0x1000에 쓴 값을 프로세스 B는 볼 수 없다. B의 0x1000완전히 다른 물리 메모리를 가리킨다. MMU가 가상 주소를 프로세스마다 다른 물리 주소로 변환해 주기 때문이다.

그래서 안전하지만, 서로 대화하려면 별도 수단(IPC) 이 필요하다 — 파이프, 소켓, 공유 메모리, 메시지 큐, 시그널.

PCB — OS가 프로세스를 기억하는 방법

OS는 프로세스마다 PCB(Process Control Block) 라는 구조체를 커널 영역에 둔다.

PCB
├── PID (프로세스 번호)
├── 상태 (준비/실행/대기)
├── 레지스터 값 (PC, SP 등)   ← 컨텍스트 스위칭 때 저장·복원되는 것
├── 메모리 정보 (페이지 테이블 위치)
└── 열린 파일 목록

상태 전이

다이어그램 로딩 중…

면접 포인트

"프로세스를 여러 개 만들면 되지 왜 스레드를 쓰나?" → 프로세스 생성은 주소 공간을 통째로 만드는 무거운 작업이고, 서로 메모리를 못 봐서 통신 비용도 크다. 스레드는 주소 공간을 공유해 생성·전환·통신이 모두 싸다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 운영체제 — 프로세스/스레드·동기화·가상메모리