[quote]شما باید وارد محیط Command Prompt شوید و سپس دستور مورد نظرتان را اجرا کنید (در قسمت run ویندوز دستور cmd را اجرا کنید)[quote\]
در command prompt کد زیر را نوشتم :
bacc -h c:\dekker.cm بعد که اینتر را زدم گفت bacc را نمی شناسه!!!
Printable View
[quote]شما باید وارد محیط Command Prompt شوید و سپس دستور مورد نظرتان را اجرا کنید (در قسمت run ویندوز دستور cmd را اجرا کنید)[quote\]
در command prompt کد زیر را نوشتم :
bacc -h c:\dekker.cm بعد که اینتر را زدم گفت bacc را نمی شناسه!!!
شما باید bacc در Path سیستم موجود باشد، و الا باید این دستور را در فولدری اجرا کنید که bacc در آن قرار گرفتهنقل قول:
در command prompt کد زیر را نوشتم :
bacc -h c:\dekker.cm بعد که اینتر را زدم گفت bacc را نمی شناسه!!!
الگوریتم پترسون برای اجرا در محیط Baci را چگونه باید بنویسیم برای بیش از دو پروسس؟
نوشتن این الگوریتم برای بیش از دو پروسس تفاوت چندانی با حالت دو پروسه ای ندارد ، فقط شما باید یک متغیر turn داشته باشید که بین پروسه ها گردش کند (توجه داشته باشید که Baci فقط یک ابزار است و الگوریتم هایی که وجود دارد باید در همه جا بخوبی کار کنند)
نمونه ای از الگوریتم پترسن را برای بیش از دو پروسه در اینجا ببینید
salam shoma mavaredi ke dar ghesmate dovome tashihe gozaresh...
gharar daden...man anjam dadam..
vali bazham ..file bass basteh shod va man khoroji moshahedeh nakardam,,, man cheguneh mitavanam dar command promt ejra konam...
با سلام و عرض خیر مقدم ، لطفا قبل از هر کار قوانین سایت را مطالعه فرمائید :چشمک: و پست های خود را فارسی تایپ کنید.
این برنامه را شما باید در محیط Command Prompt اجرا کنید برای این کار در RUN در منو Start ویندوز دستور زیر را تایپ کنید
در صورتی که از ویندوز های سری 98 استفاده می کنید باید به جای Cmd بنویسید Command
cmd
سپس محیط Command Prompt برای شما نمایش داده می شود که بصورت پیش فرض در دایرکتوری My Document شما قرار می گیرد. شما باید برای اجرای دستورات به دایرکتوری Baci بروید. فرض کنید این دایرکتوری را در درایو D قرارداده اید برای رفتن به آن قسمت دستورات زیر را به ترتیب اجرا کنید.
برای اینکه مطمئن شوید درست عمل کرده اید دستور زیر را اجرا کنید
d:
cd\
cd baci
نتیجه این دستور باید help سوئیچ های مختلف Baci باشد.
bacc -h
اگر بازهم مشکلی داشتید مواردی را که دنبال کرده اید در اینجا ذکر کنید تا بشه مشکل شما را حل کرد.
-----------------------------------------------------------------
پ.ن : یکی از دوستان طریقه پیاده سازی الگوریتم Deadlock و آرایشگر را خواستند و برای اینکه سایر دوستان هم استفاده کنند آنها را در اینجا می نویسم.
طریقه شبیه سازی بن بست :
طریقه تصحیح بن بست :
// * * * * * * * * * * * * Dead Lock * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
int flag[2];
void ProcessA(){
flag[0]=1;
while(flag[1]) cout<<"Do Nothing In Process A\n";
cout<<"Enter In Critical Section Process A\n";
flag[0]= 0;
}
void ProcessB(){;
flag[1]= 1;
while (flag[0])cout<<"Do Nothing In Process B\n";
cout<<"Enter In Critical Section Process B\n";
flag[1]= 0;
}
void main(){
cobegin{
ProcessA;
ProcessB;
}
}
الگوریتم آرایشگر منصف :
// * * * * * * * * * * Fix Dead Lock * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
int flag[2];
void ProcessA(){
while (flag[1]){
flag[0]= 0;
cout<<"Delay For Short Time In Process B\n";
flag[0]= 1;
}
cout<<"Enter In Critical Section Process A\n";
flag[0]= 0;
}
void ProcessB(){
while (flag[0]){
flag[1]= 0;
cout<<"Delay For Short Time In ProcessB\n";
flag[1]= 1;
}
cout<<"Enter In Critical Section Process B\n";
flag[1]= 0;
}
void main(){
cobegin{
ProcessA();
ProcessB();
}
}
الگوریتم آرایشگر غیر منصف :
// * * * * * * * * * * Barbery With FairFul Barber * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
int loop=0;
int queue[20];
semaphore max_capacity;
semaphore sofa;
semaphore barber_chair,coord;
semaphore mutex1,mutex2;
semaphore cust_ready,leave_b_chair,payment,receipt;
semaphore finished[50];
int count;
void Customer(){
int custnr;
wait(max_capacity);
cout<<"Customer Enter The Barbery\n";
wait(mutex1);
count++;
custnr= count;
signal(mutex1);
wait(sofa);
cout<<"Customer Sitting On Bench\n";
wait(barber_chair);
cout<<"Customer Getting Up From Bench\n";
signal(sofa);
cout<<"Customer Sitting On The Barber Chair\n";
wait(mutex2);
if (loop<19) queue[loop++]=custnr;
signal(cust_ready);
signal(mutex2);
wait(finished[custnr]);
cout<<"Customer Leave The Barber Chair\n";
signal(leave_b_chair);
cout<<"Customer Pay The Payment\n";
signal(payment);
wait(receipt);
cout<<"Customer Leave The Shop\n";
signal(max_capacity);
}
void Barber(){
int b_cust;
do{
wait(cust_ready);
wait(mutex2);
if (loop>0){
for(b_cust=0;b_cust<loop;b_cust++){
queue[b_cust-1]= queue[b_cust];
b_cust= b_cust+1;
loop--;
}
}
signal(mutex2);
wait(coord);
cout<<"Baraber Is Cut The Hair\n";
signal(coord);
signal(finished[b_cust]);
wait(leave_b_chair);
signal(barber_chair);
}while(1);
}
void Cashier(){
do{
wait(payment);
wait(coord);
cout<<"Cashier Accept The Payment\n";
signal(coord);
signal(receipt);
}while(1);
}
void main(){
int i;
initialsem(max_capacity,20);
initialsem(sofa,4);
initialsem(barber_chair,3);
initialsem(coord,3);
initialsem(mutex1,1);
initialsem(mutex2,1);
initialsem(cust_ready,0);
initialsem(leave_b_chair,0);
initialsem(payment,0);
initialsem(receipt,0);
for(i=0;i<50;i++) initialsem(finished[i],0);
cobegin{
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();
Barber();
Barber();
Barber();
Cashier();
}
}
هر چند اعتقاد من بر این است که انجام این تمرینها باعث درک صحیحی از سیستم عامل می شود ، و بهتر است دوستان سعی کنند خودشان این کد ها را پیاده سازی و اجرا نمایند.:لبخندساده:
// * * * * * * Barbery With Non FairFul Barber * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
semaphore max_capacity;
semaphore sofa;
semaphore barber_chair,coord;
semaphore cust_ready,finished,leave_b_chair,payment,receipt;
void Customer(){
wait(max_capacity);
cout<<"Customer Enter The Barbery\n";
wait(sofa);
cout<<"Customer Sitting On Bench\n";
wait(barber_chair);
cout<<"Customer Getting Up From Bench\n";
signal(sofa);
cout<<"Customer Sitting On The Barber Chair\n";
signal(cust_ready);
wait(finished);
cout<<"Customer Leave The Barber Chair\n";
signal(leave_b_chair);
cout<<"Customer Pay The Payment\n";
signal(payment);
wait(receipt);
cout<<"Customer Leave The Shop\n";
signal(max_capacity);
}
void Barber(){
do{
wait(cust_ready);
wait(coord);
cout<<"Baraber Is Cut The Hair\n";
signal(coord);
signal(finished);
wait(leave_b_chair);
signal(barber_chair);
}while(1);
}
void Cashier(){;
do{
wait(payment);
wait(coord);
cout<<"Cashier Accept The Payment\n";
signal(coord);
signal(receipt);
}while(1);
}
void main(){
initialsem(max_capacity,20);
initialsem(sofa,4);
initialsem(barber_chair,3);
initialsem(coord,3);
initialsem(cust_ready,0);
initialsem(finished,0);
initialsem(leave_b_chair,0);
initialsem(payment,0);
initialsem(receipt,0);
cobegin{
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();Customer();Customer();Custom er();Customer();
Customer();Customer();
Barber();
Barber();
Barber();
Cashier();
}
}
سلام...من دستوراتی که شما گفتید انجام دادم و فایل را در not padبه نام barber .cmذخیره کردم.زمانی که نام فایل را می خواهد به صورت bacc barber.cmمی دهم ولی پیغام می دهد نمی تواند باز کند.من به صورت\ D:\my folder\ barber.cmهم دادم ولی باز error داد تشکر فراوان از کمک شما
امیدوارم نام فایل اشتباه تایپی باشد و فاصله نداشته باشد. این پیغام زمانی روی می دهد که Baci نتواند فایل را پیدا کند شما احتمالا مسیر درست را به آن نمی دهید. دقت کنید که حتما پسوند فایل را CM بدهید، دقت کنید اگر فایل را با ویندوز می سازید نمایش پسوند ها را فعال کنید و مطمئن شوید پسوند CM باشد نه CM.TXT
برای راحتی فایلی که ساختید را در پوشه Baci قرار داده و سپس دستور bacc را اجرا کنید این فرمان از شما نام فایل را می خواهد که بعد نام فایل را به همراه پسوند آن به آن دهید اگر همه کار را درست انجام داده باشید پیغامی مبتنی بر ساخته شدن فایل Pco خواهید گرفت.
در صورتی که مشکل داشتید بپرسید
موفق باشید
سلام... من چه طوری می توانم مطمین شم که پسوند فایل cmاست نه txt.cmهم چنین منظورتان از ساختن با windowsچیه؟من الگوریتم را با not pad ذخیره کردم.نمایش پسوند چگونه فعال می شود؟را ستی فاصله هم ندارد.من در قسمت proprties فایلی که با not padذخیره شده نگاه کردم به صورت barber.cmاست نه cm.txtباز هم error می دهد.
با تمام وجود از راهنماییتون ممنونم.
من دو راه می نویسم هر کدام راحتتر است را انجام دهید:
1- در Command Prompt (وقتی که ازcmd استفاده می کنید) با استفاده از دستور dir در شاخه ای که فایل را ذخیره کرده اید پسوند نام کامل فایل را خواهید دید.
2- در Explorer ویندوز (iهنگامی که My Computer را اجرا می کنید) به منوی Tools رفته و Folder Option را انتخاب کنید سپس در تب View گزینه Hide Extentions For known File Type را از حالت انتخاب در بیاورید. بوسیله این کار شما پسوند های نام فایل را خواهید دید
موفق باشید
این الگوریتم همان الگوریتم پترسن است، اگر دقت کنید متغیر turn و متغیر Flag بصورت آرایه در آمده که هر خانه آن یک پروسه را نشان می دهد. i نشان دهنده پروسه iام می باشد و متغیر L نشان دهنده تعداد پروسه ها می باشد. الگوریتم پترسن به پروسه ای اجازه ورود به ناحیه بحرانی را می دهد که متغیر turn را بدست آورده باشد و اولویت آن از سایر پروسه هایی که turn را داشته باشند ، بیشتر باشد.نقل قول:
در این لینک در مورد بیش از دو پروسس چیزی نگفته میشه بیشتر راهنمایی کنید
این روش فقط یک راه حل است ،اما راه حل عملی نمی باشد. چون یک سیستم نیاز به وقفه دارد و از کار انداختن وقفه باعث گرسنگی یا بن بست خواهد شد. الگوریتم هایی که بصورت nonpreemptive عمل می کنند معمولا از این روش استفاده می کنند. (راه حلی برای سوال شما پیدا سراغ ندارم :( )نقل قول:
یک روش برای ناحیه بحرانی از کار انداختن وقفه است این کار را با چه دستوری میشه انجام داد؟
به نظر شما این الگوریتم نیاز به همرندی دارد ؟ ;)نقل قول:
الگوریتم بانکداران برای رفع بن بست را چه جوری میشه شبیه سازی کرد؟
در کل پیاده سازی این الگوریتم زیاد سخت نیست ، فقط باید دو ماتریس و دو آرایه در نظر بگیرید و بر اساس الگوریتم آنرا پر کنید.
موفق باشید
سلام با تشکر فراوان از زحمات شما
من در baciنام فایل را دادم جمله های زیر برام امد:
pcode and tables are sorted in D:\barber.pco
compilation kisting is stored in D:\barber.lstحالا باید چی کار کنم؟در bainterp.exeوقتی نام فایل را به صورت D:\barber.pcoمی زنم bainterp .exe بسته می شود چرا؟
ایا باید در cmd دستور خاصی را تایپ کنم..و چگونه باید خروجی را مشاهده کنم
با تشکر فراوان
دستور خاصی لازم نیست کافیه آنرا با bainterp اجرا کنید
(اگر barber.pco در جایی غیر از فولدر baintrep است باید مسیر آنرا نیز بنویسید)
bainterp baber.pco
اگر دستور بالا جواب نداد بدون پسوند امتحان کنید ، خروجی باید چیزی شبیه این باشه
سلام واقعا دیگه روم نمی شه سوال بپرسم ولی چاره ای ندارم... شرمنده...
من اسم را به چند صورت زیر زدم ولی باز هم بسته می شود.d:\bainterp barber.pco
bainterp barber.pco bainterp barber d:\bainterp barberولی بازم بسته شد چی کار کنم..من خیلی وقت ندارم برای تحویل دادنش.
من خروجی را باید در همون bainterp مشاهده کنم یا جای دیگر...
مرسی از راهنماییتون..
دوست عزیز اینجا محلی برای تبادل اطلاعات و پرسش و پاسخ است http://qsmile.com/qsimages/38.gif
منظور شما از بسته شدن چیه ؟ یا باید دستور یک خروجی بدهد یا پیغام خطا؟
آیا شما این دستور را در Command Prompt اجرا می کنید(یعنی با دستور cmd وارد می شوید و بعد دستور را اجرا می کنید؟). فایل barber.pco در کجا ذخیره شده ؟
سلام من صفحه bainterp .exeنمی بینم..وقتی اسم فایل را می زنم..نه پیغام خطا نه خروجی..
نه من در bainterp .exe می زنم...barber.pcoدر درایو Dکنار bainterp.exe ذخیره کردم.من در cmd این کار را نمی کنم. مرسی از راهنماییتون
شما این کار را باید در cmd انجام دهید، دلیلش اینه که این الگوریتم اجرا میشه و تمام میشه و سپس بسته میشه! و شما خروجی را نمی بینید،اگر این کار را در cmd انجام دهید بعد از تمام شدن الگوریتم به خط فرمان بر می گردد و شما خروجی را خواهید دید
سلام صمیمانه از راهنماییتون ممنونم...با لاخره خروجی را دیدم..
کمال تشکر را از همکا ریتون دارم..
خدا نگه دار
سلام .با تشکر از زحمات فراوان شما....
من چه جوری می توانم خروجی cmdرا در mailخودم یا not padکپی کنم.
ایا دستور خاصی دارد؟
با تشکر :ازاده
برای این کار سه راه دارید یکی اینکه از صفحه عکس بگیرید و به mail ، پیوست کنید یا خروجی را بر copy/paste کنید در notepad یا خروجی را در یک فایل بریزید.
1- هنگامی که خروجی را دیدید دکمه های alt+Print Scrn را فشار دهید ،سپس Notepad را باز کرده و یک فایل جدید ایجاد کنید و دکمه Ctrl+v را فشار دهید (Paste کنید) ، و فایل را ذخیره کنید
2- بر روی آیکن cmd در گوشه بالای صفحه سمت چپ کلیک کنید و گزینه edit و سپس mark را انتخاب کنید و با ماوس قسمت دلخواه خود را انتخاب کنید ، سپس notepad را باز کرده و ctrl+v را فشار دهید . قسمت انتخاب شده paste می شود.
3- دستور آخر را به صورت زیر اجر کنید
bainterp barber.pco > output.txt
با این کار خروجی در فایل output.txt (در همان دایرکتوری) ذخیره می شود
موفق باشید
بعد این فایل متنی کجا ذخیره می شود؟
اگر مسیری به آن ندهید در کنار فایل baintrep دخیره می شود
با سلام
من کد و الگوریتم baker (نانوایی) را به زبان C++ می خواهم
با تشکر
من ps.zip( برای الگوریتمهای زمانبندی) را دانلود کردم برای کار با این محیط در ویندوز در خط فرمان، runps.bat را اجرا کردم به صورت زیر شد باید چی کار کنم؟
مسیر را در قبل از نام فایل خروجی بنویسیدنقل قول:
برای من ذخیره نمیشه چه جوری باید مسیر بدم؟
شما باید جاوا را بر روی کامپیوتر خود نصب داشته باشید!نقل قول:
من ps.zip( برای الگوریتمهای زمانبندی) را دانلود کردم برای کار با این محیط در ویندوز در خط فرمان، runps.bat را اجرا کردم به صورت زیر شد باید چی کار کنم؟
مثلا اگر بخوام در درایو c ذخیره کنم باید چه کدی بنویسم؟
چه نسخه ای از java مناسب ps است (me,ee,se)؟( من یک فایل اجرایی دانلود کردم به نام Msjavx86 (microsoft VM) نصب هم شد ولی باز با اجرای Runps.bat همون پیغام قبلی را می ده!!)
سایتی در اینترنت هست که بتونم java را از آنجا دانلود کنم (اکثر سایتها حجم 100m دارند که قابل دانلود نیست؟
نقل قول:
مثلا اگر بخوام در درایو c ذخیره کنم باید چه کدی بنویسم؟
bainterp barber.pco > c:\output.txt
هرنسخه ای که بتواند java را اجرا کند. (من از JRE استفاده می کنم)نقل قول:
چه نسخه ای از java مناسب ps است (me,ee,se)؟
اگر می خواهید از این سایت بگیرید باید ابتدا Sun Download Manager را نصب کنید .
نسخه 5.0 را می توانید از اینجا بگیرید
فکر می کنم تاپیک داره از بحثش خارج می شود، لطفا سوالات را در مورد موضوع تاپیک مطرح کنید
با تشکر
من بالاخره جاوا را نصب کردم و پنجره اصلی شبیه ساز باز شد حالا چه جوری باید پروسس ها را به صورت ورودی به این شبیه ساز بدم برای زمانبندی آنها؟
شما باید با استفاده از فایل های همراه با این نرم افزار این کار را انجام دهید، برای اطلاعات بیشتر به اینجا بروید
من این راهنما را خوندم و فایلهای مربوطه را دانلود کردم و صفحه Process Scheduling Simulator هم باز شد ولی نمی دونم چه جوری باید در این شبیه ساز یک experiment جدید تعریف کنم
من متوجه منظور شما نشدم،در کل شما باید دو فایل داشته باشید
فایل extension .exp و فایل extension .run
بعد آنها را می توانید جایگزین فایلهای موجو در دایرکتوری کنید،یا خود آنها را ویرایش کنید
بعد با استفاده از گزینه Run آنها را اجرا کنید
من ps.zip را دانلود کردم 5 فایل زیر درون آن بود runps.bat را که اجرا می کنم پنجره ای باز می شه که بعد از این دیگه نمی دونم باید چی کار کنم!
PS.jar
Jeli.jar
psconfig
myrun.run
myexp.exp
runps.bat
شما باید تغییرات خود را در فایل های myrun.run و myexp.exp اعمال کنید
سلام
من می خوام الگوریتم first fit را کد نویسی کنم اما در پیاده سازی الگوریتمش مشکل دارم میشه منو راهنمایی کنید؟
با تشکر
چه مشکلی با این الگوریتم دارید؟ کافیه مثلا یک آرایه در نظر بگیرید که هر کدام از خانه های آنها دارای یک تگ استفاده شده یا نشده باشد، برای تخصیص آن از ابتدا شروع به خواندن آرایه کنید و به اولین خانه خالی که رسیدید تگ آنرا یک کنید
(سعی کنید سوالهایتان را در باره موضوع تاپیک بپرسید)
سلام
آخه آرایه خونه هاش همه 1 ظرفیت ثابت دارند در حالیکه شاید فضاهای مورد درخواست کاربر زیادتر از مقدار از پیش تعیین شده آرایه باشه؟
با تشکر
تمام الگوریتمهای مربوط به مدیریت حافظه و مدیریت پروسس و زمانبندی را می توان با زبان c پیاده سازی کرد؟
دوست عزیز ابتدا شما باید مشخص کنید می خواهید از قطعه بندی استفاده کنید یا صفحه بندی؟نقل قول:
آخه آرایه خونه هاش همه 1 ظرفیت ثابت دارند در حالیکه شاید فضاهای مورد درخواست کاربر زیادتر از مقدار از پیش تعیین شده آرایه باشه؟
هر الگوریتمی را می توان با زبانهای مختلف پیاده سازی کرد!نقل قول:
تمام الگوریتمهای مربوط به مدیریت حافظه و مدیریت پروسس و زمانبندی را می توان با زبان c پیاده سازی کرد؟
با سلام
من متوجه دلیل شما از این سوال نشدم ولی واسه نوشتن برنامه قطعه بندی را ترجیح میدم
میشه در مورد الگوریتم هایی که نوشتید(خوانندگان و نویسندگان و آرایشگر ) یه توضیح بدید؟(در مورد متغیرهاو...)
ممنون میشم
با تشکر
من می خواستم ببینم می خواهید نحوه پیاده سازی به چه روش باشه، بهر حال شما باز هم می توانید از یک آرایه استفاده کنید با این تفاوت که هر برنامه شما می تواند به تعدادی دلخواه از خانه های آرایه شما را بگیرد و نحوه کار بازهم به شکل قبل می شود. ولی اگر می خواهید دقیقا چیزی که در حافظه انجام می شود را پیاده سازی کنید (که بعید اساتید سیستم عامل این چنین چیزی را بخواهند) باید به ازای هر پیج مثلا یک آرایه N بایتی Allocate کنید و مدیریت حافظه آنرا خود بر عهده بگیرید.اگر فقط می خواهید از قطعه بندی استفاده کنید مثلا N باید به به عنوان یک پیج در نظر بگیرید سپس فرض کنید که هر بایت با 0 یعنی خالی و با یک یعنی پر نشان داده شده سپس هر برنامه باید بداند که در کجا ها نوشته ،پس باید برای هر برنامه یک لیست پیوندی در نظر بگیرید مو قعیت برنامه در حافظه را نشان می دهد ،حال هر برنامه جدید می بایست برای ذخیره شدن در حافظه این فضا را از ابتدا بخواند (برای الگوریتم اول First Fit) هر جا فضای خالی پیدا کرد بنویسد ،برای این کار شما باید یک لیست پیوندی برای فضاهای خالی نیز داشته باشد که کارتان تقریبا خیلی سخت میشه!
در مورد الگوریتم ها تقریبا توضیحات کافی داده شده اگر مورد خاصی را مد نظر دارید آنرا عنوان کنید تا توضیح دهم،ضمن اینکه بسیاری از این الگوریتم ها بطو کامل در کتابهای سیستم عامل وجود دارد
موفق باشید
سلام
اجازه بدید من سوالمو بصورت عددی بیان کنم تا شما بتونید منو راهنمایی کنید
فرض کنید که من یک آرایه از نوع int تعریف کنم و کاربر فضاهایی مثل ((44770-54852-...))(البته زبان مورد نظر من c است) درخواست کنه حالا چطور میشه درخواستهای کاربر را با این روش جواب داد؟
در مورد الگوریتمهای (آرایشگر - خوانندگان و نویسندگان) من توضیحی در مورد هدف از تعریف متغیر ها می خواستم
باتشکر
در الگوریتم های تخصیص حافظه این سیستم عامل است که فضای مورد نیاز برنامه را به برنامه تخصیص می دهد، بعضی از برنامه های هستند که برنامه از حافظه Heap یا حتی پشته می تواند فضایی را درخواست نماید که این مربوط به الگوریتم های تخصیص حافظه نمی شود، شما برای شبیه سازی این الگوریتم ها خودتان باید فرضیاتی را لحاظ کنید ، برای روشن شدن موضوع مثالی می زنم، فرض کنید آرایه ای 10 عنصری داشته باشید که حافظه شما را تشکیل می دهد. حال فرض کنید پروسه های زیر وارد می شوند
P1....5
p2....4
p1...Dispose
p3...3
p4....3
p3...Dispose
p5....1
حال نحوه پر شدن آرایه باید به شکل زیر باشد(O به منزله جای خالی در آرایه و * ناحیه اشغال شده است)
OOOOOOOOOO
*****OOOOO
*********O
OOOOO****O
***OO****O
p4 در اینجا Suspend می شود
****O****O
شما باید با برنامه ای که می نویسید برای این سناریو ، همچین چیزی را به عنوان خروجی در آورید.
لطفا به شماره پست و نام متغیر مورد نظرتان اشاره کنیدنقل قول:
در مورد الگوریتمهای (آرایشگر - خوانندگان و نویسندگان) من توضیحی در مورد هدف از تعریف متغیر ها می خواست
با سلام
خوب مشکل من هم در پیاده سازی این الگوریتم همینه!
من نمیدونم چطور این فضا رو شبیه سازی کنم تا وقتی 1 فضا توسط درخواست کاربر اشغال شد و از همون خانه اگر مقداری فضا باقی ماند و الگوریتم برای بار بعد که search فضای خالی رو از سر میگیره چطور دوباره از فضای آن خانه خالی استفاده کنه؟
(مثال عددی: مثلا خانه اول ما 100 تا فضا داره و کاربر 60 تا تقاضا میکنه خوب از همین خانه اول 40 تا باقی میمونه و برای درخواست دوم کاربر این فضا هم باید به عنوان فضای خالی در نظر گرفته بشه تا مثلا اگر کاربر تقاضای فضای 40 یا کمتر را داد همین فضای باقی مانده به درخواست دومش تخصیص یابد )
تا اونجا که من میدونم این مطلب بوسیله آرایه قابل پیاده سازی نیست
اگه میشه منو سریعتر راهنمایی کنید چون من روی این مطلب خیلی فکر کردم ولی چیزی دستگیرم نشد؟؟؟؟
با تشکر
منظور شما ازخانه چیه؟نقل قول:
مثال عددی: مثلا خانه اول ما 100 تا فضا داره ...
مثالی که من زدم برای یک صفحه است ،حال اگر می خواهید چند صفحه داشته باشید می توانید یک ماتریس به جای یک آرایه تعریف کنید که هر سطر یا ستون آن یک صفحه باشد
سلام
شما گفتید واسه پیاده سازی میشه از آرایه استفاده کرد منظور من هم از خانه . خانه اول آرایه بود - حالا اگر میشه سوال قبل منو با این فرض جواب بدید
با تشکر
خب با این حساب شما فرض کنید هر صفحه حافظه معادل یک آرایه n تایی است ، و هر برنامه می تواند به تعداد k خانه حافظه (k<n) فضا اشغال کند،حال باید سناریوئی مانند بالا تعریف کنید و سپس سعی کنید آنرا پیاده سازی نمائید
(فکر کنم بحث تا حدودی داره از مسیر اصلی خارج می شود ،اگر شما سوالاتی در مورد الگوریتم های تخصیص حافظه دارید در تاپیکی مجزا بپرسید،باتشکر)