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


الأستاذ / جمـال إبراهيم عوض الله .Prof.Gamal Ibrahim Awadallah
 
الرئيسيةمكتبة الصورالتسجيلدخول

شاطر | 
 

 أنظمة التشغيل - الأدوات

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
Prof.gamal
Admin
Admin
avatar

ذكر عدد الرسائل : 1311
العمل : معلم وقـائـد كشـفـي
تاريخ التسجيل : 25/01/2008

مُساهمةموضوع: أنظمة التشغيل - الأدوات   الأربعاء مايو 21, 2008 8:23 am

أنظمة التشغيل - الأدوات

ما تحدثنا عنه في نظام التشغيل كان شيئاً لا تراه إنه يعمل بين البرنامج أو المكتبة من جهة وبين الأجهزة من جهة أخرى؛ هذا ما نسميه نواة. ولكن بقية برمجيات النظم التي تتعامل معها تسمى أدوات النظام أو برمجيّات النظام. في بعض الأنظمة يكون كل شيء قطعة واحدة صندوق أسود BlackBox لا تستطيع فصل هذه عن تلك ولكن في غنو/لينكس النواة هي لينكس والبرمجيات من غنو (يوجد خيارات أخرى مثل GNU/HURD)
عندما تكتب برنامج بلغة معينة فإنك تكتبه بمحرر نصوص وهذا أول وأبسط مكونات برمجيّات النظام ففي غنو كان محرر emacs أول قطعة فيه (هل قلت أبسط !؟) ثم يأتي المصنف compiler الذي يمكنك من تحويل كود اللغة إلى برنامج يمكن تنفيذه وطبعاً لا ننس مفسر الأوامر التي تطبعها. في بعض الأنظمة تكون الواجهة الرسومية جزء من النظام ولا يمكن تخطيها


أنظمة التشغيل - التعريفات و modules

التعريفات device driver و modules وهما أمران مختلفان تقنياً لكن في الغالب يؤديان نفس الوظيفة (الثانية أشمل من الأولى) ، لينكس يعتمد modules لهذا إذا قلنا Linux device driver فحن نقصد أحد أنواع modules .
قلنا أن النظام دووس يستعمل مقاطعة interrupt ثابتة هي 21 (ست-عشري). برنامج التعريف يقوم بتخزين مؤشر إلى موقع هذه المقاطعة في الذاكرة ثم بإعادة برمجة هذه المقاطعة لتشير إلى عنوان البرنامج نفسه (التعريف) ، ثم الخروج دون تحرير الذاكرة لهذا يسمى TSR أي Terminate but Stay Resedent in memory (وهي بالمناسبة طريقة مشابهة لعمل الفيروسات). عندما يريد برنامج ما الإتصال بنظام التشغيل يضع كما قلنا رقم الوظيفة في المسجل ax ثم يستدع المقاطعة 21 ولكنها لا تشير لنظام دووس بل للتعريف الآن ينظر التعريف هل الوظيفة في ax تخصه (مثلاً إذا كان تعريف جهاز قرص فإن ما يخصه فتح الملفات) - نعم يتصرف وإلا يستدع نظام التشغيل (لهذا حفظ عنوانه). إذا كان هناك أكثر من تعريف فإن كلاً منها يظن أن الذي قبله هو النظام واستدعاء النظام يحتاج للمرور بها كلها وفي حال تعطل أحدها تنقطع السلسلة، كما أن إزالتها لا تتم إلا بالتقشير من الآخير للأول إضافة إلى أن مسؤولية هذه العملية تقع على كل تعريف (لأنه وحده يملك عنوان ما كان قبله) . كان هذا عن برامج TSR مثل تلك التي تعرف اللغة العربية (الشاشة والمفاتيح) أما التعريفات التي توضع في config.sys وتحمل بأمر DEVICE فإنها تُحمل عند الإقلاع فقط ولا يمكن إزالتها إلا بإغلاق الجهاز، وهي لها هئية خاصة بها وطريقة للتتبع ولا حاجة لأن تعيد برمجة المقاطعة أو تستعمل TSR.


أما النظام لينكس فله ميّزة فريدة لتوسيع إمكانات النواة هي وحدات النواة kernel modules التي هي جزء من كود النظام (هي عبارة عن كود هدف object code) تذكر أن أي مشروع من عدة ملفات يتم تصنيفها إلى ملفات هدف object ثم ربطها معاً linking. ولكن هنا لا تربط هذه مع النواة وتترك ليتم تحميلها لاحقاً وذلك بإضافتها إلى نفس صفحة الذاكرة الافتراضية للنواة. بكلمات أخرى يمكنك تصنيف برنامج وإلحاقه بالنواة بهذه الطريقة (مثلاً يوجد خادم إنترنت -كما apache- اسمه tux وهو عبارة عن جزئين أحدهما عبارة عن kernel module حطم الأرقام القياسية في السرعة) أي module يجب أن يحتوي وظيفتين باسم init_module و cleanup_module (الوظيفتان دون معاملات والأولى تعيد int والثانية بلا) كما تحتوي على متغير عام char *kernel_version="X.Y.Z" ويمكن أن تحتوي على وظائف أخرى يتم تسجيلها وإضافتها إلى قائمة الوظائف التي توفرها النواة كما يمكن أن تسجل ملفات وهمية ضمن proc انظر Kernel Hacker Guide أو تسجل تعريف لجهاز خاص في dev (لا يتم معرفة الجهاز من اسمه بل من خلال رقمين major و minor ويتم عمل الجهاز بأمر mknod) انظر http://coffee.sf.net عن كيفية ربط آلة صنع القهوة مع الحاسوب ليتحكم بها ببساطة echo 'cappuccino' > /dev/coffee من العبارات المضحكة "يمكن التحكم بمن يسمح له شرب القهوة من خلال أذونات الملف /dev/coffee". أو التحكم في الأجهزة المنزلية http://edc.sf.net المثال التالي من Module-HOWTO وهو فقط يطبع رسالة عند إضافة/إزالة ال module
/* hello.c - dummy kernel module from Module-HOWTO
* Compile this with
* gcc -c hello.c -Wall
* put it in lib/modules and do modprobe hello
*/

#define __KERNEL__ /* We're part of the kernel */
#define MODULE /* Not a permanent part, though. */

#include
#include
#define _LOOSE_KERNEL_NAMES

#include /* console_print() interface */

int init_module() {
console_print("Hello, world - this is the kernel speaking\n");
/* or simply use printk("Hello") */
return 0; /* 0 success ; else failed */
}
void cleanup_module() {
console_print("Short is the life of an LKM\n");
}

لاحظ أنك لا تستطيع استعمال المكتبات (لأن المكتبة تستدعي النواة ونحن في النواة) فقط تستطيع استعمال وظائف من داخل النواة مثل printk. لتفهم كيف تتبع عمل الملفات في النواة ارجع إلى Linux 2.4.x Initialization for IA-32 HOWTO لمؤلفها Randy Dunlap.

_________________
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://gamalo.coolbb.net
gamalo
عضو جامد للمنتدى
عضو جامد للمنتدى


عدد الرسائل : 140
تاريخ التسجيل : 23/03/2008

مُساهمةموضوع: رد: أنظمة التشغيل - الأدوات   الثلاثاء يناير 24, 2012 11:09 am

مشكور علي هذة المعلومات القيمة
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
 
أنظمة التشغيل - الأدوات
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
طريق المعرفة :: الكمبيوتر و الإنترنت-
انتقل الى: