[OS] Context Switch

kante·2020년 12월 23일
0

2020 12 09

운영체제를 이제 슬슬 공부해볼까 한다. 운영체제를 공부할 때는 프로세스와 스레드가 가장 중요한 것 같은데, 프로세스와 스레드는 인터넷에 검색해서 공부를 했고, 주변 개념들을 하나씩 보려고 한다. 나중에 시간이되면 프로세스랑 스레드도 정리해볼까 하고..


Context

CPU가 해당 프로세스를 실행하기 위한 프로세스의 정보들

  • 한 프로세스의 문맥은 PCB에 저장된다.

    • PCB 정보

      - 프로세스 상태 : 생성, 준비, 수행, 대기, 중지

      - 프로그램 카운터 : 프로세스가 다음에 실행할 명령어 주소

      - 레지스터 : 누산기, 스택, 색인 레지스터

      - 프로세스 번호

Context Switch

문맥 교환(Context Switch)은 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업

  • Process P0과 Process P1이 있다.
  • P0이 CPU를 Execute하고 있고 P1이 Idle 상태이다.
  • 잠시 후 P1이 Execute 되고 P0이 대기가 되는 상태가 된다.
  • 이 때 P0이 idle상태로 될 때 지금까지 작업하던 내용을 어딘가에 저장하게 된다 이를 PCB라 한다.
  • P0은 PCB에 저장해야 하고, P1을 실행시키기 위해 PCB에서 불러와야 한다.
  • 이렇게 idle -> Execute -> ... 상태를 번갈아가면서 하는 것을 Context Switch라고 한다.

단점

  • 컨텍스트 스위치가 많이 일어나면 Overhead가 발생하여 성능이 저하될 수 있다.
  • Context Switch가 일어날 때는 CPU가 아무 일도 하지 못 한다.

Thread

  • 스레드에서는 컨텍스트 스위치를 할 때, PCB에는 스택 및 간단한 정보만 저장한다.
  • 컨텍스트 스위칭이 프로세스보다 훨씬 빠르다.

참조

  1. https://jeong-pro.tistory.com/93?category=793347
  2. https://www.crocus.co.kr/1364
profile
경험많은 개발자가 되자

0개의 댓글