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


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

شاطر | 
 

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

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

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

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

عندما يعمل الحاسوب يتم تشغيل برجية عتادية frameware موجود في ذاكرة القراءة فقط ROM يسمى BIOS أي نظام الإدخال والإخراج الأساسي - Basic Input/Output System

تلميح
ROM في الحقيقة ليست للقراءة فقط؛ إذ يوجد أنواع قابلة لإعادة البرمجة (منها بالأشعة أو بأجهزة خاصة) ولكن الكتابة بها في الغالب مسؤولية الشركة الصانعة فقط.
هذا البرنامج يقوم بعملية فحص تسمى POST أي اختبار التشغيل الذاتي Power On Self Test حيث يتم فحص صلاحية الذاكرة وتلمّس الأجهزة لتحميل وتنفيذ برنامج الإقلاع Boot-Loader. ولكن أهمية BIOS في أنه يوفر وظائف BIOS Calls التي تسهل كتابة البرامج. كما قلنا لغة الآلة (والتجميع) توفر تعليمات داخلية للتعامل مع العمليات الحسابية والمنطقية ومع الذاكرة رام ولا توفر أي طريقة للتعامل مع بطاقة الصوت أو القرص الصلب أو بطاقة العرض (أو الملفات ولكنها ليست حالتنا) ، هذه الأجهزة يتم التعامل معها من خلال منافذ ports (لا علاقة لها بالشبكات) تسمى I/O Ports. هناك في لغة الآلة والتجميع (والسي) ما يمكنك من كتابة رقم في منفذ ذو رقم معين أو قراءة رقم من منفذ ذو رقم معين. كل جهاز له صيغة معينة للتعامل معه عبر المنافذ التي يستعملها وحتى الجهاز الواحد قد يكون له أكثر من احتمال (مثلاً بطاقات صوت Sound Blaster قد تأخذ المنفذ الأساسي 220 أو 230 .. إلى 270)
تلميح
إذا أخذ جهازان نفس المنفذ فهذا يسمى تضارب conflict وكان يتم حله بتوصيل jumpers أما الآن فتتم في بطاقات من نوع ISA من خلال تقنية PNP حيث يحدد المنفذ عبر البرمجيات إما BIOS أو نظام التشغيل. وهذه المشكلة غير مجودة في بطاقات PCI الأحدث وتقنية PNP بلا معنى فيها.
قد يأخذ الجهاز أكثر من منفذ واحد لمعرفة الحالة status (جاهز، بانتظار الأمر ، بانظار معاملات ...) وآخر لإرسال الأوامر وآخر لتحديد المعاملات. كتابة برنامج بهذه الطريقة أمر صعب جداً تخيل معي "اكتب أمر معين نتظر حتى تصبح الحالة ..." لهذا توفر BIOS Calls مكتبة يتم استدعاؤها من خلال المقاطعة interrupt (هل لديكم تعريب أفضل؟) وذلك بالتعليمة (في لغة التجميع) int ورقم يمثل ذلك الجزء من BIOS الذي تريد مثلاً int 10h للخاص ببطاقة العرض وهناك موقع ثابت في الذاكرة يحتوي على العناوين في الذاكرة المقابلة لكل مقاطعة وهذه التعليمة تقرأ العنوان المقابل ل 10 (بالستعشري) وتستدع الوظيفة الموجودة في ذلك العنوان . يتم تحديد ماذا تريد أن تفعل من خلال وضع قيم للمسجلات المناسبة قبل التعليمة int مثل المسجل AH الذي يحدد ما هي الوظيفة التي تريد استعمالها مثلاً كتابة حرف على الشاشة.



بعد تحميل برنامج الإقلاع الذي بدوره يتابع تحميل نظام التشغيل، يقوم نظام التشغيل بعمل مستوى أعلى وأكثر رقي من وظائف BIOS Calls فمثلاً يتعامل نظام BIOS مع القرص بأبعاده الثلاث Sector/Head/Cylinder (اقرأ محتويات رقم كذا-كذا-كذا واكتب في رقم كذا-كذا-كذا) لكن نظام التشغيل يتعامل مع ملفات (الملف المسمى كذا ...) وذلك بعمل مقاطعات خاصة بنظام التشغيل إضافتها للجدول مثلاً في نظام دووس DOS المقاطعة الأساسية هي int 0x21 مثلاً لفتح ملف في دووس نسعمل الوظيفة 0x3D
myfile db "readme.txt"
mov dx, myfile
mov ax,0x3D00
int 0x21

ومن فوائد نظام التشغيل أن المقاطعات الخاصة به نفسها على الأجهزة والمنصات المختلفة التي يعمل عليها نظام التشغيل (بعض أنظمة التشغيل المشهورة لا تعمل سوى على نوع واحد من الأجهزة فلا يكون لها أي فائدة). في المقابل النظام لينكس يستعمل المقاطعة رقم int 0x80 ورقم الوظيفة يوضع في eax وهو معرف في asm/unistd.h على صورة __NR_systemcallname ثم المعاملات في المسجلات ebx و ecx و edx و esi و edi و ebp. وهي نفس وظائف POSIX الموحد في أكثر من نظام. المثال التالي يكتب الجملة الشهيرة Hello, world! في ملف الخرج القياسي، مأخوذ من Assembly-HOWTO
; hello.asm - hello world in NASM asm (from Assembly-HOWTO)
; type 'nasm -f elf hello.asm && ld -s -o hello hello.o'
; section are .text (ro code) .data (rw data) .bss (rw uninitialized data)

section .data
msg db "Hello, world!",0x0a
len equ $ - msg
section .text
global _start
_start:
; write(1,msg,len); // 1 is stdout filedesc
mov edx,len ; len of message
mov ecx,msg ; address of msg
mov ebx,1 ; 1=stdout filedesc(fd)
mov eax,4 ; 4=sys_write
int 0x80 ; call linux kernel
; exit(0);
mov ebx,0 ; 0=exit code
mov eax,1 ; 1=sys_exit
int 0x80 ; call linux kernel


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


تلميح
يسمح gcc بالكتابة بلغة التجميع داخل سي بفضل GAS (اسم الأداة as). ولكن وفق أسلوب AT&T وليس إنتل. الفرق أن المسجلات تسبق ب‘%‘ و الثوابت ب‘$‘ أما المتغيرات فلا تسبق بشيء لقيمتها وتسبق ب ‘$‘ لعنوانها ، الإزاحة تعطى على شكل رقم ثم قوسين ثم المؤشر. الفرق الأكبر أن المصدر يذكر أولاً والهدف آخراً ("من" ثم "إلى") كما في تعليمتي mov و add. يجوز إلحاق أحد الحروف b و w و l إلى نهاية التعليمة لتحديد حجم المعامل ب 8 أو 16 أو 32-بت. اسم ملفات GAS ينتهي ب S مثل hello.S ويتم تجميعه بواسطة as و ربطه بواسطة ld كما يلي
as hello.S -o hello.o && ld -s -o hello hello.o يمكنك تحويل ملفات سي إلى لغة التجميع (للتعليم والمتعة) بواسطة
gcc -S -fverbose-asm -O2 hello.c -o hello.S
في مستوى أعلى تأتي المكتبة في لغات البرمجة عالية المستوى مثل سي فبدلاً من حفظ أرقام وجداول لديك أسماء سهلة الحفظ مثل open. كما أن لغات البرمجة توفر واجهة موحدة على الأنظمة المختلفة والأجهزة المختلفة مثل لغة سي ولكن بعض اللغات مثل VB لا تعمل سوى على نظام واحد. البرامج التي تستعمل مكتبات تحتاج إلى أن تربط معها (أي أن نضيف كود المكتبة إلى كود البرنامج)، وضعهما معاً في ملف تنفيذي واحد يسمى الربط الساكن/الاستاتيكي static linking الذي ينتج ملفات تنفيذية كبيرة الحجم، يمكن توفير الحجم المشترك في أكثر من برنامج استاتيكي كبير بوضع الكود المشترك في ملف هدف منفصل يسمى DLL أي المكتبات المربوطة ديناميكياً dynamically linked libraries ويسمى في يونكس so أي الهدف المشترك shared objects تسمى هذه الطريقة في الربط dynamic linking أي الربط الديناميكي. البرامج المربوطة ديناميكياً أصغر حجماً ولكنها تتطلب وقت أطول لتبدأ لتحميل هذه المكتبات.

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


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

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

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

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