Jeomxon's Tech Note

운영체제 정리 - 3주차 본문

카테고리 없음

운영체제 정리 - 3주차

저문(jeomxon) 2023. 10. 3. 16:00

1. 기아 상태가 무엇인가요?

특정 프로세스의 우선순위가 낮아서 원하는 지원을 계속 할당받지 못하는 상태이다.
여러 프로세스가 자원을 점유하기 위해 경쟁할 때 특정 프로세스는 우선순위가 낮아서 영원히 자원을 할당받지 못하는 것을 의미한다.

2. 기아 상태를 어떻게 해결할 수 있나요?

  • 프로세스 우선순위를 수시로 변경하여 각 프로세스마다 할당을 위한 기회를 부여한다.
  • 오래 기다린 프로세스의 우선순위를 높인다.
  • 우선순위로 프로세스를 할당하는 것이 아닌, 요청 순서대로 처리하기 위한 요청 큐를 사용한다.

3. CPU 스케줄링에 대해 설명해주세요.

cpu는 하나의 코어 당 하나의 프로세스만 실행이 가능하다.
하지만 cpu를 효율적으로 사용하기 위해서는 멀티 프로그래밍을 사용하고, 이를 위해서는 CPU 스케줄링이 필요하다.
CPU 스케줄러는 메모리에 있는 프로세스들 중에 어떤 프로세스를 실행할지 선택하고 CPU를 할당해준다.
즉, CPU의 효율을 극대화시키면서 프로세스를 균등하게 처리하도록 도와준다.

4. 스케줄러의 종류는 무엇이 있나요?

  1. 단기 스케줄러
    메모리 내의 준비 상태에 있는 작업 중 실행할 프로세스를 선택하여 CPU를 할당한다.
    일반적으로 스케줄러는 단기 스케줄러를 의미한다.
    이는 스케줄링 알고리즘에 따라 CPU를 할당할 프로세스를 선택한다.

  2. 중기 스케줄러
    주로 메모리 관리와 스와핑을 담당한다.
    프로세스의 메모리 상태를 관리하고, 필요한 경우 디스크 <-> 메모리 간의 프로세스 메모리 스왑을 수행한다.
    이를 통해 메모리 사용을 최적화하고, 다중 프로세스 환경에서 메모리 부족 문제를 해결한다.

여기서 스와핑이란 현재 메모리에 있는 프로세스를 디스크로 이동하고, 디스크에서 메모리로 다른 프로세스를 로드하는 과정이다.

  1. 장기 스케줄러
    어떤 프로세스를 레디 큐에 삽입할 지를 결정하는 역할을 한다.

현대의 운영체제에서는 장기 스케줄러를 사용하지 않는다.
장기 스케줄러 없이 바로 프로세스에 대한 메모리를 할당해서 레디 큐에 삽입한다.

5. 선점형 스케줄링과 비선점형 스케줄링의 차이가 무엇인가요?

선점 스케줄링

한 프로세스가 cpu를 할당받아 실행되고 있을 때, 다른 프로세스가 cpu를 사용하고 있는 프로세스를 중지시키고
cpu를 차지할 수 있는 스케줄링 기법이다.
즉, 처리 도중 강제로 cpu를 점유할 수 있다.
우선순위가 높은 프로세스를 먼저 수행할 때 유리하다.

비선점 스케줄링

이미 사용되는 cpu를 빼앗지 못하고 사용이 끝날 때 까지 기다리는 스케줄링 기법이다.
모든 프로세스에 대해서 공정하지만, 중요도가 높은 작업에 대해서 기다리는 경우가 발생할 수 있다.

6. 선입선출 스케줄링(FCFS)에 대해 설명해주세요.

비선점 스케줄링 방식이다.
레디 큐에 먼저 들어온 프로세스에 대해서는 먼저 처리하는 스케줄링 방식을 의미한다.
CPU를 오랜시간 사용하는 프로세스가 처리되고 있는 경우, 그 뒤에 이어지는 프로세스들은 그에 해당하는 시간만큼 대기해야한다.

7. 최단 작업 우선 스케줄링(SJF)에 대해 설명해주세요.

비선점 스케줄링 방식이다.
가장 짧은 실행 시간을 가진 프로세스를 먼저 실행하여, 다른 프로세스가 대기하는 시간을 최소화한다.
따라서 짧은 작업이 긴 작업을 기다리는 starvation문제를 최소화시키지만, 우선순위가 높은 프로세스들이 나중에 실행되는 경우가 생기게 된다.
프로세스의 실행시간은 이전에 실행되었던 프로세스의 실제 수행시간과 예측했던 수행시간을 통해 구할 수 있다.
하지만 이런 프로세스의 실행시간을 정확하게 예측하기가 어렵기 때문에 제대로 된 스케줄링이 일어나지 않을 수 있다.
따라서 정확한 SJF를 구현하기 어려울 수 있다.

8. 최소 잔류 시간 우선 스케줄링(SRTF) 방식에 대해 설명해주세요.

선점 스케줄링 방식이다.
최단 작업 우선 스케줄링(SJF)에서 선점 방식이 추가되었다고 할 수 있다.
기본적인 방식은 SJF와 비슷한데, 프로세스가 큐에 도착하면 스케줄러는 현재 실행 중인 프로세스와 비교하여
남은 실행시간이 더 짧은 프로세스가 있다면 CPU를 그에게 할당한다.
평균 대기 시간을 최소화하고, 프로세스의 응답 시간과 starvation문제를 최소화한다.
이론상 최적의 스케줄링 알고리즘 중 하나이다.

하지만 SJF와 마찬가지로 프로세스의 남은 실행시간을 정확하게 예측해야하며, 오차가 발생하면 스케줄링이 예상과 다를 수 있다.
최적의 스케줄링 알고리즘인만큼 현실적으로 구현하기가 어렵다.
따라서 다른 스케줄링 알고리즘과 조합하여 사용하는 경우가 많다.

9. 우선순위 스케줄링에 대해 설명해주세요.

비선점 스케줄링 방식이다.
각 프로세스에 우선순위를 할당하고, 가장 높은 우선순위를 가진 프로세스를 가장 먼저 실행하는 방식이다.
중요한 작업을 먼저 처리할 수 있다는 장점이 있다.
우선순위는 프로세스가 도착할 때나 실행 중에 동적으로 변경될 수 있다.
따라서 우선순위가 낮은 프로세스는 cpu를 할당받지 못해 계속해서 실행되지 않는 starvation문제가 발생할 수 있다.

10. 라운드 로빈 스케줄링에 대해 설명해주세요.

선점 스케줄링 방식이다.
공정한 CPU 시간 분배와 응답 시간 최소화를 목적으로 한 스케줄링 방식이다.
선점 스케줄링의 하나로, 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘이다.
시간을 정해놓고 해당 단위시간동안 수행이 완료된 프로세스는 레디 큐의 가장 마지막으로 밀려나게 된다.
모든 프로세스에게 공평한 CPU 시간을 할당하기 때문에 공정한 스케줄링이라고 할 수 있다.
간단하고 구현하기 쉬우며, 대부분의 운영체제에서 사용한다.

하지만 시간 할당량이 너무 작으면 컨텍스트 스위칭 오버헤드가 증가하고, CPU사용률이 낮아질 수 있다.
시간 할당량이 너무 크면 응답시간이 길어져 실시간 프로그램에는 적합하지 않을 수 있다.

11. 멀티 레벨 큐(MQ) 스케줄링에 대해 설명해주세요.

여러 개의 프로세스 대기 큐를 사용하여 프로세스를 관리하는 방식이다.
각 큐에는 우선순위가 존재하고 높은 우선순위를 가진 큐에 있는 프로세스부터 순차적으로 실행한다.
각 프로세스는 우선순위 레벨에 따라 적절한 큐에 할당된다.
각 레벨에 존재하는 큐는 FCFS, RR등의 알고리즘을 통해서 처리된다.

각 레벨 별로 분리되어 있기 때문에 프로세스를 효과적으로 관리할 수 있다.
각 레벨 별로 스케줄링 알고리즘을 다르게 가져갈 수 있기 때문에 적합한 알고리즘을 선택하여 적용할 수 있다.

하지만 구현이 복잡하고, 적절한 우선순위 및 레벨에 해당하는 큐를 선택하기 어려울 수 있다.