فرآیند ها (پردازه ها) در لینوکس

فرآیند ها (پردازه ها) در لینوکس

پردازش ها در لینوکس
پردازش ها در لینوکس

همه کسانی که با کامپیوتر تجربه می کنند، با اصطلاح “فرایند” (پروسس یا پردازه) 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 اینست که یک ترمینال کنترل نخواهد داشت.