ما هو نظام التشغيل؟ شرح OS ومكوناته وكيف يدير الحاسوب

مشاركة

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

تصور تحريري يوضح نظام التشغيل كطبقة وسيطة بين التطبيقات ومكونات الحاسوب المادية.

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

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

لماذا يحتاج الحاسوب إلى نظام تشغيل؟

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

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

يمكن تلخيص أدواره الرئيسية في الآتي:

  • إدارة وقت المعالج: تحديد أي مهام تُنفذ ومتى.
  • إدارة الذاكرة: تخصيص الذاكرة للبرامج وعزل مساحات عملها.
  • إدارة التخزين والملفات: تنظيم البيانات في ملفات ومجلدات والتعامل مع أنظمة الملفات.
  • إدارة الإدخال والإخراج: التنسيق مع الشاشة ولوحة المفاتيح والأقراص وبطاقات الشبكة وغيرها.
  • تشغيل التطبيقات: إنشاء العمليات وتحميل البرامج وتوفير الخدمات التي تحتاجها.
  • الأمن والعزل: إدارة المستخدمين والصلاحيات والحد من وصول البرامج إلى الموارد الحساسة.
  • توفير واجهة للتفاعل: سواء كانت واجهة رسومية GUI أو سطر أوامر CLI.

هل Kernel هي نفسها نظام التشغيل؟

لا. النواة (Kernel) هي القلب الأكثر امتيازًا في نظام التشغيل، لكنها ليست بالضرورة النظام كاملًا.

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

توضح وثائق Microsoft لبنية Windows أن النظام نفسه يحتوي على مكونات تعمل في User Mode وأخرى في Kernel Mode، وليس مجرد Kernel منفردة.

وفي حالة Linux يوجد تمييز مهم: Linux بالمعنى التقني هو Kernel، بينما ما يستخدمه الشخص على جهازه عادةً هو توزيعة Linux تجمع النواة مع مكتبات وأدوات وخدمات وبرامج أخرى لتكوين نظام قابل للاستخدام.

User Mode وKernel Mode: لماذا لا تستطيع التطبيقات فعل كل شيء؟

من المبادئ المهمة في أنظمة التشغيل الحديثة الفصل بين التعليمات العادية للتطبيقات والتعليمات ذات الصلاحيات العالية.

في Windows على سبيل المثال، تعمل التطبيقات المعتادة في User Mode، بينما تعمل المكونات الجوهرية للنظام وكثير من التعريفات في Kernel Mode. توضح Microsoft أن العملية في User Mode تحصل على مساحة عناوين افتراضية خاصة بها ولا تستطيع مباشرةً تعديل الذاكرة المحجوزة للنظام.

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

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

مخطط يوضح انتقال طلب التطبيق عبر خدمات نظام التشغيل وKernel والتعريفات إلى CPU وRAM والتخزين والشبكة والرسومات.

إدارة العمليات: ماذا يحدث عندما تشغّل برنامجًا؟

الملف التنفيذي الموجود على وحدة التخزين ليس هو نفسه العملية (Process). البرنامج يصبح عملية عندما يبدأ نظام التشغيل تشغيله ويخصص له الموارد اللازمة.

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

قد يحتوي البرنامج على عملية واحدة أو أكثر، ويمكن أن تحتوي العملية الواحدة على عدة Threads. متصفح الويب مثلًا قد ينفذ أعمالًا مختلفة بالتوازي أو بصورة متداخلة، مثل معالجة الواجهة وتنفيذ JavaScript والتعامل مع الشبكة.

ما دور Scheduler؟

عدد المهام الجاهزة للتنفيذ قد يكون أكبر بكثير من عدد أنوية المعالج المتاحة. هنا يأتي دور المجدول (Scheduler).

يقرر المجدول أي Thread أو مهمة تحصل على وقت CPU ومتى يجب الانتقال إلى مهمة أخرى، مع مراعاة عوامل مثل الأولوية وحالة المهمة وسياسات النظام.

هذا هو أحد أسباب ظهور عشرات أو مئات العمليات في أدوات مثل Task Manager رغم أن المعالج لا يحتوي على مئات الأنوية. النظام يبدل بين الأعمال بسرعة، بينما تستطيع الأنوية المتعددة تنفيذ عدد من Threads فعليًا في الوقت نفسه.

كيف يدير نظام التشغيل RAM؟

الذاكرة ليست مجرد مساحة يقسمها النظام بالتساوي بين البرامج. أنظمة التشغيل الحديثة تعتمد بدرجة كبيرة على مفهوم Virtual Memory أو الذاكرة الافتراضية.

يحصل كل Process عادةً على فضاء عناوين افتراضية يستطيع البرنامج التعامل معه كما لو كان مساحة خاصة به. لا تعني هذه العناوين بالضرورة مواقع مقابلة مباشرة وثابتة داخل شرائح RAM.

توضح Microsoft أن العنوان الافتراضي يُترجم إلى عنوان في الذاكرة الفيزيائية باستخدام جداول صفحات، وأن لكل عملية مساحة عناوين خاصة بها. وتشرح وثائق Linux Kernel كذلك أن نظام إدارة الذاكرة يتولى الذاكرة الافتراضية وDemand Paging وتخصيص الذاكرة للـKernel وبرامج User Space.

ما فائدة الذاكرة الافتراضية؟

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

لهذا السبب فإن القول إن برنامجًا ما "يستخدم 2 جيجابايت من الذاكرة" قد يحتاج إلى تفسير أدق حسب المقياس المستخدم؛ فهناك فرق بين مساحة العناوين الافتراضية وبين الصفحات الموجودة فعليًا حاليًا في RAM.

هل Pagefile أو Swap بديل عن RAM؟

لا. يمكن لنظام التشغيل استخدام مساحة على وحدة التخزين ضمن آليات Paging أو Swap، لكن SSD وHDD أبطأ بكثير من RAM من حيث طبيعة الوصول وزمن الاستجابة.

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

ما هو نظام الملفات File System؟

وحدة SSD أو HDD توفر تخزينًا على مستوى منخفض، لكن المستخدم يحتاج إلى مفهوم أعلى: ملفات بأسماء، مجلدات، تواريخ، أحجام، صلاحيات وبيانات وصفية.

نظام الملفات (File System) هو البنية التي تستخدم لتنظيم هذه البيانات والوصول إليها على وسيط التخزين. من الأمثلة NTFS وFAT32 وexFAT في بيئات Windows، وext4 وXFS وBtrfs في أنظمة Linux.

عندما يطلب تطبيق فتح ملف مثل:

Documents/report.pdf

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

يقدم Linux مثالًا واضحًا على التجريد عبر Virtual File System أو VFS، وهي طبقة داخل Kernel توفر واجهة مشتركة تسمح لبرامج User Space بالتعامل مع أنظمة ملفات مختلفة عبر عمليات مألوفة مثل الفتح والقراءة والكتابة.

من المهم هنا عدم الخلط بين ثلاثة مفاهيم:

  • وحدة التخزين: العتاد مثل SSD.
  • القسم أو Volume: مساحة منطقية معدة للاستخدام.
  • نظام الملفات: الطريقة التي تُنظم بها الملفات والبيانات الوصفية داخل تلك المساحة.

ما هي التعريفات Device Drivers؟

التعريف (Driver) مكون برمجي يشارك في التواصل بين نظام التشغيل والجهاز أو بين طبقات النظام المختلفة.

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

تشرح Microsoft في تعريفها للـDriver أن نظام التشغيل والتطبيق يمكن أن يمررا الطلب عبر Driver يعرف كيفية التواصل مع الجهاز. كما تشير الوثائق إلى أن بعض طلبات I/O قد تمر عبر مجموعة من Drivers مرتبة في Driver Stack، وليس بالضرورة عبر تعريف واحد فقط.

كذلك لا يعني Driver دائمًا برنامجًا كتبه مصنع الجهاز ولا يعني أن جميع Drivers تعمل بالضرورة مباشرةً مع Hardware؛ توجد نماذج وتعريفات تؤدي وظائف إضافية داخل النظام.

كيف يدير نظام التشغيل أجهزة الإدخال والإخراج؟

تشمل عمليات الإدخال والإخراج أو I/O القراءة من القرص، استقبال ضغطات لوحة المفاتيح، إرسال البيانات إلى بطاقة الشبكة، إخراج الصوت، التعامل مع USB، وعرض الرسومات.

بدل أن يحتكر تطبيق واحد الجهاز، ينظم نظام التشغيل الطلبات ويستخدم طبقات I/O والتعريفات وآليات المقاطعات والذاكرة المؤقتة وغيرها بحسب نوع الجهاز والبنية.

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

واجهة المستخدم ليست هي نظام التشغيل كله

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

يمكن أن يوفر النظام:

  • GUI: واجهة مستخدم رسومية بالنوافذ والأيقونات والقوائم.
  • CLI: واجهة أوامر نصية مثل PowerShell أو Shell في أنظمة Unix-like.
  • واجهات برمجية: APIs وSystem Calls تستخدمها البرامج بدل التفاعل البشري المباشر.

وليس من الضروري أن يمتلك كل نظام تشغيل واجهة رسومية. كثير من الخوادم والأجهزة المضمنة تعمل دون Desktop تقليدي أصلًا.

إدارة المستخدمين والصلاحيات والأمان

من مسؤوليات OS أيضًا تحديد من يستطيع الوصول إلى ماذا. لهذا توجد حسابات مستخدمين ومجموعات وصلاحيات ملفات وامتيازات مختلفة للعمليات.

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

تعمل أنظمة التشغيل الحديثة على بناء حدود أمنية متعددة، مثل:

  • عزل مساحات ذاكرة العمليات.
  • الفصل بين User Mode وKernel Mode.
  • صلاحيات الملفات والمجلدات.
  • إدارة حسابات المستخدمين والهوية.
  • تقييد العمليات الحساسة بالامتيازات المناسبة.
  • آليات إضافية لحماية تنفيذ التعليمات والذاكرة بحسب النظام والمنصة.

لكن وجود هذه الآليات لا يعني أن نظام التشغيل غير قابل للاختراق. الثغرات في Kernel أو Drivers أو الخدمات ذات الامتيازات المرتفعة قد تكون شديدة التأثير تحديدًا لأنها تقع في طبقات تملك صلاحيات واسعة.

ماذا يحدث منذ الضغط على زر التشغيل؟

من الأخطاء الشائعة القول إن نظام التشغيل هو ببساطة "أول برنامج يعمل". عملية الإقلاع الفعلية تتضمن مراحل تسبق Kernel.

في حاسوب حديث يمكن تبسيط المسار هكذا:

  1. يبدأ Firmware مثل UEFI العمل وتهيئة المنصة الأساسية.
  2. يتم تشغيل Boot Manager أو Bootloader المناسب.
  3. تُحمّل Kernel والبيانات أو التعريفات الضرورية لبدء النظام.
  4. تبدأ Kernel إدارة المعالج والذاكرة والأجهزة الأساسية.
  5. تبدأ خدمات وعمليات النظام.
  6. تظهر بيئة تسجيل الدخول أو واجهة المستخدم عندما يصبح النظام جاهزًا.

يمكن رؤية هذا الفصل بوضوح في توثيق Microsoft لمراحل إقلاع Windows، حيث تسبق مرحلة Windows Boot Manager وOS Loader بدء Windows NT Kernel نفسها.

مخطط تسلسل إقلاع الحاسوب من UEFI وBoot Manager إلى OS Loader وKernel ثم خدمات النظام وتسجيل الدخول.

مثال عملي: ماذا يحدث عندما تفتح المتصفح؟

أفضل طريقة لفهم نظام التشغيل هي متابعة طلب واحد من البداية إلى النهاية.

  1. تنقر على أيقونة المتصفح في واجهة المستخدم.
  2. تطلب مكونات الواجهة من النظام تشغيل الملف التنفيذي.
  3. ينشئ النظام Process ويجهز له مساحة عناوين افتراضية وموارد أخرى.
  4. تبدأ Threads الخاصة بالبرنامج ويمنحها Scheduler وقتًا على CPU.
  5. عندما يحتاج المتصفح إلى ملفات إعداداته، يستخدم واجهات الملفات التي تمر عبر File System.
  6. إذا احتاج إلى بيانات من SSD، تمر عمليات I/O عبر طبقات التخزين والتعريفات المناسبة.
  7. عند فتح موقع، يستخدم البرنامج خدمات الشبكات في النظام لإرسال واستقبال البيانات عبر Network Interface.
  8. تُمرر عمليات العرض إلى المكونات الرسومية والتعريفات المسؤولة عن GPU والشاشة.

المستخدم يرى نافذة ظهرت بعد نقرة، لكن خلفها تعاون بين العمليات والذاكرة ونظام الملفات والمجدول وطبقات I/O والتعريفات والشبكة والرسومات.

أين تقع Windows وmacOS وLinux وAndroid ضمن هذه الصورة؟

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

  • Windows: نظام تشغيل عام للحواسيب الشخصية ومحطات العمل والخوادم ضمن عائلة Windows.
  • macOS: نظام Apple لأجهزة Mac، مبني على طبقات تشمل Darwin وXNU ومكونات أخرى.
  • Linux: Kernel مفتوحة المصدر تُبنى حولها توزيعات مختلفة مثل Ubuntu وFedora وDebian.
  • Android: منصة تشغيل للأجهزة المحمولة تعتمد على Linux Kernel مع طبقات وأطر عمل خاصة بـAndroid.

لهذا لا ينبغي اختزال مفهوم OS في شكل سطح المكتب أو اسم الشركة التي طورته. الاختلافات التي يراها المستخدم في الواجهة ليست إلا جزءًا من اختلافات أعمق في بنية النظام وخدماته وسياساته.

هل يمكن أن يعمل الحاسوب بلا نظام تشغيل؟

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

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

أهم الفروق التي تمنع الالتباس

المفهوم معناه
Operating System مجموعة البرمجيات التي تدير موارد النظام وتوفر بيئة وخدمات للتطبيقات.
Kernel القلب ذو الامتيازات العالية المسؤول عن وظائف أساسية مثل الذاكرة والجدولة وI/O.
Process مثيل لبرنامج قيد التنفيذ مع موارد ومساحة عمل خاصة به.
Thread وحدة تنفيذ داخل Process يمكن للمجدول منحها وقتًا على CPU.
Virtual Memory طبقة عناوين وتجريد تسمح بإدارة الذاكرة وعزل العمليات عن بعضها.
File System بنية تنظيم الملفات والمجلدات والبيانات الوصفية على التخزين.
Driver مكون برمجي يشارك في التواصل بين النظام والأجهزة أو طبقات I/O.
GUI / Shell وسيلة للتفاعل مع النظام وليست Kernel ولا النظام بأكمله.

الخلاصة

نظام التشغيل ليس مجرد الشاشة التي تراها بعد تشغيل الكمبيوتر، وليس مجرد Kernel أيضًا. هو بيئة برمجية متكاملة تتوسط بين التطبيقات وموارد الحاسوب وتنسق استخدامها.

عندما يعمل النظام بصورة طبيعية، يوزع Scheduler وقت المعالج بين المهام، ويدير Memory Manager الذاكرة الافتراضية وRAM، وينظم File System البيانات، وتتولى Drivers التواصل مع الأجهزة، بينما توفر خدمات النظام والواجهات الطرق التي تستخدمها البرامج والمستخدمون للوصول إلى هذه القدرات.

وفهم هذه العلاقة يجعل كثيرًا من المفاهيم الأخرى أوضح: لماذا قد يتسبب Driver معيب في مشكلة على مستوى النظام، ولماذا تختلف RAM عن التخزين، ولماذا يحتوي Task Manager على Processes كثيرة، ولماذا لا تكون Kernel وواجهة سطح المكتب ونظام الملفات الشيء نفسه رغم أنها جميعًا أجزاء من تجربة نظام التشغيل.

شارك برأيك

لديك إضافة، سؤال أو تجربة مرتبطة بالموضوع؟ اكتبها وشارك بها القراء.