بافر در کامپیوتر به چه معنا است
آیا تا به حال با معنا و مفهوم بافر آشنایی داشته اید؟ ما در این مقاله سعی داریم با معنا و مفهوم بافر بیشتر آشنا شویم و آن را شرح دهیم.
بافر در لغت به معنای حائل و یا میانگر می باشد که در علوم مختلف به شکلی متفاوت به مفهوم یک حافظه ی میانجی و یا موقت بکار می رود مثلا در شیمی محلول بافر محلولی است که ph را ثابت نگه می دارد ،بنابراین به کمک این محلول می توان در مراحل مختلف یک فرایند شمیایی ph را ثابت نگه داشته و آن را اندازه گیری نماییم. مدار های بافر نیز در الکترونیک مفهومی نزدیک به این دارند.به این صورت که اطلاعات سیگنال دریافتی را در خود ذخیره نموده و بر حسب نیاز به سیستم بعدی تحویل می دهند. مدار های بافر به طور کلی به دو دسته آنالوگ و دیجیتال تقسیم می شوند.
بافر ناحیه است واسط در عملیات ورودی و خروجی و در این ناحیه اقلا یک رکورد ( در حالت فایل بلاک بندی نشده ) و یا اقلا یک بلاک در حالت فایل بلاک بندی شده جای داده میشود و اساسا برای ایجاد هماهنگی بین عملیات پردازنده ورودی/ خروجی و واحد پردازش مرکزی در شرایطی تسریع این عملیات به کارمیرود.
در سیستم فایل , بافر معمولا از منطقهای از حافظه اصلی به برنامه فایل پرداز تخصیص داده میشود که به آن منطقه بافر میگویند (و گاه از حافظه نهان استفاده میشود.) جنس buffer در واقع RAM هست.
مثلا در writer اطلاعاتی که به writer فرستاده می شود در buffer انباشته می شود و در زمان مناسب write می شود. CD-ROMهم نیز، buffer دارد،معمولأ (۱۲۸ kb).
توضیح مختصری از مفهوم حافظه بافر
- یک سری اطلاعاتی که همیشه لازم است در buffer نگهداری می شود تا مرتبأ خوانده نشه. مثلا در CD-ROM نام و آدرس تمام file ها در buffer نگهداری می شود.
- آخرین اطلاعات خوانده شده در buffer باقی می ماند تا در صورت نیاز، مجدد این اطلاعات خوانده نشود. این مورد برای HDD بسیار مفید است و در سرعت HDD تاثیر دارد.
- یک accumulator است. یعنی مثل یک مخزن عمل می کند. مثلا فرض کنید دارید با سرعت X16 یک CD را write می کنید. مسلمأ در یک همچین شرایطی، computer شما داره اطلاعات لازم رو با سرعت مناسب برای writer می فرسته. حالا فرض کنید در این موقع، برنامه Adobe Photoshop CS رو باز کنید. خوب مسلمأ در اون چند لحظه ای که HDD میره Photoshop رو بخونه دیگه نمی تونه اطلاعات مورد نیاز writer رو تهیه کنه. حالا، اگه writer شما buffer نداشته باشد با کمبود اطلاعات روبرو می شود و CD می سوزه ولی اگه writer شما buffer داشته باشد، در این چند لحظه از اطلاعات درون buffer استفاده می کند و به جای اینکه CD بسوزه، buffer خالی می شه. البته این خاصیت از buffer برای HDD هم به کار می ره ولی در شرایط برعکس، یعنی مثلا computer شما داره با سرعت ۱۰۰ MB/s اطلاعات رو پردازش کند و می خواهد این اطلاعات را روی HDD بنویسه (مثلا فرض کنید دارید به صورت [گروهی[یه دسته عکس رو تغییر format می دین.) ولی سرعت HDD شما ۷۰MB/s است. در اینجا اگه HDD شما buffer نداشته باشد خب computer مجبور می شود که سرعت پردازش را به ۷۰MB/s کاهش بدهد ولی اگه HDD شما buffer داشته باشد، این اختلاف سرعت در buffer ذخیره می شود و بعد از اتمام کار روی HDD نوشته می شود، البته ما buffer های نرم افزاری هم داریم. مثلا NERO و CloneCD برای خودشان یک buffer تعریف کردن که روی HDD نوشته و خوانده می شود، و یا مثلا Winamp چند ثانیه بعدی file را نیز به صورت نرم افزاری buffer می کند تا اگر یک موقع HDD سرش شلوغ شد و چند ثانیه اطلاعات مورد نیاز Winamp را نداد، Winamp از buffer خود استفاده کند و اجازه ندهد که در [پخش[file وقفه ای ایجاد بشود.
تشریح یک مثال
برای مثال انتقال اطلاعات از پردازشگر مرکزی به چاپگر را در نظر بگیرید. CPU قطعهای است که در مقایسه با چاپگر بسیار سریع پردازش میکند و اگر ما بخواهیم اطلاعاتی را از پردازشگر به چاپگر بدون وجود بافر بفرستیم باید در زمان کاری پردازشگر وقفه (نرمافزاری) بیاندازیم تا پس از انتقال یک کاراکتر به چاپگر کاراکتر دیگری به چاپگر فرستاده شود و این به معنای کند شدن کار پردازشگر و در نهایت کند شدن کل سیستم است.
بنابراین بین پردازشگر مرکزی و چاپگر میتوان بافری (چه به صورت سختافزاری و چه به صورت نرمافزاری) قرار داد تا پردازشگر اطلاعات را برای بافر فرستاده و چاپگر سر صبر و حوصله آنها را چاپ نماید و پردازشگر هم پس از فرستادن اطلاعات میتواند به کارهای دیگری برسد.
از طرفی حافظه بافر به صورت نرمافزاری هم وجود دارد که برای ذخیره سازی موفت اطلاعات به کار میرود. این حافظه رزرو بخشی از حافظه اصلی است و چون سختافزاری نیست طول آن میتواند متغیر هم باشد.توجه داشته باشید که حافظه بافر برای انتقال اطلاعات بین دو واحد سختافزاری استفاده میشود و برای انتقال اطلاعات بین واحدهای نرم افزاری از نام بافر استفاده نمیشود.
بافرها به سه روش ساخته میشود.
- با ایجاد ناحیهای از حافظ در برنامه و با اجرای یک ماکرو که محتوای بافر را با فایلهای تحت پردازش مرتبط میکند(در این حالت برنامهساز خود را ایجاد میکند)
- یا اجرای یک ماکرو, که از سیستم در خواست ایجاد بافر میکند.
- خود سیستم عامل وقتی که فایل باز میشود , اقدام به ایجاد (ها) میکند و پس از بسته شدن فایل , بافر(ها) را باز پس میگیرد.
روش موسوم به اسلوب انتقالی
روش موسوم به اسلوب مکان نمایی یا مکان گیری (یا اسلوب تعویض)
در روش اول , رکود از حافظه بافر ورودی به ناحیه کاری برنامه انتقال داده میشو و یا از ناحیه کاری به بافر خروجی عمل بلاک بنید و بلاک گشایی توسط سیستم انجام میشود و برنامه به بافر دستیابی ندارد و بافر خاص خود را دارد .(همان ناحیه کاری کاربر)
در این حالت, یک فرمان کانال برای هریک از بافرها وجود دارد و عملیات ورودی /خروجی نمیتوانند هر دو از یک بافر انجام پذیرد و روشن است که کاربر نیاز به ناحیه کاری خاصی دارد . در روش دوم, سیستم مکان حافظه بافر حاوی رکورد نظر کاربر را به نحوی به برنامه فایل پرداز مینمایاند, مثلاً از طریق گذاشتن آدرس آن در یک ثبات قرار دادی یا در ناحیه ای تعریف شده توسط برنامه در واقع کاربر از همان بافر به عنوان ناحیه کاری استفاده میکند و عمل بلاک بندی و بلاک گشایی را خون برنام انجام میدهد.
توجه داریم که بکارگیری دو اسلوب انتقالی و مکان نمایی , در هر یک از دو عمل ورودی یا خروجی , یا هر دو امکان پذیر است.
- بافر از نظر محل ایجاد
- اهمیت بافر و مدیریت آن
- خالی کردن بافر
انواع بافرینگ
از نظر تعداد بافرهایی که به عملیات ورودی / خروجی برنامه فایل پرداز تخصیص میدیابد , انواع زیر وجود دارد:
- بافرینگ ساده
- بافرینگ مضاعف
- بافرینگ چند گانه
بافرینگ ساده
در این بافرینگ ,یک بافر در اختیار برنامه فایل پرداز قرار داده میشود . در بافرینگ ساده طبعاً زمان انتظار واحد پردازش مرکزی و اجرای برنامه افزایش مییابد در اثنایی که بافر پر میشود , واحد پردازش مرکزی حالت عاطل دارد . در محیط چند برنامهای میتوان از زمان برای برنامههای دیگر استفاده کرد. میبینیم که در این حالت امکان همروندی عملیات CPU و عملیات پردازشگر ورودی/ خروجی وجود ندارد . البته در اسلوب مکان نمایی , در اسلوب انتقالی چون برنامه بافر خاص خود را دارد و در صورتیکه فایل بلاک بنید نشده باشد, این همروندی تا حدی امکان پذیر است . ضمن اینکه این موضع به نوع رسانه نیز بستگی دارد
بافرینگ مضاعف
با دو Buffer , میتوان در اثناء خواندن یک بلاک و انتقال ا، به یک بافر , محتوای بافر دیگر را که پر است , پردازش کرد .
در پردازش فایلها به طور پی در پی و انواع (یعنی تعداد زیادی بلاک خوانده میشوند . ) حتما لازم است دو Buffer در اختیار داشته باشیم , و گر نه عملیات نه سریع خواهد بود و نه کارا. الگوریتم کار
بدیهی است زمانی را که واحد پردازش مرکزی برای پردازش محتوای یک بار, مصرف میکند باید کمتر از زمانی باشد که پردازنده ورودی خروجی و کنترل کننده دیسک برای انتقال بلاک به یک Buffer لازم دارند.
با فرینگ چندگانه
در این نوع بافرینگ بافرها به طور خودکار از پیش پر میشود و در حالی که برنامه فایل پرداز روی محتوای Buffer کار میکند، سیستم بافر دیگری را پر و آماده میسازد
انواع Buffer دیجیتال
سختافزاری:
قطعهای سختافزاری است که در بعضی از وسایل مانند چاپگرها وجود دارد و میتوانیم آنرا زیاد و کم کنیم. و یا در صفحهکلید بافری وجود دارد که تعداد معینی از کلیدهای فشرده شده را حفظ میکند و به ترتیب اجرا میکند.
نرمافزاری:
به صورت نرمافزاری قسمت از حافظه اصلی را به عنوان بافر در نظر میگیرد.
تعیین اندازه بافر
سیستمعامل زمان بارگذاری اندازه Buffer را تعیین میکند. بر با استفاده از دستورات سیستمعاملی اندازه بافر را تعیین میکند.
طریق برنامهنویسی و کنترل آن بوسیله اجرای یک ماکیرو که قسمتی از حافظه را به عنوان Buffer در نظر میگیرد و محتوای بافر را با فایلهای تحت پردازش مرتبط میکند.
نحوه استفاده از بافر
روش انتقالی: انتقال اطلاعات از Buffer به working area و پردازش آن.
روش مکانی: آدرس اطلاعات به پردازشگر داده میشود و از همان Buffer به عنوان محیط کاری استفاده میکند.
میزان بافر
باید آنقدر باشد که اختلاف سرعت را بپوشاند.
آنقدر باشد که working area زیاد محدود نشود چون پردازش کند میشود.
بافرهای نوری (Optical buffer)
امروزه بیشترین پژوهشهای مربوط به Buffer در این زمینه انجام میپذیرد، بافر نوری وسیله ایست که توانایی ذخیرهٔ موقت نور را دارد، این نوع بافر در مخابرههای نوری کاربرد دارد. بحث مورد پژوهش در این زمینه اینست که آیا به کمک این نوع بافرها میتوان سرعت نور را کاهش داد؟
کاربرد مدارهای بافر
مدارهای Buffer بسته به نوع خود کاربردهای متفاوتی دارند:
بافرهای آنالوگ: Buffer ولتاژ زمانی کاربرد دارد که میخواهیم ولتاژ را از مداری با امپدانی خروجی بالا به مداری با امپدانس خروجی پایین تحویل دهیم که بوسیلهٔ بافر مانع از لود شدن سیگنال مدار اول بروی مقاومت ورودی مدار دوم و تداخل این دو مدار میشویم. Buffer جریان نیز متشابها هنگامی بکار میرود که میخواهیم سیگنال از جنس جریان را از مداری با امپدانس خروجی پایین به مداری با امپدانس ورودی بالا تحویل دهیم.
بافرهای دیجیتال در اتصالات بین سختافزارها، فرستادن داده به شبکه، باز خوانی اطلاعات، ویا نمایش خروجی کاربرد دارند. که دلیل استفاده از Buffer احتمال تفاوت سرعت آنها و یا زمان شروع بکار قسمتهای مختلف میباشد.
در حالت کلی موارد کاربرد مدارهای Buffer عبارتند از:
اتصال دو مدار با امپدانسهای ورودی و خروجی غیر ایدآل و جلوگیری از تخریب اطلاعات
اتصال دوبخش که سرعتهای متفاوتی در پردازش دارند
ذخیره موقت اطلاعات برای استفاده در زمانی دیگر
تاخیر در دریافت اطلاعات به منظور رسیدن به زمان کافی برای انجام پردازش
نگه داشتن اطلاعات برای استفادهٔ متعدد در انجام فرایند.