whatsapp call admin

مقاله در مورد مدیریت پردازشprocess management

word قابل ویرایش
39 صفحه
8700 تومان
87,000 ریال – خرید و دانلود

مدیریت پردازشprocess management

۱-۷- مقدمه
یک processیک برنامه در حال اجرا میباشد . سیستم unix برای کنترل نمودن process های در حال اجرا برنامه های مختلفی را فراهم ساخته است . بی شک برنامه ps مهمترین برنامه از این نوع میباشد که وضعیت process های کنونی شما را نشان میدهد .

 

هنگامیکه process ها در صحنه اجرا میشوند ، میتوان بوسیله سیگنال هائیکه از صفحه کلید ارسال میگردد آنها را متوقف نمود . اما برای مدیریت process هائیکه در زمینه اجرا میگردند با استفاده از فرمان kill آنها را متوقف میسازیم .
دیگر فرامینی که در این فصل مورد بررسی قرار میگیرد امکان تغییر دادن محیط process ها را فراهم میسازند . فرمان nice اولویت اجرای process را کاهش میدهد تا process های دیگر بیشتر مورد توجه قرار گیرند . فرمان nohup این امکان را در اختیار شما قرار میدهد که پس از خروج از سیستم process شما همچنان در حال اجرا باقی بماند . فرمان at این امکان را در اختیار شما قرار میدهد که برنامه ای را در زمانیکه شما تعیین می نمائید به اجرا در بیاید .

۲-۷- گزارش وضعیت process ها
فرمان ps
یک برنامه در حال اجراء رایک process مینامند وهر process بوسیله یک شماره واحد شناخته میشودبه این شماره PID ویاشماره مشخصه process میگویند. process های باشماره مشخصه process1. 0 های ویژه سیستم میباشند. process شماره صفرkernel سیستم unix میباشدو process شماره init process .1 نام دارد. این process وظیقه برپاسازی ساختار process ها را بر عهده دارد . در سیستم unix تمام process ها توسط process دیگر ایجاد میشوند که به آن process پدر میگویند. پدرویابه تعبیری دیگر پدر بزرگ تمام process ها process شماره ۱ میباشد.

شماره مشخصه بقیه process ها در محدوده ۲ تا ۳۰٫۰۰۰ قراردارد .برنامه ps نه تنها pid هابلکه اطلاعات دیگر ی درمورد process های در حال اجراءرا نمایش میدهد.برای مثال جهت مشاهده وضعیت process های اجراءشده در زمینه ویامشخص نمودن pid برای خاتمه دادن به process که درزمینه در حال اجراء میباشد از فرمان ps استفاده میکند همچنین از فرمان ps برای مشاهده

process هائی که توسط دیگر استفاده کنندگان به اجراءدر آمده استفاده میکنیم.
اگرهیچ opthion رادر سطرفرمان ps اختصاص ندهیدتنها اطلاعات مربوط به process های ترمینال کنترلی خودرامشاهده خواهیدکرد.
$ ps
pid tty time command
25 2b 0:09 sh
156 2b 0:01 ps
$
چهارفیلدخروجی عبارتنداز شماره مشخصه process ونام ترمینال کنترلی. زمان مصرف شده برای اجرای فرمان ونام فرمان.
معمولا process ها ازطریق یک ترمینال کنترلی به اجراء در می آیند .اگر یک process که درزمینه اجراءمیگردد به ترمینال کنترلی اختصاصی نیافته باشد به آن daemon process ویا daemons میگویند. برای مشاهده وضعیت یک process خاص بصورت زیر عمل نمائید
$ ps_ p25
pid tty time command
25 01 0:09 sh
$
برای اجراءکردن یک process درزمینه در انتهای سطرفرمان علامت(E) راقراردهید در اینصورت اجرای process شروع میگردد بدون آنکه ترمینال شما منتظر خاتمه یافتن اجرای process گردد .
$ ls _ lr / >/ dev/ null e
157
$
هنگامیکه اجرای یک process در زمینه شروع میشود shell یک شماره بعنوان شماره مشخصه process نشان میدهد . در مثال فوق عدد ۱۵۷ شماره مشخصه process است که در زمینه اجراء نموده ایم . خروجی فرمان ls که به صورت بازگشتی از ریشه به اجراء در میاید بصورت استاندارد بر روی صفحه ترمینال ما ظاهر میگردد که ما با تغییر مسیر دادن آن به فایل null از اینکار جلو

گیری نموده ایم .

$PS PID TTY TIME COMMAND
25 2b O:O9 SH
157 2b O: P3 LS- LR

۱۵۸ ۲b O:O1 PS
$
اگر فرمان PS را بعد از چند لحظه دوباره به اجراء در بیاورید مشاهده خواهید کرد که زمان مصرف شده برای فرمان ils اضافه میشود.
$PS

PID TTY TIME COMMAND
25 2b O:O9 SH
157 2b O: 4 LS – LR
158 2b O:O1 PS
$
تا بحال از فرم کوتاه فرمانps استفاده نمودیم برای استفاده ا زفرم بلند خروجی فرمان ps از L ـ در سطر فرمان ps استفاده نمائید .
$ ps – l
F S UID PID PPID C PRI NI ADDR S2 WCHAN TTY TIME CMD
1 S USEN 2 25 1 0 30 20 39 32 CHILD 2B 0: 10 SH
1 R USEN 2 160 25 13 56 20 46 64 2B 0: 01 PS
$
البته ممکن است که اعداد خروجی فرمان PS با آنچه که شما بر روی ترمینال خود مشاهده میکنید تفاوت داشته باشد .
در اینجا شرح مختصری در مورد فیلدها و اطلاعات موجود در آنها رابیان می نمائیم .
lag : f اختصاص داده شده به process
01 : در حافظه
۰۲ : system process
4 : برای i/o فیزیکی در حافظه قفل شده
۱۰ : در حال swap
20 : بوسیله process دیگری ردیابی میگردد.
S : حالت process
S: SLEEP
W : منتظر WAIT
R : در حال اجراء run
I: میانی INTErMEDIATE
Z : خاتمه یافته
T : متوقف شده
UID : اسم استفاده کننده مالک process
PID : شماره مشخصه process
PPID : شماره مشخصه برای پدر process
C : زمان مصرف شده CPU برای زمانبندی process
PRI : الویت process ( اعداد بزرگتر – اولویت کمتر را نشان میدهند )
NI : عددی که در محاسبه اولویت استفاده میگردد .
ADDR : اگر process در حافظه باشد این عدد آدرس حافظه را نشان میدهد و در غیر اینصورت آدرس دیسک میباشد .
SZ : اندازه process در حافظه
WCHAN : هنگامیکه یک process تقاضائی دارد که در دسترس نمیباشد process تا زمان مهیا شدن نیازش باید منتظر بماند . علت انتظار process بصورت یک آدرس در این فیلد نوشته میشود . اگر فیلد خالی باشد process در حال اجراء میباشد .
TTY : اسم ترمینال کنترلی process
TIME : زمان مصرف شده برای اجرای process
با استفاده از فرمان PS میتوانید تمام process های در حال اجراء را مشاهده نماید . برای اینکار میتوانید از –EL در سطر فرمان PS استفاده نمائید.

$PS – EL
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
3 S

۰ ۰ ۴۵ ۰ ۲۰ ۱D 8 NUNOUT ? 570:08 SWAPPEL
1 S 1 0 0 30 20 2 9 40 CHIED ? 0:01 INIT
1 S 26 1 0 28 20 3D 32 TTY(O) 2C 0:05 GETTY
1 S USEN2 30 1 0 30 20 39 32 HILD 2B 0:10 SH
1 R USEL2 161 30 13 56 20 46 64 2B 0:01 PS
1 S 21 1 0 40 20 4A 40 SLEEP ? 1:12 CLON
$

۳=۷-خاتمه دادن به یک process

فرمان KILL
گاهی از اوقات لازم است که اجرای یک process را که شما شروع نموده اید متوقف سازید . مثلا برنامه آنطور که شما مایل بودید عمل نمیکند و یا اینکه دیگر نیازی به اجرای برنامه ای که در زمینه اجرا نمودید ندارید . یک برنامه که در زمینه اجراء میگردد نه تنها بوسیله وقفه بلکه بوسیله سیگنال quit هم خاتمه نمی یابد ، زیراshell process , های زمینه را از سیگنال ها محفوظ نگاه میدارد . اما بوسیله ارسال سیگنال نرم افزاری خاتمه ، میتوانید یک process را که در زمینه در حال اجراء شدن است خاتمه دهید . زیرا shell در مقابل این signal محافظتی انجام نمیدهد .
برای ارسال یک سیگنال نرم افزاری به یک process از فرمان kill با قالب زیر استفاده نمائید .
$ kill ( – signal – no ) pid
در اینجا pid شماره مشخصه process میباشد که بلافاصله پس از اجرای process در زمینه توسط shell نمایش داده میشود . اگر شماره مشخصه process را فراموش کردید با استفاده از فرمان ps شماره مشخصه process مورد نظر خود را بدست آورید . هنگامیکه فرمان ps را صادر میکنید تمام process هائیکه هم اکنون به ترمینال شما اختصاص داده شده اند نشان داده میشوند . signal – no شماره سیگنالی است که برای process ارسال میگردد لیست سیگنال های عمومی بشرح زیر میباشد :
hup 1 زمانیکه خط تلفن قطع شود ارسال میگردد. hang up ))
2 int هنگام فشار دادن کلید delete یا break ارسال میگردد.
۳ quit هنگام فشار دادن کلیدهایctnl ”/” بطور همزمان ارسال میگردد (interupt)
9 kill مطمئن ترین راه برای خاتمه دادن به یک process زیرا این سیگنال را نمی

توان دریافت کرد و یا نادیده گرفت .
TERM 15 برای خاتمه دادن به یک process ارسال می گردد . میتوان آن راگرفت ویا اینکه نادیده انگاشت
هنگامیکه به یک process سیگنال شماره۳ ارسال میگردد cone image مربوط c debuger)) استفاده میشود.
اگر در سطر فرمان kill شماره سیگنال را اختصاص ندهید ، اجرای process نامبرده شده خاتمه می یابد .
$ ls – lr / > / dev / null E
830
$ ps
pid tty time command
740 2b 0:07 sh
830 2b 0:00 ls _ lr /
83 1 2b 0:01 ps
$
اکنون سعی کنید با فشار دادن کلید break و یا del به تمام process ها سیگنال وقفه ارسال نمائید و سپس با استفاده از فرمان ps حاصل کار خود را مشاهده نمائید .
$ (interrupt)
$ ( interrupt)
$ ps
pid tty time command
740 2b 0:07 sh
830 2b 0:20 ls_ lr /
832 2b 0:01 ps
$
همانطور که مشاهده میکنید process شماره ۸۳۰ که در زمینه در حال اجراء میباشد همچنان به کار خود ادامه میدهد و سیگنالهای ارسالی در کار آن وقفه ای ایجاد نمی کند . حال با استفاده از فرمان kill این process را خاتمه دهید .
۸۳۰ $ kill
$ps
pid tty time command
740 2b 0:07 sh
834 2b 0:01 ps
$

 

پس از اجرای فرمان process kill . شماره ۸۳۰ که در زمینه در حال انجام بود خاتمه مییابد .
در برخی از سیستمها پس از اجرای فرمان kill پیامی بصورت زیر بر روی صفحه مشاهده میگردد.
$ ۸۳۰ : termnated
و بدین صورت بشما اعلام میدارد که process با شماره مشخصه ۸۳۰ واقعا خاتمه یافته است . گاهی اوقات برنامه ها طوری طراحی شده اند که در مقابل سیگنال خاتمه مصونیت داشته باشند . در این صورت برنامه signal بصورت فوق نمیتواند process را خاتمه دهد . اگر چه شما میتوانید با اختصاص دادن signal _ no سیگنال شماره ۹ را برای process ارسال نمائید . این سیگنال همواره میتواند هر process را که به شما تعلق دارد خاتمه دهد.

$ kill _ 9 pid
در اینصورت pid شماره مشخصه process میباشد و ۹ـ ارسال سیگنال شماره ۹ را نشان میدهد. این روش مطمئن ترین راه برای خاتمه دادن به یک process میباشد .

۴-۷- محافظت یک process از سیگنالهای hangup, quit
فرمان nohup
بطور معمول ، هنگامیکه شما از سیستم unix خارج میشوید ، تمام process هائیکه در زمینه شروع نموده اید خاتمه می یابند . موقعی که شما logoll می نمائید ، kernel سیگنال hang up را برای تمام process هائیکه شما شروع نموده اید ارسال میدارد و آنها بوسیله این signal خاتمه می یابند .
این رفتار سیستم در صورتیکه خط شما بصورت غیر عمدی قطع شده باشد ، مطلوب نمیباشد . مثلا اگر خط تلفن اشتباها قطع شده باشد ، شما انتطار ندارید که process ها خاتمه یابند . در اینمورد ، خوشبختانه سیستم unix راه ساده ای برای ادامه اجرای process های در صحنه و یا در زمینه حتی بعد از اینکه شما logoll نمودید فراهم ساخته است .
و یا در زمینه حتی بعد از اینکه شما logoll نمودید فراهم ساخته است .
فرمان nohup این امکان را فراهم میسازد که اجرای برنامه های شما هنگام logoll ادامه پیدا کند .
فرم کلی فرمان nohup بصورت زیر میباشد .
$ nohup command line
در اینجا command line یک سطر فرمان میباشد ، در اینصورت هنگامیکه

شما logoll نمائید ، برنامه nohup مانع از ارسال سیگنال خاتمه یافتن به command line میشود . فرمان nohup تمام خروجیهای حاصله از command line شامل خروجی استاندارد و خطای استاندارد را در فایلی به نام nohup . out در فهرست راهنمای کنونی ذخیره می کند . اگر اجازه نوشتن به این فایل در فهرست راهنمای کنونی ایجاد نشده باشد ، خروجی ها برای فایلی به همین اسم در فهرست راهنمای خانگی شما ارسال میگردد.
برای تمرین فرمان nohup ، یک فرمان مثلا ls _ lr را با استفاده از nohup در زمینه اجراء نمائید . سپس logoll نموده و پس از چند دقیقه مجددا logon نمائید و فایل nohup . out را مشاهده کنید و بدین وسیله مشاهده میکنید که فرمان صادره با موفقیت انجام شده است .
$ nohup ls _ lr / E
820
sending output to nohup. out
$ ( ^D)
login : user 2
password :
$ cat nohup . out
ممکن است سیستم شما پیام sending output to nohup ! out
را صادر ننماید .

۵ –۷- اجراکردن یک process با اولویت کمتر
فرمان nice
اجرای یک process توسط cpu انجام میشود. قطعاتی از زمان که هنگام اجرای یک process توسط cpu به آن اختصاص داده میشود را time slice مینامند . cpu; یک process را به اندازه یک time slice اجراء میکندو سپس process بعدی را اجراء میکند. اندازه time slice تحت تاثیر اولویتی است که kernel هنگام زمانبندی به هر process نسبت میدهد . به process هائیکه اولویت بیشتری داشته باشند time slice های بزرگتری اختصاص داده میشود .
گاهی از اوقات ممکن است که بخواهید یک برنامه را با اولویت کمتر از معمول اجراء نمائید . بنابراین تقاضای برنامه برای cup کاهش پیدا میکند و به دیگر برنامه ها اندکی بیشتر زمان cpu اختصاص داده میشود .

اگر به یک برنامه اولویت کمتری اختصاص داده شود ، این برنامه نسبت به دیگر برنامه ها کندتر اجراء میشود . برنامه هائی که بیشتر از معمول از منابع سیستم استفاده میکنند بیش از دیگر برنامه ها باعث کند شدن سیستم میگردند. این نوع برنامه ها کاندیداهای مناسبی برای اجرا نمودن با اولویت کمتر میباشند . یک مثال مناسب ا زاین قبیل برنامه ها برنامه nroll ، برنامه قالب دهنده متن سیستم unix میباشد . برنامه ای که با اولویت کمتری اجرا میشود مدت زمان بیشتری طول خواهد کشید تا خاتمه یابد زیرا برنامه هائیکه اولویت کمتری دارند هنگام اجرا شدن قطعات کوچکتری از زمان cpu به آنها اختصاص داده میشود .
فرمان nice این امکان را در اختیار شما قرار میدهد که اولویت یک process را کاهش دهید . سطر فرمان nice بصورت زیر میباشد .
$ nice ( – increment) command line
در اینجا command line یک سطر فرمان shell میباشد . اگر از آرگومان – increment (که محدوده آن ۱ الی ۱۹ میباشد ) استفاده نمائید آنگاه به مقدار nice فرضی process که عدد ۲۰ میباشد اضافه میشود ، در اینصورت کمیت nice افزایش مییابد و باعث میشود که اولویت زمانبندی process کاهش یافته و در نتیجه قطعات زمانی (time slic )spu که قرار است به process اختصاص داده شوند کاهش یابند .
اگر – increment اختصاص داده نشود مقدار قراردادی ۱۰ مورد استفاده قرار میگیرد بنا براین عدد nice بدست آمده برای process عدد ۳۰ خواهد بود .
استفاده کنندگان معمولی تنها میتوانند اولویت process های خود را کاهش دهند اما superusen ( کسی که با اسم استفاده کننده root از سیستم استفاده میکند ) قادر است اولویت برنامه های خود را افزایش دهد. برای این منظور باید مقدار increment را به صورت یک عدد منفی وارد نماید .

این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید
word قابل ویرایش - قیمت 8700 تومان در 39 صفحه
87,000 ریال – خرید و دانلود
سایر مقالات موجود در این موضوع
دیدگاه خود را مطرح فرمایید . وظیفه ماست که به سوالات شما پاسخ دهیم

پاسخ دیدگاه شما ایمیل خواهد شد