سیگنال‌ها در سیستم‌های Unix/Linux

تصویر شاخص مرتبط با «سیگنال‌ها در سیستم‌های Unix/Linux»
جدول محتوا

آیا می‌دانید سیگنال چیست؟

سیگنال‌ها وقفه‌های نرم‌افزاری هستند که به یک برنامه ارسال می‌شوند تا نشان دهند اتفاق مهمی رخ داده است. این رویدادها می‌توانند از درخواست‌های کاربر گرفته تا خطاهای دسترسی غیرمجاز به حافظه، متفاوت باشند. برخی سیگنال‌ها، مانند سیگنال SIGINT، نشان‌دهنده این است که کاربر از برنامه خواسته تا کاری را انجام دهد که در جریان معمول برنامه قرار ندارد.

سیگنال‌ها مکانیزمی برای پیام‌های آسنکرون یک‌طرفه هستند. ممکن است یک سیگنال از کرنل به یک پراسس، از یک پراسس به یک پراسس دیگر یا از یک پراسس به خودش فرستاده شود. سیگنال‌ها به طور معمول نسبت به برخی از رویدادها به یک پراسس هشدار می‌دهند، از جمله خطای دسترسی به قسمت غیرمجاز حافظه یا وقتی که کاربر کلیدهای Ctr+C را فشار می‌دهد.

کرنل لینوکس حدود 30 سیگنال را پیاده‌سازی کرده است. هر سیگنال توسط یک عدد از 1 تا 30 مشخص می‌شود. نام سیگنال‌ها هیچ استدلالی ندارد و اغلب توضیحی هستند. به عنوان مثال SIGKILL یا سیگنال شماره 9 به برنامه می‌گوید که کسی سعی دارد آن را بکشد.

کنترل عملیات سیگنال چگونه است؟

پراسس‌ها می‌توانند کنترل کنند که هنگام دریافت سیگنال‌ها چه عملیاتی انجام شود، به استثنای سیگنال‌های SIGKILL و SIGSTOP که همیشه پراسس را متوقف می‌کنند.

کنترل عملیات سیگنال به سه شکل می‌تواند انجام شود:

1. عمل پیش‌فرض انتخاب شود

هر سیگنال عملیات پیش‌فرض به خود را دارد که ممکن است خاتمه دادن به روند اجرای پراسس باشد.

3. سیگنال کنترل‌شده و عملیات خاصی انجام شود

پراسس به محض دریافت سیگنال به این عملکرد پرش می‌کند و بعد از اتمام، اجرای پراسس به مکان پرش منتقل می‌شود.

نکته: از واژه raise برای نشان دادن تولید سیگنال و از واژه catch برای نشان دادن دریافت سیگنال استفاده می‌شود.

2. سیگنال نادیده گرفته شود

در این‌صورت رخداد سیگنال هیچ‌گونه تاثیری بر عملکرد برنامه نخواهد داشت (رخداد سیگنال ساکت خواهد بود).

تصویر مرتبط با «سیگنالها در سیستمهای Unix/Linux»

انواع سیگنال را بشناسیم

در جدول زیر انواع سیگنال‌ها به همراه نام و شماره آن‌ها ذکر شده است.

Description Signal ID Signal Name
Hangup (POSIX) 1 SIGHUP
Terminal interrupt (ANSI) 2 SIGINT
Terminal quit (POSIX) 3 SIGQUIT
Illegal instruction (ANSI) 4 SIGILL
Trace trap (POSIX) 5 SIGTRAP
IOT Trap (4.2 BSD) 6 SIGIOT
BUS error (4.2 BSD) 7 SIGBUS
Floating point exception (ANSI) 8 SIGFPE
Kill (can’t be caught or ignored) (POSIX) 9 SIGKILL
User defined signal 1 (POSIX) 10 SIGUSR1
Description   Signal ID   Signal Name
Invalid memory segment access (ANSI) 11 SIGSEGV
User defined signal 2 (POSIX) 12 SIGUSR2
Write on a pipe with no reader, Broken pipe (POSIX) 13 SIGPIPE
Alarm clock (POSIX) 14 SIGALRM
Termination (ANSI) 15 SIGTERM
Stack fault 16 SIGSTKFLT
Child process has stopped or exited, changed (POSIX) 17 SIGCHLD
Continue executing, if stopped (POSIX) 18 SIGCONT
Stop executing (can’t be caught or ignored) (POSIX) 19 SIFSTOP
Terminal stop signal (POSIX) 20 SIGSTP
Description    Signal ID Signal Name
Background process trying to read, from TTY (POSIX) 21 SIGTTIN
Background process trying to write, to TTY (POSIX) 22 SIGTTOU
Urgent condition on socket (4.2 BSD) 23 SIGURG
CPU limit exceeded (4.2 BSD) 24 SIGXCPU
File size limit exceeded (4.2 BSD) 25 SIGXFSZ
Virtual alarm clock (4.2 BSD) 26 SIGVTALRM
Profiling alarm clock (4.2 BSD) 27 SIGPROF
Window size change (4.3 BSD, Sun) 28 SIGWINCH
I/O now possible (4.2 BSD) 29 SIGIO
Power failure restart (System V) 30 SIGPWR

ارسال سیگنال چگونه است؟

سیگنال‌ها در شرایط خطا توسط Shell و Terminal Handler ایجاد می‌شوند تا باعث ایجاد وقفه شوند و همچنین می‌توانند از یک فرآیند به فرآیند دیگر ارسال شوند تا اطلاعات را منتقل یا باعث اصلاح رفتار شوند.

دستور kill برای ارسال سیگنال به پراسس‌ها استفاده می‌شود. این نام‌گذاری از این جهت است که رفتار اکثر سیگنال‌ها خاتمه برنامه است.

Kill –(SignalID or SignalName) –(ProcessID)

با این دستور می‌توانیم هر سیگنالی را به هر پراسسی ارسال کنیم.

تصویر شماره ۲ مرتبط با «سیگنالها در سیستمهای Unix/Linux»

سیگنال و PVM

هسته سامانه PVM با زبان C++ و در محیط لینوکس توسعه یافته است. مدیریت سیگنال‌ها در برنامه‌نویسی بر پایه سیستم‌عامل لینوکس از چالش‌های جذاب و مهم محسوب می‌شود.

اصولا برنامه‌های بزرگ نیاز به آگاهی کامل و مدیریت درست سیگنال‌ها به جهت عملکرد دقیق و انطباق کامل با استانداردهای توسعه در لینوکس دارند که PVM نیز از این قاعده مستثنی نیست.

 

بیشتر بخوانیم

سامانه مجازی‌سازیPVM راهکار اختصاصی شرکت رایانش ابری آوید به منظور پیاده‌سازی تکنولوژی مجازی‌سازی سرور در شرکت‌ها و سازمان‌ها می‌باشد.

PVM Desktop‌ یا « سامانه میز کار مجازی رایانش ابری آوید » راهکار اختصاصی شرکت رایانش ابری آوید در جهت پیاده‌سازی تکنولوژی دسکتاپ مجازی (میز کار مجازی) در سازمان‌ها می‌باشد.

SSH که با نام Secure Shell یا Secure Socket Shell نیز شناخته می‌شود. یک پروتکل شبکه است که راهی امن برای دسترسی به رایانه‌های راه‌ دور به مدیران ارائه می‌دهد.

مطالب مرتبط

درخواست مشاوره

این زمینه برای اعتبار سنجی است و باید بدون تغییر باقی بماند .