PDA

View Full Version : تعیین پردازش مصرفی یک فایل به طور مستقل



ŋµxXle
پنج شنبه 23 آبان 1387, 22:28 عصر
میخواهم بدونم چه طور میشه در ویندوز برای یک فایل میزان CPU مصرفی رو تعیین کنیم
مثلا برای sky2.dll تعیین کنیم که میزان مصرف سی پی یوش 10 هرتز باشه یا اینکه اصلا صفر باشه

چنین چیزی ممکنه ؟
ممکن که هست ولی چه طوری میزان سی پی یو مصرفی یک فایل رو تعیین کنیم؟

vcldeveloper
جمعه 24 آبان 1387, 02:56 صبح
یک فایل در CPU اجرا نمیشه، بلکه Threadها در CPU اجرا میشند. شما می تونید میزان استفاده یک Thread از CPU را بدست بیارید، نه میزان استفاده یک DLL از Thread را.

ŋµxXle
جمعه 24 آبان 1387, 11:12 صبح
الان مثلا Thread دی ال ال مورد نظرم رو چه طور پیدا کنم تا مصرف سی پی یوش رو تعیین کنم؟

vcldeveloper
جمعه 24 آبان 1387, 16:19 عصر
الان مثلا Thread دی ال ال مورد نظرم رو چه طور پیدا کنم تا مصرف سی پی یوش رو تعیین کنم؟
معلوم نیست که DLL شما حتما یک Thread مستقل داشته باشه، بلکه ممکن هست کد آن توسط Thread اصلی یا یکی از Threadهای موجود فراخوانی بشه، یا خودش یک یا چند Thread جدید بسازه.

ŋµxXle
جمعه 24 آبان 1387, 16:50 عصر
حالا هیچ راهی نیست که مثلا در زمان خاص یک دی ال ال رو قفل کنیم تا هیچ سی پی یویی نتونه مصرف کنه؟

مثلا در یکزمان خاص فایل cs2.exe رو یک چیزیروش بندازیم که هیچ سی پی یویی نتونه مصرف کنه
فکر کنم بشه خارج از اون Thread ها یک فایلرو قفل کنیم تا نتونه فعالیت بکنه ها ...

Hamid_PaK
جمعه 24 آبان 1387, 17:00 عصر
شما دارید نامی از یک فایل اجرایی می برید!!! CS2.exe چطور صحبت از کتابخانه بود !؟
به هر حال توابع API برای بدست آوردن PID یک Process وجود داره که بتونید ترد فایل اجرا شده را متوقف کنید ولی باید توجه داشته باشید که توقف ترد برنامه باعث توقف کامل برنامه خواهد شد و دیگر برنامه مورد نظر هیچ واکنشی نخواهد داشت.

یا حق ...

ŋµxXle
شنبه 25 آبان 1387, 08:57 صبح
من هم دقیقا میخواهم فایل مثلا دی ال ال موردنظر از کار بیافته و با هیچ جای دیگر سیستم نتونته ارتباط برقرار نه یا در کل فعالیتی بکنه تا زمانی که من دوباره بهش اجازه بدم
ممنون میشم راهنمایی کنید

شما دارید نامی از یک فایل اجرایی می برید!!! CS2.exe چطور صحبت از کتابخانه بود !؟
به هر حال توابع API برای بدست آوردن PID یک Process وجود داره که بتونید ترد فایل اجرا شده را متوقف کنید ولی باید توجه داشته باشید که توقف ترد برنامه باعث توقف کامل برنامه خواهد شد و دیگر برنامه مورد نظر هیچ واکنشی نخواهد داشت.

یا حق ...

Hamid_PaK
شنبه 25 آبان 1387, 20:04 عصر
دوست عزیز همانطور که حاج علی فرمودند، کتابخانه داستان متفاوتی داره در اکثر موارد کتابخانه ها بدون ترد متفاوت و در ترد های موجود در برنامه ای که کتابخانه مورد نظر را فراخوانی کرده اجرا می شوند و اگر توسط پراسس های سیستم اجرا شده باشه که دیگه هیچی، هیچ کاری غیر ممکن نیست ولی خوب در این مورد نمی تونم نظری بدم !!!
درحالی که بر روی فایلهای اجرایی بسادگی می توان عملیات مورد نظر را اجرا کرد.

یا حق ...

ŋµxXle
یک شنبه 26 آبان 1387, 12:52 عصر
حالا اگر سی پی یو مشکل هست راه دیگی برای قفل کردن فایل مورد نظر هست ؟

این فایلی که من میگم یک دی ال ال هست که همیشه در حال اجرا هست و اونو دیلیت نمیشه کرد و ویندوز ارور میده میگه اول ببندش بعد پاکش کن

حالا با این اوصاف که همیشه در حال اجرا هست میشه گاهی اوقات فایل هرو قفل کرد تا هیچ فعالیتی نتونه بکنه ؟ مثل اینکه دی ال ال رو که همش داره آواز میخونه یک دفعه با چکش بزنیم تو سرش و بعد بهش آدرنالین تزریق کنیم تا به هوش بیاد
مثال ضایعی زدم ولی در کل همچین چیزی میخواهم که فایل مورد نظر رو که مدام در حال جنب و جوش هست رو گاهی اوقات قفل کنم تا هیچ فعالیتی نتونه بکنه و اصطلاحا به خواب بره ...

چه راهی هست ؟
توجه داشته باشید ویندوز اجازه حذف یا تغییرنامش رو چون در حال اجراست نمیده
چه راهی هست ؟

vcldeveloper
یک شنبه 26 آبان 1387, 16:35 عصر
Process ایی که از آن استفاده می کند را شناسایی کنید، و آن را ببندید. خودِ DLL به خودی خود کاری انجام نمیده، بلکه یک یا چند Process هستند که از آن استفاده می کنند.

در ضمن، دارم به این نتیجه می رسم که این تاپیک ربطی به بخش دلفی، یا بهتر بگم، به سایت برنامه نویس نداره!

ŋµxXle
دوشنبه 27 آبان 1387, 11:50 صبح
والا ربط که داره
به هر حال یک چیز کاملا جدید هست که فقط توسط دلفی یا سی امکان پذیر هست
بالاخره این قضیه برای شما هم یک تمرین و دست گرمی میشه ...
:D


اقا این دی ال ال توسط مرورگر اجرامیشه
اگر پردازش های مرتبط باهاش رو ببندم مرور گر از کار نمیافته ؟
اصلا چه طور پردازش های مرتبط را پیدا و ببندیم ؟

vcldeveloper
دوشنبه 27 آبان 1387, 17:21 عصر
والا ربط که داره
به هر حال یک چیز کاملا جدید هست که فقط توسط دلفی یا سی امکان پذیر هست
بالاخره این قضیه برای شما هم یک تمرین و دست گرمی میشه ...
این چیز جدیدی نیست، برای کسی هم تمرین یا دست گرمی محسوب نمیشه، بلکه اشتباه شما در درک درست مفهوم DLL و چگونگی اجرای کد در یک سیستم عامل هست. شما یک برداشت غلطی از DLL دارید، و انتظار دارید دیگران هم برداشت خود را با شما منطبق کنند، و بر اساس آن یک کد فرضی بنویسند!
بهتر هست کمی درباره سه مفهوم DLL، Thread, و Process تحقیق کنید.


اقا این دی ال ال توسط مرورگر اجرامیشه
اگر پردازش های مرتبط باهاش رو ببندم مرور گر از کار نمیافته ؟

اگر توسط مرورگر استفاده میشه، پردازش مرتبط با آن میشه همون مرورگری که ازش استفاده میکنه.


اصلا چه طور پردازش های مرتبط را پیدا و ببندیم ؟
این مربوط به بخش دلفی یا سایت برنامه نویس نمیشه. باید برید در سایتی که بخشی برای رفع مشکلات ویندوزی داره، این را بپرسید. برای اینکه کارتان راه بیافته، درباره SysInternals Process Explorer در اینترنت جستجو کنید.