알고 싶은 점
•
같은 프로세스 내의 스레드의 경우, 메모리 영역을 공유하기 때문에 프로세스 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가 다음 프로세스의 상태를 담을 수 있도록 미리 비워둠