به طور کلی، منظور از ID (شناسه) عددی است که در لینوکس برای شناسایی، رصد، پیگیری و دیگر کارهایی از این دست به چیزهای مختلفی همچون پروسهها، تِرِدها، کاربران، گروههای کاربری و ... اختصاص مییابد که در این آموزش قصد داریم آنها را مورد بررسی قرار دهیم.
آشنایی با ارتباط مابین Process و Thread ID
وقتی که سیستم بالا میآید، چندین پروسهٔ مختلف در حال اجرا هستند و این در حالی است که سیستمعامل با اختصاص یک شناسهٔ منحصر به فرد به تکتک آنها تحت عنوان Process ID یا به اختصار PID، تمامی پروسهها را رصد میکند. به عبارت دیگر، PID به منظور دریافت وضعیت پروسه، میزان اشغال CPU، استفاده از مموری، مشخص سازی محل دقیق ریسورسها در مموری و دیگر اطلاعات مرتبط با هر پروسه مورد استفاده قرار میگیرد.
معمولاً شمارههای PID جدید به صورت اصطلاحاً Ascending (از کم به زیاد) به پروسهها اختصاص مییابد؛ به عبارت دیگر، شناسهٔ شماره ۱ به اولین پروسه اختصاص مییابد و پروسههای بعدی به ترتیب دارای شناسههای ۲، ۳ و ... خواهند شد. جدول زیر حاوی انواع PID و توضیحات مربوط به آنها است:
نوع شناسه توضیحات PID PID مخفف واژگان Process ID است و یک عدد منحصر به فرد است که به هر فرایند اختصاص مییابد. PPID PPID مخفف واژگان Parent Process ID است و به پروسهٔ والدی اشاره دارد که منجر به ایجاد پروسهٔ دیگری (فرزند) شده است. TID TID مخفف واژگان Thread ID است و عددی همچون PID است که به پروسههای تک تِرِدی اختصاص مییابد (برای پروسههای چند تِرِدی، هر تِرِد دارای یک PID است اما تمامی تِرِدها دارای یک TID هستند).
IDهای کاربری و گروههای کاربری
در فصول گذشته گفتیم که در لینوکس در آن واحد چندین کاربر میتوانند با سیستم کار کنند و این در حالی است که هر کاربر میتواند چندین پروسه را اجرا کند. در چنین شرایطی، سیستمعامل کاربری را که یک پروسه را استارت میکند بر اساس اصطلاحاً Real User ID یا به اختصار RUID که در حین ساخت هر کاربر جدید اختصاص مییابد، رصد میکند.
کاربری که این امکان را دارا است تا برای دیگر کاربران سطح دسترسی مشخص سازد، تحت عنوان Effective UID یا به اختصار EUID شناخته میشود.
به خاطر داشته باشید |
توجه داشته باشیم که EUID ممکن است همان RUID باشد یا نباشد. |
در لینوکس ما میتوانیم کاربران را به گروههای مختلفی تقسیمبندی کنیم و هر گروه کاربری هم با یک Real Group ID یا به اختصار RGID شناخته میشود. سطح دسترسیهای هر گروه کاربری هم توسط Effective Group ID یا به اختصار EGID مشخص میشود.
نکته |
به یاد داشته باشیم که در لینوکس هر کاربری میتواند عضو یک یا چند گروه مختلف باشد. |
درآمدی بر اولویتهای پروسهها در لینوکس
پس از بالا آمدن سیستم، میتوان گفت که در هر لحظه چندین پروسه در حال اجرا هستند اما این در حالی است که CPU در آن واحد فقط و فقط میتواند یکی از پروسهها را پردازش کند (همچون خودرویی که در آن واحد نمیتواند بیش از یک راننده داشته باشد).
نیاز به توضیح هم نیست که همواره برخی پروسهها هستند که نسبت به سایرین از اهمیت به مراتب بیشتری برخوردارند و در همین راستا هم لینوکس به کاربرانش این امکان را داده است تا برای پروسههای مختلف، Priority (اولویت) در نظر بگیرند.
همانطور که در تصویر فوق مشخص است، اولویت یک پروسه را میتوان با در نظر گرفتن اصطلاحاً یک Nice Value مشخص نمود. به عبارت دیگر، هرچه میزان Nice Value کمتر باشد، اولویت آن پروسه بالاتر است و این در حالی است که مقادیر پایین به پروسههایی خیلی مهم اختصاص مییابد و آن دسته از پروسههایی هم که میتوانند کمی منتظر بمانند، بیشترین مقادیر برایشان در نظر گرفته خواهد شد.
در حقیقت، یک پروسه با مقدار Nice Value بالا این اجازه را به دیگر پروسهها میدهد تا اول اجرا شوند. در لینوکس، مقداری همچون 20- حاکی از آن است که اولویت پروسه بسیار بالا است و پروسههایی با کمترین میزان اولویت هم مقداری همچون ۱۹ دریافت خواهند کرد.
نکته |
کاملاً مشخص است که ارتباط مابین Priority و Nice Value برعکس است و این به روزهای اولیهٔ ابداع UNIX بازمیگردد و از آن زمان تاکنون در سیستمهای مشتق شده از یونیکس همچون لینوکس به ارث برده شده است. |
همچنین کاربران لینوکس این امکان را دارند تا یک اولویت به اصطلاح Real-time (در لحظه) به تسکهای حساس اختصاص دهند. به عبارت دیگر، اولویت در لحظه، اولویتی بسیار بالا است.