프로세스 스케줄링

     

    CPU 스케줄링(=프로세스 스케줄링)의 목적은 모든 프로세스가 공평하게 작업할 수 있도록 어떤 프로세스CPU를 배정할지 결정하는 작업을 의미합니다. 이 작업은 컴퓨터 시스템의 효율에 직결되는 중요한 일입니다.

     

     

    스케줄링 시 고려 사항은 비선점 스케줄링과 선점 스케줄링이 있습니다.

     

    - 비선점 스케줄링

    비선점 스케줄링

    많은 작업들이 프로세스화 되면서 준비(Ready)상태에서 기다리고 있습니다.

    준비 상태는 많은 프로세스가 준비하고 대기하는 공간이 있는데, 이걸 준비큐라고 얘기합니다.

     

    비선점은 준비큐 내에 진입한 프로세스들이 일단 CPU 할당 받아서 "너! CPU 이용해~"라고 선택이 되면, 

    끝까지 맡은 일을 다 하고, 마지막에 종료해서 나가는 상황이며 강제적으로 빼앗을 수 없습니다.

    일괄 처리 시스템에 적합합니다. 

     

    준비큐에 모았다가 준비큐!하면 일괄적으로 실행하는 상태

     

    화살표 방향

    준비에서 실행으로만 가고 실행에서 준비로 가지는 않아요!

     

     

    - 선점 스케줄링

    화살표 방향

    준비에서 실행으로만 가고 다시 실행에서 준비가요!

     

    하나의 프로세스가 CPU를 오랜 시간 독점하게 되면, 준비하고 있는 프로세스가 "나 너무 많이 기다려요! 그럼 병행성에 문제가 생겨요!"라고 컴플레인을 하게 됩니다. "빼앗아야겠다!"라고 하는것이 선점 스케줄링입니다. 

     

    선점 스케줄링은 프로세스가 CPU를 할당받아 실행 중이더라도 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗을 수 있는 방식입니다. 

     

    CPU에 제한 시간을 걸어 둡니다. 그것이 바로 TimeSlice (TS)입니다. "CPU 몇 초만 이용해!"라고 그 시간 이상으로 이용할 수 없게 하는 것 입니다.

    긴급하고 높은 우선순위의 프로세스들이 빠르게 처리될 수 있습니다. 대화식 시분할 시스템에 적합합니다.

     

     

    알고리즘 종류

    비선점 스케줄링 종류
    FCFS
    (First Come First Service)
    준비상태큐에 도착한 순서대로 CPU를 할당하는 비선점형 방식
    줄서서 CPU 이용권 얻기 
    SJF
    (Shortest Job First)
    실행 시간이 가장 짧은 작업부터 cpu를 할당하는 비선점형 방식
    CPU 조금만 이용해도 되는 작업부터 먼저 처리하는 방식
    * 평균 대기 시간이 최소화됨
    🔥HRN🔥 우선 순위 계산값에 의해서 우선 순위 값을 산출하는 방법!
    우선순위 계산식 = (대기시간+서비스 시간)/서비스 시간 결과값이 커야 1등!
    * 기본적으로는 우선순위 값이 작아야 1등인데, HRN은 결과값이 커야 1등!
    기한부 작업이 주어진 특별한 시간이나 만료시간 안에 완료되도록 하는 기법
    우선순위 PCB블럭 내에 기본으로 되어있는 우선순위를 따르겠다 ! 
    준비상태 큐에 대기하는 프로세스에 부여된 우선순위가 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법 즉 !
    우선 순위 높은 거 1순위로 처리해 
    에이징 기법 (경로 우대느낌..! 우선 순위 낮으면 너무 오래 기다려야 되니까 에이징 기법 적용해서 반영해서 우선 순위를 올려주는 기법) 

     

    선점 스케줄링 종류
    SRT
    (Shortest Remaining Time)
    실행 중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행 시간을 비교
    비선점 SJF를 선점화 한 기법
    시분할 시스템에 유용함
    RR(Round Roubin) 비선점 FIFO(FCFS) 방식을 선점화 한 기법
    주어진  Time slice 안에 작업을 마치지 않으면 준비완료 리스트의 가장 뒤로 배치되는 기법
    * 시간 할당량이 너무 커지면 FCFS와 비슷하게 됨 
    다단계 큐
    (MQ, Muliti-level Queue)
    작업 성격에 따라 우선순위를 구분해서 상,중,하의 단계별 준비큐를 배치하는 기법
    다단계 피드백 큐
    (MFQ,Multi-level Feedback Queue)
    준비상태 큐마다 부여된 시간 할당량 안에 완료하지 못한 프로세스는 다음 단계의 준비상태 큐로 이동하는 기법
    짧은 작업,입/출력 위주의 작업권에 우선권을 부여함
    마지막 단계의 큐에서는 작업이 완료될 때까지 Round Roubin 방식을 취함

     

    피포는 비선점, 라운드 로빈은 선점!

     

    문맥교환(Context Switching)

    다중 프로그래밍 시스템에서 운영체제에 의하여 CPU가 할당되는 프로세스를 변경하기 위해서 현재 CPU를 사용하여 실행되고 있는 프로세서의 상태 정보를 저장하고(=프로세스마다 있는 PCB 정보를 각각 관리하는 상황에서 점검한다), 앞으로 실행될 프로세스의 상태 정보를 설정한다.

    즉, PCB 블럭 정보를 교체하는 상황

     

     

    728x90

    '📓 Study > CS' 카테고리의 다른 글

    트랜잭션  (0) 2021.10.29
    집계 함수  (0) 2021.09.28
    프로토콜  (0) 2021.09.27
    데이터베이스 개념, 관리 시스템, 스키마  (0) 2021.09.20
    운영 체제의 종류 및 Shell Script  (0) 2021.09.19

    댓글