자원 관리

운영체제는 시스템의 모든 물리적·논리적 자원을 통합적으로 관리하여, 여러 사용자와 프로그램이 동시에 안정적·효율적으로 자원을 사용할 수 있도록 조정·통제합니다.


CPU 스케줄링

운영체제는 한정된 CPU 시간을 여러 프로세스가 공평하고 효율적으로 나눠 쓰도록 스케줄러를 통해 관리합니다.

  • 선점형 스케줄링

    • 타임슬라이스(time slice)를 정해 놓고, 슬라이스가 끝나면 다른 프로세스로 교체

    • 대표 알고리즘: 라운드로빈, 우선순위 선점, 다단계 큐 등

  • 비선점형 스케줄링

    • 한 프로세스가 실행을 시작하면 스스로 종료하거나 I/O 요청을 할 때까지 CPU를 빼앗기지 않음

    • 대표 알고리즘: SJF(Shortest-Job-First), 우선순위 비선점

  • 멀티코어 환경

    • 대칭형 다중 프로세싱(SMP) 스케줄러는 각 코어에 작업을 분배

    • CPU Affinity 설정으로 캐시 효율과 부하 균형 최적화


메모리 할당·관리

실제 물리 메모리(RAM)는 한정적이므로, 운영체제는 다음 기법으로 메모리를 배분하고 보호합니다.

  • 연속 할당

    • 프로세스별로 크기가 다른 메모리 블록을 할당

    • 내부·외부 단편화 최소화: First-Fit, Best-Fit, Worst-Fit 알고리즘

  • 비연속 할당

    • 페이징(paging): 고정 크기 페이지 단위로 분할하여 외부 단편화 제거

    • 세그멘테이션(segmentation): 논리 단위별 가변 크기 블록 관리

  • 가상 메모리

    • 독립된 가상 주소 공간 제공

    • 페이지 폴트 시 보조기억장치와 교체(swap)

  • 페이지 교체 알고리즘

    • LRU, FIFO, Optimal 등으로 핫 페이지 유지

  • 스래싱 방지

    • 워킹셋(working set) 모델로 멀티프로그래밍 정도 조절


보조기억장치 관리

디스크와 SSD 같은 보조기억장치는 대용량 비휘발성 저장소로, 운영체제는 다음 기법으로 성능을 최적화합니다.

  • 디스크 스케줄링

    • SSTF, SCAN, C-SCAN, LOOK 등 헤드 이동 거리 최소화

  • 버퍼링(Buffering)·스풀링(Spooling)

    • I/O 요청을 메모리 버퍼에 모아 일괄 처리

  • 캐싱(Caching)

    • 자주 쓰이는 블록을 메인 메모리에 유지


I/O 및 네트워크 자원 관리

입출력 장치와 네트워크는 예측 불가능한 부하를 발생시키므로, 다음 방식으로 제어합니다.

  • 요청 큐 관리

    • 블록 I/O 스케줄러, 네트워크 패킷 큐 우선순위 조정

  • 비동기 I/O

    • 콜백(callback)·이벤트 알림으로 CPU 대기 최소화

  • DMA(Direct Memory Access)

    • CPU 개입 없이 메모리↔장치 직접 전송

  • 흐름 제어·혼잡 제어

    • 네트워크 패킷 손실과 지연 최소화, QoS 보장


자원 관리 정책과 목표

운영체제는 공정성, 효율성, 응답성, 처리량, 신뢰성을 균형 있게 달성하도록 정책을 설계합니다. 멀티프로그래밍 정도, 우선순위 설정, 동적 자원 할당 전략을 통해 다양한 워크로드에서 최적의 성능을 제공합니다.

Last updated