프로그램, 프로세스, 스레드
프로세스(process)는 '실행 중인' 프로그램(program)을 의미한다
프로세스는 최소 하나 이상의 스레드(thread)를 가진다
스레드는 CPU 코어에서 실행(execution) 혹은 스케줄링(scheduling)되는 기본 단위(unit)다
프로그램이 메모리에 올라가서 실행 중인 상태가 된 것을 프로세스라고 부르고
한 프로세스는 최소 하나 이상의 스레드들로 동작하게 되며,
이때 이 스레드들 각각이 CPU 코어에서 실행된다고 볼 수 있다
두 종류의 컨텍스트 스위칭(context switching)
컨텍스트 스위칭은 CPU 코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 바뀌는 것을 의미하며
두 종류의 컨텍스트 스위칭이 존재한다
1. 프로세스 컨텍스트 스위칭
2. 스레드 컨텍스트 스위칭
하지만 바로 앞에서 CPU 코어에서 실행되는 단위는 스레드라고 했다
그렇다면 컨텍스트 스위칭은 스레드 사이에서만 일어날 것 같은데
왜 프로세스 컨텍스트 스위칭이라는 용어를 쓰는 걸까?
프로세스 컨텍스트 스위칭도 실제로는 스레드 간의 스위칭이다
프로세스 컨텍스트 스위칭도 당연히 스레드 간의 컨텍스트 스위칭으로 동작한다
스레드 컨텍스트 스위칭과 차이가 있다면
프로세스 컨텍스트 스위칭은 서로 다른 프로세스에 속한 스레드 간의 컨텍스트 스위칭이 발생하는 것이다
예를 들어
프로세스 A에 속한 스레드 x와 프로세스 B에 속한 스레드 z가 있을 때,
스레드 x와 스레드 z 사이의 컨텍스트 스위칭은
프로세스 컨텍스트 스위칭이라고 보는 것이다
만약 프로세스 A에 속한 스레드 x와 스레드 y가 컨텍스트 스위칭을 하게 되면
x와 y는 같은 프로세스에 속한 스레드들이기 때문에
이때는 스레드 컨텍스트 스위칭이라고 부르게 된다
정리하면,
실제로 컨텍스트 스위칭의 대상은 스레드지만,
서로 다른 프로세스에 속한 스레드들끼리 스위칭이 발생하면 이때는 프로세스 컨텍스트 스위칭이라고 부르고
같은 프로세스에 속한 스레드들끼리 스위칭이 발생하면 이때는 스레드 컨텍스트 스위칭이라고 부른다
쉬운코드는 본질에 충실합니다
🔸 기본기에 충실한 쉬운코드에서 관련 영상을 만나보세요