설명 순서는 다음과 같습니다.

1. Context Switching이란
2. Context Switching이 발생하는 이유
3. Context Switching의 자세한 과정
4. 프로세스 or 스레드 Context Switching의 비교

1. Context Switching이란

   - CPU(코어)에서 실행중이던 프로세스 or 스레드가 다른 프로세스 or 스레드로 변경되는 것을 의미

   - 오늘날의 컴퓨터에서 프로세스는 하나의 스레드를 가짐. 이유는 이 스레드가 CPU(코어)에서 작업의 단위이기 때문임. 따라서 프로세스에서 프로세스로 변경된다는 의미는 프로세스의 스레드가 다른 프로세스의 스레드로 변경된다는 의미와 같음

   - Context Switching이란 말을 풀어보면 '문맥 전환'인데, 여기서 문맥은 CPU가 한 프로세스를 실행시키기 위해서 레지스터, 캐시 또는 TLB 등등에 데이터를 올려놨다가, 다른 프로세스를 실행시키기 위해서 이러한 값들이 바뀌는 것을 의미함


2. Context Switching이 발생하는 이유

   - 컴퓨터 시스템의 변천사에서 본 것처럼, 프로세스의 응답률을 높이기 위해서 여러 프로세스가 짧은 시간동안 CPU를 번갈아가며 사용하게 되는데, 이렇게 프로세스가 바뀔때마다 Context Switching이 발생함

   - 이런 멀티태스킹 방식에서 Context Switching이 발생하는 예시를 살펴보면

   - P1 -> (컨텍스트 스위칭) -> P2 -> (컨텍스트 스위칭) -> P1 ...

   - 컨텍스트 스위칭은 OS의 커널에 의해서 실행됨


3. Context Switching의 자세한 과정

   - 진행중인 프로세스 or 스레드가 다른 프로세스 or 스레드로 바뀌려면, 진행중인 프로세스의 상태를 어딘가에 저장하고 다른 프로세스의 상태를 불러와야함. 그래야 바뀐 작업을 다시 이어나갈 수 있고, 현재 진행중인 것을 나중에 다시 이어나갈 수 있기 때문임

   - 과정

      ① 커널은 진행중인 프로세스 or 스레드의 상태정보를 특정 자료구조에 저장(프로세스는 PCB, 스레드는 TCB)

      ② 바꿀 프로세스 or 스레드의 상태정보를 가져와 그것을 바탕으로 레지스터 캐시 등에 데이터를 로드함

      ③ 바꾼 프로세스 실행


4. 프로세스 or 스레드 Context Switching의 비교

   - PCB보다 TCB가 더 가벼움. 이유는 프로세스는 독립적인 메모리를 사용하는 반면 스레드들은 같은 메모리를 공유함. 그래서 TCB는 stack 및 간단한 register 정보만을 저장하기에 더 가볍다.

   - 프로세스 Context Switching은 Cache 메모리를 초기화해야함. 이유는 프로세스들끼리는 메모리를 공유하지 않기 때문에, 사용되는 메모리 또한 다르기 때문임. 그렇지만, 스레드 Context Switching의 경우 Cache를 초기화하지 않음(다른 프로세스 간 스레드일 경우는 캐시 초기화를 함)


Context Switching에 대해 알아볼 수 있었습니다   

 

 

'운영체제' 카테고리의 다른 글

페이지 교체 알고리즘  (0) 2023.08.10
Deadlock  (0) 2023.08.08
프로세스와 스레드  (0) 2023.08.05
캐시(Cache)  (0) 2023.07.31
CPU 스케줄링  (0) 2023.07.31

+ Recent posts