22-09-12, 09:12 AM
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .
السلام عليكم ورحمة الله وبركاته .
كنا في الدرس السابق قد تعلمنا كيفية كتابة الكود ، في هذا الدرس سنتعلم كيف يتم تنفيذ هذه الأوامر فعلياً قبل أن ننطلق في الدرس القادم في عالم الهاردوير .
يتم التعامل مع المنافذ في الكومبيوتر أو مع الهاردوير عموماً مروراً بأربعة مراحل :
1- Device Driver : وهو عبارة عن برنامج خاص بالتعامل مع هاردوير معين يتم انتاجه من قبل الشركة المصنعة لهذا الجهاز ، حيث أن الشركة المصنعة للطابعة تقوم مثلاً بعمل البرنامج الخاص بالطابعة بحيث يحتوي على مجموعة من الأوامر مثل : Print Page ، Print Pages ... الخ ، حيث يقوم المبرمج أو نظام التشغيل بالتعامل مع هذه الأوامر فقط دون الدخول في تفاصيل كيفية عمل هذه الأوامر والتي تهتم بها فقط الشركة المصنعة .
2- Operating System : في اصدارات قديمة من نظام التشغيل Windows كان يمكن للمبرمج التعامل مباشرة مع منافذ الكومبيوتر أو تحديداً مع ال Device Driver مباشرة ، وكان هذا في DOS و Window 9x حيث كان الموضوع يقتر على مجموعة من ال API's للتعامل مباشرة ، ولكن بعد هجوم CIH عام 98 الشهير بدأت نظم التشغيل تحمي الهاردوير عن طريق عدم السماح لأي شخص بالتعامل معه مباشرة .
مع الاصدارت التالية تم فقط تعريف نظامين للتعامل مع الهاردوير ، 0 و 3 ، حيث يقوم المبرمج بالعمل في 3 في حين يعمل الهاردوير وال Kernel في ال 0 أو ما يعرف باسم الحلقة 0 - ring 0 - حيث لا يمكن للمستخدم الوصول مباشرة إلى الهاردوير إلا عن طريق kernel وهو المرحلة الثالثة من عملنا .
3- Kernel Mode Driver : وهو برنامج مخصص يمكنه نقل البيانات من وإلى ال Device Driver ، ويتم استخدامه في نظم التشغيل التي لا تسمح بالوصول المباشر إلى الهاردوير .
أشهر أنواع ال KMD كمبرمج ويندوز هي inpout32.dll - ارفقناها في الدرس السابق- والتي تحتوي على جزء منها Kernel Mode Driver والجزء الآخر خاص بدول API العادية التي تحتويها المكتبة .
4- Programming : المرحلة الأخيرة من هذه العملية ، حيث يتم من خلالها عمل البرنامج الخاص بالتعامل مع المستخدم من جهة ومع الهاردوير من جهة أخرى ، لن تفرق لغات البرمجة كثيراً في هذه النقطة ، في الدرس السابق شرحنا كيفية التعامل من خلال C#,VB.net وفيجوال بيسك 6 ، هنا نضيف انه في ال Java سوف نستخدم Javax.comm.parallelport ، في ال PHP سوف نستخدم إحدى السيرفس والتي تسمى lptout ،بخصوص C++ فهي مثلها مثل C# تحت الويندوز ، أما C++ في نظام التشغيل لينوكس فسوف نستخدم ioperm الموجودة في <asm/io.h> .
بنهاية هذا الدرس أتمنى أن أكون متأكداً أن استمر بهذه الطريقة ، في الدروس القادمة سوف نبدأ في الهاردوير ويهمني أن اكون متأكداً من فهم وتطبيق الدرس الثالث على وجه التحديد ، وباقي الدروس عموماً حتى يمكننا المتابعة .
والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
متغيب