Search
Duplicate

왜 스레드가 프로세스보다 Context Switching이 빠른가

키워드
운영체제
스레드
프로세스
Context Switching

알고 싶은 점

같은 프로세스 내의 스레드의 경우, 메모리 영역을 공유하기 때문에 프로세스 Context Switching보다 빠르다고 한다. 메모리 공유를 안 하면 무슨 일이 일어나는가

Context Switch

1. Context

프로세스/스레드의 상태
CPU, 메모리 등

2. Context Switching

실행중이던 프로세스/스레드가 다른 프로세스/스레드로 교체
→ 프로세스/스레드를 사용자 관점에서 동시에 사용하는 느낌이 들게 함
PCB라 하는 별도의 메모리 공간에 프로세스/스레드의 정보를 저장하여 데이터를 불러옴
현재 실행중인 상태 정보 PCB에 저장 → 다음 실행할 상태 정보 복원 → 교체

3. 트리거

멀티 태스킹
인터럽트 처리
사용자 및 커널 모드 전환

스레드/프로세스 Context Switching

1. 차이점

서로 다른 프로세스는 서로 다른 메모리 영역을 차지함
→ 프로세스 context switching은 메모리 주소 관련 처리를 추가로 수행해야함
→ MMU가 다음 프로세스를 보도록 + TLB 비우는 작업이 필요

2. MMU(Memory Management Unit)

가상 메모리와 물리 메모리 사이의 주소 변환 담당
→ 프로세스가 물리 메모리에서 할당되는 위치를 추상화하여 각 프로세스가 독립적인 주소 공간을 가지고 있는 것처럼 생성
한정적인 메모리 공간에서 사용자에게 더 많은 메모리 제공을 위해 만든 개념인 가상 메모리 생성을 도와줌

3. TLB(Translation Lookaside Buffer)

MMU 내에 존재하는 캐시
→ 데이터 접근 시간 절약

4. 캐시 오염

캐시는 CPU안에 존재하여 자주 사용하는 데이터를 저장해두고, 메모리에 접근하는 대신 캐시에 접근하여 속도 향상을 추구
Context Switching이 자주 일어나 캐시 안에 이전 프로세스의 정보가 남아있게 되면, 캐시 대신 메모리에 직접 접근하게 됨
→ 오버헤드 발생

결론

서로 다른 프로세스의 context switching의 경우는 메모리 공유를 안 하기 때문에 메모리 관련 처리가 따로 필요
MMU가 다른 프로세스를 보도록 설정 + TLB가 다음 프로세스의 상태를 담을 수 있도록 미리 비워둠

참고자료