이것저것 공부 기록하기

[OS] 프로세스와 기본 스케쥴링 알고리즘 본문

CS/OS

[OS] 프로세스와 기본 스케쥴링 알고리즘

얍욥얍 2021. 5. 9. 02:05

프로세스(Process) 란?

  • 실행 중인 프로그램은 프로세스라고 함
    • 프로세스 : 메모리에 올려져서 실행 중인 프로그램
    • 코드 이미지(바이너리) : 실행 파일 ex) ELF format
  • 프로세스라는 용어는 작업, task, job 이라는 용어와도 혼용되어 사용됨
  • 여기서 주의해야 할 점은 응용 프로그램은 프로세스가 아니라는 점 (= 응용 프로그램은 여러 개의 프로세스로 이루어질 수 있다.
  • 하나의 응용 프로그램은 여러 개의 프로세스(프로그램)가 상호작용을 하면서 실행될 수도 있음
    • 간단한 C/C++ 프로그램을 만든다면 하나의 프로세스라고 할 수 있음
    • 여러 프로그램을 만들어서 서로 통신하면서 프로그램을 작성할 수도 있음 (IPC 기법)

스케쥴러와 프로세스

  • 스케쥴러는 프로세스 실행을 관리함
  • 스케쥴링 알고리즘
    • 목표에 따라 어떤 순서대로 프로세스를 실행시킬지 결정
      • 시분할 시스템 ex. 프로세스 응답 시간을 가능한 짧게
      • 멀티 프로그래밍 ex. CPU 활용도를 최대로 높혀서 프로세스를 빠르게 실행
    • 적용 시점에 따라 비선점형과 선점형으로 구분할 수 있음
      • 비선점형 스케쥴링
        • 프로세스가 (실행 → 대기), (실행 → 종료) 로의 상태전이가 있을 때 적용됨
        • ex. FIFO(First In Fist Out), SJF(Shortest Remaining Time First Scheduling), HRN(Highest Response-ratio Next)
      • 선점형 스케쥴링
        • 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선 순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 기법
        • 모든 프로세스에게 CPU 사용 시간을 동일하게 부여 가능
        • 빠른 응답 시간을 요하는 대화식 시분할 시스템에 적합
        • 긴급한 프로세서 제어 가능
          • ex. SRT(Shortest Remaining Time), RR(Round Robin), 다단계 큐(MQ, Multi-level Queue)

FIFO 스케쥴러

  • 비선점형 스케쥴링 알고리즘
  • 프로세스가 저장매체를 읽거나 프린팅을 하는 등의 작업 없이 CPU를 처음부터 끝까지 쭉 사용
  • 가장 간단한 스케쥴러 (배치 처리 시스템)
  • FCFS (First Come First Served) 스케쥴러

FIFO 스케쥴러

최단 작업 우선(SJF) 스케쥴러

  • SJF(Shortest Job First) 스케쥴러
    • 비선점형 스케쥴링 알고리즘 
    • 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행을 시키는 알고리즘

💡참고💡

  • RealTime OS(RTOS) : 응용 프로그램  실시간 성능 보장을 목표로 하는 OS
    • 시간이 민감하게 다뤄지는 컴퓨팅 환경에서의 프로세스를 동작할 때 사용
    • 정확하게 시간에 맞춰 프로그램을 시작하고 완료되는 것을 보장
    • GPOS 보다 간단하게 구성된 경우가 많음 (복잡하게 구성되면 프로세스가 늘어질 수 있기 때문)
    • 이 때는 SJF 처럼 각각의 프로세스 실행시간까지 알 수 있음
    • Hardware RTOS, Software RTOS 으로 세분화하여 사용하기도 함
  • General Purpose OS (GPOS) : 프로세스 실행시간에 민감하지 않고, 일반적인 목적으로 사용되는 OS
    • ex. Windows, Linux
    • RTOS가 사용되지 않는, 시간에 민감하지 않은 환경 대다수에서 사용됨

우선순위 기반 스케쥴러

  • Priority-Based 스케쥴러
    • 정적 우선순위
      • 프로세스마다(응용 프로그램마다) 우선순위를 미리 지정
        • ex. 웹브라우저는 우선순위를 높게 해놓고 카카오톡은 좀낮게 해놓는 식으로
      • 모든 프로그램마다 우선순위를 지정해놓는다는 건 사실 현실적으로 번잡스러운 경향이 있음
    • 동적 우선순위
      • 스케쥴러가 상황에 따라 우선순위를 동적으로 변경
      • 컴퓨터 응답시간이 빨라야하는 상황이라고 했을 때, 어떤 응용 프로그램은 실행한 지 오래 되었는데도 일정 시간(ex.10분)내에 한 번도 CPU에서 실행이 안 되었으면 해당 프로세스에서 사용자가 어떤 반응을 얻고자 해도 느릴 수가 있음
        • 따라서 그런 프로세스에 대해서는 스케쥴러가 우선순위를 동적으로 바꾸며 사용자가 CPU를 필요로 할 때 바로 제공할 수 있도록 함

Round Robin 스케쥴러

  • 선점형 스케쥴링 알고리즘
  • 시분할 시스템 기반
  • 프로세스들 사이에 우선순위를 두지 않고 순서대로 시간 단위로 CPU를 할당하는 방식
  • 보통 시간 단위는 10ms ~ 100ms 정도이고, 시간 단위 동안 수행한 프로세스는 준비 큐의 끝으로 밀려나게 됨.
  • 문맥 전환의 오버헤드가 큰 반면, 응답 시간이 짧아지는 장점이 있어 실시간 시스템에 유리
  • 할당되는 시간이 클 경우 FIFO 기법과 같아지게 됨

Round Robin 스케쥴러

 


References

fastcampus 컴퓨터공학 올인원 패키지 강의

jwprogramming.tistory.com/17

 

반응형

'CS > OS' 카테고리의 다른 글

[OS] 세그멘테이션(Segmentation)  (0) 2021.05.22
[OS] 페이징 시스템(Paging System)  (0) 2021.05.19
[OS] 가상 메모리 기본 개념  (0) 2021.05.17
Comments