لفهم الحاويات ، تحتاج أولاً إلى خلفية حول كيفية تشغيل نظام التشغيل الخاص بك بالضبط على جهاز الكمبيوتر .
هذه لمحة موجزة عن نظام التشغيل على جهاز الكمبيوتر ،
كما هو موضح في الشكل 1
تحتوي معظم أنظمة التشغيل على ما يسمى النواة. هذه النواة عبارة عن عملية برمجية قيد التشغيل تتعامل مع الوصول بين جميع البرامج التي تعمل على جهاز الكمبيوتر الخاص بك وجميع الأجهزة المادية المتصلة بجهاز الكمبيوتر الخاص بك.
إذا سبق لك استخدام Node.js وكتبت ملفًا إلى قرص ، فمن الناحية الفنية لا تتحدث Node.js مباشرة إلى الجهاز الفعلي ، بل تقول Node.js إلى النواة الخاصة بك: أريد كتابة ملف على القرص ، ثم تأخذ النواة هذه المعلومات ومعالجتها في النهاية على القرص. لذلك ، فإن النواة دائمًا ما تكون نوعًا من الطبقة المتوسطة التي تتعامل مع الوصول بين هذه البرامج والقرص الفعلي.
تتفاعل هذه البرامج مع النواة من خلال ما يسمى استدعاءات النظام. هم في الأساس مثل استدعاءات الوظائف (لتنفيذ كود الوظيفة).
توفر النواة العديد من نقاط النهاية لتقول ، إذا كنت تريد كتابة ملف إلى قرص ، قم باستدعاء نقطة نهاية هذه الوظيفة هنا ، فهي تحتاج إلى قدر معين من المعلومات ، ويتم كتابة هذه المعلومات في النهاية على القرص أو الذاكرة وما إلى ذلك.
لنأخذ مثالًا وهميًا كما هو موضح في الشكل (2). لنفترض أن Chrome يحتاج إلى Python v2 للتشغيل وأن Node.js يحتاج إلى Python v3 ، ولدينا Python v2 مثبتًا على قرصنا ، ولا يُسمح بتثبيتين متطابقين من Python في نفس الوقت.
كيف يمكننا حل هذه المشكلة؟ طريقة واحدة هي استخدام ميزة
لنظام التشغيل المعروف باسم تباعد الأسماء. باستخدام ميزة "تباعد الأسماء" ، يمكننا البحث
في جميع موارد الأجهزة المختلفة المتصلة بجهاز الكمبيوتر الخاص بنا ، و
يمكننا تقسيم أجزاء من هذه الموارد حتى نتمكن من إنشاء جزء من
قرص صلب مخصص لإيواء Python v2 وآخر لإيواء Python v3
حتى يتمكن Chrome من الوصول إلى المقطع الذي يحتوي على Python v2 ، وكذلك Node.js
لديه حق الوصول إلى المقطع الذي يحتوي على إصدار Python v3. في كل مرة واحدة
منهم يقوم باستدعاء النظام لقراءة المعلومات من القرص ، تنظر النواة
مكالمة النظام الواردة ويحاول معرفة العملية القادمة
منه وتوجيهه إلى الجزء الخاص به ، كما هو موضح في الشكل 3.
باستخدام هذا النوع من مساحة الاسم أو ميزة التجزئة ، يمكننا ضمان إمكانية تشغيل Chrome و Node.js على نفس الجهاز.
يشير تباعد الأسماء إلى أن هذه المنطقة من القرص مخصصة لهذه العملية ، ويمكن استخدام مجموعات التحكم للحد من مقدار الذاكرة التي يمكن أن تستخدمها العملية ، ومقدار وحدة المعالجة المركزية والذاكرة والقرص.
لذلك ، يمكن استخدام هاتين الوظيفتين معًا لعزل
عملية واحدة والحد من عدد الموارد التي يمكنها التواصل معها.
But the feature of name spacing, and control groups
(C-groups) is not standard in all operating systems, they are specific to Linux
operating system, not Windows or Mac OS. So how we can create containers on
Windows and MAC OS will be discussed in the next article.