vfork() 시스템 호출은 상위 프로세스의 페이지 테이블 항목이 복사되지 않는다는 점을 제외하면 fork()와 동일한 효과를 갖습니다. 오늘날 쓰기 시 복사 및 자식 실행 우선 의미 체계를 사용하는 vfork()의 유일한 이점은 페이지 테이블 항목을 복사하지 않는다는 것입니다. 어느 날 Linux가 쓰기 중 복사 페이지 테이블 항목을 얻게 되면 더 이상 아무런 이점도 없게 됩니다.
로버트 러브(Robert Love)의 저서 "리눅스 커널 개발(Linux Kernel Development)"의 내용 중 일부입니다. 내가 이해하지 못하는 것은 페이지 테이블 항목을 복사하지 않으면 어떤 이점이 있습니까?
다음과 같은 또 다른 줄이 있습니다: "copy_process()에서 task_struct 멤버 vfork_done이 NULL로 설정됩니다.".
이게 뭐야?vfork_done? 그것은 무엇을 합니까?
답변1
장점은 성능입니다. 페이지 테이블 항목을 복사하려면 이러한 페이지 테이블에 대한 메모리가 필요하며 복사를 수행하는 데 CPU 시간이 필요합니다.