مخزن بيانات مؤقت

هو منطقة فيزيائية في مخزن الذاكرة يستخدم لتخزين البيانات مؤقتاً ريثما تنقل من مكان لأخر

مخزن البيانات المؤقت أو الذاكرة الوسيطة (بالإنجليزية: Buffer)‏ في علم الحاسوب هو مكان مؤقت في الذاكرة يتم فيه تخزين البيانات حين تنقَل من مكان إلى آخر.[1] كما ويتعلق تركيبه حسب الوظيفة التي يشغلها. عادة البيانات تخزن قي مخزن البيانات المؤقت بالشكل الذي تأتى منه كأيّ وحدة إدخال مثال (لوحة المفاتيح) أو قبل أن ترسل إلى أى وحدة إخراج مثال (الطابعة).[2] غير أنه يمكن أستخدامها أثناء نقل البيانات بين العمليات التي تجرى داخل الحاسوب. هذا مشابه للمخازن المؤقتة في الاتصالات. يمكن تنفيذ المخازن المؤقتة في موقع ذاكرة ثابت في الأجهزة (العتاد الصلب) - أو باستخدام مخزن مؤقت للبيانات الافتراضية في البرمجية (العتاد الناعم)، مع الإشارة إلى موقع في الذاكرة الفعلية (الفيزيائية). في جميع الحالات، تُخزّن البيانات في مخزن البيانات المؤقت على وسيط تخزين فعلي (فيزيائي). يتم تنفيذ غالبية المخازن المؤقتة في البرمجية، والتي تستخدم عادةً ذاكرة الوصول العشوائي الأسرع لتخزين البيانات المؤقتة، نظرًا إلى أنه وقت الوصول أسرع بكثير إذا ما تمت لمقارنة ذلك بمحركات الأقراص الصلبة. تُستخدم المخازن المؤقتة عادةً عندما يكون هناك اختلاف بين معدل تلقي البيانات والمعدل الذي يمكن معالجته به، أو في حالة أن هذه المعدلات متغيرة، على سبيل المثال في التخزين المؤقت للطابعة أو في تدفق الفيديو عبر الإنترنت.[3] في بيئة الحوسبة الموزعة، غالبًا ما يتم تنفيذ المخزن المؤقت للبيانات في شكل مخزن مؤقت للاندفاع (التدفق) يوفر خدمة التخزين المؤقت الموزعة.

غالبًا ما يضبط المخزن المؤقت التوقيت من خلال تنفيذ خوارزمية قائمة الانتظار (أو FIFO) في الذاكرة، وكتابة البيانات في قائمة الانتظار تزامنياً بمعدل واحد وقراءتها بمعدل آخر.[4]

مخزن البيانات المؤقت في الاتصالاتعدل

روتين التخزين المؤقت أو وسيط التخزين المستخدم في الاتصالات يعوض عن اختلاف في معدل تدفق البيانات، أو وقت ظهور الأحداث البرمجية، عند نقل البيانات من جهاز إلى آخر.

تستخدم المخازن المؤقتة لأغراض عديدة، بما في ذلك:

  • ربط بين دائرتين رقميتين تعملان بمعدلات مختلفة
  • الاحتفاظ بالبيانات لاستخدامها لاحقًا
  • السماح بإجراء تصحيحات التوقيت على دفق البيانات
  • جمع بتات البيانات الثنائية في مجموعات يمكن تشغيلها بعد ذلك كوحدة
  • تأخير وقت عبور الإشارة للسماح بحدوث عمليات أخرى.

أمثلةعدل

  • الأمر أو عبارة BUFFERS في CONFIG.SYS الخاص بنظام تشغيل داس Dos.
  • المخزن المؤقت بين منفذ تسلسلي (UART) و المودم. سرعة منفذ COM قد تكون 38400 بت / ثانية، بينما قد يكون لدى المودم ناقل 14400 بت / ثانية فقط.
  • المخزن المؤقت المدمج على محرك الأقراص الثابتة أو الطابعة أو أي جزء آخر من الأجهزة.
  • مخزن الاطارات Framebuffer على بطاقة الفيديو.

تاريخعدل

أول ذكر لمخزن مؤقت للطباعة هو المخطاط الخارجي "Outscriber" الذي ابتكره رائد معالجة الصور روسيل .أ كيرش لحاسوب أس إي ايه سي SEAC في عام 1952[1] واحدة من أهم المشاكل في تصميم أجهزة الحاسوب الرقمية الأوتوماتيكية هي إخراج النتائج المحسوبة من الجهاز بسرعة كافية لتجنب تأخير الإضافي للعملية الحساب. في العديد من المشاكل التي يتم تطبيقها على حاسوب الأغراض العامة، تكون كمية بيانات المخرجات كبيرة نسبيًا - لذا عدم الكفاءة يعتبر شيء مهم جداً والذي ينتج عن إجبار الحاسوب على انتظار كتابة هذه البيانات على أجهزة الطباعة الموجودة. تم حل هذه المشكلة في أس إي ايه سي من خلال توفير أجهزة تسجيل مغناطيسية كوحدات إخراج. هذه الأجهزة قادرة على تلقي معلومات من الجهاز بمعدلات تصل إلى 100 مرة أسرع من الآلة الكاتبة الكهربائية. وبالتالي، يتم تحقيق كفاءة أفضل في تسجيل بيانات الإخراج؛ ومن ثم يمكن إجراء النسخ لاحقًا من جهاز التسجيل المغناطيسي إلى جهاز الطباعة دون ربط الكمبيوتر الرئيسي.

لغات برمجةعدل

جافاعدل

في لغة برمجة جافا يمكن استخدام مكتبة جافا للإدخال والاخراج java.io و التي تتضمن أصناف ادخال التدفق للتخزين المؤقت BufferedInputStream [5] و أصناف الإخراج للتخزين المؤقت BufferedOutputStream[6] و التي يمكن استخدامها للتحكم والاستفادة من مخزن البيانات المؤقت [7] على سبيل المثال الكود التالي:

input= new BufferedReader(new FileReader("ملف للقراءة منه.txt"));
output = new BufferedWriter(new FileWriter("ملف للكتابة واخراج النتائج.txt"));


مراجععدل

  1. أ ب "SEAC Maintenance Manual: The Outscriber" (PDF). National Bureau of Standards Report. 2794. July 1953. مؤرشف من الأصل (PDF) في 15 فبراير 2020. اطلع عليه بتاريخ أغسطس 2020. الوسيط |CitationClass= تم تجاهله (مساعدة); تحقق من التاريخ في: |تاريخ الوصول= (مساعدة)
  2. ^ "What is buffer? - Definition from WhatIs.com". WhatIs.com (باللغة الإنجليزية). مؤرشف من الأصل في 22 ديسمبر 2019. اطلع عليه بتاريخ 13 يوليو 2020. الوسيط |CitationClass= تم تجاهله (مساعدة)
  3. ^ "Definition of buffering". PCMAG (باللغة الإنجليزية). مؤرشف من الأصل في 29 مايو 2020. اطلع عليه بتاريخ 13 يوليو 2020. الوسيط |CitationClass= تم تجاهله (مساعدة)
  4. ^ Buffering data that flows between buses operating at different frequencies (باللغة الإنجليزية), مؤرشف من الأصل في 13 يوليو 2020, اطلع عليه بتاريخ 13 يوليو 2020 الوسيط |CitationClass= تم تجاهله (مساعدة); الوسيط |separator= تم تجاهله (مساعدة)CS1 maint: ref=harv (link)
  5. ^ "BufferedInputStream (Java Platform SE 8 )". docs.oracle.com. مؤرشف من الأصل في 10 مارس 2020. اطلع عليه بتاريخ 13 يوليو 2020. الوسيط |CitationClass= تم تجاهله (مساعدة)
  6. ^ "BufferedOutputStream (Java Platform SE 8 )". docs.oracle.com. مؤرشف من الأصل في 12 ديسمبر 2019. اطلع عليه بتاريخ 13 يوليو 2020. الوسيط |CitationClass= تم تجاهله (مساعدة)
  7. ^ "Buffered Streams (The Java™ Tutorials > Essential Classes > Basic I/O)". docs.oracle.com. مؤرشف من الأصل في 27 أبريل 2020. اطلع عليه بتاريخ 13 يوليو 2020. الوسيط |CitationClass= تم تجاهله (مساعدة)