데스크톱에서는 수많은 작업이 동시에 일어나는 것처럼 보이지만, 실제로는 자원을 시간 순서대로 나눠 쓰는 과정이 뒤에 있습니다. 이 글에서는 연산 부하가 어떻게 조정되는지, 그리고 그 조정이 왜 단순히 “빠르게”로 요약되지 않는지 살펴봅니다.
스케줄링의 기본
운영체제는 실행 단위인 프로세스와 스레드를 시간 조각으로 나누어 CPU에 배정합니다. 이때 우선순위, 대기 시간, 응답 요구사항이 서로 다른 목표를 가지므로, 어떤 작업을 먼저 처리할지는 하나의 정답이 아니라 절충의 문제입니다.
큐와 병목
작업은 큐를 거치며 자원에 도달합니다. 큐가 짧으면 대기가 줄지만, 큐가 길어지면 전체 지연이 커집니다. 어느 자원이 병목인지에 따라 큐가 쌓이는 위치가 달라지고, 해결 방향도 달라집니다.
병목은 고정된 부품이 아니라 작업의 형태에 따라 이동합니다. 같은 시스템에서도 자료 패턴이 바뀌면 병목의 위치가 바뀔 수 있습니다.
동시성과 일관성
여러 스레드가 같은 자료를 다룰 때, 순서가 명확하지 않으면 결과가 흔들립니다. 잠금(lock)과 원자적 연산, 메모리 가시성 같은 개념은 이 흔들림을 제어하는 도구입니다. 동시성 제어는 정확성과 속도 사이의 균형을 다룹니다.
조정은 분산으로 이어진다
한 기기 안에서의 조정 원리는 여러 노드로 확장될 때 더 큰 의미를 가집니다. 일관성, 합의, 부하 분산은 모두 이 조정의 연장선에 있습니다. 다음 글에서는 이 흐름이 분산 시스템에서 어떻게 나타나는지 살펴봅니다.