[OS] 컨텍스트 스위칭(Context Switching) - 1

해니·2024년 8월 5일

OS

목록 보기
1/1
post-thumbnail



컨텍스트 스위칭(Context Switching)


Context Switching이란?

  • CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것
  • 프로그램 A가 멈추고 B, C가 실행된 후 다시 A가 실행될 때 이전에 멈춘 부분 부터 다시 시작해주도록 하는 메커니즘

Context란?

  • CPU가 해당 프로세스를 실행하기 위한 정보들
    • 이러한 정보들은 프로세스의 PCB (process control block)에 저장된다.



Context Switching의 필요성

  • 여러 프로세스와 스레드들을 동시에 실행시키기 위해(그렇게 보이기 위해)
  • 여러 프로세스와 스레드들이 공정하게 CPU 시간을 나눠 갖기 위해
  • 높은 우선순위의 작업이 빠르게 처리될 수 있게



Context Switching 발생 시점

  • 주어진 Time Slice(Time Quantum)를 다 사용했을 때
    • 일정 시간 할당량(Time quantum) 또는 타임슬라이스(Time slice)라고 하는 단위로 여러 프로세스를 번갈아가며 프로세서에 할당한다.
    • Time Slice(Time Quantum) 동안 프로세스가 번갈아가면서 실행이 되는데, 매우 짧은 시간 동안 번갈아가면서 실행되면서 동시에 실행되는 것처럼 보이게 된다.
  • I/O 작업을 해야할 때
  • 다른 리소스를 기다려야 할 때
  • 인터럽트(Interrupt)

출처 : 컨텍스트 스위칭(Context Switching)



Context Switching Overhead

  • 여러개의 프로세스나 스레드가 있을때, CPU가 현재 프로세스나 스레드의 상태를 저장하고 다른 프로세스나 스레드로 전환될 때 발생하는 비용을 읨
    • 스위칭 하는 과정에서 CPU 시간과 자원을 소모하므로 성능에 영향을 미친다.
  • 프로세스의 컨텍스트 스위칭 오버헤드 보다 스레드의 컨텍스트 스위칭 오버헤드가 상대적으로 작기 때문에, 멀티 프로세스 대신 멀티 스레드로 프로그램 모델을 구성한다.
    • 멀티 스레드 모델은 스레드가 여러개이니 컨텍스트 스위칭 오버헤드가 발생하게 되고, 스레드가 많으면 많을 수록 스위칭 횟수도 많아지고 덩달아 오버헤드도 많아져 성능이 저하될 수 있다.





출처
컨텍스트 스위칭(Context Switching)
[OS] Context Switching (컨텍스트 스위칭)
[운영체제] 컨텍스트 스위치(Context Switch)란?
🤔 스레드를 많이 쓸수록 항상 성능이 좋아질까?
운영체제[운영체제] CPU 스케줄링

profile
💻 ⚾️ 🐻 이전했어요..! ➡️ https://dev-haeni.tistory.com/

0개의 댓글