الاثنين، 6 سبتمبر 2010

جوجل كروم (ما وراء الكواليس) - جزء 1



في بداية ظهور المتصفحات , كانت تُستخدم لعرض صفحات الانترنت , و لكن اليوم ظهرت تطبيقات تعمل على شبكة الانترنت من خلال المتصفح مثل تطبيقات الفيديو و الدردشة و العاب الانترنت و غيرها الكثير من التطبيقات التي لم تكن موجودة عند بداية ظهور متصفحات الانترنت لأول مرة.

و مع انتقال الكثير من المهام التي يقوم بها المستخدم الى شبكة الانترنت مثل ارسال البريد الالكتروني و معالجة النصوص على شبكة الانترنت و في كلتا الحالتين قد تكون هناك معلومات مهمة بالنسبة للمستخدم و التي لا تحتمل حدوث أي خطأ أو توقف غير متوقع للمتصفح أثناء العمل عليه قد يؤدي الى ضياع المعلومات , فأصبح هناك حاجة ملحة لأن يكون المتصفح أكثر استقرارا و ثباتا.

كذلك السرعة في التشغيل و الاداء و عرض الصفحات أمر مهم جدا بالنسبة لأي متصفح . و كون العنصر الاساسي الذي تقوم عليه أغلب التطبيقات التي تعمل على شيكة الانترنت (مثل بريد gmail ) هو لغة جافا سكريبت JavaScript أصبح هناك ضرورة لايجاد حلول حتى يصبح تنفيذ هذه اللغة أسرع .

سنذكر بشيء من التفصيل كيف قام جوجل كروم بتوفير هذه الميزات :

1- الاستقرار و تعدد العمليات Stability and multi process architecture

تكمن المشكلة الاساسية في أغلب المتصفحات كونها "أحادية العملية" single process ! , وهذا يعني أنه يلا يمكن تنفيذ سوى مهمة واحدة في نفس اللحظة , فعلى سبيل المثال : لو أن هناك كود جافا سكريبت بتم تنفيذه سيبقى المتصفح في حالة خمول بدون اي اداء اي مهمة اخرى حتى ينتهي من تنفيذ الكود وارجاع النتائج , و من أجل تفادي هذه المشكلة قام المطورون بانشاء مكتبات برمجية بحيث تكون احادية الاتجاه "Asynchronous API".

الحل البديهي الذي ممكن ان نخرج به هو تقسيم العملية الى عدة (ثريد) threads - لم أدر ما هو معناها بالعربية - هذا ممكن !

ولكن لما لا يكون لدينا عدة عمليات multi-process , كل عملية لديها حصتها من الذاكرة الخاصة بها , و لديها نسخة خاصة بها من المتغيرات وهياكل البيانات بحيث تعمل كل عملية على حدى وبشكل منفصل بحيث لا يؤثر أداء اي عملية على الاخرى (processes isolation) , اذن لدينا أصبح عدة عمليات كل عملية يمكن تمثيلها بتوبيب tab في المتصفح. و عندها أصبح بالامكان تنفيذ كود الجافا سكريبت بدون تعطيلك عن القيام بالمهام الاخرى :)
نفس الشيء في حال حدوث أي مشكلة أو خطأ فانه لن يتم اغلاق كل المتصفح , ولكن سيتم اغلاق فقط التبويب tab الذي حدثت فيه المشكلة(من خلال انهاء العملية الخاصة به) مع بقاء باقي المتصفح يعمل بسلام.

قد يتبادر للبعض ان هذا سيؤدي الى استهلاك أكبر للذاكرة بحيث ان كل عملية لها المساحة الخاصة بها من الذاكرة و لكن في الواقع هذا غير صحيح .. ففي المتصفحات التقليدية احادية العلمية عند انشاء توبيب جديد tab فانه يأخذ حصة من مساحة الذاكرة المحجوزة للعملية التي تشغل النتصفح, ولكن عند اغلاق هذا التبويب فانه لا يتم تحرير المساحة الخاصة به من الذاكرة فاما انا تبقى مساحة غير مستخدمة ولا يوجد مؤشر يشير اليها أو يوجد مساحة لا يمكن الوصول اليها (لا يمكن تحرير المساحات المفرغة الا عند انتهاء العملية ككل ),, ففي هذه الحالة المساحة الناتجة عن اغلاق التوبيبات لا يمكن اعادة استخدامها لتشغيل تبيويات جديدة , و مع مرور الوقت سيضطر نظام التشغيل الي توسيع الحصة المخصصة للمتصفح من ذاكرة الحاسوب , و هذا بالتأكيد سيؤدي الى بطء في البرنامج و نظام التشغيل ككل (و بالتأكيد اغلاق التبويبات لن يحل المشكلة أبدا, بل سيزيدها سوءا !!) الحل هو قتل العملية وتحرير الذاكرة الخاصة بها و البدء من جديد !

ولكن بالطريقة التي يعمل بها الكروم فانه قدم الحل الامثل لهذه المشكلة بتعامله مع كل تبويب على انه عملية مستقلة فعند اغلاق التبويب فانه ببساطة سيتم تحرير حصتها من الذاكرة لتكون متاحة للاستخدام لاي عملية اخرى (قد تكون تبويب أخر) . تماما كما في انظمة التشغيل اصبح بامكان متصفح كروم من خلال "مدير المهام Google chrome task manger" الخاص به , أصبح بالامكان مراقبة المواقع التي يتم العمل عليها و أخذ احصائيات عن مقدار استهلاك كل موقع من الذاكرة و سرعة الانترنت و من المعالج , و هذا يعطي مرونة كبيرة في التحكم و ادارة موارد النظام بشكل فعال. و عندها تستطيع القاء اللوم على الموقع الذي يستحق ذلك و الذي يسرف في استهلاك موارد النظام (Placing blame where blame belongs ) :) :)


يتبع ,,

هناك 4 تعليقات:

  1. لفتة جميلة ,,
    firefox 4 يعمل بنفس التقنية أيضا يعيب كروم ما يعيب فايرفوكس 3 وباقي المتصفحات طريقة عرض الالسنة المبوبة ولكن firefox 4 باستخدام تقنية بانوراما قد حل المشكلة واعتقد ان هذه ميزة جميلة فيه !
    أيضا لا تنسى الدور الكبير للاضافات في استهلاك الذاكرة والمعالج وقد تتسبب في انهيار المتصفح بشكل كامل

    أعتقد ان كروم غير جاهز للمنافسة حتى الآن وان كان قد انتشر بشكل لا بأس به لكن ما زال ينقصه الكثير من التطوير

    شكرا

    ردحذف
  2. كلامك حلو , لا شك انو الفيرفوكس نمبر 1 , لكن كروم قادم بقوة ليكون في المركز الأول في الفترة القريبة جدا ..
    http://internet-browser-review.toptenreviews.com/

    شوف فيش هالفروق الكبيرة بين الكروم والفيرفوكس .. تحياتي

    ردحذف
  3. صحيح بس النسخة القادمة من الفيرفوكس رح تعمل فرق كمان

    ردحذف
  4. من منطلق كوني احد مستخدمي الكروم اجد للكروم مزايا رائعة جدا من ناحية اداء و سرعة .. لاكنه كما قال صديقي محمد طه سابقا .. لازال يحتاج بعض التطوير ..

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

    و في النهاية انا لست منحازا لاي متصفح .. الافضل سأستخدمه .. اي لو طرحت فايرفوكس نسخة جديدة تفوق الكروم سأستخدمها فورا و سأستغني عن الكروم .

    ردحذف