بافر ناحیه ای است واسط در عملیات ورودی و خروجی و در این ناحیه اقلا یک رکورد (در حالت فایل بلاک بندی نشده) و یا اقلا یک بلاک در حالت فایل بلاک بندی شده جای داده میشود و اساسا برای ایجاد هماهنگی بین عملیات پردازنده ورودی/خروجی و واحد پردازش مرکزی در شرایطی تسریع این عملیات به کار میرود. در سیستم فایل ، بافر معمولا از منطقهای از حافظه اصلی به برنامه فایل پرداز تخصیص داده میشود که به آن منطقه بافر میگویند
بافر ها به سه روش ساخته می شوند :
چگونگی دستیابی برنامه به محتوای بافر
برنامه به دو صورت میتواند به محتوای بافر دستیابی داشته باشد:
در روش اول ، رکود از بافر ورودی به ناحیه کاری برنامه انتقال داده میشود و یا از ناحیه کاری به بافر خروجی عمل بلاک بندی و بلاک گشایی توسط سیستم انجام میشود و برنامه به بافر دستیابی ندارد و بافر خاص خود را دارد )همان ناحیه کاری کاربر) در این حالت ، یک فرمان کانال برای هریک از بافرها وجود دارد و عملیات ورودی/خروجی نمی توانند هر دو از یک بافر انجام پذیرد و روشن است که کاربر نیاز به ناحیه کاری خاصی دارد.
در روش دوم ، سیستم مکان بافر حاوی رکورد نظر کاربر را به نحوی به برنامه فایل پرداز می نمایاند مثلاً از طریق گذاشتن آدرس آن در یک ثبات قرار دادی یا در ناحیه ای تعریف شده توسط برنامه در واقع کاربر از همان بافر به عنوان ناحیه کاری استفاده میکند و عمل بلاک بندی و بلاک گشایی را خود برنام انجام میدهد.
از نظر تعداد بافرهایی که به عملیات ورودی/خروجی برنامه فایل پرداز تخصیص می یابد ، انواع زیر وجود دارد:
بافرینگ ساده
در این بافرینگ ، یک بافر در اختیار برنامه فایل پرداز قرار داده میشود. در بافرینگ ساده طبعاً زمان انتظار واحد پردازش مرکزی و اجرای برنامه افزایش می یابد در اثنایی که بافر پر میشود ، در محیط چند برنامهای می توان از زمان برای برنامههای دیگر استفاده کرد. می بینیم که در این حالت امکان همروندی عملیات CPU و عملیات پردازشگر ورودی/خروجی وجود ندارد. البته در اسلوب مکان نمایی ، در اسلوب انتقالی چون برنامه بافر خاص خود را دارد و در صورتیکه فایل بلاک بندی نشده باشد ، این همروندی تا حدی امکان پذیر است. ضمن اینکه این موضع به نوع رسانه نیز بستگی دارد
بافرینگ مضاعف
با دو بافر ، می توان در اثناء خواندن یک بلاک و انتقال ، به یک بافر ، محتوای بافر دیگر را که پر است ، پردازش کرد
در پردازش فایلها به طور پی در پی و انواع (یعنی تعداد زیادی بلاک خوانده میشوند) حتما لازم است دو بافر در اختیار داشته باشیم ، وگرنه عملیات نه سریع خواهد بود و نه کارا. بدیهی است زمانی را که واحد پردازش مرکزی برای پردازش محتوای یک بار، مصرف میکند باید کمتر از زمانی باشد که پردازنده ورودی خروجی و کنترل کننده دیسک برای انتقال بلاک به یک بافر لازم دارند