You are currently viewing 혼공컴운 4주차-운영체제, 프로세스와 스레드, CPU 스케줄링

혼공컴운 4주차-운영체제, 프로세스와 스레드, CPU 스케줄링


기본 미션

p304의 확인 문제 1번

  1. 생성 상태
  2. 준비 상태
  3. 실행 상태
  4. 종료 상태
  5. 대기 상태


위와 같은 그림을 프로세스 상태 다이어그램이라고한다. 컴퓨터 내의 프로세스는 작동을 위해 CPU가 필요하다. 그러나 CPU 자원은 한정되어있기 때문에 프로세스 마다 상태 값을 가지며, 필요한 프로세스만 가동된다. 이러한 프로세스는 프로세스 제어 블록(Process Control Block,PCB)에 의해 제어된다.


프로세스의 대표적인 상태값은 다음과 같다.

  • 생성 상태(new)

메모리에 적재되어 PCB를 할당 받은 상태이다. 실행 준비가 완료된 프로세스는 바로 실행되지는 않으며, 준비 상태로 전환되어 CPU의 할당을 기다린다.

  • 준비 상태(ready)

실행 준비는 완료되었지만 CPU의 할당을 대기 중인 상태이다. PCB의 제어를 받아 할당되면 실행 상태로 전환되며, 이를 디스패치(Dispatch) 라고 한다.

  • 실행 상태(running)

CPU를 할당 받아 실행 중인 상태이다. 할당받은 일정시간동안만 CPU를 사용가능하다. 할당 시간이 종료되면(=타이머 인터럽트가 발생하면) 준비 상태로 전환된다. 입출력 장치를 사용하여 입출력 작업이 끝날때까지 기다려야 한다면 대기 상태로 전환된다.

  • 대기 상태(blocked)

상대적으로 CPU에 비해 입출력 장치의 처리 속도는 느리다. CPU의 할당은 끝났지만 입출력 장치의 완료를 기다리는 상태이다. 해당 작업이 완료되면 프로세스는 준비 상태로 전환되며, CPU 재할당을 기다린다.

  • 종료 상태(terminated)

프로세스가 종료된 상태이다. 종료 상태시에 운영 체제는 프로세스가 점유한 메모리와 PCB를 정리한다.


선택 미션

CPU 프로세스 할당 순서 분석

  • Ch11.(11-2) 준비 큐에 A,B,C,D 순으로 삽입되어 있었다고 가정했을 때, 선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU를 할당받는지 풀어보기

> A, B, C, D


선입 선출 알고리즘 (FCFS) 사용시 프로세스는 준비큐에 들어온 순서대로 실행된다. 따라서 A,B,C,D 순으로 순차적으로 실행된다.


프로세스에게 CPU 자원을 배분하는 것을 CPU 스케줄링이라고 한다. 프로세스마다 우선순위가 서로 다르다. 어떤 프로세스는 CPU 작업(실행 상태 다수)을 많이 요구하고, 어떤 프로세스는 많은 입출력 작업(대기 상태 다수)을 요구하는 등 성질에 따라 특징이 다르다. 이러한 프로세스 관리를 위해 CPU에서는 스케줄링 큐를 구현하고 관리한다. 매번 프로세스 전체를 평가하는 것 대신, 대기열(queue, 큐)를 생성하여 관리한다. 큐의 종류는 여러가지가 있으나 대표적으로는 준비 큐(CPU 사용 필요 프로세스)와 대기 큐(입출력장치를 위해 대기 상태의 프로세스)가 있다. 운영체제는 우선순위와 큐를 사용하여 CPU 스케줄링을 수행한다.


CPU 스케줄링을 좀 더 효율적으로 하기 위해서, CPU 스케줄링 알고리즘을 사용한다. 교재에서는 7가지 스케줄링 아이디어를 소개한다.


1. 선입 선처리 스케줄링 (First Come First Serve, FCFS)

  • 준비 큐에 삽입된 순서대로 프로세스를 처리하는 비선점형 스케줄링 방식
  • 호위효과(Convoy effect): 앞선 프로세스의 작업시간이 길면, 뒷 프로세스의 작업시간과 별개로 실행되기까지 시간이 늘어나게되어 평균적인 프로세스 실행 시간이 길어지게 된다.

2. 최단 작업 우선 스케줄링 (Shortest Job First, SJF)

호위 효과를 방지하기위해 CPU 이용 시간의 길이가 짧은 프로세스 부터 사용하는 알고리즘이다.

비선점형 알고리즘이다.


3. 라운드 로빈 스케줄링 (round robin)

  • FCFS 알고리즘에 타임 슬라이스 개념이 더해진 형태이다
  • 타임 슬라이스: 각 프로세스가 CPU를 사용할 수 있는 정해진 시간
  • 타임 슬라이스동안 CPU를 이용하는 선점형 스케줄링
  • 타임 슬라이스의 관리가 중요
    • 타임 슬라이스가 크다 > 사실상 FCFS, 호위 효과 발생 가능
    • 타임 슬라이스가 작다 > 문맥 교환이 자주발생하여 프로세스 처리보다 전환에 많은 리소스 소모


4. 최소 잔여 시간 우선 스케줄링 (Shortest Remaining Time, SRT)

  • SJF와 Round Robin을 결합한 방식.
  • 작업시간이 적은 CPU가, 정해진 타임 슬라이스를 갖고 실행됨


5. 우선순위 스케줄링 (Priority)

  • 프로세스 우선순위에 따른 프로세스 할당 (동일시 FCFS)
  • 기아Stravation 현상: 준비 큐에 먼저 삽입되었더라도 우선 순위가 낮으면 계속 준비 상태로 머무를 가능성
    • 에이징Aging 기법: 대기 시간에 따라 우선순위를 높이는 기법


6. 다단계 큐 스케줄링 (Multilevel Queue)

  • 우선순위 스케줄링을 개선형태, 우선 순위별로 다수의 준비큐 사용
    • 프로세스 유형 별로 우선순위를 구분할 수 있음
    • 큐별로 타임 슬라이스를 여러개 지정 가능
    • 큐마다 다른 스케줄링 알고리즘 사용 가능
  • 큐 안의 프로세스는 고정되어있어, 큐 레벨의 기아 발생 가능


7. 다단계 피드백 큐 스케줄링 (Multilevel feedback queue)

  • 다단계 큐의 개선 형태, 프로세스들의 큐 간 이동 허용
    • 새로 준비 상태의 프로세스는 높은 우선 순위 큐에 삽입되어 일정 타임 슬라이스가 작동
    • 할당이 종료되면 다음 우선순위의 큐에 삽입
    • > 자연스레 CPU 집중 프로세스의 우선순위는 낮아지고, 입출력 집중 프로세스의 우선순위는 높게 유지
    • CPU 집중 프로세스의 기아 현상 방지를 위해 에이징 적용 가능
  • 구현이 복잡하나 일반적인 CPU 스케줄링 알고리즘으로 사용되고 있음

Leave a Reply