[24-04-08] Context Switching

XingXi·2024년 4월 9일
0

기록

목록 보기
22/33

⭐reference
https://edurev.in/t/186932/Process-Control-Block--PCB-

Process Context Switching

한 Process 에서 다른 Process 로 전환 하는 것을 말한다.

CPU 는 한가지 일밖에 하지 못하는데,
한번에 여러가지 일을 수행하기 위해 ( 동시성 ) 여러가지 일을 번갈아 가며 수행하고 있으며
이 과정에서 Process 에서 다른 Process 로 전환 과정이 발생하고, 이를 Context Switching 이라 한다.


Context

CPU 가 실행하려는 Process 를 실행하기 위한 데이터

  • 프로세스 전환을 위해 이전에 프로세스가 어디까지 명령을 수행했고
    ( Program Counter ), Register 에는 어떤 값이 저장되어 있는지에 대한 정보
  • PCB ( Process Control Block ) 에 저장 된다

❓왜 Context 라고 표현 할까?

왜 많고 많은 것 중에 문맥일까?
내 생각에는 Context Switching 의 목적 때문이다.
애초에 이게 일어나는 건 여러가지 프로그램을 번갈아 가며 동작시키기 위함이다.
CPU 가 2가지 ‘A’, ‘B’ 일을 하고 있다고 하고, 번갈아 가면서 실행시키고 있다.
‘A’ 가 일을 하다 ‘B’ 일을 하려고 할때, 이전에 ‘B’ 가 어디까지 일했는지 알아야한다.
CPU 가 코드 영역을 어디까지 읽었는지 파악해야하고, 이를 문맥 파악이라고 표현한게 아닐까 싶다.


PCB

OS 가 프로세스를 관리하기 위해 프로세스 정보를 저장하는 자료 구조

  • kernel 영역에 할당 된다.
  • Context Switching : CPU 가 Process 전환을 위해 PCB 정보를 교체하는 과정이라 볼 수 있다.

Context Switching 발생 조건

I/O 호출이 되거나, CPU 스케줄러에서 할당한 시간 자원을 모두 다 사용했을 때 주로 발생한다.

  • 스케줄러가 아주 짧은 시간으로 프로세스를 교체

    여기서 idle 상태 중 PCB0 에서 PCB1 로 Context Switching 이 발생하는 경우
    오버헤드가 발생하며 이 시간에는 CPU 가 일을 하지 않고 메모리만 할당 된다.
    ( CPU 의 가용성이 떨어짐 )

❓OverHead?

시스템이나 프로세스에 부가적으로 발생하는 비용이나 부담을 말한다.
컨텍스트 스위치가 발생하면 실행할 데이터들을 담는데 시간이 걸려
비용이 발생한다.


Process Status

  • 프로세스의 상태는 다음의 5개로 분류할 수 있다.
  • New : Process 새로 생성
  • Ready : CPU 할당 받을 준비 완료
  • Running : Process 가 CPU 할당을 받은 상태
  • Waiting : Process 가 I/O 작업이 완료 되거나, 이벤트 발생을 대기하는 상태
  • Terminate : Process 가 종료된 상태

Thread Context Swithcing

한 Thread 에서 다른 Thread 로 변경 되는 것을 말한다.

  • Process Context Switching 에 비해주소관련 처리 ( CPU 캐시 초기화, TLB 초기화 .. ) 를
    하지 않기 때문에 오버헤드가 작은편이다.
  • 메모리 공유하기 때문에 메모리 주소관련 작없이 없어서 오버헤드가 상대적으로 작지만,
    생성 비용이 크기 때문에 많은 수의 Thread 생성은 성능저하의 문제로 발전할 수 있다.

TCB ( Thread Control Block )

PCB 와 마찬가지로, Thread 동시성을 위해 Thread 상태 정보를 저장하는 자료구조

  • PC, Register Set, Pointer 를 데이터로 가진다.
  • PCB 에서 생성되기 때문에 PCB 데이터를 가리킨다.

0개의 댓글