업그레이드~!!

프로세스와 스레드

SamSiKi 2011. 3. 22. 20:11

프로세스
하드디스크에 저장되어 있는 EXE 파일을 보통 프로그램이라 부른다. 프로그램이 실행되어 동작하고 있으면 이를 프로세스(Process) 혹은 태스크(Task)라고 부른다.
프로ㅔ스를 인스턴스라고 일컫기도 하나, 엄밀하게 말해서 인스턴스는 프로그램이 메모리에 로딩되어 있는 상태를 말하는 것이고, 프로세스는 메모리상에서 실행되고 있는 상태를 말한다.

스레드
윈도우 95와 NT부터는 하나의 프로그램을 하나의 프로세스가 실행하는 것이 아니라 여러개의 프로세슬 나누어 동시에 실행되도록 할수 있게 되었다. 이때, 프로그램의 주 프로세스 외에 주 프로세스와 함께 동시에 실행되는 프로세스들을 스레드라고 부른다.

멀티스레드 프로그램
주 프로세스 외에 하나 이상의 스레드를 가지고 동작하는 프로그램을 멀티스레드 프로그램이라고 한다. 멀티태스킹 시스템이 컴퓨팅 효율을 증가시킬수 있는것과 같이 멀티스레드 프로그램은 프로그램의 동작효율을 향상시킬수 있다.
예를 들어, 맞춤법 검사 기능을 가지고 있는 워드프로세서 프로그램을 생각해 보자. 사용자가타이핑을 하면 사용자의 입력을 받는 기능을 수행해야 하며, 맞춤법 검사도 해야 한다. 이러한 기능을 하나의 프로세스로 구현하면, 프로세스가 맞춤법 검사를 하는 동안은 사용자의 입력을 받는 동작을 할 수 없기 때문에 프로그램이 사용자의 입력에 즉각적으로 반응하지 못할 수 있다. 이런 프로그램을 사용한다면 매우 답답할것이다.
이럴경우 멀티스레드 기술을 이용하여 프로그램을 작성하면 좋다. 사용자의 입력을 받는 기능을 주 프로세스에 구현하고, 맞춤법 검사를 하는 것은 스레드로 만들면 주 프로세스와 스레드가 동시에 동작을 하기 때문에 맞춤법 검사를 하느라고 사용자의 입력에 응답을 못하는 일은 생기지 않는다.
이와같이 프로그램에서 한가지 이상의 일을 동시에 수행해야 할때, 단일 프로세스로 프로그래을 구현하는 것보다 멀티스레드로 구현하면 프로그램을 훨씬 부드럽게 동작하도록 할 수 있다.

멀티스레드 기술을 사용하지 않고, 단일 프로세스만을 사용해도 모든 프로그램을 다 만들 수 있다. 즉, 멀티스레드를 쓰지 않고는 구현이 불가능한, 그럼일은 거의 없다.
그러나 하나의 프로그램에서 두 가지 이상의 기능을 동시에 수행해야 하는 경우, 멀티스레드를 적절히 사용하면 프로그램이 놀랄만큼 부드럽게 동작한다. 또한 자칫 프로그램이 먹통이 되어 버릴 수 있는, 복잡한 기능을 수행하는 와중에도 사용자의 응답에 즉각적으로 반응하는 환상적인 프로그램을 만들 수가 있다.

반응형