يدعم 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 كان إنهاء العملية (دون تفريغ الأساسية). (في بعض UNices الأخرى الإجراء الافتراضي لـ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) عادةً ما يتم تجاهله بشكل افتراضي على تلك الأرصدة الأخرى حيث تظهر.
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 حدًا على مستوى النظام على عدد إشارات الوقت الفعلي في قائمة الانتظار لكل العمليات.
يمكن الاطلاع على هذا الحد (ومع الامتياز) تغيرت عن طريق / بروك / SYS / نواة / rtsig ماكس ملف. ملف ذو صلة ، / بروك / SYS / نواة / rtsig ماكس ، يمكن استخدامها لمعرفة عدد الإشارات في الوقت الحقيقي في قائمة الانتظار حاليا.
التاكيد الى
POSIX.1
مهم: استخدم ال رجل أمر ( رجل٪ ) لمعرفة كيفية استخدام الأمر على جهاز الكمبيوتر الخاص بك.