PCB와 Context Switching
PCB와 Context Switching
PCB와 Context Switching
Prerequisites
- multi-tasking의 등장
현대의 OS는 최소 실행 흐름인
Thread
가 등장하면서, Thread 별로 스케쥴링 정책을 실시
Challenges
- 처리되지 못한 프로세스에 대해서, 프로세서가 처리한 부분부터 다음에 처리할 수 있게끔 어떻게 구현할 수 있을까?
- time slice를 무조건 짧게 둘수록, 반응성은 증가하지만 작업 전체의 수행 시간은 늘어난다.
- process context switching에 드는 오버헤드가 有
- 적절한 time slice를 어떻게 두는 것이 좋을까?
- 리눅스에서는 CFS 스케쥴러에서 time slice를 유동적으로 결정
Context Switching 이란?
현재 프로세스의 실행 상태를 PCB에 저장하고 wait queue에 넣고, 스케쥴링되어 pop된 프로세스의 PCB를 참조하여 프로세서가 실행할 수 있는 환경으로 만드는 일련의 과정
- 주로, address space 전환에 많은 오버헤드가 든다.
- TLB 와 cache를 flush 해주어야함
- 참고
- 같은 process내의 thread간의 switching은 아주 빠르게 이루어진다.
- CPU내의 레지스터만 변경, address space 전환 X
- 주로, address space 전환에 많은 오버헤드가 든다.
참고
Context Switching의 고질적인 문제점
This post is licensed under CC BY 4.0 by the author.