CS/Operating System
[Operating System] Context Switching
hanseongbugi
2024. 4. 6. 17:13
Context Switching (컨텍스트 스위칭)?
- CPU가 현재 작업중인 프로세스에서 다른 프로세스로 넘어갈 때, 이전의 프로세스 정보를 PCB에 저장하고 새롭게 실행할 프로세스의 정보를 PCB에서 읽어와 레지스터에 적재하는 과정을 말한다.
- 보통 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 Context Switching이 발생
- 즉, 프로세스가 Ready → Running, Running → Ready, Running → Waiting처럼 상태 변경 시 발생!
- Process는 하나이상의 Thread로 동작하기 때문에 Context Switching의 최소 단위는 TCB이다.
Context?
- 프로그래밍에서 Context는 (동작, 작업들의 집합)을 (정의, 관리, 실행)하도록 하는 (최소한의 상태, 재료, 속성)을 포함하는 (객체, 구조체, 정보)이다.
- Process의 경우 현재 프로세스가 중단 되었을 때, 중단된 시점 부터 다시 프로세스를 실행하기 위한 정보를 Context라고 부른다.
- 이러한 Process의 Context 정보는 PCB(Proccess Control Block)이라는 구조체에 저장된다.
Scheduler
- CPU Scheduler라고 불리는 스케줄러는 Ready Queue에 존재하는 프로세스들을 어떤 순서로 실행시킬지 결정한다.
- 스케줄링은 scheduler라는 별도의 프로세스에 의해 수행되며, 모든 자원이 골고루 사용될 수 있도록 디자인되어 있다.
Context Switching 과정
- 요청 발생 : 인터럽트나 트렙에 의해서 컨텍스트를 바꿔야 한다는 요청이 들어옴
- 예) I/O 입출력, 예외, 시스템 콜 등
- PCB 에 프로세스 정보 저장 : 기존에 실행중이던 프로세스 P0 와 관련된 정보들을 PCB0 에 저장함
- running → waiting
- 운영체제는 새롭게 실행할 프로세스 P1 에 대한 정보를 해당 PCB 에서 가져와 CPU 레지스터에 적재함
- 요청 발생 : 인터럽트나 트렙에 의해서 컨텍스트를 바꿔야 한다는 요청이 들어옴 - P1의 상태를 PCB1에 저장
- PCB0에 저장된 P0의 상태를 불러와 복구한다.
- P0 실행
Process Context Switching & Thread Context Switching
- 프로세스는 하나 이상의 스레드를 포함한다.
- 이 스레드들은 고유한 Stack영역의 메모리와 고유한 registers를 할당 받으며 Heap영역의 메모리에서 선언된 데이터는 서로 공유한다.
- 동일한 프로세스 속에서 thread context switching이 발생할 경우 processor는 stack영역의 주소와 registers 주소를 포함한 thread의 context 정보만을 변경하면 된다.
- 하지만 process context switching이 발생할 경우 processor는 thread의 context뿐만 아니라 process의 context까지 모두 변경해야 한다.
Context Switching Overhead
- overhead는 과부하라는 뜻으로 보통 안좋은 말로 많이 쓰인다.
- 프로세스 작업 중에는 Overhead를 감수해야 하는 상황이 있다.
- 프로세스를 수행하다가 입출력 이벤트가 발생해서 대기 상태로 전환시킴
- 이때, CPU를 그냥 놀게 놔두는 것보다 다른 프로세스를 수행시키는 것이 효율적
- CPU에 계속 프로세스를 수행시키도록 하기 위해서 다른 프로세스를 실행시키고 Context Switching 하는 것
- CPU가 놀지 않도록 만들고, 사용자에게 빠르게 일처리를 제공해주기 위한 것이다.
출처
https://github.com/gyoogle/tech-interview-for-developer
GitHub - gyoogle/tech-interview-for-developer: 👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖
👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.
github.com
Context Switching 이란?
Processor가 수행하고 있는 Task(Process, Thread)의 context를 저장하고 다음 진행할 Task의 context를 읽어 수행하는 과정을 Context Switching이라고 부른다. 자세히 알아보자.
velog.io
https://velog.io/@sweet_sumin/PCBTCB
PCB(Process Control Block) & TCB(Thread Control Block)
기초를 보완하자
velog.io