يدعم Linux كلا الإشارات الموثوقة POSIX (المشار إليها فيما بعد بـ "الإشارات القياسية") وإشارات POSIX في الوقت الفعلي.
الإشارات القياسية
يدعم Linux الإشارات القياسية المدرجة أدناه. تعتمد العديد من أرقام الإشارة على العمارة ، كما هو موضح في عمود "القيمة". (حيث يتم إعطاء ثلاث قيم ، يكون أولها عادة صالحًا لـ alpha و sparc ، والوسط لـ i386 ، و ppc ، و sh ، وآخر من أجل mips.
أ- يدل على أن الإشارة غير موجودة في البنية المقابلة.)
تحدد الإدخالات الموجودة في عمود "الإجراء" بالجدول الإجراء الافتراضي للإشارة ، كما يلي:
مصطلح
الإجراء الافتراضي هو إنهاء العملية.
IGN
الإجراء الافتراضي هو تجاهل الإشارة.
النواة
الإجراء الافتراضي هو إنهاء العملية وتفريغ الأساسية.
توقف
الإجراء الافتراضي هو إيقاف العملية.
أولاً الإشارات الموضحة في معيار POSIX.1 الأصلي.
إشارة | القيمة | عمل | تعليق |
أو موت عملية السيطرة | |||
SIGINT | 2 | مصطلح | مقاطعة من لوحة المفاتيح |
SIGQUIT | 3 | النواة | انسحب من لوحة المفاتيح |
SIGILL | 4 | النواة | تعليمات غير قانونية |
SIGABRT | 6 | النواة | إحباط الإشارة من الإجهاض (3) |
SIGFPE | 8 | النواة | استثناء نقطة عائمة |
SIGKILL | 9 | مصطلح | اقتل الإشارة |
SIGSEGV | 11 | النواة | مرجع ذاكرة غير صالح |
SIGPIPE | 13 | مصطلح | الأنبوب المكسور: الكتابة إلى الأنبوب بدون قارئات |
SIGALRM | 14 | مصطلح | إشارة توقيت من التنبيه (2) |
SIGTERM | 15 | مصطلح | إشارة الإنهاء |
SIGUSR1 | 30،10،16 | مصطلح | إشارة المعرفة من قبل المستخدم 1 |
SIGUSR2 | 31،12،17 | مصطلح | إشارة المعرفة من قبل المستخدم 2 |
SIGCHLD | 20،17،18 | IGN | توقف الطفل أو أنهى |
SIGCONT | 19،18،25 | تواصل إذا توقفت | |
SIGSTOP | 17،19،23 | توقف | عملية التوقف |
SIGTSTP | 18،20،24 | توقف | توقف عن الكتابة في tty |
SIGTTIN | 21،21،26 | توقف | مدخلات tty لعملية الخلفية |
SIGTTOU | 22،22،27 | توقف | الناتج tty لعملية الخلفية |
لا يمكن اكتشاف الإشارات SIGKILL و SIGSTOP أو حظرها أو تجاهلها.
المقبل الإشارات ليست في معيار POSIX.1 ولكن وصفها في SUSV2 و SUSv3 / POSIX 1003.1-2001.
إشارة | القيمة | عمل | تعليق |
SIGPOLL | مصطلح | حدث قابل للطعن (Sys V). مرادف SIGIO | |
SIGPROF | 27،27،29 | مصطلح | اختتام الموقت التنميط |
SIGSYS | 12 - 12 | النواة | حجة سيئة للروتين (SVID) |
SIGTRAP | 5 | النواة | تتبع / نقطة توقف الفخ |
SIGURG | 16،23،21 | IGN | حالة عاجلة على المقبس (4.2 BSD) |
SIGVTALRM | 26،26،28 | مصطلح | المنبه الظاهري (4.2 BSD) |
SIGXCPU | 24،24،30 | النواة | تجاوز حد وقت وحدة المعالجة المركزية (4.2 BSD) |
SIGXFSZ | 25،25،31 | النواة | تم تجاوز حد حجم الملف (4.2 BSD) |
بما يصل إلى Linux 2.2 ، كان السلوك الافتراضي لـ SIGSYS و SIGXCPU و SIGXFSZ و (على أبنية أخرى غير SPARC و MIPS) SIGBUS هو إنهاء العملية (بدون تفريغ أساسي). (في بعض الاتحادات الأخرى ، يكون الإجراء الافتراضي لـ SIGXCPU و SIGXFSZ هو إنهاء العملية بدون تفريغ أساسي.) يتوافق Linux 2.4 مع متطلبات POSIX 1003.1-2001 لهذه الإشارات ، مما يؤدي إلى إنهاء العملية بملف أساسي.
القادم مختلف اشارات اخرى.
إشارة | القيمة | عمل | تعليق |
SIGEMT | 7 - 7 | مصطلح | |
SIGSTKFLT | - (16 عاما) - | مصطلح | خطأ المكدس في المعالج الثانوي (غير مستخدمة) |
SIGIO | 23،29،22 | مصطلح | I / O ممكن الآن (4.2 BSD) |
SIGCLD | -، -، 18 | IGN | مرادف لـ SIGCHLD |
SIGPWR | 29،30،19 | مصطلح | انقطاع التيار الكهربائي (النظام الخامس) |
SIGINFO | 29، -، - | مرادف ل SIGPWR | |
SIGLOST | -، -، - | مصطلح | فقدت قفل الملف |
SIGWINCH | 28،28،20 | IGN | إشارة تغيير حجم النافذة (4.3 BSD ، Sun) |
SIGUNUSED | - (31 عاما) - | مصطلح | إشارة غير مستخدمة (سوف تكون SIGSYS) |
(الإشارة 29 هي SIGINFO / SIGPWR على ألفا ولكن SIGLOST على sparc.)
لم يتم تحديد SIGEMT في POSIX 1003.1-2001 ، ولكن لا تظهر أبدًا على معظم Unices الأخرى ، حيث يكون الإجراء الافتراضي عادةً هو إنهاء العملية باستخدام تفريغ أساسي.
يتم عادةً تجاهل SIGPWR (الذي لم يتم تحديده في POSIX 1003.1-2001) بشكل افتراضي على تلك Unices الأخرى حيث تظهر.
يتم تجاهل SIGIO (غير المحدد في POSIX 1003.1-2001) بشكل افتراضي على عدة Unices أخرى.
إشارات الوقت الفعلي
يدعم Linux إشارات الوقت الفعلي كما تم تعريفها في الأصل في ملحقات الوقت الفعلي POSIX.4 (وهي الآن مضمنة في POSIX 1003.1-2001). يدعم Linux 32 إشارة في الوقت الحقيقي ، مرقمة من 32 ( SIGRTMIN ) إلى 63 ( SIGRTMAX ). (يجب أن تشير البرامج دائمًا إلى الإشارات في الوقت الفعلي باستخدام الترميز SIGRTMIN + n ، نظرًا لأن نطاق أرقام الإشارات في الوقت الفعلي يختلف عبر Unices.)
على عكس الإشارات القياسية ، لا تحتوي إشارات الوقت الفعلي على معان محددة مسبقًا: يمكن استخدام المجموعة الكاملة من الإشارات في الوقت الفعلي لأغراض محددة من قبل التطبيق. (لاحظ أن تطبيق LinuxThreads يستخدم الإشارات الثلاثة الأولى في الوقت الفعلي).
الإجراء الافتراضي لإشارة في الوقت الحقيقي غير معالج هو إنهاء عملية الاستلام.
تتميز إشارات الوقت الفعلي بما يلي:
- يمكن أن تنتظم عدة حالات من إشارات الوقت الفعلي. على النقيض من ذلك ، إذا تم تسليم عدة مثيلات للإشارة القياسية أثناء حظر هذه الإشارة حاليًا ، يتم وضع مثيل واحد فقط في قائمة الانتظار.
- إذا تم إرسال الإشارة باستخدام sigqueue (2) ، يمكن إرسال قيمة مصاحبة (إما عدد صحيح أو مؤشر) مع الإشارة. إذا قامت عملية الاستلام بإنشاء معالج لهذه الإشارة باستخدام إشارة SA_SIGACTION إلى sigaction (2) ، فيمكنها الحصول على هذه البيانات عبر حقل si_value الخاص بهيكل siginfo_t الذي تم تمريره كوسيطة ثانية إلى المعالج. علاوة على ذلك ، يمكن استخدام حقلي si_pid و si_uid في هذه البنية للحصول على معرف PID ومعرف المستخدم الحقيقي لعملية إرسال الإشارة.
- يتم تسليم الإشارات في الوقت الحقيقي في أمر مضمون. يتم تسليم إشارات متعددة في الوقت الفعلي من نفس النوع بالترتيب الذي تم إرسالها به. إذا تم إرسال إشارات مختلفة في الوقت الفعلي إلى عملية ، يتم تسليمها بدءًا من الإشارة ذات الأرقام الأقل. (أي أن الإشارات ذات الأرقام المنخفضة لها الأولوية القصوى.)
إذا كانت الإشارات القياسية وفي الوقت الفعلي معلقة في عملية ما ، فإن POSIX تتركها غير محددة ويتم تسليمها أولاً. يعطي Linux ، مثل العديد من التطبيقات الأخرى ، الأولوية للإشارات القياسية في هذه الحالة.
ووفقًا لـ POSIX ، يجب أن يسمح التنفيذ على الأقل بوضع إشارات في الوقت الفعلي بما يعادل _POSIX_SIGQUEUE_MAX (32) في قائمة الانتظار. ومع ذلك ، بدلاً من وضع حد لكل عملية ، يفرض Linux حدًا على مستوى النظام على عدد إشارات الوقت الفعلي في قائمة الانتظار لكل العمليات.
يمكن مشاهدة هذا الحد (ومع الامتياز) عن طريق ملف / proc / sys / kernel / rtsig-max . يمكن استخدام ملف ذي صلة ، / proc / sys / kernel / rtsig-max ، لمعرفة عدد الإشارات في الوقت الفعلي في قائمة الانتظار حاليًا.
التاكيد الى
POSIX.1
هام: استخدم الأمر man ( ٪ man ) لمعرفة كيفية استخدام أمر ما على جهاز الكمبيوتر الخاص بك.