프로세스( Process)와 스레드( Thread)

프로세스 (Process)

프로세스는 컴퓨터에서 실행중인 컴퓨터 프로그램을 말한다. 스케줄링의 대상이 되는 task와 비슷한 의미로 쓰인다. 여러 프로세서를 사용하는 것을 멀티 프로세싱이라고 하며 같은 시간에 여러 프로그램을 실행하는 방식을 멀티태스킹이라 한다. 프로세스의 관리는 운영 체제의 중요한 부분이다.

프로그램과 프로세스

프로그램은 일반적으로 하드디스크등에 저장된 실행코드를 뜻하고, 프로세스는 프로그램을 구동하여 프로그램 자체와 프로그램의 상태메모리에서 실행되는 작업 단위를 말한다. 예를 들면 하나의 프로그램을 여러번 구동하면 여러 개의 프로세스가 메모리에서 실행된다.

프로세스의 상태
  1. 생성(Create) : 프로세스가 생성되는 중 이다.
  2. 실행(Running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.
  3. 준비(Ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용 할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
  4. 대기 (Waiting) : 보류라고 부르기도한다. 프로세스가 입출력 완료, 시크널 수신 등 어떤 사건을 기다리는 상태
  5. 종료 (Terminated) : 프로세스의 실행이 종료

스레드 (Thread)

스레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름단위를 말한다. 일반적으로 한 프로그램하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드라고 한다.

멀티스레드의 단점

멀티스레드의 단점은 각각의 스레드 중 어떤 것이 먼저 실행될지 그 순서를 알 수 없다.


프로세스와 스레드의 비교

멀티프로세서와 멀티스레드 양쪽 모두 여러 흐름이 동시에 진행된다는 공통점을 가지고 있다. 그러나 멀티프로세서에서 각 프로세스독립적으로 실행되며 각각 별개의 메모리를 차지하고 있지만 멀티스레드는 프로세스 내의 메모리를 공유해 사용할 수 있다. 또한 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다.

Show your support

Clapping shows how much you appreciated 길상혁’s story.