نظام التشغيل Sivelkiriya: التقنيات

مرحبا يا هابر.

تواصل هذه المقالة سلسلة المنشورات حول مشروع نظام التشغيل Sivelkiriya. كما ذكرنا سابقًا في المقالات السابقة ، فإن نظام التشغيل هذا حاليًا في مرحلة مبكرة من التصميم والتطوير ، لذا يجب على أولئك الذين يرغبون في الحصول على أدلة أن يكونوا صبورين. تحسبًا للحالة ، سأذكر مرة أخرى أن المؤلف لم يشرع في إقناع أي شخص بأي شيء ، وبدلاً من ذلك استمر في النشر للاستفادة من المناقشات. أغتنم هذه الفرصة لأعرب عن امتناني لكل من ترك تعليقات مفيدة في المنشورات السابقة.

قدمت المقالة الأولى من الدورة معلومات موجزة حول هيكل نظام التشغيل هذا. في المقالة الثانيةتم وصف أهداف المشروع ، وكذلك كيف كان من المفترض أن يخرج من الحلقة المفرغة "لا برمجيات - لا مستخدمين - لا مطورين - لا برمجيات". هذه المرة ، سيكون التركيز على القضايا المعمارية. سيتم عرضه بالوسائل التقنية التي من المفترض أن تضمن تفاعل الوحدات المكتوبة من قبل أشخاص مختلفين بلغات مختلفة ويتم تجميعها في بيئات مختلفة. بالإضافة إلى ذلك ، ستتأثر التفاصيل الصغيرة للهندسة المعمارية.

منفذي الوحدة


لضمان تحميل الوحدات وتشغيلها وتنفيذها ، تم تقديم مفهوم فناني الأداء في Sivelkiriya. فناني الأداء أنفسهم وحدات ، وفيما يتعلق بالوحدات التي ينفذونها ، يتولون المسؤوليات التالية:

  1. تنزيل الوحدات المستخدمة في ذاكرة الوصول العشوائي والتهيئة والإنهاء والتفريغ ؛
  2. ربط واجهة برمجة التطبيقات التي يوفرها نظام التشغيل بالرمز التنفيذي للوحدات: ضمان مرور المكالمات والبيانات من واجهة برمجة التطبيقات لنظام التشغيل إلى رمز الوحدات والعكس ؛
  3. تنزيل وإعداد بيئة التشغيل التي تتطلبها الوحدة ؛
  4. ترجمة رمز الوحدة النمطية من أي تمثيل وسيط (رمز المصدر بلغة مفسرة ؛ كود بايت ؛ لغة وسيطة ؛ تجميع مخصص لمنصة أخرى) إلى سلسلة من تعليمات الآلة. يتم تحديد الإجراءات المحددة في هذه الخطوة (تفسير البرنامج النصي ، وتفسير الرمز الثانوي ، وتجميع JIT ، والمضاهاة ، وما إلى ذلك) من خلال طريقة تسليم الوحدة ؛
  5. إخفاء طريقة عمل الوحدة النمطية من نظام التشغيل والوحدات الأخرى.

بالإضافة إلى ذلك ، يمكن للمنفذ أن يتولى مهمة عزل بيانات الوحدات المختلفة إذا كان التعايش بين وحدتين أو أكثر في نفس مساحة العنوان لا يشكل خطرًا أمنيًا (على سبيل المثال ، للكود المُدار) ، وعمل المُنفذ نفسه مستقر جدًا لدرجة أن هناك أخطاء في التحميل لن تؤدي الوحدة النمطية إلى مشاكل في عمل المقاول والوحدات الأخرى التي يخدمها.

يسمح هذا المفهوم باستخدام طرق مختلفة لتجميع الوحدات النمطية في نظام مشترك. على سبيل المثال ، سيتم تحميل كود الجهاز الذي تم الحصول عليه من خلال تجميع كود C ++ من قبل مسؤول تنفيذي يدعم التنفيذ المباشر في مساحة عنوان منفصلة وربطه ببيئة التشغيل الضرورية. يمكن تحميل رمز IL المُدار بواسطة منفذ دعم يدعم تنفيذ التعليمات البرمجية المُدارة ، ويمكن إجراء العزل على مستوى نظام التشغيل (عن طريق تحميل وحدات نمطية مختلفة في مساحات عناوين مختلفة) وعلى مستوى المنفذ (عن طريق تحميل وحدات نمطية مختلفة في مساحة عنوان مشتركة ، ولكن في مختلف مجالات البيئة).

الاستثناء هو حالة تشغيل كود الجهاز تحت Sivelkiriya ، والذي يتم تنفيذه كجزء من نظام التشغيل الرئيسي كمجموعة من المكتبات و / أو العمليات. لا يُسمح بالتشغيل المباشر لرمز الجهاز في ظل هذه الظروف إلا إذا كان يضمن عدم وجود مكالمات من رمز الجهاز إلى نظام التشغيل الرئيسي الذي يتجاوز Sivelkiriya ، أو إذا كانت مثل هذه المكالمات ضرورية من وجهة نظر النظام. على سبيل المثال ، يمكن تحقيق هذا الشرط في بيئة شركة خاضعة للرقابة ، وكذلك في مشاريع مفتوحة المصدر. من ناحية أخرى ، تحتاج الوحدات التي تصل إلى موارد نظام التشغيل الرئيسي ، بحكم تعريفها ، إلى طريقة لاستدعاء وظائفها. إذا كان لا يمكن ضمان "نظافة" رمز الجهاز ، يمكن تشغيل هذا الرمز في وضع المحاكاة (بالإضافة إلى التعليمات البرمجية المترجمة لمنصة أخرى).

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

بيئة وقت التشغيل المذكورة أعلاه ، الخاصة بلغة ومترجم معين ، هي أول استثناءين من القاعدة التي تتطلب تبادل البيانات بين جميع الوحدات فقط من خلال واجهات كائن النظام ، نظرًا لأن تحميلها في مساحة عنوان الوحدة النمطية ضروري لتشغيلها. بشكل عام ، لا يتم دعم مفهوم المكتبات المرتبطة ديناميكيًا التي تستخدمها العديد من الوحدات في Sivelkiriya ، لأنه يهدف إلى تنفيذ مشاركة التعليمات البرمجية ، والتي يتم تنفيذها بالفعل من خلال واجهات الوحدة النمطية.

الاستثناء الثاني هو الإذن باستخدام مكتبات مرتبطة ديناميكيًا بالعديد من الوحدات النمطية التي يتم تسليمها معًا داخل نفس الحزمة. في الوقت نفسه ، لا توفر Sivelkiriya الفرصة لربط نفس المكتبة بالوحدات الأخرى ، وكذلك الأنظمة الفرعية للبحث في المكتبات الديناميكية.

عندما يقوم النظام بالتمهيد ، يتم تحميل جزء من الفنانين في الذاكرة في نفس وقت النواة ، لتجنب الوضع عندما تكون هناك حاجة إلى فنان آخر لتحميل الفنان ، والذي لم يتم تحميله بعد. ينطبق هذا ، أولاً وقبل كل شيء ، على المنفذين الذين يقدمون إطلاق رمز الجهاز على هذا النظام الأساسي. يتم تحميل المؤدين المتبقين في الذاكرة وفقًا للقواعد العامة.

حلول معمارية أخرى


فيما يلي قائمة غير منظمة من المبادئ الثانوية لبناء هيكل نظام التشغيل Sivelkiriya. وهي ليست بنفس أهمية المبادئ الأساسية الموضحة أعلاه ، ولكنها مع ذلك تستحق الذكر.

  1. , «». , , , . -, . . , , , , , , . , ; , , Bluetooth, WiFi , Bluetooth, . , (, , , ).
  2. , . , « » « ».
  3. , . , « » « » «». , , .
  4. . , « » ( , , , ), « » . , « », « », ( ) . .
  5. , , , . , , , , . - , , .
  6. ( . .) . , , , - . .
  7. ( ) , «», , , . , , , , .
  8. , , . ( , . .) . . , , .
  9. . , , . — , , , . . , : , ( ) , , .
  10. , : . , .
  11. , , , , — . « » , ( ). , . .
  12. : , , . , , . , , , .
  13. , : , , , , , , , , , . : , , SSD, — RAID- , — , . .
  14. . ( ). , , (, , ), ( ), , , WYSIWYG- , . , .
  15. : , , . , , , ( ). , , , . , , , ( , . .).
  16. , , . , « » , (, 1 ) . , , , : , (, ) , , , , , .
  17. , , (, , ). , — , , , . — (, . .): , , , , . , . , , ( «» ). , . (, ) , ( , . .). , , . , ( , , . .) , .


المنشور الأول للدورة متاح هنا . والثاني هنا . الرابع هنا . النص الكامل للمقال متاح على موقع المشروع .

All Articles