อ่าน 4 นาที
เอ็นเอ็กซ์ บิต
บิต NX ( no -execute bit ) เป็นคุณสมบัติของโปรเซสเซอร์ที่แบ่งพื้นที่ของหน่วยความจำเสมือน (โครงสร้างหน่วยความจำที่โปรแกรมใช้) ออกเป็นส่วนๆ...
เอ็นเอ็กซ์ บิต
บิต NX ( no -execute bit ) เป็นคุณสมบัติของโปรเซสเซอร์ที่แบ่งพื้นที่ของหน่วยความจำเสมือน (โครงสร้างหน่วยความจำที่โปรแกรมใช้) ออกเป็นส่วนๆ สำหรับจัดเก็บข้อมูลหรือคำสั่งโปรแกรมระบบปฏิบัติการที่รองรับบิต NX สามารถทำเครื่องหมายบางส่วนของหน่วยความจำเสมือนว่าเป็นพื้นที่ที่ไม่สามารถเรียกใช้งานได้ ซึ่งจะป้องกันไม่ให้โปรเซสเซอร์รันโค้ดใดๆ ที่จัดเก็บไว้ในนั้น เทคนิคนี้เรียกว่าการป้องกันพื้นที่ที่สามารถเรียกใช้งานได้หรือWrite XOR Execute ซึ่งช่วยปกป้องคอมพิวเตอร์จากซอฟต์แวร์ที่เป็นอันตรายที่พยายามแทรกโค้ดที่เป็นอันตรายเข้าไปในพื้นที่จัดเก็บข้อมูลของโปรแกรมอื่นและเรียกใช้งาน เช่น ในการโจมตี แบบ buffer overflow
คำว่า "NX bit" ถูกนำมาใช้โดยAdvanced Micro Devices (AMD) ในฐานะคำทางการตลาดIntelทำการตลาดคุณสมบัตินี้ในชื่อXD bit ( execute disable ) ในขณะที่สถาปัตยกรรม MIPSเรียกมันว่าXI bit ( execute inhibit ) ในสถาปัตยกรรม ARMซึ่งนำมาใช้ในARMv6เรียกว่าXN ( execute never ) [ 1 ]คำว่า NX bit มักถูกใช้ในวงกว้างเพื่ออธิบายเทคโนโลยีการป้องกันพื้นที่ปฏิบัติการที่คล้ายกันในโปรเซสเซอร์อื่นๆ
การสนับสนุนด้านสถาปัตยกรรม
x86
โปรเซสเซอร์x86 ตั้งแต่รุ่น 80286 เป็นต้น มา มีความสามารถที่คล้ายกันนี้ซึ่งถูกนำมาใช้ใน ระดับ เซกเมนต์อย่างไรก็ตาม ระบบปฏิบัติการเกือบทั้งหมดสำหรับ โปรเซสเซอร์ 80386และ x86 รุ่นต่อมา ใช้โมเดลหน่วยความจำแบบแบน (flat memory model ) ดังนั้นจึงไม่สามารถใช้ความสามารถนี้ได้ เนื่องจากไม่มีแฟล็ก "Executable" ในรายการตารางเพจ (page descriptor) ในโปรเซสเซอร์เหล่านั้น เพื่อให้ระบบปฏิบัติการที่ใช้โมเดลหน่วยความจำแบบแบนสามารถใช้ความสามารถนี้ได้ จนกระทั่ง AMD เพิ่มบิต "no-execute" หรือ NX เข้าไปในรายการตารางเพจใน สถาปัตยกรรม AMD64ซึ่งเป็นกลไกที่สามารถควบคุมการทำงานต่อหน้าแทนที่จะเป็นทั้งเซกเมนต์
Intel ได้นำคุณสมบัติที่คล้ายกันมาใช้ใน โปรเซสเซอร์ Itanium ( Merced ) ซึ่งมีสถาปัตยกรรมIA-64 ในปี 2544 แต่ไม่ได้นำมาใช้กับตระกูลโปรเซสเซอร์ x86 ที่ได้รับความนิยมมากกว่า ( Pentium , Celeron , Xeonเป็นต้น) ในสถาปัตยกรรม x86 นั้น AMD เป็นผู้นำมาใช้เป็นครั้งแรกในชื่อNX bitสำหรับใช้ใน โปรเซสเซอร์ตระกูล AMD64เช่นAthlon 64และOpteron [ 2 ]
หลังจากที่ AMD ตัดสินใจรวมฟังก์ชันนี้ไว้ในชุดคำสั่ง AMD64 แล้ว Intel ก็ได้นำคุณสมบัติบิต XD ที่คล้ายกันมาใช้ในโปรเซสเซอร์ x86 โดยเริ่มจาก โปรเซสเซอร์ Pentium 4ที่ใช้แกน Prescott รุ่นหลังๆ[ 3 ]บิต NX หมายถึงบิตหมายเลข 63 (เช่น บิตที่มีนัยสำคัญที่สุด) ของรายการ 64 บิตในตารางเพจ โดยเฉพาะ หากบิตนี้ถูกตั้งค่าเป็น 0 โค้ดสามารถถูกเรียกใช้จากเพจนั้นได้ หากตั้งค่าเป็น 1 โค้ดจะไม่สามารถถูกเรียกใช้จากเพจนั้นได้ และสิ่งใดก็ตามที่อยู่ในนั้นจะถือว่าเป็นข้อมูล ฟังก์ชันนี้มีให้ใช้งานเฉพาะในโหมดแบบยาว (โหมด 64 บิต) หรือ รูปแบบตารางเพจ Physical Address Extension (PAE) แบบดั้งเดิมเท่านั้น แต่ไม่ใช่รูปแบบตารางเพจ 32 บิตดั้งเดิมของ x86 เนื่องจากรายการตารางเพจในรูปแบบนั้นขาดบิตที่ 64 ที่ใช้ในการปิดใช้งานและเปิดใช้งานการเรียกใช้
ระบบปฏิบัติการ Windows XP SP2 และเวอร์ชันที่ใหม่กว่ารองรับการป้องกันการเรียกใช้ข้อมูล (Data Execution Prevention หรือ DEP)
แขน
ในARMv6มีการนำรูปแบบรายการตารางเพจใหม่มาใช้ ซึ่งรวมถึงบิต "ห้ามเรียกใช้งาน" [ 1 ]สำหรับARMv8-Aตัวอธิบายบล็อกและเพจ VMSAv8-64 และตัวอธิบายบล็อกและเพจแบบยาว VMSAv8-32 สำหรับการแปลขั้นที่ 1 จะมีบิต "ห้ามเรียกใช้งาน" สำหรับทั้งโหมดที่มีสิทธิ์และไม่มีสิทธิ์ และตัวอธิบายบล็อกและเพจสำหรับการแปลขั้นที่ 2 จะมีบิต "ห้ามเรียกใช้งาน" เพียงบิตเดียว (สองบิตเนื่องจากคุณสมบัติ ARMv8.2-TTS2UXN) ตัวอธิบายตารางการแปลแบบสั้น VMSAv8-32 ที่ระดับ 1 จะมีบิต "ห้ามเรียกใช้งาน" สำหรับทั้งโหมดที่มีสิทธิ์และไม่มีสิทธิ์ และที่ระดับ 2 จะมีบิต "ห้ามเรียกใช้งาน" เพียงบิตเดียว[ 4 ]
อัลฟ่า
ตามคู่มือสถาปัตยกรรม Alpha ฉบับที่สี่DEC (ปัจจุบัน คือ HP) Alphaมีข้อผิดพลาดในบิตการดำเนินการในรายการตารางเพจด้วยOpenVMS , Tru64 UNIXและ Alpha Linux PALcode [ 5 ]
สปาร์ค
MMU อ้างอิง SPARC สำหรับSun SPARCเวอร์ชัน 8 มีค่าสิทธิ์การอ่านอย่างเดียว อ่าน/เขียน อ่าน/เรียกใช้ และอ่าน/เขียน/เรียกใช้ในรายการตารางเพจ[ 6 ]แม้ว่าโปรเซสเซอร์ SPARC ทั้งหมดจะไม่มี MMU อ้างอิง SPARC ก็ตาม
MMU เวอร์ชัน SPARC 9 อาจให้สิทธิ์การอ่าน/เขียน/เรียกใช้งานแบบใดก็ได้ แต่ไม่จำเป็นต้องให้[ 7 ] รายการตารางการแปลในบัฟเฟอร์จัดเก็บการแปลใน Oracle SPARC Architecture 2011 ฉบับร่าง D1.0.0 มีบิตที่สามารถเรียกใช้งานและเขียนได้แยกกัน[ 8 ]
PowerPC/Power ISA
รายการตารางเพจสำหรับ ตารางเพจแบบแฮชของ IBM PowerPCมีบิตเพจที่ไม่สามารถเรียกใช้ได้[ 9 ] รายการตารางเพจสำหรับตารางเพจแบบเรดิกซ์ทรีใน Power ISA มีบิตสิทธิ์แยกต่างหากที่ให้สิทธิ์ในการอ่าน/เขียนและการเรียกใช้[ 10 ]
พีเอ-ริสซี
รายการ บัฟเฟอร์ค้นหาการแปล (TLB) และรายการตารางเพจในPA-RISC 1.1 และ PA-RISC 2.0 รองรับเพจแบบอ่านอย่างเดียว อ่าน/เขียน อ่าน/เรียกใช้งาน และอ่าน/เขียน/เรียกใช้งาน[ 11 ] [ 12 ]
ไอทาเนียม
รายการ TLB ในItaniumรองรับเพจแบบอ่านอย่างเดียว อ่าน/เขียน อ่าน/เรียกใช้งาน และอ่าน/เขียน/เรียกใช้งาน[ 13 ]
z/สถาปัตยกรรม
ตามหลักการปฏิบัติการของ สถาปัตยกรรม z/Architecture ฉบับที่สิบสอง โปรเซสเซอร์สถาปัตยกรรม z/Architecture อาจรองรับฟังก์ชันการป้องกันการดำเนินการคำสั่ง ซึ่งเพิ่มบิตในรายการตารางเพจที่ควบคุมว่าคำสั่งจากภูมิภาค เซ็กเมนต์ หรือเพจที่กำหนดสามารถดำเนินการได้หรือไม่[ 14 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- AMD และ Intel นำเทคโนโลยีป้องกันไวรัสมาใส่ในชิป
- ไมโครซอฟต์ให้สัมภาษณ์เกี่ยวกับการประมวลผลที่น่าเชื่อถือและเทคโนโลยี NX
- ประกาศ LKML NX
- การเปลี่ยนแปลงฟังก์ชันการทำงานใน Microsoft Windows XP Service Pack 2ตอนที่ 3: เทคโนโลยีการป้องกันหน่วยความจำ
- ศูนย์พัฒนาความปลอดภัยของ Microsoft: Windows XP SP 2: การป้องกันการเรียกใช้งาน
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เอ็นเอ็กซ์ บิต
บิต NX ( no -execute bit ) เป็นคุณสมบัติของโปรเซสเซอร์ที่แบ่งพื้นที่ของหน่วยความจำเสมือน (โครงสร้างหน่วยความจำที่โปรแกรมใช้) ออกเป็นส่วนๆ...
x86
โปรเซสเซอร์ x86 ตั้งแต่รุ่น 80286 เป็นต้น มา มีความสามารถที่คล้ายกันนี้ซึ่งถูกนำมาใช้ใน ระดับ เซกเมนต์ อย่างไรก็ตาม ระบบปฏิบัติการเกือบทั้งหมดสำหรับ โปรเซสเซอร์ 80386 และ x86 รุ่นต่อมา ใช้โมเดล หน่วยความจำแบบแบน (flat memory model )...
แขน
ใน ARMv6 มีการนำรูปแบบรายการตารางเพจใหม่มาใช้ ซึ่งรวมถึงบิต "ห้ามเรียกใช้งาน" [ 1 ] สำหรับ ARMv8-A ตัวอธิบายบล็อกและเพจ VMSAv8-64 และตัวอธิบายบล็อกและเพจแบบยาว VMSAv8-32 สำหรับการแปลขั้นที่ 1 จะมีบิต "ห้ามเรียกใช้งาน" สำหรับทั้งโหมดที่มีสิทธิ์และไม่มีสิทธิ์...
อัลฟ่า
ตามคู่มือสถาปัตยกรรม Alpha ฉบับที่สี่ DEC (ปัจจุบัน คือ HP) Alpha มีข้อผิดพลาดในบิตการดำเนินการในรายการตารางเพจด้วย OpenVMS , Tru64 UNIX และ Alpha Linux PALcode [ 5 ]