nptl(7)

الاسم
nptl - مكتبة خيوط POSIX الأصلية

الوصف
NPTL (مكتبة خيوط POSIX الأصلية) هي تطبيق خيوط POSIX لمكتبة GNU C المستخدمة على أنظمة لينكس الحديثة.

  NPTL والإشارات
تستخدم NPTL داخليًا أول إشارتين زمنيتين حقيقيتين (رقما الإشارة 32 و33). تُستخدم إحدى هاتين الإشارتين لدعم إلغاء الخيوط ومؤقتات POSIX (انظر timer_create(2))؛ وتُستخدم الأخرى كجزء من آلية تضمن أن جميع الخيوط في العملية لها نفس معرفات المستخدمين ومعرفات المجموعات، كما هو مطلوب بواسطة POSIX. لا يمكن استخدام هذه الإشارات في التطبيقات.

لمنع الاستخدام العرضي لهذه الإشارات في التطبيقات، والذي قد يتداخل مع تشغيل تطبيق NPTL، تحاول دوال مكتبة glibc المختلفة ودوال غلاف استدعاءات النظام إخفاء هذه الإشارات عن التطبيقات، كما يلي:

•   يُعرف SIGRTMIN بالقيمة 34 (بدلاً من 32).

•   تتجاهل واجهات sigwaitinfo(2) وsigtimedwait(2) وsigwait(3) بصمت طلبات الانتظار لهاتين الإشارتين إذا تم تحديدهما في وسيط مجموعة الإشارة لهذه الاستدعاءات.

•   تتجاهل واجهات sigprocmask(2) وpthread_sigmask(3) بصمت محاولات حظر هاتين الإشارتين.

•   تفشل واجهات sigaction(2) وpthread_kill(3) وpthread_sigqueue(3) مع الخطأ EINVAL (مشيرًا إلى رقم إشارة غير صالح) إذا تم تحديد هذه الإشارات.

•   لا تتضمن sigfillset(3) هاتين الإشارتين عند إنشاء مجموعة إشارة كاملة.

  NPTL وتغييرات بيانات اعتماد العملية
على مستوى نواة لينكس، بيانات الاعتماد (معرفات المستخدم والمجموعة) هي سمة لكل خيط. ومع ذلك، تتطلب POSIX أن جميع خيوط POSIX في العملية لها نفس بيانات الاعتماد. لاستيعاب هذا المطلب، يغلف تطبيق NPTL جميع استدعاءات النظام التي تغير بيانات اعتماد العملية بدوال تقوم، بالإضافة إلى استدعاء استدعاء النظام الأساسي، بترتيب تغيير جميع الخيوط الأخرى في العملية لبيانات اعتمادها أيضًا.

يتضمن تنفيذ كل من استدعاءات النظام هذه استخدام إشارة زمنية حقيقية تُرسل (باستخدام tgkill(2)) إلى كل خيط من الخيوط الأخرى التي يجب أن تغير بيانات اعتمادها. قبل إرسال هذه الإشارات، يحفظ الخيط الذي يغير بيانات الاعتماد بيانات الاعتماد الجديدة ويسجل استدعاء النظام المستخدم في مخزن مؤقت عام. يقوم معالج إشارة في الخيوط المستقبلة بجلب هذه المعلومات ثم يستخدم نفس استدعاء النظام لتغيير بيانات اعتمادها.

تُوفر دوال غلاف تستخدم هذه التقنية لـ setgid(2) وsetuid(2) وsetegid(2) وseteuid(2) وsetregid(2) وsetreuid(2) وsetresgid(2) وsetresuid(2) وsetgroups(2).

المعايير
للحصول على تفاصيل حول توافق NPTL مع معيار POSIX، انظر pthreads(7).

ملاحظات
تنص POSIX على أن أي خيط في أي عملية لديه وصول إلى الذاكرة التي تحتوي على كائن مزامنة مشترك بين العمليات (PTHREAD_PROCESS_SHARED) يمكنه العمل على ذلك الكائن. ومع ذلك، على أنظمة x86 ذات 64 بت، تعريف كائن المزامنة لـ x86-64 غير متوافق مع تعريف كائن المزامنة لـ i386، مما يعني أن الملفات الثنائية ذات 32 بت و64 بت لا يمكنها مشاركة كائنات المزامنة على أنظمة x86-64.

انظر أيضًا
credentials(7)، pthreads(7)، signal(7)، standards(7)

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

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

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