• [운영체제] 프로세스 스케줄링 ( Process Scheduling )

    2021. 8. 10.

    by. KimBangg

    들어 가기 전에

     

    이 내용은 이전 포스팅인 프로세스란 무엇인가? 를 기반으로 작성된 글입니다.

    프로그램과 프로세스의 차이 / PCB / 메모리 모델에 대해서 헷갈리는 내용이 있으시다면, 위 포스팅을 선행으로 보는 것을 권합니다.

     

      

     

    멀티 태스킹

     

    우리는 컴퓨터를 할 때 보통 [ 유튜브 켜놓기, 브라우저 검색, vscode 작성 ] 등 여러가지 작업을 동시에 진행합니다.

    과연 컴퓨터는 이 작업을 "동시에" 처리 하는 걸까요?  정답을 미리 말씀 드리자면 "아니요" 입니다.

     

    하나의 작업이 CPU를 점유 하고 있는다면, 다른 작업의 개입이 불가능 합니다. 그러므로 작업을 빠르게 순환 시켜주면서 우리가 마치 동시에 작업이 이루어지는 것과 같은 기분을 주는데요. 이 것을 문맥 교환(Context Switching) 이라고 합니다.

     

    오늘은 문맥교환과 이를 지탱하는 방법인 스케줄링에 대해 알아보겠습니다.

     

      

     

    프로세스 상태

     

    이전에서 다뤘던 PCB 에서 각 프로세스는 상태를 가진다는 것을 배울 수 있었습니다.

    상태는 [ 생성, 준비, 실행, 대기, 종료 ] 총 5가지를 가지게 됩니다.

    여기서 중요한 포인트가 있다면 오직 하나의 프로세만이 하나의 프로세서(=CPU) 위에서 작동이 될 수 있다는 것입니다.

    고로, 실행 중인 작업 외의 나머지 작업들은 [ 대기, 준비 ] 에서 존재 하는 것이죠 :D

     

     

     

     

    프로세스 스케줄링 큐

    - 프로세스들은 스케줄링을 위해 다양한 큐를 이동하며 존재합니다.

     

        - Job queue : 시스템 내부의 모든 프로세스들이 존재 할 수 있는 큐

        - Ready queue : 메인 메모리에 적재 되어 준비 또는 대기 상태에 있는 작업들을 수용하는 큐

        - Device queue : I/O Device  를 대기하는 프로세스를 위한 큐

     

    - 상단의큐들은 연결 리스트 (Linked List) 처럼 수행이 됩니다.

        -  각각의 PCB는 다음 PCB의 포인터를 가지고 있습니다.

    - 프로세스 스케줄링 도식화

     

     

     

    스케줄러의 종류

     

    1.  Long-term Scheduler ( or job Scheduler  )

     

    - 어떤 프로세스가 디스크에서 끄내져, Ready Queue로 갈지 선택한다.

    - 몇 초 ~ 몇 분 단위로 자주 호출 되지 않는다.

    - 프로세스는 "입/출력" 이 중심이 되는 [ I/O-bound Process] 와 연산을 많이 요구하는 [ CPU-bound-Process] 가 존재하는데 이를 적절히 섞어서 배치 해야한다.

     

     

    2.  Short-term Scheduler ( or job Scheduler  )

     

    - 레디큐에 존재하는 작업들 중에서 어떤 작업이 실행될지 선택한다.

    - Milliseconds 단위로 매우 빈번하게 호출된다.

     

     

     

     

    댓글