컨텍스트 스위칭
우리가 컴퓨터를 쓸 때 하나의 프로그램만 실행하지 않습니다.
인터넷, 게임 등 여러개를 실행시킬 수 있죠?
프로그램들은 동시에 실행되는 것이 아니라 엄청나게 빠른 속도로 프로그램을 교체하며 실행시키는 것인데요.
예를 들어 A, B, C란 프로그램들을 실행시키자고 할 때 CPU는 하나의 코어를 기준으로 A -> B -> C -> A -> B -> A -> C 처럼 매우 빠르게 프로그램을 교체하는 것입니다.
이러한 방법을 '컨텍스트 스위칭'이라고합니다.
PCB
컨텍스트 스위칭은 PCB를 통해 이루어 집니다.
PCB란 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터인데요 메타데이터란 데이터를 설명하는 작은 데이터 입니다.
컨텍스트 스위칭은 프로그램들, 즉 프로세스들을 계속해서 교체하는 것인데 여기서 중요한 것은 교체되는 시점을 저장해놔야 하는 것 입니다. A를 하다가 B로 교체되었을 때 다시 A로 돌아가려면 A가 어디까지 했는지를 알아야 이 과정이 이루어질 수 있습니다.
PCB의 정보를 토대로 위의 과정을 진행합니다.
비용
컨텍스트 스위칭이 발생하면 캐시에 들어있던 데이터가 필요 없어집니다.
다른 프로세스로 교체되니 원래 프로세스가 사용하던 캐시는 필요 없겠죠?
즉, 캐시 클리어를 하기 때문에 캐시 미스가 발생합니다.
스레드 단위
컨텍스트 스위칭은 프로세스뿐 아니라 스레드 단위에서도 발생합니다.
스레드는 스택영역을 제외한 모든 메모리를 공유하기 때문에 스레드 컨텍스트 스위칭에 경우 비용이 더 적고 시간도 더 적게 걸립니다.
※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.
'CS > OS' 카테고리의 다른 글
교착상태 (0) | 2023.03.08 |
---|---|
멀티프로세싱, 멀티스레딩 (0) | 2023.03.07 |
프로세스의 메모리 구조 (0) | 2023.02.25 |
프로세스와 컴파일 과정 (0) | 2023.02.25 |
메모리 할당 (0) | 2023.02.13 |