ما هو الكرنال ؟؟
Kernel ويسمى (النواة) وهو جزء مهم جدا في كل أنظمة تشغيل الكمبيوتر.وهو الذي يدير عملية ال booting ويعتبر الكرنال هو اللغة الوسيطة بين السوفت وير والهاردوير اي بين ما يدخله المستخدم من نتائج وما سوف يجري عليها من عمليات من قبل التطبيقات المختلفة ثم ما سيحصل عليه من نتائج.
اما اللغة التي يتعامل بها الكرنال مع تطبيقات الكمبيوتر المختلفة فهي تسمي (system call). وتختلف كيفية إدارة ال(system calls) تبعا لاختلاف نوع الكرنال فمثلا ال monolithic kernel ينفذ جميع تعليمات نظام التشغيل
في نفس ال adress space لتحسين أداء النظام اما ال microkernel يقوم بتشغيل ال background process الخاصة بنظام التشغيل في ال user space مما يجعل نظام التشغيل اكثر مرونة وبالتالي اسهل للحفاظ عليه.
اما اللغة التي يتعامل بها الكرنال مع تطبيقات الكمبيوتر المختلفة فهي تسمي (system call). وتختلف كيفية إدارة ال(system calls) تبعا لاختلاف نوع الكرنال فمثلا ال monolithic kernel ينفذ جميع تعليمات نظام التشغيل
في نفس ال adress space لتحسين أداء النظام اما ال microkernel يقوم بتشغيل ال background process الخاصة بنظام التشغيل في ال user space مما يجعل نظام التشغيل اكثر مرونة وبالتالي اسهل للحفاظ عليه.
ما هي وظائف الكرنال الاساسية؟؟
1. Memory management: الكرنال لديه الحق في الوصول الكامل الي ذاكرة الجهاز كماانه المسؤل عن وصول التطبيقات اليها وصلا امنا عندما تحتاج ذلك وعندها يكون هناك العديد من التطبيقات التي تعمل معا في نفس الوقت علي نفس الجهاز فان الكرنال يكون مسؤولا عن تنظيم عملية وصول هذه البرامج للذاكرة وتقسيم الذاكرة بينها حتي لا يشغل احد التطبيقات الذاكرة (RAM) بالكامل ويمنع باقي البرامج من الوصول اليها واول خطوة يقوم بها في هذه العملية هي عملية ال virtual adressing والتي تتم عن طريق ال paging or segmentation (الترحيل او التجزئة)
قد تختلف ال virtual adress spaces من عملية لاخري (علي عكس ال physical adress) مما يجعل كل برنامج او تطبيق كانه الوحيد الذي يتعامل مع الذاكرة مما يمنع التطبيقات من ان تتصادم مع بعضها .كما تسمح عملية ال virtual adressing لنظام التشغيل باستخدام وسائل تخرين الـ data الاخري الموجودة في الجهاز كالـ hard disk لتخزين البرامج التي لا تحتاجها حاليا في ال RAM ثم تقوم باعادتها اليها وقت الحاجة (اي ان الكرنال يسمح للجهاز باستخدام مساحة ذاكرة اكبر من المتوفرة حقيقة في الجهاز) .كذلك تقوم عملية ال virtual addressing بتقسيم الذاكرة الي جزئين افتراضيين منفصلين احدهما يتم حجزه للكرنال (Kernel space) ولا يسمح المعالج لاي من التطبيقات الوصول الي هذا الجزء من الذاكرة حتي لا تؤثر باي شكل علي الكرنال ويتم الحفاظ عليه وبالتالي الحفاظ علي نظام التشغيل اما الجزء الذي يسمح للتطبيقات بالوصول اليه فيسمي ال user space.
1. Memory management: الكرنال لديه الحق في الوصول الكامل الي ذاكرة الجهاز كماانه المسؤل عن وصول التطبيقات اليها وصلا امنا عندما تحتاج ذلك وعندها يكون هناك العديد من التطبيقات التي تعمل معا في نفس الوقت علي نفس الجهاز فان الكرنال يكون مسؤولا عن تنظيم عملية وصول هذه البرامج للذاكرة وتقسيم الذاكرة بينها حتي لا يشغل احد التطبيقات الذاكرة (RAM) بالكامل ويمنع باقي البرامج من الوصول اليها واول خطوة يقوم بها في هذه العملية هي عملية ال virtual adressing والتي تتم عن طريق ال paging or segmentation (الترحيل او التجزئة)
قد تختلف ال virtual adress spaces من عملية لاخري (علي عكس ال physical adress) مما يجعل كل برنامج او تطبيق كانه الوحيد الذي يتعامل مع الذاكرة مما يمنع التطبيقات من ان تتصادم مع بعضها .كما تسمح عملية ال virtual adressing لنظام التشغيل باستخدام وسائل تخرين الـ data الاخري الموجودة في الجهاز كالـ hard disk لتخزين البرامج التي لا تحتاجها حاليا في ال RAM ثم تقوم باعادتها اليها وقت الحاجة (اي ان الكرنال يسمح للجهاز باستخدام مساحة ذاكرة اكبر من المتوفرة حقيقة في الجهاز) .كذلك تقوم عملية ال virtual addressing بتقسيم الذاكرة الي جزئين افتراضيين منفصلين احدهما يتم حجزه للكرنال (Kernel space) ولا يسمح المعالج لاي من التطبيقات الوصول الي هذا الجزء من الذاكرة حتي لا تؤثر باي شكل علي الكرنال ويتم الحفاظ عليه وبالتالي الحفاظ علي نظام التشغيل اما الجزء الذي يسمح للتطبيقات بالوصول اليه فيسمي ال user space.
2. Device management: يدير الكرنال وحدات الادخال والاخراج المرتبطة بالكمبيوتر عن طريق ال device drivers (سوفت وير يمكن الكمبيوتر من فهم الطريقة التي يتعامل بها مع الجهاز المتصل به) ونذكر مثالا للتوضيح “لاظهار شئ للمستخدم علي الشاشة : يقوم احد التطبيقات (المسؤل عناظهار النتائج للمستخدم) بارسال طلب الكرنال فيقوم بتمريره الي ال driver الخاص بالشاشة والذي يكون يقوم بعرض النتائج اللازمة علي الشاشة. وهناك طريقتان لتعامل الكرنال مع الاجهزة الملحقة بالكمبيوتر ففي الاجهزة القديمة وبعض الاجهزة الحالية المعدة لغير الاستخدام الشخصي وكذلك ال embaded systems والتي يقوم المستخدم فيها باعادة كتابة الكرنال عند تغير الاجهزة الملحقة.اما في الاجهزة الشخصية الحديثة فهناك طريقة تسمي plug and play وهذا النظام يجعل ال device manager يقوم بفحص جميع المداخل لديه مثل ال USB ,PCI ليتعرف علي الجهاز المتصل ثم يقوم بالبحث عن ال driver المناسب له.
3. System calls : ال system calls هي باختصار الالية التي تستخدمها البرامج لطلب الخدمات من نظام التشغيل او اللغة التي تستطيع البرامج التحدث بها الي الكرنال ويتم ذلك باستخدام ال machine code فنظام التشغيل يقوم عموما بتوفير بعض ال libraries بين نظام التشغيل والبرامج العادية تكون عادة مكتوبة بلغة السي C مثل Glibc) GNU C library) او windows API هذه المكتبات تتولي المهام ال low level مثل تمرير المعلومات الي الكرنال وتبديل الوضع switch mode مثلا من وضع ال supervisor الي وضع ال protection. وهناك انواع مختلفة من ال system calls كل نوع يندرج تحته بعض الاوامر فمثلا هناك بعض الاوامر المتعلقة بال processor كتشغيل او ايقاف برنامج وقد يكون الامر عبارة عن طلب الوصول الي احد الاجهزة الملحقة مثلا (يطلب احد البرامج من الكرنال الوصول الي ال hard disk وانشاء ملف ما عليه) وقد يطلب ايضا انشاء وتنفيذ عمليات جديدة او يتستخدم ال system calls في التواصل مع خدمات الكرنال المتكاملة مثل ال scheduling (الجدولة).
اي ان كل process تستخدم اما مكتبة ال C or API لاستدعاء وظائف الكرنال التي تحتاجها وتختلف هذه الطريقة تبعا لاختلاف نوع الكرنال. في حالة ال memory protection (Memory isolation) لا يمكن لل process الوصول مباشرة الي الكرنال لان ذلك سيكون مخالفا لقواعد تحكم في الوصول الي ال processor وهناك بعض الاحتمالات التي يمكن ان تحدث في هذه الحالة :
• استخدام software simulated interrupt وهذه الطريقة متوفرة في اغلب ال hardwares ومشهورة جدا.
• باستخدام ال call gate وهي عنوان محدد يتم تخزينه في قائمة في ذاكرة الكرنال في مكان معروف لل processor فيتوجه اليه مباشرة دون انتهاك او مخالفة قواعد التحكم هذا الامر يتطلب hardware support وهذا شائع جدا.
• استخدام spcial system call instruction وهذه التقنية تتطلب دعما خاصا من ال hardware متوفر في x64 processors.
• استخدام memory-based queue وهوا عبارة عن تطبيق يقوم بعمل عدد كبير من الطلبات دون انتظار نتيجة احدها كما انه يقوم باضافة تفاصيل الطلبات الي مساحة في الذاكرة يقوم الكرنال بفحصها بشكل دوري للعثور علي هذه الطلبات.
اي ان كل process تستخدم اما مكتبة ال C or API لاستدعاء وظائف الكرنال التي تحتاجها وتختلف هذه الطريقة تبعا لاختلاف نوع الكرنال. في حالة ال memory protection (Memory isolation) لا يمكن لل process الوصول مباشرة الي الكرنال لان ذلك سيكون مخالفا لقواعد تحكم في الوصول الي ال processor وهناك بعض الاحتمالات التي يمكن ان تحدث في هذه الحالة :
• استخدام software simulated interrupt وهذه الطريقة متوفرة في اغلب ال hardwares ومشهورة جدا.
• باستخدام ال call gate وهي عنوان محدد يتم تخزينه في قائمة في ذاكرة الكرنال في مكان معروف لل processor فيتوجه اليه مباشرة دون انتهاك او مخالفة قواعد التحكم هذا الامر يتطلب hardware support وهذا شائع جدا.
• استخدام spcial system call instruction وهذه التقنية تتطلب دعما خاصا من ال hardware متوفر في x64 processors.
• استخدام memory-based queue وهوا عبارة عن تطبيق يقوم بعمل عدد كبير من الطلبات دون انتظار نتيجة احدها كما انه يقوم باضافة تفاصيل الطلبات الي مساحة في الذاكرة يقوم الكرنال بفحصها بشكل دوري للعثور علي هذه الطلبات.


تعليقات
إرسال تعليق