멀티 태스킹 : 스케줄러, Dispatch, Context Switching, PCB

들어가며

이번에는 스케줄러 (Schedular), 디스패처 (Dispatcher) 및 컨텍스트 전환 (Context Switching)이라는 세 가지 기본 개념에 대해 공부해 보았습니다.

스케줄러

멀티태스킹 운영 체제의 중심에는 CPU에서 다음에 실행할 프로세스를 결정하는 정교한 개체스케줄러가 있습니다.

프로세스 우선순위, 시간 제약, 시스템 로드 등 다양한 요소를 고려하여 프로세스 실행 순서에 대한 정보에 근거한 결정을 내립니다.

스케줄러는 시스템 성능과 리소스 활용도를 최적화하도록 설계된 스케줄링 알고리즘을 기반으로 작동합니다.

이러한 알고리즘은 라운드 로빈 스케줄링과 같은 간단한 알고리즘부터 우선순위 기반 스케줄링과 같은 보다 복잡한 알고리즘까지 다양합니다.

어떠한 알고리즘을 사용하던 스케줄러의 목표는 CPU에 대한 공정한 액세스를 보장하고 전체 시스템 처리량을 최대화하는 것입니다.

Dispatcher

스케줄러가 오케스트라 지휘자라면 디스패처를 무대 뒤의 무대 담당자로 비교해서 설명할 수 있습니다.

스케줄러의 지시를 신속하게 실행하여 프로세스 간을 원활하게 전환합니다.

스케줄러가 실행할 새 프로세스를 선택하면 디스패처에게 Context Switching을 수행하라는 신호를 보냅니다.

그런 다음 디스패처는 프로그램 카운터, 레지스터 값 및 기타 관련 정보와 같은 현재 실행 중인 프로세스의 상태를 프로세스 제어 블록(PCB)이라는 데이터 구조에 저장합니다.

상태가 저장되면 디스패처는 선택한 다른 프로세스의 상태를 PCB에서 CPU로 로드하여 중단된 부분부터 실행을 재개할 수 있도록 합니다. 이

전체 프로세스는 몇 마이크로초 내에 발생하므로 전체 시스템 성능에 대한 중단을 최소화합니다.

Context Switching

Context Switching에서 Context는 프로세스의 상태를 의미합니다.

기본적으로 Context Switching은 프로세스 상태를 바꾸는 것을 말하며,
다시 말하면 프로세스를 일시 중지하고 다시 시작할 수 있도록 프로세스나 스레드의 상태를 저장하고 복원하는 절차를 의미합니다.

위에서 말한 Dispatcher가 하는 일인 “프로세스 전환 절자”가 context swticing인 것 입니다.

마치며

그 동안 공부했던 스케줄링, waiting queue, 프로세스 상태, swap out, swap in 같은 개념이 우리가 OS에서 아주 숨 쉬듯이 사용하던 멀티 프로세스를 위한 개념이였다는 걸 마지막에 되어서야 깨닫게 되었습니다.

“라운드 로빈, 비선점, 선점, 이런거 왜 공부하지?” 하던 것들이 결국 너무 당연하게 쓰고 기술을 이해하기 위한 개념이라니…

감사함과 허탈감이 동시에 느껴지네요.

참고하면 좋은 글

context switching in the operating system [Explained] (youtube.com)

Leave a Comment

목차