الصفحة الرئيسية » howto » لماذا لا يوجد معرفات معالجة Windows ذات تعداد رقمي فردي؟

    لماذا لا يوجد معرفات معالجة Windows ذات تعداد رقمي فردي؟

    إذا كنت تحب إجراء ترقيع مع Windows والتعلم أثناء التنقل ، فقد تلاحظ أن معرفات Windows ومعرفات مؤشر الترابط مرقمتين ومضاعفات أربعة. لماذا هذا؟ إن وظيفة SuperUser Q & A اليوم تحتوي على إجابات لأسئلة القراء الفضوليين.

    تأتي جلسة الأسئلة والأجوبة اليوم مقدمة من SuperUser-a subdivision of Stack Exchange ، وهي مجموعة مجتمعية مدفوعة من مواقع Q & A.

    السؤال

    يريد قارئ SuperUser Peter Hahndorf معرفة سبب عدم وجود معرفات عملية Windows ذات الأرقام الفردية:

    هناك العديد من الطرق لإلقاء نظرة على معرفات العملية في Windows. باستخدام PowerShell:

    أحصل على هذه النتيجة:

    كما ترون ، جميع الأرقام التعريفية للعملية هي أرقام مرقمة ، ليس فقط ، إنها كلها مضاعفات لأربعة. يمكنك البحث بأقصى ما تريد ولن تجد أبداً معرف عملية ذات أرقام فردية ، على الأقل ليس على أي إصدار يستند إلى Windows NT. ما هو سبب هذا?

    لماذا لا يوجد معرفات عملية Windows ذات الأرقام الفردية?

    الاجابة

    مساهم SuperUser DavidPostill لديه الجواب بالنسبة لنا:

    لماذا لا يوجد معرفات عملية Windows ذات الأرقام الفردية?

    يتم استخدام نفس التعليمات البرمجية التي تقوم بتخصيص مقابض kernel أيضاً لتخصيص معرفات سلسلة العمليات. منذ مقابض kernel مضاعفات أربعة ، بحيث يتم معرّفات العملية وموضوع.

    لماذا يتم معالجة معرفات ومعرفات سلسلة من أربعة?

    في أنظمة التشغيل المستندة إلى نظام التشغيل Windows NT ، تحدث معرفات ومعرفات سلاسل العمليات دائمًا مضاعفات أربعة. هل هذه مجرد صدفة?

    نعم ، إنها مجرد مصادفة ، ويجب ألا تعتمد عليها لأنها ليست جزءًا من عقد البرمجة. على سبيل المثال ، لم يكن Windows 95 ومعرفات سلسلة العمليات دائماً مضاعفات أربعة. وبالمقارنة ، فإن السبب في أن مقابض النواة هي دائمًا مضاعفات أربعة هي جزء من المواصفات وسيتم ضمانها في المستقبل المنظور..

    تعد معرفات العمليات ومجموعات مؤشرات الترابط مضاعفات أربعة كأثر جانبي لإعادة استخدام التعليمات البرمجية. يتم استخدام نفس التعليمات البرمجية التي تقوم بتخصيص مقابض kernel أيضاً لتخصيص معرفات سلسلة العمليات. نظرًا لأن مقابض kernel عبارة عن مضاعفات لأربعة ، فهذه هي معرفات العمليات والموضوع. هذه تفاصيل تنفيذ ، لذا لا تكتب تعليمات برمجية تعتمد عليها. أنا فقط أقول لك لإرضاء فضولك.

    مصدر: لماذا يتم معالجة معرفات ومعرفات سلسلة من أربعة?

    لماذا مقابض النواة دائماً مضاعفات أربعة?

    شيء غير معروف جيدًا هو أن الجزء السفلي السفلي من مقابض kernel هي صفر دائمًا؛ بمعنى آخر ، القيمة الرقمية الخاصة بهم دوماً مضاعفات أربعة. لاحظ أن هذا ينطبق فقط على مقابض kernel؛ لا ينطبق على مقابض زائفة أو على أي نوع آخر من المقابض (مقابض USER ، مقابض GDI ، مقابض الوسائط المتعددة ، إلخ). مقابض Kernel هي أشياء يمكنك تمريرها إلى الدالة CloseHandle.

    على الأقل الجزء السفلي من معالجات kernel يكون دائمًا صفر يتم تضمينه من خلال الدالة GetQueuedCompletionStatus ، مما يشير إلى أنه يمكنك ضبط الجزء السفلي من مقبض الحدث لمنع إخطار منفذ الإكمال. لكي يعمل هذا ، يجب أن يكون الجزء السفلي عادةً صفرًا.

    هذه المعلومات ليست مفيدة لمعظم كتاب التطبيق ، والتي ينبغي أن تستمر في التعامل مع المقابض كقيم مبهمة. الأشخاص الذين يهتمون بتات العلامات هم أولئك الذين ينفذون مكتبات الصف ذات المستوى المنخفض أو يلفون كائنات النواة داخل إطار أكبر.

    مصدر: لماذا مقابض النواة دائماً مضاعفات أربعة?

    قراءة متعمقة

    الشيء الجديد القديم: التطور العملي في جميع مراحل تطور نظام ويندوز بواسطة ريموند تشين (مهندس تصميم البرمجيات الرئيسي في مايكروسوفت)


    هل لديك شيء تضيفه إلى الشرح؟ الصوت قبالة في التعليقات. هل ترغب في قراءة المزيد من الإجابات من مستخدمي Stack Exchange الآخرين المحترفين بالتكنولوجيا؟ تحقق من موضوع المناقشة الكامل هنا.