ความสมบูรณ์ทั้งหมดของfork()
การดำเนินการโดยใช้ mmap / คัดลอกเมื่อเขียน
สิ่งนี้ไม่เพียงส่งผลกระทบต่อฮีป แต่ยังแชร์ไลบรารีสแต็กพื้นที่ BSS ด้วย
ซึ่งหมายความว่า fork นั้นเป็นการดำเนินการที่เบามากจนกระทั่งกระบวนการ 2 ผลลัพธ์ (พาเรนต์และชายด์) เริ่มเขียนลงในช่วงหน่วยความจำ คุณลักษณะนี้เป็นผู้สนับสนุนหลักสำหรับ lethality ของ fork-bombs - คุณจบลงด้วยกระบวนการมากเกินไปก่อนที่เคอร์เนลจะโอเวอร์โหลดด้วยการจำลองหน้าและการสร้างความแตกต่าง
คุณจะกดยากที่จะค้นหาในระบบปฏิบัติการที่ทันสมัยเป็นตัวอย่างของการดำเนินการที่เคอร์เนลทำสำเนาเอกสาร (ไดรเวอร์อุปกรณ์เป็นข้อยกเว้น) - มันไกลง่ายและมีประสิทธิภาพมากขึ้นในการใช้ฟังก์ชัน VM
แม้execve()
เป็นหลัก "โปรด mmap binary / ld.so / whatnot ตามด้วย execute" - และ VM จัดการการโหลดที่แท้จริงของกระบวนการเป็น RAM และการดำเนินการ ตัวแปรที่ไม่มีการกำหนดค่าท้องถิ่นจบลงด้วยการ mmaped จาก 'zero-page' - หน้า copy-on-write พิเศษสำหรับอ่านอย่างเดียวที่มีเลขศูนย์ตัวแปรเริ่มต้นในท้องถิ่นสิ้นสุดลงเป็น mmaped (copy-on-write อีกครั้ง) จากไฟล์ไบนารีของตัวเอง เป็นต้น