# نظام تشغيل

نظام التشغيل (بالإنجليزية: Operating System)‏، اختصارًا بالانجليزية OS (بالإنجليزية: OS)‏ هو مجموعة من البرمجيات المسؤولة عن إدارة الموارد، والبرمجيات ويمثل وسيط بين المستخدم، وعتاد الحاسوب. وبتعريفٍ آخر، هو وسيلة لتشغيل برامج المستخدم، ويقوم بالمهام الأساسية مثل: إدارة وتخصيص موارد الحاسوب كالذاكرة والقرص الصلب الوصول للأجهزة الملحقة مثلا. كما يهتم بترتيب أولوية التعامل مع الأوامر، والتحكم في أجهزة الإدخال، والإخراج مثل: لوحة المفاتيح، وكذلك تسهيل التعامل مع الشبكات، وإدارة الملفات.

## مقدمة

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

## أنواع نظم التشغيل

يُقسَم نظام التشغيل من حيث قدرته على تشغيل أكثر من برنامج للمستخدم إلى قسمين:
* نظام متعدد المهام (بالإنجليزية: Multi-Tasking)‏: هنا يُتيح للمستخدم التعامل مع أكثر من برنامج في الوقت نفسه.
* نظام أحادي المهام (بالإنجليزية: Single-Tasking)‏: هذا النظام لا يُسمَح للمستخدم بتشغيل أكثر من برنامجٍ واحدٍ في الوقت ذاته.
كما تنقسم الأقسام الواردة أعلاه إلى عدة أقسام كذلك

### المنفرد المستخدم المنفرد المهمة

أبسط أنواع نظم التشغيل تخدم مستخدما واحدا في الوقت الواحد وهو منفرد المهمة (Single-Tasking) بمعنى آخر ويمكنه أن ينفذ برنامجا واحدا فقط في الوقت الواحد ومن الأمثلة عليه نظام إم إس-دوس (بالإنجليزية: MS-DOS)‏.

### المنفرد المستخدم المتعدد المهام

هذا النظام لديه القدرة على تنفيذ أكثر من برنامج واحد بشكل متزامن، حيث تنتقل الوحدة المعالجة المركزية (CPU) بين المهمات بسرعة كبيرة. ومن أمثلتها: windows,linux,macOS.

### المتعدد المستخدمين المنفرد المهمة

يسمح هذا النظام لعدد من الأشخاص بتنفيذ كل منهم برنامجاً واحداّ في الوقت نفسه. ويزود كل مستخدم بمحطة إدخال وإخراج تتصل مع الحاسوب المركزي ويسمى هذا التنظيم بنظام المشاركة الزمنية (Timesharing) وذلك لأن نظام التشغيل يأمر الحاسوب بالانتقال بسرعة كبيرة بين المستخدمين بعد إعطائهم فترات زمنية ثابتة لاستخدام CPU وتسمى هذه الفترات بالشرائح الزمنية (Time Slices) وهي قصيرة جداً (حوالي ألوف جزئية من الثانية) بحيث يتوهم كل مستخدم أنه يمتلك انتباه الحاسوب كلية ومن امثلته Windows NT.

### المتعددة المستخدمين المتعددة المهام

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

## حوسبة الزمن الحقيقي

حوسبة الزمن الحقيقي هي دراسة للعتاد والبرامج التي تكون لها قيود في الزمن الحقيقي بمعنى أن النظام لا بد أن يضمن معالجة الأحداث أو البيانات في وقت محدد، على عكس الأنظمة الأخرى حيث لا تكون هناك قيود على مدة الاستجابة على الرغم أنه كلما كانت أسرع استجابة كلما كانت أفضل، ويُلَبَّى الطلب على برامج الوقت الحقيقي بواسطة أنظمة تشغيل الوقت الحقيقي (مثل VxWork، و Windows CE، و RTLinux) ولغات البرمجة المتزامنة (مثل Averest و ChucK و SyncCharts).

### الصعوبات

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

## الأنظمة المدمجة

تعني ارتباط شي بشيء آخر، وهذا النظام صمم خصيصًا للقيام بمهمة محددة أو عدد من المهمات المحددة، أي أنه مصمم لأغراض محددة، وهو المتحكم أو المعالج القائم على النظام الذي تم تصميمه ليؤدي مهمة محددة أو عدة مهمات محددة.على سبيل المثال: إنذار الحريق هو نظام مدمج، والآلات الصناعية، والأجهزة الزراعية والمعدات الطبية والكاميرات والأجهزة المنزلية، فضلًا عن الأجهزة النقالة (المحمول)، وأيضًا أجهزة الراوتر (Routers) وأمثلة على الأنظمة المدمجة في منتج أكبر وهو الحاسوب (Computer) الـ DVD Player وكارت الـ LAN.والأنظمة المدمجة بعضها يحتوي على واجهة مستخدم (UI) وآخر لا.. على سبيل المثال الأجهزة التي صممت لأداء مهمة واحدة لا تحتوي على واجهة مستخدم في كثير من الأحيان، والأخرى الأكثر تعقيدًا والتي صممت لأداء عدد أكبر من المهمات مثل الأجهزة النقالة (المحمول) صممت بواجهة مستخدم رسومية (GUI).يحتوي النظام المدمج على ثلاث مكونات أساسية هي الجزء المادي (Hardware) وتطبيقات برمجية (Application Software) و RTOS وهو اختصار لـ Real Time Operating system.
من مميزات هذا النظام:
* سهولة التخصيص (تخصيص النظام لأداء المهمات المحددة).
* منخفض استهلاك الطاقة.
* تكلفة منخفضة.
* أداء جيد. ويعتبر من أهم عيوب الأنظمة المدمجة جهود تطويرها وإنتاجها عالية.

### الأنظمة الموزعة

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

## الخدمات
### إدارة العمليات

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

### القرص وأنظمة الملفات

لدى الكثير من أنظمة التشغيل العديد من أنظمة الملفات التي يمكن استخدامها بشكل طبيعي، جنو/لينكس لديه أكبر تنوع من أنظمة الملفات هذه، وهي إكس تي 2، إكس تي 3، ريسير أف أس، Reiser4، GFS، GFS2، OCFS، OCFS2، NILFS. كما يدعم جنو/لينكس أيضا أنظمة ملفات إكس إف إس وجي أف أس بشكل كامل. مع دعم لنظام ملفات جدول توزيع الملف FAT وإن تي إف إس. أما ويندوز فمحدود من ناحية دعمه لأنظمة الملفات حيث يدعم فقط: FAT12 وFAT16 وFAT32 وإن تي إف إس.
بالنسبة لأغلب أنظمة الملفات التي ذكرناها هناك طريقتان لتخصيصها. فالنظام هو إما أن يكون نظام الملفات المزود بقيد حوادث (Journaling File System)، أيْ مزود بقيد للحوادث (journal) وإما غير مزود به. يعتبر النظام المزود بقيد الحوادث (Journaling File System) خياراً آمناً في حالات تعافي النظام. لو حدث أن توقف النظام عن العمل فجأة (في حالة انقطاع الكهرباء مثلا) فإن نظام الملفات غير المزود بقيد للحوادث سيحتاج إلى نوع من الفحص في حين يحدث هذا تلقائيا في أنظمة الملفات المزودة بقيد الحوادث.
أنظمة ملفات ويندوز المزودة بقيد الحوادث هي NTFS فقط، في حين أن كل أنظمة ملفات لينكس هي مزودة بقيد الحوادث ماعدا ext2.
يتكون كل نظام ملفات من أدلة وأدلة فرعية منفصلة. ومع ذلك هناك اختلافات غير ملحوظة فمثلا أنظمة ملفات ويندوز تفصل بين المجلدات بالشرطة المائلة الراجعة "\" وأسماء الملفات غير حساسة لحالة الأحرف، على حين في يونكس يفصل بين المجلدات باستخدام الشرطة المائلة "/" وأسماء الملفات حساسة لحالة الأحرف.

### الشبكات

أغلب أنظمة التشغيل الحديثة قادرة على استخدام بروتوكول الشبكات العالمي TCP/IP. مما يعنى أن أحد الأنظمة يمكن أن يظهر في شبكة نظام آخر، ويشاركه المصادر مثل الملفات، والطابعة، وماسح الصور.
الكثير من أنظمة التشغيل أيضا تدعم واحد أو أكثر من البروتوكولات التقليدية الخاصة بكل مصنّع، مثل SNA في أنظمة آي‌ بي‌ إم، والبروتوكولات الخاصة بمايكروسوفت في ويندوز. هناك أيضا بروتوكولات خاصة بمهام معينة مثل NFS للوصول للملفات.

#### الحاسوب الشبكي

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

#### الحاسوب الشخصي

حاسوب شخصي (بالإنجليزية: Personal Computer) هو نظام الاكتفاء الذاتي الغير متصل بأي كمبيوتر آخر يمكن استخدامه من قبل مستخدم واحد. الحاسوب الشخصي قادر على توفير جميع الوظائف اللازمة ويستخدم لأغراض عامة ويكون حجمه وقدراته مناسبين للاستخدام الشخصي. وهو نظام مستقل لا يعتمد على الجهاز المركزي.

### الأمن

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

### واجهة المستخدم

| نظام التشغيل أوبونتو يستخدم واجهة يونتي | أوبن سوزي بواجهة كيدي |
وهي الوسيلة لربط المستخدم بالحاسوب، ومن فوائدها:
* توفر للمستخدم وسيلة للتعامل مع الحاسوب
* تمكن المستخدم من الوصول لخدمات النواة
* تمكن المستخدم من تشغيل التطبيقات.
* تسمح للمستخدم باستعراض الملفات والمجلدات.
ومن أشهر أنواعها:
* واجهة سطر الأوامر CLI:
وتعتبر من أقدم الواجهات التي تعتمد على كتابة الأوامر بواسطة لوحة المفاتيح فيقوم المعالج بتنفيذها مباشرة ومن هنا يتضح أن هذه الواجهات لا تدعم التنفيذ المتعدد للمهام، من الأنظمة التي تستخدمها دوس بإصداراته المختلفة.
* واجهة المستخدم الرسومية GUI:
عبارة عن واجهة توفر صور وأيقونات تسهل للمستخدم التعامل معها وتعتبر من أنسب أنواع الواجهات وأكثرها استخداما، من الأنظمة التي تستخدم هذه الواجهات ويندوز بإصداراته المختلفة وجنو/لينكس ويونكس، من الجدير بالذكر أن أكثر الأنظمة تمكن المستخدم من استخدام واجهة سطر الأوامر ضمن الواجهات الرسومية.
* واجهة المستخدم القابلة للتكبير ZUI:
في هذا النوع من الواجهات تكون جميع التطبيقات قيد التشغيل ولكنها تكون مصغرة في سطح المكتب وبمجرد النقر على ايقوناتها يقوم نظام التشغيل بتكبيرها فقط وعند الإنهاء أيضا يقوم بتصغيرها، من التطبيقات التي تستخدم هذا النوع من الواجهات آي فون، خرائط جوجل، لكنها غير محبذة لأنظمة التشغيل العملاقة كونها تستوجب أن تكون جميع التطبيقات قيد التشغيل وبالتالي تكون متواجدة في الذاكرة الأساسية، وهذا ما يصعب تنفيذه للأنظمة ذات البرامج والتطبيقات الكثيرة.
أغلب أنظمة التشغيل الحديثة اليوم توفر واجهة مستخدم رسومية(GUI). بعض أنظمة التشغيل الأقدم تربط بشكل وثيق بين الواجهة الرسومية والنواة مثل الإصدارات الأولى من ويندوز وماك أو.إس. أنظمة التشغيل الأحدث تفصل بين نظام الرسوميات الفرعي والنواة (كما في ماك أو.إس.إكس والأنظمة المبنية على ويندوز إن تي.)
قامت بعض أجهزة الكمبيوتر المبكرة بحماية نظام التشغيل من خلال وضعه في قسم ذاكرة لا يمكن تعديله بواسطة وظيفة المستخدم أو نظام التشغيل نفسه. ولكن توجد مشكلتين في هذا المخطط .
1 - يجب تمرير البيانات المهمة مثل كلمات المرور ومعلومات التحكم في الوصول التي يتطلبها أو يتم إنشاؤها بواسطة نظام التشغيل من خلال أو تخزينها في فتحات ذاكرة غير محمية ويمكن للمستخدمين غير المصرح لهم الوصول إليها.
2 - لا يمكن أبداً تحديث نظام التشغيل أو ترقيته، حيث إنه غير قابل للتعديل أو يمكن الوصول إليه من قبل المستخدم أو نظام التشغيل نفسه.

### مشغلات العتاد

مشغل العتاد (بالإنجليزية: hardware driver)‏ هو قطعة من برمجيات الحاسوب صممت لتسمح بالتفاعل بين العتاد والبرمجيات.

### واجهة التطبيقات

هذه الواجهة توفر لمطوري البرامج والتطبيقات مجموعة من الدوال (Functions) الأساسية التي يكثر استعمالها مثل دوال لإدارة الذاكرة والدوال الرسومية ودوال لإدارة الملفات وغيرها. هذه الواجهة تسهل عمل المبرمج حيث أنها توفر عليه القيام بهذه المهمات في البرامج التي يكتبها.

### الوظائف الأساسية

لنظام التشغيل وظائف أساسية في عمل الحاسوب من أهمها:
* تنظيم ملفات المستخدم على العديد من وسائط التخزين (Storage Media) كالقرص الصلب والقرص المضغوط (CDROM). كما ويعتمد كل نظام تشغيل على نظام ملف (File System) خاص به، مثلا، تعتمد معظم أنظمة تشغيل مايكروسوفت ويندوز الجديدة على نظام NTFS.
* تنظيم البرامج المحمَلة على الحاسوب وقطع الأجهزة (Hardware) المتصلة به، كالشاشة والطابعة ولوحة المفاتيح...إلخ
* معالجة أخطاء قطع الأجهزة والبرامج وتفادي خسارة المعلومات.
* المحافظة على سرية النظام وذلك لضمان عدم الوصول غير المسموح به للبيانات والبرمجيات.
* إدارة الذاكرة الرئيسية ووحدات الإدخال والإخراج وإدارة وحدة المعالجة ووحدات التخزين الثانوي.

## التطبيقات

يجب أن يتضمن نظام التشغيل بعض التطبيقات مثل متصفحات الويب وبرامج البريد الإلكتروني، حيث يمكن أن يوفر اقتران متصفح الويب (أو أي تطبيق آخر) مع نظام التشغيل مزايا أداء معين، على سبيل المثال لان متصفح الإنترنت (Internet Explorer) مقترناً بنظام التشغيل (Windows)، فإنه يتم تخزينها مؤقتًا بينما يقوم Windows بالتمهيد لأعلى مما يجعل تحميل البرنامج أسرع، وهذا يعارض FireFox والذي لا يتم تخزينه مؤقتًا (بشكل افتراضي) بواسطة Linux ، ولذلك يتم تحميله ببطء في كل مرة يتم فيها استدعاؤه، ولكن يجب أن تكون محدودة الحجم؛ لكي لا تأثر على سرعة النظام.

## استدعاء نظام التشغيل

يوفر نظام التشغيل عدداً من الخدمات، في المستوى الأدنى يسمح استدعاء النظام (System Call) للبرنامج الحالي بإرسال طلب للنظام التشغيل مباشرة، وفي المستوى الأعلى يقوم مترجم الأوامر (Command Interpreter) أو Shell بتوفير آلية طلب نظام التشغيل للمستخدم من دون كتابة البرنامج، من الممكن أن تأتي الأوامر من خلال الملفات عن طريق (Batch-Mode Executio) أو مباشرة من خلال واجهة النصوص أو واجهة المستخدم الرسومية عندما تكون في الوضع التفاعلي (Interactive) أو الوضع المشترك (Time-Shared Mode). يقوم نظام البرامج في تلبية العديد من طلبات المستخدم الشائعة .
تعتمد أنواع الطلبات على المستويات، يجب على مستوى استدعاء النظام أن يوفر الوظائف الأساسية مثل التحكم في العمليات والملفات ومعالجة الجهاز، فيما أن طلبات المستوى الأعلى مثل مترجم الأوامر (Command Interpreter) و برامج النظام تترجم إلى سلسلة من استدعاءات النظام .

## تصميم نظام التشغيل

إن تصميم نظام تشغيل جديد هو مهمة أساسية. ومن المهم أيضاً أن تكون أهداف النظام معرّفه بشكل جيد قبل البدء بالتصميم. إن نوع النظام المرغوب هو الأساس للخيارات ضمن الخوارزميات والاستراتيجيات المختلفة التي ستكون مطلوبة.
تصميم نظام التشغيل هي المهمة الرئيسية عند إنشاء نظام تشغيل جديد، ولتصميم نظام تشغيل ناجح يجب أن تكون الأهداف واضحة قبل البدء بالتصميم، فإن نوع النظام المطلوب هو الأساس في اختيار الخوارزميات والاستراتيجيات المطلوبة .
على مدار فترة التصميم يجب أن نكون حريصين ان نفصل القرارات الأمنية من تفاصيل التنفيذ (Mechanisms)مما يسمح هذا الفصل بتوفير المرونة إذا تغيرت القرارات الأمنية لاحقاً . في الوقت الحالي يجب على نظام التشغيل أن يكون مكتوب بلغة تنفيذ الأنظمة (Systems-Implementation Language)أو لغة عالية المستوى (Higher-Level Language)، هذه الميزة تسمح بتحسين الإنجاز، التعديل وقابلية التنقل .

## هيكل نظام التشغيل

نظام التشغيل كبير ومعقد كنظام تشغيل حديث ويجب أن تتم هندسته بعناية لكي يتم تعديله بسهولة، تنقسم مكونات نظام التشغيل إلى طبقات (Layers). كل طبقة تتفاعل فقط مع الطبقة السفلية التي تتطلب خدمات الطبقة العليا للرد على الطلبات
مثال:
- طبقة المستوى الأعلى
* Applications
-أدنى مستوى الطبقة
* Hardware
تدعم أنظمة التشغيل الآن الوحدات المحملة ديناميكيًا أثناء التنفيذ وهو آلية يمكن من خلالها لبرنامج الكمبيوتر، في وقت التشغيل، تحميل واسترداد عناوين الوظائف والمتغيرات الموجودة، وتنفيذ تلك الوظائف أو الوصول إلى تلك المتغيرات . وهيكل نظام التشغيل ينقسم إلى أجزاء مستقلة حيث لها ميزات فردية بسيطة، ويمكن الحفاظ على التصميم وبتالي يمكن التحكم فيه. يمكن أن يؤثر هيكل نظام التشغيل على الميزات الأساسية مثل المتانة أو الكفاءة.

## معالجة النظام

عند حدوث خطأ في النواة تعمل النواة (Kernel) وعملية المعالجة معاً. ويتم استخدام أدوات المعالجة وأدوات أخرى لحل هذا الخطأ مثل أداة (DTrace): تقوم هذه الأداة بالكشف عن المأزق أو الخطأ الموجود وفهم سلوك النظام الآخر.
ولبدء نظام التشغيل في الحاسب آلي يجب على وحدة المعالجة المركزية تهيئة وبدء تنفيذ التمهيد (Bootstrap), والتمهيد يستطيع تنفيذ نظام التشغيل مباشرة إذا كان نظام التشغيل في البرامج الثابتة أو يكمل عملية تحميل البرنامج الأكثر ذكاءً من البرامج الثابتة حتى يتم تحميل نظام التشغيل نفسه في الذاكرة ويتم تنفيذه.

## المقاطعة ضد الفخ

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

## المصادر المفتوحة

المصادر المفتوحة (بالإنجليزية: Open Source): يشير إلى أي برنامج يتوفر شفرة مصدره (Source Code) للاستخدام أو التعديل كما يرى المستخدمون أو غيرهم من المطورين.

### سلبيات المصادر المفتوحة

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

### إيجابيات المصادر المفتوحة

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

## الفرق بين خدمة النظير إلى النظير وخدمة الزبائن

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

## الفرق بين الأنظمة المجمعة ومتعدد المعالجات

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

## ما المطلوب لجهازين تابعين للأنظمة المجمعة لتوفير خدمة عالية التوفر ؟

من أجل ان تتوفر خدمة عالية التوفر في الأنظمة المجمعة، يجب تكرار الحالة على الجهازين ويجب تحديثها باستمرار. عندما تفشل إحدى هذه الأجهزة، يمكن للآخر التولي على وظائف الجهاز الفاشل.

## ذاكرة الكاش أو الذاكرة المخبئية (Cache Memory)

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

## العقبات الاقتصادية للذاكرة المخبئية

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

## المعالجة المتعددة

هي استخدام مجموعة من وحدات المعالجة المركزية في نظام كمبيوتر واحد. وهي تحتوي على نوعين :
1. المعالجة المتعددة المتماثلة : هي مجموعة من وحدات المعالجة المركزية تتشارك في استخدام الذاكرة وكل وحدة معالجة مركزية تعمل على كل المهام .
2. المعالجة المتعددة الغير متماثلة: هي مجموعة من وحدات المعالجة المركزية التي لا تتشارك في استخدام الذاكرة وكل وحدة معالجة مركزية تعمل على معمة معينة وتوجد وحدة معالجة مركزية تعمل على إدارة هذه المهام.

## ايجابيات وسلبيات المعالجة المتعددة المتماثلة

ايجابيات :
* زيادة الإنتاجية: زيادة عدد المعالجات.
* الاقتصاد الكلي: تتشارك في استخدام الذاكرة والمحيط
* زيادة الموثوقية : إذا تعطلت وحدة معالجة مركزية واحدة لا يتأثر النظام.
سلبيات:
* إذا تعطلت وحدة معالجة مركزية ستتأثر السرعة.
توفر بعض وحدات المعالجة المركزية (CPUs) أكثر من وضعين للتشغيل واستخدامين محتملين لهذه الأوضاع المتعددة .
1.وضع النواة.
2. وضع المستخدم.
دعمت بعض وحدات المعالجة المركزية* أساليب متعددة * للتشغيل من خلال توفير اختلافات مختلفة في وضع النواة ووضع المستخدم بشكل منفصل، بدلاً من التمييز بين وضع النواة ووضع المستخدم فقط.
1. تتمثل إحدى الاحتمالات في تقديم اختلافات مختلفة في شفرة النواة. على سبيل المثال، يسمح رمز معين لأجهزة USB أن تسمح لأجهزة USB بتشغيل برنامج التشغيل. وهذا يعني أنه يمكن صيانة أجهزة USB دون الحاجة إلى التبديل إلى وضع النواة، وذلك من خلال السماح بشكل أساسي بتشغيل برامج تشغيل USB في وضع شبه مستخدم / النواة.
2. الاحتمال الثاني هو توفير اختلافات مختلفة في وضع المستخدم. يمكن استخدام أوضاع المستخدم المتعددة لتوفير نهج أمان أكثر دقة. ربما ينفذ المستخدمون الذين ينتمون إلى المجموعة نفسها كل رمز آخر. عندما كان الجهاز في هذا الوضع، يمكن أن يعمل عضو من المجموعة ينتمي إلى أي شخص آخر في المجموعة.
المؤقتات يمكن استخدامها لحساب الوقت الحالي. يمكن للبرنامج تعيين جهاز توقيت لبعض الوقت في المستقبل والذهاب إلى النوم. عندما يستيقظ من قبل المقاطعة، فإنه يمكن تحديث حالتها المحلية، والتي تستخدمها لتتبع عدد المقاطعات التي تلقتها حتى الآن. فإنه يمكن ثم تكرار هذه العملية باستمرار تعيين المقاطعات جهاز ضبط الوقت وتحديث حالته المحلية عند رفع المقاطعات بالفعل.

## بعض الأنظمة المتوفرة

* مايكروسوفت ويندوز، طور في العام 1992: Windows 3.1، موجه للمستخدم المنزلي خصوصًا.
* ماك أو إس عشرة من شركة أبل، تم إصداره في العام 1999.
* جنو/لينكس الحر/مفتوح المصدر، شبيه بيونكس ويستعمل في شتى الأغراض، كما أنه مجاني.
* يونكس. طور في العام 1969، يتمتع بشهرة كبيرة في الأوساط الأكاديمية لدوره الكبير في تطوير شبكة إنترنت.
* رياكت أو إس نظام تشغيل حر مفتوح المصدر متوافق مع نظام ويندوز.
* إم إس - دوس
* أو إس/2 المطور من قبل اي بي ام
* سولاريس: من شركة Sun، نظام تشغيل شبيه بيونكس موجه للخوادم عمومًا.

## استدعاءات النظام

استدعاءات النظام هي طريقة تعمل في وضع المستخدم لطلب بعض الخدمات من نظام التشغيل. أي بمعنى آخر تمكن المستخدم أن يطلب من نظام التشغيل أن يقوم ببعض الأمور نيابة عنه. مثال: أن يطلب من نظام التشغيل أن يقوم بعمل نسخ لمحتويات ملف ووضعه في ملف آخر.

## الانشطة الرئيسيه لنظام التشغيل التي تتعلق بإدارة العمليات

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

## واجهة سطر الأوامر

واجه سطر الأوامر والمعروفة باسم (Command Line Interface “CLI ”) أو مترجم الأوامر وهي التي تسمح للمستخدم بإدخال الأوامر مباشرة ليتم تنفيذها بواسطة نظام تشغيل، وفي بعض الأحيان يتم تطبيق واجه سطر الأوامر في النواة (Kernel)، واحيانًا بواسطة برمجيات النظام.
عادة ما يكون مترجم الأوامر منفصلاً عن النواة (Kernel)لأن النواة هو مركز نظام التشغيل الذي يدير كل شيء في نظام التشغيل، يقرأ مترجم الأوامر الأوامر من المستخدم أو من ملف الأوامر وينفذها، عادةً عن طريق تحويلها إلى واحد أو أكثر من استدعاء النظام (system calls)، أي أن واجهة سطر الأوامر (CLI) عادة لا تكون جزءًا من النواة (Kernel); لأن مترجم الأوامر يخضع للتغييرات. وبما أن واجه سطر الاوامر أو مترجم الأوامر هو وحدة المستخدم ليس وحده النواة (Kernel) ولذلك فان واجه سطر الاوامر منفصلة عن النواة (Kernel).

## مستويات وحدات التخزين

| 5 | 4 | 3 | 2 | 1 | المستوى |
| Magnetic Disk القرص المغناطيسي | Solid State Disk وسيط تخزين ذو حاة ثابتة | Main Memory الذاكرة الرئيسية | Cache الذاكرة المخبأة | Register سجل التخزين | الاسم |
| <10TB | <1TB | <64GB | <16MB | <1KB | الحجم الفعلي |
| 5000000 | 25000-50000 | 80-250 | 0.5-25 | 0.25-.05 | زمن الوصول |
| 20-150 | 500 | 1000-5000 | 5000-10000 | 20000-100000 | عرض الموجة |
| نظام التشغيل | نظام التشغيل | نظام التشغيل | الكيان المادي | المجمع | أدير من قبل |
| القرص | القرص | القرص | الذاكرة الرئيسية | الذاكرة المخبأة | دعم من قبل |