프로세스 컨텍스트 vs 스레드 컨텍스트

슈퍼콜라·2025년 5월 20일
1

스레드 컨텍스트 스위칭이 프로세스보다 빠른 이유
프로세스 컨텍스트 스위칭의 경우 MMU 새로운 주소 체계 바로 보도록 수정하고, TLB 가상 메모리 실제 메모리 저장된 캐시를 비우는 등의 메모리 주소 관련 작업을 하는데 스레드 컨텍스트는 CPU의 상태 정보만 바꿔주면 되기 때문

비유: 직원 교체 vs 의자만 바꾸기
등장인물 비유
프로세스 = 한 명의 직원 (개인 책상, 컴퓨터, 책, 로그인 정보 전부 다 가짐)
스레드 = 같은 직원 그룹 안의 팀원 (책상은 같이 쓰고, 컴퓨터/자료도 공유함)

컨텍스트 스위칭 비유
프로세스 컨텍스트 스위칭 = 직원 전체 교체
기존 직원이 모든 자료 정리하고 로그아웃

새 직원이 자신의 계정으로 로그인하고, 책상 세팅을 다시 함

기존에 쓰던 책상 도구들(컴퓨터 설정, 파일 위치, 책 등)을 모두 갈아치움

시간이 오래 걸림

-> 여기서 MMU 재설정, TLB 캐시 비우기 등 = 책상과 컴퓨터 완전 초기화 후 재설정
-> CPU 입장에서 굉장히 번거롭고 느린 작업

스레드 컨텍스트 스위칭 = 같은 팀에서 의자만 바꾸기
같은 책상에서 팀원이 의자만 바꿔 앉음

컴퓨터 로그인도 되어 있고, 자료도 공유하고 있으므로 설정 변경 없음

그냥 자신의 이름만 말하고 일을 이어서 함

-> 메모리는 공유되어 있어서, MMU/TLB 작업이 필요 없음
-> CPU 입장에선 거의 레지스터 상태(잠깐 메모)만 바꾸고 바로 실행 가능

그럼 프로세스를 쓸 이유가 있나? 그냥 다 스레드로 하면 되는 거 아닌가?

단순 성능이 아니라, 안정성, 독립성, 보안까지 포함한 관점으로 접근해야 함

스레드는 빠르지만, 프로세스는 안전함

프로세스 컨텍스트를 쓰는 이유

  1. 격리(Isolation)
    프로세스는 독립된 주소 공간을 가짐
    다른 프로세스의 메모리에 접근 불가 → 보안, 안정성 뛰어남
    하나가 죽어도 다른 프로세스는 영향 없음
    크롬 브라우저 탭 하나마다 프로세스가 따로 도는 이유 = 탭 하나 죽어도 나머지 영향 없게 하기 위함

  2. 스레드는 공유된 공간에서 돌아감
    같은 주소 공간을 공유하기 때문에 하나의 스레드가 잘못된 동작을 하면, 전체 프로세스가 터질 수 있음
    동기화 문제, 경쟁 조건 등으로 인해 디버깅과 관리가 어려움
    예: 서버에서 한 스레드가 메모리 오염시키면 전체 애플리케이션이 죽을 수 있음

  3. 그래서 현실에서는 절충함
    프로세스는 독립성과 안정성 확보용
    스레드는 프로세스 내부에서 성능 향상용으로 사용

profile
공부하는거 정리

0개의 댓글