개발하는 체대생

프로세스와 스레드 본문

취업스터디

프로세스와 스레드

개발하는체대생
질문 : 프로세스와 스레드의 차이에 대해 설명해 주세요.

답변 : 프로세스는 컴퓨터에서 실행 중인 프로그램으로서 각자 독립적인 실행 환경을 가지고 실행되며, 서로 메모리를 공유하지 않는 반면, 스레드는 프로세스 내에서 실행되는 여러 실행 단위 중 하나로서 부모 프로세스의 메모리를 공유합니다.

프로세스(Process)

프로세스는 컴퓨터에서 실행 중인 프로그램을 의미합니다. 

프로세스는 프로그램을 실행하는 데 필요한 메모리, CPU 시간, 파일, 네트워크 연결 등의 자원을 운영체제로부터 독립적으로 할당받아 실행됩니다.

예를 들어 컴퓨터에서 워드 프로그램을 실행한다고 가정했을 때, 컴퓨터는 워드 프로그램을 실행하기 위해 새로운 프로세스를 생성하고 이 프로세서는 메모리에서 실행되기 위해 필요한 데이터와 코드, 스택 등을 가지고 있게 됩니다. 또한 이 프로세스는 워드프로그램을 실행할 때 CPU와 메모리, 디스크 등을 할당 받게 되고 워드 프로그램에서 작업이 일어날 경우 할당 받은 해당 프로세스에서 작업이 실행되게 됩니다.

프로세스들이 운영체제로부터 별도의 메모리 영역을 할당받은 모습

스레드(Thread)

스레드는 프로세스 내에서 실행되는 작업 단위입니다.

하나의 프로세스 내에서 여러 개의 스레드를 생성할 수 있습니다. 이 스레드들은 프로세스 내에서 자원을 공유하며, 각각 독립적인 실행 흐름을 가지고 작업을 처리합니다.

다시 워드 프로그램을 예시로 들면 워드 프로그램은 여러개의 스레드를 가지고 있을 수 있습니다. 예를 들어, 사용자가 문서를 작성하면 동시에 스타일을 변경하거나 이미지를 삽입하는 작업 발생할 수 있습니다. 이 때 각각의 작업은 스레드로 분리되어 동시에 처리될 수 있습니다. 이렇게 스레드를 사용하면 여러 작업을 동시에 처리할 수 있어 워드를 작성할 때 빠르게 작성할 수 있습니다.

스레드들이 프로세스의 Code/Data/Heap 메모리 영역을 공유하는 모습

 

결론

프로세스 컴퓨터에서 실행 중인 프로그램을 의미하고 스레드프로세스 내에서 실행되는 작업 단위를 의미합니다.

Comments