유닉스(Unix) 초기부터 리눅스(Linux) 커널의 핵심적인 프로세스 생성 방식은 'fork()'와 'exec()' 시스템 호출(system call)이었습니다. 'fork()'는 부모 프로세스를 복사해 자식 프로세스를 만들고, 'exec()'는 현재 프로세스 공간에 새로운 프로그램을 로드해 실행하는 방식입니다. 이 모델은 우아하지만, 자식 프로세스를 위해 전체 프로세스 상태를 복사하는 'fork()'의 높은 비용과, 곧바로 복사된 메모리를 버리는 'exec()'의 비효율성이라는 단점을 안고 있었습니다.
최근 리 첸(Li Chen)은 이러한 비효율성을 개선하기 위해 '스폰 템플릿(spawn templates)'이라는 새로운 시스템 호출 제안을 내놓았습니다. 이 제안은 동일한 실행 파일을 반복적으로 실행하는 애플리케이션, 예를 들어 Git(버전 관리 시스템) 명령어를 여러 번 실행하는 경우에 초점을 맞췄습니다. 'spawn_template_create()'를 통해 실행 파일의 템플릿을 미리 생성하고, 'spawn_template_spawn()'으로 이 템플릿을 활용해 프로세스를 실행하는 방식입니다. 첸의 벤치마크 결과에 따르면 약 2%의 성능 향상이 있었지만, 현재 형태로 커널에 채택되지는 않을 예정입니다.
비록 첸의 '스폰 템플릿'이 직접 채택되지는 않았지만, 이 논의는 프로세스 생성 방식 개선의 필요성을 다시 한번 부각시켰습니다. 마테우스 구직(Mateusz Guzik)과 크리스티안 브라우너(Christian Brauner) 등 커널 개발자들은 'fork() + exec()' 패턴이 근본적으로 비효율적이며, '깨끗한(pristine) 프로세스'를 직접 생성하는 새로운 API(응용 프로그래밍 인터페이스)가 필요하다는 데 공감했습니다. 특히 브라우너는 기존 'pidfd' 추상화를 기반으로 빈 프로세스를 생성하고, 'pidfd_config()'와 같은 시스템 호출로 환경을 설정하는 방식을 제안했습니다. 이는 유저 공간(user space)에서 'posix_spawn()'을 효율적으로 구현하는 데 도움이 될 것으로 기대됩니다.
이러한 변화는 리눅스 시스템의 전반적인 성능 향상으로 이어질 수 있습니다. 특히 서버리스(serverless) 환경이나 컨테이너(container) 기술처럼 짧은 시간 안에 많은 프로세스를 생성하고 종료하는 환경에서 큰 이점을 제공할 것입니다. 개발자들은 더 효율적인 프로세스 관리와 더 빠른 애플리케이션 응답 시간을 기대할 수 있게 되며, 이는 클라우드 컴퓨팅(cloud computing) 및 고성능 컴퓨팅(HPC) 분야에서 중요한 개선점이 될 것입니다.