2
ระบบปฏิบัติการตรวจพบการละเมิดการเข้าถึงหน่วยความจำอย่างไร
ระบบปฏิบัติการ (โดยเฉพาะ Linux) รู้ได้อย่างไรว่าคุณเข้าถึงตำแหน่งหน่วยความจำที่คุณไม่ได้รับอนุญาต คำถามนี้ได้รับแรงบันดาลใจจากพอยน์เตอร์เหล่านั้น! วิธีที่ฉันเห็นคือทุกอย่างในคอมพิวเตอร์นั้นเกี่ยวกับการประนีประนอมระหว่างความเร็วความปลอดภัยความซื่อสัตย์และสิ่งต่าง ๆ ฉันตระหนักดีถึงการแมปหน่วยความจำใน Linux แต่มันฟังดูไร้สาระสำหรับฉันที่เคอร์เนลตรวจสอบว่าตำแหน่งที่คุณพยายามเข้าถึงนั้นอยู่ในช่วงที่ถูกต้องทุกครั้งที่คุณทำการเข้าถึง ดูเหมือนว่าจะเสียเวลามากซึ่งอาจใช้เวลาในการทำสิ่งที่มีประสิทธิผลมากขึ้น (แต่อาจปลอดภัยน้อยกว่าโดยไม่มีการตรวจสอบ!) หรือบางทีมันอาจจะจำการเข้าถึงล่าสุดทั้งหมดและตรวจสอบพวกเขาในทุกติ๊กจับเวลาฮาร์ดแวร์? (แต่นั่นฟังดูไม่ปลอดภัยและช้าอีกครั้ง) ฉันประหลาดใจที่คำถามนี้ดูเหมือนจะไม่ได้ตอบทุกที่ มันเป็นสิ่งที่ฉันสงสัยมาตลอด มันทำให้ฉันคิดว่ามีส่วนหนึ่งของฮาร์ดแวร์ที่จะทำสิ่งนี้ในนามของระบบปฏิบัติการในระดับที่ดีและสะดวกสบาย แต่ถึงกระนั้นก็อาจจะต้องโหลดหน่วยความจำกระบวนการถัดไปแมปในทุกบริบทสลับซึ่งฟังดูช้า ดังนั้นใช่แล้วฉันกำลังจะไปสักหน่อย: ระบบปฏิบัติการตรวจพบการละเมิดหน่วยความจำได้อย่างไร ขอบคุณ