.\" -*- coding: UTF-8 -*- .\" Copyright 2006, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sem_overview 7 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم sem_overview \- نظرة عامة على الإشارات (semaphores) في POSIX .SH الوصف تسمح إشارات POSIX للعمليات والمسارات (threads) بمزامنة إجراءاتها. .P الإشارة (semaphore) هي عدد صحيح لا يُسمح أبدًا لقيمته بالانخفاض تحت الصفر. يمكن تنفيذ عمليتين على الإشارات: زيادة قيمة الإشارة بمقدار واحد (\fBsem_post\fP(3))؛ وتقليل قيمة الإشارة بمقدار واحد (\fBsem_wait\fP(3)). إذا كانت قيمة الإشارة حاليًا صفرًا، فإن عملية \fBsem_wait\fP(3) ستحظر (block) حتى تصبح القيمة أكبر من الصفر. .P تأتي إشارات POSIX بشكلين: إشارات مسماة (named semaphores) وإشارات غير مسماة (unnamed semaphores). .TP \fBالإشارات المسماة\fP .\" glibc allows the initial slash to be omitted, and makes .\" multiple initial slashes equivalent to a single slash. .\" This differs from the implementation of POSIX message queues. .\" glibc allows subdirectory components in the name, in which .\" case the subdirectory tree must exist under /dev/shm, and .\" the fist subdirectory component must exist as the name .\" sem.name, and all of the subdirectory components must allow the .\" required permissions if a user wants to create a semaphore .\" object in a subdirectory. يتم تعريف الإشارة المسماة باسم من النموذج \fI/somename\fP؛ أي سلسلة منتهية بقيمة خالية (null\-terminated) يصل طولها إلى \fBNAME_MAX\fP\fI\-4\fP (أي 251) حرفًا تتكون من شرطة مائلة أولية، متبوعة بحرف واحد أو أكثر، لا يحتوي أي منها على شرطات مائلة. يمكن لعمليتين (processes) العمل على نفس الإشارة المسماة عن طريق تمرير نفس الاسم إلى \fBsem_open\fP(3). .IP تنشئ دالة \fBsem_open\fP(3) إشارة مسماة جديدة أو تفتح إشارة مسماة موجودة. بعد فتح الإشارة، يمكن العمل عليها باستخدام \fBsem_post\fP(3) و\fBsem_wait\fP(3). عندما تنتهي عملية من استخدام الإشارة، يمكنها استخدام \fBsem_close\fP(3) لإغلاق الإشارة. عندما تنتهي جميع العمليات من استخدام الإشارة، يمكن إزالتها من النظام باستخدام \fBsem_unlink\fP(3). .TP \fBالإشارات غير المسماة (إشارات قائمة على الذاكرة)\fP الإشارة غير المسماة ليس لها اسم. بدلاً من ذلك، توضع الإشارة في منطقة ذاكرة مشتركة بين مسارات متعددة (إشارة مشتركة بين المسارات \fIthread\-shared semaphore\fP) أو عمليات (إشارة مشتركة بين العمليات \fIprocess\-shared semaphore\fP). توضع الإشارة المشتركة بين المسارات في منطقة ذاكرة مشتركة بين مسارات عملية، على سبيل المثال، متغير عام. يجب وضع الإشارة المشتركة بين العمليات في منطقة ذاكرة مشتركة (مثل، قطعة ذاكرة مشتركة من System V تم إنشاؤها باستخدام \fBshmget\fP(2)، أو كائن ذاكرة مشتركة من POSIX تم بناؤه باستخدام \fBshm_open\fP(3)). .IP قبل الاستخدام، يجب تهيئة الإشارة غير المسماة باستخدام \fBsem_init\fP(3). يمكن بعد ذلك العمل عليها باستخدام \fBsem_post\fP(3) و\fBsem_wait\fP(3). عندما لا تكون الإشارة مطلوبة بعد الآن، وقبل إلغاء تخصيص الذاكرة التي توجد فيها، يجب تدمير الإشارة باستخدام \fBsem_destroy\fP(3). .P يصف باقي هذا القسم بعض التفاصيل المحددة لتنفيذ Linux لإشارات POSIX. .SS الإصدارات قبل Linux 2.6، كان Linux يدعم فقط الإشارات غير المسماة والمشتركة بين المسارات. على نظام يعمل بنواة Linux 2.6 ومكتبة glibc التي توفر تنفيذ NPTL للمسارات، يتم توفير تنفيذ كامل لإشارات POSIX. .SS الاستمرارية تمتلك إشارات POSIX المسماة استمرارية في النواة (kernel persistence): إذا لم تتم إزالتها بواسطة \fBsem_unlink\fP(3)، فستظل الإشارة موجودة حتى يتم إيقاف تشغيل النظام. .SS "الربط (Linking)" يجب ترجمة البرامج التي تستخدم واجهة برمجة تطبيقات إشارات POSIX باستخدام \fIcc \-pthread\fP للربط مع مكتبة الوقت الفعلي (real\-time library)، \fIlibrt\fP. .SS "الوصول إلى الإشارات المسماة عبر نظام الملفات" في Linux، يتم إنشاء الإشارات المسماة في نظام ملفات افتراضي، يُوصل عادةً تحت \fI/dev/shm\fP، بأسماء من النموذج \fIsem.\fPsomename. (هذا هو السبب في أن أسماء الإشارات محدودة بـ \fBNAME_MAX\fP\fI\-4\fP بدلاً من \fBNAME_MAX\fP حرفًا.) .P منذ Linux 2.6.19، يمكن وضع قوائم التحكم في الوصول (ACLs) على الملفات تحت هذا الدليل، للتحكم في أذونات الكائنات على أساس كل مستخدم وكل مجموعة. .SH ملاحظات إشارات System V (\fBsemget\fP(2)، \fBsemop\fP(2)، إلخ) هي واجهة برمجة تطبيقات إشارات أقدم. توفر إشارات POSIX واجهة أبسط وأفضل تصميمًا من إشارات System V؛ من ناحية أخرى، فإن إشارات POSIX أقل توفرًا على نطاق واسع (خاصة على الأنظمة الأقدم) من إشارات System V. .SH أمثلة يظهر مثال لاستخدام دوال إشارات POSIX المختلفة في \fBsem_wait\fP(3). .SH "انظر أيضًا" \fBsem_close\fP(3)، \fBsem_destroy\fP(3)، \fBsem_getvalue\fP(3)، \fBsem_init\fP(3)، \fBsem_open\fP(3)، \fBsem_post\fP(3)، \fBsem_unlink\fP(3)، \fBsem_wait\fP(3)، \fBpthreads\fP(7)، \fBshm_overview\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .