Post

7회차

이찬우

CPU 스케줄링

스케줄링 단계

고수준

  • 시스템 내의 전체 작업 갯수 조절

중간 수준

  • 중지와 활성화로 활성화된 프로세스 갯수 조절, 과부하 방지
  • 고수준과 저수준의 완충 역할

저수준

  • 프로세스별 CPU 할당 및 상태 결정
  • 짧은 시간동안 처리, 단기 스케줄링이라고도 불림

스케줄링 방식

선점형

  • CPU 사용권 빼앗을 수 있음
  • 인터럽트, 대화형 시스템, 시분할 시스템

비선점형

  • CPU 사용권 뺏을 수 없음
  • 일괄 작업 시스템

생각한 점들

스레드의 우선순위

  • 프로세스는 OS의 CPU 스케줄러가 우선순위를 관리함
  • 그러면 프로세스 안의 스레드는 우선순위가 어떻게 관리될까

자바

  • 우선순위 스케줄링, 라운드 로빈 두 가지 방식 사용
  • 사용자는 우선순위 스케줄링 영역만 조절 가능
1
2
3
4
thread.setPriority(1~10);
thread.setPriority(Thread.MIN_PRIORITY);
thread.setPriority(Thread.NORM_PRIORITY);
thread.setPriority(Thread.MAX_PRIORITY);

C#

  • UI 스레드와 작업 스레드가 별도로 존재
  • UI 스레드에는 다른 스레드가 접근 불가, Dispatcher.invoke 등의 함수를 통해 큐에 삽입, 작업 요청

안드로이드

  • UI 스레드, 바인더 스레드, 워커 스레드 등 존재
  • UI 스레드는 C#과 비슷한 속성을 가짐, 메인스레드 만이 UI 조작 가능, 싱글 스레드
  • 바인더 스레드는 IPC, 워커 스레드는 긴 기간의 작업 처리

김남영

스케줄링의 개요

  • CPU 스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 한다.
  • 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정한다.


스케줄링의 단계


고수준 스케줄링

  • 가장 큰 틀에서 이루어지는 CPU 스케줄링
  • 시스템 내의 전체 작업 수를 조절
  • 작업이란 여러 개의 프로세스.


저수준 스케줄링

  • 가장 작은 단위의 스케줄링
  • 디테일한 일을 함.
  • 어떤 프로세스에 CPU 할당할지, 대기 상태로 보낼지 등등..


중간 수준 스케줄링

  • 중간 단계에서 일어나는 스케줄링
  • 중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막는다.


  • 스케줄링의 단계


스케줄링의 목적

  • 공평성
  • 효율성
  • 안정성
  • 확장성
  • 반응 시간 보장
  • 무한 연기 방지


스케줄링 고려 사항


선점형 스케줄링

  • 어떤 프로세스가 CPU를 할당 받아 실행 중이더라도 OS가 CPU를 강제로 빼앗을 수 없는 방식


비선점형 스케줄링

  • 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 방식



프로세스 우선순위

  • 우선순위를 따진다는 것은 프로세스의 중요도가 다르다는 의미이다.
  • 우선순위가 높은 것은 더 빨리 자주 실행된다.


CPU 집중 프로세스와 입출력 중심 프로세스


CPU 집중 프로세스

  • 수학 연산과 같이 CPU를 많이 사용하는 프로세스
  • CPU 버스트가 많은 프로세스
  • CPU 버스트 :
    CPU를 할당받아 실행하는 작업


입출력 집중 프로세스

  • 저장장치에서 데이터를 복사하는 일과 같이 입출력을 많이 사용하는 프로세스
  • 입출력 버스트가 많은 프로세스
  • 입출력 버스트 :
    입출력 작업


  • 입출력 집중 프로세스를 먼저 실행상태로 옮기는 것이 효율적
  • 대기 상태로 옮겨지므로 다른 프로세스가 CPU 사용 가능하기 때문이다.
  • CPU 집중 프로세서보다 먼저 실행 상태에 들어가는 것을 사이클 훔치기라고 한다.



다중 큐


준비 상태 다중 큐

  • 우선순위에 따라 나눠진 여러 개의 큐
  • 준비 큐를 몇 개로 나눌지는 스케줄링 알고리즘에 따라 달라진다.


고정 우선 순위 방식

  • OS가 프로세스에 우선순위를 부여하면 프로세스가 끝날 때까지 바뀌지 않는 방식
  • 시스템의 변화에 대응이 어렵고 작업 효율이 떨어짐.


변동 우선순위 방식

  • 프로세스 생성 시 부여받은 우선순위가 프로세스 작업 중간에 변하는 방식
  • 시스템의 효율성을 높힘.
  • 프로세스의 우선순위를 바꾸는 것을 반전 우선순위 라고 한다.


대기 상태 다중 큐

  • 입출력이 완료되기를 기다리는 프로세스가 모여있는 다중 큐
  • 같은 입출력을 요구한 프로세스끼리 모아 놓았다.
  • 준비 상태 큐와 달리 PCB를 동시에 꺼내어 준비 상태로 옮긴다.
  • 이 상황은 여러 개의 인터럽트가 필요한데, 인터럽트 자료 구조를 사용한다.


프로세스의 상태와 다중 큐



읽으면서 관심, 흥미로웠던 부분과 생각


원하는 프로세스의 우선순위를 높히는 것이 가능하다

  • 특정 작업에 집중하고 싶을 때 직접 프로세스 우선순위를 높혀주면 될 것 같다.
  • 영상 시청 버퍼링이 심할 경우 적용해봐도 좋을 것 같다.
  • 하지만 요새 너무 사양들이 다 좋아서 그렇게 적용할 일은 없을듯.


우선순위가 높은 큐일 수록 프로세스 개수가 적은지

  • 스케줄링 알고리즘을 공부하며 알아갈 수 있을 것 같다.
This post is licensed under CC BY 4.0 by the author.

© . Some rights reserved.

Using the Jekyll theme Chirpy