عملیات ورودی/خروجی (I/O) و مدیریت دستگاهها
سیستم عامل مسئول مدیریت و هماهنگی تمام دستگاههای ورودی/خروجی (I/O) متصل به کامپیوتر، از جمله هارد دیسکها، صفحه کلید، ماوس، نمایشگر و ... است. این بخش به بررسی عملیات I/O و نحوه مدیریت دستگاهها توسط سیستم عامل میپردازد.
اهداف یادگیری
- آشنایی با مفاهیم ورودی/خروجی و دستگاههای I/O
- درک روشهای مختلف دسترسی به دستگاههای I/O
- شناخت درایورهای دستگاه و نقش آنها در سیستم عامل
- آشنایی با مفاهیم بافرینگ، spooling و وقفهها در I/O
دستگاههای ورودی/خروجی (I/O)
هر دستگاهی که برای ارتباط با کامپیوتر و تبادل اطلاعات با آن استفاده میشود، یک دستگاه I/O محسوب میشود. این دستگاهها میتوانند به دو دسته کلی تقسیم شوند:
- دستگاههای ورودی: اطلاعات را از دنیای خارج دریافت کرده و به کامپیوتر منتقل میکنند. مانند: صفحه کلید، ماوس، اسکنر
- دستگاههای خروجی: اطلاعات را از کامپیوتر دریافت کرده و به دنیای خارج منتقل میکنند. مانند: نمایشگر، چاپگر، بلندگو
برخی از دستگاهها مانند هارد دیسکها و درایوهای CD/DVD میتوانند هم به عنوان دستگاه ورودی و هم خروجی عمل کنند.
روشهای دسترسی به دستگاههای I/O
سیستم عامل میتواند از روشهای مختلفی برای دسترسی به دستگاههای I/O استفاده کند:
- I/O برنامهریزی شده (Programmed I/O): در این روش، CPU به طور مستقیم به دستگاه I/O دسترسی پیدا میکند و منتظر اتمام عملیات I/O میماند. این روش ساده است اما CPU را درگیر عملیات I/O میکند و کارایی سیستم را کاهش میدهد.
- I/O مبتنی بر وقفه (Interrupt-driven I/O): در این روش، CPU درخواست I/O را به دستگاه ارسال میکند و به کار خود ادامه میدهد. دستگاه پس از اتمام عملیات، یک وقفه (interrupt) به CPU ارسال میکند و CPU به درخواست I/O رسیدگی میکند. این روش کارایی سیستم را نسبت به I/O برنامهریزی شده افزایش میدهد.
- دسترسی مستقیم به حافظه (Direct Memory Access - DMA): در این روش، یک کنترلر DMA به طور مستقیم به حافظه دسترسی پیدا میکند و عملیات I/O را بدون دخالت CPU انجام میدهد. این روش کارایی سیستم را به طور قابل توجهی افزایش میدهد.
درایورهای دستگاه
درایور دستگاه (Device Driver) یک برنامه نرمافزاری است که به عنوان واسط بین سیستم عامل و دستگاه I/O عمل میکند. درایور دستگاه دستورات سیستم عامل را به دستوراتی تبدیل میکند که دستگاه I/O میتواند آنها را درک کند.
بافرینگ، Spooling و وقفهها در I/O
- بافرینگ (Buffering): استفاده از یک ناحیه حافظه به نام بافر برای ذخیره موقت دادهها در حین عملیات I/O است. بافرینگ به هماهنگسازی سرعت متفاوت دستگاههای I/O و CPU کمک میکند.
- Spooling: روشی برای ذخیره موقت دادههای خروجی (مانند فایلهای چاپی) روی دیسک است تا زمانی که دستگاه خروجی (مانند چاپگر) آماده دریافت آنها باشد. این روش به CPU اجازه میدهد تا بدون نیاز به انتظار برای اتمام عملیات I/O به کار خود ادامه دهد.
- وقفهها (Interrupts): سیگنالهایی هستند که توسط دستگاههای I/O به CPU ارسال میشوند تا CPU را از وقوع یک رویداد خاص مانند اتمام عملیات I/O یا بروز خطا مطلع کنند.
نکات کلیدی
- مدیریت I/O یکی از وظایف اساسی سیستم عامل است.
- روشهای مختلفی برای دسترسی به دستگاههای I/O وجود دارد که هر کدام مزایا و معایب خود را دارند.
- درایورهای دستگاه نقش مهمی در ارتباط بین سیستم عامل و دستگاههای I/O دارند.
- بافرینگ، spooling و وقفهها به بهبود کارایی و هماهنگی عملیات I/O کمک میکنند.
نکات کاربردی و مشاورهای
- برای نصب و پیکربندی صحیح دستگاههای I/O، از درایورهای مناسب و بهروز استفاده کنید.
- برای عیبیابی مشکلات I/O، از ابزارهای عیبیابی سیستم عامل و مستندات دستگاه استفاده کنید.
- برای بهبود کارایی I/O، از تکنیکهایی مانند بافرینگ و DMA استفاده کنید.
منابع و ارجاعات
- ویکیپدیا: ورودی/خروجی
- Silberschatz, A., Galvin, P. B., & Gagne, G. (2018). Operating system concepts (10th ed.). Wiley.
- Tutorialspoint: I/O Hardware