من مشاركة المورد إلى طبقة التشغيل
تستدعي تطبيقات العملاء عمليات على موارد قد تكون في عقدة أخرى أو، على الأقل، في عملية أخرى. تحول Middleware هذا الاتصال البعيد إلى تجريدات مريحة، بينما يدير نظام التشغيل الموارد الحقيقية للعقدة.
دور Middleware
تستعملها التطبيقات بصفتها عملاء والخدمات بصفتها مديري موارد، وتتيح الاتصال البعيد بين كائنات أو عمليات العقد. ومن أشكال الاستدعاء المذكورة RPC وJava RMI وغيرها.
دور نظام التشغيل
يقع تحت Middleware، يستولي على الموارد الفيزيائية لعقدة واحدة ويديرها، ثم يعرض تجريدات عبر system calls: ملفًا بدل كتل القرص مثلًا.
أمثلة أنظمة التشغيل الواردة: UNIX وتفرعاته مثل Linux وMac OS X، وWindows وتفرعاته المذكورة Windows 10 وWindows 11. وخلال تطور الأنظمة الموزعة ظهر مفهوما network operating system وdistributed operating system.
نظام تشغيل موزع أم شبكي؟
| الجانب | Distributed OS | Network OS |
|---|---|---|
| صورة النظام | صورة نظام واحدة؛ لا ينشغل المستخدم بمكان البرنامج أو المورد. | آلات مستقلة لها أنظمتها، مع قدرة شبكية للوصول إلى موارد بعيدة. |
| التحكم | نظام التشغيل يتحكم في جميع عقد النظام. | تحافظ كل آلة والمستخدم على قدر من الاستقلال. |
| إنشاء العمليات | يوضع البرنامج الجديد بشفافية في العقدة الأنسب لسياسات الجدولة. | لا يفترض مجدولًا عالميًا يخفي كل مواقع العقد. |
| الانتشار | دُرست أنظمة كثيرة، لكن لا يوجد منها ما هو عام/واسع الاستخدام وفق الشرائح؛ أمثلتها المذكورة HarmonyOS وBlueOS وMINIX. | واسع الاستخدام؛ Unix وWindows هما المثالان المذكوران. |
| المقايضة | شفافية عالية، لكن تبنّيه قد يصطدم بتوافق التطبيقات وباستقلال المستخدم. | يحافظ على البرامج الموجودة واستقلال الآلة، وتضيف Middleware شفافية الخدمات. |
لماذا انتشر Network OS أكثر؟
- لدى المستخدمين استثمار كبير في برمجياتهم؛ لن يتبنوا نظامًا جديدًا لا يشغّل تطبيقاتهم.
- يفضل المستخدمون درجة من الاستقلال لآلاتهم حتى داخل المؤسسة.
- هذه أسباب تقنية وغير تقنية معًا، كما تصف المحاضرة.
كيف تتعاون عقدتان؟
تدعم طبقة نظام التشغيل في كل عقدة Middleware مشتركة، فتقدم بنية موزعة للتطبيقات والخدمات. النوى والعمليات الخادمة هي التي تدير الموارد وتعرض واجهة للعملاء.
إعادة بناء الشكل 1
التطبيقات والخدمات
الاستدعاء والاتصال البعيد
Processes · Threads · Communication
نواة + مكتبات + خوادم
Processes · Threads · Communication
نواة + مكتبات + خوادم
العقدة 1
العقدة 2
Encapsulation
تقديم واجهة خدمة مفيدة للمورد بدل كشف تفاصيله الفيزيائية.
Protection
حماية الموارد من الوصول غير المشروع.
Concurrent processing
إدارة مشاركة العملاء للمورد والوصول المتزامن إليه.
من يدير ماذا؟
| المكون | المسؤولية المذكورة |
|---|---|
| Process manager | إنشاء العمليات وتنفيذ العمليات/الإجراءات عليها. |
| Thread manager | إنشاء الخيوط ومزامنتها وجدولتها. |
| Memory manager | إدارة الذاكرة الفيزيائية والافتراضية. |
| Communication manager | الاتصال بين الخيوط. |
| Supervisor | توزيع المقاطعات ونداءات النظام والاستثناءات الأخرى. |
ترابط الوظائف كما في الشكل 2
يتعامل مع الاتصال بين الخيوط
العملية = بيئة تنفيذ + خيوط
المفهوم التقليدي للعملية التي تنفذ نشاطًا واحدًا لم يكن مساويًا لمتطلبات الأنظمة الموزعة: تقسيم الأنشطة المترابطة إلى عمليات منفصلة يجعل مشاركتها صعبة ومكلفة. الحل هو تعزيز العملية كي ترتبط بأنشطة متعددة تسمى الخيوط.
Address space
فضاء العناوين الذي تشترك فيه خيوط العملية.
موارد المزامنة والاتصال
مثل semaphores وsockets.
موارد أعلى مستوى
مثل الملفات والنوافذ المفتوحة.
بيئة التنفيذ هي مجموعة موارد محلية تديرها النواة وتستطيع خيوطها الوصول إليها. إنشاء هذه البيئة وإدارتها مكلفان عادة، لكن عدة خيوط تستطيع مشاركتها، وهذه هي نقطة الكفاءة.
لماذا نعدد الخيوط؟
الخيوط أنشطة قابلة للجدولة ومرتبطة بالعمليات. وجود عدة خيوط يحقق ثلاثة أهداف:
تزامن أكبر
تعظيم درجة التنفيذ المتزامن بين العمليات/الطلبات.
تداخل الحساب وI/O
حين ينتظر خيط إدخالًا أو إخراجًا يستمر خيط آخر بالحساب.
معالجات متعددة
تمكين معالجة متزامنة فعلية على multiprocessors.
داخل الخادم
المعالجة المتزامنة لطلبات العملاء تقلل ميل الخادم لأن يصبح عنق زجاجة. قد يعالج خيط طلب عميل بينما ينتظر خيط آخر، يخدم طلبًا ثانيًا، اكتمال الوصول إلى القرص.
داخل العميل
في الشكل 3 يولد Thread 1 النتائج، بينما يرسل Thread 2 النتائج باستدعاءات طرق بعيدة ويتوقف منتظرًا؛ في الوقت نفسه يستطيع Thread 1 متابعة حساب نتائج جديدة.
عميل وخادم بخيوط متعددة
Thread 2 يرسل ويُحجب
وبعضها ينتظر I/O
معماريات تخصيص الخيوط
| المعمارية | وحدة تخصيص الخيط | متى تناسب؟ |
|---|---|---|
| Thread-per-request | خيط لطلب واحد. | طلبات قصيرة مستقلة، مع ضبط كلفة الإنشاء أو استخدام تجمع خيوط. |
| Thread-per-connection | خيط لاتصال العميل. | اتصال طويل يقدم عدة طلبات متتابعة. |
| Thread-per-remote-object | خيط لكائن بعيد؛ وردت في الشريحة بصياغة Thread-per-object remote. | ربط نشاط التنفيذ بكائن الخدمة. |
سؤال تطبيقي: خادم ينتظر القرص كثيرًا
لماذا يحسن تعدد الخيوط الإنتاجية إذا كانت بعض الطلبات تتوقف عند القرص؟
لأن الخيط المنتظر يصبح blocked وحده، بينما يستطيع المجدول تشغيل خيط آخر يعالج طلبًا آخر. إذا كانت العلاقة طويلة مع العميل فـthread-per-connection أقرب، وإذا كانت الطلبات قصيرة مستقلة فـthread-per-request أنسب غالبًا.
Process أم Thread؟
| الجانب | عمليات منفصلة | خيوط العملية نفسها |
|---|---|---|
| الإنشاء | أعلى كلفة لأن لكل عملية بيئة تنفيذ. | إنشاء خيط داخل العملية أرخص. |
| تبديل السياق | التبديل بين خيوط تنتمي إلى عمليات مختلفة أعلى كلفة. | التبديل بين خيوط العملية نفسها أرخص. |
| مشاركة البيانات والموارد | أعقد وأقل كفاءة، وتحتاج اتصالًا بين العمليات. | مريحة وفعالة بسبب بيئة التنفيذ المشتركة. |
| الحماية | عزل أفضل عادة بفضاءات عناوين منفصلة. | الخيوط غير محمية من بعضها؛ خطأ خيط قد يفسد موارد مشتركة. |
اختر Thread
لمهمتين تحتاجان مشاركة ذاكرة كثيفة وسريعة، مع إضافة مزامنة صحيحة لأن العزل ضعيف.
اختر Process
لمكونين غير موثوقين يجب ألا يسقط أحدهما الآخر، وقبول كلفة الاتصال مقابل العزل.
Monolithic kernel مقابل Microkernel
في الصورة المثالية توفر النواة الآليات الأساسية فقط، وتحمّل وحدات خادمة ديناميكيًا عند الحاجة لتنفيذ سياسات إدارة الموارد التي تتطلبها التطبيقات العاملة. معيار الاختلاف الرئيس: ما الوظائف التي تبقى داخل النواة، وما الذي يترك لعمليات خادمة قابلة للتحميل فوقها؟
نقل الخدمات عبر حد النواة
Monolithic Kernel
S1 · S2 · S3 داخل فضاء النواة
Microkernel
خوادم محملة ديناميكيًا
Address spaces · Threads · Local IPC
| الجانب | Monolithic kernel | Microkernel |
|---|---|---|
| موضع الوظائف | قدر كبير داخل فضاء عنوان النواة. | نواة صغيرة بين العتاد وطبقة مكونات النظام الكبرى. |
| الخوادم | قد تتضمن خوادم ملفات وبعض الشبكات؛ كودها جزء من إعداد النواة القياسي. | كل الخدمات غير الأساسية تقدمها خوادم تحمل ديناميكيًا في الحواسيب التي تحتاجها. |
| ما تقدمه النواة | كود وبيانات ووظائف نظام كثيرة. | التجريدات الأساسية: فضاءات العناوين، الخيوط، والاتصال المحلي بين العمليات. |
| الفصل | الوظائف مرتبطة أكثر بإعداد النواة. | يفصل الآليات الأساسية عن سياسات الخدمات المحملة حسب الحاجة. |
خريطة الشرائح 1–23
ملخص موضعي لكل شريحة، بما في ذلك الأشكال الأربعة ومفاتيحها.