مدير الكائنات

مدير الكائنات (يُسمى داخليًا Ob ) هو نظام فرعي مُدمج في Windows Executive ، ويتولى إدارة موارد Windows . تُعرض الموارد ككائنات منطقية ، ويُخصص لكل منها مساحة اسم لتصنيفها. قد تكون الموارد أجهزة مادية، أو ملفات، أو مجلدات على وحدات تخزين، أو مفاتيح تسجيل ، أو حتى عمليات قيد التشغيل. تحتوي جميع الكائنات التي تُمثل الموارد على Object Typeخاصية وبيانات وصفية أخرى خاصة بها. مدير الكائنات مورد مشترك، ويجب على جميع الأنظمة الفرعية التي تتعامل مع الموارد المرور عبره.
بنيان

مدير الكائنات هو وسيط الموارد المركزي في أنظمة تشغيل ويندوز إن تي ، ويتولى تتبع الموارد المخصصة للعمليات. وهو مستقل عن نوع الموارد، إذ يمكنه إدارة أي نوع منها، بما في ذلك مقابض الأجهزة والملفات. تُمثَّل جميع الموارد ككائنات، ينتمي كل منها إلى مساحة اسم منطقية للتصنيف، وله نوع يُمثل نوع المورد، والذي يُظهر إمكانياته ووظائفه عبر خصائصه. يبقى الكائن متاحًا حتى تنتهي جميع العمليات من استخدامه؛ ويحتفظ مدير الكائنات بسجل للكائنات المستخدمة حاليًا عبر عدّ المراجع ، بالإضافة إلى معلومات الملكية. أي استدعاء نظام يُغيّر حالة تخصيص الموارد للعمليات يمر عبر مدير الكائنات.
يمكن أن تكون الكائنات إما كائنات نواة أو كائنات تنفيذية . تمثل كائنات النواة موارد أساسية مثل الأجهزة المادية، أو خدمات مثل المزامنة، وهي ضرورية لتنفيذ أي نوع آخر من خدمات نظام التشغيل. لا تُعرض كائنات النواة لرمز وضع المستخدم ، بل تقتصر على رمز النواة. تستخدم التطبيقات والخدمات التي تعمل خارج النواة كائنات تنفيذية ، والتي يُوفرها نظام التشغيل Windows Executive ، إلى جانب مكوناته مثل مدير الذاكرة، والمجدول، ونظام الإدخال/الإخراج. تُغلف الكائنات التنفيذية كائنًا واحدًا أو أكثر من كائنات النواة، وتُوفر ليس فقط النواة والموارد التي تتوسطها النواة، بل أيضًا مجموعة موسعة من الخدمات التي تُقدمها النواة. يمكن للتطبيقات نفسها تغليف كائن واحد أو أكثر من الكائنات التنفيذية، وعرض الكائنات التي تُقدم خدمات معينة. كما تُستخدم الكائنات التنفيذية من قِبل الأنظمة الفرعية للبيئة (مثل نظام Win32 الفرعي، ونظام OS/2 الفرعي، ونظام POSIX الفرعي، وما إلى ذلك) لتنفيذ وظائف البيئات المعنية.
عند إنشاء أي كائن أو فتحه، يتم إنشاء مرجع إليه يُعرف باسم "المقبض". يقوم مدير الكائنات بفهرسة الكائنات باستخدام أسمائها ومقابضها. يُعدّ استخدام المقابض أسرع لأنه يتجاوز ترجمة الأسماء. ترتبط المقابض بالعمليات من خلال تسجيل مدخل في جدول المقابض الخاص بالعملية، والذي يسرد المقابض التي تمتلكها، ويمكن نقلها بين العمليات. يجب أن تمتلك العملية مقبضًا للكائن لاستخدامه، ويمكنها امتلاك ما يصل إلى 16 مليون مقبض في وقت واحد. أثناء الإنشاء، تحصل العملية على مقابض لمجموعة افتراضية من الكائنات. توجد أنواع مختلفة من المقابض، مثل مقابض الملفات، ومقابض الأحداث، ومقابض العمليات، والتي تحدد نوع الكائنات المستهدفة ولكنها لا تميز العمليات التي يمكن تنفيذها من خلالها. يضمن هذا التناسق معالجة موحدة لأنواع الكائنات المختلفة برمجيًا. يتولى مدير الكائنات إدارة إنشاء المقابض وحل الكائنات منها بشكل حصري، مما يضمن عدم إغفال أي استخدام للموارد.
أنواع كائنات Executive التي يعرضها نظام التشغيل Windows NT هي:
| يكتب | وصف | استدعاء النظام للحصول على المقبض |
|---|---|---|
| دليل | يحتوي الحاوية على كائنات النواة الأخرى. تعمل مستويات متعددة من الدلائل المتداخلة على تنظيم جميع كائنات النواة في شجرة واحدة. | NtCreateDirectoryObject NtOpenDirectoryObject |
| عملية | مجموعة من الخيوط القابلة للتنفيذ بالإضافة إلى معلومات العنونة والتحكم الافتراضية . | NtCreateProcess NtOpenProcess |
| خيط | كيان يحتوي على رمز برمجي قيد التنفيذ، داخل عملية. | NtCreateThread NtOpenThread |
| وظيفة | مجموعة من العمليات. | NtCreateJobObject NtOpenJobObject |
| ملف | ملف مفتوح ، أو دليل، أو جهاز إدخال/إخراج . | NtCreateFile NtOpenFile |
| قسم | منطقة من الذاكرة مدعومة اختيارياً بملف أو ملف الصفحة . | NtCreateSection NtOpenSection |
| رمز الوصول | هوية وخصائص وامتيازات وحقوق الوصول الخاصة بعملية أو خيط. | NtCreateToken NtDuplicateToken NtOpenProcessToken NtOpenThreadToken |
| حدث | كائن يحتوي على بعض المعلومات، ويستخدم لإعلام العمليات بشيء ما. | NtCreateEvent NtOpenEvent |
| إشارة ضوئية / مفتاح مانع للتداخل | الكائنات التي تُسهّل الوصول إلى الموارد الأخرى. | NtCreateSemaphore NtOpenSemaphore |
| مؤقت | كائن يقوم بإخطار العمليات على فترات زمنية ثابتة. | NtCreateTimer NtOpenTimer |
| مفتاح | مفتاح تسجيل . | NtCreateKey NtOpenKey |
| سطح المكتب | سطح عرض منطقي لاحتواء عناصر واجهة المستخدم الرسومية . | لا أحد |
| لوحة كتابة | مستودع مؤقت للأشياء الأخرى. | لا أحد |
| محطة النافذة | كائن يحتوي على مجموعة من كائنات سطح المكتب، وحافظة واحدة، وكائنات مستخدم أخرى. | لا أحد |
| الرابط الرمزي | مرجع إلى كائن آخر، يمكن من خلاله استخدام الكائن المشار إليه. | NtCreateSymbolicLinkObject NtOpenSymbolicLinkObject |
بنية الكائن
يحتوي كل كائن يُديره مدير الكائنات على رأس وجسم؛ يحتوي الرأس على معلومات الحالة التي يستخدمها مدير الكائنات، بينما يحتوي الجسم على البيانات الخاصة بالكائن والخدمات التي يُتيحها. يحتوي رأس الكائن على بيانات معينة، مُتاحة على شكل Properties، مثل Object Name(الذي يُعرّف الكائن)، Object Directory(الفئة التي ينتمي إليها الكائن)، Security Descriptors(حقوق الوصول للكائن)، Quota Charges(معلومات استخدام الموارد للكائن)، Open handle count(عدد مرات فتح مُعرّف الكائن)، Open handle list(قائمة العمليات التي لديها مرجع نشط للكائن)، Reference count(عدد المراجع النشطة للكائن)، و Type(كائن يُحدد بنية جسم الكائن).
يحتوي الكائن Typeعلى خصائص فريدة خاصة بنوعه، بالإضافة إلى دوال ثابتة تُنفذ الخدمات التي يُقدمها. يجب أن تُوفر الكائنات المُدارة بواسطة مدير الكائنات مجموعة مُحددة مُسبقًا من الخدمات على الأقل، وهي: Close(إغلاق مُعرّف الكائن)، Duplicate(إنشاء مُعرّف آخر للكائن ليتمكن مُعالج آخر من الوصول إليه بشكل مُشترك)، Query object(جمع معلومات حول سماته وخصائصه)، Query security(الحصول على مُعرّف أمان الكائن)، Set security(تغيير مستوى الوصول الأمني)، و Wait(المزامنة مع كائن واحد أو أكثر عبر أحداث مُعينة). تتشارك كائنات النوع أيضًا في بعض السمات المُشتركة، بما في ذلك اسم النوع، وما إذا كان سيتم تخصيصها في ذاكرة غير مُصفحة، وحقوق الوصول، ومعلومات المزامنة. تشترك جميع مثيلات النوع نفسه في كائن النوع نفسه، ويتم إنشاء كائن النوع مرة واحدة فقط. يُمكن إنشاء نوع كائن جديد عن طريق تزويد كائن بخصائص لعرض حالته ودوال لعرض الخدمات التي يُقدمها.
Object nameيُستخدم هذا لإضفاء هوية وصفية على الكائن، مما يُسهّل عملية البحث عنه. يحتفظ مدير الكائنات بقائمة الأسماء المُخصصة للكائنات المُدارة، ويربط هذه الأسماء بالمثيلات. بما أن معظم عمليات الوصول إلى الكائنات تتم عبر المقابض، فليس من الضروري دائمًا البحث عن الاسم للوصول إلى مرجع الكائن. يتم البحث فقط عند إنشاء كائن (للتأكد من أن الكائن الجديد له اسم فريد)، أو عند وصول عملية ما إلى كائن باسمه صراحةً. Object directoriesتُستخدم هذه لتصنيف الكائنات وفقًا لأنواعها. تشمل الدلائل المُعرّفة مسبقًا: \??الأسماء المستعارة \DosDevices(أسماء الأجهزة)، (الأقفال، والأحداث ، \BaseNamedObjectsوالإشارات، والمؤقتات القابلة للانتظار، وكائنات الأقسام)، \Callback(دوال الاستدعاء)، \Device( جداول اللغات)، (كائنات الأنواع)، ( منافذ RPC ) ، ( كائنات النظام الفرعي للأمان)، و (كائنات النظام الفرعي للنوافذ). تنتمي الكائنات أيضًا إلى مساحة اسم . تُخصص مساحة اسم مختلفة لكل جلسة مستخدم. توجد الكائنات المشتركة بين جميع الجلسات في مساحة الاسم العامة ( GLOBAL )، بينما توجد الكائنات الخاصة بجلسة (تسجيل الدخول) في مساحات أسماء جلسات (تسجيل الدخول) المحددة.\Driver\FileSystem\KnownDlls\Nls\ObjectTypes\RPC Control\Security\Windows
بنية OBJECT_ATTRIBUTES:
typedef struct _OBJECT_ATTRIBUTES { ULONG Length ; HANDLE RootDirectory ; PUNICODE_STRING ObjectName ; ULONG Attributes ; PSECURITY_DESCRIPTOR SecurityDescriptor ; PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService ; } OBJECT_ATTRIBUTES * POBJECT_ATTRIBUTES ;يمكن أن تكون قيمة عنصر السمات صفرًا، أو مزيجًا من العلامات التالية:
OBJ_INHERIT كائن دائم حصريًا على OBJ OBJ_CASE_INSENSITIVE OBJ_OPENIF OBJ_OPENLINK OBJ_KERNEL_HANDLE
الاستخدام
تتوفر مسارات مدير الكائنات للعديد من وظائف ملفات واجهة برمجة تطبيقات ويندوز، على الرغم من أن أسماء Win32 مثل \\?\ و \\.\ لمساحات الأسماء المحلية تكفي لمعظم الاستخدامات. [ 1 ] استخدام الأول في وظائف وضع المستخدم في Win32 يُترجم مباشرةً إلى \?? ، لكن استخدام \?? يختلف لأن هذا الشكل في نظام التشغيل NT لا يُعطّل توسيع اسم المسار. [ 2 ]
تتوفر أدوات تعمل كمستكشفات في مساحات أسماء مدير الكائنات. وتشمل هذه الأدوات WinObj ذات 32 بت من Sysinternals [ 3 ] وWinObjEx64 ذات 64 بت [ 4 ] .
انظر أيضاً
- بنية نظام التشغيل ويندوز إن تي
- مجموعات العمليات ومجموعات التحكم (cgroups) – المفاهيم المكافئة في نظامي POSIX و Linux لنوع الكائن "Job" الذي تمت مناقشته أعلاه
مراجع
- ↑ "تسمية الملفات والمسارات ومساحات الأسماء - تطبيقات Win32" . docs.microsoft.com . 28 أغسطس 2024.
- ↑ "winapi - هل هناك فرق بين المسارات \??\ و \\?\؟" . Stack Overflow .
- ↑ "WinObj - Windows Sysinternals" . docs.microsoft.com . 26 يوليو 2023.
- ↑ "hfiref0x/WinObjEx64: مستكشف كائنات ويندوز 64 بت" . جيت هاب . 20 فبراير 2020.
- روسينوفيتش، مارك ؛ ديفيد سولومون (2005). "الفصل 3: آليات النظام". أساسيات نظام التشغيل مايكروسوفت ويندوز ( الطبعة الرابعة). مطبعة مايكروسوفت. الصفحات 124-149 . ISBN 0-7356-1917-4.
روابط خارجية
- بنية ويندوز إن تي
- مكونات ويندوز
