1 - التركيب البسيط (Monolithic)

Download Report

Transcript 1 - التركيب البسيط (Monolithic)

‫مادة نظم تشغيل شبكية ‪2‬‬
‫المحاضرة الثانية‬
‫إدارة النواة‬
‫تحديثها – إنشاء نسخ احتياطية منها‬
‫إعداد المهندس وسام المحمود‬
‫مقدمة‬
‫• نظام التشغيل هو أول برنامج تشاهده عند تشغيل جهازك وآخر‬
‫برنامج تشاهده عند إغالق جهازك وهو عبارة عن حزمة برامج‬
‫تجعل جهاز الحاسب يعمل بشكل صحيح‪ .‬يقوم بإخبار الحاسب‬
‫كيف يتعامل مع البرامج األخرى ويتحكم في المكونات المادية‬
‫المركبة على الجهاز‬
‫• هو برنامج حاسوبي يم ّكن أجهزة الكمبيوتر ‪ hardware‬على‬
‫االتصال و العمل مع برامج الحاسوب ‪ .software‬بدون نظام‬
‫تشغيل ‪ ،‬الحاسوب سيكون عديم الفائدة‪ .‬كما أن نظام التشغيل يوفر‬
‫بيئة تم ّكن مستخدم الجهاز من تشغيل البرامج بشكل سهل وفعّال‬
‫ويوفّر حماية لنظام الكمبيوتر من األخطار والتدخالت التي يمكن‬
‫أن تسببها هذه البرامج‪.‬‬
‫ً‬
‫أوال ‪ :‬بنية نظم ألتشغيل‬
‫‪ ‬هناك عدة طرق لبناء وتركيب نظم التشغيل وهي ‪:‬‬
‫‪ (1‬التركيب البسيط )‪(Monolithic‬‬
‫‪ (2‬تركيب الطبقات )‪(Layered‬‬
‫‪ (3‬تركيب النواة الصغيرة ) ‪(Microkernel‬‬
‫‪ (4‬تركيب الوحدات )‪(Modules-based‬‬
‫‪ - 1‬ألتركيب ألبسيط )‪(Monolithic‬‬
‫‪ ‬بحيث يكون نظام التشغيل في مستوى واحد أو في مستويين‬
‫• الميزة الرئيسية‬
‫– تكلفة التفاعالت الداخلية في النظام تكون منخفضة ألنها جميعا تقع‬
‫على نفس المستوى‪.‬‬
‫• العيوب‬
‫– صعوبة الفهم‬
‫– صعوبة التعديل‬
‫– صعوبة الصيانة‬
‫– غير موثوق فيه‬
‫‪ - 2‬تركيب ألطبقات )‪: (Layered‬‬
‫‪ ‬أي أن نظام التشغيل مقسم لطبقات (مستويات) بحيث يكون كل‬
‫جزء من النظام في طبقة مستقلة‬
‫‪ ‬الطبقة ‪ )layer 0( 0‬مخصصة للعتاد )‪(Hardware‬‬
‫والطبقة ‪ (layer N) N‬مخصصة لواجهة المستخدم‬
‫• الميزة الرئيسية‬
‫– وجود الطبقات أدى إلى تسهيل عملية الصيانة‪.‬‬
‫• العيوب‬
‫– المشكلة تكمن في عملية ترتيب الطبقات ‪ ،‬فال توجد لدينا طريقة‬
‫واضحة للترتيب‬
‫‪ - 3‬تركيب ألنوأة ألصغيرة ) ‪(Microkernel‬‬
‫• تكون نواة النظام في هذا التركيب صغيرة جدا ‪ ،‬وال يوضع‬
‫بداخلها سوى الوظائف األساسية‬
‫• أما الوظائف األخرى فتوضع في مساحة المستخدم ‪ ،‬ويكون‬
‫االتصال بين مساحة المستخدم والنواة عن طريق‬
‫الرسائل العابرة )‪(message passing‬‬
‫• الميزات‬
‫– من السهل توسيع (تمديد) النظام‬
‫– النظام أكثر ثقة وأكثر أمنا‪.‬‬
‫• العيوب‬
‫– االتصال بين مساحة المستخدم ونواة النظام عملية مكلفة‬
‫‪ - 4‬تركيب ألوحدأت )‪(Modules-based‬‬
‫‪ ‬معظم أنظمة التشغيل الحديثة مبنية بهذه الطريقة ‪ ،‬حيث تكون‬
‫النواة األساسية في المركز وبقية الوظائف تتفرع منها ‪ ،‬وهي‬
‫مشابهة للطبقات ولكن أكثر مرونة وأكثر كفاءة‪.‬‬
‫‪ ‬أنظر الشكل‬
‫نظام ‪UNIX‬‬
‫• يتكون نظام ‪ UNIX‬من األقسام‬
‫الرئيسية التالية ‪:‬‬
‫‪ (1‬النواة ‪( Kernel‬وهي موضوع‬
‫دراستنا)‬
‫‪ (2‬الغالف ‪ : Shell‬الواجهة التي نعتمد‬
‫عليها في تطبيق األوامر ومن خاللها‬
‫يقوم المستخدم بما يريد من مهام‬
‫يحتوي الغالف على المترجم وهو‬
‫الجزء المسؤول عن تحويل األمر‬
‫الصادر عن المستخدم إلى لغة تفهمها‬
‫النواة‬
‫‪ (3‬نظام الملفات ‪File System‬‬
‫ً‬
‫ثانيا ‪ :‬ألنوأة‬
‫• يسبب موضوع النواة ‪ Kernel‬الكثير من االلتباس لدى كثير‬
‫من الناس وال يوجد تعريف أو شرح يفي باحتياجات المستخدم‬
‫حول النواة وكيف تعمل‪ ,‬كيف يتم تثبيتها‪ ,‬وكيف يتم التغلب على‬
‫مشاكل التشغيل واالستخدام‬
‫• سبب ذلك أن النواة تغطي مواضيع هائلة التشعب وتعتبر‬
‫موضوع متقدم جدا ومن المستحسن أن ال تقوم بالعبث بالنواة ما‬
‫لم تكن مدركا لعواقب هذه األعمال حيث قد تخسر القدرة على‬
‫االتصال باالنترنت أو تشغيل الواجهات الرسومية أو الطباعة أو‬
‫القدرة على تشغيل النظام إذا تم العبث بخيارات النواة إال إذا كان‬
‫الهدف تعليمي لتتمكن من اكتشاف خصائص البناء للنواة‬
‫وتأثيرها على األداء‬
‫تعريف ألنوأة‬
‫•‬
‫•‬
‫•‬
‫•‬
‫هي القلب النابض لنظام التشغيل مهما كان نوع هذا النظام‬
‫‪ Linux‬أو ‪ Windows‬أو ‪..... MAC‬‬
‫حيث أن النواة هي التي تتعامل مع العتاد المادي للحاسب‬
‫‪ HardWare‬وتنظم عمله أي تعمل كوسيط بين العتاد‬
‫والتطبيقات‬
‫تتعامل النواة مع العتاد الصلب مباشرة ‪low-level‬‬
‫تقوم النواة بمهام النظام الحرجة ومن هذه المهام ‪:‬‬
‫نذكر المهام لرئيسية فقط ‪.‬‬
‫‪ – 1‬أ إالقالع ‪booting‬‬
‫• كل شيء يبدأ من الصفر أي عندما نضغط على زر تشغيل‬
‫الحاسب تقوم اللوحة األم بتشغيل الـ ‪ BIOS‬الخاص بها للتحقق‬
‫من األجهزة المركبة‬
‫• بعدها يبحث عن ‪ MBR‬في القرص الصلب وهو سجل اإلقالع‬
‫األساسي‬
‫• هنا يأتي دور برنامج ‪boot strap loader‬‬
‫أو ما يعرف بمحمل اإلقالع وتوجد عدة أنواع منه كـ ‪ lilo‬أو‬
‫‪ grub‬حيث يتم التوجيه ثم يتم تشغيل النواة وسيتم تفاعل النواة‬
‫حيث تتعرف على العتاد ويجري تحميل ‪ Mount‬لقرص‬
‫الصلب واالتصال باألنترنت و ‪......‬‬
‫• سوف ترى هذه األحداث تحدث أمامك "الكتابة السريعة أثناء بدء‬
‫التشغيل" بعد أن تنتهي النواة من تحميل التشغيل يتم تسليم المهام‬
‫إلى ‪ init‬وهو من يقوم بتشغيل البرامج ويتيح لك الدخول للنظام‬
‫‪log in‬‬
‫• هنا ينتهي دور الـ ‪ BIOS‬ويصبح بإمكانك العمل على الحاسب‬
‫عن طريق البرامج المعدة لتكون واجهة مع المستخدم‬
‫• طبعا ً النواة هي صلة الوصل بين البرامج والعتاد‬
‫‪ – 2‬إأدأرة ألمهام‬
‫• بعد أن يعمل نظامك سيكون هناك الكثير من البرامج تعمل وكل‬
‫برنامج يسمى بـ ‪process‬‬
‫• لتتمكن من رؤية البرامج التي تعمل لديك حاليا قم بتشغيل المر‬
‫التالي ‪ ps –ax‬في سطر األوامر ستدهش من عدد البرامج‬
‫التي تعمل لديك حاليا‬
‫• والنواة تتحكم بكل هذه البرامج وكل برنامج يحصل على قدر‬
‫عادل من موارد النظام‬
‫• حيث تعطي كل برنامج حقه من الـ ‪ RAM‬والمعالج والـ‬
‫‪SWAP‬‬
‫‪ – 3‬أتصال بين ألبرأمج فيما بينها ‪IPC‬‬
‫• أو ما يسمى ‪Inter Process Communication IPC‬‬
‫• تقوم النواة بإدارة االتصاالت بين البرامج ببساطة‬
‫• برامج مختلفة تحتاج لطريقة تواصل فيما بينها والنواة توفر‬
‫وسط اتصال فيما بينها يتم استخدام ذاكرة مشتركة "كل برنامج‬
‫يسمي جزء من الذاكرة التي تم إعطائه من قبل النواة ويقوم‬
‫البرنامج بوضع صالحيات القراءة والكتابة والتنفيذ والسماح‬
‫للبرامج األخرى مشاركته المعلومات في الذاكرة وهكذا يتم‬
‫مشاركة المعلومات واالتصاالت‬
‫‪ – 4‬ألتعامل مع ألعتاد‬
‫• نظام التشغيل الغير قادر على التعامل مع العتاد سيكون نظام‬
‫غير عملي‬
‫• هنا النواة توفر القدرة على التعامل مع العتاد للبرامج األخرى‬
‫لتقوم النواة بهذا يجب أن يكون لديها مجموعة من األوامر العامة‬
‫لنوع الجهاز وتعريف خاص بهذا الجهاز ليخبر النواة كيف تقوم‬
‫بهذه األوامر العامة‬
‫• مثال أمر قراءة وكتابة ألجهزة التخزين‬
‫‪ - 5‬نظام ألملفات ألظاهري ‪VFS‬‬
‫• ليتم دعم أنظمة ملفات متعددة مثال ‪ vfat , ext‬تحوي النواة‬
‫وسيط اسمه ‪ VFS‬وهو يوفر طريقة موحدة للتعامل مع نظام‬
‫الملفات بالرغم من اختالف نوع نظام الملفات‬
‫• عندما يرسل برنامج أمر كتابة إلى موقع ‪ X‬في القرص الصلب‬
‫• يقوم ‪ VFS‬بترجمة هذا األمر ألمر ذو معنى في نظام الملفات‬
‫الذي في القرص الصلب‬
‫• إذا يتضح لنا أن نظام الملفات الظاهري يماثل تعريف لعتاد لكنه‬
‫ألنظمة الملفات‬
‫• ونظام الملفات الظاهري جزء أساسي من النواة‬
‫بعض وظائف ألنوأة أالخرى‬
‫• إدارة المعالج ‪Processor Management‬‬
‫• إدارة الذاكرة ‪Memory Management‬‬
‫• إدارة المكونات المادية ‪Device Management‬‬
‫• إدارة عملية التخزين ‪Storage Management‬‬
‫• واجهة التطبيقات ‪Application Interface‬‬
‫• واجهة المستخدم ‪User Interface‬‬
‫ً‬
‫ثالثا ‪ :‬أنوأع ألنوأة‬
‫‪ Monolithic (1‬النواة األحادية ‪:‬‬
‫– كود ضخم يحتوي جميع متطلبات العمل كجزء منها وله عنوان وحيد في‬
‫الذاكرة‬
‫– مستخدمة في توزيعات ‪ Linux‬بكثرة‬
‫– ميزاتها ‪:‬‬
‫‪ ‬تحوي عدد كبير من تعاريف األجهزة‬
‫‪ ‬سرعة عالية ألنها تتعامل مع الذاكرة مباشرة‬
‫‪ ‬استقرار ال مثيل له‬
‫– عيوبها ‪:‬‬
‫‪ ‬معقدة جدا في برمجتها‬
‫‪ ‬لو حدث خطأ واحد في جزء منها يختل النظام ككل‬
‫‪ ‬عند إضافة أي ‪( Module‬تعريف ألحد القطع) للنواة يجب إعادة تجميع‬
‫النواة من جديد لتعمل بشكل صحيح‬
‫‪ Microkernel (2‬النواة المصغرة‬
‫• في هذا النوع تكون النواة مقسمة إلى أجزاء فإن حصل خطأ في‬
‫جزء فلن يتوقف النظام ككل لكن لهذا التقسيم عيب أيضا ً أنه‬
‫يسبب بطئ في النظام بسبب كثرة االتصاالت بين هذه األجزاء‬
‫ً‬
‫رأبعا ‪Module Manager :‬‬
‫‪ ‬أو ما يسمى بإدارة الوحدات النمطية وهو يقابل الـ ‪ Drivers‬في‬
‫أنظمة ‪Windows‬‬
‫‪ ‬طبعا أنت ال تستخدمهم لكن تعمل النواة والتعاريف في النظام‬
‫دونما تكون ظاهرة ولكن من المفيد أن تعرف أن التعاريف‬
‫موجودة وأي التعاريف تعمل حاليا وكيف تطلب تحميل تعريف‬
‫وإزالة تعريف وما هي المهام التي بنية مع النواة نفسها‬
‫‪ ‬إذا كنت ترغب في معرفة ما هي التعريفات المتوفرة يمكنك‬
‫البحث في مجلد‬
‫‪/lib/modules/kernelNo./kernel/drivers/‬‬
‫مثال ‪/lib/modules/2.6.9/kernel/drivers/‬‬
‫• تكون بعض‬
‫التعريفات مفعلة‬
‫والبعض اآلخر غير‬
‫مفعل‬
‫• لعرض التعريفات‬
‫المفعلة حاليا لديك‬
‫يمكنك استخدام األمر‬
‫‪lsmod‬‬
‫• ليتم تفعيل تعريف يمكنك‬
‫استخدام األمر ‪modprobe‬‬
‫• مثال لدي كرت شبكة من نوع‬
‫‪Real Tek RTL8193‬‬
‫• لتفعيل التعريف نستخدم األمر‬
‫‪modprobe 8139too‬‬
‫• ال حظ بعد استخدام األمر‬
‫السابق وجود التعريف لدى‬
‫سرد التعريفات المتوفرة‬
‫• لحذف تعريف معين يمكنك استخدام األمر ‪rmmod‬‬
‫• مثال لي كرت شبكة من نوع ‪Real Tek RTL8193‬‬
‫• يمكنك حذف التعريف من خلل األمر التالي ‪:‬‬
‫‪rmmod 8139too‬‬
‫• تقوم النواة بتحميل التعريفات تلقائيا عند بدء التشغيل من خالل‬
‫ملف يمكنك تعديله حسب االحتياج وهو‬
‫‪/etc/rc.d/rc.modules‬‬
‫ً‬
‫خامسا ‪ :‬ترقية (تحديث) ألنوأة‬
‫‪ ‬النواة ليست ثابتة وإنما تتوفر نسخ حديثة منها‬
‫‪ ‬ال تنتظر حتى يتم تحديث التوزيعة التي تستخدمها بشكل كامل‬
‫فالنواة هي التحديث الذي يهمنا‬
‫‪ ‬للحصول على أي اصدار تريد يمكنك زيارة الموقع‬
‫‪www.kernel.org‬‬
‫‪ ‬يمكنك التعرف على النواة التي لديك بشرط أن تكون مستخدم‬
‫جذري باستخدام األمر ‪uname –a‬‬
‫‪ ‬لمعرفة آخر التحديثات نزور الموقع ‪www.kernel.org‬‬
‫• يجب أن نختار النسخة المستقرة ألنها مجربة وأثبتت استقرارها‬
‫• سنتعلم اآلن كيف نقوم بتحديث النواة عن طريق إنشاء ملف‬
‫‪.config‬‬
‫• في البداية نقوم بتحميل نواة جديدة مستقرة‬
‫• مالحظة ‪ :‬نضغط على ‪ F‬لتحميل المصدر كامال‬
‫• ثم نقوم بفك الضغط‬
‫• ندخل إلى مجلد النواة بعد فك الضغط الحظ في السطر الثاني‬
‫سيظهر مسار المجلد في سطر األوامر‬
‫• نقوم بتهيئة النواة باستخدام األمر‬
‫‪ Make config‬ويكون الناتج كما يلي ‪:‬‬
‫• لكن هذا األمر يتطلب أن نعرف كل كبيرة وصغيرة عن النظام‬
‫وسيسأل عن العديد من الخيارات إن كنا نود تفعيلها أو ال‬
‫يمكن تفادي ذلك باستخدام األمر ‪Make Deconfig‬‬
‫• واآلن لكي نستطيع التعديل على النواة يجب توفر المكتبات‬
‫‪QT‬و ‪GKT‬‬
‫• يمكن تحميلهم بأن نكتب األمر ‪sudo apt-get update‬‬
: ‫• بعدها نحمل البرامج كالتالي‬
sudo
sudo
sudo
sudo
sudo
sudo
sudo
apt-get
apt-get
apt-get
apt-get
apt-get
apt-get
apt-get
install
install
install
install
install
install
install
build-essential
kernel-package
gcc
gcc-3.4
libncurses5
libncurses5-dev
libqt4-mt-dev
‫• بعد تحميلهم يمكننا التعديل على النواة باستخدام أحد األوامر‬
‫التالية‬
‫‪make menuconfig‬‬
‫‪make gconfig‬‬
‫‪make xconfig‬‬
make menuconfig (1
make gconfig (2
make xconfig (3
‫ً‬
‫سادسا ‪ :‬بناء ألنوأة‬
‫‪ ‬اآلن أصبح‬
‫باإلمكان بناء‬
‫النواة التي‬
‫حملناها‬
‫وعدلنا عليها‬
‫‪ ‬لبناء النواة‬
‫نستخدم األمر‬
‫‪Make‬‬
‫طبعا من‬
‫مسار النواة‬
‫• يمكن استخدام األمر التالي ‪:‬‬
‫• ”‪make O=~/home/”my folder‬‬
‫• وذلك للحفاظ على ملفات النواة المصدرية وحفظ النواة الجديدة‬
‫في مجلد خاص‬
‫• بهذا تكون النواة الجديدة جاهزة لكنها ال تعمل على النظام‬
‫• لكي نقوم بتثبيت النواة على النظام يجب أوال االنتقال إلى‬
‫المستخدم الجذر ‪Root‬‬
‫للحصول على كافة الصالحيات للتعديل على النظام‬
‫• ننتقل إلى مجلد النواة ونكتب األمر‬
‫‪sudo make modules_install‬‬
‫• حيث يقوم هذا األمر بتثبيت تعريفات العتاد‬
‫• ويضعها في المجلد‬
‫******** ‪/lib/modules/kernel‬‬
‫• ولتثبيت النواة نستخدم األمر ‪sudo make install‬‬
‫• تمكن هذه الطريقة من إنشاء صورة جديدة في ‪ /boot‬ونختار‬
‫أي إصدار للنواة سنستخدم‬
‫• بقي أن نعدل على محمل اإلقالع لتحديد النواة التي ستعمل عند‬
‫تشغيل الجهاز‬
‫• هناك نوعان مشهوران من محمالت اإلقالع وهما ‪Grub‬‬
‫و‪LiLo‬‬
‫• أيا منهما تستخدم ؟‬
‫• اذهب إلى المجلد ‪ /boot‬إذا وجدت ملف اسمه ‪Grub‬‬
‫هذا يعني أنك تستخدم ‪Grub‬‬
‫• أما الثاني فيوجد في المجلد ‪ /etc‬واسمه ‪lilo.conf‬‬
‫• طبعا هناك طرق كثيرة للتعديل على محتواهما سنستخدم األمر‬
‫التالي ‪:‬‬
‫‪sudo gedit /boot/grub/menu.lst‬‬
‫• بنفس الطريقة إذا كان لديك ‪ LILO‬نفتح الملف من المسار‬
‫‪/etc‬‬
‫شكرا ً لحسن‬
‫إصغائكم‬