กลับไปหน้าบทความ

อ่าน 5 นาที

การป้องกันหน่วยความจำ

การป้องกันหน่วยความจำ คือวิธีการควบคุมสิทธิ์การเข้าถึงหน่วยความจำบนคอมพิวเตอร์ และเป็นส่วนหนึ่งของ สถาปัตยกรรมชุดคำสั่ง และ ระบบปฏิบัติการ สมัยใหม่ส่วน ใหญ่...

การป้องกันหน่วยความจำ

การป้องกันหน่วยความจำคือวิธีการควบคุมสิทธิ์การเข้าถึงหน่วยความจำบนคอมพิวเตอร์ และเป็นส่วนหนึ่งของสถาปัตยกรรมชุดคำสั่งและระบบปฏิบัติการ สมัยใหม่ส่วน ใหญ่ จุดประสงค์หลักของการป้องกันหน่วยความจำคือการป้องกัน ไม่ให้ กระบวนการใดๆเข้าถึงหน่วยความจำที่ไม่ได้จัดสรรให้ ซึ่งจะป้องกันไม่ให้ข้อผิดพลาดหรือมัลแวร์ภายในกระบวนการหนึ่งส่งผลกระทบต่อกระบวนการอื่นๆ หรือระบบปฏิบัติการเอง การป้องกันอาจครอบคลุมการเข้าถึงทั้งหมดไปยังพื้นที่หน่วยความจำที่กำหนด การเข้าถึงเพื่อเขียน หรือความพยายามที่จะเรียกใช้เนื้อหาในพื้นที่นั้น ความพยายามที่จะเข้าถึงหน่วยความจำที่ไม่ได้รับอนุญาตจะส่ง ผลให้เกิด ข้อผิดพลาดของฮาร์ดแวร์เช่น ข้อผิด พลาดในการแบ่งส่วน (segmentation fault) หรือ ข้อยกเว้นการละเมิดพื้นที่จัดเก็บ ( storage violation exception) ซึ่งโดยทั่วไปจะทำให้กระบวนการที่กระทำผิดนั้นยุติการทำงานอย่างผิดปกติ การป้องกันหน่วยความจำเพื่อ ความปลอดภัยของคอมพิวเตอร์ยังรวมถึงเทคนิคเพิ่มเติม เช่น การสุ่มตำแหน่งที่ อยู่ (address space layout randomization)และการป้องกันพื้นที่ที่สามารถเรียกใช้งานได้ (executable-space protection )

วิธีการ

การแบ่งส่วน

การแบ่งส่วนหน่วยความจำ (Segmentation)หมายถึงการแบ่งหน่วยความจำของคอมพิวเตอร์ออกเป็นส่วนๆ การอ้างอิงถึงตำแหน่งในหน่วยความจำประกอบด้วยค่าที่ระบุส่วนนั้นๆ และค่าออฟเซ็ตภายในส่วนนั้น ตัวอธิบายส่วน (Segment descriptor) อาจจำกัดสิทธิ์การเข้าถึง เช่น อ่านอย่างเดียว หรือเข้าถึงได้เฉพาะจากวงแหวน (ring ) บางวงเท่านั้น

สถาปัตยกรรมx86มีคุณสมบัติการแบ่งส่วนหลายแบบ ซึ่งเป็นประโยชน์สำหรับการใช้หน่วยความจำที่ได้รับการป้องกันบนสถาปัตยกรรมนี้[ 1 ]บนสถาปัตยกรรม x86 สามารถใช้ ตารางคำอธิบายส่วนกลางและตารางคำอธิบายส่วนท้องถิ่นเพื่ออ้างอิงส่วนต่างๆ ในหน่วยความจำของคอมพิวเตอร์ได้ นอกจากนี้ยังสามารถจัดเก็บพอยเตอร์ไปยังส่วนหน่วยความจำบนโปรเซสเซอร์ x86 ในรีจิสเตอร์ส่วนของโปรเซสเซอร์ได้อีกด้วย ในตอนแรกโปรเซสเซอร์ x86 มีรีจิสเตอร์ส่วน 4 ตัว ได้แก่ CS (ส่วนโค้ด), SS (ส่วนสแต็ก), DS (ส่วนข้อมูล) และ ES (ส่วนพิเศษ) ต่อมาได้มีการเพิ่มรีจิสเตอร์ส่วนอีก 2 ตัว คือ FS และ GS [ 1 ]

หน่วยความจำเสมือนแบบเพจ

ในการแบ่งหน้าหน่วยความจำ พื้นที่แอดเดรสหรือเซ็กเมนต์จะถูกแบ่งออกเป็นบล็อกขนาดเท่ากัน[ b ]เรียกว่าเพจการใช้ ฮาร์ดแวร์ หน่วยความจำเสมือนทำให้แต่ละเพจสามารถอยู่ในตำแหน่งใดก็ได้ที่ขอบเขตที่เหมาะสมของหน่วยความจำทางกายภาพของคอมพิวเตอร์ หรือถูกทำเครื่องหมายว่าเป็นเพจที่ได้รับการป้องกัน หน่วยความจำเสมือนทำให้สามารถมีพื้นที่แอดเดรสหน่วยความจำเสมือน เชิงเส้น และใช้เพื่อเข้าถึงบล็อกที่กระจัดกระจายอยู่ทั่วพื้นที่แอดเดรส หน่วยความจำทางกายภาพ

สถาปัตยกรรมคอมพิวเตอร์ส่วนใหญ่ที่รองรับการแบ่งหน้าหน่วยความจำ (paging) มักใช้หน้าหน่วยความจำเหล่านั้นเป็นพื้นฐานในการป้องกันหน่วยความจำด้วย

ตารางเพจทำหน้าที่แมปหน่วยความจำเสมือนไปยังหน่วยความจำจริง อาจมีตารางเพจเดียว ตารางเพจสำหรับแต่ละกระบวนการ ตารางเพจสำหรับแต่ละเซ็กเมนต์ หรือลำดับชั้นของตารางเพจ ขึ้นอยู่กับสถาปัตยกรรมและระบบปฏิบัติการ โดยปกติแล้วตารางเพจจะไม่ปรากฏให้กระบวนการเห็น ตารางเพจช่วยให้การจัดสรรหน่วยความจำเพิ่มเติมทำได้ง่ายขึ้น เนื่องจากแต่ละเพจใหม่สามารถจัดสรรได้จากทุกที่ในหน่วยความจำจริง ในบางระบบ รายการในตารางเพจยังสามารถกำหนดให้เพจนั้นเป็นแบบอ่านอย่างเดียวได้อีกด้วย

ระบบปฏิบัติการบางระบบตั้งค่าพื้นที่แอดเดรสที่แตกต่างกันสำหรับแต่ละกระบวนการ ซึ่งให้ขอบเขตการป้องกันหน่วยความจำที่เข้มงวด[ 2 ] เป็นไปไม่ได้ที่แอปพลิเคชันที่ไม่มีสิทธิ์[ c ]จะเข้าถึงหน้าที่ไม่ได้รับการจัดสรรอย่างชัดเจน เนื่องจากที่อยู่หน่วยความจำทุกที่อยู่จะชี้ไปยังหน้าที่จัดสรรให้กับแอปพลิเคชันนั้น หรือสร้างการขัดจังหวะที่เรียกว่าข้อผิดพลาดของเพจ หน้าที่ไม่ได้รับการจัดสรร และหน้าที่จัดสรรให้กับแอปพลิเคชันอื่นใด จะไม่มีที่อยู่ใด ๆ จากมุมมองของแอปพลิเคชัน

ข้อผิดพลาดในการเข้าถึงหน้าหน่วยความจำ (page fault) อาจไม่ได้บ่งชี้ถึงข้อผิดพลาดเสมอไป ข้อผิดพลาดในการเข้าถึงหน้าหน่วยความจำไม่ได้ใช้เพื่อการป้องกันหน่วยความจำเท่านั้น ระบบปฏิบัติการอาจจัดการตารางหน้าหน่วยความจำในลักษณะที่การอ้างอิงถึงหน้าหน่วยความจำที่ถูกย้ายไปยังหน่วยเก็บข้อมูลสำรอง ก่อนหน้านี้ [ d ]ทำให้เกิดข้อผิดพลาดในการเข้าถึงหน้าหน่วยความจำ ระบบปฏิบัติการจะดักจับข้อผิดพลาดในการเข้าถึงหน้าหน่วยความจำ โหลดหน้าหน่วยความจำที่ต้องการ และแอปพลิเคชันจะทำงานต่อไปราวกับว่าไม่มีข้อผิดพลาดเกิดขึ้น กลไกนี้ ซึ่งเป็นหน่วยความจำเสมือน ประเภทหนึ่ง ช่วยให้สามารถย้ายข้อมูลในหน่วยความจำที่ไม่ได้ใช้งานอยู่ในปัจจุบันไปยังหน่วยเก็บข้อมูลสำรองและกลับมายังหน่วยความจำหลักได้ในลักษณะที่โปร่งใสต่อแอปพลิเคชัน เพื่อเพิ่มความจุของหน่วยความจำโดยรวม

ในบางระบบ การร้องขอพื้นที่จัดเก็บข้อมูลเสมือนอาจจัดสรรบล็อกของที่อยู่เสมือนที่ยังไม่ได้กำหนดเฟรมเพจ และระบบจะกำหนดและเริ่มต้นเฟรมเพจก็ต่อเมื่อเกิดข้อผิดพลาดของเพจเท่านั้น ในบางระบบ อาจมีการใช้ เพจป้องกัน (guard page)เพื่อตรวจจับข้อผิดพลาดหรือเพื่อขยายโครงสร้างข้อมูลโดยอัตโนมัติ

ในบางระบบ กลไกการเกิดข้อผิดพลาดของเพจยังถูกใช้เพื่อป้องกันพื้นที่ที่สามารถเรียกใช้งานได้เช่นW^ X

กุญแจป้องกัน

กลไก คีย์ป้องกันหน่วยความจำ (MPK) [ 3 ]จะแบ่งหน่วยความจำทางกายภาพออกเป็นบล็อกขนาดเฉพาะ (เช่น 4 KiB) โดยแต่ละบล็อกจะมีค่าตัวเลขที่เกี่ยวข้องเรียกว่าคีย์ป้องกัน แต่ละกระบวนการจะมีค่าคีย์ป้องกันที่เกี่ยวข้องกับกระบวนการนั้นด้วย ในการเข้าถึงหน่วยความจำ ฮาร์ดแวร์จะตรวจสอบว่าคีย์ป้องกันของกระบวนการปัจจุบันตรงกับค่าที่เกี่ยวข้องกับบล็อกหน่วยความจำที่กำลังเข้าถึงหรือไม่ หากไม่ตรงกัน จะเกิดข้อยกเว้น กลไกนี้ได้รับการแนะนำใน สถาปัตยกรรม System/360ปัจจุบันมีอยู่ใน เมนเฟรม System zและถูกใช้งานอย่างแพร่หลายโดย ระบบปฏิบัติการ System zและระบบย่อยต่างๆ

คีย์ป้องกันของ System/360 ที่อธิบายไว้ข้างต้นนั้นเชื่อมโยงกับที่อยู่ทางกายภาพ ซึ่งแตกต่างจากกลไกคีย์ป้องกันที่ใช้โดยสถาปัตยกรรมต่างๆ เช่นHewlett-Packard / Intel IA-64และ Hewlett-Packard PA-RISCซึ่งเชื่อมโยงกับที่อยู่เสมือน และอนุญาตให้มีคีย์หลายตัวต่อกระบวนการ

ในสถาปัตยกรรม Itanium และ PA-RISC การแปล ( รายการTLB ) จะมี คีย์ (Itanium) หรือรหัสการเข้าถึง (PA-RISC) ที่เกี่ยวข้อง กระบวนการที่กำลังทำงานจะมีรีจิสเตอร์คีย์ป้องกันหลายตัว (16 สำหรับ Itanium, [ 4 ] 4 สำหรับ PA-RISC [ 5 ] ) การแปลที่เลือกโดยที่อยู่เสมือนจะมีคีย์ของการแปลนั้นเปรียบเทียบกับรีจิสเตอร์คีย์ป้องกันแต่ละตัว หากมีตัวใดตัวหนึ่งตรงกัน (รวมถึงการตรวจสอบอื่นๆ ที่เป็นไปได้) จะอนุญาตให้เข้าถึงได้ หากไม่มีตัวใดตรงกัน จะเกิดข้อผิดพลาดหรือข้อยกเว้นขึ้น ตัวจัดการข้อผิดพลาดของซอฟต์แวร์สามารถตรวจสอบคีย์ที่หายไปกับรายการคีย์ขนาดใหญ่ที่ซอฟต์แวร์ดูแลรักษาได้ หากต้องการ ดังนั้น รีจิสเตอร์คีย์ป้องกันภายในโปรเซสเซอร์อาจถือได้ว่าเป็นแคชที่จัดการโดยซอฟต์แวร์ของรายการคีย์ขนาดใหญ่ที่เกี่ยวข้องกับกระบวนการ

สถาปัตยกรรม PA-RISC ใช้คีย์ขนาด 15–18 บิต ในขณะที่ Itanium กำหนดให้ใช้คีย์อย่างน้อย 18 บิต โดยปกติแล้วคีย์จะเชื่อมโยงกับโดเมนการป้องกันเช่น ไลบรารี โมดูล เป็นต้น

ในสถาปัตยกรรม x86 คีย์ป้องกัน[ 6 ]อนุญาตให้ติดแท็กที่อยู่เสมือนสำหรับหน้าผู้ใช้ด้วยคีย์ป้องกัน 16 คีย์ หน้าทั้งหมดที่ติดแท็กด้วยคีย์ป้องกันเดียวกันจะประกอบเป็นโดเมนป้องกัน รีจิสเตอร์ใหม่จะมีสิทธิ์ที่เกี่ยวข้องกับแต่ละโดเมนป้องกัน การดำเนินการโหลดและจัดเก็บจะถูกตรวจสอบกับทั้งสิทธิ์ตารางหน้าและสิทธิ์คีย์ป้องกันที่เกี่ยวข้องกับโดเมนป้องกันของที่อยู่เสมือน และจะอนุญาตเฉพาะเมื่อสิทธิ์ทั้งสองอนุญาตให้เข้าถึงได้ สิทธิ์คีย์ป้องกันสามารถตั้งค่าได้จากพื้นที่ผู้ใช้ ทำให้แอปพลิเคชันสามารถจำกัดการเข้าถึงข้อมูลแอปพลิเคชันได้โดยตรงโดยไม่ต้องมีการแทรกแซงจากระบบปฏิบัติการ เนื่องจากคีย์ป้องกันเกี่ยวข้องกับที่อยู่เสมือน โดเมนป้องกันจึงอยู่ต่อพื้นที่ที่อยู่ ดังนั้นกระบวนการที่ทำงานในพื้นที่ที่อยู่ต่างกันจึงสามารถใช้โดเมนทั้ง 16 โดเมนได้

แหวนป้องกัน

ในระบบ Multicsและระบบที่พัฒนาต่อยอดมาจาก Multics แต่ละเซ็กเมนต์จะมีวงแหวนป้องกันสำหรับการอ่าน การเขียน และการประมวลผล การพยายามโดยกระบวนการที่มีหมายเลขวงแหวนสูงกว่าหมายเลขวงแหวนของเซ็กเมนต์นั้นจะทำให้เกิดข้อผิดพลาด มีกลไกสำหรับการเรียกใช้โปรซีเดอร์ที่ทำงานในวงแหวนที่ต่ำกว่าอย่างปลอดภัยและกลับไปยังวงแหวนที่สูงกว่า นอกจากนี้ยังมีกลไกสำหรับรูทีนที่ทำงานด้วยหมายเลขวงแหวนต่ำในการเข้าถึงพารามิเตอร์ด้วยหมายเลขวงแหวนที่มากกว่าระหว่างหมายเลขวงแหวนของตนเองกับหมายเลขวงแหวนของผู้เรียก

การแบ่งส่วนจำลอง

การจำลองคือการใช้โปรแกรมตรวจสอบ เพื่อตีความคำสั่งรหัสเครื่องของสถาปัตยกรรมคอมพิวเตอร์บางประเภท โปรแกรมจำลองชุดคำสั่ง ดังกล่าว สามารถให้การป้องกันหน่วยความจำโดยใช้รูปแบบคล้ายการแบ่งส่วน และตรวจสอบความถูกต้องของที่อยู่เป้าหมายและความยาวของแต่ละคำสั่งแบบเรียลไทม์ก่อนที่จะดำเนินการจริง โปรแกรมจำลองจะต้องคำนวณที่อยู่เป้าหมายและความยาว และเปรียบเทียบกับรายการช่วงที่อยู่ที่ถูกต้องที่เก็บไว้เกี่ยวกับ สภาพแวดล้อม ของเธรดเช่น บล็อก หน่วยความจำ แบบไดนามิก ที่ได้รับมาตั้งแต่เริ่มต้นเธรด รวมถึงช่องหน่วยความจำคงที่ที่ใช้ร่วมกันที่ถูกต้อง ความหมายของ "ถูกต้อง" อาจเปลี่ยนแปลงไปตลอดอายุของเธรดขึ้นอยู่กับบริบท บางครั้งอาจอนุญาตให้แก้ไขบล็อกจัดเก็บข้อมูลแบบคงที่ได้ และบางครั้งอาจไม่ได้ ขึ้นอยู่กับโหมดการทำงานปัจจุบัน ซึ่งอาจขึ้นอยู่กับหรือไม่ขึ้นอยู่กับคีย์จัดเก็บข้อมูลหรือสถานะของตัวควบคุมก็ได้

โดยทั่วไปแล้ว ไม่แนะนำให้ใช้วิธีการป้องกันหน่วยความจำแบบนี้หากซีพียูมีประสิทธิภาพเพียงพอ เนื่องจากจะดึงพลังการประมวลผลอันมีค่าจากคอมพิวเตอร์ไป อย่างไรก็ตาม โดยทั่วไปแล้วจะใช้เพื่อการดีบักและการทดสอบ เพื่อให้ได้รายละเอียดที่ละเอียดขึ้นสำหรับการละเมิดการจัดเก็บข้อมูล ทั่วไป และสามารถระบุได้อย่างแม่นยำว่าคำสั่งใดพยายามเขียนทับส่วนของหน่วยความจำที่อาจมีคีย์จัดเก็บข้อมูลเดียวกันกับส่วนที่ไม่ได้ป้องกัน

การกำหนดที่อยู่ตามความสามารถ

การกำหนดแอดเดรสแบบอิงความสามารถ (Capability-based addressing)เป็นวิธีการป้องกันหน่วยความจำที่ไม่ใช้ในคอมพิวเตอร์เชิงพาณิชย์สมัยใหม่แล้ว ในวิธีการนี้ตัวชี้ (pointers ) จะถูกแทนที่ด้วยวัตถุที่ได้รับการป้องกัน (เรียกว่าความสามารถ หรือ capacidads ) ซึ่งสามารถสร้างได้โดยใช้ คำสั่ง พิเศษ เท่านั้น ซึ่งสามารถดำเนินการได้โดยเคอร์เนล หรือกระบวนการอื่นที่ได้รับอนุญาตเท่านั้น วิธีนี้ทำให้เคอร์เนลสามารถควบคุมได้อย่างมีประสิทธิภาพว่ากระบวนการใดสามารถเข้าถึงวัตถุใดในหน่วยความจำได้ โดยไม่จำเป็นต้องใช้พื้นที่แอดเดรสแยกต่างหากหรือการสลับบริบทมีเพียงผลิตภัณฑ์เชิงพาณิชย์ไม่กี่ชิ้นที่ใช้การรักษาความปลอดภัยแบบอิงความสามารถ ได้แก่Plessey System 250 , IBM System/38 , สถาปัตยกรรมIntel iAPX 432 และKeyKOSแนวทางความสามารถถูกนำมาใช้กันอย่างแพร่หลายในระบบวิจัย เช่นEROSและ Combex DARPA browser และถูกนำมาใช้ในเชิงแนวคิดเป็นพื้นฐานสำหรับเครื่องเสมือน บางประเภท โดยเฉพาะอย่างยิ่งSmalltalkและJavaปัจจุบัน โครงการ CHERI ที่ได้รับทุนสนับสนุนจาก DARPA ที่มหาวิทยาลัยเคมบริดจ์กำลังทำงานเพื่อสร้างเครื่องที่อิงความสามารถที่ทันสมัยซึ่งรองรับซอฟต์แวร์รุ่นเก่าด้วย

การปนเปื้อนแบบไดนามิก

การปนเปื้อนแบบไดนามิกเป็นเทคนิคในการปกป้องโปรแกรมจากการเข้าถึงหน่วยความจำที่ไม่ถูกต้อง เมื่อมีการจัดสรรหน่วยความจำ ในระหว่างการทำงาน เทคนิคนี้จะปนเปื้อนทั้งหน่วยความจำและตัวชี้ที่เกี่ยวข้องโดยใช้เครื่องหมายปนเปื้อนเดียวกัน จากนั้นเครื่องหมายปนเปื้อนจะถูกส่งต่ออย่างเหมาะสมในขณะที่โปรแกรมทำงาน และจะถูกตรวจสอบทุกครั้งที่มีการเข้าถึงที่อยู่หน่วยความจำmผ่านตัวชี้pหากเครื่องหมายปนเปื้อนที่เกี่ยวข้องกับmและpแตกต่างกัน การทำงานจะหยุดลงและรายงานการเข้าถึงที่ไม่ถูกต้อง[ 7 ] [ 8 ]

โปรเซสเซอร์ SPARC M7 (และรุ่นที่สูงกว่า) ใช้การปนเปื้อนแบบไดนามิกในฮาร์ดแวร์ Oracle ทำการตลาดคุณสมบัตินี้ในชื่อSilicon Secured Memory (SSM) (ก่อนหน้านี้ใช้ชื่อทางการค้าว่า Application Data Integrity (ADI)) [ 9 ]

การ ออกแบบ CPU lowRISCประกอบด้วยการปนเปื้อนแบบไดนามิกภายใต้ชื่อ Tagged Memory [ 10 ]

มาตรการ

ระดับการป้องกันของการใช้งานเฉพาะนั้นสามารถวัดได้จากการปฏิบัติตามหลักการของสิทธิ์ขั้นต่ำ อย่างใกล้ ชิด[ 11 ]

การปกป้องหน่วยความจำในระบบปฏิบัติการต่างๆ

ระบบปฏิบัติการต่างๆ ใช้รูปแบบการป้องกันหรือการแยกหน่วยความจำที่แตกต่างกัน แม้ว่าการป้องกันหน่วยความจำจะเป็นเรื่องปกติในเมนเฟรมส่วน ใหญ่ และ ระบบ มินิคอมพิวเตอร์ หลาย ระบบตั้งแต่ทศวรรษ 1960 แต่การแยกหน่วยความจำที่แท้จริงไม่ได้ถูกนำมาใช้ในระบบปฏิบัติการคอมพิวเตอร์ส่วนบุคคล จนกระทั่ง OS/2 (และใน RISC OS ) เปิดตัวในปี 1987 ในระบบก่อนหน้านี้ การขาดการป้องกันดังกล่าวถูกนำมาใช้เป็นรูปแบบหนึ่งของการสื่อสารระหว่าง กระบวนการ โดยการส่งตัวชี้ระหว่างกระบวนการ เป็นไปได้ที่กระบวนการจะเข้าถึงหน่วยความจำระบบในระบบปฏิบัติการตระกูลWindows 9x [ 12 ]

ระบบปฏิบัติการบางระบบที่ใช้การป้องกันหน่วยความจำ ได้แก่:

ในระบบที่คล้าย Unix mprotectการเรียกใช้ระบบจะใช้เพื่อควบคุมการป้องกันหน่วยความจำ[ 14 ]

ดูเพิ่มเติม

หมายเหตุ

  1. ^ขึ้นอยู่กับสถาปัตยกรรม อาจรวมถึงหน้าและเซ็กเมนต์ที่ไม่ได้จัดสรร หน้าที่อยู่ในโดเมนการป้องกันที่แตกต่างกัน และหน้าที่ต้องการระดับสิทธิ์ที่สูงกว่า
  2. ^บางระบบ เช่น z/OSรองรับขนาดหน้าหน่วยความจำมากกว่าหนึ่งขนาด
  3. ^ในบางระบบจะมีคำสั่งพิเศษสำหรับการเข้าถึงพื้นที่จัดเก็บข้อมูลโดยใช้ที่อยู่จริง
  4. ^ในยุคแรกๆ ของระบบแบ่งเวลาใช้งานหน่วยความจำแบบเพจจิ้งมักจะบันทึกไปยังดรัมแม่เหล็กแต่ในระบบปัจจุบัน เพจจิ้งมักจะบันทึกไปยังฮาร์ดดิสก์หรืออุปกรณ์โซลิดสเต
  • คู่มือสำหรับนักพัฒนาของ Intel  – ข้อมูลเชิงลึกเกี่ยวกับการปกป้องหน่วยความจำสำหรับสถาปัตยกรรมที่ใช้ Intel
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Memory_protection&oldid=1352195508 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การป้องกันหน่วยความจำ

การป้องกันหน่วยความจำ คือวิธีการควบคุมสิทธิ์การเข้าถึงหน่วยความจำบนคอมพิวเตอร์ และเป็นส่วนหนึ่งของ สถาปัตยกรรมชุดคำสั่ง และ ระบบปฏิบัติการ สมัยใหม่ส่วน ใหญ่...

การแบ่งส่วน

การแบ่งส่วนหน่วยความจำ (Segmentation) หมายถึงการแบ่งหน่วยความจำของคอมพิวเตอร์ออกเป็นส่วนๆ การอ้างอิงถึงตำแหน่งในหน่วยความจำประกอบด้วยค่าที่ระบุส่วนนั้นๆ และค่าออฟเซ็ตภายในส่วนนั้น ตัวอธิบายส่วน (Segment descriptor) อาจจำกัดสิทธิ์การเข้าถึง เช่น อ่านอย่างเดียว...

หน่วยความจำเสมือนแบบเพจ

ในการแบ่งหน้าหน่วยความจำ พื้นที่แอดเดรสหรือเซ็กเมนต์จะถูกแบ่งออกเป็นบล็อกขนาดเท่ากัน [ b ] เรียกว่า เพจ การใช้ ฮาร์ดแวร์ หน่วยความจำเสมือน ทำให้แต่ละเพจสามารถอยู่ในตำแหน่งใดก็ได้ที่ขอบเขตที่เหมาะสมของหน่วยความจำทางกายภาพของคอมพิวเตอร์...

กุญแจป้องกัน

กลไก คีย์ป้องกันหน่วยความจำ (MPK) [ 3 ] จะแบ่งหน่วยความจำทางกายภาพออกเป็นบล็อกขนาดเฉพาะ (เช่น 4 KiB) โดยแต่ละบล็อกจะมีค่าตัวเลขที่เกี่ยวข้องเรียกว่าคีย์ป้องกัน แต่ละกระบวนการจะมีค่าคีย์ป้องกันที่เกี่ยวข้องกับกระบวนการนั้นด้วย ในการเข้าถึงหน่วยความจำ...