프로세스와 스레드의 동작 방식과 멀티 처리 구조에 대해 조금 더 심화적으로 정리해보겠습니다.
1. 멀티 프로세스와 멀티 스레드
먼저 멀티라는 개념부터 살펴보겠습니다.
멀티 프로세스란?
멀티 프로세스는 여러 개의 프로세스를 동시에 실행하는 구조입니다.
각 프로세스는 독립적인 주소 공간을 가지고 있기 때문에 서로의 메모리에 직접 접근할 수 없습니다.
예시
크롬 브라우저에서 탭을 여러 개 열면, 각 탭이 별도의 프로세스로 동작하는 경우가 많습니다.
멀티 프로세스의 특징
- 프로세스 간 메모리 영역이 분리되어 있음
- 하나의 프로세스가 죽어도 다른 프로세스에는 영향이 적음
- 대신 프로세스 생성과 문맥 교환 비용이 큼
멀티 스레드란?
멀티 스레드는 하나의 프로세스 내부에서 여러 개의 스레드를 실행하는 구조입니다.
멀티 스레드의 특징
- 메모리를 공유하기 때문에 자원 사용 효율이 좋음
- 스레드 생성 비용이 비교적 작음
- 대신 동기화 문제가 발생할 수 있음
2. 컨텍스트 스위칭 (Context Switching)
운영체제는 CPU를 여러 작업이 번갈아 사용하도록 합니다.
이때 현재 실행 중인 작업의 상태를 저장하고 다른 작업을 실행하는 과정을 컨텍스트 스위칭이라고 합니다.
컨텍스트 스위칭 과정
1. 현재 실행 중인 프로세스(또는 스레드)의 상태를 PCB에 저장
2. 다음 실행할 프로세스의 상태를 PCB에서 복원
3. CPU가 다음 작업을 수행
Q. 왜 비용이 발생할까?
컨텍스트 스위칭 시에는 다음 작업들이 필요합니다.
- 레지스터 저장
- 프로그램 카운터 저장
- 캐시 무효화 가능성
- 메모리 매핑 변경 (프로세스 전환 시)
특히 프로세스 전환이 스레드 전환보다 비용이 큰 이유는 주소 공간까지 변경되기 때문입니다.