Search
moon
sun

왜 스레드가 프로세스보다 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가 다음 프로세스의 상태를 담을 수 있도록 미리 비워둠

참고자료 🔗