JUINTINATION

프로세스와 스케줄링 본문

정보처리기사 정리

프로세스와 스케줄링

DEOKJAE KWON 2024. 2. 20. 20:52
반응형

프로세스(Process)란?

프로세스는 일반적으로 프로세서(처리기, CPU)에 의해 처리되는 실행중인 프로그램을 의미하며 작업(Job), 태스크(Task)라고도 한다. 또한 다음과 같이 여러 형태로 정의할 수 있다.

  • PCB를 가진 프로그램
  • 실기억장치에 저장된 프로그램
  • 프로세서가 할당되는 실체로서 디스패치가 가능한 단위
  • 프로시저가 활동중인 것
  • 비동기적 행위를 일으키는 주체
  • 지정된 결과를 얻기 위한 일련의 계통적 동작
  • 목적 또는 결과에 따라 발생되는 사건들의 과정
  • 운영체제가 관리하는 실행 단위

PCB(Process Control Block, 프로세스 제어 블록)

PCB는 운영체제가 프로세스에 대한 정보를 저장해 놓는 곳으로 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고 프로세스가 완료되면 제거된다.

각 PCB에 저장되어 있는 정보는 다음과 같다.

저장 정보 설명
프로세스의 현재 상태 준비, 대기, 실행 등의 프로세스 상태
포인터 부모 프로세스 및 자식 프로세스에 대한 포인터
프로세스가 위치한 메모리에 대한 포인터
할당된 자원에 대한 포인터
프로세스 고유 식별자 프로세스를 구분할 수 있는 고유 번호
스케줄링 및 프로세스의 우선순위 스케줄링 정보 및 프로세스가 실행될 우선순위
CPU 레지스터 정보 Accumulator(누산기), 인덱스 레지스터, 범용 레지스터, 프로그램 카운터(PC) 등에 대한 정보
주기억장치 관리 정보 기준 레지스터(Base Register), 페이지 테이블(Page Table)에 대한 정보
입출력 상태 정보 입출력장치, 개방된 파일 목록
계정 정보 CPU 사용 시간, 실제 사용 시간, 한정된 시간

프로세스 상태 전이

이거는 집 가서 쓰자(p.149~150, 프로세스 상태 전이 관련 용어는 합치는게 나을 듯)

스레드(Thread)

스레드는 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위이다.

  • 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드라고 한다.
  • 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로 프로세스의 역할을 담당한다.
  • 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능하다.
  • 스레드의 분류
    • User Level Thread : 사용자가 만든 라이브러리를 사용하여 스레드를 운용한다.
    • Kernel Level Thread : 운영체제의 커널에 의해 스레드를 운용한다.
  • 스레드 사용의 장점
    • 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성 증진
    • 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율 향상
    • 응용 프로그램의 응답 시간(Response Time) 단축
    • 실행 환경을 공유하여 기억장소 낭비 해결
    • 프로세스들 간의 통신 향상
    • 스레드는 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신

스케줄링(Scheduling)이란?

스케줄링은 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미하며 CPU나 자원을 효율적으로 사용하기 위한 정책이다.

  • 장기 스케줄링
    • 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업
  • 중기 스케줄링
    • 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업
    • CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 보류시킨 후 활성화하여 일시적으로 부하 조절
  • 단기 스케줄링
    • 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업

스케줄링의 목적은 다음과 같다.

  • 공정성
  • 처리율(량) 증가
  • CPU 이용률 증가
  • 우선순위 제도
  • 오버헤드 최소화
  • 응답 시간(Response Time) 최소화
  • 반환 시간(Turn Around Time) 최소화
  • 대기 시간 최소화
  • 균형 있는 자원의 사용
  • 무한 연기 회피

스케줄링 기법

비선점(Non-Preemptive) 스케줄링

  • 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
  • 모든 프로세스에 대한 요구를 공정하게 처리할 수 있음
  • 프로세스 응답 시간의 예측이 용이하며 일괄 처리 방식에 적합
  • 짧지만 중요한 작업이 길지만 중요하지 않은 작업을 기다리는 경우가 발생할 수 있음

선점(Preemptive) 스케줄링

  • 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
  • 우선순위가 높은 프로세스를 빠르게 처리할 수 있음
  • 주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용됨
  • 많은 오버헤드를 초래할 수 있으며 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록(Clock)이 필요함

주요 스케줄링 알고리즘

FCFS(First Come First Service, 선입 선출)

FCFS는 준비상태 큐(대기 큐, 준비 완료 리스트, 작업 준비 큐, 스케줄링 큐)에 도착한 순서에 따라 차례로 CPU를 할당하는 기법이다.

먼저 도착한 것이 먼저 처리되어 공평성은 유지되지만 짧은 작업이 긴 작업을, 중요한 작업이 중요하지 않은 작업을 기다리게 될 수 있다.

SJF(Shortest Job First, 단기 작업 우선)

SJF는 준비상태 큐에서 기다리고 있는 프로세스들 중에 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법으로 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘이다.

실행 시간이 긴 프로세스는 실행 시간이 짧은 프로세스에게 할당 순위가 밀려 무한 연기 상태가 발생될 수 있다.

HRN(Hightest Response-ratio Next)

실행 시간이 긴 프로세스에 불리한 SJF 기법을 보완하기 위한 것으로 우선순위 계산 공식을 이용하여 서비스(실행) 시간이 짧은 프로세스나 대기 시간이 긴 프로세스에게 우선순위를 주어 CPU를 할당하는 기법이다.

우선순위 계산식 = (대기 시간 + 서비스 시간) / 서비스 시간

CPU 스케줄링 관련 깃허브 : https://github.com/juintination/Project-CPU-Scheduler

 

GitHub - juintination/Project-CPU-Scheduler: Implementation of CPU Scheduler (FCFS, SJF, RR)

Implementation of CPU Scheduler (FCFS, SJF, RR). Contribute to juintination/Project-CPU-Scheduler development by creating an account on GitHub.

github.com

반응형

'정보처리기사 정리' 카테고리의 다른 글

OSI(Open System Interconnection) 참조 모델  (0) 2024.02.20
인터넷(Internet)  (0) 2024.02.20
운영체제(Operating System)  (0) 2024.02.20
배치 프로그램(Batch Program)  (0) 2024.02.20
SQL 테스트와 쿼리 최적화  (1) 2024.02.16
Comments