نظم التشغيل
نظام التشغيل
هو أول برنامج تشاهده عند تشغيل جهازك وآخر برنامج تشاهده عند إغلاق جهازك. هو عبارة عن حزمة برامج تجعل جهاز الحاسب يعمل بشكل صحيح. يقوم بإخبار الحاسب كيف يتعامل مع البرامج الأخرى ويتحكم في المكونات المادية المركبة على الجهاز.
هو برنامج حاسوبي يمكّن أجهزة الكمبيوتر hardware على الاتصال و العمل مع برامج الحاسوب software. بدون نظام تشغيل ، الحاسوب سيكون عديم الفائدة. كما أن نظام التشغيل يوفر بيئة تمكّن مستخدم الجهاز من تشغيل البرامج بشكل سهل وفعّال ويوفّر حماية لنظام الكمبيوتر من الأخطار والتدخلات التي يمكن أن تسببها هذه البرامج.
مكونات نظام الحاسب:
كل نظام حاسب مقسم إلى ثلاثة أقسام رئيسية:
برامج التطبيقات (Application Programs)
برامج النظام (System Programs)
الأجزاء الصلبة / المادية (Hardware)
برامج التطبيقات (Application Programs)
لا يوجد مستخدم للكمبيوتر إلا ويتعامل معها بكل مرونة وسهولة فهي مصممة للتسهيل على المستخدم وتلبية طلباته في مختلف المجالات فهذا النوع من البرامج له أقسام عديدة تتحدد أهميتها بحسب استخدام المستخدم لها. ومن أشهرها:
Microsoft Office, Web browser, Airline reservation, Banking system
برامج النظام (System Programs)
كل برنامج له برنامج نظام حسب طبيعة البرنامج ، مثلاً:
Command interpreter, Editor, Compiler
مترجم Compiler :
يعمل هذا النوع من برامج النظام على استكشاف الأخطاء وتحديد أماكنها سواء أكان خطأ منطقي (حلقة غير منتهية) (متغيرات لم يتم استخدامها) أو خطأ (عدم كتابة فاصلة، ترك فراغ... حسب لغة البرمجة المتبعة) ومن أهم مميزاته الدقة المتناهية حيث لا يتم أي برنامج إلا وهو صحيح 100% وبالتالي يكون برنامج النظام المصرفي (التطبيقي) مناسباً مع هذا النوع من برامج النظام لان برامج المصارف دقيقة وحساسة جداً لأنها تتعامل مع عمليات مالية تتم معالجتها (إيداع ، سحب، كشف، وعمليات المحاسبة التي تتم بسرعة ودقة حساب)
محرر Editor:
يقوم هذا النوع من برامج النظام بالمعالجة النصية بحيث تتلخص وظيفته بأن تكون المدخلات النصية للبرنامج صحيحة حيث يتأكد من إدخال الأحرف وعدم وجود رموز غير واضحة أو أرقام خاطئة. وبالتالي يكون برنامج نظام الحجوزات (التطبيقي) مناسباً مع هذا النوع من برامج النظام لان برامج الحجوزات لا تتطلب من المستخدم إلا ادخال بيانات نصية ومعلومات عنه.
مفسر الأمر Command interpreter:
وهو أبسط أنواع المعالجات حيث لا يستكشف الأخطاء ووظيفته الأساسية البحث ويستخدم في المواقع الخاصة بالبحث وأشهرها (غوغل) وبالتالي يستخدم مع web browser
أصناف أنظمة التشغيل:
1- نظام التشغيل الوقت الفعلي (Real-time Operating System RTOS):
تتحكم بالحواسيب التي تتفاعل مع البيئة لتنفيذ العمل بحيث تكون عملية الإدخال والمعالجة في نفس اللحظة مثل أجهزة تخطيط القلب .وتصميم هذه للقيام بمهام محددة في فترة زمنية محددة
آلات تحكم، أجهزة قياس، أنظمة صناعية.
2- مستخدم واحد ومهمة واحدة (Single-user, single-task):
تخدم مستخدماً واحداً ، يمكن أن ينفذ برنامجاً واحداً، مثل دوس DOS.
3- مستخدم واحد وعدة مهام (Single-user, multi-tasking):
- هذا النوع هو الأكثر استخداماً على حاسبات سطح المكتب والمحمولة.
- يمكن للمستخدم تنفيذ عدة برامج في نفس الوقت (متزامن)، مثلاً: كتابة تقرير وتحميل ملف من الانترنيت وطباعة نص لبريد الكتروني.
- Windows 98 ,OS/2
4- متعدد المستخدمين ومهمة واحدة (single-task Multi-user):
يسمح لعدد من الأشخاص أن ينفذ كل واحد برنامج في وقت واحد ، ويزود كل مستخدم بطرفية أو محطة إدخال وإخراج مكونة من لوحة المفاتيح وشاشة عرض تتصل مع الحاسوب المركزي ، ويسمى بنظام المشاركة الزمنية لأن نظام التشغيل يـمر الحاسوب بالانتقال بسرعة كبيرة بين المستخدمين بعد إعطائهم فترات زمنية ثابتة لاستخدام cpu
وتسمى هذه الفترات بالشرائح الزمنية ، مثل Windows NT
5- متعدد المستخدمين ومتعدد المهام (Multi-task Multi-user):
تسمح هذه النظم لكل مستخدم من عدة مستخدمين أن ينفذ أكثر من عمل مرة واحدة ، مثل UNLX
كنظام تشغيل المتعدد المستخدمين المتعدد المهمات في الحواسيب المصغرة والكبيرة والعملاقة ، ومن أمثلته
UNLX 0.8 ,IBM VM .
6- المتعدد المعالجة (Multiprocessing)
ينفذ متعدد المعالجة تعليمات عديدة بشكل متواز في نظام حاسوب واحد يمتلك وحدات معالجة مركزية عديدة ، والأنظمة متعددة المعالجة تنفذ الوظائف فعلياً يشكل متواقت (في نفس اللحظة ) ، والميزة الرئيسة لها السرعة ، مثل
SUN-OS , N-Cube .
7- الشبكة
تعمل على عدة حواسيب منفصلة من أن تتصل مع بعضها مما يعطي المستخدمين ميزات امتلاك حواسيب خاصة بهم أثناء السماح لهم بالمشاركة بأجهزة والمعدات ، وتمكنهم أيضاً إرسال واستقبال الرسائل إلى الآخرين عبر الشبكة . مثل Novel Not Ware , Distributed .
8- التخزين الافتراضي
يجب أن يحمل البرنامج في ذاكرة الحاسوب الرئيسة ليتم تنفيذه ، ولكن ماذا يحدث إذا كان البرنامج كبيراً جداً لا تتسع له الذاكرة المتوفرة أو إذا كان هناك عدة برامج تتسابق على حيز في الذاكرة الرئيسة ؟ تستطيع العديد من نظم التشغيل حل مثل هذه المشاكل بشكل روتيني بدون تدخل المستخدم من خلال استخدام أساليب التخزين الافتراضي ، والتخزين الافتراضي هي إدارة ذاكرة تستخدم منطقة من الذاكرة الافتراضي كامتداد للذاكرة الرئيسة ، مثل
UNLX , IBM VM .
ملاحظة: يجب التمييز مابين نظام تشغيل متعدد المستخدمين ونظام تشغيل لمستخدم واحد الذي يدعم الشبكات. مثلاً يمكن لويندوز 2000 أن يدعم مئات الآلاف من المستخدمين على الشبكة لكنه ليس بنظام متعدد المستخدمين حقيقي.
تتلخص وظائف نظام التشغيل – بشكل عام – في الأصناف الست التالية:
1- إدارة المعالج Processor Management
2- إدارة الذاكرة Memory Management
3- إدارة المكونات المادية Device Management
4- إدارة عملية التخزين Storage Management
5- واجهة التطبيقات Application Interface
6- واجهة المستخدم User Interface
اولاً- خدمات نظام التشغيل التي تساعد المستخدم بشكل مباشر :
:(User Interface) -1 واجهة المستخدم
جميع أنظمة التشغيل تحتوي على واجهة للمستخدم وتأخذ هذه الواجهة أكثر من شكل, ومن أشكال
واجهة المستخدم:
. ( Command Line Interface-CLI).1 أي الواجهة النصية
( Graphical User Interface-GUI).2 أي الواجهة الرسومية، وهي الأكثر شيوعًا واستخدامًا.
بعض الأنظمة مزودة باثنين أو ثلاثة من الواجهات المختلفة
2- تنفيذ البرامج (Program Execution):
يجب أن يكون لنظام التشغيل قدرة كافية لتحميل البرامج في الذاكرة وتنفيذ تلك البرامج, ويجب أيضًا أن يكون مؤهلا لاختتام التطبيق بطريقة إما عادية أو غير عادية -عند وجود بعض الأخطاء
:(I/O Operations ) -3 عمليات الإدخال والإخراج
إن أي برنامج يتم تطبيقه قد يكون بحاجة إلى عمليات إدخال وإخراج بحيث يقوم بطلب ملف معين أو أجهزة الإدخال والإخراج.
يجب أن يكون نظام التشغيل هو الوسيلة للقيام بالإدخال والإخراج وذلك لأن المستخدم لا يستطيع عادة أن يتحكم بالمدخلات والمخرجات مباشرة وذلك لحمايتها وزيادة الفعالية.
-4 تشكيل نظام الملفات (File System Manipulation):
لنظام الملفات اهتمام خاص في نظم التشغيل. وذلك لأن البرامج تقوم بعمليات كثيرة على الملفات كقراءة وكتابة الملفات, وتكوين وحذف هذه الملفات والأدلة من خلال اسمها أو البحث عن ملف معين, وغيرها الكثير من العمليات التي تتم على الملفات والأدلة.
-5 الاتصالات (communications):
قد تحتاج العلميات في بعض الحالات للاتصال مع بعضها البعض لتبادل المعلومات والبيانات ومشاركتها فيما بينها. وهذا الاتصال قد يكون على نفس الحاسوب أو على حاسبات مختلفة عبر شبكة. وهذه المشاركة تتم بطريقتين هما : الذاكرة المشتركة (shared memory) أو عن طريق الرسائل العابرة. (message passing)
-6 كشف الخطأ (Error Detection):
إن خطأ واحد من جزء من النظام قد يسبب عطل كامل في النظام! لتفادي مثل هذه المشكلة يقوم نظام التشغيل بمراقبة النظام بشكل مستمر لاكتشاف الأخطاء التي قد تحدث ويقوم بالإجراءات المناسبة لتصحيحها عند حدوثها.
ثانيا: مجموعة أخرى من خدمات نظام التشغيل موجودة لضمان كفاءة تشغيل النظام عبر تقاسم الموارد :(resource sharing)
-1 تخصيص الموارد : (Resource allocation)
إذا وجد لدينا أكثر من مستخدم ، أو أكثر من عمل يتم تنفيذه بنفس الوقت ، يجب أن يتم تخصيص الموارد لكلٍ منهم ، وتوجد عدة أنواع من الموارد , بعضها تحتاج إلى تخصيص كود خاص مثل : الذاكرة الرئيسية وتخزين الملفات ، وأخرى كأجهزة الإدخال والإخراج تتطلب كود عام.
-2 المحاسبة : (Accounting)
تستخدم هذه الخدمة من أجل تتبع المستخدمين ، ومعرفة أنواع الموارد المستخدمة من قبل كل مستخدم .
-3 الحماية والأمن : (Protection and security)
الأشخاص الذين يمتلكون معلومات في أجهزة موصولة بشبكة أو في جهاز يستخدمه عدد من المستخدمين، يريدون ضمان حماية المعلومات ، وعدم تداخل العمليات التي تتم بنفس الوقت مع بعضها البعض .
واجهة مستخدم نظام التشغيل (User Operating System Interface):
واجهة مستخدم نظام التشغيل هي الواجهة المرئية لمستخدمي النظام. وهي عبارة قشرة (shell ) أو غلاف لنظام التشغيل. وهي برنامج يعمل في الطبقة العليا من النظام ويتيح للمستخدمين إصدار الأوامر إليه.
فالقشرة ليست سوى برنامج خدمة لإدخال الأوامر والوصول إلى نظام التشغيل, أي أنها في أغلب الأحيان لا تمثل جزءًا من جوهر نظام التشغيل.
يوجد لنظام يونيكس عدد من القشريات ، مثل ،C ، Korn ،Bourne,Bash
ومستخدمو يونيكس يفضلون القشرية التي يختارونها، فيستغلون إمكانياتها الكامنة، ويضبطونها لتصبح مناسبة لبيئات عملهم، وينشئون الأسماء المستعارة للأوامر التي يستخدمونها بكثرة، ويكتبون برامج لتنفيذ بعض أوامر النظام تلقائيًا.
من مهام واجهة المستخدم:
o تزود المستخدمين بواجهة يتم التعامل من خلالها
o تمكن من الوصول إلى خدمات النواة .(kernel )
o تمكن من تشغيل التطبيقات أو البرامج.
o .إمكانية استعراض محتويات الأدلة من خلالها.
وهناك عدة أنواع وأشكال من واجهات المستخدم, منها :
أولاً: واجهة الأوامر النصية :(Command Line Interface-CLI)
واجهة الأوامر النصية هي طريقة يتم فيها تفاعل المستخدم مع البرامج أو نظام التشغيل باستخدام الأوامر الخطية بحيث يستجيب المستخدم مع رسائل الكمبيوتر التوجيهية من خلال طباعة الأوامر ومن ثم يتلقى المستخدم إجابة من النظام. ويستخدمها عادة المبرمجون ومدراء الأنظمة والأشخاص ذوي الخبرة التقنية
تحتاج هذه الواجهة إلى مترجم يسمى command line interpreter وهو برنامج يقرأ الأوامر الخطية المدخلة من المستخدم ويترجمها في سياق نظام التشغيل أو لغة البرمجة المستخدمة.
من أمثلة هذه الواجهة:
. MS-DOS command line interface وهي المستخدمة في نظام الويندوز
ثانيًا: واجهة المستخدم الرسومية
Graphical User Interface- GUI )
واجهة المستخدم الرسومية تؤمن التفاعل مع الحاسب باستخدام أغراض و صور رسومية –أيقونات- وهي غالبًا تتكون من عناصر تحكم. إضافة إلى نصوص توجه المستخدم لاستخدام أحداث مخصصة مثل نقر الفأرة, أو توجهه إلى إدخال نصوص ليقوم الحاسب بما يريده المستخدم . جميع الأفعال و المهام التي يمكن للحاسب تنفيذها تتم عن طريق التطبيق المباشر لأحداث على العناصر الرسومية (عناصر التحكم).
أكثر المستخدمين اليوم يفضلون الواجهة الرسومية على واجهة الأوامر الخطية ،كما أن أغلب أنظمة التشغيل اليوم توفر كلا الواجهتين للمستخدم.
ومن الأمثلة على الأنواع الأخرى لواجهة المستخدم:
الواجهة الرسومية القابلة للتكبير :(ZUI - zoomable user interface )
هي نوع من أنواع الواجهات الرسومية , ولكنها تختلف عن الواجهة العادية في أنها لا تستخدم النوافذ, حيث أن العناصر تظهر على سطح المكتب, وإذا تم اختيار العنصر فإنه بدلاً من أن يفتح في نافذة فإنه يتم تكبيره إلى المستوى المطلوب والعمل عليه, وعند الانتهاء يتم تصغيره على سطح المكتب .هناك عدة تطبيقات تستخدم هذا النوع منها
iPhone ,Google Maps , Google Earth
نداءات النظام ( System Calls):
تعريفها:
نداءات النظام هي ميكانيكية تستخدمها برامج التطبيقات للحصول على خدمة يقوم بها نظام التشغيل. أو هي الطريقة التي يستخدمها (عملية المستخدم) ليسأل نظام التشغيل لفعل شيء معين.
متى تحدث ؟
تحدث نداءات النظام في وقت معالجة برامج التشغيل في الذاكرة حيث تحتاج إلى خدمات نظام التشغيل,
مثل استخدام الأجهزة الملحقة بالنظام كبطاقة الشبكة أو بطاقة الصوت أو بطاقة الرسومات أو في الاتصالات بين البرامج التطبيقية.
عندما تستخدم نداءات النظام, فإنه ببساطة يتم تحديد اسم الدالة المطلوبة ومناداتها, ولكن ما العمل عند الحاجة إلى معلومات إضافية؟ في هذه الحالة يتم إرسال هذه البيانات الإضافية عن طريق معاملات (parameters) وهناك عدة طرق تستخدم لإرسال المعاملات وهي:
1- إرسال المعاملات إلى النظام عن طريق وضعها في أحد المسجلات (register). هذه الطريقة سريعة ولكنها تفضل فقط عندما يكون لدينا عدد قليل من المعاملات وذلك لأنه هناك عدد محدود من المسجلات داخل المعالج.
2- استخدام تركيب بيانات من نوع stack بحيث يقوم البرنامج بدفع المعاملات داخلها ومن ثم يقوم نظام التشغيل باستخراجها. هذه الطريقة لا تحددنا في كمية البيانات المخزنة.
3- تخزين المعاملات في مكان محدد في الذاكرة (block) أو توضع في جدول في الذاكرة (table) ثم بعد ذلك يوضع عنوان المكان أو الجدول في مسجل (register) ويمرر هذا العنوان إلى نظام التشغيل. نستطيع القول أن هذه الطريقة تعتبر من أفضل الطرق الثلاث وذلك لأنها لا تحددنا في كمية المعلومات المخزنة , بالإضافة إلى أن النظام يستطيع الوصول إلى أي معلومة بسهولة على عكس الطريقة السابقة، حيث إذا أراد النظام معلومة من أسفل الـ stack (المكدس) فسوف يضطر لإخراج جميع المعلومات التي تقع فوقها.
يمكن تصنيف نداءات النظام إلى هذه الأنواع:
1-أعمال الملفات: خلق / حذف/ فتح ملف ، قراءة / كتابة
2- إدارة الأجهزة : طلب / تحرير ، قراءة / كتابة
3- صيانة المعلومات : طلب /أخذ المعلومات ، معرفة الوقت و التاريخ وعملية الحصول على المعلومات
4- التواصل : خلق / حذف الروابط ، وإرسال / استقبال الرسائل
5- التحكم في العمليات.
الأوامر البرمجية : application program interface(API)
لكل نظام تشغيل مجموعة من الأوامر البرمجية ,(API's) التي تقوم بمناداة نداءات النظام system call )) في قلب النظام (kernel mode) ثم تنتقل إلى نظام التشغيل. فمثلاً عند عمل الأمر البرمجي -open()– فإنه يستدعي نداء النظام لهذا الأمر:
. (open () >>>>>open system call )
وليس من الضروري أن يعادِل الأمر البرمجي الواحد نداء واحد للنظام! فقد يتطلب المئات من نداءات النظام.
الصورة التالية توضح لنا المفهوم العام لعلاقة الأوامر البرمجية مع نداءات النظام:
من أكثر أنواع الأوامر البرمجية شيوعًا:
Win32 API .1 التي تستخدم في نظام الويندوز
POSIX API .2 التي تستخدم في أنظمة UNIX وMac OS X و Linux
JAVA API .3 المستخدمة في الآلة الوهمية للغة الجاف
إن من الجدير بالذكر أنه يَفضل استخدام الأوامر البرمجية بدلاً من نداءات النظام, وذلك للأسباب التالية:
1. قابلية النقل (Portability) في الأوامر البرمجية
فمثلا: عند كتابة برنامج بلغة الجافا فإننا نستطيع تشغيله في أي نظام تشغيل مثل
بدون أي تغيير في أوامر نداء النظام . Mac وLinux و Windows
2. أوامر استدعاء النظام أكثر تفصيلاً وتعقيدًا ويصعب التعامل معها وتختلف من نظام لنظام, بينما الأوامر البرمجية أسهل وأقل تعقيدًا.
كيفية تنفيذ نداءات النظام داخل نظام التشغيل :(implementation of system calls)
يتم ربط الأمر البرمجي (API) برقم (index) وهذا الرقم يربط بأمر نداء النظام , وتلك الأرقام تكون مدونة في جدول يسمى جدول النظام (system table)
ولكل نداء للنظام رقم (index)
الشكل التالي يوضح جدول النظام حيث نلاحظ فيه كل أمر نظام مرتبط برقم :(index)
مثلاً عند عمل الأمر البرمجي -open()– سوف يتم الانتقال من أسلوب المستخدم إلى أسلوب لب النظام, وبالتالي لابد من استخدام نداء النظام ,ويتم ذلك بعمل مناداة للرقم المرتبط بالنداء الذي يتم إيجاده من خلال جدول النظام (system table)
برامج النظام (System Programs)
هي مجموعة برامج توفر بيئة تخاطبية بين نظام التشغيل والبرامج المطورة من قبل المستخدمين ومطوري البرامج, وأكثر المستخدمين يتعاملون مع نظام التشغيل عن طريق برامج النظام وليس عن طريق الاتصال المباشر بنظم التشغيل.
أنواع برامج النظام:
تقسم برامج النظام إلى عدة أقسام وهي:
• إدارة الملفات: وهي المسئولة عن خلق, حذف, إعادة تسمية, نسخ وغيرها من العمليات على الملفات والأدلة.
• معلومات حالة النظام: هي برامج تسأل النظام عن الوقت, التاريخ, حجم الذاكرة, عدد
المستخدمين.
• تعديل الملفات: وهي عبارة عن مجموعة من محررات النصوص لعمل تغيرات في محتويات الملفات.
• دعم ملفات البرمجة: وهي المسئولة عن التجميع في برامج لغات البرمجة.
• تنفيذ وتحميل البرامج: وهي المسئولة عن تنفيذ البرامج بعد تحميلها.
• الاتصالات: وهي المسئولة عن التواصل بين العمليات أو بين المستخدمين أو بين أجهزة أخرى مختلفة.
تركيب نظم التشغيل (Operating Systems Structure)
هناك عدة طرق لبناء وتركيب نظم التشغيل و هي:
1- التركيب البسيط : (Monolithic)
بحيث يكون نظام التشغيل في مستوى واحد أو في مستويين.
الميزة الرئيسية : تكلفة التفاعلات الداخلية في النظام تكون منخفضة لأنها جميعا تقع على نفس المستوى.
العيوب:
• صعوبة الفهم .
• صعوبة التعديل .
• صعوبة الصيانة .
• غير موثوق فيه .
2- تركيب الطبقات : (Layered)
أي أن نظام التشغيل مقسم لطبقات (مستويات) بحيث يكون كل جزء من النظام في طبقة مستقلة ، بحيث أن الطبقة0 (layer 0) مخصصة للعتاد (Hardware) والطبقة ن (layer N) مخصصة لواجهة المستخدم كما هو موضح في الشكل التالي:
الميزة الرئيسية : وجود الطبقات أدى إلى تسهيل عملية الصيانة .
العيوب: المشكلة تكمن في عملية ترتيب الطبقات ، فلا توجد لدينا طريقة واضحة للترتيب
3- تركيب النواة الصغيرة : (Microkernel )
تكون نواة النظام في هذا التركيب صغيرة جدًا ، ولا يوضع بداخلها سوى الوظائف الأساسية . أما الوظائف الأخرى فتوضع في مساحة المستخدم ، ويكون الاتصال بين مساحة المستخدم والنواة عن طريق الرسائل العابرة .(message passing)
الميزات :
• من السهل توسيع (تمديد) النظام.
• النظام أكثر ثقة و أكثر أمنًا.
العيوب :
الاتصال بين مساحة المستخدم ونواة النظام عملية مكلفة.
4- تركيب الوحدات : (Modules-based)
معظم أنظمة التشغيل الحديثة مبنية بهذه الطريقة ، حيث تكون النواة الأساسية في المركز وبقية الوظائف تتفرع منها ، وهي مشابهة للطبقات ولكن أكثر مرونة وأكثر كفاءة.
الآلات الافتراضية أوالتخيلية ( (Virtual Machines
ما هي الآلة الافتراضية؟
الآلة الافتراضية هي عبارة عن برنامج يسمح بتشغيل أكثر من نظام تشغيل تخيلي افتراضي على جهاز شخصي واحد. بحيث يمكن تثبيت أكثر من نظام تشغيل على نفس الجهاز والتنقل بين هذه الأنظمة دون المساس بالنظام الحالي ودون خسارة كبيرة في الأداء. و تعمل الآلة الافتراضية كتطبيق على نظام التشغيل المضيف.
خصائصها:
- تمكن من استخدام أنظمة تشغيل متعددة على جهاز واحد والتنقل بينها دون الحاجة لإعادة تشغيله .
- تمكن من تركيب أنظمة تشغيل متعددة دون تقسيم جديد للقرص الصلب.
- توفر الاتصال بين أنظمة تشغيل متعددة على جهاز شخصي واحد.
فوائدها:
- إمكانية تجربة أنظمة تشغيل متعددة بأقل التكاليف.
- إمكانية إجراء تعديلات وتجارب على النظام التخيلي بحرية وذلك لأن الموارد التي يستخدمها معزولة تمامًا عن موارد النظام الأساسي.
- يساعد على توفير بيئة برمجية جيدة , مما يتيح لمطوري أنظمة التشغيل القيام بالتجارب والبحوث على الآلة الوهمية بدلا من القيام بها على النظام الأساسي وبالتالي لا يؤثر على أداء هذا النظام.
مثال على الآلات الافتراضية:
آلة جافا الوهمية (JAVA Virtual Machine) التي تمكن ملفات الجافا من العمل على جميع أو معظم أنظمة التشغيل.
تنشئة نظام التشغيل (Operating system generation)
من الممكن تصميم نظام تشغيل أو برمجته أو تنفيذه خصيصًا لجهاز واحد في مكان واحد, لكن نظم التشغيل بشكل عام مصممة للعمل على أي نوع من أجهزة الكمبيوتر في أي مكان ومتصلة مع أي نوع من الأجهزة الطرفية. لذلك يجب تركيب النظام لكل جهاز على حدة , وعملية التركيب هذه يطلق عليها (SYSTEM GENERATION) أي "تنشئة النظام".
في العادة تنتج الشركات نظم التشغيل على أقراص مدمجة (CD) ولكي تتم عملية تركيب النظام بشكل صحيح يجب استخدام برنامج يطلق عليه اسم "SYSGEN" الذي يقوم بقراءة بيانات التركيب من ملف معين, أو يقوم بتوجيه أسئلة إلى الشخص الذي يقوم بتركيب النظام حول معلومات تخص النظام , ومن هذه المعلومات على سبيل المثال:
• نوع المعالج المستخدم, و في حالة تعدد المعالجات يجب وصف كل معالج على حدة.
• حجم الذاكرة المتوفرة.
• الأجهزة المتوافرة, حيث يجب تحديد النوع والطراز وأي مواصفات خاصة.
• خيارات نظام التشغيل المرغوبة,مثل اختيار طريقة جدولة المعالج,أو العدد الأقصى من العمليات.
حالما يتم تحديد المعلومات فإنه يمكن حفظها في جداول وتخزينها, بحيث يتم استخدامها عند تركيب النظام على أجهزة أخرى, وبالتالي توفر على المستخدم عناء تكرار إدخال جميع هذه المعلومات على كل جهاز في كل مرة.