카테고리 없음
(OS) 컨텍스트 스위칭
그린티_
2025. 5. 1. 23:40
반응형
📌 컨텍스트 스위칭
개념
- CPU가 현재 실행 중인 작업(프로세스 또는 스레드)의 상태를 저장하고, 다른 작업으로 전환할 때 상태를 복원하는 과정
컨텍스트 스위칭의 흐름
- 프로세스 A 실행 중 B는 실행을 기다리고 있는 상태
- 운영체제가 프로세스 B를 실행하겠다고 함
- 그러면 현재의 A의 상태를 저장
- B의 상태를 복원하여 실행
- 예시→ CPU가 그러면 잠깐 알림창 쪽으로 전환
- → 작업 상태 저장/불러오기를 하면서 컨텍스트 스위칭 발생
- → vscode로 코딩 중인데 알림창(크롬 알림)이 뜸
언제 발생하는가?
- 주어진 Time Slice를 다 사용했을 때
- 무슨 얘기냐면 CPU는 각 프로세스에 일정 시간만 할당함
- 이 시간이 끝나면 다음 프로세스에게 CPU를 넘겨줘야 하므로 발생
- I/O 작업을 해야할 때
- 파일 읽기, 프린트 출력 등을 요청할 때
- CPU는 대기할 필요 없이 다른 작업에게 넘겨주기 때문에 발생
- 다른 리소스를 기다려야 할 때
- CPU 외에 잠깐 접근할 수 없는 리소스(메모리, 락, DB 등)를 기다려야 한다면?
- CPU가 현재 프로세스를 멈추고 다른 프로세스 할당해서 발생!
- 인터럽트 (간단 설명 : 일하던 중 끼어들기!)
- 외부 장치나 시스템 이벤트(키보드 입력, 타이머 알람)가 발생하면
- 현재 실행 중인 작업을 멈추고 처리할 작업으로 전환할 때 발생
- 공통점
- CPU를 더 이상 쓸 수 없거나 운영체제가 다른 작업 먼저 처리하겠다고 판단할 때 발생!!!
사용 이유
- 여러 프로세스와 스레드들을 동시에 실행시키기 위해(그렇게 보이기 위해)
- 여러 프로세스와 스레드들이 공정하게 CPU 시간을 나눠 갖기 위해
- 높은 우선순위의 작업이 빠르게 처리될 수 있게
주의할 점 (오버헤드)
- 컨텍스트 스위칭은 상태 저장/복원 때문에 시간이 소모됨
- 너무 자주 발생하면 오히려 성능 저하가 생김 → 오버헤드 발생
캐시 오염 (Cache Pollution)
- 컨텍스트 스위칭이 일어나면 CPU 캐시에 저장된 데이터도 바뀌게 됨
- 자주 바뀌면 자주 쓰던 데이터가 밀려나서 캐시 성능이 떨어짐
- → 이게 바로 ‘캐시오염’ 인거임!
- 결국 스위칭이 너무 잦으면 캐시 적중률이 낮아지고 전체 시스템 성능이 하락할 수 있음
반응형