برنامج Daemon (الحوسبة)

في مجال الحوسبة ، يُعرف البرنامج الخفي (daemon) بأنه برنامج يعمل كعملية خلفية ، بدلاً من أن يكون تحت سيطرة المستخدم التفاعلية المباشرة. جرت العادة على تسمية عملية البرنامج الخفي بالحرف "d" كلاحقة للدلالة على أنها برنامج خفي. على سبيل المثال، syslogd هو برنامج خفي يُنفذ وظيفة تسجيل النظام، و sshd هو برنامج خفي يُدير اتصالات SSH الواردة.
على الرغم من إمكانية تطبيق هذا المفهوم على العديد من أنظمة الحوسبة، إلا أن مصطلح "الخادم" يُستخدم حصراً تقريباً في سياق الأنظمة القائمة على نظام يونكس . وفي سياقات أخرى، تُستخدم مصطلحات مختلفة لنفس المفهوم.
غالباً ما تبدأ الأنظمة بتشغيل برامج خفية عند بدء التشغيل ، تستجيب لطلبات الشبكة أو نشاط الأجهزة أو البرامج الأخرى من خلال تنفيذ مهام محددة. كما قد تقوم برامج خفية مثل cron بتنفيذ مهام محددة في أوقات مجدولة.
مصطلحات
في سياق الحوسبة، تُنطق الكلمة عمومًا إما كـ / ˈ diː m ən / DEE -mən أو / ˈ deɪ m ən / DAY -mən . [ 1 ]
صاغ مصطلح "دايمون" مبرمجو مشروع ماك التابع لمعهد ماساتشوستس للتكنولوجيا . ووفقًا لفرناندو ج. كورباتو ، الذي عمل على مشروع ماك حوالي عام 1963، كان فريقه أول من استخدم مصطلح "دايمون"، مستوحيًا ذلك من شيطان ماكسويل ، وهو كائن خيالي في الفيزياء والديناميكا الحرارية كان يُساعد في فرز الجزيئات، حيث قال: "بدأنا نستخدم كلمة دايمون بشكل خيالي لوصف العمليات الخلفية التي تعمل بلا كلل لأداء مهام النظام". [ 2 ] وقد ورثت أنظمة يونكس هذا المصطلح. ويتوافق شيطان ماكسويل مع تفسير الأساطير اليونانية للدايمون على أنه كائن خارق للطبيعة يعمل في الخفاء.
بالمعنى العام، كلمة daemon هي شكل قديم من كلمة "demon" اليونانية δαίμων . في دليل إدارة أنظمة يونكس، يذكر إيفي نيميث ما يلي عن daemons: [ 3 ]
يخلط الكثيرون بين كلمة "daemon" وكلمة "demon"، موحين بوجود صلة شيطانية بين نظام يونكس والعالم السفلي . هذا فهم خاطئ تمامًا. فكلمة "daemon" في الواقع شكل أقدم بكثير من كلمة "demon"؛ إذ لا يميل "daemon" إلى الخير أو الشر، بل يُسهم في تحديد شخصية الفرد. كان مفهوم الإغريق القدماء عن "daemon الشخصي" مشابهًا للمفهوم الحديث عن "الملاك الحارس" - فالسعادة (eudaemonia ) هي حالة تلقي المساعدة أو الحماية من روح طيبة. ويبدو أن أنظمة يونكس، في الغالب، تعاني من كليهما.
تشمل المصطلحات البديلة الخدمة (المستخدمة في نظام التشغيل ويندوز، بدءًا من ويندوز إن تي، ولاحقًا في لينكس أيضًا)، والمهمة المُشغّلة (في نظام التشغيل آي بي إم زد/أو إس )، [ 4 ] والوظيفة الوهمية (في نظام إكس دي إس يو تي إس ). يُستخدم أحيانًا المصطلح الأكثر عمومية "الخادم" أو "عملية الخادم" ، خاصةً للبرامج الخفية التي تعمل كجزء من أنظمة العميل والخادم . [ 5 ] البرنامج الخفي الذي يتصل بشبكة حاسوب يُسمى خدمة الشبكة .
بعد اعتماد المصطلح للاستخدام الحاسوبي، تم تفسيره بشكل خاطئ [ 1 ] على أنه اختصار عكسي لـ " مراقب القرص والتنفيذ " . [ 6 ] [ 7 ] [ 8 ]
التطبيقات
أنظمة شبيهة بنظام يونكس
في نظام شبيه بنظام يونكس ، غالبًا ما تكون العملية الأصلية لبرنامج خفي هي عملية التهيئة (init) ، ولكن ليس دائمًا . ويتم إنشاء البرنامج الخفي عادةً إما عن طريق قيام عملية التهيئة بتشغيله مباشرةً، أو عن طريق تشغيله بواسطة برنامج نصي للتهيئة يتم تشغيله بواسطة عملية التهيئة، أو عن طريق تشغيله بواسطة خادم رئيسي يتم تشغيله بواسطة عملية التهيئة.
تبدأ عملية init في أنظمة Research Unix و BSD تشغيل البرامج الخفية (daemons) من خلال نص برمجي للتهيئة. يجب على البرنامج الخفي الذي يبدأ كأمر في نص برمجي للتهيئة إما إنشاء عملية فرعية ثم الخروج فورًا، أو تشغيله كعملية خلفية باستخدام الأمر & ، حتى يتمكن الصدفة التي تشغل نص التهيئة من المتابعة بعد بدء تشغيل البرنامج الخفي. في الحالة الأولى، تخرج عملية البرنامج الخفي التي تعمل من الصدفة، مما يؤدي إلى تبني init للعملية الفرعية التي تعمل كبرنامج خفي؛ أما في الحالة الثانية، فعندما تخرج الصدفة التي تشغل نص التهيئة، تتبنى init عملية البرنامج الخفي الفرعية. [ 9 ]
يمكن لإصدارات init في نظامي التشغيل System III و System V تشغيل أي أوامر، ويمكن تهيئتها لتشغيلها مرة واحدة أو لإعادة تشغيلها عند انتهائها. [ 10 ] [ 11 ] [ 12 ] [ 13 ] يمكن استخدام الآلية الأولى لتشغيل نصوص التهيئة؛ وتعمل البرامج الخفية التي تبدأ من هذه النصوص بنفس طريقة عملها في أنظمة Research Unix و BSD. أما الآلية الثانية، فيمكن استخدامها لتشغيل البرامج الخفية مباشرةً من init.
يمكن أيضًا تشغيل خدمة (daemon) من سطر أوامر المستخدم. مع ذلك، عادةً ما يتعين على الخدمات التي تُشغَّل بهذه الطريقة تنفيذ عمليات أخرى، مثل فصل العملية عن أي طرفية تحكم (tty). غالبًا ما تُنفَّذ هذه الإجراءات في إجراءات مساعدة متنوعة مثل daemon(3) . لا تحتاج الخدمة التي تُشغَّل بواسطة نص برمجي للتهيئة إلى تنفيذ هذه الخطوات، ولكن القيام بذلك يسمح للمستخدم بإعادة تشغيل الخدمة في حال توقفها؛ [ 14 ] لن يقوم الأمر init نفسه بإعادة تشغيلها. [ 15 ] تشمل العمليات التي يجب أن تقوم بها هذه الخدمة ما يلي:
- إزالة المتغيرات غير الضرورية من البيئة (اختياري).
- يتم التنفيذ كمهمة في الخلفية عن طريق إنشاء عملية فرعية والخروج منها (في النصف "الأب" من العملية الفرعية). يسمح هذا للعملية الأصلية للبرنامج الخفي (العملية الطرفية أو عملية بدء التشغيل) بتلقي إشعار الخروج ومواصلة تنفيذها بشكل طبيعي.
- يتم فصل الجلسة المستدعِية، عادةً بعملية واحدة،
setsid():- الانفصال عن الطرفية المسيطرة .
- إنشاء جلسة جديدة وتولي قيادة تلك الجلسة.
- أن تصبح قائدًا لمجموعة العمليات .
- إذا أراد البرنامج الخفي ضمان عدم حصوله على طرفية تحكم جديدة حتى عن طريق الخطأ (وهو ما يحدث عندما يفتح قائد جلسة لا يملك طرفية تحكم طرفية فارغة)، فقد يقوم بإنشاء عملية فرعية ثم الخروج مرة أخرى. هذا يعني أنه لم يعد قائدًا للجلسة في الجلسة الجديدة، وبالتالي لا يمكنه الحصول على طرفية تحكم.
- تعيين الدليل الجذر ( / ) كدليل العمل الحالي بحيث لا تحتفظ العملية بأي دليل قيد الاستخدام قد يكون موجودًا على نظام ملفات مثبت (مما يسمح بإلغاء تثبيته).
- تغيير قيمة umask إلى 0 للسماح لـ
open(),creat(), واستدعاءات نظام التشغيل الأخرى بتوفير أقنعة الأذونات الخاصة بها وعدم الاعتماد على قيمة umask الخاصة بالمتصل. - إعادة توجيه واصفات الملفات 0 و 1 و 2 للتدفقات القياسية ( stdin و stdout و stderr ) إلى /dev/null أو ملف سجل ، وإغلاق جميع واصفات الملفات الأخرى الموروثة من العملية الأصلية.
إذا تم تشغيل العملية بواسطة خادم رئيسي ، مثل inetd أو launchd أو systemd ، فسيقوم الخادم الرئيسي بتنفيذ تلك الوظائف نيابةً عن العملية، [ 16 ] [ 17 ] [ 18 ] باستثناء الخوادم القديمة التي لم يتم تحويلها للعمل تحت systemd والمحددة كـ Type=forking [ 18 ] وخوادم البيانات "متعددة الخيوط" تحت inetd . [ 16 ]
نظام التشغيل MS-DOS
في نظام التشغيل MS-DOS ، تم تنفيذ وظائف تشبه وظائف البرامج الخفية كبرنامج مقيم يتم إنهاؤه ويبقى (TSR).
ويندوز
في نظام التشغيل ويندوز ، تُؤدي خدمة ويندوز وظائف البرنامج الخفي (daemon). تعمل هذه الخدمة كعملية مستقلة، ولا تتفاعل عادةً مع المستخدم (أي عبر الشاشة أو لوحة المفاتيح أو الفأرة)، وقد يتم تشغيلها بواسطة نظام التشغيل عند بدء التشغيل. في ويندوز 2000 والإصدارات الأحدث، يتم تكوين خدمة ويندوز والتحكم بها عبر واجهات متعددة، بما في ذلك لوحة التحكم ، وأمر إدارة الخدمات ، وأوامر PowerShell ، أو برنامج مخصص.scnet startnet stop
ومع ذلك، يمكن لأي تطبيق من تطبيقات ويندوز أن يؤدي دور برنامج خفي، وليس مجرد خدمة، وبعض البرامج الخفية في ويندوز لديها خيار التشغيل كعملية عادية.
ماك
في نظام التشغيل ماك الكلاسيكي ، كانت الميزات والخدمات الاختيارية تُوفّر عبر ملحقات النظام ولوحات التحكم - وهي ملفات تُحمّل عند بدء التشغيل لتحديث نظام التشغيل. وفي الإصدارات اللاحقة من نظام التشغيل ماك الكلاسيكي، أُضيفت تطبيقات تعمل في الخلفية دون الحاجة إلى تعريفها ، وهي تطبيقات عادية تعمل في الخلفية. وبالنسبة للمستخدم، كانت هذه التطبيقات لا تزال تُوصف بأنها ملحقات نظام عادية.
يستخدم نظام macOS الأكثر حداثة ، والذي يعتمد على نظام Unix ، البرامج الخفية ولكنه يستخدم مصطلح "الخدمات" للإشارة إلى البرامج التي تؤدي وظائف محددة من قائمة الخدمات ، بدلاً من استخدام هذا المصطلح للبرامج الخفية، كما يفعل نظام Windows.
انظر أيضاً
مراجع
- 1 2 إريك س. ريموند . "شيطان" . ملف المصطلحات . تم الاسترجاع في 22-10-2008 .
- ↑ "أصل كلمة Daemon" .
- ↑ "برنامج BSD Daemon" . Freebsd.org . تم الاطلاع عليه بتاريخ 15-11-2008 .
- ↑ "مسرد مصطلحات واختصارات نظام التشغيل z/OS" . وثائق IBM . IBM . 31 يناير 2006.
- ↑ "sshd: عملية خادم OpenSSH | أكاديمية SSH" . www.ssh.com . تم الاطلاع عليه بتاريخ 4 ديسمبر 2023 .
- ↑ "تعريف الشيطان" . www.linfo.org .
- ↑ "ما هو الشيطان؟" . قاعدة معارف جامعة كاليفورنيا في لوس أنجلوس .
- ↑ "Daemon" . Kayshav.com .
- ↑ "(يونكس) تبين أن عملية تحويل النظام إلى خدمة خلفية قديمة جدًا" . 3 أكتوبر 2024.
- ↑ دليل مستخدم يونكس، الإصدار 3.0 (PDF) . يونيو 1980. INIT(8).
- ↑ دليل مستخدم يونكس، الإصدار 3.0 (PDF) . يونيو 1980. INITTAB(5).
- ↑ دليل مسؤول نظام يونكس الإصدار 5.0 (PDF) . يونيو 1982. INIT(1M).
- ↑ دليل مستخدم نظام يونكس الخامس (PDF) . يناير 1983. INITTAB(4).
- ↑ "ربما يتعلق تشغيل البرامج كخدمة في الخلفية في أنظمة يونكس بإعادة تشغيل البرامج" . 5 أكتوبر 2024.
- ↑ "تقليديًا، لم يكن init على نظام Unix مدير خدمات بالمعنى الحرفي للكلمة" . 4 أكتوبر 2024.
- 1 2 – دليل مدير نظام FreeBSD
- ↑ – دليل تنسيقات الملفات لنظامي التشغيل داروين وماك أو إس
- 1 2 "systemd.service" . freedesktop.org . تم الاطلاع عليه بتاريخ 25 أغسطس 2012 .
روابط خارجية
- برمجة خادم يونكس ديمون على موقع Wayback Machine (تمت أرشفته في 30-10-2019)
- عملية (حوسبة)
- الخوادم (الحوسبة)
