بخشی از مقاله

مدیريت cpu و پردازشگر


Process : به task گفته مي شود و در واقع حالتي از اجرا برنامه است.
يك job موقعي كه دارد سيستم مي شودتوسط سيستم عامل به يك سري process تقسيم مي شود ممكن است كه program تبديل به يك process شود. هر يك از عمليات هايي كه بايد برنامه يا كامپوتر انجام دهد يك process است.


اين پروسس كار هايي براي cpu يا process هستند. اتفاقي كه مي افتند به اين صورت است.

Ready state مرحله اي است كه process ها به آن وارد مي شوند و در آنجا منتظرند تا از cpu استفاده كننده ولي اگر cpu (process) مشغول باشد به اين حالت run state مي گويند. ( برنامه در حال اجرا است ) در حالي كه در اين سيستم نيستيم cpu نگاه مي كند كه كسي منتظر اجراي برنامه است كه در اينجا ready Queue داريم و cpu در آن نگاه ميكند و نفر بعدي وارد cpu مي وشد كه يك روتين را صدا مي كند به نام dispatcher كه كارش اين است كه process فعلي از آن رهايي پيدا كندو ببيند نفر بعد رد queue كيست و cpu را به آن اختصاص دهد.
وقتي در حالت Run state است چه اتفاق مي افتد.


1) process كه درحال استفاده از cpu است ناگهاننياز به I/o پيدا مي كند ( مثلا page fault اتفاق ميافتد )
در اين فاصله پاسخ گويي به I/o آن process به كمك state ديگر به آن (block) wait state مي گويند مي فرستيم.
Static :
entry time priority Burst time job

3 10 1
2 1 1 2
4 3 2 3
5 4 1 4
6 2 5 5

فرض بر اين است كه priority ازنوع preemptive است.
در زمان صفر j1 موجود است. در زمان 2 ، j2 وارد مي شود كه اولويت آن بيشتراست ازj1 پس j1 به اندزه 2Ns از cpu استفاده كرده و j2 پس از آن از 3
در زمان فقط 3 j1 است كه در سيستم است زيرا j3 در زمان 4 وارد مي وشد.


پس j1 دوباره در cpu قرارميگيرد و در زمان 4، j3 , وارد مي شود و چون اولويت آن با j1 يكسان است پس j1 به كارش ادامه مي دهد. در زمان 5، j4 وارد مي شود كه اولويت آن كمتر است در زمان 6، J5 مي آيد كه اولويت ان بيشتر از j1 است. پس j5 درcpu قرار ميگيرد تا زمان 11 كه كارش تمام مي وشد حال j1 و J2 مي ماند j1 به اندازه نانو ثانيه كار دارد. ولي j3 تا j2 نانو ثانيه وقت مي خواهد پس j3 در cpu قرار مي گيرد و بعد در cpu قرار ميگيرد.
؟؟؟؟؟؟؟؟؟؟؟


Round robin scheduling:
در اين روش process هايي كه منتظر cpu هستند د يك صف قرار مي گيرند و انكه اول امده از process از cpu استفاده مي كند اما زمان مشخصي را مي گذارند كه اگر يك process از آز آن زمان بيشتري داشته باشد مجدداً به صف بر مي گردد ( time slice ) يا ( quantum slice ) اين روش براي سيسنژتم هاي time sharing مناسب است.


زيرا نياز است كه در زمان اجرا process قابل پيش بيني باشد و هر process به انداز بقيه از cpu استفاده كند.
اين روش يك روش منصفانه ايست.

اين روش نمي واند تشخيص دهد كه نوع job چه است I/o bound است يا cpu bound است معمولاً مي خواهيم I/o bound اولويت داشته باشد زيرا مي خواهيم هرچه يك process نياز با زمان بيشتري داشته باشد اولويت آن كمتر باشد و يا اولويت را به job هايي بدهد كه اصلاً از cpu استفاده نكرده يا كمتر استفاده كرده در زماني كه I/o مشغول است cpu job هاي ديگر را پردازش ميكند . پس از روشي به نام multi level que .shc استفاده مي ند.

Multi level scheduling:
هدف اين است كه به job هايي كه نياز كمتري به cpu دارد ارجعيت بدهد.
- براي job هاي كوچك منصفانه است.
- به سرعتمشخص مي وشد كه يك job چيست؟
- Job هاي I/o bound اطلاعات خوبي از وسابلI/o م يگيرند.

هر ؟؟؟؟؟ يك Quantum size خودش را دارد. Process وارد feuel1 مي شود. 1ns از cpu استفاده كنند.ممكن است قبل از اينكه 1ns تمام شود تمام كنند . بروند بيرون يا اينكه در خواست I/o كنند و داخل Bock state شوند ولي اگر بيشتراز 1ns باشد به صف بعدي ميفرستد اگر در صف 1 چيزي نباشد به سراغ level بعدي ميرود.


level آخر round robin است و در همانجامي چرخد تا تمامشود در اينجا4Q را بالا مي بريم ولي به محض اينكه process جديد آمد به level اول مي رود.
ممكن است يك job در اول I/p bound باشد و بعد cpu bound شود. مشكلي نيست ولي اگر يك job اول cpu bound باشد و بعد I/O bound شود مشكلي ايجاد ميكند.در اين حالت هر موقع در هر level يك شماره داريم كه ببينيم كه كدام process خودش مي گويد من cpu نمي خواهم (داوطلبانه چك كند) اگر اين شماره زياد باشد يعني تغيير ماهيت داده پس آن رابه level بالاترمي بردبتدريج اين process ها بهlevel بالا مي روند.


اگر يك process به block state رفت و حال كه كارش تمام شد مي خواهد به صف ready برود كه به cpu برود. از كجا بدانيم كه در كدامlevel يا صف برود واين مشكل است. دراين حالت ميگويد در process control ذكر مي كينم كه در كدام صف بوده كه در هنگام برگشت بداند به كدام صف برود.


Multi processing scheduling:
دراين سيستم بيشتر يك cpu موجود است
هدف: افزايش throughput وكاهش turned Around time دو روش وجود دارد
1) سيستم هاي چند پردازنده مستقل از هم:


- سيستم ها به هم مربوطند ولي هر cpu حافظه ها و سيستم عامل خاص خود را دارند.
- اطلاعاتي كه باهم رد و بدل نمي كنند و بيشتر براي اشكالات احتمالي كه در يك سيستم وجود دارد استفاده گردد.يعني اگر چه سيستم خراب شد.سيستم ديگر جانشينانخواهد شد.

2) سيستمهاي چند پردازنده مربوط به هم
هر پردازش گر سيستم عامل مربوط به خودرا دارد و هر كدامdevice هاي خودشان را دارند.ولي با هم درارتباطند مثلاً مي خواهيم اطلاعات از يك سيستم به سيستم ديگر انتقال نمايند.
O.s ها ميتواندد يكي باشد وشبيه هم باشند وياكاملا متفاوت باشند.
دو سيستم مجزا مي توانند با هم ارتباط برقرار كنند.


مثلاً ممكن است سيستم اول عمليات گرافيكي انامدهد وسيستم دوم عمليات ديگري انجامدهد سيستم اول بايد پروزه هاي مربوط به خود را انجام دهد نمي تواند ادامه برنامه را به سيستم دوم محول مند بايد خود اجرا نمايد.


3) سيستم هاي چند پردازنده – tightly coupled
دراين جابيش از يك cpu داريم. ولي تمام cpu ها يك o.s استفاده ميكنند.

Cpu ها مي توانند از طريق فرستادن پيغام به o.s ارتباط داشته باشند.اطلاعات رابه mail box مي فرستند كه يك كاري رابه cpu ديگر انجام دهد. پس باهم از طريق فرستادن پيغام ارتباط بر قرار مي كنند.

Mail box: محلي است كه وقتي يك cpu ها كارش تمامميشود نگاه مي كند ببيند چه پيغامي دران است و چه كاري بايد انجام شود.

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید