بررسی مفهوم Buffering و Caching

در حالت معمول بافرینگ یا Buffering به فرآیندی گفته می شود که داده ها در ناحیه ای از حافظه نگهداری می شوند تا در زمان مناسب از یک محل به محل دیگری انتقال پیدا کنند. بافرینگ یا Buffering معمولا زمانی استفاده می شود که ما می خواهیم داده های خود را بین فرآیند هایی در کامپیوتر و فرآیند هایی در زیرساختارهای شبکه ای یا Telecommunication منتقل کنیم.عملیات Buffering بیشتر زمانی مورد استفاده قرار می گیرد که بین سرعت های پردازش داده و سرعت انتقال یا دریافت داده تفاوت وجود داشته باشند و به نوعی بافرینگ این سرعت ها را به گونه ای ساماندهی می کند که ساختار پردازشی دچار مشکل نشود.اما فرآیند Caching یا کشینگ در واقع ذخیره سازی داده ها در محلی جداگانه در حافظه یا CPU به نام Cache گفته می شود و هدف آن بیشتر کردن سرعت دسترسی به این داده ها در صورت نیاز به آنها در آینده است. زمانیکه داده ای درخواست داده می شود اولین محلی که برای پیدا کردن داده ها بررسی می شود Cache است ، اگر داده مورد نظر در Cache پیدا شد پاسخ درخواست خیلی خیلی سریعتر از روند معمول انجام می شود.بافرینگ Buffering چیست؟همانطور که قبلا هم اشاره کردیم فرآیند بافرینگ نگهداری کردن داده ها در یک ناحیه از حافظه سیستم تا زمان انتقال آن به محل دیگر را بافرینگ می گوییم. این ناحیه از حافظه که در آن داده ها ذخیره می شود به عنوان بافر یا Buffer شناخته می شود. بافرینگ زمانی استفاده می شود که سرعت ارسال و دریافت در مبدا و مقصد با هم برابر نیستند و در نهایت ممکن است این وسط Bottleneck به وجود بیاید به این معنی که اطلاعات با سرعت زیاد ارسال شوند و چون سرعت دریافت و پردازش پایین است دچار مشکل شوند.فرآیند بافرینگ هم می تواند بصورت سخت افزاری و هم می تواند بصورت نرم افزاری پیاده سازی شود ، بیشتر بافرهایی که امروزه مورد استفاده قرار می گیرند بافرهای نرم افزاری هستند. بافرینگ بصورت گسترده ای امروزه در پرینترها مورد استفاده قرار می گیرد و به ویژه در فرآیند Printer Spooling بافر نقش تاثیر گذاری دارد ، از طرفی برخی از سیستم های ویدیو آنلاین یا سرویس های Video Streaming نیز از بافرینگ بصورت گسترده ای استفاده می کنند.دقت کرده اید که هرگاه از وایبر ویدیویی را نگاه می کنید اگر سرعت شما کمتر از سرور باشد در کنار آن Buffering نوشته می شود. بیشتر اوقات بافرینگ به این شکل انجام می شود که داده های ما در یک صف یا queue با یک سرعت معین نوشته و نگهداری می شوند و از طریق یک صف یا queue دیگر با سرعت متفاوتی خوانده می شوند .کشینگ Caching چیست؟فرآیند Caching یا کشینگ به ذخیره کردن داده ها در یک قسمت جداگانه به نام Cache در سیستم گفته می شود تا در صورت نیاز به دسترسی به داده های مورد نظر در آینده سرعت دستیابی به این داده ها زیادتر از حالت عادی باشد. زمانیکه یک داده درخواست داده می شود قبل از اینکه حافظه RAM و یا هارد دیسک جستجو شود ، محتویات Cache سیستم بازرسی می شود ، در صورتیکه داده مورد نظر در Cache سیستم وجود داشته باشد سرعت دسترسی به آن بسیار بالا خواهد بود.اگر داده درخواستی در Cache وجود داشته باشد در اصطلاح فنی به آن Cache Hit گفته می شود. بدون شک با تقاسیری که گفتیم زمانیکه داده ای از Cache سیستم خوانده می شود سرعت خواندن آن بسیار بالاتر از محل اصلی است که داده در آن ذخیره شده است ، اگر داده درخواستی در Cache وجود نداشت در اصطلاح فنی یک Cache Miss اتفاق افتاده است. در چنین حالتی داده بایستی از محل اصلی ذخیره سازی آن درخواست داده شود که ای فرآیند طبیعتا زمان بیشتری را می طلبد.فرآیند Caching در محل های متنوعی انجام می شود ، در CPU با استفاده از فرآیند Caching شما تا حدود زیادی سرعت دسترسی به اطلاعات را بالا می برید زیرا سیستم به جای استفاده از حافظه RAM از حافظه Cache استفاده می کند ، دقت کنید که حافظه Cache در سیستم ها معمولا بین CPU و حافظه RAM قرار می گیرد و به همین دلیل سرعت دسترسی به آن توسط CPU از سرعت دسترسی به RAM بالاتر است. اما این تنها جایی نیست که در آن فرآیند Caching مورد استفاده قرار می گیرد.شما وقتی به یک وب سایت سر می زنید محتویات موجود در آن ممکن است در سیستم شما Cache شود و در مرحله بعدی بازدید از وب سایت سرعت باز شدن صفحات شما که قبلا در سیستم شما ذخیره شده اند بسیار بالاتر خواهد رفت. امروزه در شبکه های بزرگ برای صرفه جویی در مصرف اینترنت در شبکه از یک Cache Server استفاده می شود تا صفحات اینترنتی را در خود Cache کند و در صورت درخواست کاربران صفحه Cache شده را به کاربر نمایش دهد ، از Cache Server های معروف دنیا می توانیم به Squid Cache Server اشاره کنیم که یک Cache Server لینوکسی است.تفاوت Caching و Buffering در چیست ؟تنها تشابهی که در بین فرآیند Caching و Buffering وجود داشت این بود که داده ها در یک محل موقتی به غیر از محل اصلی نگهداری آنها ذخیره شوند اما تفاوت های آنها کاملا اساسی است. Caching برای افزایش سرعت دسترسی به داده ها در زمانیکه از دستگاه های ذخیره سازی کند استفاده می کنیم بکار می رود، ایده اصلی Caching این است که داده هایی که بصورت مکرر مورد استفاده قرار می گیرند بایستی در محلی قرار بگیرند که سریعتر در دسترس قرار بگیرند .برای مثال شما در یک Cache Server ای به نام Squid وب سایت های پر بازدید را Cache می کنید نه همه وب سایت ها را ، اما Buffering برای تنظیم کردن سرعت ارسال و دریافت اطلاعات در دو نوع ارتباط با سرعت های مختلف مورد استفاده قرار می گرفت تا مشکل Bottleneck در این میان پیش نیاید و مهمترین کاربرد آن در پرینتر Spooler است.