[OS] 멀티 스레드 스케쥴링

nathan·2022년 1월 25일
2

Computer Science

목록 보기
2/2

멀티 스레드 스케쥴링

0. 스레드란?


이미지 출처 : https://en.wikipedia.org/wiki/Thread_%28computing%29

  • 경량 프로세스(Light Weight Process)라고도 불리며 프로세스에서 실행 제어만 분리해서 처리하는 단위
  • 스레드는 같은 그룹의 스레드와 코드, 메모리 주소 공간, 운영체제 리소스 등을 공유
  • 프로세스는 하나 이상의 스레드를 가지고, 각 스레드는 다음의 동작을 담당
    • 스레드 실행에 대한 상태 관리
    • 실행을 위한 별도의 스택
    • 지역 변수와 스레드 특정 데이터를 저장하는 데이터 저장소
    • 프로세스의 메모리와 자원에 대한 접근을 기록하는 컨텍스트 정보

스레드의 특징

  • 사용자에 대한 응답성을 증가시킬 수 있음.
  • 프로세스 자원과 메모리 공유 가능 (경제적)
  • 다중 프로세서와 다중 스레드를 혼합해서 병렬 실행이 가능
  • 현대 CPU들은 다중 스레드를 처리하는 하드웨어 로직을 가짐

1. 정의와 실행방식

  • 하나의 프로세스에 두가지 이상의 작업 처리 가능
  • 멀티 스레드 실행 방식 : 동시성(Concurrency)병렬성(Parallelism)
    • 동시성 : 멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행할 수 있는 성질
    • 병렬성 : 멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행할 수 있는 성질
  • 싱글 코어 CPU를 이용한 멀티 스레드 작업은 번갈아 실행하는게 엄청 빨라서, 마치 병렬적으로 수행된다는 착각을 불러 일으킨다. but 사실은 번갈아가며 실행하는 동시성 작업이다!

2. 프로세스 스케쥴링

프로세스 상태

생성 -> 준비 -> 실행 <> 대기 -> 종료 (크게 5가지 상태로 구분)

  • 프로세스를 생성해서 계속 실행하는 것이 아니라, 다른 프로세스를 실행하는 동안 대기했다가 다시 실행하는 순서 반복

3. CPU 스케쥴링 방식

  • ReadyQueue나 메인 메모리에 여러 프로그램들이 대기 상태로 존재할 때, 현재 실행중인 프로세스가 종료되면, 다음 프로세스로 어떤 것을 선택하여 실행시킬지 결정하는 작업을 CPU 스케쥴링이라 한다.

스케쥴링 척도

  • 이용률, 처리율, 반환시간, 대기시간, 응답시간

스케쥴링 알고리즘

  • 선점 Preemptive : CPU를 강제로 점유할 수 있는 방식

  • First-Come, First-Served(FIFO) : 선입선출(비선점형), 먼저 온 프로세스를 먼저 처리하는 스케쥴링 방식

  • Shortest-Job-First(SJF) : (선점 또는 비선점으로 구현), 실행시간이 가장 짧은 것부터 처리하는 스케쥴링 방식

    • 더 짧은 버스트를 가진 프로세스 도착시 cpu를 빼앗아 할당
    • 가장 긴 버스트를 가진 프로세스에게 cpu를 할당해주지 못하는 경우(짧은 버스트가 계속해서 들어옴)를 기아현상이라고 함.
  • Priority(우선순위) : (선점 또는 비선점으로 구현), 기아현상을 극복하기 위해 aging 기법 사용

    • 기다리는 시간이 길어질수록 우선순위를 조금씩 높임
    • ReadyQueue에서 기다리는 프로세스 중 우선순위가 가장 높은 프로세스에게 cpu를 할당하는 방식
  • RoundRobin(라운드 로빈) : 시분할 시스템 성질을 가장 잘 활용한 방법

    • 프로세스마다 한 번에 cpu를 사용할 수 있는 최대 시간을 할당시켜, 돌아가면서 수행할 수 있도록 함
    • 할당시간이 너무 짧으면 프로세스 교체가 빈번하게 이루어져 context change overhead가 커짐
    • 할당시간이 만료된 cpu를 회수할 때 타이머 interrupt를 사용
  • multi-level queue : ReadyQueue를 여러개로 분할하여 관리

    • 큐마다 스케쥴링 알고리즘을 다르게 적용해 프로세스 성격에 맞게 관리할 수 있음
    • 일반적으로 대화형 작업을 위한 전위 큐, 계산 위주의 후위 큐로 분할하여 운영
  • multi-level feedback queue : 멀티 레벨 큐와 비슷하나, 프로세스가 다른 큐로 이동할 수 있음

    • aging 기법을 구현가능, 낮은 우선순위에 있는 프로세스를 높은 우선순위 큐로 승격 시키는 등
  • 다중 처리기 스케쥴링 : cpu가 여러개인 시스템을 다중 처리기 시스템이라고 한다.

    • 여러 cpu가 프로세스를 적절히 나누어 작업할 수 있도록 부하 균형을 적용해야 함.
  • 실시간 스케쥴링 : 작업마다 주어진 데드라인 존재, 그 안에 반드시 작업을 처리

JVM은?

  • 선점형 스레드 스케줄링 방식을 사용하고 있음

Context Switch

  • 논리적으로는 프로세스들 간의 스위칭을 의미하나, 실제로 요즘에는 스레드 단위의 스위칭을 의미한다.
  • 우선순위 또는 정해진 스케쥴링 알고리즘에 따라 Context Switch를 수행한다.

References

profile
나는 날마다 모든 면에서 점점 더 나아지고 있다.

0개의 댓글