티스토리 뷰

프로세스, 태스크, 스레드의 차이점

프로세스, 태스크, 스레드에 대해서 알고 있다고 생각했는데막상 생각해보니 아닌거 같기도한 생각이 들어 나름 정리를 해본다.

process, task, thread 그리고 작업관리자

이해를 돕기위해서 ctrl + alt + del 키를 눌러서 '작업관리자'를 시작해 보자.열려진 windows 작업관리자의 프로세스 탭을 보면 현재 동작중인 프로세스들이 나온다.

보이는 것 처럼 프로세스는 컴퓨터에서 실행되고 있는 프로그램을 말한다.(참고로 영어 프로세스(process)는 절차, 처리, 가공이란 뜻을 갖고 있다.)그리고 이미지에 보이는 바와 같이 프로세스는 자신만의 독립적인 메모리 공간을 갖고 있다.

프로세스를 관리하는 프로그램을 작업 관리자 라고 이름을 붙인것 처럼태스크(작업)는 프로세스와 거의 같은 의미로 쓰인다.윈도우에서는 스레드, 리눅스에서는 태스크라 부르더이다.

그럼 스레드는? 스레드는 프로그램 내에서 실행되는 흐름의 단위를 말한다.흐름이란게 좀 의미가 아리송하게 다가올 수 있는데플로우차트를 생각하면 된다. 플로우 차트에서 프로그램은 하나의 흐름으로 그려진다.그런데 2개 프로그램이 동시에 흘러가야 하는 경우도 있을 것이다.이러한 실행 방식을 멀티스레드(multithread)라고 한다.

이렇게 프로그램이 동시에 실행될 수 있는 여러 세그먼트로 나눠질 때 각 부분을스레드라 칭한다. 말로 적으니 복잡한데 그림으로 보면 별것 없다.

이미지 : 위키백과 발췌