멀티 프로세스나 멀티 스레드 환경에서 CPU를 공유할 수 있도록 CPU가 실행할 프로세스를 교체하는 기술이다. 기존에 실행되던 내용을 PCB에 저장하고 새로 실행(running) 상태로 들어오는 PCB의 내용을 CPU에 세팅한다.
여러 프로세스나 스레드를 동시에 실행하는 것처럼 보이게 하기 위해 운영체제는 CPU 자원을 각 프로세스에게 빠르게 전환하여 할당한다.
컨텍스트 스위칭 때 해당 CPU는 아무 작업도 하지 못하며, 레지스터 상태를 저장하고 복구하는 과정에서 CPU 사이클이 소모된다. 그렇기 때문에 잦은 컨텍스트 스위칭은 오히려 오버헤드가 발생하고 효율이 떨어진다.
🔗 프로세스와 PCB
🔗 프로세스의 상태
🔗 CPU란?
이외에도 스레드 전환 등 다양한 이유로 발생할 수 있다.
🔗 CPU 스케줄링
시스템 콜(System Call)
사용자 프로그램이 운영체제의 기능(파일 읽기, 프로세스 생성, 메모리 할당 등)을 사용할 때, 커널에 직접 요청하는 방식이다.
open(),read(),write()같은 함수들이 시스템 콜에 해당한다.
현재 프로세스 상태 저장
현재 실행 중인 프로세스나 스레드의 상태(레지스터 값, 프로그램 카운터, 스택 포인터 등)를 PCB에 저장한다.
새 프로세스 상태 로드
CPU가 실행할 새로운 프로세스나 스레드를 선택한 후, 해당 프로세스의 상태를 CPU에 로드하여 실행을 시작한다.
프로세스 상태 전환
실행을 마친 프로세스는 대기 상태로, 새 프로세스는 실행 상태로 전환된다.