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

هذه هي النسخة الحالية من هذه الصفحة، وقام بتعديلها عبود السكاف (نقاش | مساهمات) في 21:40، 2 يونيو 2023 (بوت: إصلاح أخطاء فحص أرابيكا من 1 إلى 104). العنوان الحالي (URL) هو وصلة دائمة لهذه النسخة.

(فرق) → نسخة أقدم | نسخة حالية (فرق) | نسخة أحدث ← (فرق)

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

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

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

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

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

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

أمثلة

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

تاريخ

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

لغات برمجة

جافا

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

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

مراجع

  1. ^ Q112244705، ص. 41، QID:Q112244705
  2. ^ أ ب "SEAC Maintenance Manual: The Outscriber" (PDF). National Bureau of Standards Report. ج. 2794. July 1953. مؤرشف من الأصل (PDF) في 15 فبراير 2020. اطلع عليه بتاريخ أغسطس 2020. {{استشهاد بدورية محكمة}}: تحقق من التاريخ في: |تاريخ الوصول= (مساعدة)
  3. ^ "What is buffer? - Definition from WhatIs.com". WhatIs.com (بEnglish). Archived from the original on 2019-12-22. Retrieved 2020-07-13.
  4. ^ "Definition of buffering". PCMAG (بEnglish). Archived from the original on 2020-05-29. Retrieved 2020-07-13.
  5. ^ Buffering data that flows between buses operating at different frequencies (بEnglish), Archived from the original on 2020-07-13, Retrieved 2020-07-13
  6. ^ "BufferedInputStream (Java Platform SE 8 )". docs.oracle.com. مؤرشف من الأصل في 2020-03-10. اطلع عليه بتاريخ 2020-07-13.
  7. ^ "BufferedOutputStream (Java Platform SE 8 )". docs.oracle.com. مؤرشف من الأصل في 2019-12-12. اطلع عليه بتاريخ 2020-07-13.
  8. ^ "Buffered Streams (The Java™ Tutorials > Essential Classes > Basic I/O)". docs.oracle.com. مؤرشف من الأصل في 2020-04-27. اطلع عليه بتاريخ 2020-07-13.