동시성: 프로세스, 컨텍스트 스위칭

edward·2025년 10월 14일

프로세스의 정의

프로세스(process) 는 “실행 중인 프로그램”을 표현하는
운영체제의 추상화(abstraction) 이다.

하나의 시스템에서는 여러 개의 프로세스가 동시에(concurrently) 실행될 수 있다.
각 프로세스는 마치 자신이 하드웨어를 독점적으로 사용하는 것처럼 보인다.

여기서 concurrently 라는 말은,
한 프로세스의 명령어들이 다른 프로세스의 명령어들과 섞여(interleaved) 실행된다는 뜻이다.

대부분의 시스템에서는 실행할 프로세스의 수가
실제 CPU의 개수보다 많기 때문에,
운영체제는 이들 사이에서 CPU를 번갈아 가며 사용하게 한다.


단일 프로세서에서의 동작

전통적인 시스템은 한 번에 하나의 프로그램만 실행할 수 있었지만,
현대의 멀티코어 프로세서(multicore processor) 는
여러 프로그램을 동시에 실행할 수 있다.

하지만 단일 CPU에서도 여러 프로세스가 동시에 실행되는 것처럼 보일 수 있다.
운영체제가 프로세스 간 전환(context switching) 을 수행하기 때문이다.


컨텍스트 스위칭 (Context Switching)

운영체제는 프로세서가 어떤 프로세스에서 다른 프로세스로 전환할 때
그 상태(state)를 저장하고 복원해야 한다.
이 상태를 컨텍스트(context) 라고 부른다.

컨텍스트에는 다음과 같은 정보가 포함된다:

  • PC (Program Counter) 의 현재 값
  • 레지스터 파일(Register file) 의 내용
  • 주기억장치(Main memory) 의 상태

단일 CPU 시스템(단일 프로세서 시스템, uniprocessor system)에서는
한 시점에 오직 하나의 프로세스만 실제로 실행된다.

운영체제가 현재 실행 중인 프로세스를 다른 프로세스로 전환하기로 결정하면,
다음 순서로 컨텍스트 스위치(context switch) 를 수행한다:

  1. 현재 프로세스의 컨텍스트를 저장한다.
  2. 새 프로세스의 컨텍스트를 복원한다.
  3. CPU의 제어권을 새 프로세스에 넘긴다.

이 과정을 통해 새 프로세스는 중단되었던 지점부터 정확히 다시 실행을 이어간다.

profile
there ain't no shortcuts

0개의 댓글