Operating Systems Chapter #1 - Introduction
مقدمة في نظم التشغيل
- التعريف بنظام التشغيل وأهميته، مع التركيز على مقدمة عن أنظمة التشغيل.
- استعراض أنواع أنظمة التشغيل وكيفية تواصل المكونات مع بعضها.
- أهمية إدارة الموارد ومفهوم الكيرنال وبياناته.
أهداف الشابتر
- وصف الهيكل العام للنظام الذي يجمع بين الهارد وير والسوفت وير.
- شرح مفهوم الانتقال بين اليوزر مود والكرنل مود وأسباب تصميم نظام التشغيل بهذا الشكل.
- توضيح أنواع أنظمة التشغيل المختلفة والتركيز على نظام تشغيل مفتوح المصدر مثل لينكس.
وظائف نظام التشغيل
- تعريف نظام التشغيل كحلقة وصل بين المستخدم والهارد وير.
- دور نظام التشغيل في تنفيذ البرامج وتسهيل حل المشكلات للمستخدمين.
- التأكيد على أهمية عدم الاهتمام بتفاصيل الهارد وير عند كتابة البرامج.
إدارة الموارد وكفاءة النظام
- ضرورة فهم كيفية إدارة الهارد وير من خلال نظام التشغيل لتحقيق كفاءة عالية.
- تقديم واجهات سهلة الاستخدام للمستخدمين بفضل وجود نظام تشغيل فعال.
- أهمية توزيع الموارد بشكل فعّال لضمان أداء جيد للبرامج.
هيكل الكمبيوتر ونظام التشغيل
- تقسيم مكونات الكمبيوتر إلى مستخدمين، تطبيقات، ونظام تشغيل وهارد وير.
- عرض العلاقة بين مكونات النظام من الأسفل للأعلى والعكس.
تحديات إدارة الأنظمة الكبيرة
- كيف يضمن نظام التشغيل رضا جميع المستخدمين في بيئات متعددة الاستخدامات مثل السيرفرات الكبيرة.
- التحديات التي تواجه المستخدمين عند استخدام نفس الخدمة وكيفية إدارتها بكفاءة.
نظام التشغيل وأهميته
- نظام التشغيل يتحكم في البرامج ويحدد كيفية استخدام الموارد مثل المعالج والذاكرة.
- السيرفرات الكبيرة تحتاج أنظمة تشغيل خاصة لإدارة الموارد المشتركة وتوزيع الطلبات.
- الأجهزة الذكية تفتقر إلى الموارد، مما يتطلب تصميم نظام تشغيل يراعي هذه القيود.
تصميم أنظمة التشغيل
- تصميم نظام التشغيل للأجهزة ذات الموارد المحدودة يختلف عن التصميم للسيرفرات.
- واجهات المستخدم تختلف بين الأنظمة، مثل الهواتف والسيارات والأجهزة التقليدية.
- بعض الأنظمة تعمل بدون تدخل مباشر من المستخدم، مثل أنظمة السيارات.
مكونات نظام التشغيل
- الكيرنل هو الجزء الأساسي الذي يعمل معظم الوقت ولا يتوقف إلا عند إيقاف النظام بالكامل.
- برامج إضافية تأتي مع نظام التشغيل لكنها ليست جزءًا من الكيرنل نفسه.
- التطبيقات تتكون من طبقات فوق الكيرنل، تشمل برامج مثل الفوتوشوب وورد.
تطور أنظمة التشغيل
- تطورت أنظمة التشغيل عبر الزمن لتلبية احتياجات مختلفة، بدءًا من الاستخدام العام إلى الاستخدام المتخصص.
- بعض الأنظمة تأتي مع خدمات تدعم أغراض معينة كقواعد البيانات أو الألعاب.
أنواع أنظمة التشغيل
- كل نوع من الهاردوير يحتاج تصميم خاص لنظام تشغيله، لكن هناك تشابهات عامة بين الأنظمة الحديثة.
- في البداية كانت الأنظمة تعتمد على إعدادات محددة لتشغيل البرامج بشكل صحيح.
البرمجة المتعددة والتعدد المهام
- ظهرت أنظمة تشغيل تدعم البرمجة المتعددة حيث يمكن تنفيذ عدة مهام بالتوازي.
نظام التشغيل والعمليات المتعددة
العمليات المتعددة
- يتم تقسيم الوقت بين العمليات، حيث يعمل البرنامج الأول ثم الثاني وهكذا.
- المعالج يقوم بالتبديل بين عدة عمليات، مما يسمح بتشغيل برامج متعددة في نفس الوقت.
- تطور المعالجات أدى إلى وجود أكثر من نواة داخل المعالج الواحد.
أنظمة التشغيل الزمن الحقيقي
- نظام التشغيل الزمني الحقيقي يتطلب تنفيذ المهام في وقت محدد بدقة.
- أهمية الأنظمة الزمنية الحقيقية في الأجهزة الحساسة مثل الطائرات والسيارات.
- يمكن استخدام أنظمة تشغيل على عدة أجهزة لتعمل كجهاز واحد.
التحكم في الأجهزة الطرفية
- كل جهاز طرفي يحتوي على ذاكرة مؤقتة (بفر) لتخزين البيانات المدخلة.
- المعالج يستقبل الطلبات من جميع الأجهزة الطرفية عبر نظام تحكم مركزي.
- إدارة أجزاء الكمبيوتر تشمل كيفية تشغيل البرامج وإدارة الموارد.
إدارة البيانات والطلبات
- النظام يدير كيفية وصول البيانات للمعالج وتنفيذ المهام بكفاءة وأمان.
- العلاقة بين الهاردوير والسوفت وير مهمة لفهم كيفية عمل النظام بشكل عام.
مقدمة حول المقاطعات
- البيانات تتواجد على الفر ورسيفر، حيث تنبه المعالج عند ضغط الشخص على الأزرار.
- نظام التشغيل يعتمد على المقاطعات كوسيلة للتواصل بين المعالج وبقية الأجهزة.
- المعالج يستخدم "انترات فكتور" لتحديد مصدر المقاطعة.
استجابة المعالج للمقاطعات
- في حالة عدم قدرة المعالج على الاستجابة، يتوجه لنظام التشغيل للحصول على المساعدة.
- نظام التشغيل يوجه المعالج لتنفيذ الأكواد المناسبة استنادًا إلى نوع المقاطعة.
- هناك مقاطعات تأتي من المستخدم تُعرف بـ "سوفت وير انتبت".
أنواع الأخطاء والمقاطعات
- إذا حدث خطأ مثل القسمة على الصفر، يظهر "تراب" لإعلام النظام بوجود مشكلة.
- البرامج قد تتوقف عن العمل إذا تجاوزت الوقت المحدد لها، مما يؤدي إلى حدوث "تبشن".
- نظام التشغيل يعتمد بشكل كبير على المقاطعات للتفاعل مع الهاردوير.
التعامل مع المدخلات والمخرجات
- هناك نوعان من المدخلات: الأول يتطلب الانتظار (سكرون)، والثاني لا يتطلب ذلك (لا سكرون).
- النوع الأول يجعل البرنامج معلقًا حتى يتم الرد من الجهاز الخارجي.
- النوع الثاني يسمح للبرنامج بالاستمرار في العمل أثناء انتظار الخدمة.
تطور الأجهزة والتقنيات الحديثة
- تطور الأجهزة الطرفية جعلها أكثر ذكاءً وقدرةً على التواصل مباشرة مع المعالج.
مفهوم الوصول المباشر للذاكرة
- يتم إرسال البيانات مباشرة إلى الذاكرة دون الحاجة لتشغيل المعالج، مما يزيد من الأداء.
- تقنية "أوف لودينغ" تسمح للأجهزة بالتعرف على وجهتها بدون توجيه المعالج، مما يعزز الكفاءة.
- نقل البيانات بشكل دفعة واحدة بدلاً من بايت واحد يقلل الضغط على المعالج.
عملية بدء التشغيل
- عند تشغيل الجهاز، يبدأ برنامج "البوت ستراب" في تحميل البيوس والبحث عن المكونات الأساسية.
- بعد تحميل البيوس، يتم التعرف على الذاكرة وتحميل النواة (Kernel) إلى الذاكرة الرئيسية.
- النظام يبدأ بتشغيل الخدمات والبرامج التي تعمل في الخلفية لاستقبال الطلبات.
التعامل مع المقاطعات
- كرت الشبكة يحتاج إلى برامج تعمل باستمرار لاستقبال الطلبات وتوجيهها بشكل صحيح.
- نظام التشغيل يتعامل مع المقاطعات الواردة من الأجهزة أو البرمجيات عبر خدمات محددة.
- المقاطعات تُرسل للمعالج الذي يوجهها لنظام التشغيل إذا لم يعرف كيفية التعامل معها.
نظام التشغيل وحماية العمليات
- طلبات الخدمة تتم عبر "سيستم كول"، حيث يُمرر البرنامج المعلمات المطلوبة لنظام التشغيل.
- يجب منع العمليات من التداخل لضمان عدم تأثير عملية على أخرى، مثل تجنب الانفجارات أو الدورات اللانهائية.
- نظام التشغيل يحمي نفسه ويعزل بين التطبيقات المختلفة لمنع التداخل.
أنظمة المستخدم والكيرنل
- الانتقال بين وضع المستخدم ووضع الكيرنل يتم عبر تغيير البت الخاص بالنظام لحماية مكونات النظام.
نظام التشغيل والمعالج
- نظام التشغيل يتطلب تشغيله على الهاردوير، ويبدأ بتوجيه المعالج عبر سيستم كول.
- يوجد نوعان من الوضع: يوزر مود وكيرنال مود، حيث يعرف المعالج أيهما يعمل.
- عند تنفيذ الأوامر، يقوم المعالج بإجراء سيستم كول لتغيير حالة البرنامج.
إدارة العمليات والتايمر
- التتبع يتم عن طريق البت مود، حيث يشير الواحد إلى يوزر سبيس والصفر إلى كيرنل سبيس.
- التايمر يبدأ العد التنازلي لتنفيذ التعليمات، وعند الوصول للصفر يتم إنهاء العملية الحالية.
- يمنع التايمر البرامج من الاستحواذ على المعالج للأبد ويضمن إدارة فعالة للعمليات.
تحويل البرامج إلى عمليات نشطة
- عند تشغيل برنامج، يتحول من حالة باسيف إلى اكتف ويصبح بروسيس.
- نظام التشغيل يدير الموارد اللازمة لكل بروسيس لضمان التنفيذ السلس.
- يجب تهيئة الموارد مثل الذاكرة والمعالجة قبل بدء تنفيذ البروسيس.
إنهاء العمليات وإعادة استخدام الموارد
- بعد انتهاء البروسيس، يقوم نظام التشغيل بتحرير الموارد المستخدمة وإغلاقها بشكل آمن.
- البيانات التي تم تعديلها تُحفظ وتُعاد كتابتها في المرة القادمة عند الحاجة إليها.
أنواع العمليات: ثريد واحد أو متعدد
- يمكن أن تتكون البروسيس من ثريد واحد أو عدة ثريدات صغيرة لتحسين الأداء.
- الثريدات المتعددة توفر أداءً أفضل ولكن إدارتها تكون أكثر تعقيدًا لنظام التشغيل.
التحديات في إدارة الثريدات المتعددة
- إذا كان هناك معالج واحد فقط، ستعمل الثريدات بالتتابع بدلاً من التوازي.
نظام التشغيل وإدارة العمليات
- الثريد الثاني يسمح بتدوير العمليات بين المعالجات لزيادة الأداء.
- نظام التشغيل يدير إنشاء وحذف العمليات ويحتفظ ببيانات التنفيذ.
- تنظيم الوقت بين العمليات يسمى السكشن تزامن، حيث يتم تنفيذ كل عملية في زمن معين.
إدارة الموارد والتواصل بين العمليات
- نظام التشغيل ينظم التواصل بين العمليات ويمنع حدوث الديد لوك.
- إدارة الذاكرة تعتبر جزءًا كبيرًا من مسؤوليات نظام التشغيل.
- يجب أن تكون البرامج في الذاكرة الرئيسية لتنفيذها بشكل كامل.
تنظيم الذاكرة والعمليات
- نظام التشغيل ينظم الأولويات لتشغيل البرامج على المعالج.
- استجابة سريعة للطلبات تعتمد على وجود البرنامج في الذاكرة.
- إدارة الذاكرة تشمل تخصيص المساحات للبرامج ذات الأولوية.
إدارة التخزين والملفات
- الذواكر الثانوية مثل الهارد ديسك تخزن البيانات لفترات طويلة.
- نظام التشغيل يجعل الهارد ديسك مرئيًا للمستخدم ويتيح الوصول إليه.
- تنظيم الملفات يتطلب تحديد العناوين والمواقع بدقة.
نظام الملفات والتحكم بالوصول
- يجب أن تكون الملفات منظمة بطريقة تسهل الوصول إليها من قبل المستخدمين.
- التحكم في الوصول يحدد من يمكنه رؤية وتعديل الملفات المختلفة.
نظام التشغيل وعمليات الربط
- نظام التشغيل مسؤول عن ربط الملفات من الهارد ديسك إلى الذاكرة، خاصة إذا كانت مرتبطة بعملية معينة.
- يهدف نظام التشغيل إلى إخفاء واجهة الهارد وير السيئة عن المستخدم.
- يتولى نظام التشغيل إدارة الذاكرة والتعامل مع الأجهزة الطرفية.
الأنظمة الوهمية وتقنية الفيرشوال ماشين
- تقنية الفيرشوال ماشين تعتمد على دعم أنظمة التشغيل لإنشاء بيئات وهمية.
- يمكن تشغيل البرامج في بيئات وهمية دون الاعتماد على النظام الأصلي للجهاز.
- الفيرشوال ماشين تعمل بشكل مستقل عن نظام التشغيل الأساسي.
محاكاة التعليمات البرمجية
- تحتاج بعض البرامج إلى محاكاة التعليمات لتعمل على هارد وير مختلف.
- المحاكاة تضمن تشغيل البرنامج بشكل صحيح على أنواع مختلفة من المعالجات.
- هناك نوعان من الأنظمة: بدون فرز وبتقنية الفرز.
تقنيات هايبر فايزر
- يوجد نوعان من هايبر فايزر: الأول يعمل مباشرة على الهارد وير والثاني يعتمد على نظام تشغيل مضيف.
- يتم إنشاء أكثر من فيرشوال ماشين باستخدام هايبر فايزر، مما يسمح بتخصيص الموارد لكل منها.
- التقنية تسمح بإنشاء بيئات حسابية متعددة من هارد وير واحد.
أنواع هايبر فايزر
- النوع الأول من هايبر فايزر يعمل مباشرة على الهارد وير ويعتبر الأكثر كفاءة.
- النوع الثاني يعتمد على نظام تشغيل مضيف ويستخدم في البيئات الافتراضية مثل VirtualBox.
تطور المعالجات
- اللاب توب غير مرتبط بتفاصيل الهاردوير، مما يوفر أداءً عالياً.
- نمو استخدام المعالجات المتعددة، حيث يمكن أن يحتوي المعالج على عدة أنوية.
- تطور كبير في الهاردوير مع وجود معالجات تحتوي على أكثر من 24 نواة.
أنظمة المعالجة المتوازية
- زيادة عدد الأنوية تعزز الأداء وتسمح بتشغيل مهام متعددة بشكل متزامن.
- القدرة على توزيع المهام عبر الأنوية لتحسين الكفاءة وتقليل وقت التنفيذ.
- كل نواة لها تردد خاص بها وإدارة حرارية مستقلة.
تصميم المعالجات واستخدام الطاقة
- تصميمات مختلفة للمعالجات تشمل أنوية بسرعات مختلفة لتوفير الطاقة.
- اختيار النوى المناسبة حسب الحاجة للأداء أو المراقبة البسيطة.
- أهمية نظام التشغيل في إدارة الموارد والأداء العام للنظام.
هيكل البيانات في نظام التشغيل
- إنشاء هياكل بيانات لمتابعة العمليات والموارد المستخدمة في النظام.
- ضرورة وجود مصفوفات وقوائم مرتبطة لتخزين المعلومات المؤقتة عن العمليات.
- حماية البيانات بحيث لا يمكن الوصول إليها إلا من قبل النواة نفسها.
أنظمة التشغيل ومصادرها المفتوحة
- تنوع أنظمة التشغيل مثل ويندوز ولينكس، مع التركيز على المصادر المفتوحة.
- إمكانية تطوير وتحسين الكود المصدر لأنظمة التشغيل المفتوحة.