يكي از عملكردهاي بسيار مهم و اصلي
سيستم عامل كنترل و مديريت دستگاههاي ورودي/ خروجي (I/O) در كامپيوتر است. سيستم عامل بايد فرمانهايي را به اين دستگاهها
بفرستد، وقفه ها را بگيرد و خطاها را اداره كند. و همچنين بايد يك رابط بين
دستگاهها و بقيه سيستم به منظور استفاده ساده تر از آنها فراهم نمايد.
اصول سخت افزاري I/O
ديد افراد مختلف نسبت به سخت افزار I/O متفاوت است. مهندسين برق و
الكترونيك آن را بصورت مدارهاي مجتمع، مدار چاپي، منابع تغذيه، موتورها و ديگر
اجزاء فيزيكي تشكيل دهنده سخت افزار مي بينند. برنامه نويسان آن رابه شكل واسطه
ارائه شده به نرم افزار، فرامين مورد قبول سخت افزار، توابع قابل اجرا و خطاهاي
احتمالي و گزارش آنها مي بينند. از يك ديدگاه، دستگاههاي ورودي/ خروجي بطور كلي به
دو دسته تقسيم مي شوند.
1- دستگاههاي بلوكي BLOCK DEVICE
2- دستگاههاي كاركتري CHARACTER DEVICE
يك دستگاه بلوكي وسيله اي است كه
اطلاعات را در يك بلوك با اندازه معين ذخيره مي كند كه هر كدام با آدرس خودشان
مشخص شده اند. حدود اندازه بلوكهاي معمولي از 512 بايت تا 32768 بايت مي باشند
خاصيت اساسي يك دستگاه بلوكي اين است كه خواندن و نوشتن هر بلوك را بطور مستقل از
بقيه ممكن مي سازد ديسكها از متداولترين دستگاههاي بلوكي هستند.
نوع ديگري از دستگاههاي ورودي/ خروجي،
دستگاههاي كاركتري است. يك دستگاه كاركتري يك جريان از كاركترها را بدون توجه به
هيچ ساختار بلوكي، دريافت نموده و يا تحويل مي دهد، بنابراين قابليت آدرس دهي و
جستجو در آن وجود ندارد. چاپگرها، واسطه هاي شبكه، موشواره ها و ديگر دستگاههايي
كه شبيه ديسك نيستند، به عنوان دستگاه كاركتري در نظر گرفته مي شوند. از ديدگاه
ديگر دستگاههاي ورودي/ خروجي به سه طبقه تقسيم مي شوند:
1- قابل خواندن توسط انسان:
مناسب براي ارتباط با كاربر، مانند
پايانه هاي نمايش دهنده تصوير، صفحه كليد و…
2- خواندن توسط ماشين:
مناسب براي ارتباط با وسائل
الكترونيكي، مانند گردانندهاي ديسك و نوار، حس كنندهها، كنترل كننده ها و محركها.
3- ارتباطات:
مناسب براي ارتباط با دستگاههاي دور
مانند، گرداننده هاي ديجيتالي خط و مودمها. تفاوتهاي زيادي در بين هر طبقه وجود
دارد كه مهمترين آنها عبارتند از:
نرخ انتقال، كاربرد، پيچيدگي كنترل،
واحد انتقال، نمايش داده ها، شرايط خطا.
سازمان عمل ورودي/ خروجي
الف) ورودي/ خروجي
برنامه ريزي شده: پردازنده يك فرمان
ورودي/ خروجي را از جانب فرايندي به يك مولفه ورودي/ خروجي صادر مي كند. سپس آن
فرايند قبل از ادامه، تا كامل شدن عمل ورودي/ خروجي به انتظار مي ماند.
ب) ورودي/ خروجي
مبتني بر وقفه: پردازنده يك فرمان ورودي/ خروجي را
از جانب فرايند صادر مي كند، سپس به اجراي
دستورالعملهاي بعدي ادامه مي دهد و با كامل شدن عمل ورودي/ خروجي يا وقفه مولفه
ورودي/ خروجي مواجه مي شود. دستورالعملهاي بعدي مي توانند از همان فرايند باشند
البته به شرطي كه فرايند نيازي به انتظار براي تكميل ورودي/ خروجي نداشته باشد. در
غير اين صورت فرايند در انتار وقفه معلق مي گردد و كار ديگري انجام مي گيرد.
پ) دسترسي مستقيم
به حافظه DMA:
مولفه DMA تبادل داده ها بين حافظه اصلي و مولفه ورودي/ خروجي را كنترل مي
كند. پردازنده تقاضايي براي انتقال يك بلوك از داده ها را به مولفه DMA مي فرستد و فقط پس از انتقال
كل بلوك مورد وقفه قرار مي گيرد.
تكامل عمل ورودي/ خروجي
مي توان گامهاي تكاملي را بصورت زير
خلاصه نمود:
1- كنترل دستگاه جانبي بطور مستقيم.
2- يك كنترل كننده يا مولفه ورودي/
خروجي افزوده شده است. پردازنده از ورودي/ خروجي برنامه ريزي شده بدون وقفه
استفاده مي كند. با اين گام پردازنده از جزئيات اختصاصي واسط هاي دستگاه خارجي جدا
مي گردد.
3- همان پيكربندي گام دوم، ولي اين
بار از وقفه استفاده شده است. ديگر وقت پردازنده تلف نمي شود.
4- از طريق DMA كنترل مستقيم حافظه به مولفه ورودي/ خروجي داده شده است. حال مي
توان بلوكي از داده را بدون دخالت پردازنده به/ از حافظه انتقال داد.
5- مولفه ورودي/ خروجي تا حد پردازنده
اي مجزا، با مجموعه اي دستورالعملهاي خاصي براي ورودي/ خروجي ارتقاء يافته است.
پردازنده مركزي (CPU)،
پردازنده ورودي/ خروجي را براي اجراي برنامه ورودي/ خروجي از حافظه هدايت مي كند،
پردازنده ورودي/ خروجي اين دستورالعملها را بدون دخالت پردازنده مركزي واكنشي و
اجرا مي كند.
6- مولفه ورودي/ خروجي داراي حافظه
محلي اختصاصي و در واقع به نوبه خود يك كامپيوتر است. با اين معماري، مجموعه بزرگي
از دستگاههاي ورودي/ خروجي با حداقل دخالت پردازنده مركزي مي تواند كنترل شود.
دسترسي مستقيم به حافظه
اساساً مولفه DMA بايد فقط زماني از گذرگاه استفاده كند كه پردازنده به آن نيازي
ندارد، يا بايد پردازنده را وادار كند كه بطور موقت عمليات خود را معلق نمايد. روش
اخير بيشتر معمول است و به آن ربودن چرخه مي گويند. روش DMA به اين صوتر كار مي كند كه، هرگاه پردازنده در صدد خواندن يا
نوشتن بلوكي از داده ها برآيد، فرماني به مولفه DMA مي دهد و از اين طريق اطلاعات زير را به آن مولفه ميفرستد.
- اينكه درخواست خواندن يا نوشتن.
- آدرس دستگاه ورودي/ خروجي درگير.
- آدرس مكان شروع خواندن يا نوشتن در
حافظه.
- تعداد كلماتي كه بايد خوانده يا
نوشته شود.
سپس پردازنده به كارهاي ديگر پرداخته
و عمل ورودي/ خروجي را به مولفه DMA
محول مي كند. مولفه DMA
همه بلوك داده ها را به صورت يك كلمه در هر زمان به طور مستقيم و بدون عبور از
پردازنده به/ از حافظه انتقال مي دهد. هنگاميكه انتقال كامل شده مولفه DMA يك علامت وقفه به پردازنده
ارسال مي كند. بنابراين پردازنده فقط در آغاز و پايان انتقال درگير مي باشد.