بوروز إم سي بي
يُعد برنامج التحكم الرئيسي (MCP ) نظام التشغيل الخاص بأجهزة Burroughs B5000/B5500/B5700 و B6500 والأنظمة اللاحقة ، بما في ذلك أنظمة Unisys Clearpath/MCP .
كُتبت لغة MCP في الأصل عام 1961 بلغة ESPOL (لغة الأنظمة التنفيذية الموجهة نحو حل المشكلات). وفي سبعينيات القرن العشرين، حُوِّلت MCP إلى NEWP، وهي صيغة أكثر تنظيمًا وقوة وأمانًا من ESPOL.
كان نظام MCP رائدًا في العديد من المجالات، بما في ذلك: أول نظام تشغيل لإدارة المعالجات المتعددة، وأول تطبيق تجاري للذاكرة الافتراضية، وأول نظام تشغيل مكتوب حصريًا بلغة عالية المستوى .
تاريخ
في عام 1961، كان نظام التشغيل MCP أول نظام تشغيل مكتوب حصريًا بلغة برمجة عالية المستوى . تميز نظام Burroughs Large System ( B5000 [ 2 ] وما تلاه) بتصميمه الفريد الذي يفترض أن جميع البرامج، بما في ذلك برامج النظام، ستُكتب بلغة برمجة عالية المستوى بدلاً من لغة التجميع ، وهو ما كان نهجًا مبتكرًا وفريدًا في عام 1961.
على عكس شركة IBM، التي واجهت منافسة في مجال الأجهزة بعد رحيل جين أمدال ، لم تعمل برامج Burroughs إلا على أجهزة Burroughs نفسها نظرًا لعدم توفر أجهزة متوافقة من جهات خارجية. ولهذا السبب، كان بإمكان Burroughs توزيع الشفرة المصدرية لجميع البرامج التي باعتها، بما في ذلك نظام MCP، الذي صُمم مع مراعاة هذه الانفتاحية. فعلى سبيل المثال، كان التحديث يتطلب من المستخدم إعادة تجميع برنامج النظام وتطبيق أي تصحيحات محلية لازمة. في ذلك الوقت، كانت هذه ممارسة شائعة، وضرورية لأن العملاء (خاصة الكبار منهم، مثل الاحتياطي الفيدرالي ) كانوا يُعدّلون البرنامج ليناسب احتياجاتهم الخاصة. [ 3 ] ونتيجة لذلك، تم تشكيل مجموعة مستخدمي Burroughs، التي كانت تعقد اجتماعات سنوية وتتيح للمستخدمين تبادل إضافاتهم الخاصة لنظام التشغيل وأجزاء أخرى من حزمة برامج النظام. وقد شقت العديد من هذه الإضافات طريقها إلى شفرة نظام التشغيل الأساسية على مر السنين، وهي متاحة الآن لجميع العملاء. وبذلك، يُمكن اعتبار نظام MCP أحد أوائل مشاريع المصادر المفتوحة .
لم تكن شركة بوروز أول شركة مصنعة توزع شفرة المصدر، بل دخلت مجال الحوسبة الإلكترونية متأخرةً (مقارنةً بمنافسيها التقليديين مثل NCR وIBM و Univac ). والآن، بعد أن أصبح نظام MCP يعمل على أجهزة قياسية، لم تعد شركة Unisys توفر بعض عناصر حزمة البرامج القائمة على MCP بصيغة شفرة المصدر.
كان نظام التشغيل MCP أول نظام تشغيل تجاري يوفر ذاكرة افتراضية ، والتي يدعمها تصميم Burroughs Large Systems منذ نشأته. يتميز هذا النظام بكونه فريدًا من نوعه في هذا المجال، حيث يقوم بتخزين واسترجاع كائنات مُعرَّفة بواسطة المُصرِّف بدلاً من صفحات الذاكرة ذات الحجم الثابت، وذلك نتيجةً لتصميمه العام غير القائم على بنية فون نيومان والقائم على بنية المكدس بشكل موحد.
كان لدونالد كنوث تأثيرٌ أيضاً خلال هذه الفترة، إذ أصبح مستشاراً لشركة بوروز، وانضم إلى قسم تخطيط المنتجات من عام 1960 إلى عام 1968. ويشير في كتابه "الخوارزميات الأساسية" في القسم 2.5 حول تخصيص التخزين الديناميكي إلى "برنامج تحكم" (يُفترض أنه برنامج MCP الذي كان قيد التطوير آنذاك) . وينسب كنوث الفضل لنفسه في "طريقة "علامة الحدود"، التي عُرضت في القسم 2.5، والتي صممها المؤلف عام 1962 لاستخدامها في برنامج تحكم لجهاز الكمبيوتر B5000". [ 4 ] : 460
توقفت شركة يونيسيس عن إنتاج الأجهزة في أوائل العقد الثاني من القرن الحادي والعشرين، ويتم تشغيل نظام التشغيل الآن عن طريق المحاكاة. [ 5 ]
نظام الملفات
يوفر نظام MCP نظام ملفات ببنية دليل هرمية. في الإصدارات الأولى من MCP، كانت عُقد الدليل تُمثَّل بملفات منفصلة تحتوي على مدخلات الدليل، كما هو الحال في الأنظمة الأخرى. مع ذلك، منذ حوالي عام 1970، يستخدم MCP داخليًا دليلًا "مسطحًا" يسرد جميع مسارات الملفات على وحدة التخزين. يعود ذلك إلى أن فتح الملفات عن طريق زيارة كل دليل في مسار الملف وفتحه كان غير فعال، وفي بيئة الإنتاج، وُجد أنه من الأفضل الاحتفاظ بجميع الملفات في دليل واحد، على الرغم من احتفاظها بنظام التسمية الهرمي. برمجيًا، لا يُحدث هذا أي فرق. الفرق الوحيد الذي يلاحظه المستخدمون هو أن ملفًا ما يمكن أن يحمل نفس اسم دليل. على سبيل المثال، يمكن أن يوجد كل من "A/B" و"A/B/C"؛ ويمكن أن يكون "B" عُقدة في ملف ودليلًا في الوقت نفسه.
تُخزَّن الملفات على وحدات تخزين مُسماة، على سبيل المثال "هذا/هو/اسم/ملف على myvol"، حيث "myvol" هو اسم وحدة التخزين. هذا مستقل عن الجهاز، إذ يمكن نقل القرص الذي يحتوي على "myvol" أو نسخه إلى محركات أقراص فعلية مختلفة. كما يمكن دمج الأقراص بحيث يمكن تثبيت وحدة تخزين واحدة على عدة محركات أقراص، بالإضافة إلى إمكانية نسخها احتياطيًا لاستعادة البيانات الحساسة. ولمزيد من المرونة، يمكن لكل برنامج استبدال وحدات التخزين، حيث يمكن استبدال اسم وحدة التخزين باسم بديل أساسي وآخر ثانوي. يُشار إلى هذا باسم "FAMILY" الخاص بالعملية. على سبيل المثال، يقوم التعيين "FAMILY DISK = USERPACK OTHERWISE SYSPACK" بتخزين الملفات المُحددة منطقيًا على وحدة التخزين DISK على وحدة التخزين USERPACK، وسيبحث عن الملفات أولًا على وحدة التخزين USERPACK. إذا لم ينجح هذا البحث، فسيتم البحث عن الملف مرة أخرى على وحدة التخزين SYSPACK. DISK هو اسم وحدة التخزين الافتراضي في حال عدم تحديد أي اسم.
يحتوي كل ملف في النظام على مجموعة من خصائص الملف . تسجل هذه الخصائص جميع أنواع البيانات الوصفية المتعلقة بالملف، وأهمها اسمه ونوعه (الذي يحدد للنظام كيفية التعامل مع الملف، مثل رمز نوع الملف المحدود المكون من أربعة أحرف في نظام ماكنتوش ). تشمل الخصائص الأخرى حجم سجل الملف (إذا كان ثابتًا للتطبيقات التجارية)، وحجم الكتلة (كمضاعفات للسجلات يحدد لوحدة المعالجة المركزية عدد السجلات التي يجب قراءتها وكتابتها في عملية إدخال/إخراج فعلية واحدة)، وحجم المنطقة كمضاعفات للكتل، والذي يحدد حجم مساحات القرص التي سيتم تخصيصها مع توسع الملف.
يشير نوع الملف إلى ما إذا كان الملف عبارة عن بيانات حرفية، أو شفرة مصدرية مكتوبة بلغات معينة، أو بيانات ثنائية، أو ملفات برمجية.
تتم حماية الملفات بواسطة آليات الوصول الأمني المعتادة مثل الوصول العام أو الخاص، أو قد يحتوي الملف على ملف حماية حيث يمكن للمالك تحديد قواعد أمنية معقدة.
تتمثل إحدى آليات الأمان الأخرى في أن ملفات التعليمات البرمجية لا يمكن إنشاؤها إلا بواسطة مترجمات موثوقة. لا يستطيع المبرمجون ذوو النوايا الخبيثة إنشاء برنامج وتسميته مترجمًا، إذ لا يمكن تحويل البرنامج إلى مترجم إلا بواسطة مُشغِّل يتمتع بصلاحيات كافية باستخدام الأمر 'mc' make compiler operator.
يقوم نظام MCP بتطبيق نظام ملفات التسجيل ، مما يوفر تحمل الأعطال في حالة فشل القرص أو انقطاع التيار الكهربائي وما إلى ذلك. من غير الممكن إتلاف نظام الملفات (إلا من قبل نظام التشغيل أو برامج النظام الموثوقة الأخرى التي تتمتع بوصول مباشر إلى طبقاته السفلية) .
نظام الملفات غير حساس لحالة الأحرف ولا يحافظ على حالة الأحرف إلا إذا تمت إضافة علامات اقتباس حول الاسم، وفي هذه الحالة يكون حساسًا لحالة الأحرف ويحافظ عليها.
إدارة العمليات
تُسمى عمليات MCP " وظائف " و" مهام ". تحتوي الوظيفة على مهمة واحدة أو أكثر. يمكن تنفيذ المهام داخل الوظيفة بالتتابع أو بالتوازي. يمكن تطبيق المنطق على مستوى الوظيفة، عادةً باستخدام لغة التحكم في الوظائف WFL الخاصة بـ MCP، للتحكم في سير العمل. بمجرد اكتمال جميع المهام في الوظيفة، تُعتبر الوظيفة نفسها مكتملة.
تمر عملية MCP بدورة حياة تبدأ من لحظة دخولها النظام وحتى خروجها منه. الحالة الابتدائية للمهمة هي "في قائمة الانتظار". تقضي المهمة فترة زمنية في إحدى قوائم انتظار المهام التي يُحددها المستخدم. الحالة التالية هي "مجدولة" عندما تنتقل المهمة من قائمة الانتظار إلى الذاكرة. لا تنتظر المهام داخل المهمة في قائمة الانتظار، بل تنتقل مباشرةً إلى حالة "مجدولة" عند بدء تشغيلها. بمجرد بدء تشغيل مهمة، يمكنها الانتقال بين حالات "نشطة" و"في انتظار" و"مجدولة" أثناء تقدمها. عند اكتمال المهمة، تنتقل إلى حالة "مكتملة".
العمليات الجارية هي تلك التي تستخدم موارد المعالج وتُصنّف على أنها "جارية". أما العمليات الجاهزة للتخصيص لمعالج، في حال عدم وجود معالج متاح، فتُوضع في قائمة الانتظار. يمكن تعيين أولوية "مُعلنة" أو "مرئيّة" للعمليات، وعادةً ما تكون 50 هي القيمة الافتراضية، ولكن يمكن أن تتراوح من 0 إلى 99 لعمليات المستخدم. قد تُمنح عمليات النظام قيمًا أعلى. تجدر الإشارة إلى أن هذه الأولوية الرقمية ثانوية مقارنةً بالأولوية العامة، والتي تُحدد بناءً على نوع المهمة. تتمتع العمليات التي تُشكّل جزءًا مباشرًا من نظام التشغيل، والتي تُسمى "المُشغّلات المستقلة"، بأعلى أولوية بغض النظر عن قيمة الأولوية الرقمية. تليها العمليات التي تستخدم قفل MCP، ثم أنظمة التحكم في الرسائل مثل CANDE ، ثم العمليات المُتوقفة، ثم مهام لغة سير العمل، وأخيرًا عمليات المستخدم. على مستوى أدنى، توجد أولوية دقيقة تهدف إلى رفع أولوية المهام التي لا تستخدم شريحة المعالج بالكامل. يسمح هذا لمهمة مُقيّدة بالإدخال/الإخراج بالحصول على وقت معالج مُتقدّم على مهمة مُقيّدة بالمعالج على نفس الأولوية المُعلنة.
تنتظر العمليات التي تعتمد على موارد أخرى، مثل قراءة ملف، بنية بيانات الحدث (EVENT ). وبالتالي، تنتظر جميع العمليات التي تعتمد على مورد واحد حدثًا واحدًا. عند توفر المورد، يتم إطلاق الحدث، مما يُوقظ جميع العمليات التي تعتمد عليه. قد تنتظر العمليات عدة أحداث لحدوث أي منها، بما في ذلك انتهاء المهلة. الأحداث قابلة للبرمجة بالكامل من قِبل المستخدم، أي يمكن للمستخدمين كتابة أنظمة تستخدم نظام الأحداث العام الذي توفره MCP.
تُعلّم العمليات التي انتهت على أنها مكتملة.
من الناحية التشغيلية، تُعرض حالة جميع المهام في النظام للمشغل. تُعرض جميع العمليات الجارية والجاهزة كمهام "نشطة" (نظرًا لأن النظام يُطبّق تعدد المهام الاستباقي ، فإن الانتقال من حالة الجاهزية إلى حالة التشغيل والعودة سريع جدًا لدرجة أن التمييز بين المهام الجاهزة والجارية يصبح غير ذي جدوى لأنها جميعًا ستحصل على جزء من المعالج في غضون ثانية واحدة). يمكن عرض جميع المهام النشطة باستخدام الأمر "A".
تُعرض المهام المُنهاة كمهام مكتملة مع ذكر سبب الإنهاء، ويُشار إليها بـ EOT للدلالة على "نهاية المهمة" العادية، وDSed مع ذكر سبب فشل العملية. يُخصص لكل عملية رقم مُركّب، ويمكن للمشغلين استخدام هذا الرقم لتحديد العملية المراد التحكم بها. أحد هذه الأوامر هو الأمر DS (الذي يرمز إما إلى حذف من الجدول، أو إيقاف، أو إنهاء نهائي، وذلك تبعًا لتأثير أفراد البحرية على مشاريع الحاسوب المبكرة، حسب المصدر). تُدرج المهام التي أنهاها المشغل في الإدخالات المكتملة تحت الرمز O-DS.
يمكن أيضًا إنهاء المهام بسبب أخطاء البرنامج، والتي يتم تمييزها بـ F-DS أو P-DS، لأخطاء مثل الفهرس غير الصالح ، وتجاوز السعة العددية ، وما إلى ذلك. ويمكن للمشغل سرد الإدخالات المكتملة باستخدام الأمر 'C'.
تُدرج المهام التي تنتظر موردًا ضمن قائمة المهام المنتظرة، مع ذكر سبب الانتظار. يمكن عرض جميع المهام المنتظرة باستخدام الأمر 'W'. كما يُدرج سبب الانتظار، ويمكن الاطلاع على مزيد من المعلومات حول المهمة باستخدام الأمر 'Y'. قد تكون المهمة بانتظار إدخال من المشغل، والذي يُرسل إليها عبر الأمر 'AX' (مع ملاحظة أن إدخال المشغل يختلف تمامًا عن إدخال المستخدم، والذي يكون من جهاز شبكة مزود بواجهة مستخدم رسومية).
لا تُدرج المهام التي تنتظر إدخال المستخدم أو قراءة الملفات عادةً ضمن قائمة المهام التي تنتظر تدخل المشغل. ومن أسباب انتظار المهمة أيضًا انتظارها لملف. فعندما يفتح أحد العمليات ملفًا ولا يجده، تُضاف المهمة إلى قائمة المهام التي تنتظر ملفًا معينًا. ويملك المشغل (أو المستخدم الذي يملك العملية) فرصة نسخ الملف إلى الموقع المتوقع، أو إعادة توجيه المهمة لقراءة الملف من موقع آخر، أو قد يُنشأ الملف بواسطة عملية مستقلة لم تكتمل بعد.
إذا تعذر على المشغل توفير المورد، فبإمكانه إنهاء المهمة كحل أخير. يختلف هذا عن الأنظمة الأخرى التي تُنهي المهمة تلقائيًا عند عدم توفر مورد كملف مثلاً. يوفر نظام MCP هذا المستوى من إمكانية استعادة المهام من قِبل المشغل. تُجبر الأنظمة الأخرى المبرمجين على إضافة تعليمات برمجية للتحقق من وجود الملفات قبل الوصول إليها، وبالتالي يجب كتابة تعليمات برمجية إضافية في كل حالة لتوفير إمكانية الاستعادة أو مزامنة العمليات. يمكن كتابة هذه التعليمات البرمجية في برنامج MCP عندما لا يكون من المرغوب فيه أن تنتظر المهمة، ولكن بفضل إمكانية الاستعادة على مستوى المشغل، لا يُفرض ذلك، مما يُبسط البرمجة بشكل كبير.
بالإضافة إلى إمكانية إعادة توجيه طلبات الملفات (أو قواعد البيانات) ديناميكيًا إلى ملفات (أو قواعد بيانات) أخرى، قبل أو أثناء تنفيذ البرنامج، تتوفر عدة آليات تُمكّن المبرمجين من اكتشاف الأخطاء والتعافي منها. إحدى هذه الآليات، وهي عبارة "ON"، مستخدمة منذ سنوات عديدة. يمكن سرد أخطاء محددة (مثل القسمة على صفر)، أو استخدام عبارة "anyfault" الشاملة. يتعرف المترجم على العبارة أو الكتلة البرمجية التي تلي عبارة "ON" كشفرة لمعالجة الأخطاء. أثناء التنفيذ، إذا حدث خطأ قابل للاسترداد ضمن نطاق عبارة "ON"، يتم تقليص حجم المكدس ونقل التحكم إلى العبارة التي تليه.
إحدى المشكلات المتعلقة بمنطق معالجة عبارة ON هي أنها لا تُستدعى إلا في حالة أخطاء البرنامج، وليس في حالة إنهاء البرنامج لأسباب أخرى. ومع مرور الوقت، ازدادت الحاجة إلى ضمان معالجة حالات الإنهاء غير الطبيعية. وعلى وجه الخصوص، برزت الحاجة إلى آلية تُمكّن البرامج من استدعاء الإضافات البرمجية التي كتبها العملاء أو جهات خارجية دون أي مخاطر في حال تعطل هذه الإضافات. بالإضافة إلى آليات الإضافات البرمجية العامة، يسمح الشكل الجديد لربط المكتبات الديناميكية ( مكتبات الاتصال ) للبرامج باستيراد وتصدير الدوال والبيانات، وبالتالي تشغيل برنامج ما للتعليمات البرمجية التي يوفرها برنامج آخر.
لتحقيق هذه الحماية المعززة، طُرحت آلية جديدة في منتصف التسعينيات. وفي محاولة خاطئة لتحقيق التوافق، سُميت هذه الآلية على اسم بنية لغة C++ المقترحة آنذاك والتي تحمل الاسم نفسه. ولأن بناء الجملة وسلوك كلتيهما يختلفان اختلافًا كبيرًا، فإن اختيار الاسم نفسه لم يُفضِ إلا إلى الارتباك وسوء الفهم.
من الناحية التركيبية، تبدو عبارات "try" مشابهة لعبارات "if": "try"، متبوعة بعبارة أو كتلة برمجية، ثم "else"، ثم عبارة أو كتلة برمجية أخرى. قد تتبع عبارات "else" إضافية العبارة الأولى. أثناء التنفيذ، إذا حدث أي إنهاء قابل للاسترداد في الكود الذي يلي عبارة "try"، يتم تقليص حجم المكدس إذا لزم الأمر، وينتقل التحكم إلى الكود الذي يلي عبارة "else" الأولى. بالإضافة إلى ذلك، يتم تعيين سمات لتمكين البرنامج من تحديد ما حدث ومكانه (بما في ذلك رقم السطر المحدد).
Most events that would result in task termination are recoverable. This includes stack overflow, array access out-of-bounds, integer over/under flow, etc. Operator (or user) DS is not recoverable except by privileged tasks using an UNSAFE form of try.
MCP thus provides a very fault-tolerant environment, not the crash-and-burn core dump of other systems.
As with file attributes, tasks have attributes as well, such as the task priority (which is assigned at compile time or execution time, or can be changed while the task is running), processor time, wait time, status, etc. These task attributes can be accessed programmatically as can file attributes of files. The parent task is available programmatically as a task attribute that is of type task. For example, 'myself.initiator.name' gives the name of the process that initiated the current process.
GETSPACE and FORGETSPACE are the two main procedures handling memory allocation and deallocation. Memory needs to be allocated at process initiation and whenever a block is entered that uses arrays, files, etc. GETSPACE and FORGETSPACE not only handle memory space, they also allocate or deallocate the disk space where non memory resident data may be overlaid. Memory may be SAVE (i.e., memory resident), OVERLAYABLE (i.e., virtual memory) or STICKY (meaning memory resident, but movable). They are called upon e.g. by HARDWAREINTERRUPT when a process addresses an uninitialized array or by FILEOPEN.
HARDWAREINTERRUPT handles hardware interrupts and may call upon GETSPACE, IO_FINISH or the like.
BLOCKEXIT is called upon by a task exiting a block. BLOCKEXIT may in turn call FILECLOSE, FORGETSPACE or the like while cleaning up and releasing resources declared and used within that block.
J_EDGAR_HOOVER is the main security guardian of the system, called upon at process start, file open, user log on, etc.
GEORGE is the procedure that decides which process is the next one to receive CPU resources and is thus one of the few processes that uses the MoveStack instruction.
A task goes through various states starting with NASCENT. At DELIVERY the event BIRTH is caused and the task's state changes to ALIVE. When PROCESSKILL is called upon, the state changes into DISEASED. When DEATH is caused the task gets put into the queue structure the MORGUE, after which all remaining resources are freed to the system by a process called PROCESSKILL.
While the task is ALIVE, MCP functions are run on top of that particular process, thus CPU resources are automatically charged to the task causing the MCP overhead. Also, much of the MCP work is being performed with that particular stack's security rights. Only before BIRTH and after DEATH does the MCP need to be operating out of some other stack. If none is available, the system maintains an idle stack.
مكونات ومكتبات البرامج
توفر مكتبات MCP طريقة لمشاركة البيانات والتعليمات البرمجية بين العمليات. تتناول المقالة المنشورة في مجلة Burroughs Large Systems كيفية تشغيل العمليات المترابطة بشكل غير متزامن، مما يسمح للعديد من العمليات بمشاركة البيانات المشتركة (مع آليات لتوفير تحديث متزامن). كان لا بد من كتابة هذه المجموعة من العمليات المترابطة كوحدة برمجية واحدة، حيث تعالج الإجراءات على مستويات معجمية أعلى كعمليات غير متزامنة، والتي لا تزال قادرة على الوصول إلى المتغيرات العامة والمتغيرات الأخرى على مستويات معجمية أدنى.
لقد قلبت المكتبات هذا السيناريو رأساً على عقب، وحققت المزايا التالية:
- تُكتب المكتبات والعمليات المستقلة كوحدات برمجة مستقلة
- كانت المكتبات تتحكم بشكل كامل في الوصول إلى الموارد المشتركة ( تغليف البيانات وإخفائها ) .
- يمكن كتابة المكتبات والعملاء بلغات مختلفة
- لم يكن تبديل العمليات مطلوبًا للوصول الآمن إلى البيانات
كانت آلية المكتبة نظيفة وجذرية لدرجة أن العديد من برامج النظام خضعت لإعادة كتابة رئيسية مما أدى إلى أنظمة ذات بنية أفضل وتحسينات في الأداء.
أُدخلت المكتبات إلى أنظمة MCP في أوائل ثمانينيات القرن الماضي، بعد أن طوّرها روي غوك وآخرون في شركة بوروز . وهي تُشبه إلى حد كبير أجهزة المراقبة التي ابتكرها كار هوار ، وتُتيح إمكانية التحكم في الاستبعاد المتبادل والتزامن بين عمليات العميل، باستخدام أحداث MCP وتقنية قفل داهام. تُوفر المكتبات نقاط دخول إجرائية للعميل، حيث يتم التحقق من توافق الواجهة (التحقق من جميع المعلمات وأنواع الإرجاع للإجراءات المُستوردة) قبل ربط العميل بالمكتبة. قد تُكتب المكتبة والعميل بلغات برمجة مختلفة. وتكمن الميزة في أن جميع عمليات التزامن مُضمنة في المكتبة، ولا يحتاج كود العميل إلى القلق بشأن هذا المستوى من البرمجة على الإطلاق. ينتج عن ذلك كود قوي، حيث لا يستطيع العملاء اختراق كود التزامن في المكتبة. (يُطلق البعض على هذا اسم " مبادرة الحوسبة الموثوقة ").
تُعدّ المكتبات أشكالاً أكثر تطوراً من المكتبات الموجودة في أنظمة أخرى، مثل مكتبات DLL . يمكن أن تكون مكتبات MCP "مشتركة بين الجميع"، أو "مشتركة حسب وحدة التشغيل"، أو "خاصة". الحالة الخاصة هي الأقرب إلى المكتبات الموجودة في الأنظمة الأخرى، حيث يتم استدعاء نسخة منفصلة من المكتبة لكل عميل، ولا توجد مشاركة للبيانات بين العمليات.
يُعدّ استخدام المكتبة بشكل مشترك بين الجميع أكثر إثارة للاهتمام. عند بدء تشغيل العميل، يمكنه العمل لفترة من الوقت حتى يحتاج إلى الخدمات الموجودة في المكتبة. عند أول إشارة إلى نقطة دخول المكتبة، يتم بدء الربط. إذا كانت نسخة من المكتبة قيد التشغيل بالفعل، يتم ربط العميل بتلك النسخة. جميع العملاء يتشاركون نفس النسخة.
تُعدّ آلية "المشاركة عبر وحدة التشغيل" آليةً وسيطةً بين نظامي المشاركة هذين. صُممت هذه الآلية خصيصًا للغة كوبول، حيث تُعرَّف وحدة التشغيل بأنها برنامج العميل الأصلي المُشغِّل وجميع المكتبات المرتبطة به. تحصل كل وحدة تشغيل على نسخة واحدة من المكتبة، وتحصل وحدات التشغيل المختلفة على نسخ مختلفة. هذا هو التطبيق الديناميكي الوحيد لوحدات التشغيل في كوبول.
إذا كانت هذه هي أول عملية استدعاء للمكتبة، فستقوم المكتبة بتشغيل برنامجها الرئيسي (الكتلة الخارجية في برنامج ALGOL) لتهيئة بيئتها العامة. بمجرد اكتمال التهيئة، ستُجري المكتبة عملية تجميد، وعندها ستُتاح جميع نقاط الدخول المُصدّرة للعملاء. في هذه المرحلة، يُقال إن مكدس المكتبة مُجمّد، حيث لن يتم تشغيل أي شيء آخر على هذا المكدس حتى يتم فك تجميد المكتبة، وفي هذه الحالة سيتم تشغيل رمز التنظيف والإنهاء. عندما يستدعي عميل روتينًا في مكتبة، يتم تشغيل هذا الروتين فوق مكدس العميل، حيث يتم تخزين متغيراته المحلية والمؤقتة هناك. يسمح هذا للعديد من العملاء بتشغيل نفس الروتين في نفس الوقت، حيث تتم مزامنتهم بواسطة روتين المكتبة، الذي يصل إلى البيانات في البيئة العامة لمكدس المكتبة.
يمكن أن يتخذ التجميد ثلاثة أشكال: مؤقت، ودائم، ومُتحكم به. يعني التجميد المؤقت أنه بمجرد انخفاض عدد العملاء إلى الصفر، يتم إلغاء تجميد المكتبة وإنهاؤها. أما التجميد الدائم فيعني أن المكتبة تظل متاحة للعملاء الآخرين حتى لو انخفض عدد العملاء إلى الصفر، ويمكن إلغاء تجميد المكتبات الدائمة بواسطة مُشغل باستخدام أمر THAW. بينما يعني التجميد المُتحكم به أن المكتبة تستمر في العمل فعليًا، بحيث يمكنها تنفيذ وظائف المراقبة وإجراء وظائف تهيئة البيانات وتنظيفها لكل عميل مُرتبط.
يمكن الوصول إلى المكتبات أيضًا "عن طريق العنوان" و"عن طريق الوظيفة". في حالة "عن طريق العنوان"، يُحدد العميل اسم ملف المكتبة. أما "عن طريق الوظيفة" فهي طريقة غير مباشرة، حيث يُحدد العميل اسم وظيفة المكتبة، على سبيل المثال "system_support"، ويتم العثور على الموقع الفعلي للمكتبة في جدول مُعدّ مسبقًا بواسطة مُشغل باستخدام أوامر "SL" (مكتبة النظام)، على سبيل المثال "SL system_support = *system/library/support". كما أن خاصية التسامح مع الأخطاء في MCP تعمل هنا أيضًا؛ فإذا حاول عميل الوصول إلى مكتبة غير موجودة، يُضاف إلى قائمة المهام "المنتظرة"، ويمكن توفير المكتبة لاحقًا، أو إعادة توجيه الطلب.
يمكن أيضًا تحديث المكتبات أثناء التشغيل، كل ما عليك فعله هو تثبيت الإصدار الجديد. ستستمر البرامج قيد التشغيل في استخدام الإصدار القديم حتى يتم إيقافها، وسيتم توجيه البرامج الجديدة إلى الإصدار الجديد.
تُطبّق مكتبات الدوال ميزة أمان بالغة الأهمية، وهي فئات الربط. جميع المكتبات العادية لها فئة ربط صفر. قد لا تكون المكتبات التي يستخدمها MCP أو وحدات النظام الأخرى ذات الامتيازات قابلة للاستخدام من البرامج العادية. يتم الوصول إليها بواسطة الدوال وتُفرض عليها فئة الربط واحد. لا يمكن لعميل في فئة الربط صفر الربط بنقاط دخول فئة الربط واحد. يمكن لمكتبة ذات فئة ربط واحد، والتي تحتاج إلى توفير نقاط دخول للبرامج العادية، القيام بذلك إذا تم تصنيفها على أنها "موثوقة". يمكنها توفير نقاط دخول مُحددة في فئة الربط صفر.
تم تنفيذ نظام قاعدة البيانات بالكامل باستخدام مكتبات توفر وصولاً فعالاً ومخصصاً للغاية إلى قواعد البيانات المشتركة بين العديد من العملاء. وينطبق الأمر نفسه على جميع وظائف الشبكات والخصائص الداخلية للنظام.
في منتصف التسعينيات، ظهر نوع جديد من المكتبات: مكتبات الاتصال. وهي عبارة عن برامج مستقلة بذاتها، قادرة على العمل بشكل منفصل، بالإضافة إلى استيراد وتصدير البيانات والوظائف إلى برامج أخرى ضمن مصفوفات من كتل البنية. على سبيل المثال، يتوفر مكون الشبكات في نظام التشغيل كمكتبة اتصال، مما يسمح للبرامج الأخرى باستخدام خدماته من خلال استيراد وتصدير الوظائف. عند الربط، يحصل كل عميل على كتلة بنية مخصصة لحفظ معلومات الحالة. قد يستورد برنامج يستخدم الشبكة وظيفة كتابة الشبكة ويصدر وظيفة قراءة الشبكة. بالتالي، عند فتح اتصال شبكة (باستخدام بروتوكول TCP مثلاً )، وعند وصول البيانات للقراءة، يمكن لمكون الشبكات استدعاء وظيفتك مباشرةً لاستهلاكها، دون الحاجة إلى نسخ البيانات أولاً إلى مخزن مؤقت أو تبديل السياق . وبالمثل، يمكنك كتابة البيانات إلى الشبكة عن طريق استدعاء وظيفة كتابة الشبكة مباشرةً.
تتيح مكتبات الاتصال درجة عالية من التحكم في الروابط. يمكن لكل طرف من أطراف الرابط الموافقة عليه أو قطعه متى شاء. كما يمكن إدارة حالة كل رابط على حدة، بالإضافة إلى إدارة الحالة العامة.
ملفات المنافذ
تُعدّ ملفات المنافذ تقنية أخرى للتواصل بين العمليات (IPC) . وهي تُشبه أنابيب يونكس ، إلا أنها مُعمّمة لتكون متعددة الاتجاهات وثنائية الاتجاه. ونظرًا لأنها أبطأ بعشر مرات من تقنيات IPC الأخرى، مثل المكتبات، فمن الأفضل استخدام تقنيات أخرى عندما يكون التواصل بين العمليات المختلفة على نفس الجهاز.
لذا، يُعدّ استخدام ملفات المنافذ الأمثل في مجال الاتصال بين العمليات الموزعة. وقد طُرحت ملفات المنافذ مع بنية شبكة بوروز (BNA)، ولكن مع ظهور تقنيات الشبكات القياسية مثل TCP / IP ، أصبح بالإمكان استخدامها مع هذه الشبكات أيضاً.
يُنشئ الخادم الذي يستمع للاتصالات الواردة ملفًا للمنافذ (ملفًا يحمل السمة KIND بقيمة PORT). كل اتصال يتم من عميل يُنشئ ملفًا فرعيًا بفهرس، لذا يُمثل كل ملف منافذ اتصالات متعددة مع عملاء مختلفين على الشبكة.
يستقبل خادم البرنامج طلبات العملاء من أي مكان على الشبكة عن طريق قراءة ملف المنفذ (الملف الفرعي = 0 للقراءة من أي ملف فرعي). ثم يرسل استجابة إلى العميل الذي أرسل الطلب عن طريق الكتابة إلى الملف الفرعي المحدد الذي تمت قراءة الطلب منه.
بيئة التشغيل
توفر منصة التحكم متعددة الوظائف (MCP) بيئة تشغيل متطورة وبسيطة في الوقت نفسه. في المنشآت الكبيرة، قد يتطلب الأمر وجود العديد من المشغلين لتوفير الموارد المادية، مثل الطابعات (تحميل الورق، خراطيش الحبر، إلخ). أما في البيئات منخفضة التكلفة، كالمكاتب الصغيرة أو المستخدمين الأفراد، فقد يتطلب الأمر بيئة تشغيل لا تحتاج إلى مشغل (خاصةً عند استخدام أجهزة الكمبيوتر المحمولة).
تحتوي الأنظمة الكبيرة على محطات تشغيل مخصصة تُسمى محطات عرض المشغل (ODTs)، وعادةً ما تُحفظ في بيئة آمنة. أما بالنسبة للأنظمة الصغيرة، فيمكن التحكم في الآلات من أي محطة (شريطة أن تتمتع المحطة والمستخدم بالصلاحيات الكافية) باستخدام برنامج MARC (التحكم في الموارد بمساعدة القوائم). كما يمكن للمستخدمين الملمين بأوامر المشغل استخدام أوامر المشغل.
تتكون أوامر المشغل في الغالب من حرفين (كما هو الحال في أنظمة يونكس)، وبعضها من حرف واحد فقط. هذا يعني ضرورة تعلم واجهة المشغل، لكنها فعالة للغاية للمشغلين ذوي الخبرة الذين يديرون نظام حاسوب مركزي كبير بشكل يومي. الأوامر غير حساسة لحالة الأحرف.
تُدخل المهام في برنامج "mix" وتُعرّف بأرقام "mix"، وكذلك المكتبات. لتشغيل برنامج، يمكن للمشغلين استخدام الأمر "EX" أو "RUN" متبوعًا باسم ملف البرنامج. تُشغّل جداول البيانات التشغيلية (ODTs) عادةً باستخدام وضع العرض التلقائي (ADM)، وهو عرض قابل للتخصيص لحالة النظام، مُعدّ عادةً لعرض إدخالات "mix" النشطة والمنتظرة والمكتملة، بالإضافة إلى رسائل النظام للمشغل للإشعارات أو الحالات التي تتطلب تدخله.
يتم تقديم القائمة الكاملة لهذه الشاشات بواسطة 'A' (نشط)، 'W' (في الانتظار)، 'C' (مكتمل)، و'MSG' (أوامر الرسائل).
إذا أصبحت مهمة ما بانتظار إجراء من المشغل، فيمكن للمشغل معرفة متطلبات المهمة بإدخال رقمها التسلسلي متبوعًا بالأمر "Y". (لاحظ أسلوب كتابة الأوامر الموجه للكائنات، حيث يتم تحديد الكائن أولًا، ثم الأمر). على سبيل المثال، "3456Y".
يمكن للمشغل إجبار مهمة على الدخول في قائمة الانتظار باستخدام أمر الإيقاف '3456ST' وإعادة تنشيطها باستخدام الأمر OK: '3456OK'. ويمكن استخدام الأمر OK أيضًا عندما يُتيح المشغل موردًا لمهمة ما، مع العلم أنه في أغلب الأحيان، سيكتشف نظام إدارة العمليات (MCP) توفر الموارد، مما يُفعّل الحدث الذي كانت العمليات تنتظره دون أي تدخل إضافي من المشغل. ولمرور معلومات نصية من المشغل إلى البرنامج، يمكن استخدام أمر القبول '3456AX MORE INFO'. ويمكن للبرامج تمرير المعلومات إلى المشغلين باستخدام آلية العرض (DISPLAY)، مما يؤدي إلى إضافة رسائل العرض إلى شاشة عرض الرسائل (MSG).
إلى جانب المهام والعمليات، يتمتع المشغلون أيضًا بالتحكم في الملفات. يمكن عرض الملفات باستخدام الأمر FILE، ونسخها باستخدام الأمر COPY، وحذفها باستخدام الأمر REMOVE، وإعادة تسميتها.
بيئة تشغيل نظام التحكم في العمليات (MCP) قوية وبسيطة في نفس الوقت، وعادةً ما تتطلب جزءًا صغيرًا فقط من عدد المشغلين المطلوبين للأنظمة الأخرى.
تُعد لغة سير العمل عالية المستوى جزءًا مهمًا من بيئة العمليات .
قطع الأشجار
يتم تسجيل جميع الإجراءات في النظام ، مثل جميع الرسائل المعروضة للمشغل، وجميع إجراءات المشغل. كما يتم تسجيل جميع إجراءات البرنامج المهمة اختيارياً في سجل النظام وسجل البرنامج، مثل BOJ لبدء مهمة WFL، وBOT لبدء مهمة داخل مهمة WFL، وEOT وEOJ لنهاية المهام والوظائف . بالإضافة إلى ذلك، يمكن تسجيل جميع عمليات فتح وإغلاق الملفات وقواعد البيانات. يُسهم تسجيل العديد من الأحداث في بطء بيئة تشغيل MCP مقارنةً بأنظمة مثل Unix ، حيث يتم تسجيل كل شيء مع كتابة فعلية إجبارية إلى سجل البرنامج بعد كل سجل، وهو ما لا تفعله أنظمة مثل Unix، على الرغم من أنها تحتفظ أيضاً بالعديد من الأشياء في سجلات النظام.
يمكن استخدام سجلات النظام في التحليل الجنائي الرقمي لمعرفة أسباب تعطل البرامج أو الأنظمة، أو للكشف عن محاولات اختراق أمن النظام . تُغلق سجلات النظام تلقائيًا بعد فترة زمنية محددة من قِبل النظام، ثم تُفتح سجلات جديدة. تحتوي سجلات النظام على كم هائل من المعلومات، والتي يمكن تصفيتها وتحليلها باستخدام برامج مثل LOGANALYZER.
يقوم برنامج DUMPANALYZER بتحليل ملفات تفريغ الذاكرة التي كُتبت أصلاً على شريط. وبما أن جميع المترجمات تضيف معلومات السطر (LINEINFO) إلى ملفات التعليمات البرمجية، فإن برنامج DUMPANALYZER قادر على تحديد عبارة المصدر التي كانت قيد التنفيذ وقت حدوث الخطأ بدقة.
كما أن عملية تفريغ البرنامج العادية، حيث يتم تفريغ برنامج واحد فقط، تحتوي على معلومات حول رقم تسلسل التعليمات البرمجية المصدرية وأسماء المتغيرات.
يُعدّ هذان الجهازان التحليليان أداتين تشخيصيتين رئيسيتين لجميع أنواع الأغراض.
الابتكارات
إلى جانب الابتكارات التقنية العديدة في تصميم نظام MCP، تميزت أنظمة Burroughs الكبيرة بالعديد من الابتكارات الإدارية التي يستخدمها مجتمع الإنترنت على نطاق واسع. تم شحن برمجيات النظام إلى العملاء متضمنةً شفرة المصدر وجميع أدوات التحرير والتجميع اللازمة لإنشاء إصدارات جديدة من MCP. اكتسب العديد من العملاء خبرة متخصصة في آليات عمل MCP، وكثيراً ما كانوا يرسلون "التصحيحات" (أجزاء من شفرة المصدر مع أرقام تسلسلية) كمقترحات لميزات محسّنة جديدة أو تصحيحات للأعطال (تقارير الأعطال الميدانية). قام مطورو الأنظمة بتضمين العديد من التصحيحات المقترحة ودمجها في الإصدار التالي من MCP. إن إشراك مجتمع من الخبراء المتطوعين، الذين يدّعون الخبرة بأنفسهم، في العمل التقني السائد، أصبح ممارسة شائعة الآن، وهو جوهر الابتكار المفتوح . يعود تاريخ هذا الابتكار الإداري لتنمية المجتمع إلى سبعينيات القرن الماضي.
المترجمون
لقد مرّت شركة Unisys MCP بعدة أجيال من المترجمات عبر تاريخها، والتي تدعم مجموعة واسعة من لغات البرمجة ، بما في ذلك:
- ALGOL ، [ 6 ] بما في ذلك DCALGOL و BDMSALGOL و DMALGOL.
- ج [ 7 ]
- COBOL والتي تشمل COBOL74 [ 8 ] و COBOL85 [ 9 ]
- Fortran77 [ 10 ]
- NEWP [ 11 ]
- باسكال [ 12 ]
- لعبة تقمص الأدوار [ 13 ]
وتشمل المنتجات الأخرى ما يلي:
كانت هناك مترجمات سابقة للغات ESPOL و COBOL (68) و Fortran (66) و APL و PL/I .
مُجمِّع
لا يوجد برنامج تجميع على نظام التشغيل Unisys MCP.
ملخص
كان نظام التشغيل MCP أول نظام تشغيل يُطوَّر حصريًا بلغة برمجة عالية المستوى. وعلى مدار تاريخه الممتد لخمسين عامًا، حقق العديد من الإنجازات الرائدة في التطبيقات التجارية، بما في ذلك الذاكرة الافتراضية، والمعالجة المتعددة المتناظرة ، ولغة التحكم في المهام عالية المستوى (WFL). لطالما امتلك النظام العديد من الميزات التي بدأت بالظهور مؤخرًا في أنظمة تشغيل أخرى واسعة الانتشار، وبالتكامل مع بنية Burroughs Large Systems، يوفر MCP بيئة آمنة للغاية وعالية الأداء لمعالجة المهام المتعددة والمعاملات.
مراجع
- ↑ "برنامج ClearPath MCP: إعلان إصدار برنامج ClearPath MCP 21.0" (ملف PDF) . يونيسيس . مايو 2021. تاريخ الاسترجاع: 14 أغسطس 2021 .
- ↑ "كتيب معلومات Burroughs B5000" .
- ↑ كان الشكل الشائع للبرامج هو وجود المصادر على شريط أو قرص مضغوط، وعادةً ما كان عليك إعادة تجميعها لتتوافق مع جهازك من المصادر المشتركة المستقلة عن الجهاز. وهذا يختلف تمامًا عن التوزيع الشائع للملفات الثنائية من قِبل شركة IBM وغيرها، التي كانت تحافظ عادةً على سرية هذه البرامج على مستوى المصدر. كان هذا ضروريًا بالفعل، لأنه الوسيلة التي تسمح للبرنامج بمراعاة الاختلافات المحلية في الأجهزة، وما إلى ذلك.
- ↑ كنوت، دونالد إرفين (2019-08-03). "فن برمجة الحاسوب (TAOCP)، الطبعة الثانية، 1973" . مؤرشف من الأصل في 2019-08-03 . تم الاطلاع عليه في 2018-02-06 .
- ↑ "مجموعة الحواسيب المركزية الستة" .
- ↑ شركة يونيسيس (2008). دليل مرجعي لبرمجة ALGOL، المجلد 1. (منشور يونيسيس رقم 86000098). https://public.support.unisys.com/aseries/docs/ClearPath-MCP-21.0/86000098-519/86000098-519.pdf
- ↑ شركة يونيسيس (2008). دليل مرجعي لبرمجة لغة C، المجلد 1. (منشور يونيسيس رقم 8600 2268). https://public.support.unisys.com/aseries/docs/ClearPath-MCP-21.0/86002268-209/index.html
- ↑ شركة يونيسيس (2008). دليل مرجعي لبرمجة كوبول ANSI-74، المجلد 1. (منشور يونيسيس رقم 86000296). https://public.support.unisys.com/aseries/docs/ClearPath-MCP-19.0/86000296-211.pdf
- ↑ شركة يونيسيس (2009). دليل مرجعي لبرمجة COBOL ANSI-85، المجلد 1. (منشور يونيسيس 8600 1518). https://public.support.unisys.com/aseries/docs/ClearPath-MCP-20.0/86001518-319.pdf
- ↑ شركة يونيسيس (2008). دليل مرجعي لبرمجة فورتران 77. (منشور يونيسيس رقم 39576053). https://public.support.unisys.com/aseries/docs/ClearPath-MCP-19.0/39576053-004.pdf
- ↑ شركة يونيسيس (2008). دليل مرجعي لبرمجة NEWP . (منشور يونيسيس 8600 2003). https://public.support.unisys.com/aseries/docs/ClearPath-MCP-21.0/86002003-409.pdf
- ↑ شركة يونيسيس (2009). دليل مرجعي لبرمجة باسكال، المجلد 1. (منشور يونيسيس رقم 8600 0080). https://public.support.unisys.com/aseries/docs/ClearPath-MCP-21.0/86000080-105.pdf
- ↑ شركة يونيسيس (2008). دليل برمجة مولد برامج التقارير (RPG)، المجلد 1. (منشور يونيسيس رقم 8600 0544). https://public.support.unisys.com/aseries/docs/ClearPath-MCP-21.0/86000544-105.pdf
- ↑ شركة يونيسيس (2009). دليل مرجعي لبرمجة Binder . (منشور يونيسيس 8600 0304). https://public.support.unisys.com/aseries/docs/ClearPath-MCP-21.0/86000304-309.pdf
- ↑ دليل برامج نظام Burroughs B6700/B7700 (النموذج رقم 5000722)
- ↑ شركة يونيسيس (2009). دليل مرجعي لبرمجة لغة سير العمل (WFL) . (منشور يونيسيس 8600 1047). https://www.support.unisys.com/aseries/docs/ClearPath-MCP-21.0/86001047-518/chapter-000002117.html
روابط خارجية
- وثائق MCP 21.0 – الوصول مجاني ولكن قد يتطلب الإقرار بحقوق النشر
- حواسيب بوروز المركزية
- أنظمة تشغيل احتكارية
- أنظمة التشغيل ذات المشاركة الزمنية
- أنظمة تشغيل يونيسيس
- برنامج عام 1961
- مقدمات متعلقة بالحاسوب في عام 1961
