اعلان الهيدر

لماذا يحتاج نظام الايفون iOS إلى ذاكرة RAM أقل بكثير من نظام Android؟


لماذا يحتاج نظام iOS إلى ذاكرة RAM أقل بكثير من نظام Android؟

كما تعلمون على الأرجح ، هناك حرب مستمرة بين iOS و Android ، وستظل هكذا على مدى سنوات قادمة. على الرغم من وجود العديد من الجوانب التي يمكنك من خلالها مقارنة هذين النظامين التشغيليين ، إلا أن متطلبات ذاكرة الوصول العشوائي (RAM) تعد مهمة للغاية.

تم تزويد جهاز iOS بنصف ذاكرة الوصول العشوائي (RAM) لجهاز Android بقدرات مماثلة فقط.

ولكن ما الذي يفعله نظام iOS بشكل مختلف لنظام Android ليحتاج فقط إلى ذاكرة RAM أقل بكثير؟ يجب أن تمنحك الإجابات الثلاثة التالية التي اخترناها لك فهمًا متعمقًا لهذه الظاهرة.

1.

تم تصميم Android لتشغيل تطبيقات Java عبر أي معالج - X86 و ARM و MIPS ، وذلك بسبب القرارات المتخذة في الأيام الأولى لتطوير Android. قام Android أولاً بهذا عن طريق جهاز افتراضي (Dalvik) ، والذي يشبه طبقة الكمبيوتر الظاهري بين الأجهزة الفعلية والبرامج (برنامج Java في حالة Android).

كانت هناك حاجة إلى الكثير من الذاكرة لإدارة هذا الجهاز الظاهري وتخزين كلاً من شفرة بايت Java ورمز آلة المعالج بالإضافة إلى تخزين النظام اللازم لترجمة شفرة بايت Java إلى رمز آلة معالج جهازك. في هذه الأيام ، يستخدم Android وقت تشغيل يسمى ART لتفسير (وتجميع!) التطبيقات - التي لا تزال بحاجة إلى الجلوس في جزء كبير من الذاكرة ، ولكنها لا تستهلك ما يقرب من ذاكرة الوصول العشوائي (RAM) القديمة مثل Dalvik VM القديمة.

تم تصميم Android أيضًا ليكون منصة متعددة المهام مع خدمات خلفية ، لذلك في الأيام الأولى كانت هناك حاجة إلى ذاكرة إضافية لهذا (ولكنها أصبحت أقل أهمية الآن مع وجود iOS مع مهام خلفية).

تم تصميم iOS لتشغيل تطبيقات Objective-C على أجهزة معروفة ، وهو معالج ARM. نظرًا لأن Apple تتمتع بالتحكم الكامل في الأجهزة ، فيمكنها اتخاذ قرار تشغيل رمز الجهاز الأصلي (لا يوجد جهاز افتراضي) مباشرة على المعالج. كل شيء في iOS أخف وزنًا بشكل عام بسبب هذا ، وبالتالي فإن متطلبات الذاكرة أقل بكثير.


في الأصل ، لم يكن لدى iOS مهام خلفية كما نعرفها اليوم ، لذا في الأيام الأولى ، كان بإمكانها الوصول إلى ذاكرة RAM أقل بكثير مما يحتاجه Android. تعتبر ذاكرة الوصول العشوائي باهظة الثمن ، لذا فإن أجهزة Android تكافح مع عدم وجود ذاكرة كافية لبضع سنوات في الأيام الأولى ، حيث تستخدم أجهزة iOS بسعادة 256 ميجا بايت وأجهزة Android تكافح بسعة 512 ميجابايت.

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

2.

تم بناء الجهاز الافتراضي الأصلي لنظام أندرويد ، Dalvik ، في عصر لم تكن فيه الصناعة تعرف بنية وحدة المعالجة المركزية التي ستهيمن على عالم الأجهزة المحمولة (أو حتى لو أراد أحد). وبالتالي ، فقد تم تصميمه من أجل X86 و ARM و MIPS مع مساحة لإضافة تصميمات مستقبلية حسب الحاجة.

أدت ثورة iPhone إلى تحرك الصناعة بالكامل تقريبًا لاستخدام بنية ARM ، لذا فقد فقدت مزايا توافق Dalvik إلى حد ما. والأكثر من ذلك ، كان Dalvik شديد الاستهلاك للبطارية - ذات مرة كان عمر أجهزة Android مروّعًا للبطارية (أقل من يوم واحد) ويمكن أن تستمر أجهزة iOS بضعة أيام.


يستخدم Android الآن وقت تشغيل جديد يسمى Android RunTime (ART). تم تحسين وقت التشغيل الجديد هذا للاستفادة من المعالجات المستهدفة إلى أقصى حد ممكن (X86 و ARM و MIPS) - ومن الأصعب قليلاً إضافة بنى جديدة.

ART لا تختلف كثيرا عن Dalvik ؛ يقوم بتخزين شفرة بايت Java المترجمة على أنها كود ثنائي لآلة الخام لجهازك. (هذا هو Dalvik ، وليس ART.) تقوم Art بتجميع شفرة بايت Java أثناء تثبيت التطبيق (كيف يمكنني أن أنسى هذا؟ أجرت Google مثل هذه الصفقة الضخمة حولها أيضًا!) ولكن في هذه الأيام ، تستخدم أيضًا مترجم JIT مشابهًا لـ Dalvik للحفظ من أوقات التثبيت / التحسين المطولة.

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

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

تذكر مديري المهام على أندرويد؟ لم تعد هناك حاجة إلى حد كبير لأن نظام التشغيل يقوم بعمل رائع بمفرده. ربما يكون قتل المهام بشكل عام أسوأ لهاتفك الآن لأنه يتراجع



3.

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

https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)

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


سبب هذا الاختلاف تاريخي. يستخدم Android وقت تشغيل Dalvik ، الذي يقترض من Java ، بينما يستخدم iOS Objective-C و Swift الآن ، والذي كان لديه نظام بسيط لإدارة الذاكرة اليدوية (حساب المرجع اليدوي). استخدمت Apple Objective-C لأن هذا هو ما يستخدمونه في نظام التشغيل الخاص بهم - استخدمت Google نظير Java لأنها لغة آمنة حديثة كانت منتشرة على نطاق واسع بحلول وقت إطلاق Android ، وكان من السهل على المطورين تعلمها.

إرسال تعليق

0 تعليقات