دبوس (برنامج كمبيوتر)
Pin هي منصة لإنشاء أدوات تحليل. تتألف أداة Pin من إجراءات التتبع والتحليل والاستدعاء . تُستدعى إجراءات التتبع عند تشغيل التعليمات البرمجية التي لم يُعاد تجميعها بعد، وتُمكّن من إدراج إجراءات التحليل. تُستدعى إجراءات التحليل عند تشغيل التعليمات البرمجية المرتبطة بها. أما إجراءات الاستدعاء، فتُستدعى فقط عند استيفاء شروط محددة، أو عند وقوع حدث معين. توفر Pin واجهة برمجة تطبيقات (API) شاملة للتتبع على مستويات تجريد مختلفة، بدءًا من تعليمة واحدة وصولًا إلى وحدة ثنائية كاملة. كما تدعم الاستدعاءات للعديد من الأحداث، مثل تحميل المكتبات، واستدعاءات النظام، والإشارات/الاستثناءات، وأحداث إنشاء سلاسل العمليات.
في عام 2020، حصل على جائزة برمجيات لغات البرمجة من ACM SIGPLAN . [ 1 ]
يقوم برنامج Pin بمراقبة البرنامج مباشرةً بعد تحميله في الذاكرة. ثم يُعيد تجميع أجزاء صغيرة من الكود الثنائي باستخدام Pin قبل تشغيله مباشرةً. تُضاف تعليمات جديدة لإجراء التحليل إلى الكود المُعاد تجميعه، وتأتي هذه التعليمات الجديدة من أداة Pintool. تُستخدم مجموعة واسعة من تقنيات التحسين للحصول على أقل وقت تشغيل ممكن وأقل استهلاك للذاكرة. اعتبارًا من يونيو 2010، بلغ متوسط الحمل الزائد الأساسي لبرنامج Pin نسبة 30% (بدون تشغيل أداة Pintool). [ 2 ]
سمات
أوضاع القياس
يدعم Pin نمطين من أدوات القياس: نمط JIT ونمط Probe. يدعم نمط JIT جميع ميزات Pin، بينما يدعم نمط Probe مجموعة محدودة من الميزات ولكنه أسرع بكثير، ولا يُضيف أي عبء تقريبًا على وقت تشغيل البرنامج. يستخدم نمط JIT مُترجمًا فوريًا لإعادة ترجمة جميع أكواد البرنامج وإضافة أدوات القياس، بينما يستخدم نمط Probe امتدادات برمجية لأدوات القياس.
استقلالية المنصة
صُممت Pin لتكون قابلة للنقل بين الأدوات ، وعلى الرغم من أن JIT تُترجم من بنية مجموعة تعليمات (ISA) إلى نفس البنية (دون استخدام تمثيل وسيط واحد لجميع التعليمات البرمجية)، فإن معظم واجهات برمجة التطبيقات (APIs) الخاصة بها مستقلة عن بنية النظام ونظام التشغيل . كما صُممت لتكون قابلة للنقل هي الأخرى، حيث عزلت بعناية التعليمات البرمجية الخاصة بالمنصة عن التعليمات البرمجية العامة، مما يسمح بتكييف Pin بسرعة مع المنصات الجديدة. ما يقرب من نصف التعليمات البرمجية عامة، والباقي إما يعتمد على بنية النظام أو نظام التشغيل. [ 3 ]
التحسينات
يستخدم Pin العديد من التقنيات لتحسين كود القياس والتحليل، مثل تضمين التعليمات البرمجية ، وتحليل النشاط ، وإدارة الذاكرة الذكية للسجلات . يُجري Pin هذه التحسينات تلقائيًا كلما أمكن، دون الحاجة إلى إدخال أي تعليمات برمجية إضافية. مع ذلك، تتطلب بعض التحسينات توجيهات من المستخدم، كما أن بعض هياكل التعليمات البرمجية أسهل في التضمين من غيرها. يُستخدم أيضًا الربط المباشر لأجزاء التعليمات البرمجية المُجمّعة، وهي تقنية تُسمى ربط التتبع ، بالإضافة إلى مُطابقة ربط السجلات ، مما يُقلل من إدارة الذاكرة وإعادة تعيين السجلات.
سهولة الاستخدام
تركز واجهة برمجة التطبيقات (API) الخاصة بـ Pin وتطبيقها على تسهيل كتابة أدوات Pin. وتتحمل Pin المسؤولية الكاملة لضمان عدم تأثير كود التتبع من أداة Pin على حالة التطبيق. كما تُمكّن واجهة برمجة التطبيقات كود التتبع من طلب العديد من المعلومات من Pin. على سبيل المثال، يمكن لكود التتبع في أداة Pin استخدام واجهة برمجة تطبيقات Pin للحصول على عنوان الذاكرة الذي يتم الوصول إليه بواسطة تعليمة معينة، دون الحاجة إلى فحص التعليمة بالتفصيل.
أدوات
توجد العديد من أدوات Pintools التي تُستخدم لمهام متنوعة.
- تستخدم مكونات Intel Parallel Studio بشكل مكثف أدوات pintools لتصحيح أخطاء الذاكرة، وتحليل الأداء، وتحليل صحة تعدد الخيوط ، وإعداد التوازي.
- محاكي تطوير برامج Intel هو أداة pintool تُمكّن من تطوير التطبيقات باستخدام امتدادات مجموعة التعليمات التي لا يتم تنفيذها حاليًا في الأجهزة.
- CMP$IM هو محلل ذاكرة تخزين مؤقت مبني باستخدام pin. [ 4 ]
- تُمكّن PinPlay من التقاط وإعادة تشغيل البرامج متعددة الخيوط بشكل حتمي تحت Pin. يساعد التقاط عملية تشغيل البرنامج المطورين على التغلب على عدم الحتمية المتأصلة في تعدد الخيوط. [ 5 ]
- يأتي برنامج Pin مزودًا بالعديد من الأدوات التجريبية التي تستفيد من إمكانياته. هذه الأدوات مرخصة بموجب ترخيص مشابه لترخيص BSD.
بدائل لأداة الدبوس
تتوفر العديد من الأدوات الأخرى لجمع بيانات استخدام موارد البرامج قيد التشغيل على النظام، مثل أداة "ستراب أون" من مختبرات بيل وأداة "داينست" وغيرها. تستخدم أداة "ستراب أون " تقنية تشغيل أداة لجمع بيانات الموارد بالتزامن مع البرنامج، ولكن هذه الأداة متوافقة فقط مع البرامج التي تسمح بتشغيل برامج أخرى بالتزامن معها. [ 6 ] علاوة على ذلك، تستخدم أداة "داينست" إعادة كتابة ثنائية لملف البرنامج التنفيذي والأوامر القابلة للتنفيذ داخله للتحقق من استخدام الموارد، وهي فعالة للغاية. مع ذلك، فهي غير مستقرة نظرًا لحداثتها، وقد تتعطل مع البرامج واسعة النطاق. [ 7 ] أخيرًا، تستخدم أداة "إنتل بين" تقنية التتبع الثنائي الثابت، حيث تشغل البرنامج كجزء من نفسها مع تتبع جميع موارده. [ 8 ] يُعد هذا الأسلوب أكثر ملاءمة لبرامج مكافحة الفيروسات، إذ يمكنه بسهولة تشغيل جميع العمليات ضمنه، ويمكنه إيقاف البرامج إذا وصلت إلى الحد الأقصى المخصص لها كما هو محدد من قبل برنامج مكافحة الفيروسات.
انظر أيضاً
ملحوظات
- ↑ "جائزة لغات البرمجة للبرمجيات" . www.sigplan.org .
- ↑ تحليل البرامج المتوازية باستخدام Pin
- ↑ دبوس: بناء أدوات تحليل برامج مخصصة باستخدام أدوات القياس الديناميكية
- ↑ CMP$im: محاكي ذاكرة تخزين مؤقتة متعددة النوى قائم على الدبابيس أثناء التشغيل
- ↑ PinPlay: إطار عمل لإعادة التشغيل الحتمي والتحليل القابل للتكرار للبرامج المتوازية
- ↑ غوبتا، تشاندراشيكار (2007). "بناء منتجات وحلول آمنة". مجلة بيل لابز التقنية . 12 (3): 21-38. doi : 10.1002/bltj.20247 . S2CID 30412754 .
- ↑ لي، شولز (2007). "التجهيز الثنائي الديناميكي وتجميع البيانات على الأنظمة واسعة النطاق". المجلة الدولية للبرمجة المتوازية . 35 (3): 207-232 . doi : 10.1007/s10766-007-0036-3 . S2CID 6653468 .
- ↑ باخ، م.؛ شارني، م.؛ كوهن، ر.؛ ديميكوفسكي، إ.؛ ديفور، ت.؛ هازلوود، ك.؛ جليل، أ.؛ لوك، تشي-كيونغ؛ ليونز، ج. (مارس 2010). "تحليل البرامج المتوازية باستخدام PIN". مجلة الكمبيوتر . 43 (3): 34-41 . doi : 10.1109/MC.2010.60 . ISSN 0018-9162 . S2CID 15155077 .
مراجع
- موشيه باخ؛ مارك شارني؛ روبرت كوهن؛ إيلينا ديميكوفسكي؛ تيفي ديفور؛ كيم هازلوود؛ عامر جليل؛ تشي-كيونغ لوك؛ غيل ليونز؛ هاريش باتيل؛ وآدي تال (مارس 2010). "تحليل البرامج المتوازية باستخدام Pin" . مجلة Computer . 43 (3). IEEE: 34–41 . doi : 10.1109/mc.2010.60 . S2CID 15155077. مؤرشف من الأصل بتاريخ 29 ديسمبر 2010. تاريخ الاسترجاع: 5 يوليو 2010 .
- تشي-كيونغ لوك؛ روبرت كوهن؛ روبرت موث؛ هاريش باتيل؛ أرتور كلاوزر؛ جيف لوني؛ ستيفن والاس؛ فيجاي جانابا ريدي وكيم هازلوود (يونيو 2005). "Pin: بناء أدوات تحليل برامج مخصصة باستخدام أدوات ديناميكية" (ملف PDF) . وقائع مؤتمر ACM SIGPLAN لعام 2005 حول تصميم لغات البرمجة وتنفيذها . شيكاغو، إلينوي، الولايات المتحدة الأمريكية: ACM. الصفحات 190-120 .
- أليكس سكاليتسكي؛ تيفي ديفور؛ نداف تشاتشمون؛ روبرت كوهن؛ كيم هازلوود؛ فلاديمير فلاديميروف؛ موشيه باخ (أبريل 2010). "تحليل البرامج الديناميكية لتطبيقات مايكروسوفت ويندوز" (ملف PDF) . الندوة الدولية لتحليل أداء البرمجيات والأنظمة (ISPASS) . وايت بلينز، نيويورك. الصفحات 2-12 . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 18 سبتمبر 2016.
روابط خارجية
- Pin: الصفحة الرئيسية لأداة تحليل البيانات الثنائية الديناميكية
- Pinheads ، قائمة بريدية لمجتمع مستخدمي Pin
- اكتشاف أخطاء القراءة قبل الكتابة (على غرار Valgrind)
- Pin++ ، إطار عمل لتأليف أدوات Pintools
- محللو البيانات الشخصية
