الصفحة (ذاكرة الحاسوب)

الصفحة ، أو صفحة الذاكرة ، أو الصفحة الافتراضية ، هي كتلة متجاورة ثابتة الطول من الذاكرة الافتراضية ، تُوصف بإدخال واحد في جدول الصفحات . وهي أصغر وحدة بيانات لإدارة الذاكرة في نظام التشغيل الذي يستخدم الذاكرة الافتراضية. وبالمثل، فإن إطار الصفحة هو أصغر كتلة متجاورة ثابتة الطول من الذاكرة الفعلية التي يُخصص لها نظام التشغيل صفحات الذاكرة. [ 1 ] [ 2 ] [ 3 ]

يُشار إلى عملية نقل الصفحات بين الذاكرة الرئيسية ووحدة تخزين مساعدة، مثل محرك الأقراص الصلبة ، باسم الترحيل أو التبديل. [ 4 ]

توضيح

تُقسّم ذاكرة الحاسوب إلى صفحات بحيث يمكن العثور على المعلومات بسرعة أكبر.

يُستمد هذا المفهوم اسمه من تشبيهه بصفحات كتاب مطبوع. فلو أراد قارئ، على سبيل المثال، العثور على الكلمة رقم 5000 في الكتاب، لكان بإمكانه العدّ من الكلمة الأولى، وهو ما يستغرق وقتًا طويلاً. سيكون الأمر أسرع بكثير لو كان لدى القارئ قائمة بعدد الكلمات في كل صفحة. من هذه القائمة، يستطيع تحديد الصفحة التي تظهر فيها الكلمة رقم 5000، وعدد الكلمات التي يجب عدّها في تلك الصفحة. تُشابه هذه القائمة، التي تُبيّن عدد الكلمات في كل صفحة من الكتاب، جدول صفحات نظام ملفات الحاسوب . [ 5 ]

حجم الصفحة

المفاضلة بين حجم الصفحة

يُحدد حجم الصفحة عادةً بناءً على بنية المعالج. تقليديًا، كانت صفحات النظام ذات حجم موحد، مثل 4096 بايت . مع ذلك، تسمح تصميمات المعالجات غالبًا بحجمين أو أكثر للصفحات، وأحيانًا في آنٍ واحد، نظرًا لمزايا ذلك. هناك عدة عوامل تُؤخذ في الاعتبار عند اختيار حجم الصفحة الأمثل. [ 6 ]

حجم جدول الصفحة

يستخدم النظام ذو حجم الصفحة الأصغر عددًا أكبر من الصفحات، مما يتطلب جدول صفحات يشغل مساحة أكبر. على سبيل المثال، إذا تم تعيين مساحة عنوان افتراضية بحجم 2 ^32 إلى 4 كيلوبايت (2 ^12 بايت) من الصفحات، فإن عدد الصفحات الافتراضية هو 2 ^20 = (2 ^32 / 2^ 12 ). مع ذلك، إذا زاد حجم الصفحة إلى 32 كيلوبايت (2^ 15 بايت)، فإن 2^ 17 صفحة فقط ستكون مطلوبة. يمكن لخوارزمية الترحيل متعددة المستويات تقليل تكلفة الذاكرة اللازمة لتخصيص جدول صفحات كبير لكل عملية، وذلك بتقسيم جدول الصفحات إلى جداول أصغر، مما يُحسّن عملية الترحيل.    

استخدام TLB

بما أن كل عملية وصول إلى الذاكرة تتطلب ربطًا بين العنوان الافتراضي والعنوان الفعلي، فإن قراءة جدول الصفحات في كل مرة قد تكون مكلفة للغاية. لذلك، يُستخدم غالبًا نوع سريع جدًا من ذاكرة التخزين المؤقت، وهو مخزن الترجمة المؤقت (TLB). يتميز مخزن الترجمة المؤقت بحجمه المحدود، وعندما لا يستطيع تلبية طلب معين ( خطأ في مخزن الترجمة المؤقت )، يجب جلب الربط من جدول الصفحات (إما بواسطة المكونات المادية أو البرامج الثابتة أو البرامج، حسب بنية النظام) للحصول على الربط الصحيح. تعني أحجام الصفحات الأكبر أن مخزن الترجمة المؤقت بنفس الحجم يمكنه تتبع كميات أكبر من الذاكرة، مما يجنب أخطاء مخزن الترجمة المؤقت المكلفة.

التجزئة الداخلية

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

على سبيل المثال، افترض أن حجم الصفحة هو 1024  بايت. إذا خصصت عملية ما 1025  بايت، فيجب استخدام صفحتين، مما ينتج عنه 1023  بايت من المساحة غير المستخدمة (حيث تستهلك صفحة واحدة 1024  بايت بالكامل والأخرى 1  بايت فقط).

الوصول إلى القرص

عند نقل البيانات من قرص دوار، يُعزى جزء كبير من التأخير إلى زمن البحث، وهو الوقت اللازم لوضع رؤوس القراءة/الكتابة في الموضع الصحيح فوق أسطوانات القرص. ولهذا السبب، تُعدّ عمليات النقل المتسلسلة الكبيرة أكثر كفاءة من عمليات النقل المتعددة الأصغر. فغالبًا ما يتطلب نقل نفس كمية البيانات من القرص إلى الذاكرة وقتًا أقل مع الصفحات الكبيرة مقارنةً بالصفحات الصغيرة.

الحصول على حجم الصفحة برمجيًا

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

أنظمة تشغيل شبيهة بنظام يونكس

قد تستخدم الأنظمة الشبيهة بنظام يونكس وظيفة النظام sysconf()، [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] كما هو موضح في المثال التالي المكتوب بلغة البرمجة C.

#include <stdio.h> #include <unistd.h> /* sysconf(3) */int main ( void ) { printf ( "حجم الصفحة لهذا النظام هو %ld بايت. \n " , sysconf ( _SC_PAGESIZE )); /* _SC_PAGE_SIZE مناسب أيضًا. */return 0 ; }

getconfفي العديد من الأنظمة الشبيهة بنظام يونكس، يمكن استخدام أداة سطر الأوامر . [ 12 ] [ 13 ] [ 14 ] على سبيل المثال، getconf PAGESIZEستُعيد حجم الصفحة بالبايت.

أنظمة التشغيل المستندة إلى ويندوز

قد تستخدم أنظمة التشغيل المستندة إلى Win32 ، مثل تلك الموجودة في عائلتي Windows 9x و Windows NT ، وظيفة النظام GetSystemInfo()[ 15 ] [ 16 ] من kernel32.dll.

#include <stdio.h> #include <windows.h>int main ( void ) { SYSTEM_INFO si ; GetSystemInfo ( & si );printf ( " حجم الصفحة لهذا النظام هو %u بايت. \ n " , si.dwPageSize );return 0 ; }

أحجام صفحات متعددة

تدعم بعض بنى مجموعات التعليمات أحجام صفحات متعددة، بما في ذلك صفحات أكبر بكثير من حجم الصفحة القياسي. وتعتمد أحجام الصفحات المتاحة على بنية مجموعة التعليمات ونوع المعالج ونمط التشغيل (العنونة). يختار نظام التشغيل حجمًا واحدًا أو أكثر من الأحجام التي تدعمها البنية. تجدر الإشارة إلى أن بعض المعالجات لا تدعم جميع أحجام الصفحات الأكبر المحددة. يتيح هذا الدعم للصفحات الأكبر (المعروفة باسم "الصفحات الضخمة" في لينكس ، و"الصفحات الفائقة" في فري بي إس دي ، و"الصفحات الكبيرة" في مايكروسوفت ويندوز وآي بي إم إيه آي إكس ) تحقيق أفضل النتائج، حيث يقلل الضغط على ذاكرة التخزين المؤقت TLB (مما يزيد السرعة أحيانًا بنسبة تصل إلى 15%) عند تخصيص مساحات كبيرة، مع الحفاظ على استخدام الذاكرة عند مستوى معقول عند تخصيص مساحات صغيرة.

أحجام الصفحات بين البنى المعمارية [ 17 ]
بنيانأصغر حجم للصفحاتأحجام صفحات أكبر
IA-32 (32 بت x86 ) [ 18 ]4  كيلوبايت4 ميجابايت في وضع PSE ، 2 ميجابايت في وضع PAE [ 19 ]  
x86-64 [ 18 ]4  كيلوبايت2  ميجابايت، 1 جيجابايت (فقط عندما يكون لدى وحدة المعالجة المركزية علامة) PDPE1GB
IA-64 ( إيتانيوم ) [ 20 ]4  كيلوبايت8  ميجا بايت، 64  ميجا بايت، 256  كيلو بايت، 1  ميجا بايت، 4  ميجا بايت، 16  ميجا بايت، 256  ميجا بايت [ 19 ]
Power ISA [ 21 ]4  كيلوبايت64  كيلوبايت، 16  ميجابايت، 16  جيجابايت
SPARC v8 مع SPARC Reference MMU [ 22 ]4  كيلوبايت256  كيلوبايت، 16  ميجابايت
بنية UltraSPARC 2007 [ 23 ]8  كيلوبايت64  كيلوبايت، 512  كيلوبايت (اختياري)، 4  ميجابايت، 32  ميجابايت (اختياري)، 256  ميجابايت (اختياري)، 2  جيجابايت (اختياري)، 16  جيجابايت (اختياري)
ARMv7 [ 24 ]4  كيلوبايت64  كيلوبايت، 1  ميجابايت ("قسم")، 16  ميجابايت ("قسم فائق") (محدد بواسطة تطبيق معين)
AArch64 [ 25 ]4  كيلوبايت16  ميجا بايت، 64  ميجا بايت، 2  ميجا بايت، 32  ميجا بايت، 512  ميجا بايت، 1 جيجا بايت
RISCV32 [ 26 ]4  كيلوبايت4 ميجابايت ("ميجا بيج")
RISCV64 [ 26 ]4  كيلوبايت2 ميجابايت ("ميجا بيج")، 1 جيجابايت ("جيجا بيج")، 512 جيجابايت ("تيرابيج"، فقط لوحدات المعالجة المركزية ذات مساحة عناوين 43 بت أو أكثر)، 256 تيرابايت ("بيتا بيج"، فقط لوحدات المعالجة المركزية ذات مساحة عناوين 57 بت أو أكثر).

بدءًا من معالجات Pentium Pro و AMD Athlon ، تدعم معالجات x86  صفحات بحجم 4 ميجابايت (تُسمى امتداد حجم الصفحة ) (  صفحات بحجم 2 ميجابايت عند استخدام PAE ) بالإضافة إلى صفحاتها القياسية بحجم 4 كيلوبايت. أما معالجات x86-64  الأحدث ، مثل معالجات AMD64 الأحدث من AMD ومعالجات Westmere من Intel [ 27 ] ومعالجات Xeon اللاحقة، فيمكنها استخدام صفحات بحجم 1 جيجابايت في الوضع الطويل . يدعم معيار IA-64 ما يصل إلى ثمانية أحجام صفحات مختلفة، من 4 كيلوبايت إلى 256 ميجابايت، وتتمتع بعض البنى الأخرى بميزات مماثلة.   

على الرغم من توفر صفحات الذاكرة الكبيرة في المعالجات المستخدمة في معظم أجهزة الكمبيوتر الشخصية الحديثة ، إلا أنها ليست شائعة الاستخدام إلا في التطبيقات واسعة النطاق، والتي توجد عادةً في الخوادم الكبيرة ومجموعات الحوسبة ، وفي نظام التشغيل نفسه. يتطلب استخدامها عادةً صلاحيات إدارية، أو تعاونًا من التطبيق الذي يقوم بتخصيص المساحة الكبيرة (عادةً عن طريق ضبط علامة لطلب صفحات ضخمة من نظام التشغيل)، أو تكوينًا يدويًا من قِبل المسؤول؛ ولا تستطيع أنظمة التشغيل عادةً، وأحيانًا عن قصد، نقل هذه الصفحات إلى القرص.

مع ذلك، يدعم نظام SGI IRIX أحجام صفحات متعددة للأغراض العامة. إذ يمكن لكل عملية على حدة تقديم تلميحات، وسيستخدم نظام التشغيل تلقائيًا أكبر حجم صفحة ممكن لمنطقة معينة من مساحة العناوين. [ 28 ] واقترحت دراسات لاحقة دعمًا شفافًا لنظام التشغيل لاستخدام مزيج من أحجام الصفحات للتطبيقات غير المعدلة من خلال الحجوزات القابلة للمقاطعة، والترقيات الانتهازية، والتخفيضات التخمينية، والتحكم في التجزئة. [ 29 ]

يدعم نظام لينكسhugetlbfs الصفحات الضخمة على العديد من البنى منذ سلسلة 2.6 عبر نظام الملفات [ 30 ] وبدونه hugetlbfsمنذ الإصدار 2.6.38. [ 31 ] يدعم كل من Windows Server 2003 (SP1 والإصدارات الأحدث)، و Windows Vista ، و Windows Server 2008 الصفحات الضخمة تحت مسمى الصفحات الكبيرة. [ 32 ] يدعم كل من Windows 2000 و Windows XP الصفحات الكبيرة داخليًا، لكنهما لا يعرضانها للتطبيقات. [ 33 ] يتطلب حجز الصفحات الكبيرة في نظام Windows منح المستخدم صلاحيةً مقابلةً من قِبل مسؤول النظام ، نظرًا لعدم إمكانية استبدال الصفحات الكبيرة في نظام Windows. بدءًا من الإصدار 9، يدعم نظام Solaris الصفحات الكبيرة على معالجات SPARC وx86. [ 34 ] [ 35 ] يتميز نظام FreeBSD 7.2-RELEASE بالصفحات الفائقة. [ 36 ] تجدر الإشارة إلى أنه حتى وقت قريب، كان استخدام الصفحات الضخمة في تطبيقات لينكس يتطلب تعديلًا. وقد قدمت نواة الإصدار 2.6.38 دعمًا للاستخدام الشفاف للصفحات الضخمة. [ 31 ] في نواة لينكس التي تدعم الصفحات الضخمة الشفافة، وكذلك في FreeBSD و Solaris ، تستفيد التطبيقات من الصفحات الضخمة تلقائيًا، دون الحاجة إلى تعديل. [ 36 ]

انظر أيضاً

مراجع

  1. كريستوفر كرويجل (2012-12-03). "أنظمة التشغيل (مقرر CS170-08)" (ملف PDF) . cs.ucsb.edu . مؤرشف (ملف PDF) من الأصل بتاريخ 2016-08-10 . تم الاطلاع عليه بتاريخ 2016-06-13 .
  2. مارتن سي. رينارد (22 أغسطس 1998). "ملاحظات محاضرة أنظمة التشغيل، المحاضرة 9: مقدمة في الترحيل" . people.csail.mit.edu . مؤرشف من الأصل في 1 يونيو 2016. تم الاطلاع عليه في 13 يونيو 2016 .
  3. "الذاكرة الافتراضية: الصفحات وإطارات الصفحات" . cs.miami.edu . 31-10-2012. مؤرشف من الأصل في 11-06-2016 . تم الاطلاع عليه في 13-06-2016 .
  4. بيلزر، جاك؛ هولزمان، ألبرت ج.؛ كينت، ألين، محرران (1981)، "أنظمة الذاكرة الافتراضية"، موسوعة علوم وتكنولوجيا الحاسوب ، المجلد 14، مطبعة سي آر سي، ص 32، رقم ISBN   0-8247-2214-0
  5. ^ كاظمي، داريوس (2019-01-11). "آر إف سي-11" . 365 طلبًا للتعليقات .
  6. وايزبرغ، ب.؛ وايزمان، ي. (10 أغسطس/آب 2009). استخدام حجم صفحة 4 كيلوبايت للذاكرة الافتراضية أصبح متقادمًا . المؤتمر الدولي لهندسة الكهرباء والإلكترونيات لعام 2009 حول إعادة استخدام المعلومات وتكاملها. CiteSeerX 10.1.1.154.2023 . doi : 10.1109/IRI.2009.5211562 . 
  7. مرجع تعريفات القواعد، مواصفات يونكس الموحدة ، الإصدار 5 من مجموعة Open Grouplimits.h  
  8. مرجع واجهات النظام، مواصفات يونكس الموحدة ، الإصدار 5 من مجموعة Open Groupsysconf  
  9. دليل وظائف مكتبة لينكسsysconf(3)  
  10. دليل وظائف مكتبة داروين وماك أو إسsysconf(3)  
  11. دليل مرجعي لوظائف المكتبة الأساسية لنظام التشغيل سولاريس 11.4sysconf(3C)  
  12. مرجع الصدفة والأدوات المساعدة، مواصفات يونكس الموحدة ، الإصدار 5 من مجموعة Open Groupgetconf  
  13. دليل أوامر مستخدم لينكسgetconf(1)  
  14. دليل الأوامر العامة لنظامي التشغيل داروين وماك أو إسgetconf(1)  
  15. "دالة GetSystemInfo" . مايكروسوفت. 2021-10-13.
  16. "بنية SYSTEM_INFO" . مايكروسوفت. 2022-09-23.
  17. "Hugepages - Debian Wiki" . Wiki.debian.org. 2011-06-21 . تم الاطلاع عليه بتاريخ 2014-02-06 .
  18. 1 2 "دليل مطوري برامج معمارية Intel® 64 و IA-32 المجلد 3 (3A، 3B، 3C و 3D): دليل برمجة النظام" (PDF) . ديسمبر 2016. ص 4-2.
  19. 1 2 "Documentation/vm/hugetlbpage.txt" . وثائق نواة لينكس . kernel.org . تم الاطلاع عليه بتاريخ 2014-02-06 .
  20. "دليل مطوري برامج معمارية إنتل إيتانيوم، المجلد 2: معمارية النظام" (ملف PDF) . مايو 2010. ص 2:58. 
  21. دليل أداء أنظمة IBM Power: التنفيذ والتحسين . منشورات IBM Redbooks. فبراير 2013. ISBN 978-0-7384-3766-8تم الاطلاع عليه بتاريخ 17-03-2014 .
  22. "دليل بنية SPARC، الإصدار 8" . 1992. ص 249. 
  23. "معمارية UltraSPARC 2007" (ملف PDF) . 2010-09-27. ص 427. 
  24. "دليل مرجعي لهندسة ARM، إصدار ARMv7-A وARMv7-R" . Arm . 2014-05-20. ص. B3-1324.
  25. "وحدة الترجمة" . تعرّف على بنية النظام - إدارة الذاكرة AArch64 . Arm . تم الاطلاع عليه بتاريخ 19 أغسطس 2022 .
  26. 1 2 ووترمان، أندرو؛ أسانوفيتش، كرست ؛ هاوزر، جون (2021). دليل مجموعة تعليمات RISC-V، المجلد الثاني: بنية مميزة (PDF) . الصفحات 79-87 . 
  27. "معالج إنتل زيون 5670: ستة أنوية محسّنة" . موقع أناند تك. مؤرشف من الأصل بتاريخ 31 مارس 2010. تم الاطلاع عليه بتاريخ 3 نوفمبر 2012 .
  28. "دعم نظام التشغيل للأغراض العامة لأحجام صفحات متعددة" (ملف PDF) . static.usenix.org . تم الاطلاع عليه بتاريخ 2 نوفمبر 2012 .
  29. نافارو، خوان؛ آير، سيتارارن؛ دروشيل، بيتر؛ كوكس، آلان (ديسمبر 2002). دعم عملي وشفاف لنظام التشغيل لصفحات Superpages (ملف PDF) . ندوة Usenix الخامسة حول تصميم وتنفيذ أنظمة التشغيل.
  30. "صفحات - dankwiki، ويكي نيك بلاك" . تم الاطلاع عليه بتاريخ 17-06-2023 .
  31. 1 2 كوربيت، جوناثان. "صفحات ضخمة شفافة في 2.6.38" . LWN . تم الاسترجاع في 2011-03-02 .
  32. "دعم الصفحات الكبيرة" . مستندات مايكروسوفت . 2018-05-08.
  33. "قد يتوقف برنامج AGP عن العمل عند استخدام امتداد حجم الصفحة على معالج Athlon" . Support.microsoft.com. 27-01-2007 . تم الاطلاع عليه بتاريخ 03-11-2012 .
  34. "دعم أحجام صفحات متعددة في نظام التشغيل سولاريس" (ملف PDF) . Sun BluePrints Online . شركة صن مايكروسيستمز. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 12 مارس 2006. تاريخ الاطلاع: 19 يناير 2008 .
  35. "دعم أحجام صفحات متعددة في نظام التشغيل سولاريس - ملحق" (ملف PDF) . Sun BluePrints Online . Sun Microsystems. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 1 يناير 2007. تم الاطلاع عليه بتاريخ 19 يناير 2008 .
  36. 1 2 "ملاحظات إصدار FreeBSD 7.2-RELEASE" . مؤسسة FreeBSD . تم الاطلاع عليه بتاريخ 3 مايو 2009 .
  37. "2.3.1 ذاكرة القراءة فقط / 2.3.2 ذاكرة الوصول العشوائي للبرامج". دليل برمجة لغة التجميع MCS-4 - دليل برمجة نظام الحاسوب الصغير INTELLEC 4 (ملف PDF) (طبعة أولية ). سانتا كلارا، كاليفورنيا، الولايات المتحدة الأمريكية: شركة إنتل . ديسمبر 1973. الصفحات 2-3 - 2-4 . MCS-030-1273-1. مؤرشف (PDF) من الأصل في 1 مارس 2020. تم الاسترجاع في 2 مارس 2020. [ ...] تُقسّم ذاكرة القراءة فقط (ROM) إلى صفحات، تحتوي كل منها على 256 بايت. وبالتالي، تُشكّل المواقع من 0 إلى 255 الصفحة 0 من ذاكرة القراءة فقط، وتُشكّل المواقع من 256 إلى 511 الصفحة 1، وهكذا. [...] تُنظّم ذاكرة الوصول العشوائي للبرامج (RAM) تمامًا مثل ذاكرة القراءة فقط. [...]  
  38. ١ ٢ "١. مقدمة: محاذاة القطاعات". أدوات عائلة 8086 - دليل المستخدم لأنظمة التطوير القائمة على معالجات 8080/8085 (ملف PDF) . المراجعة E (A620/5821 6K DD ed.). سانتا كلارا، كاليفورنيا، الولايات المتحدة الأمريكية: شركة إنتل . مايو 1982 [1980، 1978]. الصفحات 1-6 . رقم الطلب: 9800639-04. مؤرشف (ملف PDF) من الأصل بتاريخ 29-02-2020 . تم الاسترجاع بتاريخ 29-02-2020 .  

للمزيد من القراءة

  • داندامودي، سيفاراما ب. (2003). أساسيات تنظيم وتصميم الحاسوب (  الطبعة الأولى). سبرينغر . الصفحات 740-741 . ISBN  0-387-95211-X.