리눅스 프로세스 스레드

이재하·2023년 5월 17일
0

프로세스(Process)와 스레드(Thread)는 컴퓨터 시스템에서 동작하는 실행 단위로, 다음과 같은 차이점이 있습니다:

정의:

프로세스: 운영 체제에서 실행 중인 프로그램을 나타냅니다. 프로세스는 독립된 메모리 공간, 파일 핸들, 시스템 리소스 등을 가지고 있으며, 개별적으로 스케줄링되고 관리됩니다.
스레드: 프로세스 내에서 실행되는 실행 단위로, 프로세스의 자원을 공유하며 프로세스의 주소 공간에서 실행됩니다. 하나의 프로세스에는 여러 개의 스레드가 존재할 수 있습니다.
자원 공유:

프로세스: 독립된 메모리 공간을 가지고 있기 때문에 프로세스 간의 자원 공유는 별도의 메커니즘이 필요합니다. 프로세스 간 통신(IPC) 기법을 사용하여 데이터를 주고받을 수 있습니다.
스레드: 스레드는 하나의 프로세스 내에서 실행되므로, 프로세스의 메모리, 파일 등의 자원을 공유할 수 있습니다. 이로 인해 스레드 간의 통신과 데이터 공유가 간단하고 빠릅니다.
생성 및 소멸:

프로세스: 새로운 프로세스를 생성하기 위해서는 운영 체제에게 새로운 프로세스를 요청해야 합니다. 프로세스의 생성 및 소멸은 비용이 크고 느린 작업입니다.
스레드: 스레드는 프로세스 내에서 동적으로 생성 및 소멸될 수 있습니다. 스레드의 생성과 소멸은 프로세스 내의 함수 호출로 처리되므로 비교적 빠르고 경제적입니다.
동작 방식:

프로세스: 각 프로세스는 독립적인 제어 흐름을 가지고 있습니다. 프로세스는 자체적으로 실행 순서를 결정하고, 문맥 교환(context switch)을 통해 CPU를 전환하며 실행됩니다.
스레드: 스레드는 프로세스 내에서 동시에 실행될 수 있습니다. 스레드는 프로세스의 자원과 메모리를 공유하면서 동시에 실행되기 때문에, 스레드 간의 문맥 교환은 비용이 적게 듭니다.

0개의 댓글

관련 채용 정보