더북(TheBook)

멀티 스레드를 처리할 때도 콘텍스트 스위칭이 이뤄진다. 하지만 멀티 프로세스의 콘텍스트 스위칭보다 시간과 메모리 자원을 적게 사용한다. 앞서 설명했듯이 멀티 스레드는 스택을 제외한 힙, 데이터, 코드 영역을 공유하므로 레지스터에 저장하고 로드해야 하는 데이터가 상대적으로 적기 때문이다.

CPU에서 처리 중인 프로세스가 중간에 변경되어도 이전에 실행하던 코드를 이어서 실행할 수 있는 이유는 PCB에 프로그램 카운터와 스택 포인터 값이 저장되어 있기 때문이다. 프로그램 카운터(PC, Program Counter)프로세스가 이어서 처리해야 하는 명령어의 주소 값이고, 스택 포인터(stack pointer)스택 영역에서 데이터가 채워진 가장 높은 주소 값을 가리킨다. 이어서 실행할 명령어의 주소 값이 무엇인지, 데이터가 스택에 어디까지 채워져 있는지 알고 있으므로 콘텍스트 스위칭이 원활히 이뤄질 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.