프로세스는 「실행 중인 프로그램」입니다.
디스크의 실행 파일은 정적 데이터, 그게 메모리에 올라가 CPU·메모리·파일·네트워크 자원을 사용하며 동작 중인 상태가 프로세스.
같은 프로그램(예: 크롬)이 여러 번 실행되면 각각이 별개의 프로세스.
프로세스의 자원.
1) 메모리 — 코드·데이터·스택·힙.
2) 파일 디스크립터 — 열린 파일·소켓.
3) PID — 고유 ID.
4) 사용자·그룹 — 권한.
5) 환경변수.
6) 작업 디렉토리.
각자 독립된 환경.
프로세스 트리.
모든 프로세스는 부모 프로세스가 있고, 부모-자식 관계로 트리를 이룹니다.
PID 1은 init(systemd) — 모든 프로세스의 시조.
pstree 명령으로 트리 시각화.
fork와 exec.
새 프로세스는 「fork」(부모 복제) → 「exec」(다른 프로그램으로 교체) 패턴.
bash가 명령을 실행할 때마다 fork + exec.
유닉스의 기본 모델.
프로세스 vs 스레드.
프로세스는 「독립된 메모리 공간」, 스레드는 「프로세스 안에서 메모리 공유하는 작은 실행 흐름」.
한 프로세스가 여러 스레드 가능 — 데이터 공유 쉽지만 동기화 까다로움.
리눅스는 스레드도 내부적으로 「가벼운 프로세스」로 다룸.
한 줄 요약
프로세스는 실행 중인 프로그램, 메모리·파일·PID·권한 등 자원 보유.
부모-자식 트리(시조 PID 1), fork+exec로 생성.
스레드는 프로세스 안의 가벼운 실행 흐름.
더 알아볼 것
- pstree로 프로세스 트리
- exec 시스템 호출
- 좀비·고아 프로세스