سلام و خسته نباشيد
چوري ميشه حافظه Ram و CPU را كاملا مشغول كرد.
ميشه تو اين زمنيه يه كد برنامه در اختيار من بزاريد
با تشكر
سلام و خسته نباشيد
چوري ميشه حافظه Ram و CPU را كاملا مشغول كرد.
ميشه تو اين زمنيه يه كد برنامه در اختيار من بزاريد
با تشكر
سلام !!
نمیدنم منظورتون کد های پیشرفته اس یا ساده !
اگه پیشرفته رو میگین که نمیدونم ولی راه های ساده :
1. استفاده از for های تودرتو و دراز با اعداد خفن
2. استفاده از شرط های همیشه درست در while - for 0 (مثلا تا وقتی 1<2 !)
3. استفاده مدام از دستورات تاخیر (انداختن دستور تاخیرتو for )
فکر کنم همینا بدرد بخوره ... اگه منظورتون پیشرفته اس که نمدنم !
ممنون از جوابتون
با اين دستورات فقط CPU درگير ميشه.من ميخوام حافظه RAM رو هم درگير كنم.
مرسي
تازه با ایندستورات که این دوستمون میگه کل cpu هم اشغال نمیشه اگه دقت کرده باشین نهایت استفاده از cpu تو ویندوز xp واسه برنامه های ++c ، 50 درصده و این مقدار برای ویندوز 7 ، 25 درصده من هرکاری هرکردم نتونستم از این مقدار بیشتر درگیرش کنم.
اره ... متاسفانه به این نکات توجه نکرده بودم ... ممنون از این که بهم گفتن !
ولی نکته مهم اینه که ما باید هدفمون رو مشخص کنیم ... ((هدف از نوشتن این برنامه چبه ؟ و قراره برای چه این کارو انجام بده ؟))
سوال مهم اونه !!
اگه منظورمون نوشتن یه جور برنامه مردم آزار هستش که با همون کارایی که گفتم هم میشه درستش کرد.
اما ... اگر این برنامه کاربردی نیست و فقط برای یادگیری هستش ... که درسته و من اشتباه کردم !!!
در این مورد چیزی نمدنم ... اما سعی میکنم تا چند روز آینده یه چیزایی گیربیارم ... شاید پیدا شد !
و لطفا اگر کسی میدونه بیاد بگه ...
اين برنامه واسه مردم آزاري نيست.يه پروژه هستش كه فكر من رو حسابي مشغول كرده.
ممنون ميشم كه كمك كنيد.
می نونی این کارو بکنی که هی بیاد نیوفلدر بسازه! اگر خواستی می تونی توش یه چیزی هم کپی کنی!
می بخشین !!! گفتم شاید زدین تو کار ویروس نویسی !
اتفاقا خیلی جالبه ... برای منم این پروزه مهم شده ...
فکر نکنم این کاری که دوستمون میگن جواب بده ... فعلا نمیتونم امتحانش کنم ... ولی احتمالا ... نمیدونم ... شایدم جواب بده ...
ولی اون طوری که من تو تصورم هست ... استفاده از For های با ارقام بالا و تودرتو خیلی بهتر از ساخت نیو فولدر باید جواب بده ... نمیدونم !!!
اما ...
حالا که این دوستمون بحث نیو فولدر رو پیش کشیدن یه راه جالب به ذهنم رسید ...
اگه ما مرتبا به برنامه بگیم که یک فایل حجیم (عکس و فیلم و یا هر چیزدیگه ای ...) رو همزمان در چند جا کپی کنه و هی این کارو ادامه بده ... شاید بشه سیستم رو هنگوند !!!
داخل ویندوز نمیتونی این کار رو انجام بدید مگر اینکه سیستم عامل رو با استفاده از api از کار بندازی تا نتونه برای سایر پردازشها زمانی بررسی بده.چوري ميشه حافظه Ram و CPU را كاملا مشغول كرد.
ولی داخل داس یک while که شرط true داشته باشه میتونه کارساز یاشه در ضمن وقفه ها رو هم بوسیله cli که مریوطه به دستورات اسمبلی هست از کار بندازید.
سلام به همگی!
استفاده از فور حالت پلکانی داره!نمیتونه سریع کار رو تموم کنه!
به نظر من باید یا تعداد زیادی ثبات از سی پی یو گرفت!پر کردن رم خیلی سخت نیست!
برای مشغول کردن سی پی یو باید یک عالمه عملیات منطقی گذاشت.مثلا یک فایل رو بی نهایت بار رمز گذاری کنه!
متغیر های عمومی اگر دارای مقدار اولیه نباشند برابر با صفر اند.متغیر های long double هشت بایتی اند.کافیه برای یک رم 1 گیگ یک آرایه به طول 125000000 ایجاد بشه(عمومی)
از این مقدار حد اکثرش رو بساز و بقیه اش هم میشه با خرت و پرت های دیگه پر کرد.حالا کافیه یک فایه یک فایل کپی بشه...
مشکل اصلی سی پی یو هست!
فکر کردی داری داری تو Ring 0 کد مینویسی ؟!متغیر های عمومی اگر دارای مقدار اولیه نباشند برابر با صفر اند.متغیر های long double هشت بایتی اند.کافیه برای یک رم 1 گیگ یک آرایه به طول 125000000 ایجاد بشه(عمومی)
از این مقدار حد اکثرش رو بساز و بقیه اش هم میشه با خرت و پرت های دیگه پر کرد.حالا کافیه یک فایه یک فایل کپی بشه...
برنامه شما به صورت User Mode اجرا میشه ، تو User Mode پروسه برنامه شما یه دید مجازی از حافظه داره و Memory Management ویندوز طوری حافظه رو مدیریت میکنه که هر پروسه خیال میکنه فضای زیادی به صورت اختصاصی در اختیار خودش داره ، تازه بحث Page File به کنار ... !
قبول دارم!توی ویندوز این کار خیلی سخته!
شما اگه بتونی رم رو پر کنی حریف هارد که نمیشی!
یا باید توی داس این کار رو کرد یا توی ویندوز از همین روش های سنتی خودمون استفاده کنیم.
من با یک جدول ضرب سی پی یو رو تا 60 الی 90 و خورده ای درصد اشغال کردم.تا جایی که دیگه موس به زور تکون میخورد!
راه دوم استفاده از تعداد بسیار زیادی وقفه کرد که پشت سر هم سی پی یو رو آزار بدن!البته این هم ایراد هایی داره!مثلا حتی تکون خوردن موس هم ما رو دچار مشکل میکنه!
راهی هست که پاور سیور رو فعال کرد، بدون اینکه کاربر بدون مراجعه به اون قسمته کنترل پنل بفهمه؟ چون رو حالت پلور سیور قابلیت سیستم پایین می آد.
یه راهه دیگه ای که به ذهنم می رسه کپی کردن یه آهنگ تو نیو فلدره i هست اون هم رو دسکتاپ! قشنگ بعده چند دقیقه ترتیبه سیستمه طرف مقابل رو میده، می تونین اتو رانشو طوری تنظیم کنین که با باز کردنه یه برنامه شروع به کار کنه
کسی نیست یه نتیجه قطعی بگه ؟ ....
اصن یه فکر باحال ... اگه همه این کار ها رو با هم انجام بدم ... بالاخره پدر سیستم درمیاد دیگه ... ! یکیش که جواب میده دیگه !!!
به احتمال زیاد بشه از توی فایل های ریجستری این کار رو کرد!اما خیلی فایده نداره!
منظور شما رو از کپی کردن آهنگ نمیفهمم!
بهترین راه اینه که سی پی یو یک فایل ججیم رو رمز گذاری کنه و رم اون رو کپی کنه!و دوباره رمز گذاری و... .
اون وقته که .البته باید تو زمان کار سی پی یو سر رم رو گرم کرد و بالعکس.
راه بعدی وقفه هاست!که البته خیلی هم جالب نیست.
فایله حجیم مشکلش اینه که کپی کردنش طول می کشه،
راه دیگه ای که به ذهنم رسید اینه که چندین برنامه حاوی حلقه بی نهایت رو باهم باز کنیم، اینطوری کل سی پی یو رو فک کنم مشغول کنه!
یه سوال داشتم : چرا استفاده از وقفه ها خوب نیست ؟!
در ضمن من با چند تا فور سرکاری و توهمتوهم و کپی کردن پیاپی یه عکس ساده تونستم سی پی یو رو به 91 درصد برسونم !!! اما هر چی زور زدم بالاتر نرفت که نرفت !
اگه کار ساده باشه ویندوز اجازه نمیده که زیاد سی پی یو در گیر بشه!اگه توی ویندوز نباشی و سی پی یو داغ کنه ریست میشه!
در ضمن باید هم طول بکشه!
خوب اين راه حل كپي فايل زياد جالب نيست.يك راه حل اصولي بگيد.به نظر من اگه بتونيم همزمان رم و cpuرو مشغول كنيم همين طور كه دوستان گفتند با عمليات منطقي ، عمليات رمز نگاري و... شايد به نتيجه برسيم.
ممنون ميشم دوستان نمونه كد هايي كه نوشتن رو اينجا قرار بدن تا به يه نتيجه درست برسيم.
ممنون
چه وقفه ای میخواین بفرستین ؟!راه دوم استفاده از تعداد بسیار زیادی وقفه کرد که پشت سر هم سی پی یو رو آزار بدن!
تا وقتی تو User Mode کد مینویسید فراتر از اون نمیتونید عمل کنید ، یه نمونه برنامه با دلفی نوشتم که تو 2 تا Thread یک سری محاسبات ریاضی انجام میده ، Usage پردازنده هم به 100 میرسه ولی برای سیستم هیچ مشکلی پیش نمیاد چون ویندوز Multi Thread هست و این موارد در سطح Kernel به صورت دیگه ای دیده و کنترل میشن .
کی همچین حرفی رو زدیم!
به کجا ارجا بدیم کاری که میخوایید تا حالا به درد کسی نخورده که وقت بزاره و تحقیقی در موردش انجام بده فقط این کار باعث میشه بهتر با کار CPU و RAM آشنا بشید. البته راههای بهتری برای مطالعه در این زمینه وجود داره و میتونید کتاب در مورد پردازنده های بالای 8088 یعنی 80286 به بعد در این کتابها قسمت مد حفاظت شده رو مطالعه کنید.ممنون میشم اگه یکم دیگه توضیح بدین ... یا اقلا به یه جایی ارجا بدن !!!
در هر صورت میشه این کار رو داخل ویندوز انجام داد ولی باید با api سیستم مرکزی ویندوز رو از کار بندازید یه نگاهی به لیست پردازشهای taskManager بندازید یکی از پردازشها مربوط به سیستم مرکزی ویندوز هست اگر متوقف بشه ویندوز از کار میفته.
درسته این پروژه کاربردی نیس و بدرد هیشکی هم نخورده ... اما بما کمک میکنه با ساختار .............. همون چیزی که شما اشاره کردی !!!
حالا این کتابا چین ... ای بوک ای چیزی سراغ درن ؟! ممنون میشم کمک کنن ...
این برنامه یه حلقه بی نهایت سادست، یدونه که هست، یه سه تا کپی دیگه ازش درست کنین سی پی یو یوزیج رو می کنه 100!
کد خاصی نیست :دی، با فریم ورک چهار نوشته بودم، ببخشید این فایل ضمیمه جدید رو با فریم ورک 2 نوشتم دیگه فکر کنم کار کنه، 4 تا فایله exe رو با هم باز کن به 100% می رسه
اتوران اومدم بسازم براش، آنتی ویریوس دلیتش کرد :دی
#include "stdafx.h"
#include "iostream"
using namespace std;
int main()
{
int a=15000000;
while(1){
a++;
a--;
}
return 0;
}
چرا اینجا تعطیله؟؟؟تازه داشت جالب میشد!!!
فکر کنم دیگه به اندازه ی کافی اینجا ایده باشه!!!
بهتره تست کنیم ببینیم کدوم بهتر کار مبکنه!!!
3 صفحه ایده کمه؟؟؟
این که چند تا از یک برنامه رو باز کنیم اصلا جالب نیست!
یا باید یک حلقه ی خیلی سنگین باشه،یا چند تا حلقه توی یک برنامه که با هم باز بشن و یا این که 4 تا فایل باشند و یک برنامه ی دیگه هم باشه که 4 تاشون رو یک جا باز کنه!!!
راه اولی راحت تره!!!
دوستان این برنامه رم رو تو چند ثانیه پر میکنه : مواظب باشید به سیستموتون لطمه نزنه :
#include "stdafx.h"یا میتونید از این استفاده کنید که تو یه ثانیه پر میکنه :
#include "iostream"
using namespace std;
struct node
{
long double i;
node *next;
};
node *getnode()
{
node* q;
q= new struct node;
return q;
}
int main()
{
node *top;
top=getnode();
while(1)
{
node *p;
p=getnode();
p->next=top;
top=p;
}
return 0;
}
#include "stdafx.h"
#include "iostream"
using namespace std;
struct node
{
long double i1;
long double i2;
long double i3;
long double i4;
long double i5;
long double i6;
long double i7;
long double i8;
long double i9;
long double i10;
long double i11;
long double i12;
long double i13;
long double i14;
long double i15;
long double i16;
long double i17;
long double i18;
node *next;
};
node *getnode()
{
node* q;
q= new struct node;
return q;
}
int main()
{
node *top;
top=getnode();
while(1)
{
node *p;
p=getnode();
p->next=top;
top=p;
}
return 0;
}
آخرین ویرایش به وسیله Arcsinos : پنج شنبه 09 دی 1389 در 13:45 عصر
چرا که نه :
این برنامه اول میاد یه ساختار با نام nod درست میکنه که شامل یه عدد long double و یه اشاره گر به یه nod دیگه .
حالا تو برنامه ی اصلی گفتم هی بیاد از این nod ها درست کنه و node top که بالا ترین nod هست به اون nod ایجاد شده اشاره کنه ،
حالا تو اون حلقه یwhile انقدر از اون nod ها درست میکنیم تا ram پر میشه ،
حالا تو کد دوم به جای یه دونه عدد long double 20 تا درست میکنیم تا حافظه زودتر پر شه .
کافی بود
جالبه ولی مطمئنی که کار میکنه؟؟؟
تستش کردی؟؟؟
خب من که کد رو گذاشتم میتونی امتحانش کنی ، بهتره از کد دومی استفاده کنی که زود تر به نتیجه برسی .
اصلا از این استفاده کن که زیاد هم پیچیده نیست :
#include "stdafx.h"
#include "iostream"
using namespace std;
struct node
{
long double i;
};
node *getnode()
{
node* q;
q= new struct node;
return q;
}
int main()
{
while(1)
{
node *p;
p=getnode();
}
return 0;
}
برنامه خوبیه ولی بعده اینکه 2.2 گیگ رم رو پر کرد این ارور رو داد:
Unhandled exception at 0x75e39617 in h.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0014f6ec..
این قسمت از کدت رو هم نفهمیدم می شه یه توضیح بدی :دی
node *getnode()
{
node* q;
q= new struct node;
return q;
}
دوست عزیز چون که رمت پر شد این ارور رو داد دیگه ، اون قسمتی که بعد از ارور یه فلش سبز میاد کنارش میخواد یه nod جدید رو تو حافظه درست کنه که نمیتونه درست کنه و از برنامه خارج میشه ، باید یه جوری به مقدار خالی رم دسترسی پیدا کنیم و به اندازه ی اون حلقه ی for رو ادامه بدیم . الان دیگه ایراد نمیگیره :
#include "stdafx.h"
#include "iostream"
using namespace std;
struct node
{
long double i;
};
int main()
{
int i=0;
for(i=0;i<28500000;i++)
{
node *p;
p= new struct node;
}
while(1)
{
}
return 0;
}