728x90
반응형
컨텍스트 스위칭
- CPU/코어에서 실행중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것
컨텍스트란 무엇인가?
- 프로세스/스레드 상태 CPU, 메모리 등등
컨텍스트 스위칭은 왜 필요한가?
- 여러 프로세스/스레드를 동시에 실행시키기 위해서
컨텍스트 스위칭은 언제 발생하는가?
- 주어진 time slice를 다 사용했거나 IO작업을 해야하거나 다른 리소스를 기다려야 하거나
예제)멀티태스킹 시스템에서 컨텍스트 스위칭
- 프로세스 두개 P1, P2에 CPU 한개가 있다.
- 타임슬라이스를 짧게해서 P1, P2가 돌아가면서 실행됨.
- 그래서 동시에 실행되는 것처럼 느껴짐.
컨텍스트 스위칭은 누구에 의해 실행되는가?
- OS 커널(kernel) - 각종 리소스를 관리/감독하는 역할
컨텍스트 스위칭은 구체적으로 어떤 과정으로 일어나는가?
- 다른 프로세스끼리 스위칭(프로세스 컨텍스트 스위칭)인지 같은 프로세스의 스레드들끼리 스위칭(스레드 컨텍스트 스위칭)인지에 따라 다르다.
프로세스 컨텍스트 스위칭과 스레드 컨텍스트 스위칭의 공통점은 무엇인가?
- 커널 모드에서 실행(컨텍스트 스위칭은 통제권이 커널에게 넘어감)
- CPU의 레지스터 상태를 교체
- 교체된 프로세스의 상태를 저장해 두었다가 다시 그 프로세스가 실행될때 저장해둔 상태에서 실행
프로세스 컨텍스트 스위칭과 스레드 컨텍스트 스위칭의 차이점은 무엇인가?
- 같은 프로세스에 속하는 스레드들의 컨텍스트 스위칭은 같은 프로세스에 속하기 때문에 그 메모리 영역에서 공유하지만, 다른 프로세스들끼리의 컨텍스트 스위칭은 메모리 주소체계가 달라서 가상메모리 주소 관련 처리를 추가로 수행.
- 서로 다른 프로세스는 서로 다른 독립적인 메모리 영역을 가지고 있다.
스레드 컨텍스트 스위칭이 더 빠른 이유는?
- 메모리 주소 관련 처리는 하지 않기 때문(같은 메모리 공간을 공유하기 때문에)
컨텍스트 스위칭이 미치는 간접적인 영향은?
- 캐시 오염
- CPU안에는 기본적으로 Cache가 있다. Cache는 메모리에서 데이터를 주고받을 때 자주 메모리에 접근하는 데이터를 Cache에 올려놓아서 메모리에 가는대신에 Cache의 정보를 사용하는 것이다. 그러면 메모리까지 가지 않아도 CPU와 붙어있는 캐시의 정보를 읽으면 되니까 좀 더 빠르다.
- 문제는 컨텍스트 스위칭이 되면 캐시에 가봤자 이전의 프로세스 or 스레드에서 실행되었던 정보들이 두고 있어서 내가 필요로 하는 정보가 없을 가능성이 더 크다. 그나마 같은 프로세스의 컨텍스트 스위칭의 경우에는 캐시에 내가 찾는 데이터가 있을 수 있다.
728x90
반응형