스레드 스케줄링과 현대 운영체제 스케줄링

sun202x·2023년 2월 1일
0

운영체제

목록 보기
18/23
post-thumbnail

해당 게시글은 kocw에서 제공하는 금오공과대학교 최태영 교수님의 무료 강의를 공부하고 정리하기 위해서 만들어졌습니다.

Pthread Scheduling

  • POSIX thread에서도 스케줄링을 위해서 몇가지 기능들을 제공하고 있다.
    • 프로세스가 사용하는 코어의 스코프에 따라 성격이 달라진다.
    1. PTHREAD_SCOPE_PROCESS
    • 프로세스에게 할당된 코어만 사용할 수 있도록 하는 API이다.
    • 일반적으로 프로세스 하나에 코어하나가 할당되고, 한 개의 프로세스는 여러 스레드를 생성하게 된다.
      • 마치 Many-to-One 같지만 스레드가 I/O를 처리하기 위해 나가도 코어가 블락 되지 않는다는 점이 다르다.
    • 이 때, 한 스레드가 코어를 사용하다가 I/O 처리를 위해 나가게 되면, 다음 스레드를 수행하기 위해 스케줄링을 해야 하는데 이 때, 해당 API를 사용할 수 있다.
    1. PTHREAD_SCOPE_SYSTEM
    • 프로세스에 할당된 코어 이외에 현재 빈 코어를 사용할 수 있게 해주는 API이다.
  • Pthread에 별도의 옵션을 주지 않으면 One-to-One 모델로 수행된다.

POSIX Real-Time Scheduling

  • 실시간 시스템일 경우 우선순위를 주게 된다.
  • Linked list로 구성된다.

Linux Scheduling

  • 기본적으로 우선순위를 준다.
    • priority 값이 작을수록 우선순위가 높다.
  • 0~99 까지의 priority는 real-time으로 관리하여 linked list로 구성되어 있고,
  • 100 이후는 normal로 관리하여 Red-Black tree로 구성되어 있다.
    • CFS 스케줄로 관리하게 된다.
  • CFS 스케줄에서는 priority가 100 이후 프로세스들에게 Time Quantum을 할당한다.
  • 이러한 Time Quantum은 priority 값이 클수록 내림차순으로 할당된다.
  • 주어진 Time Quantum에 따라 이진 트리가 구성이 되고,
  • linux에서는 다음 스케줄링 대상으로 이진 트리의 가장 왼쪽을 꺼내와서 사용하게 된다.
    • Time Quantum을 기준으로 이진 트리가 구성되므로 가장 왼쪽은 가장 큰 Time Quantum을 가진 프로세스이다.

Windows Scheduling

  • 기본적으로 Priority 스케줄링 방식을 사용한다.
    • 물론 RR도 되긴 하지만 크게 의미 있진 않다.
  • 윈도우에서는 스케줄러를 dispatcher라고 부른다.
  • 우선순위에 따라 클래스를 나눈다.
  • 사용자가 직접 프로세스의 우선순위를 결정할 수도 있다.
  • priority 값이 클수록 우선순위가 높다.
profile
긍정적으로 살고 싶은 개발자

0개의 댓글