نظام التشغيل operating system هو جزء أساسي في أي نظام حاسوبي، الغرض من توفير بيئة ملائمة
لينفِّذ المستخدم برامجه فيها بطريقة فعالة. وهو برنامج يؤدي دور الوسيط بين
المستخدِم user وعتاديات الحاسوب
hardware.
يُقسم النظام الحاسوبي عادةً إلى أربع مكونات: العتاديات، ونظام
التشغيل، والبرامج التطبيقية، والمستخدمين يوضحها الشكل1.
مكونات النظام الحاسوبي
توفِّر العتاديات -وهي وحدة المعالجة المركزية CPU، والذاكرة، وتجهيزات الدخل/الخرج O/I ـ المواردَ resources الأساسية للحاسوب. وتُستخدم هذه الموارد لحل المسائل الحاسوبية
الخاصة بالمستخدمين، وذلك بطريقة تعرّفها البرامج التطبيقية، مثل المترجمات
compilers، ونظم قواعد المعطيات، والألعاب، والبرامج
الخاصة بالأعمال business. قد يقوم مستخدِمون مختلفون (أشخاص،
تجهيزات، حواسيب أخرى) بحل مسائل مختلفة، وذلك عن طريق برامج تطبيقية عدة ومختلفة.
لذا يتولى نظام التشغيل مهمة مراقبة وتنسيق استخدام العتاديات بين مختلف البرامج
التطبيقية لمختلف المستخدمين.
لا يوجد تعريف وافٍ وكامل لنظام التشغيل، ولا يوجد أيضاً عالمياً
تعريف مقبول للأشياء التي هي جزء من نظام التشغيل، والأشياء التي ليست منه. عموماً
نظام التشغيل هو البرنامج الذي يكون بحالة التنفيذ كل الوقت (يسمى النواة kernel عادةً)،
أما البرامج الأخرى فهي برامج تطبيقية.
تعد نظم التشغيل الآتية الأكثر انتشاراً وشهرةً:
ـ Solaris
2 من Sun Microsystems، Linux.
ـ MS-DOS من Microsoft، Windows NT، Windows
2000.
ـ VMS و TOPS-20 من DEC.
ـ OS/2 من IBM.
ـ Macintosh من Apple.
طبقة تظهر موقع نظام التشغيل في أغلب أنظمة البرمجيات
المكتبية
مراحل تطور نظم التشغيل
كان لنظم التشغيل وبنية الحاسوب
قدر كبير من التأثير بعضها في بعض. فقد جرى تطوير نظم التشغيل لتسهيل استخدام العتاديات.
في البداية، استُخدمت النظم الحاسوبية ما سمي المُحاِور أوالِمعراض console، ولم يكن المستخدِم يتفاعل مباشرة معها، بل كان الحاسوب
يُدار بوساطة مشغِّل operator. وأدّت برمجياتٌ مثل المجمّعات assemblers والموسِقات loaders والرابطات linkers والمترجِمات، إلى تحسين ملاءَمة برمجة النظام، ولكنها، في نفس
الوقت، احتاجت إلى زمن تهيئة طويلٍ.
أتاحت النظمُ الدُفعية batch systems تنفيذَ الأعمال jobs الواحد تلو الآخر آلياً، من خلال نظامِ تشغيلٍ قاطنٍ في الذاكرة resident، وحسّنت إلى حدٍّ بعيدٍ الاستخدام الكلي للحاسوب. فلم تعد ثمة
ضرورة أن ينتظرَ الحاسوبُ أعمالاً يقوم بها المستخدِم. ومع ذلك، ظلّت نسبة استخدام
وحدة المعالجة منخفضةً، ذلك أنّ تجهيزاتِ الدخل/الخرج أبطأُ نسبياً من وحدة
المعالجة.
ولتحسين الأداء الكلي للنظام، أَدخل المطورون مفهوم تعدد البرمجة multi-programming. يتيح تعددُ البرمجة الاحتفاظ بعدد من
الأعمال في الذاكرة في وقت واحد؛ وتنتقل وحدة المعالجة ذهاباً وإياباً بين تلك
الأعمال، لزيادة استخدام وحدة المعالجة ولإنقاص مجموع الزمن اللازم لتنفيذ تلك
الأعمال.
أتاح تعددُ البرمجة أيضاً اقتسامَ الزمن time-sharing. إذ تَسمح نظم التشغيل باقتسام الزمن لعدد من المستخدمين (من 1
إلى عدة مئات) لدى استخدامهم الحاسوب
معاً استخداماً تفاعلياً.
مع انخفاض أسعار العتاديات، ظهرت نظم الحواسيب الشخصية وهي حواسيب
صغيرة أصغرُ حجماً من نظم الحواسيب الرئيسة mainframe، وأقل كلفةً منها. وقد استفادت نظم التشغيل الخاصة بتلك الحواسيب
من تطورها. ولم تعد نسبةُ استخدام وحدة المعالجة المشكلة الأولى التي ينصبُّ
الاهتمام عليها، لأن الأفراد ينفردون باستخدام الحاسوب، لذلك نجد أن بعض قرارات
التصميم المتَّخذة في نظم تشغيل الحواسيب الرئيسة غير ملائمة للنظم التي هي أصغر
حجماً منها.
ثم ظهرت النظم المتوازية وهي تحوي عدة وحدات معالجة تعمل في اتصال
وثيق؛ وتتشارك وحدات المعالجة في مسرى الحاسوب، وتتشارك أحياناً في الذاكرة
والتجهيزات الطرفية. وتستطيع هذه النظم توفير معدَّل تدفق متزايد وموثوقية محسّنة.
ومع انتشار الشبكات الحاسوبية، ظهرت النظم الموزعة وهي مجموعة
معالجات لا تتشارك في الذاكرة أو الميقاتية. وبدلاً من ذلك، يحوي كل معالج ذاكرةً
محليةً، وتتصل المعالجات بعضُها ببعض بوساطة خطوط اتصال متنوعة، مثل المساري
العالية السرعة وخطوط الهاتف. يسمح النظام الموزع للمستخدمين بالنفاذ إلى موارد
متنوعة موجودة في حواسيب بعيدة، وتحسين الإفادة من المعطيات وموثوقيتها.
وهنا شكل آخر من أشكال نظم التشغيل الخاصة، هو نظام الزمن الحقيقي
وله نوعان. يُستخدم نظام الزمن الحقيقي الراسخ hard في تطبيقٍ مخصص بمنْزلة تجهيزةِ تحكّمٍ. ولنظام تشغيل الزمن
الحقيقي الراسخ قيوده المعرَّفة جيداً والمحددة من حيث الزمن. فالمعالجة يجب أن
تنجز ضمن القيود المعرَّفة، وإلا أخفق النظام. أما النوع الثاني فيرتبط بنظم الزمن
الحقيقي المطواعة soft التي لديها قيود زمنية أقل صرامةً، ولا
تدعمُ الجدولةَ الزمنية للمواعيد الأخيرة deadlines.
خدمات نظام التشغيل
يوفر نظام التشغيل بيئة عمل لتنفيذ البرامج، فهو يقدم خدمات
للبرامج ولمستخدِمي تلك البرامج. وتختلف هذه الخدمات من نظام تشغيل إلى آخر، بيد
أنه يمكن تمييز بعض التصنيفات العامة لها، تجعل هذه الخدمات المبرمجين أكثر مقدرة
على البرمجة وتسهل عليهم عملهم.
تنفيذ البرامج: يجب أن يكون النظام قادراً على تحميل البرامج في
الذاكرة وتنفيذها.
وظيفة الدخل/الخرج: قد يحتاج تنفيذ برنامج إلى إجراء عملية دخل/خرج
(من ملف مثلاً). ولأنه
لا يُسمح للمستخدِم عادةً التحكم مباشرةً في أجهزة الدخل/الخرج، وذلك لضمان
الفعالية والحماية، فإنه يجب على نظام التشغيل توفير بعض الوسائل لإنجاز
الدخل/الخرج.
التعامل مع نظام الملفات: يعتبر نظام الملفات مهماً، ذلك أن
البرامج تحتاج إلى قراءة وكتابة ملفات وكذلك إنشاء وحذف ملفات محددة.
الاتصالات: قد تحتاج إجرائية إلى تبادل المعلومات مع إجرائية أخرى.
هناك أسلوبان أساسيان لتوفير هذا الاتصال.
الأول يحصل بين إجرائياتٍ تُنفّذ على نفس الحاسوب؛ الثاني يحصل بين إجرائياتٍ على
حواسيب مختلفة ومرتبطة فيما بينها بوساطة شبكة حاسوبية. يمكن توفير الاتصال
عبر ذاكرة مشتركة أو بتقنيات تمرير الرسائل message passing التي يتولى فيها نظام التشغيل نقل رزم المعلومات بين الإجرائيات.
كشف الأخطاء: يحتاج نظام التشغيل إلى أن يكون حذراً من الأخطاء
الممكن حدوثها. يمكن مثلاً حدوث الأخطاء في وحدة المعالجة المركزية والذاكرة (كخطأ
انقطاع التغذية)، أو
أجهزة الدخل/الخرج، أو في برنامج المستخدِم. يجب على نظام التشغيل اتخاذ الإجراء
المناسب لكل خطأ، للتوثق من صحة العمل.
إضافةً إلى الوظائف السابقة، هناك مجموعة أخرى من الوظائف لنظام
التشغيل مهمتها ليست مساعدة المستخدِم بقدر المحافظة على فعالية نظام التشغيل في
حد ذاته منها:
ـ تحصيص الموارد resources allocation: عند وجود عدة مستخدِمين أو عدة مهام يجري تنفيذها في نفس الوقت،
يجب تحصيص الموارد لكل منها. يوفِّر النظام أنواعاً مختلفة من الموارد؛ مثل زمن
وحدة المعالجة المركزية، والذاكرة الرئيسية، والملفات، وأجهزة الدخل/الخرج. ويدير
نظام التشغيل هذه الموارد، ويخصصها لبرامج ومستخدمين محددين وفقاً لحاجة المهمات tasks. فمثلاً، لتحديد الاستثمار الأمثل لوحدة المعالجة المركزية،
يطبِّق نظام التشغيل إجرائيات خاصة لجدولتها CPU-scheduling تأخذ بالحسبان سرعتها، والأعمال الواجب القيام بها، إضافةً إلى
عوامل أخرى.
ـ الحماية: قد يرغب مالك المعلومات المخزنة على نظام حاسوبي متعدد
المستخدِمين أن يتحكم في استخدامها. لذلك عند تنفيذ عدة إجرائيات منفصلة تنفيذاً
متسايراً، لا يُسمح لإجرائية واحدة أن تتعارض مع الإجرائيات الأخرى أو مع نظام
التشغيل نفسه. يجب أن تضمن الحماية السيطرة على كل عمليات النفاذ إلى موارد
النظام، وحماية النظام من المستخدمين أنفسهم. تبدأ هذه الحماية بأن يقوم كل
مستخدِم يريد الدخولَ إلى النظام واستخدامَ موارده، بالتعريف بنفسه وعادةً ما يكون
هذا التعريف بوساطة كلمة مرور يتحقق النظام من صحتها. ويمنع أيضاً النفاذ غير
المشروع إلى أجهزة الدخل/الخرج الخارجية، ومنها المودِمات وموائمات الشبكة network adapters، وتسجل كل هذه الاتصالات لكشف الاختراقات.
لكي يصبح النظام محمياً وآمناً يجب الحذر واتخاذ الإجراءات الوقائية لحماية جميع
أقسامه، فقوة السلسلة تعتمد على قوة أضعف حلقاتها.
قضايا في نظم التشغيل
يخضع موضوع نظم التشغيل لتغيرات سريعة جداً، لأن الحواسيب صارت
اليوم سائدة افتراضياً في كل تطبيق، من ألعاب الأطفال إلى أدوات التخطيط الخاصة
بالحكومات والشركات المتعددة الجنسيات. ومع ذلك، تبقى المفهومات الأساسية في هذا
الإطار جلية إلى حدّ ما، منها الأمور الآتية:
ـ إدارة الإجرائيات: الإجرائية process والتساير concurrency هما محور نظم التشغيل العصرية. الإجرائية هي وحدة العمل في
النظام. يتضمن نظام التشغيل جَمْعاً من الإجرائيات المتسايرة يجري تنفيذها، بعضها
إجرائيات خاصة بنظام التشغيل (وهي تلك التي تنفِّذ رِماز النظام)، وبقية الإجرائيات خاصة
بالمستخدِم (وهي تلك التي تنفِّذ رِماز المستخدِم). تتناول إدارةُ الإجرائيات
طرائقَ في جدولة الإجرائيات، الاتصال
فيما بين الإجرائيات، تَزامُن الإجرائيات، معالجة الانسداد deadlock.
ـ إدارة الخزْن storage management: لتحسين استخدام وحدة المعالجة CPU وسرعة استجابتها لمستخدميها، يجب أن يُبقي الحاسوب
عدة إجرائيات في الذاكرة. توجد أساليب متعددة ومختلفة لإدارة الذاكرة. لما كانت
الذاكرة الرئيسية عادةً صغيرة جداً لتناسِب كل المعطيات
والبرامج، ولا تستطيع تخزين المعطيات
بصفة دائمة، وَجَب على نظام الحاسوب
توفير خزن ثانوي لمساندة الذاكرة الرئيسية. تَتخذ معظمُ نظم الحواسيب المعاصرة
الأقراصَ وسطَ خزنٍ أولي آنيّ للمعلومات (برامج ومعطيات). ويوفِّر نظامُ الملفات آليةً
للخزن الآني والقدرة على النفاذ إلى المعطيات
والبرامج القاطنة على الأقراص.
ـ النظم الموزعة: يجب أن يوفِّر النظام الموزع آليات مختلفة لمزامنة
الإجرائيات وللاتصال فيما بينها، ولمعالجة مشكلة الانسداد والأعطال المختلفة التي
لا تصادَف في النظام المركزي.
ـ الحماية والأمن: المقصود بالأمن حماية المعلومات المخزنة في
النظام الحاسوبي (وهي المعطيات
والرِّماز) إضافة إلى الموارد الفيزيائية، من نفاذِ غير مخوَّل له، ومن تخريب أو
تبديل مقصود، ومن إحداث عدم اتساق عَرَضي.
أُحدِثتْ نظم التشغيل لأنها وسيلة مقبولة لجعل النظام الحاسوبي
قابلاً للاستخدام. فلتحقيق الغرض الأساسي من النظم الحاسوبية، وهو تنفيذ برامج
المستخدم وتسهيل حل مشكلاته، جرى بناء عتاديات الحاسوب.
ولمّا كانت العتاديات المجرّدة ليست سهلة الاستخدام على حدة، جرى تطوير البرامج
التطبيقية. تَستخدم هذه البرامج عملياتٍ شائعة، كتلك التي تتحكم في تجهيزات
الدخل/الخرج. ولتنفيذ العمليات التي تستخدمها هذه البرامج، أُدرِجت وظائف التحكم
والتحصيص الشائعة جميعاً في برمجية هي: نظام التشغيل.