معرّف العملية
في مجال الحوسبة ، يُعدّ مُعرّف العملية (المعروف أيضًا باسم مُعرّف العملية أو PID ) رقمًا تستخدمه معظم أنظمة التشغيل - مثل أنظمة Unix و macOS و Windows - لتمييز عملية نشطة بشكل فريد . ويمكن استخدام هذا الرقم كمعامل في استدعاءات الدوال المختلفة، مما يسمح بالتحكم في العمليات، مثل تعديل أولوية العملية أو إيقافها نهائيًا.
شبيهة بنظام يونكس
في أنظمة التشغيل الشبيهة بنظام يونكس ، تُنشأ العمليات الجديدة بواسطة fork()استدعاء النظام . يُعاد مُعرّف العملية (PID) إلى العملية الأصلية ، مما يُمكّنها من الإشارة إلى العملية الفرعية في استدعاءات الدوال اللاحقة. على سبيل المثال، قد تنتظر العملية الأصلية انتهاء العملية الفرعية باستخدام waitpid()الدالة، أو قد تُنهي العملية باستخدام الدالة kill().
هناك مهمتان لهما معرّفات عمليات مميزة: يُستخدم المعرّف 0 لعملية swapper أو sched ، وهي جزء من نواة النظام، وتعمل على نواة المعالج عندما لا يكون لديها أي مهام أخرى. [ 1 ] يُطلق لينكس أيضًا على خيوط هذه العملية اسم " المهام الخاملة" . [ 2 ] في بعض واجهات برمجة التطبيقات، يُستخدم المعرّف 0 أيضًا كقيمة خاصة تُشير دائمًا إلى الخيط أو العملية أو مجموعة العمليات المُستدعِية. [ 3 ] [ 4 ] أما المعرّف 1، فهو عادةً عملية init المسؤولة بشكل أساسي عن بدء تشغيل النظام وإيقافه. في الأصل، لم يكن المعرّف 1 محجوزًا خصيصًا لعملية init بأي إجراءات تقنية، بل كان هذا المعرّف نتيجة طبيعية لكونه أول عملية تستدعيها النواة. تحتوي أنظمة يونكس الأحدث عادةً على مكونات نواة إضافية تظهر كـ"عمليات"، وفي هذه الحالة، يُحجز المعرّف 1 بشكل فعلي لعملية init للحفاظ على التوافق مع الأنظمة القديمة.
تُخصَّص معرّفات العمليات، في المقام الأول، عادةً بشكل تسلسلي، [ 5 ] بدءًا من 0 وصولًا إلى قيمة قصوى تختلف من نظام لآخر. عند الوصول إلى هذا الحد، يُعاد التخصيص من 300 ثم يزداد مجددًا. في نظامي macOS و HP-UX ، يُعاد التخصيص من 100. [ 6 ] مع ذلك، في هذه الدورة والدورات اللاحقة، تُتجاهل أي معرّفات عمليات لا تزال مُخصَّصة للعمليات. يعتبر البعض هذا ثغرة أمنية محتملة، إذ يسمح باستخراج معلومات عن النظام، أو تمرير رسائل خفية بين العمليات. لذا، قد تختار التطبيقات التي تُولي اهتمامًا خاصًا للأمان طريقة مختلفة لتخصيص معرّفات العمليات. [ 7 ] في بعض الأنظمة، مثل MPE/iX ، يُستخدم أدنى معرّف عملية متاح، أحيانًا في محاولة لتقليل عدد صفحات معلومات العملية في ذاكرة النواة.
يتم توفير مُعرّف العملية الحالي عن طريق getpid()استدعاء النظام، [ 8 ] أو كمتغير $$في الصدفة. ويمكن الحصول على مُعرّف العملية الأصلية عن طريق getppid()استدعاء النظام. [ 9 ]
في نظام لينكس ، يتم تحديد الحد الأقصى لمعرف العملية بواسطة الملف الوهمي /proc/sys/kernel/pid_max. [ 10 ]pid_max وقد تم تعيينه تاريخيًا إلى 65535 () على نظام لينكس، ولكن يمكن الآن تهيئتها لتصل إلى 4,194,303 () على أنظمة لينكس 64 بت، [ 11 ]
ملف تعريف الجهاز
تقوم بعض العمليات (بما في ذلك العديد من البرامج الخفية ، على سبيل المثال، برنامج MySQL الخفي) بكتابة معرف العملية الخاص بها في موقع ملف موثق، للسماح للعمليات الأخرى بالبحث عنه.
مايكروسوفت ويندوز
في أنظمة تشغيل مايكروسوفت ويندوز ، يمكن الحصول على مُعرّف العملية الحالية باستخدام دالة GetCurrentProcessId()من واجهة برمجة تطبيقات ويندوز (Windows API) ، [ 12 ] ومُعرّفات العمليات الأخرى باستخدام [ 13 ]GetProcessId() . داخليًا، يُسمى مُعرّف العملية مُعرّف العميل ، ويتم تخصيصه من نفس مساحة اسم مُعرّفات الخيوط ، لذا لا يتداخل هذان النوعان أبدًا. تُعطى عملية النظام الخاملة مُعرّف العملية 0. في أنظمة ويندوز القديمة ، تُعطى عملية النظام مُعرّف العملية 8 في ويندوز 2000 و4 في ويندوز إكس بي وويندوز سيرفر 2003. [ 14 ] في عائلة أنظمة تشغيل ويندوز إن تي (Windows NT) ، تكون مُعرّفات العمليات والخيوط جميعها من مضاعفات العدد 4، ولكن هذا ليس جزءًا من المواصفات. [ 15 ]
انظر أيضاً
- معرّف المستخدم (UID)
- معرّف المجموعة (GID)
- معرّف الخيط (TID)
- التعامل (الحوسبة)
- بادئة مقطع البرنامج (PSP)
مراجع
- ↑ أندرسون، ديفيد (2024-06-05)، ما هو PID 0؟، مؤرشف من الأصل في 2024-06-07
- ↑ كود نواة لينكس: tools/perf/builtin-sched.c ،
المعرف 0 == swapper == مهمة خاملة
- ↑ kill(2) — صفحة دليل لينكس
- ↑ sched_setscheduler(2) — صفحة دليل لينكس
- ↑ pid_namespaces(7) — صفحة دليل لينكس
- ↑ "ما هو الحد الأقصى لرقم تعريف العملية (PID) لنظام التشغيل Mac OS X؟" . موقع Ask Different . تم الاطلاع عليه بتاريخ 2 نوفمبر 2024 .
- ↑ الأسئلة الشائعة حول نظام التشغيل يونكس (comp.unix.aix) ، تم الاطلاع عليها بتاريخ 21 يوليو 2008
- ↑ "getpid" ، المواصفات الأساسية لمجموعة Open Group، الإصدار 7، 2018
- ↑ "getppid" ، مواصفات المجموعة المفتوحة الأساسية، الإصدار 7، طبعة 2018
- ↑ "proc - نظام ملفات وهمي لمعلومات العملية" ، دليل مبرمج لينكس ، تم الاطلاع عليه بتاريخ 28-12-2009
- ↑ "لينكس يسمح بتعديل قيمة pid_max لكل مساحة اسم PID - مساعدة البرامج القديمة" . www.phoronix.com . تاريخ الاسترجاع: 11 ديسمبر 2025 .
- ↑ "دالة GetCurrentProcessId" ، مركز مطوري ويندوز ، مايكروسوفت ، 5 ديسمبر 2018
- ↑ "دالة GetProcessId" ، مركز مطوري ويندوز ، مايكروسوفت ، 5 ديسمبر 2018
- ↑ روسينوفيتش، مارك ؛ ديفيد أ. سولومون (2005)، "الفصل 2: بنية النظام"، أساسيات نظام التشغيل مايكروسوفت ويندوز ( الطبعة الرابعة)، مطبعة مايكروسوفت، ص 76 ، ISBN 0-7356-1917-4
- ↑ تشين، ريموند (28 فبراير 2008)، "لماذا تكون معرّفات العمليات والخيوط من مضاعفات العدد أربعة؟" ، الشيء القديم الجديد ، مايكروسوفت
- عملية (حوسبة)
