لماذا يُعتبر نظام التشغيل (Operating System) حجر الأساس في عالم التقنية؟
هل تساءلت يومًا كيف يعمل جهازك الذكي أو حاسوبك بسلاسة؟ السر يكمن في نظام التشغيل (OS)، ذلك البطل الخفي الذي يعمل كوسيط بين مكونات الكمبيوتر (الهاردوير) والبرمجيات (السوفت وير). نظام التشغيل ليس مجرد برنامج عادي؛ هو العقل المدبر الذي يتيح تشغيل التطبيقات، ويدير موارد الجهاز بذكاء، ويضمن لك تجربة استخدام سلسة وخالية من المتاعب.
سواء كنت تستخدم حاسوبًا شخصيًا، هاتفًا ذكيًا، أو حتى وحدات صناعية قابلة للبرمجة (PLC)، فإن نظام التشغيل هو الذي يتولى تنظيم العمليات، وإدارة أولويات البرامج، وضمان استقرار النظام. تخيله كمدير أوركسترا ماهر، حيث يتولى تنسيق كل جزء من الجهاز ليعمل بتناغم مع الآخر.
في هذا المقال مع وسام ويب، نذهب معك لاكتشاف وظائف نظام التشغيل، أنواعه المختلفة، وكيف أصبح العمود الفقري لعالم التكنولوجيا الحديثة. سواء كنت مبتدئًا تتطلع إلى فهم أساسيات أنظمة التشغيل، أو محترفًا تبحث عن تعميق معرفتك، ستجد هنا ما يثير فضولك ويحفزك على الاستمرار في القراءة.
💡 ماذا ستتعلم في هذا المقال؟
- ما هو نظام التشغيل؟
- وظائفه الرئيسية: من إدارة الذاكرة إلى تعدد المهام.
- أنواع أنظمة التشغيل: من أنظمة سطح المكتب إلى أنظمة الزمن الحقيقي.
- أهميته في حياتنا اليومية: كيف يجعل التكنولوجيا ممكنة؟
إبق معنا في هذا المقال الهام لفهم نظام التشغيل، ذلك العالم الخفي الذي يجعل كل نقرة على جهازك ممكنة!
جدول المحتويات
- ما هو نظام التشغيل (OS)؟
- وظيفة نظام التشغيل
- أين توجد أنظمة التشغيل؟
- ما هي تاريخ أنظمة التشغيل وكيف تطورت؟
- أحدث أنظمة تشغيل
- حصة السوق لأنظمة التشغيل
- تعريف نظام تشغيل الشبكة
- أنواع أنظمة التشغيل
- تصنيف أنظمة تشغيل الكمبيوتر حسب عدد المعالجات
- مهام نظام التشغيل
- ما هي مكونات نظام التشغيل؟
- ما هي نواة نظام التشغيل؟
- كيف تعمل البرامج في أنظمة التشغيل؟
- ما هي المقاطعة في نظام التشغيل؟
- ما هي المقاطعة البرمجية (Software Interrupt) في نظام التشغيل؟
- ما هو مفهوم الإشارة (Signal) في نظام التشغيل؟
- ما هي المقاطعة (الوقفه) الصلبة في نظام التشغيل؟
- ما هو الوصول المباشر للذاكرة (DMA) في أنظمة التشغيل؟
- أنماط تشغيل أنظمة التشغيل
- إدارة الذاكرة في نظام التشغيل
- ما هي الذاكرة الافتراضية في نظام التشغيل؟
- ما هو تبديل الذاكرة Swapping في نظام التشغيل؟
- ما هو تعدد المهام في نظام التشغيل؟
- الوصول إلى القرص ونظام الملفات في أنظمة التشغيل
- برامج تشغيل الأجهزة في أنظمة التشغيل
- شبكات الحاسوب في أنظمة التشغيل
- الأمان في أنظمة التشغيل
- ما هو واجهة المستخدم في نظام التشغيل؟
- ما هو نظام التشغيل في الزمن الحقيقي (RTOS)؟
- لماذا نستخدم نظام التشغيل؟
- ما هي العوامل المؤثرة على اختيار أنظمة التشغيل؟
- ما هي الخصائص الرئيسية لنظام التشغيل (Operating System)؟
- ما هي مميزات نظام التشغيل؟
- الأسئلة الشائعة
- الخلاصة
ما هو نظام التشغيل (OS)؟
نظام التشغيل (Operating System | OS) هو البرنامج الأساسي الذي يدير أنواعًا مختلفة من أجهزة الكمبيوتر والهواتف الذكية. من خلال هذا البرنامج، يمكن إدارة جميع التطبيقات والبرامج المثبتة على الكمبيوتر، بالإضافة إلى التفاعل مع مكونات الجهاز المادية (Hardware). لذلك، يُعرف بالإنجليزية بـ (Software that manages computer hardware resources).
تُرسل البرامج والتطبيقات طلبات الخدمات والمهام المختلفة إلى نظام التشغيل عبر “واجهة برمجة التطبيقات” (Application Program Interface | API). من ناحية أخرى، النواة (Kernel) هي جزء أساسي من نظام التشغيل وليست برنامجًا منفصلًا. النواة تحتوي على المكونات الأساسية التي تتحكم في الوصول إلى موارد الجهاز المادية (مثل الذاكرة والمعالج والأجهزة الطرفية) وتدير العمليات الأساسية مثل إدارة الذاكرة والعمليات (Process Management) والاتصال بالأجهزة.
جميع أجهزة الكمبيوتر الحديثة تحتاج إلى نظام تشغيل واحد على الأقل لتوفير بيئة عمل تسمح بتشغيل البرامج المختلفة وإدارة موارد الجهاز بشكل فعال.
لفهم أفضل، يمكن تشبيه نظام التشغيل بنظام إدارة مبنى. المبنى (الجهاز) يحتوي على عدة طوابق (المكونات المادية مثل المعالج والذاكرة والقرص الصلب) وكل طابق له وظيفة محددة. مدير المبنى (نظام التشغيل) هو الذي ينظم عمل جميع الطوابق ويتأكد من أن كل شيء يعمل بسلاسة.
- النواة (Kernel): هي مثل نظام الأمان والتحكم المركزي في المبنى. تحدد كيفية تفاعل الطوابق مع بعضها البعض ومع الزوار (الموارد المادية).
- واجهة برمجة التطبيقات (API): هي مثل التعليمات التي يعطيها مدير المبنى للعمال. كل عامل (تطبيق) يعرف ما يجب عليه فعله بناءً على هذه التعليمات.
- التطبيقات: هي العمال أنفسهم، مثل عامل النظافة (برنامج مكافحة الفيروسات) أو عامل الصيانة (برنامج إدارة الملفات).
بدون مدير المبنى (نظام التشغيل)، سيكون المبنى (الجهاز) فوضويًا وغير قادر على العمل بشكل صحيح. وبالمثل، بدون نظام التشغيل، لن تعمل التطبيقات والبرامج بشكل صحيح.
أمثلة على أنظمة التشغيل:
- Windows: مثل مدير مبنى يعمل في أبنية متنوعة (أجهزة كمبيوتر مختلفة).
- Linux: مثل مدير مبنى يعتمد على أنظمة مفتوحة المصدر.
- Android وiOS: مثل مديري مبانٍ متخصصين في إدارة الهواتف الذكية.
بهذا التشبيه، نرى أن نظام التشغيل هو العنصر الأساسي الذي يجعل كل مكونات الجهاز تعمل معًا بتناغم لتحقيق الأهداف المطلوبة.
وظيفة نظام التشغيل
يشرف نظام التشغيل على برمجيات الحاسوب ومكوناته. فهو يدير الملفات والذاكرة والعمليات، ويتولى عمليات الإدخال والإخراج، ويتحكم في الأجهزة الطرفية مثل محركات الأقراص والطابعات.
في أغلب الأحيان، تعمل العديد من تطبيقات الحاسوب في وقت واحد، وتتطلب جميعها الوصول إلى وحدة المعالجة المركزية (CPU) والذاكرة ووحدة التخزين. يدير نظام التشغيل كل هذا لضمان تلبية كل برنامج لمتطلباته.
يوضح الرسم البياني أعلاه واجهات المستخدم مع النظام وبرامج التطبيقات. يتواصل النظام وبرامج التطبيقات مع نظام التشغيل، بينما يتواصل نظام التشغيل مع الأجهزة. تُجري كل من هاتين الواجهتين معاملات ثنائية الاتجاه، بإرسال واستقبال البيانات.
أين توجد أنظمة التشغيل؟
توجد أنظمة التشغيل (Operating Systems) في العديد من الأجهزة التي تعتمد على الكمبيوتر، بدءًا من الهواتف المحمولة (Mobile Phones) ووحدات التحكم في الألعاب (Gaming Consoles) وصولًا إلى خوادم الويب (Web Servers) وأجهزة الحوسبة الفائقة (Supercomputers).
تقوم أنظمة التشغيل المشتركة زمنيًا (Time-Sharing Operating Systems) بجدولة المهام بهدف تحسين استخدام موارد النظام، وقد تتضمن أيضًا برامج محاسبية لتخصيص التكاليف المرتبطة بوقت المعالجة على المعالج (Processor Time)، وسعة التخزين الضخمة (Mass Storage)، والطباعة (Printing)، وغيرها من الموارد.
تتوفر أيضًا أنواع أخرى من أنظمة التشغيل المصممة لأغراض متخصصة، مثل أنظمة التشغيل المدمجة (Embedded Systems) وأنظمة التشغيل الزمن الحقيقي (Real-Time Systems)، التي تُستخدم في العديد من التطبيقات المختلفة. كما توجد أنظمة تشغيل تركز على الأمان (Security-Focused Operating Systems). بعض أنظمة التشغيل تتطلب موارد نظام قليلة، مثل بعض توزيعات لينكس الصغيرة (Lightweight Linux Distributions)، في حين أن بعضها الآخر قد يحتاج إلى متطلبات أعلى.
تتطلب بعض أنظمة التشغيل التثبيت يدويًا، بينما تأتي أنظمة أخرى مثبتة مسبقًا (OEM-Installed) مع أجهزة الكمبيوتر الجاهزة للبيع. بالإضافة إلى ذلك، هناك أنظمة تشغيل يمكن تشغيلها مباشرة من وسائط التخزين مثل الأقراص الحية (Live CD) أو من وحدات التخزين المحمولة مثل محركات أقراص USB، دون الحاجة إلى التثبيت على الجهاز.
ما هي تاريخ أنظمة التشغيل وكيف تطورت؟
أنظمة التشغيل كانت متاحة لعدة عقود ومرت بعدة أجيال. في ما يلي، سنتعرف على الأجيال المختلفة لأنظمة التشغيل مع أمثلة من العالم الواقعي.
1. الجيل الأول
- الفترة الزمنية: الأربعينيات إلى أوائل الخمسينيات من القرن العشرين.
- أبرز المميزات: الصمامات المفرغة (Vacuum Tubes) وبرمجة الآلة (Machine Language).
- مثال: ENIAC (اختصار لـ Electronics Numerical Integrator and Computer) كان أحد أول أجهزة الكمبيوتر في العالم التي اعتمدت على الصمامات المفرغة لإجراء الحسابات.
2. الجيل الثاني
- الفترة الزمنية: أواخر الخمسينيات إلى منتصف السبعينيات من القرن العشرين.
- أبرز المميزات: الترانزستورات ولغة التجميع (Assembly Language).
- مثال: نظام IBM 1401 استخدم الترانزستورات لتحقيق معالجة أسرع وأكثر موثوقية مقارنة بالصمامات المفرغة.
3. الجيل الثالث
- الفترة الزمنية: منتصف الستينيات إلى منتصف السبعينيات من القرن العشرين.
- أبرز المميزات: الدوائر المتكاملة (Integrated Circuits | ICs) ولغات البرمجة عالية المستوى (High-Level Languages).
- مثال: نظام IBM System/360 كان عائلة من أجهزة الكمبيوتر المتوافقة مع برامج وأجهزة طرفية متنوعة.
4. الجيل الرابع
- الفترة الزمنية: أواخر السبعينيات إلى التسعينيات من القرن العشرين.
- أبرز المميزات: المعالجات الدقيقة (Microprocessors)، أجهزة الكمبيوتر الشخصية، والواجهات الرسومية للمستخدم (GUI).
- مثال: أطلقت Apple جهاز Macintosh مع واجهة مستخدم رسومية تعتمد على الفأرة، مما جعل أجهزة الكمبيوتر أكثر سهولة في الاستخدام.
5. الجيل الخامس
- الفترة الزمنية: التسعينيات من القرن العشرين حتى الآن.
- أبرز المميزات: الذكاء الاصطناعي، معالجة اللغة الطبيعية، والمعالجة المتوازية.
- مثال: الذكاء الاصطناعي Deep Blue من شركة IBM تمكن من هزيمة غاري كاسباروف، بطل العالم في الشطرنج، عام 1997، مما أظهر قوة الذكاء الاصطناعي في اتخاذ القرارات المعقدة.
6. الجيل السادس (افتراضي)
- أبرز المميزات: الذكاء الاصطناعي المتقدم، الحوسبة الكمية، والواجهات الدماغية-الحاسوبية.
- مثال: شركات مثل IBM وGoogle قامت ببناء أجهزة كمبيوتر كمومية قوية جدًا، مما أحدث ثورة في المعالجة والحسابات المعقدة.
- أبرز المميزات: ذكاء اصطناعي أكثر تقدمًا، تكامل مع الإدراك البشري، وطرق جديدة في المعالجة.
- مثال: قد تشمل الأجيال القادمة أجهزة كمبيوتر متصلة مباشرة بالدماغ البشري تسمح بالتفاعل من خلال الأفكار.
من خلال هذه النظرة السريعة على الأجيال المختلفة، نلاحظ أن أنظمة التشغيل تطورت من أوامر بسيطة على مستوى الآلة إلى أنظمة معقدة للغاية قادرة على إدارة مهام معقدة وتفاعلات المستخدم. كل جيل بني على نجاحات الجيل السابق، مما يعكس الإمكانات المتزايدة للتكنولوجيا.
أحدث أنظمة تشغيل
شهدت أنظمة التشغيل الرئيسية تحديثات وإصدارات جديدة لتعزيز الأداء وتقديم ميزات مبتكرة:
- ويندوز: أطلقت مايكروسوفت نظام ويندوز 11 في 2021، مع التركيز على تحسين التكامل مع الخدمات السحابية، وتعزيز الأمان، وتقديم تجربة مستخدم أكثر سلاسة.
- macOS: قدمت آبل نظام macOS Monterey في يونيو 2024، مضيفة ميزات جديدة مثل تحسينات في تطبيقات الإنتاجية وتكامل أعمق مع أجهزة آبل الأخرى.
- أوبونتو: أصدرت شركة كانونيكال نسخة Ubuntu 24.04 LTS في أبريل 2024، مع تحسينات في الأداء ودعم موسع للأجهزة الحديثة.
- KDE Neon: استمرت KDE في تحديث توزيعة KDE Neon بانتظام، مع التركيز على تقديم أحدث إصدارات بيئة سطح المكتب بلازما للمستخدمين.
- ChromeOS: واصلت جوجل تطوير نظام ChromeOS، مع تحسينات في دعم تطبيقات أندرويد وتكامل أفضل مع خدمات جوجل السحابية.
حصة السوق لأنظمة التشغيل
تحتل أنظمة التشغيل حصة سوقية كبيرة على مستوى العالم. فيما يلي حصص السوق لأنظمة التشغيل المختلفة عالميًا:
- أندرويد (Android) يحتل أعلى حصة سوقية عالمية بنسبة 40.15%.
- ويندوز (Windows) يلي أندرويد بحصة سوقية تبلغ 29.31%.
- iOS يتبع أندرويد عن كثب بحصة سوقية تبلغ 16.77%.
- OS X يأتي بعد ذلك بحصة سوقية تبلغ 8.61% عالميًا.
- أنظمة تشغيل متنوعة (Miscellaneous Operating Systems) تأخذ حصة سوقية تبلغ 1.64%.
- أخيرًا، Chrome OS يحتل حصة سوقية تبلغ 1.36% عالميًا.
هذه النسب توضح مدى انتشار أنظمة التشغيل المختلفة واستخدامها على مستوى العالم.
تعريف نظام تشغيل الشبكة
نظام تشغيل الشبكة (Network Operating System – NOS) هو نظام تشغيل مصمم خصيصًا لإدارة الأجهزة والشبكات، مثل أجهزة التوجيه (Routers)، المحولات (Switches)، والجدران النارية (Firewalls). يتيح NOS للأجهزة المتصلة في شبكة محلية (LAN) التواصل ومشاركة الموارد بكفاءة. تشمل وظائفه الأساسية إنشاء وإدارة حسابات المستخدمين، التحكم في الوصول إلى الموارد مثل الملفات والطابعات، وتسهيل الاتصال بين الأجهزة. بالإضافة إلى ذلك، يقوم NOS بمراقبة أداء الشبكة، معالجة المشكلات، وإدارة الموارد لضمان تشغيل الشبكة بكفاءة وأمان.
تتضمن الأجهزة التي تستخدم نظام تشغيل الشبكة عادةً أجهزة الكمبيوتر الشخصية، الطابعات، الخوادم، وخوادم الملفات، متصلة عبر شبكة محلية. يتمثل دور NOS في توفير خدمات الشبكة الأساسية والقدرات التي تدعم طلبات متعددة في بيئة متعددة المستخدمين.
أنواع أنظمة التشغيل
تنقسم أنظمة التشغيل من حيث الأجهزة التي تعمل عليها إلى أربع فئات رئيسية:
1. أنظمة تشغيل الكمبيوتر
تم تصميم هذه الفئة من أنظمة التشغيل لتشغيل البرامج والتطبيقات الخاصة بأجهزة الكمبيوتر. يتم تطويرها من قبل شركات كبرى مثل مايكروسوفت وآبل، وتتنوع إصداراتها حسب بيئة العمل والاستخدام. في بعض الحالات، تكون هذه الأنظمة ذات بيئة مغلقة، مما يعني أن تشغيل التطبيقات وحتى العتاد (Hardware) قد يكون حصريًا ومصممًا خصيصًا لها.
2. أنظمة تشغيل الهواتف المحمولة
تعمل الهواتف الذكية بأنظمة تشغيل مخصصة لها، تدير تشغيل التطبيقات والملفات وإدارة موارد الجهاز. غالبًا ما تعتمد هذه الأنظمة على مكونات (Hardware) مخصص من قبل الشركات المصنعة. من أشهر أنظمة التشغيل للهواتف المحمولة:
- أندرويد (Android): مفتوح المصدر ويستخدم في معظم الهواتف الذكية.
- iOS: نظام تشغيل مغلق مخصص لأجهزة آيفون وآيباد من آبل.
- HarmonyOS: من تطوير هواوي ويستخدم في أجهزتها الحديثة.
تتوفر التطبيقات بشكل منفصل لكل نظام تشغيل، رغم أن بعض التطبيقات قد تكون متاحة على أكثر من منصة بإصدارات مختلفة.
3. أنظمة تشغيل أجهزة الشبكات
تستخدم بعض الأجهزة الخاصة بالشبكات، مثل الموجهات (Routers) والمحولات (Switches) والخوادم (Servers)، أنظمة تشغيل مخصصة لإدارتها. تعتمد هذه الأنظمة على العتاد الذي توفره الشركات المصنعة لضمان التوافق والأداء الأمثل. من أبرز الشركات التي تقدم أنظمة تشغيل مخصصة لأجهزتها:
- Cisco: تقدم نظام Cisco IOS لإدارة أجهزة الشبكة الخاصة بها.
- MikroTik: توفر نظام RouterOS للتحكم في الأجهزة الشبكية.
4. أنظمة التشغيل الصناعية
يتم تعريف هذه الفئة أيضًا باسم أنظمة التشغيل الفورية (Real-Time Operating Systems – RTOS)، وهي مصممة للاستخدام في الأنظمة الصناعية والتحكم الآلي، وتستخدم هذه الأنظمة في الأجهزة مثل:
- المتحكمات القابلة للبرمجة (PLC – Programmable Logic Controllers).
- أنظمة التحكم الذكية في المصانع والمعدات الثقيلة.
غالبًا ما تكون هذه الأنظمة مغلقة المصدر، ويتم تطويرها من قبل الشركات المصنعة للأجهزة لضمان التكامل المثالي مع العتاد المستخدم.
تصنيف أنظمة تشغيل الكمبيوتر حسب عدد المعالجات
1. أنظمة التشغيل أحادية المعالج
في هذا النوع، يعمل نظام التشغيل على معالج واحد فقط، ويتحكم في جميع العمليات التي تتم على الحاسوب. معظم أنظمة التشغيل الحالية مثل ويندوز وmacOS ولينكس تدعم هذه البنية.
2. أنظمة التشغيل متعددة المعالجات أو الموزعة
في هذا النموذج، يتم تثبيت نظام التشغيل على عدة معالجات تعمل معًا في أجهزة متعددة، وغالبًا ما تستخدم في الشبكات الكبيرة ومراكز البيانات. في هذه الحالة، يتم توزيع المهام على عدة معالجات، بينما يتولى جهاز مركزي إدارة النتائج.
يستخدم هذا النوع في الحوسبة السحابية والخوادم الفائقة، حيث تعتمد الأنظمة مثل Linux Cluster وWindows Server على هذا المبدأ لضمان الأداء العالي.
مهام نظام التشغيل
بحسب نوع التطبيق والعتاد المستخدم، قد يكون نظام التشغيل مسؤولاً عن مهام مختلفة، بما في ذلك إدارة الذاكرة، وإدارة الملفات، ومعالجة المعلومات، وإدارة النظام، وأجهزة الإدخال والإخراج، وأمن العتاد، وغيرها؛ ولكن عادةً ما يكون نظام التشغيل مسؤولاً عن المهام التالية:
- إدارة العمليات: تشير إدارة العمليات في الواقع إلى إنشاء العمليات وتنفيذها وحذفها في العتاد. كما يراعى في نظام التشغيل آليات المزامنة والتواصل بين العمليات.
- إدارة الذاكرة: وحدة إدارة الذاكرة، التي يتحكم بها نظام التشغيل، مسؤولة عن تخصيص وإلغاء تخصيص مساحة الذاكرة للبرامج التي تحتاج إلى موارد الذاكرة هذه.
- إدارة الملفات: جميع الإجراءات المتعلقة بالملفات، مثل تخزين وتنظيم واسترجاع وتسمية ومشاركة وحماية محتويات الملفات في العتاد، تقع على عاتق نظام التشغيل.
- إدارة الأجهزة: يتم تعريفها على أنها وحدة إدارة الأجهزة في الواقع بوحدة تحكم الإدخال والإخراج، وهي التي تدير الاتصال بين الجهاز المعني والأجهزة الأخرى.
إدارة نظام الإدخال والإخراج: من الأهداف الرئيسية لنظام التشغيل إدارة أنظمة الإدخال والإخراج للأجهزة، والتي يجب تنفيذها وتنسيقها بمساعدة نظام التشغيل. - إدارة التخزين الثانوي: في أنظمة الحاسوب، توجد عدة مستويات للتخزين، بما في ذلك المستوى الأساسي، والمستوى الثانوي، وتخزين ذاكرة التخزين المؤقت. يجب تخزين التعليمات والبيانات في التخزين الأساسي أو ذاكرة التخزين المؤقت، ويجب تخزين الملفات الرئيسية في المستوى الثانوي. إحدى مهام نظام التشغيل هي إدارة مستوى التخزين الثانوي للملفات الدائمة.
- الأمان: تحمي وحدة الأمان في نظام التشغيل بيانات ومعلومات نظام الحاسوب من الوصول غير المصرح به والهجمات الإلكترونية.
- تفسير الأوامر: تتولى هذه الوحدة في نظام التشغيل مسؤولية تفسير الأوامر التي يرسلها النظام ومعالجتها.
- الشبكات: هذه المهمة مفيدة بشكل خاص في الهياكل متعددة المعالجات والموزعة. تتكون الشبكة من عدة أنظمة ذات معالجات وذاكرات وأجهزة مختلفة متصلة ببعضها البعض عبر شبكة. في هذه البنية، يكون نظام التشغيل مسؤولاً عن توصيل هذه الأنظمة عبر شبكة. إدارة الاتصالات: نظام التشغيل مسؤولاً عن تنسيق وتحديد المُجمِّعين والمُفسِّرين وموارد برامج المستخدم الأخرى في أنظمة الكمبيوتر.
ما هي مكونات نظام التشغيل؟
تهدف جميع مكونات نظام التشغيل إلى ضمان عمل مختلف أقسام الحاسوب بتناغم. للوصول إلى أي جهاز حاسوب، يجب أن تمر جميع برامج المستخدم عبر نظام التشغيل؛ سواءً أكانت بسيطة كالفأرة أو لوحة المفاتيح أو معقدة كمكون إنترنت، فإن نظام التشغيل هو من يديرها.
ما هي نواة نظام التشغيل؟
توفر نواة نظام التشغيل (Operating System Kernel) أبسط مستوى من التحكم في جميع الأجهزة من خلال البرامج الثابتة (Firmware) وبرامج تشغيل الأجهزة. تتحكم نواة نظام التشغيل في الوصول إلى ذاكرة الوصول العشوائي (RAM) للتطبيقات، كما تتحكم في البرامج التي يمكنها استخدام موارد أجهزة محددة.
تضبط نواة نظام التشغيل حالات تشغيل نظام التشغيل لضمان الأداء الأمثل في جميع الأوقات؛ كما أنها مسؤولة عن ترتيب البيانات في الذاكرة غير المتطايرة باستخدام أنظمة الملفات على وسائط مثل الأقراص، والأشرطة، ومحركات الأقراص المحمولة، وغيرها.
كيف تعمل البرامج في أنظمة التشغيل؟
يعمل نظام التشغيل كواجهة بين برنامج تطبيقي وعتاد الحاسوب، مما يسمح لبرنامج التطبيق بالتواصل مع العتاد مع الالتزام بالقواعد والتعليمات المُرمّزة فيه. علاوة على ذلك، يُعدّ نظام التشغيل مجموعة من الخدمات التي تُسهّل إنشاء برامج التطبيق وتنفيذها. عادةً ما تُنشئ نواة نظام التشغيل عمليةً لتخصيص مساحة الذاكرة والموارد الأخرى عند تنفيذ برنامج التطبيق.
تشمل الجوانب الأخرى لتنفيذ برامج التطبيق تحديد أولوية لعملية في أنظمة تعدد المهام، وبدء تنفيذ برنامج التطبيق، متبوعًا بالتفاعل مع المستخدم والعتاد. ومع ذلك، في بعض الأنظمة، قد يطلب التطبيق من نظام التشغيل تشغيل برنامج آخر ضمن العملية نفسها، إما كروتين فرعي أو على مسار منفصل.
ما هي المقاطعة في نظام التشغيل؟
توفّر المقاطعة (Interrupt) طريقة فعّالة لأنظمة التشغيل للتفاعل مع البيئة المحيطة. عندما تحدث مقاطعة، تقوم وحدة المعالجة المركزية (CPU) بتغيير مسار التحكم من البرنامج الحالي قيد التنفيذ إلى روتين المقاطعة (Interrupt Handler)، والذي يكون أيضًا باسم روتين خدمة المقاطعة (Interrupt Service Routine | ISR).
قد تؤدي خدمة المقاطعة إلى حدوث تبديل السياق (Context Switch) داخل وحدة المعالجة المركزية. تختلف آلية معالجة المقاطعات حسب بنية الحاسوب، كما أن سلوك روتينات خدمة المقاطعة يختلف بين أنظمة التشغيل. ومع ذلك، هناك وظائف أساسية مشتركة بين جميع الأنظمة، حيث يجب أن:
- تنقل التحكم إلى روتين المقاطعة لمعالجة الحدث الطارئ.
- تحفظ حالة العملية الحالية قبل التعامل مع المقاطعة.
- تستعيد الحالة السابقة بعد تنفيذ خدمة المقاطعة لاستكمال العمليات دون فقدان البيانات.
ما هي المقاطعة البرمجية (Software Interrupt) في نظام التشغيل؟
المقاطعة البرمجية هي إشارة ترسل إلى عملية قيد التشغيل لإعلامها بحدوث حدث معين، مما يؤدي إلى إيقاف العملية مؤقتًا وتنفيذ تبديل السياق من قبل نواة النظام.
عند حدوث مقاطعة برمجية، يقوم نواة نظام التشغيل بتنفيذ إجراءات معينة، مثل تخصيص موارد جديدة، التعامل مع أخطاء البرمجيات، أو تنفيذ أوامر النظام الحرجة. على سبيل المثال، إذا كانت هناك بيانات ضخمة تعالج داخل خوارزمية، يمكن تعيين مؤقت زمني (Timer) ليتم تشغيله تلقائيًا بعد مدة زمنية معينة، مما يؤدي إلى مقاطعة العملية إذا استغرقت وقتًا طويلاً.
استخدامات المقاطعات البرمجية
يتم استخدام المقاطعات البرمجية عادةً في الحالات التالية:
- الكشف عن الأخطاء البرمجية: مثل:
- القسمة على الصفر (Division by Zero)، والتي تؤدي إلى استثناء (Exception) يُوقف التنفيذ.
- الوصول إلى عنوان غير صالح في الذاكرة (Invalid Memory Address Access)، مما يؤدي إلى خطأ في الذاكرة.
- إدارة العمليات (Process Management): يمكن للمستخدمين إرسال إشارات إلى النظام لإيقاف أو تعديل تنفيذ عملية معينة. على سبيل المثال، في واجهة سطر الأوامر، يؤدي الضغط على Ctrl + C إلى إرسال مقاطعة برمجية تجبر العملية الحالية على الإنهاء.
- إدارة المهام متعددة العمليات: المقاطعات البرمجية تساعد في تبديل السياق بين العمليات المختلفة في نظام التشغيل، مما يتيح تنفيذ عدة عمليات بشكل متزامن.
كيفية إنشاء المقاطعات البرمجية في المعالجات من نوع x86 (32-bit)
يمكن إنشاء المقاطعات البرمجية في معالجات 32 بت (x86) باستخدام تعليمة INT في لغة التجميع (Assembly). الصيغة العامة لهذه التعليمة هي:
INT X
حيث:
- X هو رقم يشير إلى عنوان المعالج لمعالجة المقاطعة (Interrupt Vector Table)، ويكتب بصيغة عدد ست عشري (Hexadecimal).
- هذه القيمة تُستخدم لتحديد الروتين الخاص بالمقاطعة الذي سيتم استدعاؤه من قبل النظام.
مثال على استخدام INT في لغة التجميع
MOV AH, 09H MOV DX, OFFSET message INT 21H
في هذا المثال، يتم استخدام المقاطعة INT 21H لاستدعاء خدمة طباعة نص على الشاشة في نظام DOS.
ما هو مفهوم الإشارة (Signal) في نظام التشغيل؟
الإشارة (Signal) في نظام التشغيل، خاصة في الأنظمة المشابهة لـ يونكس (Unix-like systems)، هي آلية اتصال غير متزامن (Asynchronous Communication) وتستخدم لإرسال إشعارات إلى العمليات لتنبيهها بحدوث أحداث معينة، مما يؤدي إلى تنفيذ استجابة فورية مثل التوقف، الإنهاء، أو التعامل مع الحدث بطريقة محددة.
كيفية إرسال الإشارات في أنظمة التشغيل الشبيهة بيونكس
يمكن إرسال إشارات بين العمليات باستخدام الاستدعاء النظامي التالي:
kill(pid, signum)
حيث:
- pid هو معرف العملية (Process ID) المستهدفة.
- signum هو رقم الإشارة (Signal Number) التي سيتم إرسالها.
في الإصدارات الأولية من يونكس، كان أمر kill يتم استخدامه فقط لإنهاء العمليات، وهو السبب وراء اسمه، ولكن لاحقًا أصبح بإمكانه إرسال إشارات متنوعة للعمليات دون إنهائها بالضرورة.
دور الإشارات في معالجة الأحداث غير المتزامنة
في الأنظمة الشبيهة بيونكس، وتستخدم الإشارات لتنبيه العمليات حول وقوع أحداث غير متزامنة. تتطلب هذه العملية استخدام المقاطعات البرمجية (Software Interrupts) لتنفيذ الاتصال بين العمليات.
إحدى الحالات الشائعة التي تحتاج إلى الاتصال غير المتزامن هي مشكلة القارئ/الكاتب (Reader/Writer Problem)، حيث يتم تبادل البيانات بين العمليات باستخدام الأنابيب (Pipes).
على سبيل المثال، في سطر الأوامر:
alpha | bravo
- تقوم العملية alpha بكتابة بياناتها إلى الأنبوب (Pipe) عند انتهاء الحسابات المطلوبة، ثم تدخل في حالة الانتظار (Sleep).
- يتم تنبيه العملية bravo بواسطة نواة النظام، مما ينقلها إلى حالة الجاهزية (Ready State)، بحيث تبدأ في قراءة البيانات من تدفق الإدخال (Input Stream).
- يتم تنسيق عمليات الأنابيب (Piping) من خلال الإشارات البرمجية التي تنشئها نواة النظام.
تصنيفات الإشارات في نظام التشغيل
يمكن تصنيف الإشارات البرمجية إلى سبع فئات رئيسية وفقًا للظروف التي تؤدي إلى إصدارها:
- عند اكتمال تنفيذ العملية بشكل طبيعي.
- عند حدوث استثناء خطأ أثناء التنفيذ.
- عند استهلاك جميع الموارد المخصصة للعملية.
- عند محاولة تنفيذ تعليمة غير قانونية.
- عند ضبط حدث تحذيري من قبل العملية.
- عند إيقاف عملية بواسطة المستخدم عبر لوحة المفاتيح (مثل الضغط على Ctrl + C).
- عند استخدام إشارات التتبع (Tracing) لأغراض تصحيح الأخطاء (Debugging).
ما هي المقاطعة (الوقفه) الصلبة في نظام التشغيل؟
تعد المقاطعات الصلبة (Hardware Interrupts) آلية أساسية في أنظمة التشغيل الحديثة وتستخدم لمعالجة الفجوة بين سرعة المعالج المركزي (CPU) والأجهزة الطرفية (أجهزة الإدخال/الإخراج – I/O Devices) التي تعمل بسرعات أبطأ.
لو كان المعالج بحاجة إلى الانتظار حتى انتهاء عمليات الإدخال/الإخراج (I/O)، فإن سرعة الحوسبة ستنخفض بشكل كبير. لتجنب هذا التأخير، يعتمد نظام التشغيل على المقاطعات (Interrupts) لتنبيه المعالج عند اكتمال عملية الإدخال/الإخراج، مما يلغي الحاجة إلى الاستطلاع المستمر (Polling) أو الانتظار النشط (Busy Waiting).
دور المقاطعة الصلبة في تحسين الأداء
بعض أجهزة الحاسوب تتطلب مقاطعة لكل حرف أو كلمة يتم معالجتها، مما يؤدي إلى استهلاك كبير لوحدة المعالجة المركزية. ولحل هذه المشكلة، تم تطوير تقنية الوصول المباشر إلى الذاكرة (DMA – Direct Memory Access)، وهي بنية معمارية تتيح للأجهزة الطرفية نقل البيانات مباشرة إلى الذاكرة الرئيسية دون الحاجة إلى تدخل المعالج المركزي.
بفضل تقنية DMA، يمكن نقل البيانات بين الجهاز والذاكرة عبر الناقل (Bus) مباشرةً، مما يقلل الحمل على وحدة المعالجة المركزية ويحسن كفاءة النظام بشكل ملحوظ.
ما هو الإدخال/الإخراج القائم على المقاطعة؟
عند قيام المستخدم بالضغط على مفتاح في لوحة المفاتيح، يظهر الحرف المقابل فورًا على الشاشة. وبالمثل، عند تحريك الماوس، يتحرك المؤشر مباشرة على شاشة العرض.
كل من الضغط على المفاتيح أو تحريك الماوس يؤدي إلى توليد مقاطعة تُعرف باسم مقاطعة الإدخال/الإخراج (I/O Interrupt)، حيث يتم إخطار المعالج المركزي (CPU) لتنفيذ الإجراء المطلوب دون الحاجة إلى الانتظار المستمر أو الاستطلاع اليدوي للأجهزة الطرفية.
كيف تعمل مقاطعة الإدخال/الإخراج؟
عند حدوث عملية إدخال/إخراج، يتم إصدار مقاطعة خاصة بالأجهزة الطرفية، مما يؤدي إلى:
- إيقاف تنفيذ العملية الحالية للمعالج وحفظ حالتها.
- التحويل إلى روتين خدمة المقاطعة (ISR – Interrupt Service Routine) للتعامل مع طلب الإدخال/الإخراج.
- معالجة البيانات المطلوبة (مثل قراءة الحرف المدخل من لوحة المفاتيح أو تحديث موضع المؤشر على الشاشة).
- استئناف تنفيذ البرنامج بعد إنهاء عملية الإدخال/الإخراج.
تعمل هذه الآلية على تحسين أداء النظام وكفاءة استخدام وحدة المعالجة المركزية، مما يجعل استجابة النظام أسرع وأكثر سلاسة.
ما هو الوصول المباشر للذاكرة (DMA) في أنظمة التشغيل؟
الوصول المباشر للذاكرة (Direct Memory Access – DMA) هو تقنية تستعمل في أنظمة التشغيل للسماح للأجهزة الطرفية بنقل البيانات مباشرة إلى الذاكرة الرئيسية دون الحاجة إلى تدخل وحدة المعالجة المركزية (CPU)، مما يحسن الأداء ويقلل من الحمل على المعالج.
آلية عمل DMA في أنظمة التشغيل:
الخطوة | الوصف |
---|---|
1. حدوث مقاطعة الإدخال/الإخراج البلوكية (Block I/O Interrupt) |
|
2. تنفيذ استدعاء النظام الخاص بعملية الإدخال/الإخراج البلوكية |
|
3. معالجة المقاطعة عند انتهاء عملية الكتابة |
|
4. استئناف التنفيذ بعد انتهاء زمن المعالجة المخصص للعملية (Time Slice Expiry) |
|
شريحة DMA في الأجهزة
بصرف النظر عن نوع البنية المعمارية للحاسوب، فإن تنفيذ الوصول المباشر للذاكرة يتطلب عادةً تثبيت شريحة DMA مخصصة على الجهاز. هذه الشريحة تتحكم في عمليات الإدخال/الإخراج دون الحاجة إلى تدخل مباشر من المعالج، مما يقلل من زمن التأخير ويحسن كفاءة النظام.
في بعض الأنظمة المتقدمة، يتم تنظيم عمليات DMA وفقًا لمعيار SCSI RDMA، مما يسمح بزيادة سرعة نقل البيانات وتقليل زمن استجابة الأجهزة الطرفية.
أنماط تشغيل أنظمة التشغيل
تدعم الحواسيب الحديثة عدة أنماط تشغيل (Modes) مختلفة، والتي تقوم بتوفير مستويات مختلفة من الأمان والتحكم في الموارد. عادةً، توفر المعالجات التي تدعم هذه الميزة وضعين أساسيين على الأقل:
- وضع المستخدم (User Mode): هذا لتشغيل البرامج العادية، ويحد من وصول التطبيقات إلى موارد النظام.
- وضع المشرف (Supervisor Mode) أو وضع النواة (Kernel Mode): يتيح الوصول الكامل وغير المقيد إلى جميع موارد الجهاز، بما في ذلك تعليمات وحدة المعالجة المركزية والذاكرة وأجهزة الإدخال/الإخراج.
الفروق بين وضع المستخدم ووضع المشرف
المعيار | وضع المستخدم (User Mode) | وضع المشرف (Kernel Mode) |
---|---|---|
إمكانية الوصول للموارد | محدود، لا يمكنه الوصول المباشر للأجهزة أو الذاكرة | غير محدود، يمكنه الوصول الكامل للأجهزة والذاكرة |
تنفيذ التعليمات | يمكن تنفيذ مجموعة محدودة من تعليمات المعالج | يمكن تنفيذ جميع تعليمات المعالج |
إدارة الأخطاء | عند محاولة تنفيذ تعليمات غير مصرح بها، تحدث مقاطعة إلى نظام التشغيل | لديه صلاحية التعامل مع الأخطاء مباشرة |
استخدام البرامج | التطبيقات العادية مثل معالجات النصوص والمتصفحات | نظام التشغيل ووظائفه الأساسية مثل إدارة الذاكرة والملفات |
أنماط تشغيل إضافية في بعض المعالجات
إلى جانب وضع المشرف ووضع المستخدم، قد تدعم بعض المعالجات الحديثة أوضاعًا أخرى، مثل:
- الوضع الافتراضي (Virtual Mode): يُستخدم لمحاكاة تشغيل معالجات أقدم داخل معالجات أحدث، مثل تشغيل برامج 16 بت على أنظمة 32 بت أو تشغيل برامج 32 بت على أنظمة 64 بت.
- أوضاع تشغيل أخرى: قد تتضمن بعض المعالجات أوضاعًا مخصصة للأمان أو لأنظمة التشغيل الافتراضية.
كيفية التبديل بين الوضعين؟
- عند تشغيل الجهاز أو إعادة تشغيله: يبدأ التنفيذ في وضع المشرف حتى يتم تحميل نظام التشغيل.
- بعد تحميل النواة (Kernel): يقوم النظام بتحديد الحدود بين وضع المشرف ووضع المستخدم، حيث يتم تنفيذ المهام التي تحتاج إلى تحكم منخفض المستوى مثل إدارة الذاكرة والتواصل مع الأجهزة في وضع المشرف، بينما يتم تشغيل التطبيقات العادية في وضع المستخدم.
- عند الحاجة إلى الوصول إلى موارد النظام من وضع المستخدم:
- لا يمكن للبرامج العادية الوصول مباشرة إلى موارد الجهاز مثل الذاكرة أو وحدات التخزين.
- يجب على التطبيقات استخدام استدعاءات النظام (System Calls) التي تنقل التحكم إلى نواة النظام (Kernel).
- يتم ذلك عادةً عبر مقاطعة برمجية (Software Interrupt)، والتي تجبر المعالج على التحول إلى وضع المشرف وتنفيذ الأوامر المطلوبة من قبل النواة.
إدارة الوصول إلى الموارد
- في وضع المستخدم، لا يمكن للتطبيقات العادية تنفيذ تعليمات قد تُعرِّض استقرار النظام للخطر.
- في وضع المشرف، يمكن لنواة النظام تنفيذ جميع التعليمات دون قيود.
- بعض المعالجات تحتوي على مسجلات حالة خاصة بوضع المستخدم (User Mode Registers)، والتي تخزن معلومات لا يمكن للتطبيقات العادية تعديلها.
- إذا حاول أحد البرامج تغيير هذه المسجلات بطريقة غير مسموح بها، فإن نظام التشغيل سيتعامل مع الخطأ، إما بتنبيه المستخدم أو بإيقاف التطبيق لمنع تأثيره على استقرار النظام.
إدارة الذاكرة في نظام التشغيل
على سبيل المثال، يجب على نواة متعددة البرمجة إدارة كامل ذاكرة النظام التي تستخدمها البرامج حاليًا. هذا يضمن عدم تداخل أي برنامج مع الذاكرة التي يستخدمها تطبيق آخر. ولأن البرامج تتشارك الوقت، يجب أن يكون لها وصول منفصل إلى الذاكرة.
اعتمدت العديد من أنظمة التشغيل القديمة على إدارة الذاكرة التعاونية، والتي افترضت أن جميع التطبيقات تستخدم مدير ذاكرة النواة بحرية دون تجاوز المساحة المخصصة لها. أصبحت آلية إدارة الذاكرة هذه قديمة تقريبًا، حيث غالبًا ما تعاني التطبيقات من عيوب تسمح لها بتجاوز المساحة المخصصة لها. في حالة تعطل برنامج، قد تتأثر الذاكرة التي يستخدمها برنامج آخر، وقد تقوم بإستبدال البيانات القديمة ببيانات جديدة.
قد تعدل التطبيقات الضارة أو الفيروسات ذاكرة برنامج آخر عمدًا أو تقوم بتعطيل نظام التشغيل. في تقنية إدارة الذاكرة المشتركة، يكفي وجود برنامج واحد مُصاب لتعطل النظام. تختلف إدارة الذاكرة في أنظمة التشغيل مثل ويندوز عنها في البرمجة، حيث يُعالج كل منهما أخطاء الذاكرة المحتملة بشكل فردي.
حماية الذاكرة (Memory Protection) تجبر النواة على تقييد وصول العملية إلى ذاكرة الحاسوب. يمكن حماية الذاكرة بطرق متعددة، منها “تجزئة الذاكرة (Memory Segmentation)” و”الترحيل paging“. تتطلب جميع هذه الطرق دعمًا ماديًا (مثل 80286 MMU)، وهو دعم غير متوفر في جميع الأنظمة.
تعلم بعض سجلات الحالة المحمية في التجزئة والترحيل وحدة المعالجة المركزية (CPU) بعناوين الذاكرة التي يمكن للتطبيق قيد التشغيل الوصول إليها. ستؤدي محاولة الوصول إلى عناوين إضافية إلى انقطاع، مما يتطلب من وحدة المعالجة المركزية إعادة الدخول إلى وضع المشرف وتفويض المسؤولية إلى النواة.
يعرف هذا باسم “انتهاك التجزئة”، أو اختصارًا “Seg_V“. نظرًا لصعوبة تحديد نتيجة ذات معنى لمثل هذا الإجراء، وكونه مؤشرًا على وجود تطبيق يعمل بشكل سيء، غالبًا ما تقوم بإيقاف نواة نظام التشغيل البرنامج المخالف مؤقتًا وتُنهيه وتُبلغ عن الخطأ.
ما هي الذاكرة الافتراضية في نظام التشغيل؟
يسمح استخدام عنونة الذاكرة الافتراضية (مثل الترحيل أو التجزئة) لنواة نظام التشغيل بتنظيم نوع الذاكرة التي يستخدمها كل برنامج في أي وقت. هذا يُمكّن نظام التشغيل من استخدام نفس عناوين الذاكرة لعدة عمليات.
إذا حاول برنامج الوصول إلى ذاكرة ليست ضمن نطاق الذاكرة المخصصة له ولكنها مخصصة له، فسوف يقوم بإنشاء نواة نظام التشغيل مقاطعة بنفس الطريقة التي تنشئها إذا كان البرنامج على وشك تجاوز الذاكرة المخصصة له (لمزيد من المعلومات، راجع قسم إدارة الذاكرة في هذه المقالة). في أنظمة يونكس، يعرف هذا النوع من المقاطعة بمقاطعة خطأ الصفحة.
عندما تكتشف نواة نظام التشغيل خطأ صفحة، فإنها غالبًا ما تقوم بتعديل نطاق الذاكرة الافتراضية للتطبيق الذي تسبب في الخطأ، مما يسمح بالوصول إلى الذاكرة المطلوبة. تمنح هذه التقنية نواة نظام التشغيل السلطة والتقدير لتحديد مكان حفظ ذاكرة برنامج معين، أو حتى ما إذا كانت أي ذاكرة قد خُصصت له.
ما هو تبديل الذاكرة Swapping في نظام التشغيل؟
في أنظمة التشغيل الحالية، يمكن حفظ الذاكرة الأقل استخدامًا مؤقتًا على القرص أو في مواقع أخرى، مما يُوفر مساحة لعمليات أخرى. تُتيح هذه العملية، المعروفة باسم “التبديل Swapping”، للعديد من التطبيقات استخدام نفس مساحة الذاكرة واستبدال محتوياتها أو تبادلها عند الطلب.
تُعطي الذاكرة الافتراضية للمبرمج فكرةً مفادها أن لديه مساحة ذاكرة وصول عشوائي (RAM) أكبر بكثير مما لديه فعليًا.
ما هو تعدد المهام في نظام التشغيل؟
تعدد المهام هو عملية تشغيل تطبيقات حاسوبية متعددة منفصلة على نفس الجهاز. ولأن معظم الحواسيب لا تستطيع سوى تنفيذ مهمة واحدة في كل مرة، فإن تعدد المهام يتم عادةً من خلال تقاسم الوقت، أي أن كل تطبيق يمنح جزءًا من وقت الحاسوب للعمل.
تتضمن نواة نظام التشغيل مُجدولًا يُحدد مدة كل عملية وتسلسل تسليم التحكم في التنفيذ إلى البرامج. تمنح نواة نظام التشغيل التحكم في العملية، مما يسمح للبرنامج بالوصول إلى وحدة المعالجة المركزية والذاكرة. ثم يُسترد التحكم من خلال آلية مُحددة، مما يسمح لتطبيق آخر باستخدام وحدة المعالجة المركزية (CPU).
وسّعت أنظمة التشغيل الحديثة مفهوم “الاستباق” ليشمل برامج تشغيل الأجهزة وشفرة النواة، مما يمنح نظام التشغيل تحكمًا استباقيًا في جداول التنفيذ الداخلية.
تتمثل فكرة تعدد المهام الاستباقي في ضمان حصول جميع التطبيقات على وقت وحدة المعالجة المركزية في نفس الوقت. هذا يعني أنه يجب تحديد مدة استخدام جميع التطبيقات لوحدة المعالجة المركزية دون انقطاع. ولتحقيق ذلك، تستخدم أنوية أنظمة التشغيل الحالية مقاطعات مجدولة. تُعيّن نواة نظام التشغيل مؤقتًا للوضع المحمي يُعيد النظام إلى وضع الإشراف بعد فترة زمنية محددة.
تتمثل فلسفة تعدد المهام الاستباقي في ضمان حصول جميع البرامج على وقت استخدام وحدة المعالجة المركزية في الوقت نفسه. هذا يعني أنه يجب تحديد مدة استخدام جميع البرامج للمعالج دون انقطاع. ولتحقيق ذلك، تستخدم أنوية أنظمة التشغيل الحديثة مقاطعات مجدولة. في هذه الطريقة، تُعيّن نواة نظام التشغيل مؤقتًا للوضع المحمي يُعيد النظام إلى وضع الإشراف بعد فترة زمنية محددة.
بما أن أجهزة الكمبيوتر المنزلية عادةً ما تُشغّل عددًا قليلًا من التطبيقات المُجرّبة، فإنّ تعدد المهام التعاوني كافٍ للعديد من أنظمة التشغيل ذات التطبيق الواحد. الاستثناء هو نظام AmigaOS، الذي كان يتضمن تعدد المهام الاستباقي في نسخته الأولى. طُبّق تعدد المهام الاستباقي في البداية مع نظام Windows NT، ولكن لم يكن بإمكان عامة الناس استخدام هذه الميزة إلا مع نظام Windows XP.
الوصول إلى القرص ونظام الملفات في أنظمة التشغيل
يعتبر الوصول إلى البيانات المخزنة على الأقراص من الوظائف الأساسية لأي نظام تشغيل. حيث تقوم أجهزة الكمبيوتر بتخزين البيانات باستخدام الملفات، والتي يتم تنظيمها بطرق مختلفة لضمان سرعة الوصول، وتحسين القراءة، والاستفادة المثلى من مساحة التخزين المتاحة.
ما هو نظام الملفات؟
نظام الملفات (File System) هو الطريقة التي تُنظّم بها الملفات على القرص، مما يسمح بإعطائها أسماء وخصائص محددة. كما يتيح تنظيم الملفات داخل مجلدات (أو أدلة) مرتبة في هيكل هرمي يشبه شجرة الدلائل.
تطور أنظمة الملفات
في أنظمة التشغيل القديمة، كان يتم دعم نوع واحد فقط من محركات الأقراص ونظام ملفات واحد. كانت هذه الأنظمة تعاني من قيود في السعة والسرعة وأطوال أسماء الملفات وبنية الأدلة، مما حدّ من قدرة أنظمة التشغيل على دعم أكثر من نوعين من أنظمة الملفات.
أما أنظمة التشغيل الحديثة، مثل Unix وLinux، فتستخدم تقنية نظام الملفات الافتراضي (VFS – Virtual File System)، والتي تسمح لها بدعم أنواع مختلفة من أنظمة الملفات على أجهزة تخزين متعددة، بغض النظر عن بنيتها الداخلية. يوفر VFS واجهة برمجية مشتركة (API) للتعامل مع الملفات دون الحاجة إلى معرفة التفاصيل التقنية لكل نظام ملفات أو جهاز تخزين.
كيف يتم الوصول إلى أجهزة التخزين؟
يتم الوصول إلى أجهزة التخزين، مثل محركات الأقراص الصلبة، عبر برامج تشغيل الأجهزة (Device Drivers)، والتي تعمل كوسيط بين نظام التشغيل والأجهزة الفعلية. تقوم برامج التشغيل بترجمة أوامر نظام التشغيل إلى لغة يفهمها الجهاز، مما يسمح لنظام التشغيل بالتعامل مع جميع أنواع وحدات التخزين بطريقة موحدة.
في أنظمة مثل Unix، يتم التعامل مع محركات الأقراص كأجهزة كتلية (Block Devices)، مما يتيح الوصول إلى بياناتها ككُتل متسلسلة بدلاً من التعامل معها كملفات فردية. بمجرد أن يكون لدى نظام التشغيل برنامج تشغيل مناسب، يمكنه الوصول إلى محتويات القرص كبيانات خام، والتي قد تحتوي على نظام ملفات واحد أو أكثر.
وظائف نظام الملفات
يوفر نظام الملفات للمستخدمين والبرامج إمكانية:
- إنشاء الملفات وحذفها.
- فتح الملفات وإغلاقها.
- تعديل الملفات وقراءة محتواها.
- تخزين المعلومات الوصفية (Metadata) مثل الأذونات، والحجم، والمساحة المتاحة، وتواريخ الإنشاء والتعديل.
التحديات في دعم أنظمة الملفات المختلفة
تختلف أنظمة الملفات من حيث:
- الحد الأقصى لطول أسماء الملفات.
- حساسية الحروف الكبيرة والصغيرة (مثل التمييز بين “File.txt” و”file.txt”).
- تنسيق وتخزين بيانات الملفات والسمات الخاصة بها.
يؤدي هذا التنوع إلى صعوبة دعم جميع أنظمة الملفات ضمن نظام تشغيل واحد، مما يدفع بعض أنظمة التشغيل إلى الاعتماد على أنظمة ملفات خاصة بها. على سبيل المثال، Windows يعتمد على نظام NTFS باعتباره النظام الأساسي لتخزين الملفات.
برامج تشغيل الأجهزة في أنظمة التشغيل
برنامج تشغيل الجهاز هو نوع من برامج الحاسوب المصممة للتفاعل مع الأجهزة. غالبًا ما يتضمن واجهة للتفاعل مع الجهاز عبر ناقل أو نظام فرعي محدد في الحاسوب الذي يرتبط به الجهاز، وتتوفر تعليمات لاستقبال البيانات من الجهاز أو إرسالها إليه.
شبكات الحاسوب في أنظمة التشغيل
تتعامل معظم أنظمة التشغيل اليوم مع مجموعة واسعة من بروتوكولات الشبكة، بالإضافة إلى الأجهزة والتطبيقات التي تُمكّنها. هذا يعني أن أجهزة الكمبيوتر ذات أنظمة التشغيل المختلفة يمكنها الانضمام إلى شبكة مماثلة لمشاركة الموارد، بما في ذلك الحوسبة والملفات والطابعات والماسحات الضوئية عبر اتصالات سلكية أو لاسلكية.
تتيح شبكات الحاسوب بفعالية لنظام تشغيل الحاسوب الوصول إلى موارد حاسوب بعيد لتنفيذ المهام نفسها كما لو كانت تلك الموارد متاحة.
يشمل ذلك أي شيء من الاتصالات البسيطة إلى استخدام أنظمة الملفات الشبكية، وحتى مشاركة معدات الرسومات أو الصوت. توفر بعض خدمات الشبكة وصولاً شفافًا إلى موارد الحاسوب. على سبيل المثال، يتيح بروتوكول SSH مستخدمي الشبكة من الوصول الفوري إلى واجهة سطر أوامر الحاسوب.
الأمان في أنظمة التشغيل
يعتمد أمان أي نظام تشغيل على تنسيق وتكامل مجموعة من التقنيات لضمان حماية البيانات والموارد من الوصول غير المصرح به. يوفّر النظام الحديث إمكانية الوصول إلى موارد متعددة مثل الأجهزة المتصلة (كالشبكات) والبرامج العاملة على الحاسوب، ويتم التحكم بهذه العمليات من خلال نواة النظام (Kernel).
يجب أن يكون نظام التشغيل قادرًا على التمييز بين الطلبات المصرح بها وغير المصرح بها عند معالجة البيانات، مما يمنع تنفيذ التعليمات التي قد تُعرّض النظام للخطر.
ما هو واجهة المستخدم في نظام التشغيل؟
كل جهاز كمبيوتر يحتاج إلى واجهة مستخدم (User Interface) تتيح للمستخدم التفاعل مع النظام. يُطلق على واجهة المستخدم في أنظمة التشغيل غالبًا اسم “القشرة” (Shell)، والتي تُستخدم لتوفير بيئة للتفاعل بين المستخدم والنظام.
يعتبر وجود واجهة المستخدم أمرًا ضروريًا في الأنظمة التي تتطلب تفاعلًا بشريًا، حيث تمكّن المستخدم من:
- استعراض هيكلية الملفات والمجلدات داخل النظام.
- إدخال الأوامر وطلب الخدمات عبر أجهزة الإدخال مثل لوحة المفاتيح والفأرة.
- عرض النتائج والرسائل عبر أجهزة الإخراج مثل الشاشة أو الطابعة.
أنواع واجهات المستخدم
توجد نوعان رئيسيان من واجهات المستخدم:
- واجهة سطر الأوامر (Command Line Interface – CLI)
- يعتمد المستخدم على إدخال الأوامر نصيًا بشكل تسلسلي.
- يتطلب معرفة جيدة بالأوامر والوظائف الخاصة بالنظام.
- يستخدم بكثرة في الأنظمة المتقدمة مثل Linux وUnix.
- واجهة المستخدم الرسومية (Graphical User Interface – GUI)
- توفر بيئة مرئية تعتمد على الرموز والنوافذ والأزرار.
- تسهّل استخدام النظام دون الحاجة إلى كتابة أوامر معقدة.
- تستخدم في أنظمة التشغيل الحديثة مثل Windows وmacOS وLinux (إصدارات مثل Ubuntu).
لكل من هذه الواجهات مزاياها وعيوبها، لكن غالبية المستخدمين يفضلون الواجهة الرسومية GUI بسبب سهولة التعامل معها، بينما يفضل المحترفون في مجالات الشبكات والبرمجة واجهة CLI لمرونتها وسرعتها في تنفيذ الأوامر.
ما هو نظام التشغيل في الزمن الحقيقي (RTOS)؟
أنظمة التشغيل الفعلية (Real-Time Operating Systems – RTOS) هي أنظمة مصممة لتلبية متطلبات التطبيقات التي تتطلب استجابة فورية وموثوقة، حيث يكون التأخير غير مقبول. وتستخدم هذه الأنظمة في مجالات متعددة، بما في ذلك:
- الأنظمة المدمجة الصغيرة: مثل وحدات التحكم في المحركات في السيارات.
- الروبوتات الصناعية: التي تتطلب دقة عالية في التحكم.
- المركبات الفضائية: حيث تكون الدقة والموثوقية أمرًا حاسمًا.
- أنظمة التحكم الصناعي: التي تحتاج إلى استجابة فورية للتحكم في العمليات.
من الأمثلة الحديثة على أنظمة التشغيل الفعلية:
- VxWorks: يستخدم في تطبيقات متنوعة، بما في ذلك الفضاء والدفاع.
- QNX: يُستخدم في أنظمة السيارات والترفيه داخل المركبات.
- FreeRTOS: نظام مفتوح المصدر يستخدم في العديد من الأجهزة المدمجة.
تتميز هذه الأنظمة بقدرتها على:
- الاستجابة السريعة: تقديم استجابات في الوقت المناسب للمهام الحرجة.
- الموثوقية العالية: ضمان استقرار النظام حتى في الظروف الحرجة.
- إدارة الموارد بكفاءة: تخصيص الموارد بفعالية لتلبية متطلبات التطبيقات الفعلية.
مع تطور التكنولوجيا، تستمر أنظمة التشغيل الفعلية في التكيف مع المتطلبات المتزايدة للتطبيقات الحديثة، مما يجعلها عنصرًا أساسيًا في العديد من الصناعات.
لماذا نستخدم نظام التشغيل؟
لنظام التشغيل فوائد عديدة لتطوير البرمجيات. فبدون نظام تشغيل، سيحتاج كل برنامج إلى شيفرة برمجية إضافية للتحكم في مكونات الحاسوب والاتصال بها، مثل وحدات تخزين الأقراص، وواجهات الشبكة، وغيرها من المكونات. ونظرًا لاتساع نطاق المكونات المادية التي يتكون منها الحاسوب، فإن هذا من شأنه أن يقوم بتعقيد مهمة مطوري البرمجيات بشكل كبير. من ناحية أخرى، ستزداد كمية الشيفرة البرمجية بشكل كبير، مما يزيد من تعقيد التطوير.
بدلًا من ذلك، يمكن إسناد العديد من الأنشطة الاعتيادية، مثل إرسال حزمة بيانات شبكة أو عرض نص على جهاز إخراج قياسي، مثل الشاشة، إلى برنامج النظام، الذي يعمل كحلقة وصل بين التطبيقات والأجهزة. يسمح برنامج النظام للبرامج بالتفاعل مع الأجهزة بطريقة متسقة وقابلة للتكرار دون الحاجة إلى معرفة تفاصيل الأجهزة.
طالما أن كل تطبيق لديه إمكانية الوصول إلى نفس الموارد والخدمات، يمكن لبرنامج النظام (نظام التشغيل) دعم عدد كبير من التطبيقات. يُقلل هذا بشكل كبير من الوقت والبرمجة اللازمين لتصميم تطبيق وتصحيح أخطائه، بينما يضمن نظام التشغيل للمستخدمين إمكانية التحكم في مكونات الحاسوب وتكوينها وإدارتها عبر واجهة موحدة.
بعد تثبيت نظام التشغيل، يُمكنك الوصول إلى مكتبة كبيرة من برامج التشغيل البديلة التي يُمكن استخدامها لتخصيص خدمات نظام التشغيل بما يتناسب مع بيئة أجهزتك. وبالتالي، بينما يُمكن لكل برنامج إنشاء اتصال مشترك بجهاز تخزين، يستقبل نظام التشغيل هذا الاتصال ويستخدم برنامج التشغيل ذي الصلة لتحويله إلى إجراءات (تعليمات) مطلوبة من قِبل المكونات الأساسية للجهاز.
توفر أنظمة التشغيل الحالية إطار عمل متكاملاً لتحديد وتكوين وإدارة مجموعة واسعة من المكونات، بما في ذلك وحدات المعالجة المركزية. ومن الأمثلة على ذلك ذاكرة الوصول العشوائي (RAM) وإدارتها، ومجموعة الشرائح، ووحدات التخزين، واتصالات الشبكة، واتصالات المنافذ مثل VGA وHDMI وUSB، وواجهات أخرى مثل PCIe.
ما هي العوامل المؤثرة على اختيار أنظمة التشغيل؟
عند اختيار نظام التشغيل، من الضروري مراعاة عوامل مختلفة، بما في ذلك:
- التكلفة: بعض أنظمة التشغيل – مثل Linux – مجانية تمامًا، وبعضها – مثل Android وmacOS – مثبت مسبقًا على الجهاز، وبالنسبة للبعض الآخر (مثل Windows) يتعين عليك دفع رسوم معينة.
- التوافق: عند اختيار نظام التشغيل، يجب عليك التأكد من توافقه مع البرامج والأجهزة التي تريدها.
- سهولة الاستخدام: تم تصميم بعض أنظمة التشغيل – مثل macOS وiOS – لسهولة الاستخدام، بينما تتطلب أنظمة أخرى، مثل Linux، معرفة تقنية أكثر تعمقًا.
- الأمان: توفر الأنظمة البيئية الأكثر انغلاقًا مثل macOS وiOS الكثير من ميزات الأمان، ولكن أنظمة مثل Android وWindows بها المزيد من الثغرات الأمنية.
ما هي الخصائص الرئيسية لنظام التشغيل (Operating System)؟
فيما يلي، سنستعرض بعضًا من الخصائص الرئيسية لأنظمة التشغيل التي تحدثنا عنها سابقًا بتفصيل أكبر.
إدارة العمليات والموارد (Process Management)
الوظيفة: يتعامل نظام التشغيل مع البرامج التي تعمل على الكمبيوتر ويسيطر على العمليات. وبالتالي، فإن بدء العمليات وإيقافها أو تنفيذها بشكل متوازٍ يقع على عاتق نظام التشغيل.
كيفية العمل: يستخدم نظام التشغيل خوارزميات جدولة مختلفة (مثل Round Robin أو First-Come-First-Served) لتحديد العمليات التي يمكنها الوصول إلى المعالج. بالإضافة إلى ذلك، يمنع نظام التشغيل حالة الجمود (Deadlock) التي تحدث عندما تتنافس العمليات على موارد النظام وتقوم بحظر بعضها البعض.
إدارة الذاكرة (Memory Management)
الوظيفة: يمكن لنظام التشغيل تخصيص مساحة الذاكرة للعمليات أو سحبها منها. يتم التأكد من أن كل برنامج يعمل ضمن مساحة الذاكرة المخصصة له دون أن يتسبب في تعطيل عمل البرامج الأخرى.
كيفية العمل: تستخدم أنظمة التشغيل تقنيات مثل “التقسيم إلى صفحات” (Pagination) و”التقسيم إلى أجزاء” (Segmentation) لإدارة الذاكرة. كما يجب ألا ننسى تقنية الذاكرة الافتراضية (Virtual Memory) التي تسمح باستخدام مساحة القرص الصلب كامتداد للذاكرة العشوائية (RAM)، مما يزيد من سعة الذاكرة المتاحة.
إدارة الملفات (File Management)
- الوظيفة: يتعامل نظام التشغيل مع تخزين البيانات واسترجاعها وتنظيمها على مساحة التخزين الداخلية للجهاز. لا يتم فقط إدارة الملفات النظامية والدلائل (Directories)، بل يتحمل نظام التشغيل أيضًا مسؤولية توفير الأمان وإدارة الصلاحيات.
- كيفية العمل: توفر أنظمة الملفات (File Systems) – مثل NTFS وext4 وFAT32 – هيكلية لتخزين وتنظيم الملفات. كما يتعامل نظام التشغيل مع عمليات مثل القراءة والكتابة وإنشاء وحذف الملفات.
إدارة الأجهزة (Device Management)
- الوظيفة: يدير نظام التشغيل الاتصال بين الأجهزة وبرامج التشغيل (Drivers). يتم التحكم في عمليات لوحة المفاتيح والفأرة ومحركات الأقراص والطابعات والشاشة وجميع الأجهزة المشابهة بواسطة نظام التشغيل.
- كيفية العمل: يستخدم نظام التشغيل واجهة برامج التشغيل (Device Driver Interface) للتفاعل مع الأجهزة، ويتولى مهام مثل إرسال البيانات إلى الطابعة أو القراءة من القرص الصلب أو عرض المعلومات على الشاشة.
الأمان والتحكم في الوصول (Security and Access Control)
- الوظيفة: تضمن أنظمة التشغيل أن جميع عمليات الوصول إلى موارد النظام تظل آمنة، وتستخدم بروتوكولات أمنية للدفاع ضد الوصول غير المصرح به.
- كيفية العمل: يستخدم نظام التشغيل آليات المصادقة (Authentication) لإدارة صلاحيات المستخدمين، بحيث يمكن فقط للمستخدمين المصرح لهم الوصول إلى الموارد والبيانات. بالإضافة إلى ذلك، يتولى نظام التشغيل إدارة أدوات التشفير وتأمين البيانات.
الشبكات (Networking)
- الوظيفة: يدير نظام التشغيل تبادل البيانات بين الكمبيوترات والأجهزة الأخرى عبر الاتصال الشبكي.
- كيفية العمل: يتعامل نظام التشغيل مع الشبكات التي تشمل بروتوكولات مثل TCP وIP، ويتولى مهام مثل التوجيه (Routing) وإنشاء الاتصالات وضمان أمان البيانات عبر الشبكات.
واجهة المستخدم (User Interface)
- الوظيفة: يوفر نظام التشغيل واجهات مستخدم مختلفة تسمح للمستخدم بالتفاعل مع الأجهزة والبرامج. يمكن أن تكون هذه الواجهة رسومية (GUI) أو تعتمد على سطر الأوامر (Command-Line Interface | CLI).
- كيفية العمل: توفر واجهة المستخدم الرسومية – مثل تلك الموجودة في Windows وmacOS – طريقة بصرية للتفاعل مع الكمبيوتر. أما واجهة سطر الأوامر – مثل تلك الموجودة في Terminal لنظام Linux أو Command Prompt في Windows – فتسمح بالتفاعل فقط من خلال الأوامر النصية.
تعدد المهام (Multitasking)
- الوظيفة: يسمح نظام التشغيل بتشغيل عدة برامج في نفس الوقت على معالج واحد.
- كيفية العمل: تحصل العمليات المختلفة على فرصة وزمن محدد في المعالج المركزي من خلال تقنيات مثل “تقسيم الوقت” (Time-Sharing)، مما يخلق وهم تشغيل العمليات والبرامج في نفس الوقت. في الواقع، يدير نظام التشغيل أجزاء مختلفة من موارد النظام لتوفير الوصول المتزامن إلى الموارد المطلوبة لكل برنامج.
ما هي مميزات نظام التشغيل؟
من خلال تثبيت نظام تشغيل على الأنظمة فوائد متعددة، من أهمها:
- ضمان الاستخدام الأمثل والصحيح للأجهزة
- إمكانية تشغيل تطبيقات متعددة في آنٍ واحد
- سهولة إدارة الملفات والمجلدات
- الوصول إلى واجهة المستخدم الرسومية (GUI) والحصول على تجربة بصرية مُتميزة
- ضمان أمان المعلومات الشخصية والتجارية
- إدارة مُثلى للموارد المُتاحة
- إدارة العرض والطباعة ونقل البيانات عبر الأجهزة الطرفية
- توفير منصة لتطوير البرمجيات
الأسئلة الشائعة
لماذا نحتاج إلى نظام تشغيل؟
أنظمة التشغيل ضرورية لإدارة موارد الأجهزة، وتوفير واجهة مستخدم سهلة الاستخدام، وضمان الأمان، وتمكين تعدد المهام، وتحسين أداء النظام.
كيف يضمن نظام التشغيل الأمان؟
تستخدم أنظمة التشغيل آليات أمان متنوعة، بما في ذلك مصادقة المستخدم (User Authentication)، والتحكم في الوصول (Access Control)، والتشفير (Encryption)، وحماية الجدار الناري (Firewall Protection)، لحماية البيانات والموارد من الوصول غير المصرح به.
نظام التشغيل 32 بت مقابل نظام التشغيل 64 بت
يتفوق المعالج 64 بت على المعالج 32 بت من حيث القدرة على معالجة كميات أكبر من البيانات في وقت واحد. مع المعالج 64 بت، تزداد القدرة على تخزين القيم الحسابية، مثل عناوين الذاكرة، مما يتيح الوصول إلى ذاكرة فعلية تزيد عن أربعة مليارات مرة مقارنة بمعالج 32 بت. بالإضافة إلى ذلك، يتميز المعالج 64 بت بسرعة حسابية أعلى، مما يؤثر على معدل إنجاز المهام.
هل يمكنني تثبيت أنظمة تشغيل متعددة على جهاز كمبيوتر واحد؟
نعم، يمكنك تثبيت وتشغيل أنظمة تشغيل متعددة على جهاز كمبيوتر واحد من خلال عملية تسمى التشغيل المزدوج (Dual-Booting) أو التخيل الافتراضي (Virtualization).
ما الفرق بين واجهة المستخدم الرسومية (GUI) وواجهة سطر الأوامر (CLI)؟
- واجهة المستخدم الرسومية (GUI | Graphical User Interface): توفر طريقة مرئية للتفاعل مع الكمبيوتر من خلال الأيقونات والنوافذ والقوائم.
- واجهة سطر الأوامر (CLI | Command-Line Interface): تتضمن كتابة أوامر نصية للتفاعل مع النظام.
الخلاصة
مع التقدم التكنولوجي الهائل والحتمي، شهد سوق العمل تغيرًا جذريًا، مما استلزم تطوير أنظمة تشغيل مبسطة وقوية. ونتيجةً لذلك، شهدنا حتى الآن إصدار خمسة أجيال مختلفة من نظام التشغيل، ومن المتوقع ظهور الجيل السادس في المستقبل القريب، مع اعتماد كبير على الذكاء الاصطناعي. لذا، أصبح فهم أساسيات الحواسيب، بما في ذلك ماهية نظام التشغيل وكيفية عمله، أمرًا بالغ الأهمية للجميع تقريبًا.