본문 바로가기
🖥️ Computer Science

[쉽게 배우는 운영체제] ch.4 CPU 스케줄링 - 연습 & 심화 문제

by GroovyArea 2022. 11. 4.

연습 문제

1. 프로그램이 프로세스가 되려면 운영체제로부터 무엇을 받는지?

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

2. 프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태

  • 준비 상태(Ready Status)

3. 프로세스의 상태 중 입출력 작업을 하기 위해 이동하는 상태

  • 대기 상태(Blocking Status)

4. CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 골라 CPU를 할당하는 작업

  • 실행 상태(Runnung Status)

5. 유닉스에서 Ctrl+Z 를 눌러 프로세스가 중단되면 프로세스는 어떤 상태로 바뀌는지?

  • 휴식 상태(Pause Status)

6. 실행 상태에서 하나의 프로세스가 나가고 새로운 프로세스가 들어오는 상황

  • 문맥 교환(Context Switching)
  • 두 프로세스 간의 제어 블록 내용이 변경 됨.
  • 기존 프로세스 작업을 저장 후 실행 되는 프로세스의 제어 블록의 내용을 가지고 CPU가 세팅함
  • 프로세스 간 제어 블록을 교환하는 작업

7. 실행 중인 프로세스로부터 새로운 프로세스를 복사하는 시스템 호출은?

  • fork()
  • 현재 실행중인 프로세스와 같은 프로세스가 하나 생성된다.
  • 기존 프로세스 : 부모 프로세스
  • 새 프로세스 : 자식 프로세스

8. 프로세스의 골격은 그대로 둔 채 코드 영역만을 바꾸는 시스템 호출?

  • exec()
  • 프로세스의 구조체를 재활용하기 위해 사용
  • 기존의 프로세스 제어 블록, 메모리, 부모-자식 관계를 그대로 사용함
  • 새로운 Code Area만 가져오면 된다.

9. 부모 프로세스가 기다리지 않아 자원이 회수되지 못하고 계속 살아 있는 프로세스?

  • Orphan Process
  • Zombie Process

10. 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위로서 가벼운 프로세스로 불리우는 것은?

  • Thread
  • CPU 스케줄러가 CPU에 전달하는 하나의 일
  • 작업의 단위

11. 미아 프로세스를 방지하기 위해 부모 프로세스는 어떤 시스템 호출을 사용하는지?

  • wait()
  • 자식 프로세스가 종료될 경우 다음 문장을 실행

12. 작업이 끝난 프로세스의 자원을 회수하는 행위?

  • Garbage Collection

13. 모든 프로세스를 부모-자식 관계로 만들어 자원 회수를 용이하게 하는 프로세스의 구조?

  • 프로세스 계층 구조

심화 문제

1. 스케줄링의 단계와 그 특징을 설명

  1. 고수준 스케줄링 :
    전체 시스템의 부하를 고려하여 시작할지를 결정한다. 메인프레임과 같은 큰 시스템에서 규모가 큰 일괄 작업을 처리할 때 사용한다.
  2. 중간 수준 스케줄링 :
    시스템에 과부하가 걸려 전체 프로세스 수를 조절해야 한다면 이미 활성화된 프로세스 중 일부를 보류 상태로 보낸다.
  3. 저수준 스케줄링 :
    어떤 프로세스를 CPU에 할당할지, 대기 상태로 보낼지 등을 결정.
    오늘 날 대부분의 CPU 스케줄러는 중간, 저수준 스케줄링으로 구성됨.

2. 스케줄링의 목적을 설명

  • 스케줄링을 사용하는 목적은 모든 프로세스가 공평하게 작업을 하도록 하기 위한 것이다. 시스템의 안정성과 효율성을 높이기 위해 일정 부분 공평성을 희생함.
  1. 공평성: 모든 프로세스가 자원을 공평하게 배정 받아야 함. 자원 배정 과정에서 특정 프로세스가 배제되어서는 안됨.
  2. 효율성: 시스템 자원이 유휴 시간 없이 사용되도록 스케줄링을 하고, 유휴 자원을 사용하려는 프로세스에는 우선권을 주어야 함
  3. 안정성: 우선순위를 사용하여 중요 프로세스가 먼저 작동하도록 배정함으로써 시스템 자원을 점유하거나 파괴하려는 프로세스로부터 자원을 보호한다.
  4. 확장성: 프로세스가 증가해도 시스템이 안정적으로 작동하도록 조치해야 함. 시스템 자원이 늘어나는 경우 이 혜택이 시스템에 반영되야 한다.
  5. 반응 시간 보장: 응답이 없는 경우 시스템이 멈춘 것으로 가정하기 때문에 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 한다.
  6. 무한 연기 방지: 특정 프로세스의 작업이 무한히 연기되어서는 안 된다.

3. 선점형 스케줄링과 비선점형 스케줄링을 비교 설명

  1. 선점형 스케줄링 :
    어떤 프로세스가 CPU를 할당받아 실행중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있다.
    문맥 교환 같은 부가적인 작업으로 인해 낭비가 생기는 것이 단점
  2. 비선점형 스케줄링 :
    어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없다.
    선점형 스케줄링보다 스케줄러의 작업량이 적고 문맥 교환에 의한 낭비도 적다.

4. 스케줄링 알고리즘의 선택 기준에 대한 설명

  1. CPU 사용률: 전체 시스템의 동작 시간 중 CPU가 사용된 시간을 측정함.
  2. 처리량: 단위 시간당 작업을 마친 프로세스의 수. 클수록 좋은 알고리즘.
  3. 대기 시간: 실제 작업을 요청한 프로세스가 작업을 시작하기 전까지 대기하는 시간. 짧을 수록 좋음.
  4. 응답 시간: 프로세스 시작 후 첫 번째 출력 또는 반응이 나올때까지 걸리는 시간.
  5. 반환 시간: 대기 시간과 실행 시간을 더한 값. 프로세스가 생성된 후 종료되어 사용하던 자원을 모두 반환하는 데까지 걸리는 시간.
  • 사용률과 처리량은 계산하기가 쉽지 않아, 주로 대기, 응답, 반환 시간을 계산한다.

  • 주로 평균 대기 시간을 본다. 평균 대기 시간은 모든 프로세스의 대기 시간을 합한 뒤 프로세스의 수로 나눈 값이다.


5. FCFS, SJF, HRN 스케줄링의 특징을 설명하시오

  1. FCFS (First Come First Served :
    준비 큐에 도착한 순서대로 CPU를 할당하는 비선점형 방식. 처리 시간이 긴 프로세스가 CPU를 차지하는 경우 시스템의 효율성이 떨어짐. 현재 작업중인 프로세스가 입출력을 요구하면 CPU가 쉬는 시간이 많아져 효율이 떨어짐.
  2. SJF (Shortest Job First) :
    프로세스 중에서 실행 시간이 가장 짧은 작업부터 할당하는 비선점형 방식. 종료 시간을 파악하기 어려워 사용하기가 쉽지 않다. 아사 현상이 발생하기 쉬워서 잘 쓰이지 않는다.
  3. HRN (Highest Response Ratio Next) :
    SJF에서 발생할 수 있는 아사 현상을 해결한 알고리즘. 서비스를 받기 위해 기다린 시간과 CPU 사용 시간을 고려하여 스케줄링을 하는 방식. 공평성이 위배되어 많이 사용하지 않는다.

6. 라운드 로빈, SRT, 다단계 큐, 다단계 피드백 큐 스케줄링의 특징을 설명

  1. 라운드 로빈(Round Robin) :
    FCFS 스케줄링과 유사함. 각 프로세스마다 CPU를 할당받는 타임 슬라이스가 정해짐.
  2. SRT(Shortest Remaining Time) :
    기본적으로 라운드 로빈 방식과 같이 동작하지만, CPU를 할당 받을 프로세스를 선택할 때 잔여 작업 시간이 가장 적은 프로세스를 선택함. 하지만 운영체제가 프로세스의 종료 시간을 예측하기 어려우므로 잘 사용하지 않음.
  3. 다단계 큐(Multilevel queue) :
    우선 순위에 따른 준비큐를 여러 개 사용함. 프로세스가 큐에 삽입되는 것으로 우선 순위가 결정됨. 상위 큐의 모든 작업 종료되어야 다음 큐의 작업이 진행됨. 우선 순위가 높은 프로세스 때문에 낮은 프로세스의 작업이 연기되는 문제를 해결한 방식이 다단계 피드백 큐 스케줄링이다.
  4. 다단계 피드백 큐(Multilevel Feedback Queue) :
    다단계 큐 스케줄링과 비슷하지만, 프로세스가 한번 CPU를 사용할 때마다 프로세스의 우선 순위가 낮아진다. 커널 프로세스가 일반 프로세스 큐에 삽입되지 않음. 각 큐의 우선 순위가 아래로 내려갈 경우 타임 슬라이스의 크기도 커져서, 마지막 우선 순위 큐의 타임 슬라이스는 무한대로, FCFS 처럼 동작함.

7. 아사 현상과 에이징에 대해 설명

  • 프로세스의 우선도 순으로 작업을 처리하는 스케줄링이라면, 우선도가 낮은 프로세스는 계속해서 자원을 할당 받지 못하는 문제가 생기는데, 이것을 아사 현상이라고 한다.

  • 에이징은 아사 현상을 해결할 수 있는 방법 중 하나인데, 프로세스가 자신의 순서를 양보할 때마다 나이를 한 살씩 먹는다고 가정하고, 이 나이가 일정한 값에 도달하게 되면 더 이상 양보하지 않고 자원을 할당받도록 하는 것을 말한다.


8. 타임 슬라이스의 크기를 정하는 것과 시스템 효율성에 대해 설명

  • 타임 슬라이스의 점점 커질 경우, 스케줄링은 FCFS로 동작하며 효율성이 떨어진다. 그렇다고 타임 슬라이스를 작게 할 경우 문맥 교환이 자주 일어나 성능이 떨어짐.
  • 타임 슬라이스는 되도록 작게 설정, 문맥 교환이 자주 일어나지 않을 정도로.
    10 ~ 200ms 사이에서 조정 가능하며, 조정되는 이유는 다단계 피드백 큐 스케줄링에서 각 큐마다 타임 슬라이스가 다르게 설정 되어야 하기 때문이다.
반응형