فرآیند ها (پردازه ها) در لینوکس
همه کسانی که با کامپیوتر تجربه می کنند، با اصطلاح “فرایند” (پروسس یا پردازه) process آشنا هستند.
فرایند (process) چیست؟
در این آموزش، ما در مورد جزئیات فرایندها خواهیم دید.
بیایید با تعریف فرآیند شروع کنیم.
لطفا در نظر داشته باشید که ما در مورد این پروسه در لینوکس صحبت می کنیم.
تعریف: فرایند
فرایند برنامه در حال اجرا است.
اگر بخواهیم بگوییم فرایند یک نمونه از برنامه است که در حافظه یا در حال اجرا است، واضح تر خواهد شد.
شناسایی یک فرایند
در لینوکس شناسایی های زیادی وجود دارد که با یک فرآیند مرتبط است.
بیایید ببینیم شناسایی هایی که در یک فرایند در لینوکس وجود دارد، هستند.
این خواص یک فرآیند لینوکس است
1) PID
2) UID
3) GID
4) فرآیند والدین
5) فرآیند زامبی
6) فرآیند یتیم
7) Daemon Process
بیایید ببینیم این شناسه ها چیست و چه معنی می دهند.
شناسه فرآیند (PID)
process ID
این شناسه منحصر به فرد یک فرآیند است. هر فرآیند یک PID خواهد داشت.
PID نام برای شناسه فرآیند است.
این شناسه در سراسر سیستم منحصر به فرد است.
این بدان معنی است که تنها یک فرایند با یک PID خاص وجود دارد و هیچ فرایندی در همان سیستم با همان PID وجود نخواهد داشت.
لطفا دستور ‘ps‘ را در سرور لینوکس خود اجرا کنید.
شما خروجی زیر را دریافت خواهید کرد.
root@server:# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.1 33888 4340 ? Ss 10:07 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S 10:07 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 10:07 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 10:07 0:00 [kworker/0:0H]
root 7 0.7 0.0 0 0 ? S 10:07 0:15 [rcu_sched]
root 8 0.0 0.0 0 0 ? S 10:07 0:00 [rcu_bh]
root 9 1.1 0.0 0 0 ? S 10:07 0:24 [rcuos/0]
root 10 0.0 0.0 0 0 ? S 10:07 0:00 [rcuob/0]
root 11 0.0 0.0 0 0 ? S 10:07 0:00 [migration/0]
شما می توانید یک جدول را با تعداد زیادی ستون و ردیف مشاهده کنید.
‘ps’ برای نمایش یک عکس فوری از فرآیندهای فعلی استفاده می شود.
در جدول بالا می توانید ستون دوم را با نام PID مشاهده کنید.
این ستون است که PID های تمام فرآیندها را فهرست می کند.
شما می توانید ببینید که PID تمام فرآیندهای فوق منحصر به فرد است.
بنابراین، PID به عنوان یک شناسه برای فرآیندها در لینوکس استفاده می شود.
شناسه کاربر (UID) و شناسه گروه (GID)
دسته اصلی شناسه های مرتبط با یک فرآیند شناسه های کاربر و گروه است.
شناسه کاربری و شناسه گروه سپس به شرح زیر طبقه بندی می شوند.
شناسه واقعی کاربر و شناسه گروه واقعی
اینها شناسه هایی هستند که اطلاعاتی در مورد کاربر و گروهی که فرآیند متعلق به آن هستند،
ارائه می دهد. فرایندها این شناسه ها را از فرآیندهای والدین خود به ارث خواهند برد.
UID موثر، GID موثر و شناسه گروه تکمیلی
یک خطا در لینوکس وجود دارد که «مجوز منع شده» است. این یکی از رایج ترین اشتباهات در لینوکس است.
این خطا زمانی اتفاق می افتد که یک فرایند مجوز کافی برای انجام یک کار ندارد.
این سه شناسه این اجازه یک فرایند را در لینوکس تعریف می کنند.
در بیشتر موارد، شناسه کاربری موثر همانند شناسه واقعی واقعی است، اما زمانی که فرآیند با مقدار دیگری اجرا می شود،
این بدان معنی است که این فرآیند در حال حاضر با یک امتیاز خاص و نه به عنوان مجوز پیش فرض اجرا می شود.
اگر می بینید که یک فرآیند با شناسه موثر کاربر “0” اجرا می شود، فرآیند با امتیاز ریشه که امتیاز فوق العاده کاربر است، اجرا می شود.
این تمام مدارک مجوزی را که برای کرنل انجام می دهند را برای فرایندهای غیر مجاز انجام می دهد.
فرآیند والدین
فرایند والدین فرایندی است که فرآیندهای دیگر از آن استخراج می شوند.
برای لینوکس، پردازش پدر و مادر برای هر فرآیند غیر از init () وجود دارد.
این فرایند برای اولین بار ایجاد شده است هنگامی که سیستم لینوکس راه اندازی شده است.
تمام فرآیندهای دیگر در سیستم فرآیندهای فرزند فرآیند init هستند.
PID این فرآیند همیشه 1 خواهد بود. خصوصیت فرایند init این است که نمیتواند کشته شود.
این فرایند تنها در خاموش شدن سیستم کشته خواهد شد.
فرایند زامبی
فرض کنید یک فرآیند پدر و مادر و فرزند وجود دارد.
در لینوکس، هر زمان که فرایند فرزند خاتمه یابد،
وضعیت خاتمه روند به والدین از طریق خانواده () wait () فراخوانی خواهد شد.
سپس هسته در انتظار والدین است که وضعیت خاتمه کودک را بدست آورد.
این عملیات عادی برای فرآیندهای والدین و فرزند است، زمانی که فرایند فرزند خاتمه یابد.
فرض کنید یک مورد وجود دارد که در آن فرآیند پدر و مادر نمی تواند بلافاصله پس از پایان فرآیند فرزند، یک تماس صبر کنید () به هسته.
بنابراین، فرآیند پدر و مادر را به موقعیتی هدایت می کند که روند فرآیند خاتمه پرونده توسط فرآیند والد جمع نمی شود.
چنین فرایندی فرزند خاتمه یافته فرآیند زامبی نامیده می شود.
به طور خلاصه، فرایند زامبی فرایندی است که والدین منتظر دریافت وضعیت خاتمه دادن آن هستند.
مسائل ایجاد شده توسط فرایندهای زامبی دنبال می شوند.
حتی اگر هسته قبل از کشتن منابع که توسط فرایند زامبی قفل شده است منتشر شود،
برخی از اطلاعات مانند PID فرآیند زامبی و وضعیت خاتمه آن هنوز توسط هسته ذخیره می شود.
این باعث می شود که کرنل PID را به فرآیندهای جدید تخصیص ندهد.
اگر تعدادی از فرایندهای زامبی بالاتر می رود، می تواند باعث بارگذاری سرور شود.
وقتی فرآیند پدر و مادر انجام عمل صبر () و جمع شدن وضعیت خاتمه روند زامبی، هسته آزاد خواهد شد برای پاک کردن این اطلاعات.
فرآیند یتیم
فرآیند یتیم فرایند فرزند است.
این مشابه فرآیند زامبی است.
فرایند یتیم را می توان به عنوان فرایند فرزند تعریف کرد که فرآیند پدر و مادرش قبل از پایان دادن به آن پایان یافته است.
در لینوکس، فرایند init هر فرآیند یتیم را نجات خواهد داد و فرایند اصلی آن خواهد شد.
پردازش Daemon
فرایندهایی وجود دارد که نیاز به زمان طولانی دارد، اما به ترمینال کنترل نیاز ندارد.
این فرایندها به عنوان پردازش Daemon برنامه ریزی می شوند.
خصوصیات اصلی پردازش daemon اینست که یک ترمینال کنترل نخواهد داشت.