دسترسی مستقیم به مموری آموزش و یادگیری دسترسی مستقیم به مموری به صورت رایگان
DMA مکانیزمی هستش که به دستگاه های I/O این اجازه رو میده که بدون نیاز به دخالت CPU بتونن با مموری (RAM) در ارتباط باشن!
بزارید یا یه مثال ساده براتون توضیح بدم :)
فرض کنید شما یه انبار (RAM) ، یه مدیر انبار (CPU) و یه کامیون به همراه بارش دارید (Storage Device + 5GB). فرض میگیرم این ۵ گیگ دیتا میشه ۱۰۰۰ تا جعبه!
در حالت معمولی مدیر انبار باید بیاد دونه دونه جعبه ها رو از کامیون برداره و ببره بذاره تو انبار ! وقتی دیتا حجیم باشه تعداد جعبه ها هم افزایش پیدا میکنه و در نتیجه مدیر انبار کار دیگه ای نمیتونه انجام بده. 📦
اینجا CPU میاد و یه کارگر (DMA) استخدام میکنه و بهش میگه “جعبه ها رو از کامیون بردار، ببر بذار تو انبار!” و خودش میره به بقیه کار ها رسیدگی میکنه. هر وقت کار DMA تموم شد میاد و میگه: “رئیس کار انجام شد!🖐️” این همون interrupt خودمونه که بعد از اتمام کار از طرف DMA صادر میشه!
یکم بیشتر بدونید
پردازنده وقتی میخواد به DMA درخواست بده اطلاعات زیر رو بهش میده:
- اینکه آیا درخواست مربوط به read-write هستش یا نه.
- آدرس ماژول I/O که قراره باهاش کار کنه (بسته به سناریو میتونه مبدا یا مقصد باشه)
- آدرس شروع دیتایی که باید تو RAM بنویسه یا بخونه (بسته به سناریو میتونه مبدا یا مقصد باشه)
- مقدار (تعداد Word ها) دیتایی که قراره جا به جا شه(خونده یا نوشته شه)
پس به طور خیلی خلاصه DMA یه ارتباط مستقیم بین مبدا انتقال و مقصد برقرار میکنه و جا به جایی رو انجام میده بدون نیاز به دخالت CPU :)
