[운영체제] 3주차 스터디

톰톰·2023년 9월 29일
0

질문

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

    프로세스가 원하는 자원을 사용하지 못하고 무한정 기다리는 상태

    • CPU 스케줄링 관점에서 기아 상태란 CPU 제어권을 얻기 위해 ready queue에 줄 서 있는 상황에서 특정 프로세스는 CPU를 얻지 못하고 무한정 기다리는 상태를 말한다.
    • CPU 스케줄링 기아 상태 예시
      • SJF : CPU 사용 시간이 짧은 프로세스를 우선 처리하기 때문에, ready queue에 프로세스가 계속해서 투입되는 상황에서 CPU 사용 시간이 긴 프로세스는 무한정 기다리고 있는 상황 발생 가능
      • Priority Scheduling : 우선 순위가 높은 프로세스를 우선 처리하기 때문에, ready queue에 프로세스가 계속해서 투입되는 상황에서 우선 순위가 낮은 프로세스는 무한정 기다리고 있는 상황 발생 가능
  2. 기아 상태를 어떻게 해결할 수 있나요?

    • 기아 상태 발생 불가능한 스케줄링 방식을 채택
      • FCFS : ready queue에 도착한 순서대로 CPU 제어권을 부여
      • Round Robin : ready queue에 도착한 순서대로 CPU 제어권을 부여하되, 할당시간이 끝나면 다시 ready queue에 뒤에서 자기 차례를 기다리도록
    • 멀티레벨 피드백 큐를 활용하여 오래 기다린 프로세스에 높은 우선순위를 부여하도록 할 수 있음
      • 여러 개의 큐가 서로 다른 우선순위를 가지고 있고
      • 프로세스가 서로 다른 큐를 오갈 수 있기 때문에
      • 낮은 우선순위의 큐에서 일정 시간 이상 기다린 프로세스는
      • 높은 우선순위의 큐로 이동시켜 기아 상태를 예방할 수 있도록
  3. CPU 스케줄링에 대해 설명해주세요.

    CPU를 사용하고자 ready queue에서 대기 중인 프로세스들에 대해 누구에게 얼마만큼의 CPU 사용권을 부여할지 결정하는 방법

    • 각 프로세스는 균일하지 않다.
      • CPU를 길게 많이 쓰는 프로세스와 사용자와 인터렉션이 자주 일어나 CPU를 짧게 쓰는 프로세스가 섞여있기 때문에
    • 컴퓨터 자원을 효율적으로 놀리기 위해 어떤 프로세스에게 CPU를 먼저 주고 얼만큼 주어야 하는지 결정하는 것이 중요한 문제가 된다.
      • I/O bound job에게 CPU를 먼저 주지 않아서 IO 디바이스가 놀고 있으면 비효율적
        • IO 요청이 많은 io bound job이 CPU 제어권을 잡지 못하면 IO 디바이스에 요청 자체가 안들어와서 아무 일도 안한채로 기다리는 상태가 될 수 있다.
      • 너무 짧게 CPU를 제어권을 다른 프로세스로 넘겨 Context Switching이 많아지면 비효율적
  4. 스케줄러의 종류는 무엇이 있나요?

    • 하나의 큐를 가지는 스케줄링 방식
      • FCFS (Nonpreemptive)
      • SJF (Nonpreemptive, Preemptive)
      • Priority Scheduling (Nonpreemptive, Preemptive)
      • Round Robin (Preemptive)
    • 여러개의 큐를 가지는 스케줄링 방식
      • Multilevel Queue
      • Multilevel Feedback Queue
  5. 선점형 스케줄링과 비전형 스케줄링의 차이가 무엇인가요?

    • 선점형 스케줄링 : CPU를 다른 프로세스에 빼앗길 수 있는 방식
      • FCFS : 자기에게 CPU가 할당되면 사용하고자 하는 시간 동안 다른 프로세스에게 빼앗기지 않는다.
    • 비선점형 스케줄링 : CPU를 빼앗기지 않는 방식
      • Round Robin : 더 사용하고 싶더라도 할당시간이 끝나면 다른 프로세스에게 빼앗긴다.
    • 두 버전 모두 존재하는 스케줄링 방식
      • SRJF : 선점형의 경우, 자신이 할당 받아서 사용하고 있더라도 CPU 사용시간이 더 적은 프로세스가 queue에 도착하면 해당 프로세스에게 CPU를 빼앗김
      • Priority Scheduling : 선점형의 경우, ….. 우선순위 더 높은 프로세스에게 CPU 빼앗김
  6. 선입선출 스케줄링(FCFS)에 대해 설명해주세요.

    ready queue에 도착한 순서대로 CPU를 부여하는 방식

    • 일단 CPU를 부여받은 프로세스는 작업이 끝날 때까지 빼앗기지 않는다.
    • 사용시간이 긴 프로세스가 먼저 도착하면 짧은 프로세스들이 오래 기다려야한다는 단점이 있다.
  7. 최단 작업 우선 스케줄링(SJF)에 대해 설명해주세요.

    CPU 사용 시간이 가장 짧은 프로세스에게 CPU를 부여하는 방식

    • 장점
      • 사용시간이 짧은 프로세스들이 먼저 처리되고 나가기 때문에, 전체적인 대기시간 측면에서는 가장 optimal한 방식이다.
    • 단점
      • ready queue에 프로세스가 계속 투입되는 상황에서 사용시간이 긴 프로세스는 영원히 CPU를 얻지 못하는 상황이 생길 수 있다.
      • 사전에 CPU 사용시간을 정확하게 예측하는 것도 한계가 있기 때문에 예측 결과와 사용시간이 다를 수 있다는 점이 있다.
  8. 최소 잔류 시간 우선 스케줄링(SRTF) 방식에 대해 설명해주세요.

    CPU 사용 시간이 가장 짧은 프로세스에게 CPU를 부여하고, 새로운 프로세스의 사용 시간이 현재 CPU를 사용 중인 프로세스의 사용 시간보다 적다면 CPU를 뺏어 해당 프로세스에게 부여하는 방식

    • CPU 스케줄링 방식 중 평균대기시간 측면에서 가장 optimal한 방식
  9. 우선순위 스케줄링에 대해 설명해주세요.

    우선순위가 높은 프로세스에게 CPU를 부여하는 방식

    • SJF도 일종의 우선순위 스케줄링 방식으로, CPU 사용시간을 우선순위 기준으로 잡은 스케줄링 방식이다.
    • queue에 프로세스가 계속 투입되는 상황에서 우선순위가 낮은 프로세스가 영원히 실행되지 않을 수 있다는 문제가 있다.
  10. 라운드 로빈 스케줄링에 대해 설명해주세요.

    각 프로세스에 동일한 할당 시간을 부여하고, 해당 시간만큼만 CPU를 사용하고 다시 queue에 줄을 서는 것을 반복하며 처리하는 방식

    • 범용 컴퓨터의 실제 CPU 스케줄링의 근간이 되는 방식이다.
    • 본인이 사용하고자 하는 CPU 사용시간과 대기시간이 어느정도 비례하기 때문에 공정하게 분배할 수 있다.
    • 장점
      • 기아현상을 막을 수 있다.
        • CPU를 기다리는 프로세스가 N개 라면, N-1 할당시간 내에는 CPU를 한 번은 사용할 수 있다.
    • 단점
      • 할당시간이 너무 짧거나 길면 비효율적이다.
        • 할당시간이 너무 짧으면 불필요한 context switching 오버헤드가 많이 일어나게 된다.
      • 할당시간이 너무 길면 FCFS와 동일하게 사용시간이 짧은 프로세스들이 너무 오래 기다려야 한다는 문제가 있다.
  11. 멀티 레벨 큐 스케줄링에 대해 설명해주세요.

    ready queue를 여러 개로 분할하여 관리하는 방식

    • 하나의 프로세스는 한 큐에만 속할 수 있다.
      • foreground queue : io bound job
      • background queue : cpu bound job (batch job)
    • 각 큐는 독립적인 스케줄링 알고리즘을 가질 수 있다.
      • foreground queue는 rr, background queue는 fcfs
    • 큐들에 대한 스케줄링도 필요하다.
      • foreground queue, background queue가 있다면 어떤 큐의 우선순위를 더 높게 가져갈 것인지를 결정
        • fixed priority scheduling : foreground queue가 비어있을 때만 background queue를 처리
        • time slice : 각 큐에 cpu 사용시간 비중을 부여, foreground queue에 80퍼센트, background queue에 20퍼센트
  12. 멀티 레벨 피드백 큐 스케줄링에 대해 설명해주세요.

    ready queue를 여러 개로 분할하여 관리하는 방식

    • 하나의 프로세스가 여러 개의 큐를 이동할 수 있다.
    • 기아상태를 해결하는 방법 중 하나인 aging 방식을 구현하는데 사용됨
      • 일정 시간 이상 기다린 프로세스를 우선순위가 높은 큐로 이동시켜서 처리가 되도록..

참고

회고

  1. 좋았던 점
    강의 개수가 다른 주차보다 적은데다가 휴일이 껴있어서 여유롭게 준비할 수 있었다!
    공부 중에 Context Switching의 주체가 Dispatcher라는 운영체제 코드임을 알게 되었는데,
    Spring의 ServletDispatcher의 어원이 여기서 유래된게 아닐까 하는 생각이 들기도 했다.
    이번 주도 보람찬 시간이었다 :)

  2. 아쉬운 점
    딱히 없다.

0개의 댓글