در کتاب تانن بام برای درس سیستم عامل یک سری الگوریتمها گفته شده مثلا الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا.... کسی هست که تا به حال این الگوریتمها را کد و اجرا کرده باشه؟
در کتاب تانن بام برای درس سیستم عامل یک سری الگوریتمها گفته شده مثلا الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا.... کسی هست که تا به حال این الگوریتمها را کد و اجرا کرده باشه؟
سوال شما چیه ؟
برای شبیه سازی این کد ها می توانید از Baci استفاده کنید.
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
شما با استفاده از Baci یا (Ben-Ari Concurrent Interpreter) می توانید یک محیط Concurrent برای اجرای کد های موجود در کتابهای سیستم عامل داشته باشید. در این محیط شما قادر به تعریف سمافور، مانیتور و انواع قفل ها خواهید بود. کافی است شما این الگوریتم ها (به صورت کد پاسکال یا C) را در این محیط وارد کرده و اجرای همزمان آنها را ببینید و مفاهیم سیستم عامل مانند mutual exclusion , Deadlock, Semaphore,Monitor را تست و تمرین کنید و به صورت عملی ببینید.برای اطلاعات بیشتر به لینک های زیر مراجعه کنید
http://www.mines.edu/fs_home/tcamp/baci
http://www.cs.helsinki.fi/u/kerola/r...I/baci-pas.pdf
موفق باشید
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
برای اجرای این الگوریتمها نیاز به داشتن کد کامل سیستم عامل وتعبیه این الگوریتمها درون آن نیست؟
baci را باید روی کامپیوترم نصب کنم؟
این محیط یک محیط شبیه سازی الگوریتم های همزمان است کافی است الگوریتم را مثلا در قالب 2 تابع نوشته و در قسمت ناحیه بحرانی پیغامی را چاپ کنید و بعد آنرا اجرا کرده و نتیجه را ببینید.
آخرین نسخه ای که من با آن کار می کردم تحت داس بود و نیازی به نصب نداشت فقط کافی بود آنرا اجرا کنید و کد ها را در آن تایپ کنید.
این نرم افزار را دانلود کنید و از آن استفاده کنید ، اگر مشکلی داشتید سوال کنید
موفق باشید
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
من از home page BACI ، اBACI DOS executables را دانلود کردم ولی هیچ فایل اجرایی نداشت تا من بتونم کامپایلر baci را نصب کنم. ضننا win xp هم دارم .
مشکل کجاست؟
اگر درنهایت بتونم نصبش کنم روی همین محیط می تونم کدهای مورد نیاز سیستم عامل را بنویسم و اجرا کنم؟
این برنامه تحت داس اجرا میشه، براتون ضمیمه کردم.
بله می توانید، کافیه کد مورد نظر را در قالب دو رویه بنویسید و آنها را Concurrent اجرا کنیداگر درنهایت بتونم نصبش کنم روی همین محیط می تونم کدهای مورد نیاز سیستم عامل را بنویسم و اجرا کنم؟
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
نصب لازم نیست برنامه خودتان را بنویسید و براساس اینکه C (فایل bacc) یا پاسکال (فایل bapas) است را اجرا کنید و مسیر فایلی که خود نوشتید را به آن بدهید. یک نمونه از الگوریتم Deker را که نوشتم اینجا می گذارم .
// * * * * * * * * * * Dekker Algorithm * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
int flag[2];
int turn;
void P_0(){
do
{
flag[0]=1;
while(flag[1])
{
if(turn==1)
{
flag[0]=0;
while(turn==1);
flag[0]=1;
}
}
cout<<"Start Critical Section In Procedure P_0\n";
turn=1;
flag[0]=0;
cout<<"Reminder In Procedure P_0 \n";
}while(1);
}
void P_1(){
do
{
flag[1]=1;
while(flag[0])
{
if(turn==0)
{
flag[1]=0;
while(turn==0);
flag[1]=1;
}
}
cout<<"Start Critical Section In Procedure P_1\n";
turn=0;
flag[1]=0;
cout<<"Reminder In Procedure P_1 \n";
}while(1);
}
void main(){
flag[0]=0;
flag[1]=0;
turn=1;
cobegin{
P_0();
P_1();
}
}
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
یعنی مثلا من این کد مربوط به الگوریتم دکر را در محیط borlan c بنویسم و بعد فایل اجراییش را در bacc اجرا کنم؟
یک محیط شبیه سازی مثل همین baci هست که تحت ویندوز بشه باهاش کار کرد؟
با زبان دلفی هم میشه این کدها را نوشت و اجرا کرد؟
بلهیعنی مثلا من این کد مربوط به الگوریتم دکر را در محیط borlan c بنویسم و بعد فایل اجراییش را در bacc اجرا کنم؟
من سراغ ندارمیک محیط شبیه سازی مثل همین baci هست که تحت ویندوز بشه باهاش کار کرد؟
باید پاسکال استاندارد باشهبا زبان دلفی هم میشه این کدها را نوشت و اجرا کرد؟
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
از راهنماییتون خیلی ممنونم
ضمننا احتمالا محیط تحت ویندوزی هم وجود داره چون من شنیدم که ازدلفی هم برای این منظور میشه استفاده کرد
من کد زیر را برای تناوب قطعی نوشتم نمی دونم چه جوری باید تو baci اجرا کنم؟
#include <stdio.h>
#include <conio.h>
int main()
{
int turn=0;
while (true){
while(turn==0){
printf("jane\'s dog");
turn=1; }
while(turn==1){
printf("\n mary\'s cat");
turn=0; }
}
getch();
}
شما هر قسمتی را که می خواهید بصورت همروند انجام شود در بلاک زیر قرار دهید.
cobegin
{
}
پیشنهاد می کنم دو قسمتی را که نوشتید در یک تابع (مانند مثالی که زدم) قرار دهید تا نتیجه را بهتر ببینید.
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
من این کد را با تغییراتی که شما گفتید تو محیط Borland c نوشتم . bacc را که برای باز شدن baci کلیک می کنم یک صفحه باز میشه میگه نام سورس فایل را بنویسید من نام فایل اجرایی این برنامه را که می نویسم (strict alternation.exe) و اینتر را میزنم صفحه بسته میشه و هیچ اتفاقی نمی افته .
(borland c موقع Debuge برنامه cobegin را نمی شناسه!!)
اصلا نیاز به نوشتن در Borland C نیست. کافیه فقط قسمتی را که می خواهید همروند ایجاد بشه در یک فایل متنی بنویسید و مسیر آنرا بدهید. همانطور که قبلا گفتم مثالی که زدم را ببینید و آنرا برای آشنایی اجرا کنید. سپس کد خود را با رویه های مثال قبلی عوض کنید.
برای برنامه نویسی در این محیط فقط باید یک تابع main داشته باشید که در آن کد خود را می نویسید و با دستور cobegin قسمتی از آنرا همروند می کنید.
توجه کنید که می توانید متغیرهایی از نوع سمافور و مانیتور نیز در این محیط تعریف کنید.برای اطلاعات بیشتر به مستندات Baci مراجعه کنید
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
با فرض اینکه فایلی که نوشتید در درایو C و دایرکتوری MyFolder باشه ،بنویسید:
enter name of source file:C:\MyFolder\MyFileName.txt
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
الگوریتم dekker را اجرا کردم بعد از اجرا یک فایل با پسوند .pco و یک فایل به نام MASM Listing درست کرد با پسوند .LST که تو visual studio.net باز شدند(چرا اینجا ؟) اینها چی هستند؟
در کدهای نوشته شده نیازی به فایل های سرایند نیست؟
کدها باید با c ++ نوشته شوند یا با C هم میشه نوشت؟(کلا با چه زبانهایی میشه نوشت؟)
به این فایل ها توجهی نکنید، همین که چگونگی روند اجرایی برنامه را ببنید کافی است.الگوریتم dekker را اجرا کردم بعد از اجرا یک فایل با پسوند .pco و یک فایل به نام MASM Listing درست کرد با پسوند .LST که تو visual studio.net باز شدند(چرا اینجا ؟) اینها چی هستند؟
این فایل ها فایلهایی برای خود نرم افزار می باشند که چون پسوند آن با یکی از پسوند های مورد پشتیبانی studio.net می باشد ، با آن باز می شود.
نیازی نیست ، این نرم افزار صرفا برای شبیه سازی کدهایی است که باید همروند اجرا شوند.(دستورات محدودی را می توانید استفاده کنید که در راهنمای نرم افزار وجود دارد)در کدهای نوشته شده نیازی به فایل های سرایند نیست؟
زبانی که من نوشتم C++ است اما فکر می کنم بتوانید از C نیز استفاده کنید. این محیط شبیه زبانهای دیگری را نیز پشتیبانی می کند که باید نرم افزار مربوط به آنرا اجرا کنید. (من با پاسکال و C++ آن کار کردم بقیه زبانهای مورد پشتیبانی را در راهنمای آن ببینید)کدها باید با c ++ نوشته شوند یا با C هم میشه نوشت؟(کلا با چه زبانهایی میشه نوشت؟)
موفق باشید
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
من وقتی مسیر این فایل متنی را در bacc.exe تایپ کردم و اینتر را زدم بلا فاصله صفحه بسته شد من روند اجرایی براش ندیدم به هر حال من باید یک خروجی را ببینم تا بتونم مزیت این برنامه نویسی موازی را با ترتیبی مقایسه کنم!!!!!!!!!!!!! یعنی این شبیه ساز هیچ خروجی به من نشون نمی ده تا من بهتر بتونم درکش کنم؟
الگوریتمهای زمانبندی مثل Round Robin یا الگوریتمهای page replacement مثل LRU را نیز می توان در این محیط شبیه سازی کرد؟
کلا baci یک محیط شبیه ساز برای تمام الگوریتمهای مربوط به سیستم عامل می تونه باشه؟
حق با شماست ، من خیلی وقت بود با این نرم افزار کار نکرده بودم ، الان که به مستندات قبلی رجوع کردم متوجه شدم یک قسمت از مرحله را نگفتم (با عرض پوزش) . قسمتی از گزارش آزمایشگاه سیستم عامل خودم را با کمی تغییر اینجا می نویسم شاید به شما کمک کنه.من وقتی مسیر این فایل متنی را در bacc.exe تایپ کردم و اینتر را زدم بلا فاصله صفحه بسته شد من روند اجرایی براش ندیدم به هر حال من باید یک خروجی را ببینم تا بتونم مزیت این برنامه نویسی موازی را با ترتیبی مقایسه کنم!!!!!!!!!!!!! یعنی این شبیه ساز هیچ خروجی به من نشون نمی ده تا من بهتر بتونم درکش کنم؟
مروری اجمالی بر نرم افزار Baci
bBaci نرم افزاری است که بعضی از مفاهیم سیستم عامل ازجمله اجرای همزمان فرایندها ، روشهای همگام سازی ، راهنماهای کلی راهنماهای دودوئی وناظرها را شبیه سازی می کند. Baci شامل دو زیر سیستم است.
یکی از این زیر سیستمها مترجم(Interpreter) است که برنامه کاربر را به کدی به نام PCODE (کد واسطه ) ترجمه می کند.همراه Baci دو مترجم وجود دارد.یکی شبیه C++ است وبرنامه های شبیه به آن با پسوند cm مشخص میشوندودیگری شبیه پاسکال است وبرنامه های به این روش با پسوند pm ذخیره می شوند.هردو مترجم بعد از اجرا، کدهای با پسوند lst و pco را ایجاد می کنند.برای اجرای یک برنامه در Baci بایدمراحل زیر را طی کنیم.
1. کد برنامه را با زبان پاسکال یا C++ در ویرایشگری مانند Notepad نوشته و با پسوند pm یا cm ذخیره کنید.
2. برای کامپایل کردن پسوند cm از bacc.exe و برای پسوند های pm از bapas.exe استفاده کنید.
3. بعد از مرحله قبل فایلی با پسوند PCO ساخته می شود که می توانید با استفاده از Bainterp.exe آنرا بصورت همروند اجرا کنید.
//If Write With C++
c:/>bacc Deker.cm
//If Write with Pascal
c:/>bapas Deker.pm
نحوه شبیه سازی همروندی:
c:/>bainterp Deker.pco
- فرآیند هایی که می باید همروند اجرا گردند باید در یک بلاک cobegin محصور شوند.
- سمافور ها در Baci شامل مقادیر صحیح غیر منفی می باشند.البته در Baci سمافورهای باینری نیز وجود دارد که مقادیر 0و1 را می پذیرد.بعد از تعریف این مقادیر می توان براحتی از توابع Wait و Signal استفاده نمود.
cobegin{
P0();
p1();
...
pn();
}
Baci قابلیت های متنوع دیگری (مانند مفاهیم مانیتور و نخ ها و ...) دارد که برای اطلاعات بیشتر بهتره به آن مستندات آن مراجعه کنید.
در آخر خروجی الگوریتم دکر ، تولید کننده /مصرف کننده ، مسئله بن بست و آرایشگران را در اینجا قرار می دهم تا ملموس تر آنرا ببینید.
Baci یک نرم افزار شبیه سازی همروندی است. برای این اجرای الگوریتم های زمانبندی و حافظه می توانید خودتان آنرا براحتی در هر زبانی پیاده سازی کنید.نرم افزار های برای شبیه سازی این موارد نیز وجود دارد .در کل Baci را برای این کار پیشنهاد نمی کنم.(اگه لازم شد بعدا در مورد الگوریتم های زمانبندی و حافظه توضیح خواهم داد)الگوریتمهای زمانبندی مثل Round Robin یا الگوریتمهای page replacement مثل LRU را نیز می توان در این محیط شبیه سازی کرد؟
کلا baci یک محیط شبیه ساز برای تمام الگوریتمهای مربوط به سیستم عامل می تونه باشه؟
کلمات کلیدی جستجو: Deker، Producer Consumer، Barber Shop، همروندی، mutual exclusion ، Baci ، بن بست ، Deadlock
موفق باشید
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
بله می توان این کار را انجام داد، فقط باید با مفاهیم Threading بخوبی آشنا باشیدبا C هم میشه پیاده سازی کرد؟
الگوریتمهای همروندی را نیز میشه با هر زبانی پیاده سازی کرد مثلا C ( به جای استفاده از BACI)؟
برای Time Scheduling از ps استفاده کنید(بسیار ابزار جالبیه!)نرم افزار شبیه ساز برای اینها چی هست؟
و برای Memory Management از MOSS می توانید استفاده کنید
البته نرم افزارهای شبیه ساز بسیاری وجود دارند که با جستجو می توانید آنها را بیابید.
موفق باشید
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
فکر نمی کنم لازم باشه کد بنویسید، می توانید برنامه را اجرا کرده و با توجه به مقادیری که Set می کنید نحوه اجری پروسه ها را به تفکیک الگوریتم ببینید.برای اینها باید با java کد بنویسم ؟ شبیه سازی هم هست که با همان خانواده c بشه باهاش کار کرد؟
کد C و جاوا تفاوت زیادی با هم ندارند اصول کد نویسی و تا حدود زیادی Syntax آنها مانند هم می باشد. در هر صورت پیشنهاد می کنم این زبان را یاد بگیرید، بسیاری از ابزار های دانشگاهی با این زبان و C نوشته شده اند . اگر احیانا درس مهندسی اینترنت ،شبکه یا سیستم عامل پیشرفته (توزیع شده) را گرفتید قطعا به این زبان نیاز پیدا می کنید.
-------------------------
با تشکر از مدیرمحترم برای جلوگیری از انحراف بحث :)
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
برای حل مشکل ناحیه بحرانی به غیر از الگوریتمهای متغیرهای قفل ، دکر ، پیترسون سما فور و مانیتور و دستورالعمل TSL و swap الگوریتمهی دیگری هم هست؟
اینها همه با baci قابل شبیه سازی هست؟
دستورالعمل TSL و swap چه طور؟
اگر منظور شما از قفل همان الگوریتم نانوایان لمپورت است ، تقریبا همه الگوریتم ها را نام بردید و همه به جز TSL قابل شبیه سازی است.همانطور که می دانید TSL می بایست از وقفه های سخت افزاری استفاده کند و قابل پیاده سازی نمی باشد. در مورد Swap باید گفت این کار انجام پذیر است اما خطر بن بست وجود دارد.
موفق باشید
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
برای TSL و SwAP از چی میشه استفاده کرد؟
شما با Time Scheduling ) ps) کار کردین؟
می توانید به نوعی TSL را در Baci شبیه سازی کنید .لینک های زیر را ببینید:برای TSL و SwAP از چی میشه استفاده کرد؟
tsl.cm , tsl.lst , tsl.pco
و swap را هم می توانید با Baciپیاده سازی کنید
تقریبا، کافیه یک سناریو تعریف کنید و پارامتر ها را وارد کرده و با الگوریتم های Time Scheduling آنها را شبیه سازی کنید.(برنامه نویسی خاصی نیاز ندارد)شما با Time Scheduling ) ps) کار کردین؟
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
در document مربوط به PS نوشته الگوریتمهایFCFS,RR,SJF را ساپورت می کنه برای الگوریتمهای دیگر زمانبندی باید از چی استفاده کنیم؟
برای کار کردن با PS باید محیط برنامه نویسیjava رو کامپیوترم نصب باشه؟
کاربرد هریک از این simulator ها (baciو PSو...) برای طراحی سیستم عامل است یعنی یک محیط تست قبل از به مرحله اجرا رساندن کل سیستم عامل؟
محیطی هم برای شبیه سازی بن بست وجود داره؟
الگوریتم های مشهور همین ها هستند، برای سایر الگوریتم ها نرم افزار خاصی سراغ ندارم . شاید با جستجو بتوانید نرم افزار مورد نیاز خود را بیابید. (برای بسیاری از موارد مجبور بودم الگوریتم ها را شخصا پیاده سازی کنم ، زمانی که ابزار مورد نظر وجود نداره باید خودتان آنرا بسازید)در document مربوط به PS نوشته الگوریتمهایFCFS,RR,SJF را ساپورت می کنه برای الگوریتمهای دیگر زمانبندی باید از چی استفاده کنیم؟
خیر هر Platform ی که می تواند فایل های جاوا را اجرا کند کافی است به کل محیط IDE نیازی نیست.برای کار کردن با PS باید محیط برنامه نویسیjava رو کامپیوترم نصب باشه؟
اکثر این نرم افزار ها توسط دانشجویان یا اساتید در دانشگاه های معتبر ساخته شده اند و جنبه آموزشی دارند.کاربرد هریک از این simulator ها (baciو PSو...) برای طراحی سیستم عامل است یعنی یک محیط تست قبل از به مرحله اجرا رساندن کل سیستم عامل؟
به پست صفحه قبل دقت کنید! یکی از مثالهایی که با Baci شبیه سازی کردم همین بن بست است!محیطی هم برای شبیه سازی بن بست وجود داره؟
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
بلهیعنی تو یک محیط برنامه نویسی از طریق multitreading؟
شاید منظورم را بد گفتم منظورم JVM یا Java Virtual Machine بود :) که معمولا بر روی ویندوز XP نصب است.برای اجرای این نرم افزار Batch Fileی در دایرکتوری آن به نام runps موجود است که کافیه آنرا اجرا کنید.چه platform هایی این امکان را دارند
بله ، مانند همان مطالبی که شما در درس سیستم عامل می خوانید.آموزش طراحی سیستم عامل؟
موفق باشید
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
یعنی تو یک محیط برنامه نویسی از طریق multitreading؟
بله
با زبان c میشه همه این الگوریتمهای را شبیه سازی کرد یا زبان C#?
دقیقا ، با هر دو زبان می توانید این کار را انجام دهید فقط باید با مفاهیم Multi Threading تا حدودی آشنا باشید.
(پروژه سیستم های توزیع شده را با #C نوشتم و تمام امکاناتی که لازم داشتم را این زبان در اختیار داشت ، اما C هم همین امکانات را در خود دارد بسته به آشنایی شما به یکی از زبانهای فوق می توانید از هر دو استفاده کنید)
To follow the path:
Look to the master
Follow the master
Walk with the master
See through the master
Become the master
کسی مساله خوانندگان نویسندگان رو با سمافورها با زبان سی نوشته داره به من بده
اگه کسی مساله خوانندگان نوسیندگان رو با سمافورها با سی نوشته به من میل بزنه
azarboy1@yahoo.com
برای حل مسئله تولید کننده و مصرف کننده با استفاد از سمافور در baci برای پروسه های تولید کننده و مصرف کننده باید چه جوری کد بنویسیم؟