Context Switching 이란?

    출처: https://prepinsta.com/operating-systems/context-switching/

    Context Switching 이란?

    OS (Operating System) 의 Scheduler 가 우선순의에 의해 기존에 실행되고 있는 Porcess 를 미루고 새로운 Process 로 교체해야할 때 Process 상태 값을 교체하는 작업 (Process 기준의 설명)

    CPU (Control Processing Unit) 가 어떤 Process 를 실행하고 있을 때, Interrupt 요청에 의해 OS (Operating System) 의 Scheduler 가 더 높은 우선순위의 Proecss 를 실행해야 한다면 Scheduler 가 Register 에 저장된 기존 Process 정보나 상태를 Kernal 내부에 존재하는 PCB (Process Control Block) 에 저장하고, 새 Process 의 정보, 상태를 PCB 에서 가져와 교체하는 작업
    * CPU 는 Context Switching 할 때 다른 작업을 할 수 없다. 따라서 잦은 Context Switching 은 Overhead 가 발생해 효율이 떨어진다

    Context 란?

    OS 의 Context 란 CPU 가 해당 Process 를 실행하기 위한 Process 의 정보를 의미한다

    Context 는 Process 의 PCB 에 저장된다
    PCB 의 정보를 Context Switching 시 읽어 CPU 가 수행을 멈춘 Process 를 다시 불러와 이어서 진행할 수 있다

    PCB (Process Control Block): Process 가 저장되는 곳

    특정 Process 를 관리할 필요가 있는 정보를 포함하는 OS Kernal 의 자료구조

    출처: https://blog.naver.com/chanheeis/221269778250

    PCB 의 저장 정보

    • Process number
    • Process state: new, ready, running, waiting, terminated
    • Program counter: Process 가 다음에 실행할 명령어 주소 (코드 한줄한줄을 가리키는 주소 register)
    • Register: Stack, Accumulator 등

    * TCB (Thread Control Block)




    Context Switching 은 언제 발생하나?

    Interrupt

    CPU 가 Program 을 실행하고 있을 때, 예외상황이 발생하여 처리가 필요할 경우에 CPU 에게 알려 처리할 수 있도록 하는 것

    * 우선적으로 처리해야할 일이 발생하였을 때 그것을 처리하고 원래 동작으로 돌아옴

    Context Switching 을 발생시키는 Interrupt

    • 입/출력을 요청할 때
    • CPU 사용시간이 만료되었을 때
    • 자식 Process 를 만들 때
    • Interrupt 의 처리를 기다릴 때

    Context Switching 의 단점

    잦은 Context Switching 시 Overhead 로 인한 성능 저하

    * Overhead: 사용된 시간과 메모리의 양

    출처: https://www.crocus.co.kr/1364

    위 그림처럼 Context Switching 에는 기존 Process 정보는 PCB 에 저장하는 과정, 새로운 Process 의 정보를 PCB 에서 불러오는 과정이 필요하다. 이 때 CPU 는 다른 작업을 할 수 없고, Context Switching 이 잦다면 이로 인해 성능이 저하된다.


    Context Swtiching 속도 비교

    Process 보다는 thread 가 빠르다
    * 자세한 내용은 아래 링크 참고(이전 글)

     

    Process(프로세스)와 Thread(쓰레드)의 개념 & 차이

    Process (프로세스) 의미 Program이 실행 후 작동하고 있는 상태일 때, 컴퓨터에서 연속적으로 실행되고 있는 '동적인 상태'의 Program Program을 실행하면 OS가 메모리 등 필요한 자원을 할당해주어 "Proces

    kay-dev.tistory.com


    용어

    Kernal: OS 중 항상 필요한 부분의 전원만 켜짐과 동시에 메모리에 올리고
            그렇지 않은 부분은 필요할 때만 메모리에 올려서 사용하는데
            이 때 메모리에 상주하는 OS 의 부분을 Kernal 이라 함
            * OS 도 SW 라서 메모리에 올라가야 하지만 규모가 큰 Program 이라서 모두 올리면
              메모리의 낭비가 심하기 때문에 Kernal 로 분리해 둔 것!!
    
    Scheduler: 어떤 Process 에게 자원을 할당할 지 순서와 방법을 결정하는 OS Kernal 의 모듈
    
    Register: n-bit의 정보를 저장할 수 있는 고속도의 기억장치를 말한다.
              * CPU에서는 외부 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하고
                이동하는 고속도의 기억장치로 사용된다.
              * 참고: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=cjsksk3113&logNo=222249216316

     


    참고

    https://www.crocus.co.kr/1364
    https://agh2o.tistory.com/12
    https://beststar-1.tistory.com/26
    https://jeong-pro.tistory.com/93?category=793347
    https://prepinsta.com/operating-systems/context-switching/
    https://jhnyang.tistory.com/7

    댓글

    Designed by JB FACTORY