برنامج إنهاء الإقامة والبقاء فيها
برنامج الإنهاء والبقاء في الذاكرة (يُشار إليه اختصارًا بـ TSR ) هو برنامج حاسوبي يعمل ضمن نظام DOS ، ويستخدم استدعاءً نظاميًا لإعادة التحكم إلى DOS كما لو أنه قد انتهى، ولكنه يبقى في ذاكرة الحاسوب ليتم إعادة تنشيطه لاحقًا. [ 1 ] وقد تغلبت هذه التقنية جزئيًا على قيد DOS المتمثل في تنفيذ برنامج واحد فقط، أو مهمة واحدة ، في كل مرة. تُستخدم برامج TSR فقط في نظام DOS، وليس في نظام Windows .
بعض برامج تشغيل الأجهزة (TSRs) هي برامج مساعدة قد يستدعيها مستخدم الكمبيوتر عدة مرات في اليوم، أثناء العمل على برنامج آخر، باستخدام مفتاح اختصار . وكان برنامج Borland Sidekick مثالًا مبكرًا وشائعًا على هذا النوع. بينما تعمل برامج أخرى كبرامج تشغيل للأجهزة التي لا يدعمها نظام التشغيل بشكل مباشر.
يستخدم
عادةً، لا يستطيع نظام التشغيل DOS تشغيل سوى برنامج واحد في كل مرة. عند انتهاء البرنامج، يُعيد التحكم إلى DOS باستخدام استدعاء النظام INT 21h/4Ch من واجهة برمجة تطبيقات DOS . [ 2 ] تُعلّم موارد الذاكرة والنظام المستخدمة على أنها غير مستخدمة. هذا يجعل من المستحيل إعادة تشغيل أجزاء من البرنامج دون إعادة تحميله بالكامل. مع ذلك، إذا انتهى البرنامج باستخدام استدعاء النظام INT 27h أو INT 21h/31h ، فإن نظام التشغيل لا يُعيد استخدام جزء مُحدد من ذاكرته.
يُطلق على الاستدعاء الأصلي، INT 27h ، اسم "إنهاء مع بقاء العملية مقيمة"، ومن هنا جاء اسم "TSR". باستخدام هذا الاستدعاء، يمكن للبرنامج أن يجعل ما يصل إلى 64 كيلوبايت من ذاكرته مقيمة. قدم نظام MS-DOS الإصدار 2.0 استدعاءً مُحسَّنًا، INT 21h/31h ("إبقاء العملية")، والذي أزال هذا القيد وسمح للبرنامج بإرجاع رمز خروج . قبل إجراء هذا الاستدعاء، يمكن للبرنامج تثبيت معالج مقاطعة واحد أو أكثر يشير إلى نفسه، بحيث يمكن استدعاؤه مرة أخرى. يسمح تثبيت متجه مقاطعة الأجهزة لهذا البرنامج بالاستجابة لأحداث الأجهزة. يسمح تثبيت متجه مقاطعة البرامج باستدعائه بواسطة البرنامج قيد التشغيل حاليًا. يسمح تثبيت معالج مقاطعة المؤقت لـ TSR بالعمل بشكل دوري (باستخدام مؤقت فاصل زمني قابل للبرمجة ).
تتضمن الطريقة المعتادة لاستخدام متجه المقاطعة قراءة قيمته الحالية (العنوان)، وتخزينها في مساحة ذاكرة مسجل المقاطعة (TSR)، واستبدالها بعنوان في شيفرته البرمجية. يُستدعى العنوان المخزن من مسجل المقاطعة، مما يُشكل فعليًا قائمة مرتبطة أحادية من معالجات المقاطعة ، والتي تُسمى أيضًا إجراءات خدمة المقاطعة (ISRs). تُسمى عملية تثبيت إجراءات خدمة المقاطعة هذه بتسلسل أو ربط المقاطعة أو متجه المقاطعة.
يمكن تحميل برامج تشغيل الأجهزة (TSRs) في أي وقت؛ إما أثناء بدء تشغيل نظام DOS (على سبيل المثال، من ملف AUTOEXEC.BAT )، أو بناءً على طلب المستخدم (على سبيل المثال، برنامج Sidekick وTurbo Debugger من Borland ، وبرنامج QuickPay من Quicken، وبرنامج Personal Calendar من FunStuff Software). تستخدم أجزاء من نظام DOS نفسه هذه التقنية، خاصةً في الإصدارات 5.0 والإصدارات الأحدث. على سبيل المثال، يتم تثبيت محرر سطر الأوامر DOSKEY والعديد من الأدوات المساعدة الأخرى عن طريق تشغيلها من سطر الأوامر (يدويًا، أو من ملف AUTOEXEC.BAT ، أو من خلال ملف CONFIG.SYS ) بدلاً من تحميلها كبرامج تشغيل أجهزة من خلال أوامر في ملف CONFIG.SYS.INSTALLDEVICE
بعض برامج TSR لا تملك آلية لإلغاء تحميلها، لذا تبقى في الذاكرة حتى إعادة التشغيل. مع ذلك، يُمكن إلغاء تحميلها خارجيًا باستخدام أدوات مثل MARK.EXE / RELEASE.EXE من TurboPower Software أو إعادة تشغيل برامج TSR التي تلتقط ضغطة مفتاح محددة وتُحرر جميع برامج TSR المُحمّلة بعدها. ولأن سلسلة برامج ISR مرتبطة بشكل فردي، وقد يُخزّن برنامج TSR رابط البرنامج السابق في أي مكان يختاره، فلا توجد طريقة عامة لإلغاء تحميل برنامج TSR من السلسلة. لذا، عادةً ما يُترك جزء صغير من البرنامج في الذاكرة عند إلغاء تحميل برنامج TSR، مما يُسبب تجزئة الذاكرة. وقد أدت هذه المشكلة إلى ظهور أُطر عمل تعاون برامج TSR مثل TesSeRact وAMIS. [ 3 ]
ألهمت مشاهدة برنامج TSR آندي هيرتزفيلد لإنشاء برنامج Switcher لنظام التشغيل MacOS الكلاسيكي . [ 4 ]
مقاطعة المشاركة
لمعالجة مشاكل مشاركة العديد من سجلات المعاملات (TSRs) لنفس المقاطعة، اقترح رالف د. براون طريقة تُسمى مواصفات المقاطعة المتعددة البديلة (AMIS) كتحسين للخدمات المستخدمة سابقًا عبر INT 2Fh. توفر AMIS طرقًا لمشاركة مقاطعات البرامج بطريقة مُحكمة. وهي مُصممة على غرار بروتوكول مشاركة المقاطعات من IBM، الذي صُمم في الأصل لمشاركة مقاطعات الأجهزة لمعالج x86. تتوفر خدمات AMIS عبر Int 2Dh. [ 5 ]
لم يحظَ هذا الاقتراح بقبول واسع النطاق بين المبرمجين في أيامه. فقد وُجد إلى جانب العديد من المواصفات المنافسة الأخرى ذات مستويات متفاوتة من التعقيد. [ 6 ]
الأعطال
على الرغم من فائدتها الكبيرة، بل وضرورتها أحيانًا، للتغلب على قيود نظام التشغيل DOS ، إلا أن برامج TSR تُعرف بمشاكلها. إذ يقوم العديد منها بالسيطرة على نظام التشغيل بطرق مختلفة، موثقة وغير موثقة، مما يؤدي غالبًا إلى تعطل الأنظمة عند تفعيلها أو تعطيلها عند استخدامها مع تطبيقات معينة أو برامج TSR أخرى.
من خلال ربط متجهات المقاطعة، تستطيع برامج TSR السيطرة الكاملة على الحاسوب. ويمكن أن تتخذ برامج TSR أحد سلوكين:
- تحكم بشكل كامل في المقاطعة عن طريق عدم استدعاء برامج TSR الأخرى التي قامت سابقًا بتغيير متجه المقاطعة نفسه .
- يمكن ربط هذه العمليات مع عمليات TSR أخرى عن طريق استدعاء متجه المقاطعة القديم. ويمكن القيام بذلك قبل أو بعد تنفيذ التعليمات البرمجية الخاصة بها. وبهذه الطريقة، يمكن لعمليات TSR تشكيل سلسلة حيث تستدعي كل منها العملية التالية.
تستخدم معظم فيروسات DOS وغيرها من البرامج الضارة أسلوب "الإنهاء والبقاء في النظام" ، حيث يمكنها إما السيطرة على جهاز الكمبيوتر أو البقاء في الخلفية. وتستطيع هذه البرامج الضارة التفاعل مع عمليات الإدخال/الإخراج للقرص أو أحداث التشغيل عن طريق إصابة الملفات التنفيذية (.EXE أو .COM) عند تشغيلها، وملفات البيانات عند فتحها.
بالإضافة إلى ذلك، وبدون استخدام مُوسِّع DOS ، يجب تحميل جميع برامج DOS في أول 640 كيلوبايت من ذاكرة الوصول العشوائي ( الذاكرة التقليدية )، حتى على أجهزة الكمبيوتر ذات سعة ذاكرة الوصول العشوائي الكبيرة . ولا تُستثنى من ذلك برامج TSR، إذ تستحوذ على أجزاء من تلك الـ 640 كيلوبايت، ما يجعلها غير متاحة للتطبيقات الأخرى. هذا يعني أن كتابة برنامج TSR كانت تحديًا يتمثل في تحقيق أصغر حجم ممكن له، والتحقق من توافقه مع العديد من البرامج من مختلف الموردين، وهي مهمة غالبًا ما تكون مُرهِقة. ونظرًا لاستدعائها مباشرةً من بيئة DOS، لا يُمكن لبرامج TSR عمليًا الاستفادة من مُوسِّعات DOS ، وبالتالي يجب أن تكون موجودة في الذاكرة التقليدية.
في أواخر الثمانينيات وأوائل التسعينيات، واجهت العديد من ألعاب الفيديو على منصة الحاسوب الشخصي حدًا أقصى لذاكرة الوصول العشوائي (RAM)، مما قلل المساحة المتاحة لبرامج TSR، حتى الأساسية منها مثل برامج تشغيل أقراص CD-ROM . وأصبح تنظيم الأمور بحيث تتوفر ذاكرة RAM كافية لتشغيل الألعاب مع الحفاظ على برامج TSR الضرورية أمرًا بالغ التعقيد. كان لدى العديد من اللاعبين عدة أقراص تمهيد بتكوينات مختلفة لألعاب مختلفة. في الإصدارات اللاحقة من نظام MS-DOS، سمحت نصوص "قائمة التمهيد" باختيار تكوينات متنوعة عبر إدخال واحد في القائمة. في منتصف التسعينيات وحتى أواخرها، وبينما كانت العديد من الألعاب لا تزال تُكتب لنظام DOS، تم التغلب على حد 640 كيلوبايت في النهاية عن طريق وضع أجزاء من بيانات اللعبة فوق أول 1 ميجابايت من الذاكرة، واستخدام الكود الموجود أسفل 640 كيلوبايت للوصول إلى الذاكرة الموسعة باستخدام تقنية التراكب . وكان هناك نهج بديل لاحق يتمثل في تحويل وحدة المعالجة المركزية إلى الوضع المحمي باستخدام موسعات DOS وتشغيل البرنامج في هذا الوضع. وقد سمح الأخير بوضع التعليمات البرمجية والبيانات في منطقة الذاكرة الموسعة.
نظرًا لأن البرمجة باستخدام العديد من الطبقات المتراكبة تُمثل تحديًا بحد ذاتها، فعندما يتجاوز حجم البرنامج 512 كيلوبايت، كان استخدام الذاكرة الموسعة يتم غالبًا عبر مُوسِّع DOS تابع لجهة خارجية يُطبِّق بروتوكولي VCPI أو DPMI ، إذ يُصبح الوصول إلى الذاكرة التي تتجاوز 1 ميجابايت أسهل وأسرع، ويُمكن تشغيل التعليمات البرمجية في تلك المنطقة، عند تحويل معالج x86 من الوضع الحقيقي إلى الوضع المحمي . مع ذلك، ولأن نظام DOS ومعظم برامجه تعمل في الوضع الحقيقي (يجعل بروتوكولا VCPI أو DPMI برنامج الوضع المحمي يبدو كبرنامج الوضع الحقيقي لنظام DOS وبقية النظام من خلال التبديل بين الوضعين)، فإن سجلات TSR الخاصة بنظام DOS وبرامج تشغيل الأجهزة تعمل أيضًا في الوضع الحقيقي، وبالتالي، في كل مرة يستحوذ أحدهما على التحكم، يتعين على مُوسِّع DOS العودة إلى الوضع الحقيقي حتى يتخلى عن التحكم، مما يُؤدي إلى تأخير زمني (إلا إذا استخدم تقنيات مثل DPMS أو CLOAKING ) .
يعود
مع ظهور لوحات الذاكرة الموسعة ، وخاصة معالجات إنتل 80386 في النصف الثاني من ثمانينيات القرن الماضي، أصبح من الممكن استخدام ذاكرة تزيد سعتها عن 640 كيلوبايت لتحميل سجلات المعاملات (TSRs). تطلب ذلك حلول برمجية معقدة تُعرف باسم مديري الذاكرة الموسعة . من بين مديري الذاكرة: QRAM و QEMM من شركة Quarterdeck ، و 386 MAX من شركة Qualitas ، وCEMM من شركة Compaq ، ولاحقًا EMM386 من شركة Microsoft . تُسمى مناطق الذاكرة القابلة للاستخدام لتحميل سجلات المعاملات التي تزيد سعتها عن 640 كيلوبايت " كتل الذاكرة العليا " (UMBs)، ويُطلق على تحميل البرامج فيها اسم التحميل العالي . لاحقًا، بدأت مديري الذاكرة بتضمين برامج مثل Optimize من شركة Quarterdeck أو MEMMAKER من شركة Microsoft، والتي تسعى إلى زيادة المساحة المتاحة في أول 640 كيلوبايت إلى أقصى حد من خلال تحديد أفضل طريقة لتخصيص سجلات المعاملات بين الذاكرة المنخفضة والعالية.
انخفاض
مع تطور الألعاب التي تستخدم موسعات DOS (ومن الأمثلة المبكرة عليها لعبة Doom ) والتي تجاوزت حاجز 640 كيلوبايت، اختفت العديد من المشكلات المتعلقة بـ TSRs. ومع الانتشار الواسع لنظام التشغيل مايكروسوفت ويندوز ، وخاصة ويندوز 95 (ثم ويندوز 98 ) - مما جعل معظم TSRs غير ضرورية وبعضها غير متوافق - تلاشت TSRs تدريجيًا حتى أصبحت قديمة، على الرغم من أن تطبيقات ويندوز 16 يمكنها القيام بحيل مشابهة لـ TSRs مثل تعديل جدول وصف المقاطعات (IDT) لأن ويندوز يسمح بذلك. لا يسمح ويندوز Me للكمبيوتر بالتمهيد إلى نواة DOS عن طريق إيقاف تشغيل ويندوز Me؛ وبالتالي أصبحت TSRs عديمة الفائدة على ويندوز Me.
حلت سلسلة أنظمة التشغيل Windows NT (بما في ذلك Windows 2000 و Windows XP والإصدارات اللاحقة) محل نظام DOS تمامًا، حيث تعمل في الوضع المحمي أو الوضع الطويل (في الإصدارات اللاحقة ذات 64 بت فقط) بشكل دائم، مما يعطل إمكانية التبديل إلى الوضع الحقيقي، وهو أمر ضروري لعمل سجلات المعاملات المؤقتة (TSRs). وبدلاً من ذلك، تتميز هذه الأنظمة بأطر عمل حديثة لبرامج التشغيل والخدمات مع حماية للذاكرة وتعدد مهام استباقي ، مما يسمح بتشغيل برامج متعددة وبرامج تشغيل أجهزة في وقت واحد دون الحاجة إلى حيل برمجية خاصة؛ وقد أصبحت النواة ووحداتها مسؤولة حصريًا عن تعديل جدول المقاطعات.
انظر أيضاً
- Daemon (Unix)
- ملحقات مكتبية
- خدمات الوضع المحمي لـ DOS / DPMS
- ملحق (نظام التشغيل ماك)
- ملحق النظام المقيم / RSX (CP/M)
- خدمة ويندوز
مراجع
- ↑ مايبوري، ريك (1998). "التغلب على الفيروسات - فيروسات الحاسوب" . نصائح أساسية للحاسوب . مؤرشف من الأصل في 28 سبتمبر 2009. تم الاطلاع عليه في 9 فبراير 2012 .
- ↑ مرجع HelpPC. "INT 21,0 - إنهاء البرنامج" . تم الاسترجاع بتاريخ 2025-07-07 .
- ↑ "قائمة بمكتبات TSR" . مؤرشفة من الأصل بتاريخ 17-08-2007.تُعرف أيضاً باسم الأطر.
- ↑ "واجهة مستخدم ماك :: تبديل تطبيقات ماك" . macgui.com . تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
- ↑ "int 2D" . مؤرشف من الأصل بتاريخ 2017-12-01 . تم الاطلاع عليه بتاريخ 2019-11-14 .
- ↑ "مكتبات TSR" . 19-06-2016. مؤرشف من الأصل في 19-06-2016 . تم الاطلاع عليه في 14-11-2019 .
روابط خارجية
- إصدار مبكر من TSR
- الأسئلة الشائعة حول comp.os.msdos.programmer – كيف يمكنني كتابة أداة TSR (الإنهاء والبقاء في مكانه)؟
- كتاب "من الألف إلى الياء في لغة C" ؛ كتاب مجاني عن برمجة DOS بلغة C؛ الفصل 27 - "برمجة TSR" (PDF) . (80 كيلوبايت)
- بروتوكول مشاركة المقاطعات من شركة IBM ، ملف مضغوط (zip)، 6.5 كيلوبايت ( Simtel )
- مواصفات مقاطعة الإرسال المتعدد البديل (AMIS)، الإصدار 3.5 (ملف مضغوط)
- AMISLIB – مكتبة وظائف لكتابة برامج TSR ذاتية التحميل وقابلة للإزالة بلغة التجميع (ملف مضغوط)
- تقنية DOS
- إدارة الذاكرة في نظام التشغيل DOS
