강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

jo님의 프로필 이미지
jo

작성한 질문수

그림으로 쉽게 배우는 운영체제

RR

FIFO 알고리즘 / RR 알고리즘

해결된 질문

작성

·

419

1

안녕하세요

컨텍스트 스위칭 개념에 대해 궁금한 것이 생겨 질문드립니다.

RR 알고리즘 설명해주실 때, 평균대기시간이 비슷한 경우 FIFO 알고리즘이 RR 알고리즘보다 효율적인데 RR 알고리즘의 경우 컨텍스트 스위칭이 일어나서 컨텍스트 스위칭 시간이 추가되기 때문이라고 하셨잖아요. 그럼 FIFO알고리즘처럼 하나의 프로세스가 다 끝나고 다음 프로세스로 넘어가는 경우는 컨텍스트 스위칭이 아닌건가요?

질문)

  1. 프로세스 하나가 종료된 후 다음 프로세스로 CPU를 할당하는 것은 컨텍스트 스위칭이 아닌건가요? 만약 그렇다면 비선점형 스케줄링의 경우는 선점형에 비해 상대적으로 컨텍스트 스위칭으로 인한 오버헤드 발생을 크게 고려하지 않아도 되나요?

    (추가)제가 공부한 것을 찾아보니 컨텍스트 스위칭이 일어나는 경우 중 CPU할당시간이 다 된 경우도 있다고 했는데 왜 RR 알고리즘만 컨텍스트 스위칭 시간이 추가되기 때문에 덜 효율적이라고 한 건지 잘 모르겠습니다. 그럼 비선점이여도 프로세스들의 시간이 짧다면 컨텍스트스위칭이 많이 자주 발생하고 오버헤드가 크게 발생할 가능성이 있는 것 같은데 제생각이 맞을까요?

     

  2. MLFQ 강의 예시에서 타임슬라이스가 1초인 경우에 프로세스1과 프로세스2(입출력 요청 후 대기중)의 컨텍스트 스위칭 과정이 어떻게 일어나는지 자세히 설명해주실 수 있나요?

    제 생각에는 프로세스1이 할당시간이 다 되어 큐에 들어갔고 CPU는 PCB1에 프로세스1의 정보를 저장한 후 큐에 있는 다른 프로세스를 가져와서 실행하려고 했는데 큐 안에는 프로세스1만 있기 때문에 다시 큐에서 프로세스1을 가져와서 PCB1의 정보를 리로드하고 이전 진행시점에 이어서 프로세스를 진행하는 것 같은데 맞을까요?

 

답변 1

0

감자님의 프로필 이미지
감자
지식공유자

안녕하세요 jo님!
컨텍스트 스위칭을 공부하시다가 궁금증이 생기셨나 보네요.
질문해주신 내용에 답변드리겠습니다.

 

  1. 프로세스 하나가 종료된 후 다음 프로세스로 CPU를 할당하는 것은 컨텍스트 스위칭이 아닌건가요? 만약 그렇다면 비선점형 스케줄링의 경우는 선점형에 비해 상대적으로 컨텍스트 스위칭으로 인한 오버헤드 발생을 크게 고려하지 않아도 되나요?
    컨텍스트 스위칭은 프로세스의 정보를 가지고 있는 PCB의 내용과 레지스터들의 내용을 바꾸는 것이기 때문에 프로세스가 종료되고 다른 프로세스로 CPU를 할당하는 것도 컨텍스트 스위칭입니다.
    FIFO에서 발생하는 컨텍스트 스위칭은 다른 프로세스를 실행하기 위한 꼭 필요한 작업입니다.
    (이 작업이 없다면 하나의 프로세스밖에 실행 못하겠죠...)
    한 프로세스에서 다른 프로세스로 이동할 때 단 한 번만 발생하기 때문에 오버헤드는 고려하지 않습니다.

    RR은 매 타임슬라이스 초마다 프로세스를 컨텍스트 스위칭합니다.
    두 개의 프로세스(p1, p2)만 있다고 가정하면
    p1 -> p2 -> p1 -> p2 -> p1 ...
    조금씩 나눠서 실행하므로 컨텍스트 스위칭이 매우 많이 발생하게 됩니다.
    타임슬라이스가 작을수록 CPU가 일할 시간은 줄어들고 상대적으로 컨텍스트 스위칭 작업이 더 커지게 되는 것이죠.

     

  2. MLFQ 강의 예시에서 타임슬라이스가 1초인 경우에 프로세스1과 프로세스2(입출력 요청 후 대기중)의 컨텍스트 스위칭 과정이 어떻게 일어나는지 자세히 설명해주실 수 있나요?
    프로세스1을 p1, 프로세스2를 p2라고 가정하겠습니다.
    만약 우선순위 1인 큐에 [p1, p2]가 들어있다고 가정하겠습니다.
    그럼 먼저 들어온 p1이 먼저 실행됩니다.
    p1은 작업이 더 남긴 했지만 타임슬라이스가 1초이므로 중간에 뺏깁니다.
    그럼 다시 큐에 들어가는데 이번엔 우선순위 1인 큐에 들어가는 것이 아니라 우선순위 2인 큐에 들어갑니다.
    운영체제는 큐를 보고 적절한 프로세스를 선택하는데 우선순위 1인 큐에 [p2] p2가 혼자 있으니 p2를 선택합니다.
    p2는 I/O Bound 프로세스이므로 타임슬라이스 1초 만에 작업이 끝났기 때문에 큐에 다시 들어가지는 않습니다.
    운영체제가 다시 큐를 보고 적절한 프로세스를 선택하는데 우선순위2인 큐에 [p1] p1이 혼자 있으니 p1을 선택합니다.
    이번에도 타임슬라이스 1초만큼 실행하고 뺏길 테지만 우선순위3인 큐에 들어가고, 다른 프로세스가 없으므로 p1는 계속 혼자 실행될 수 있습니다.

 

궁금증이 해결되셨나요?

jo님의 프로필 이미지
jo
질문자

감사합니다!

jo님의 프로필 이미지
jo

작성한 질문수

질문하기