بمعنا ان لغة الجافا تعمل علي جميع انظمة التشغيل و ويندوز يعمل علي جميع المعالجات
هل يمكن برمجة نظام تشغيل او برنامج يشتغل علي جميع المعالجات
ويندوز لا يعمل على جميع المعالجات. ويندوز محدود جدا.
في الواقع جافا تعمل على جهاز وهمي، يتطلب منك تخصيص برنامج يشغل يشغل برامج جافا على كل معالج و نظام...
هل يمكن برمجة نظام تشغيل أو برنامج يشتغل علي جميع المعالجات
لا. ليس مباشرة، لأن كل معمارية معالج تتطلب تخصيص خاص في النظام، يعني لما تريد جعل نظامك و أحيانا حتى برنامج عادي أن يعمل على معالج آخر يجب أن تعدل فيه، تضيف أجزاء تجعله متوافق معه.
دبيان (Debian GNU/Linux) تعمل على معالجات كثيرة و متنوعة.
كذلك أنظمة مثل OpenBSD و FreeBSD و NetBSD ...
ويندوز حاليا يعمل على معالجات انتل, و معالجات ARM (ويندوز ار تى),
و حتى وقت قريب, كان هناك نسخة لمعالجات PowerPC, و لكن تم الغائها نظرا لتضاؤل شعبية هذه المعالجات.
و بالتالى فان ويندوز يعمل على جميع المعالجات الشعبية حاليا (انتل و ARM), و يمكن نقله بسهولة لأى معالج أخر قد يظهر مستقبلا.
لذا فان قولك أن ويندوز محدود ليس صحيح.
بالطبع لا يمكن برمجة نظام تشغيل على لغة جافا بأى حال من الاحوال, لأن لغة جافا تحتاج الى Virtual Machine لتشغيلها, و الvirtual machine يحتاج الى نظام تشغيل أصلا ليعمل! و حتى لو افترضنا ان أحدهم كتب مترجما للغة جافا, فان بنية اللغة نفسها لا تصلح لكتابة نظم التشغيل,
نظم التشغيل تحتاج الى لغات أقرب الى الألة, و غالبا ما تكتب على السى (ويندوز, لينكس, و غيرهم), أو الباسكال (ماك او اس ما قبل 2001).
نظم التشغيل يمكن نقلها من معالج لأخر بسهولة نسبيا, نظرا لأن معظم المعالجات تتشابه فى طريقة عملها, عبر اعادة ترجمة الكود و اعادة كتابة الأجزاء المكتوبة بلغة التجميع (و التى تكون أجزاء صغيرة عادة).
أخي الكريم لا يمكن ويمكن في نفس الوقت ودعني اشرح لك كيف ذلك
كل معالج له اوامر assembly مختلفة لاختلاف التركيب structure الخاص بالمعالج وبالتالي يجب ان يتم "بناء" build او compile حسب خصائص المعالج
لذلك مسألة ان يتم تشغيل نظام التشغيل علي اكثر من نوع معالج امر ممكن في الحالة التالية
1- المعالج يوفر نفس الاوامر او ال instructions المطلوبة لتشغيل نظام التشغل هذا والتي تم بناء نظام التشغيل ليعمل عليها ولا يمكن ان يعمل بدونها.
2- يتم اعداة بناء build او compile لنظام التشغيل وفقا لنوع المعالج (بمعني ان الكود المصدري source code قد يكون واحد بلا اي اختلاف لكن يجب عمل build حسب نوع المعالج)
مثال ذلك مثلا
1- انظمة mac تحتاج الي instructions معينة في المعالج الخاص بك اذا توفرت فنظريا يمكن تنصيب نظام mac OS علي جهازك.
2- يمكنك تحميل انظمة Linux اعتقد Ubuntu مثلا حسب نوع معالجك وستعمل معك سواء كان نوعه arm مثلا او 64 او 32.
3- انظمة ويندوز الحالية تدعم 32 bit و 64 bit وكلاهما ذو تركيب مختلف كما تدعم arm ايضا.
الفكرة انك وانت تقوم بكتابة كود نظام التشغيل يجب ان تحدد الخدمات التي ستتيحها وال instructions التي تحتاجها بشدة ولا يمكن الالتفاف حولها الخ.
اتمني تكون وضحة الفكرة ولو محتاج توضيح اكثر يمكنني ذلك باذن الله.
حتى لو كان الأمر ممكننا فلن تحصل على نفس كفاءة نظام التشغيل على جميع المعالجات لإختلاف معماريتها هذا أولا
اما بالنسبة للغة الجافا فهي تعتمد على Virtual Machine تعمل كوسيط "طبقة اضافية" لتقوم بتحويل الأوامر الى لغة الالة وحتى ال Virtual Machine التي بنيت للعمل تحت بيئة ويندوز مختلفة عن تلك التي تعمل على Linux لإختلاف كلا النظامين عن بعضهما البعض.
ولكي تستخدم نفس الأسلوب في المساواة بين أنظمة التشغيل وما فعلته الجافا فأنت #إفتراضيا بحاجة لطبقة إضافية يتم وضعها ما بين نظام التشغيل الخاص بك وبين المعالج مما يعني زيادة في الوقت وبالتالي بطء في النظام.
أن كنت تريد لغة تستعمل لبرمجة لجميع المعالجات والمعماريات فهي لغة C/C++ والأسمبلي فهم يعملون علي الجميع المعالجات C/C++ تبرمج لجميع المعالجات بطريقة القياسية لكن الترجمة البرنامج تختلف من معالح إلي معالج
التعليقات