ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9. 문맥전환, 선점과 비선점
    운영체제/운영체제 정리 2019. 10. 13. 22:30

    문맥 전환

     

    -Scheduler

    -dispatcher

    -context switch overhead

     

     

     

    문맥 전환 ( Context Switching ) 이란?

     

     

    CPU는 하나고 프로세스가 여러 개이기 때문에 어느 시점에는 하나의 프로세스에게 서비스를 할당하고 있을 것이다.

     

    그때 한 프로세스에서 다음 프로세스로 서비스 할당이 넘어가면 이를 문맥 전환이라 한다.

     

     

    전에 말했듯이 Ready Queue안에 프로세스들은 CPU의 서비스를 받기 위해 기다리고 이를 결정해 주는 것이

     

    CPU scheduler라고 하였다.

     

    ex ) p1을 서비스했다면 그다음 p2를 서비스해줄 것인가 p3를 서비스 해줄 것인가?

     

    (즉 OS 안에 프로세스 관리 영역에 있는 scheduler는 어떤 프로세스에게 CPU 서비스를 받게 해 줄 것인가 결정해주는 역할을 한다. )

     

     

    DIspatcher란?

     

    scheduler가 선택한 프로세스를 실행하도록 여러 상태나 레지스터 값을 바꿔주는 역할을 한다.

     

    p1에서 p2로 문맥 전환되려면 다시 p1으로 올 때를 대비해서 p1의 상태를 저장해 놓아야 하는데  (mmu값이나, 레지스터

     

    값 등) 이는 p1의 PCB에 저장되며 그 후에  p2의 상태를 restore 하여 p2가 실행되게 된다.

     

    이러한 일들을 OS 안 프로세스 관리부서에 dispatcher가 하게 되며 저장과 restore 같은 일들을 담당한다.

     

     

    Context Switch Overhead

    : 이러한 잦은 저장과 복원과 같은 문맥 전환이 많아지면 오버헤드를 불러일으킬 수 있다. 

     

     

     

    CPU Scheduling

     

    선점과 비선점

     

    선점 (Preemptive) : CPU가 한 프로세스에게 서비스를 실행하는 도중 아직 끝나지도 않고 I/O 도 만나지 않은 프로세스

     

    를 강제로 끌어내는 것.

     

    비선점 (Non-Preemptive) : 이미 한 프로세스가 실행 중이라면 끝나거나 I/O를 만나기 전까지는 CPU에 서비스 할당을 끝

     

    내지 않는 것.

     

     

    스케쥴링 기준은?

     

    : 레디큐에 있는 프로세스들 중 어느 프로세스를 먼저 CPU 서비스받게 해야 할까

     

    CPU 이용률(CPU Utillization) : CPU가 많이 이용될수록 좋은 것

     

    처리율(Throughput) : 단위 시간당 몇 개의 작업이 끝나는가  jobs / sec

     

    반환시간(Turnaround time) : 작업이 메인 메모리에 레디 큐로 들어간 시간부터 terminated 된 시간까지 sec

     

    대기시간(Waiting time) : 레디큐에서 CPU에 서비스를 받기 위해 얼마나 기다렸는가 sec

     

    응답 시간(Response time) : 처음 응답이 나올 때까지 걸리는 시간

     

     

    '운영체제 > 운영체제 정리' 카테고리의 다른 글

    11. 프로세스와 쓰레드  (0) 2019.11.11
    10. CPU 스케쥴링  (0) 2019.10.28
    8. 프로세스 관리  (0) 2019.10.07
    7. 운영체제의 주요 기능들  (0) 2019.10.04
    6. mmu란?  (31) 2019.09.24
Designed by Tistory.