Search

Linux 프로세스 이해

하드디스크에 물리적으로 저장된 애플리케이션을 실행시키기 위해선 RAM 위에 애플리케이션을 로드하여 CPU를 통해 작업을 수행해야 한다. 이 RAM 위에 올라온 애플리케이션을 프로세스라 부른다.
문제는 CPU가 하나라는것이다. 물론 여러개의 CPU 코어가 내장된 CPU칩도 있지만 중요한것은 언제나 제한된 연산장치 갯수를 가진다는 것이다. 프로그램을 CPU의 갯수만큼 실행시키고 나면, 더 이상 프로그램을 실행할 수 없게 된다.
이를 해결하기 위해 스레드라는것을 사용한다. 하나의 CPU가 여러 프로그램을 동시에 수행하도록 배정된 스레드들 중 하나의 스레드 위에서 짧은 시간을 연산하는 Time-slicing을 수행한 후, 다른 스레드로 갈아타 연산을 이어하는 Context-switching을 수행한다. 여기서 context란 스레드를 switch하기 직전까지 수행하던 작업의 기억이라 말할 수 있다. 이를 통해 여러 프로그램을 동시에 실행, 제어할 수 있다.
CPU가 가진 자원은 한정적이니 언제나 하나의 스레드에 배정되는 자원은 CPU의 자원보다 적어야 한다.