Scheduler, 리눅스의 프로세스 스케쥴링

# 한 순간에 오직 하나의 프로세스만이 CPU를 점유 가능
> 스케쥴러는 여러 프로세스가 CPU를 공유하여 사용 가능하도록 함

# 선점형(Preemptive)과 비선점형(non-Preemptive)
> 선점형
v 프로세스 별 사용 시간을 지켜보면서 정기적으로 스케쥴링
> 비선점형
v 프로세스가 자발적으로 CPU 사용권을 반납했을 때만 스케쥴링

# 문맥 교환(Context Switch)
> CPU의 사용권을 다른 프로세스에게 양도
v 현재의 context 정보를 저장하고 새 프로세스의 context 정보를 적재
> Context 정보
v 프로그램 카운트(PC), 스택 포인터(sp), 범용 레지스터, 프로세서의 상태 레지스터, 메모리 관리 정보 등.

-----
#리눅스의 프로세스 스케쥴링
#스케쥴러의 호출 시점
> 가장 기본적인 스케쥴러의 호출은 주기적으로 타이머 인터럽트 발생
> 새로운 프로세스가 생성되어 실행 중인 프로세스를 선점해야하는 경우
> 실행중인 프로세스가 타임슬라이스를 다 사용한 경우