프로세스는 하드디스크에 저장되어 있던 프로그램이 메모리에 올라와 실제로 동작하고 있는 상태, 즉 실행 중인 프로그램 그 자체다. 운영체제가 관리하는 실행 단위이며 프로시저의 활동적인 측면도 포함한다. 각 프로세스는 독립적으로 실행되므로 비동기적 특성을 가진다. 프로세스를 동기적 행위의 주체라고 설명하면 틀린 설명이다.
다중 프로그래밍 시스템에서 하나의 CPU는 여러 프로세스를 번갈아 실행한다. 이때 현재 실행 중인 프로세스의 상태 정보(레지스터 값, 프로그램 카운터 등)를 메모리에 저장하고, 앞으로 실행될 프로세스의 상태 정보를 불러와 CPU 레지스터에 설정한 다음 CPU를 할당하는 전 과정을 컨텍스트 스위칭이라고 한다. 비슷한 용어와 구분하자. 인터럽트는 전환을 유발하는 사건이고, 세마포어는 프로세스 간 동기화를 위한 변수이며, 디스패칭은 준비 상태의 프로세스 하나를 골라 CPU에 할당하는 행위 자체다. 상태 정보의 저장과 복원까지 포함하는 전체 메커니즘을 지칭하는 용어는 컨텍스트 스위칭이다.
스레드는 프로세스 내에서 실행 흐름을 담당하는 경량 프로세스다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 여러 스레드는 프로세스의 공통 메모리(힙 영역 등)를 공유하며 효율적으로 통신한다. 스레드를 관리하는 주체에 따라 갈라진다. 커널 레벨 스레드는 운영체제 커널이 직접 관리하므로 안정적이지만 생성·전환 때마다 커널 모드로 진입하는 오버헤드가 크다. 사용자 레벨 스레드는 커널의 개입 없이 사용자 공간에서 관리되므로 전환 시 커널 모드 전환 비용이 없어 오버헤드가 현저히 줄고 성능이 향상된다.
예제
음악을 들으며 문서를 편집한다고 하자. 음악 플레이어와 문서 편집기는 각각 프로세스이고, CPU는 두 프로세스를 아주 짧은 간격으로 번갈아 실행한다. 플레이어에서 편집기로 넘어갈 때 플레이어가 어디까지 실행했는지 저장하고 편집기의 이어 할 지점을 복원하는 일이 컨텍스트 스위칭이다. 이 전환이 빠르기에 두 프로그램이 동시에 도는 것처럼 보인다.
문서 편집기 안에서 맞춤법 검사와 자동 저장을 함께 돌린다면 이것은 스레드다. 편집기 프로세스 안의 여러 실행 흐름이 공통 메모리를 공유하며 일한다. 이 흐름들을 사용자 공간에서 직접 바꿔 주면 커널을 거치지 않아 전환이 빠르다.
대표 기출 1문항
다중 프로그래밍 시스템에서 OS에 의해 CPU가 할당되는 프로세스를 변경하기 위한 목적으로 현재 CPU를 사용하여 실행되고 있는 프로세스의 상태 정보를 저장하고 제어 권한을 ISR에게 넘기는 작업을 무엇이라 하는가?
Context Switching
Monitor
Mutual Exclusion
Semaphore
정답과 해설 보기
정답 ① · CPU 할당 프로세스 변경을 위해 실행 중인 프로세스의 상태 정보를 저장하고 제어권을 넘기는 작업의 명칭을 묻는 문제이다. 다중 프로그래밍 시스템에서 운영체제가 프로세스를 교체할 때 현재 프로세스의 레지스터 값과 수행 상태를 저장하고 다음 프로세스의 상태를 복원해 제어권을 이양하는 작업을 컨텍스트 스위칭이라고 한다.
CPU 할당 변경 시 프로세스 상태 정보 저장 및 제어권 이양 작업을 컨텍스트 스위칭이라 한다.