Creation of processes and threads in Linux
리눅스에서 프로세스와 스레드의 생성
프로세스 생성
fork()
: 현재 실행 중인 프로세스의 복사본을 만듭니다. 원래의 프로세스는 부모 프로세스라고 부르고, 복사된 새 프로세스는 자식 프로세스라고 합니다. 부모와 자식은 독립적인 메모리 공간을 가지므로, 한쪽에서의 메모리 변경이 다른 쪽에 영향을 주지 않습니다.
스레드 생성
pthread_create()
: POSIX 스레드 라이브러리에서 제공하는 함수로, 새로운 스레드를 생성합니다. 내부적으로clone()
시스템 콜을 사용합니다.clone()
:clone()
시스템 콜은 **fork()
**와 유사하게 동작하지만, 생성된 프로세스 (또는 스레드)가 공유하는 리소스를 세밀하게 제어할 수 있습니다.CLONE_VM
플래그를 사용하여 부모와 자식이 동일한 메모리 공간을 공유하도록 설정할 수 있습니다. 이렇게 설정하면, 실질적으로 스레드를 생성하는 것과 같아집니다.
이처럼 리눅스에서는 스레드와 프로세스의 경계가 덜 명확하며, 둘 다 clone()
시스템 콜을 기반으로 합니다. **fork()
**는 전통적인 프로세스 생성을 위한 것이고, **clone()
**은 그것보다 더 세밀한 제어를 원할 때 사용합니다.
Last updated