เคอร์เนล Preemptive เพียง แต่หมายถึงว่าไม่มีบิ๊ก Kernel ล็อค
ลีนุกซ์มีการทำงานแบบมัลติทาสกิ้งไว้ล่วงหน้า (เช่นรหัสผู้ใช้สามารถจองได้) ตั้งแต่ช่วงเวลาแรก (เท่าที่ฉันรู้ลีนุกซ์ 0.0.1 แรกที่อัพโหลดโดย Linus ไปยังเซิร์ฟเวอร์ ftp funet เป็นมัลติทาสก์ที่ได้รับการควบคุมล่วงหน้าแล้ว) หากคุณดำเนินการตัวอย่างเช่นกระบวนการบีบอัดหรือรวบรวมหลายกระบวนการจะถูกดำเนินการแบบขนานจากช่วงเวลาแรก
ตรงกันข้าม - ในเวลา - Win31 ใช้กันอย่างแพร่หลาย บน Win31 หากงานได้รับ CPU จาก "เคอร์เนล" โดยค่าเริ่มต้นมันเป็นความรับผิดชอบในการพิจารณาว่าจะให้การควบคุมกลับไปที่ OS (หรืองานอื่น ๆ ) เมื่อใด หากกระบวนการไม่มีการสนับสนุนพิเศษสำหรับคุณสมบัตินี้ (ซึ่งต้องการงานเขียนโปรแกรมเพิ่มเติม) จากนั้นในขณะที่ดำเนินการงานอื่น ๆ ทั้งหมดจะถูกระงับ แม้แต่แอพพื้นฐานส่วนใหญ่ที่รวมเข้ากับ Win31 ก็สามารถใช้งานได้
การทำงานมัลติทาสกิ้งแบบ preemptive หมายความว่างานไม่มีวิธีจัดสรร CPU ตามที่ต้องการ แต่หากช่วงเวลาของพวกเขาหมดอายุเคอร์เนลจะได้รับ CPU จากพวกเขา ดังนั้นในระบบปฏิบัติการแบบ preemptive กระบวนการเขียนหรือการทำงานที่ไม่ดีไม่สามารถหยุดการทำงานของระบบปฏิบัติการหรือหลีกเลี่ยงกระบวนการอื่นจากการทำงาน ลีนุกซ์สามารถจองพื้นที่กระบวนการของผู้ใช้ได้เสมอ
Big Kernel Lock หมายถึงในบางกรณีภายในพื้นที่เคอร์เนลอาจมีการล็อกบางอย่างเพื่อป้องกันไม่ให้กระบวนการอื่นรันโค้ดที่ป้องกัน ตัวอย่างเช่นคุณไม่สามารถเมานต์ระบบไฟล์หลายระบบพร้อมกัน - หากคุณให้คำสั่งเมานต์หลายคำสั่งระบบจะยังคงทำงานต่อเนื่องเนื่องจากการติดตั้งสิ่งต่าง ๆ ที่จำเป็นในการจัดสรร Big Kernel Lock
การทำให้เคอร์เซอร์ยึดเอาเสียก่อนจำเป็นต้องกำจัดการล็อกเคอร์เนลขนาดใหญ่เช่นนี้ทำให้การเมานต์และงานอื่น ๆ สามารถรันพร้อมกันได้ มันเป็นงานที่ยิ่งใหญ่
ในอดีตสิ่งนี้เกิดขึ้นอย่างเร่งด่วนโดยการสนับสนุนที่เพิ่มขึ้นของ SMP (การสนับสนุนมัลติซีพียู) ในครั้งแรกที่มีเมนบอร์ดที่ใช้ CPU หลายตัวจริงๆ ต่อมาซีพียูหลายตัว ("คอร์") ถูกรวมเข้ากับชิปตัวเดียววันนี้เมนบอร์ดที่ใช้ซีพียูหลายตัวนั้นหายากอยู่แล้ว (โดยทั่วไปจะอยู่ในระบบเซิร์ฟเวอร์ราคาแพง) นอกจากนี้ระบบ single-core จริงๆ (ที่มีเพียงซีพียูเดียวที่มีคอร์เดียว) ก็หายาก
ดังนั้นคำตอบสำหรับคำถามของคุณไม่ใช่ว่า "อะไรคือสาเหตุของการไม่ยึดถืออำนาจ" เพราะเป็นสิ่งที่ยึดเอาเสียก่อนเสมอ คำถามที่แท้จริงคือสิ่งที่ทำให้การดำเนินการมาตรการเคอร์เนลจำเป็นจริงๆ คำตอบคือ: อัตราส่วนที่เพิ่มขึ้นของซีพียูหลายตัว, ระบบหลายคอร์