خانه / مطالب آموزشی / روش DMA برای انجام عملیات(I/O)

روش DMA برای انجام عملیات(I/O)

این روش برای انتقال داده حجیم به کار گرفته می شود و به ازای انتقال هر بلوک اطلاعات یک وقفه صادر می شود. بنابراین نسبت به I/O ناهمگام تعداد وقفه ها کاهش بسزایی دارد. در این روش برای انتقال داده از میانگیر (فضایی از حافظه) استفاده می شود. پردازنده، نوع دستگاه، طول میانگیر، تعداد کلماتی که باید خوانده یا نوشته شود و آدرس دستگاه I/O را ارسال نموده و کنترل کننده DMA را فعال می نماید. حال پردازنده میتواند به سایر فعالیت های خود بپردازد. زمانی که انتقال یک بلوک اطلاعات به پایان برسد، کنترل کتتده DMA وقفه ای را صادر می نماید. بنابراین بدون دخالت CPU بلوکی از داده ها به میانگیر انتقال می یابد.

در این انتقال داده ها زمانی که کنترل کننده DMA در حال انجام عملیات انتقال داده می باشد از گذرگاه داده استفاده می نماید، در صورتی که CPU نیز بخواهد از این گذرگاه استفاده نماید، کنترل کننده DMA عملیات CPU را موقتا به تاخیر می اندازد. که اصطلاحا گفته می شود کنترل کننده DMA چرخه های حافظه را از CPU می دزدد.به این عمل Cycle Stealing گفته می شود. در این حالت CPU به اندازه یک چرخه گذرگاه باید منتظر بماند تا کنترل کننده DMA یک کلمه را منتقل نماید و کنترل را به CPU بازگرداند.

در صورتی که داده مستقیما توسط کاربر یا هر دستگاه ورودی کند به یک دستگاه I/O وارد شود زمان زیادی تلف می شود. برای جلوگیری از این اتلاف وقت از یک میانگیر حافظه به نام Buffer استفاده می شود. به این صورت که داده به بافر منتقل می شود و در موقع مناسبی از بافر به دستگاه ورودی/خروجی منتقل می شود و بالعکس داده از دستگاه ورودی/ خروجی به بافر منتقل شود، سپس بافر به دستگاه خروجی مناسب انتقال می یابد.

در صورتی که تنها یک بافر در سیستم باشد(سیستم تک میانگیر باشد) با کامل شدن انتقال بلاک داده درون بافر، بافر به دستگاه خروجی منتقل می شود سپس انتقال بلوک دیگری آغاز می شود. اما در صورتی که سیستم دو بافر داشته باشد(سیستم دو میانگیر) در حالی که سیستم در حال انتقال اطلاعات به یک فرد باشد بافر دیگر در حال خالی کردن بافر دیگر به خروجی می باشد و بالعکس. استفاده از بافر در از بین بردن اختلاف سرعت بین پردازنده و دستگاه های ورودی/خروجی مناسب می باشد.

دسترسی مستقیم حافظه (DMA)

دستگاه‌های کندی مانند کیبوردها پس از انتقال هر بایت، وقفه‌ای در CPU اصلی ایجاد می‌کنند. اگر یک دستگاه سریع مانند دیسک بخواهد برای هر بایت یک وقفه ایجاد کند، سیستم عامل باید اغلب زمان خود را صرف مدیریت این وقفه‌ها بکند. بنابراین یک رایانه به طور معمول از سخت‌افزار دسترسی مستقیم حافظه (DMA) برای کاهش سربار استفاده می‌کند.

دسترسی مستقیم حافظه (DMA) بدین معنی است که CPU به ماژول ورودی/خروجی بدون درگیر شدن، مجوز خواندن و نوشتن حافظه را اعطا می‌کند. ماژول DMA خودش مبادله داده‌ها بین حافظه اصلی و دستگاه I/O را کنترل می‌کند. CPU تنها در آغاز و انتهای انتقال درگیر می‌شود و تنها پس از این که کل بلوک انتقال یافت، وقفه‌ای ایجاد می‌شود.

دسترسی مستقیم حافظه به سخت‌افزار خاصی که کنترلر DMA یا DMAC نامیده می‌شود نیاز دارد تا انتقال داده‌ها و خصوصیات و دسترسی به باس سیستم را مدیریت کند. کنترلرها به وسیله اشاره‌گرهای مبدأ و مقصد (این که داده‌ها را کجا باید بخوانند/بنویسند)، شمارنده‌هایی برای ردگیری تعداد بایت‌های ارسالی، و تنظیمات که شامل انواع I/O و حافظه، وقفه‌ها و وضعیت‌های چرخه‌های CPU است، برنامه‌ریزی شده‌اند.

روش های بافر کردن عبارتند از:

  • سیستم بافر کننده دوبل:

در این روش سرعت پردازنده با سرعت کندترین دستگاه هماهنگ می شود و در نتیجه بهتر است این روش در مورد دستگاه های کند بکار رود. روش کار این سیستم مانند سیستم با دو بافر می باشد یعنی هنگامی که یک بافر در حال پرشدن می باشد بافر دیگر در حال خالی شدن می باشد. این روش برای کارهای I/O Limited بسیار مفید می باشد اما در مورد کارهای CPU Limited کاربرد چندانی ندارد.

  • سیستم بافر چرخه ای:

در این روش حداقل اندازه بافر 80کاراکتر معادل یک خط میباشد در صورتی عمل خواندن از بافر اغاز می شود که حداقل یک خط از بافر پر شده باشد. اگر اندازه بافر از یک خط بیشتر باشد شروع هر خط با علامت (New Line) مشخص میشود. کاراکتر ها توسط پردازنده در یک سر بافر قرار می گیرند که اشاره گر به این سر بافر را BUFPTR و سر خواندن توسط اشاره گر USERPTR مشخص میشود. هر کدام از نشانه گر ها که به انتهای بافر برسند کار خود را می توانند از ابتدا مجددا اغاز نمایند.

اشاره گرBUFLIN ادرس اخرین کاراکترNL وارد شده در بافر را نگه داری می نماید. اشاره گرUSERPTR حق عبور از این علامت را ندارد.بنابر این همیشه برنامه قادر به خواندن دوباره خط جاری خواهد بود. در صورتی که اطلاعات اشتباهی وارد بافر شده باشد تنها تا جایی که توسط پردازنده پردازش نشده باشد قابل اصلاح می باشد.

درباره‌ی ادمین سایت

همچنین ببینید

انواع شبکه ها و مقایسه بین آن ها

تنوع این اسم‌ها ممکن است کمی گیج‌کننده به نظر بیاید، اما وقتی با مفاهیم پشت …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *