alloc_hugepages(2)

الاسم
alloc_hugepages, free_hugepages - تخصيص أو تحرير الصفحات العملاقة

موجز
void *syscall(size_t size;
              SYS_alloc_hugepages, int key,
              void addr[size], size_t size,
              int prot, int flag);
int syscall(SYS_free_hugepages, void *addr);

ملاحظة: لا توفر glibc أغلفة لنداءات النظام هذه، مما يستلزم استخدام syscall(2).

الوصف
استُحدثت استدعاءات النظام alloc_hugepages() و free_hugepages() في لينكس 2.5.36 وأُزيلت مرة أخرى في لينكس 2.5.54. كانت موجودة فقط على i386 و ia64 (عند البناء مع CONFIG_HUGETLB_PAGE). في لينكس 2.4.20، توجد أرقام استدعاءات النظام، لكن الاستدعاءات تفشل مع الخطأ ENOSYS.

على i386، تعرف أجهزة إدارة الذاكرة الصفحات العادية (4 KiB) والصفحات العملاقة (2 أو 4 MiB). وبالمثل، تعرف ia64 الصفحات العملاقة بعدة أحجام. تخدم استدعاءات النظام هذه لربط الصفحات العملاقة في ذاكرة العملية أو لتحريرها مرة أخرى. الصفحات العملاقة مقفلة في الذاكرة، ولا تُبدل.

وسيطة key هي معرّف. عندما تكون صفرًا، تكون الصفحات خاصة، ولا تُورث للأبناء. عندما تكون موجبة، تُشارك الصفحات مع تطبيقات أخرى تستخدم نفس key، وتُورث لعمليات الابن.

تخبر وسيطة addr لـ free_hugepages() أي صفحة تُحرر: كانت قيمة الإرجاع لاستدعاء alloc_hugepages(). (تُحرر الذاكرة فعليًا أولاً عندما يحررها جميع المستخدمين.) وسيطة addr لـ alloc_hugepages() هي تلميح، قد يتبعه النواة أو لا. يجب أن تكون العناوين محاذاة بشكل صحيح.

وسيطة size هي حجم المقطع المطلوب. يجب أن تكون مضاعفًا لحجم الصفحة العملاقة.

تحدد وسيطة prot حماية الذاكرة للمقطع. هي واحدة من PROT_READ، PROT_WRITE، PROT_EXEC.

تُتجاهل وسيطة flag، ما لم تكن key موجبة. في تلك الحالة، إذا كانت flag هي IPC_CREAT، يُنشأ مقطع صفحة عملاقة جديد عندما لا يوجد أي مقطع بالمفتاح المعطى. إذا لم يُضبط هذا العلم، يُعاد ENOENT عندما لا يوجد مقطع بالمفتاح المعطى.

قيمة الإرجاع
عند النجاح، تُعيد alloc_hugepages() العنوان الافتراضي المخصص، وتُعيد free_hugepages() صفرًا. عند الخطأ، يُعاد -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

ENOSYS
    استدعاء النظام غير مدعوم على هذه النواة.

الملفات

/proc/sys/vm/nr_hugepages
    عدد صفحات hugetlb المكوّنة. يمكن قراءة هذا وكتابته.

/proc/meminfo
    يعطي معلومات عن عدد صفحات hugetlb المكوّنة وعن حجمها في المتغيرات الثلاثة HugePages_Total و HugePages_Free و Hugepagesize.

المعايير
لينكس على معالجات إنتل.

التاريخ
اختفت استدعاءات النظام هذه؛ كانت موجودة فقط في لينكس 2.5.36 حتى لينكس 2.5.54.

ملاحظات
يمكن الآن استخدام نظام الملفات hugetlbfs بدلاً من ذلك. تُحصل الذاكرة المدعومة بالصفحات العملاقة (إذا كانت وحدة المعالجة المركزية تدعمها) باستخدام mmap(2) لربط الملفات في نظام الملفات الافتراضي هذا.

يمكن تحديد العدد الأقصى للصفحات العملاقة باستخدام وسيط الإقلاع hugepages=.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.