سؤال

يحمي Syscall MPROTECT منطقة الذاكرة داخل حدود الصفحة:

int mprotect(void *addr, size_t len, int prot);

هنا len يجب أن تكون متعددة من التصفيات.

هل هناك أي طريقة لحماية بعض عناوين متتالية فقط، والتي لا تتماشى إلى حدود الصفحة IE len < pagesize ?

هل كانت مفيدة؟

المحلول

لن أظن ذلك، لا. القيد هو أن MMU. لديه حدود الأجهزة حول كيفية غرامة الحبيبية التي يمكن السيطرة عليها. هناك جداول تحمل قيود الوصول ولا يمكنك الحصول على فتحة جدول لكل بايت؛ الجدول نفسه سيستخدم كل ذاكرة الوصول العشوائي الخاصة بك. لذا، بدلا من ذلك، أصبح أكثر خشونة، مع إدخالات الجدول لكل صفحة.

قد تكون قادرا على القيام بشيء باستخدام Valgrind، إذا كنت في Linux.

نصائح أخرى

لا، ليس هناك. يعمل نظام الذاكرة الظاهري لنظام التشغيل الخاص بك فقط على مستوى الصفحة، لا شيء أصغر من ذلك.

أعتقد أن الرابط أدناه هو ما تتوقعه، لكن عليك الانتظار حتى ينطلق.

https:/software.intel.com/EN-US/Blogs/07/22/intel-memory-protection-Extensions-intel-mpx-support-in-gnu-toolchain.

"MPX - ملحقات حماية ذاكرة Intel®" هي ما يريده جميع مبرمجي C ++. أنا أتطلع إلى ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top