وقفه ها در سیستم های عامل

وقفه ها در سیستم های عامل

توسط admin | گروه مقاله های کامپیوتر | 1399/03/15

نظرات 0

مدیریت وقفه ها در سیستمهای عامل کامپیوتری

وقتي پردازشي پردازش جديدي را ايجاد مي كند در مورد اجراء دو امكان وجود دارد. يا پردازش والد به اجراي همروند با فرزندش ادامه مي دهد و يا پردازش والد منتظر مي ماند تا اجراي تعدادي يا تمام فرزندانش تمام شود.

در يونيكس هر پردازش با شناسه پردازش(PID=Process Identifier) كه يك عدد صحيح يگانه است شناسايي مي شود. يك پردازش جديد شامل يك كپي از فضاي آدرس پردازش والد است و اين مكانيزم اجازه مي دهد پردازش والد با پردازش فرزندش به سادگي ارتباط داشته باشد.
در اكثر سيستم عاملها(مثل UNIX) هنگامي كه والدي تمام مي شود كليه فرزندانش نيز توسط سيستم عامل خاتمه داده مي شوند. در اين حال تمام شدن پردازشها مي تواند به دو صورت باشد:
يا اينكه در ابتدا پردازشهاي فرزند ختم شوند و سپس پردازش پدر، كه به اين روش ختم پي در پي يا Cascaded Termination گويند، يا اينكه ابتدا پردازش پدر تمام شده و سپس پردازش هاي فرزند ختم شوند.
تذكر: پردازش ها به طور كلي دو دسته هستند. 1- پردازش هاي مربوط به كاربر
2- پردازش هاي مربوط به سيستم. به عبارتي ديگر زماني كه CPU مي خواند يك دستور را اجراء كند در دو حالت مي تواند قرار گيرد. 1- مد كاربر كه دستورات معمولي اجراء مي شوند. 2- مد سوپروايزر كه مي تواند تمام دستورات را اجراء كند. پردازش هاي سيستم در مد سوپروايزر اجرا مي گردند.
زمانبند كار(Job Scheduler)
زمابندي كار يا Job Scheduler روتيني است كه براساس الگوريتمي خاص يكي از كارهاي موجود در جدول ISPT(Input Spool Table) را انتخاب كرده و جهت اجراء شدن آن را به حافظه مي آورد. يك Job هنگامي تبديل به پردازش مي شود كه تمامي منابع مورد نياز( از جمله حافظه) را در اختيار داشته باشد.
هنگامي كه كارها در جدول ISPT منتظر اجرا شدن هستند اصطلاحا Hold شده اند و هنگامي كه توسط زمانبند كار جهت اجرا انتخاب مي شوند اصطلاحا به حالت Ready مي روند.
الگوريتم هاي زمانبندي كار يا به عبارت ديگر روشهاي انتخاب Job عبارتند از:
1- روش FIFO: در اين الگوريتم كه از اسم آن مشخص است(First In First Out) اولين كاري كه وارد ISPT شده انتخاب گرديده و تبديل به پردازش(process) مي گردد.
2- روش SJF(Shortest Job First): در اين الگوريتم كوتاه ترين كاري كه در جدول ISPT وجود دارد پيدا شده و جهت اجرا انتخاب مي گردد.
3- روش Mixed: در اين الگوريتم تركيبي از كارهاي CPU Limited و I/O Limited جهت اجرا انتخاب مي گردند.
حالات يك پردازش
يك پروسس مطابق شكل زير در زمان حيات خود مي تواند در يكي از سه وضعيت اجراء(Running)، آماده(Ready) و بسته(Blocked) قرار گيرد.
هنگامي كه دستور اجراء پردازشي صادر مي گردد و يا Job scheduler كاري را جهت اجرا از جدول ISPT انتخاب مي كند، اين پردازش به صف آماده وارد شده و منتظر CPU مي ماند. انتقال 2و3 توسط زمانبند پردازش(process scheduler) كه بخشي از سيستم عامل است انجام مي شود، بدون اينكه خود پروسس از آن اطلاعي داشته باشد. در انتقال CPU,3 به پروسس داده مي شود تا اجراء گردد. انتقال 2 زماني صورت مي گيرد كه برش زماني پردازش تمام شده و CPU بايد از او گرفته شود، لذا پروسس از حالت Running(اجرا) به حالت Ready(آماده) مي رود. در حالت Ready پردازش تمام منابع مورد نياز را به جز CPU در اختيار دارد. زمانبندي يعني اينكه در كدام زمان چه پردازشي جهت اجرا انتخاب گردد.
هنگامي كه لازم باشد پردازش در حال اجرا براي بروز رخدادي(مثل تكميل انتقال اطلاعات در دستورات I/O) صبر كند آنگاه از طريق انتقال 1 از حالت Running به حالت Blocked(مسدود بسته) مي رود. پس از رفع علت انتظار(مثلا وقفه اي اعلام مي كند كه انتقال پايان يافته) پردازش از طريق انتقال 4 به حالت آماده رفته و در صف انتظار CPU قرار مي گيرد. گاهي اوقات به حالت Blocked، حالت Wait نيز مي گويند.
اين مدل پروسس، درك مسائل درون سيستم را ساده مي كند. بعضي از پردازشها برنامه هاي كاربران را اجرا مي كنند و برخي ديگر بخشي از خود سيستم عامل هستند. مثلا هنگامي كه يك وقفه در رابطه با ديسك رخ مي دهد، سيستم عامل تصميم مي گيرد كه پردازش در حال اجراء را قطع كرده و پروسس ديسك را اجرا كند. اين پروسس قبلا جهت انتظار براي وقوع همين وقفه، بلوكه بوده است. بنابراين به جاي پرداختن به وقفه ها، به مسائلي مثل پروسس هاي كاربران، پروسس ديسك، پروسس ترمينال و غيره مي انديشيم كه در حقيقت بلوكه شده اند تا يك اتفاق خارجي رخ دهد.
تذكر: در شكل حالات يك پردازش، گاهي اوقات به جاي اصطلاح new از كلمه Hold استفاده مي شود. بنابراين Job ي كه در حالت Hold است يعني در جدول ISPT روي ديسك قرار دارد و هنوز به پردازش تبديل نشده است.
حالت معلق(Suspend)
بسياري از سيستم عاملها با سه حالت Blocked, Running, Ready پياده سازي شده اند ولي اضافه كردن حالت معلق نيز در بسياري موارد مناسب است. در سيستم قبلي چند فرايند در حافظه نگهداري مي شوند مي شوند و هنگامي كه فرايندي منتظر است، CPU مي تواند به سراغ فرآيند ديگري برود. اما غالبا CPU آنقدر سريع است كه ممكن است تمام پردازش ها منتظر عمل I/O باشند. بنابراين حتي در سيستم چند برنامه اي نيز، CPU مي تواند غالبا بي كار باشد.
براي رفع اين مشكل مي توان از تكنيك مبادله استفاده كرد، يعني تمام يا بخشي از يك فرايند را از حافظه اصلي به ديسك منتقل ساخت. هنگامي كه هيچ يك از پردازش هاي موجود در حافظه اصلي در حالت آماده نيستند، در اينحال سيستم عامل مي تواند يكي از پردازش هاي مسدود را از حافظه اصلي خارج كرده و به صف فرآيندهاي معلق روي ديسك ببرد(مبادله كند). وقتي سيستم عامل عمل مبادله به خارج را انجام داد، براي آوردن فرآيند بعدي به حافظه اصلي دو انتخاب دارد. يا مي تواند فرايندي كه به تازگي ايجاد شده است را بپذيرد يا فرآيندي كه قبلا معلق بوده را بياورد.
با توجه به توضيحات فوق حالات يك پردازش را مي توان به صورت زير ترسيم كرد: (كتاب استالينگ)
در اينجا دو مفهوم وجود دارد:
الف) فرآيند منتظر حادثه اي هست يا خير(مسدود است يا خير)
ب) فرآيند از حافظه اصلي بيرون برده شده است يا خير(معلق است يا خير)
بنابراين در يك مبحث كاملتر بايد گفت چهار حالت زير امكان پذير مي باشد:
1- آماده(Ready): فرآيند در حافظه اصلي بوده و براي اجراء آماده است.
2- مسدود(Wait يا Blocked): فرآيند در حافظه اصلي بوده و منتظر بروز حادثه اي است.
3- مسدود و معلق(Suspend wait): فرآيند در حافظه ثانويه بوده و منتظر بروز حادثه اي است. اگر تعداد فرايندهاي مسدود شده در حافظه زياد گردد ممكن است حافظه كم بيايد. در اين وضعيت سيستم عامل مي تواند بعضي از فرآيندهاي منتظر را از حافظه به ديسك ببرد و بدين ترتيب اين حالت مسدود و معلق پديد مي آيد.
4- آماده و معلق(Suspend Ready): فرآيند مورد نظر در حافظه ثانويه بوده و به محض بار شدن در حافظه اصلي آماده اجراء است. اگر در حالت Ready، پردازش آماده باشد ولي حافظه نداشته باشيم به اين حالت مي رود.
با در نظر گرفتن حالات فوق، نمودار حالات يك پردازش را به صورت كامل زير مي توان ترسيم كرد:
خط چين ها در شكل فوق نمايانگر آن است كه تغيير حالت ممكن است ولي لازم نيست.
تذكر 1: به طور كلي مي توان گفت هر پردازش سه مرحله ايجاد، گذراندن چرخه حالات و خاتمه را دارد و بخشي از سيستم عامل به نام«مدير پردازش» سه مرحله ذكر شده را مديريت مي كند.
تذكر 2: بعضي از كتابها حالتي را به نام«كامل» معرفي كرده اند و منظور آنها هنگامي است كه پردازش كارش تمام شده ولي هنوز از ليست پردازش هاي سيستم خارج نشده است.
بلوك كنترل پردازش(PCB)
همانطور كه قبلا گفتيم برنامه در حال اجراست. به بياني ديگر پردازش ها فعاليتهايي با سرعت متفاوت بوده و وظيفه اصلي آنها اجرا كردن يك برنامه است. ولي از ديد سيستم عامل مي توان گفت پردازش يكسري ساختمان داده است. هر پردازش در سيستم عامل توسط يك ساختمان داده به نام بلوك كنترل پردازش يا PCB(Process Control Block) نشان داده مي شود. PCB شامل اطلاعات زيادي در مورد يك پردازش است. اين اطلاعات مثلا هنگاميكه پروسس از«حالت اجرا» به حالت«آماده» مي رود لازم است ذخيره شود كه اگر دوباره پروسس خواست به حالت اجرا برگردد از همان نقطه اي كه قطع شده بود، به درستي ادامه يابد. اين اطلاعات عبارتند از:
- حالت جاري پردازش: كه مي تواند، آماده، اجراء يا بسته باشد.
- شماره شناسايي پردازش(PID)
- شمارنده برنامه: (Program Counter= PC) كه آدرس دستورالعمل بعدي قابل اجراي پردازش را نشان مي دهد.
- محل حفظ ثباتها: هنگام وقوع وقفه يا سوئيچ كردن بين پردازشها ثباتهاي پردازش جاري مي بايست در PCB مربوطه ذخيره شوند تا بعدا دوباره بازيابي شوند.
- اطلاعات زمانبندي CPU: مثل اولويت پردازش، اشاره گرها به صف هاي زمانبندي و غيره.
- اطلاعات مديريت حافظه: مثل محل قرار گيري پردزاش در حافظه و مسائل حفاظتي آن.
- نشاني محل برنامه پردازش
- اطلاعات وضعيت I/O: شامل ليستي از وسايل I/O تخصيص يافته به پردازش، ليست فايلهاي باز شده براي پردازش و غيره. به عبارت ديگر نشاني ساير منابع پردازش.
- اطلاعات حسابرسي: مثل ميزان زمان CPU مصرف شده براي پردازش، شماره حساب، شماره پردازش و غيره.
وقتيكه سيستم عامل CPU را به پردازش ديگر مي دهد با استفاده از PCB تمام اطلاعاتي كه جهت راه اندازي مجدد پردازش قبل لازم دارد را حفظ مي كند. به اين عمليات تعويض متن Context Switch گويند. تعويض متن بوسيله بخشي از سيستم عامل به نام Dispatcher انجام مي پذيرد. از آنجا كه سيستم عامل خيلي با PCB سر و كار دارد، در بسياري از كامپيوترها ثباتي سخت افزاري وجود دارد كه هميشه به PCB پردازش در حال اجرا اشاره مي كند. دستوراتي نيز وجود دارند كه خيلي سريع اطلاعات را در PCB بار مي كنند. عمليات تعويض متن الزاما سربار اضافي(overhead) روي كامپيوتر ايجاد كرده و قدري از وقت CPU را جهت اين كار به هدر مي دهد، البته اين زمان آنقدر زياد نيست كه بر مزيت چندبرنامگي غلبه كند. زمان تعويض متن تابع سخت افزار مي باشد و به طور نمونه اي اين زمان از 1 تا 1000 ميكروثانيه متغير است.
مطالعه ادامه مقاله در فایل WORD DOC   تعداد 259 صفحه ای زیر . لطفا پس از دانلود مقاله ، یک فاتحه رفتگان مرا میهمان نمایید . . . 
 
 

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر