-
مسئله آرایشگر منصف در محیط شبکه
خواستم تاپیک جدید بزنم اما دیدم اینجا در مورد مسئله آرایشگر منصف و غیر منصف بحث شده است گفتم همین جا بنویسم
البته یه نکته بگم وقتی که الگوریتم های آرایشگر منصف و غیر منصف را دیدم که توسط یکی از کاربران حل شده بود، خیلی خوشحال شدم. چون خیلی وقت پیش بهش نیاز داشتم و با هر جونکندنی بود نوشتمش..اخه اون موقع ها زیاد از برنامه نویسی خوشم نمی اومد . اما خوب بلاخاره نوشتمش.. حالا از این حر فا بگذریم
سناریوی زیر را در نظر بگیرید
می خواهیم مسئله ارایشگر منصف را در یک محیط شبکه حل کنیم
بدین صورت که یک برنامه سمت سرور داریم و یک برنامه هم که طبیعتا سمت کلاینت نوشته میشه
تمامی سمافور ها بایستی روی برنامه سرور تعریف شوند. و یک thread مسئول مدیریت درخواست هاست
بقیه thread های مربوط به آرایشگران و آرایشگاه و مشتریان و .... بایستی روی کلاینت تعریف شوند.
حال از سمت کلاینت درخواست ها برای سمافور هایی سمت سرور ارسال میشه. اون thread ای که گفتم در سمت سرور مسئول پاسخگویی به این درخواست هاست. بدین صورت که اگه سمافور مورد نظر آزاد بود به درخواست پاسخ داده میشه و اگه مشغول بود، thread درخواست کننده باید wait بمونه تا سمافور ازاد بشه و سپس به درخواستش پاسخ داده بشه
فکر می کنم تنها نکته ای که در این برنامه نسبت به برنامه آرایشگر منصف در حالت معمولی وجود داره این هست که کلیه درخواست ها در غالب متن به سمت سرور فرستاده می شوند و جواب ها که می تونه پاسخ به درخواست و یا waint کردن درخواست باشه، باز هم در غالب متن و به سمت کلاینت فرستاده میشود.
این مسئله یعنی فرستادن درخواست ها در غالب متن و گرفتن پاسخ های مناسب هم با برنامه نویسی سوکت قابل حل است. منتها مراتب مسئله اصلی جدا کردن سمافور ها و بردن اونا در سمت سرور هست. در واقع در حالت عادی thread های مشتریان و ... با سمافور ها در گیر هستند که جدا کردن اونا و بردن اونا روی دو تا سیستم جدا یکمیکار را مشکل می کنه
اگه از دوستان کسی پیاده سازی در این مورد داشته را ممنون میشم بگه
اگه نمونه کد هم باشه که خیلی بهتره
ممنون
-
سلام
من یه کتابی رو بهتون معرفی می کنم که تمام این الگو ریتم ها رو داخل اون نوسینده اون کتاب نوشته.
اگر هم این کتاب رو نتونستید پیدا کنید من براتون اون رو می تونم پست کنم.
((سیستم های عامل_نویسنده مهندس اکبر پور)) این کتاب رفرنس این ترم من واسه درس سیستم عامل و استاد این درس هم نویسنده همین کتاب اگه بازم هم سوالی داشتید به من بگید تا از ایشون بپرسم و یا کتاب و واستون پست کنم
-
نقل قول:
نوشته شده توسط
mojgan.net
سلام
من یه کتابی رو بهتون معرفی می کنم که تمام این الگو ریتم ها رو داخل اون نوسینده اون کتاب نوشته.
اگر هم این کتاب رو نتونستید پیدا کنید من براتون اون رو می تونم پست کنم.
((سیستم های عامل_نویسنده مهندس اکبر پور)) این کتاب رفرنس این ترم من واسه درس سیستم عامل و استاد این درس هم نویسنده همین کتاب اگه بازم هم سوالی داشتید به من بگید تا از ایشون بپرسم و یا کتاب و واستون پست کنم
اگه بتونین همون الگوریتمی که میگین مخصوص این مسئله هست را پست کنین ممنون می شم
-
می خواستم بدونم که خود #c هم امکاناتی برای برنامه نویسی همروند داره ؟
مساله تولید کننده ومصرف کننده رو با سمافور یا با مانیتور چطوری میشه با #c حل کرد؟
-
الگوریتم دکر نگارش 5 را برای بیش از 2 پروسسور می خواستم . ممنون
-
اگر ممكنه يك نرم افزاره همروند برام بزارين
هر چي سعي كردم نتونستم download كن
-
-
ميشه يه لينك دانلود ديگه بزارين ؟
-
لینک مشکلی نداره ، با دانلود منیجر ها دانلود نکنید:)
بر روی اینجا در پست قبل کلیک کنید
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
سلام.خسته نباشید.کسی می تونه همین برنامه رو با مانیتور برا من بزاره؟ممنون میشم.من اصلا مانیتور رو یاد نگرفتم.حتی الامکان با جاوا.با سمافور تو جاوا اینجوری میشه
class Semaphore {
private int c;
public Semaphore(int n) {
this.c = n;
}
public synchronized void WAIT() {
while(c == 0) {
try {
wait();
} catch (InterruptedException e) {
//keep trying
}
}
c--;
}
public synchronized void SIGNAL() {
C++;
notify(); //alert a thread that's blocking on this semaphore
}
}
int loop=0;
int[] queue=new int[20];
Semaphore max_capacity=new Semaphore(20);
Semaphore sofa=new Semaphore(4);
Semaphore barber_chair=new Semaphore(3);
Semaphore coord=new Semaphore(3);
Semaphore mutex1=new Semaphore(1);
Semaphore mutex2=new Semaphore(1);
Semaphore cust_ready=new Semaphore(0);
Semaphore leave_b_chair=new Semaphore(0);
Semaphore payment=new Semaphore(0);
Semaphore receipt=new Semaphore(0);
Semaphore[] finished=new Semaphore[50];
int count;
//class barberShop{
// public barberShop(){}
public class Cashier extends Thread{
public void run(){
do{
payment.WAIT();
coord.WAIT();
System.out.println("Cashier Accept The Payment");
coord.SIGNAL();
receipt.SIGNAL();
yield();
}while(true);
}
}
public class Customer extends Thread{
public void run(){
int i;
for(i=0;i<50;i++)
finished[i]=new Semaphore(0);
int custnr;
max_capacity.WAIT();
System.out.println("Customer Enter The Barbery");
mutex1.WAIT();
count++;
custnr= count;
mutex1.SIGNAL();
sofa.WAIT();
System.out.println("Customer Sitting On Bench");
barber_chair.WAIT();
System.out.println("Customer Getting Up From Bench");
sofa.SIGNAL();
System.out.println("Customer Sitting On The Barber Chair");
mutex2.WAIT();
if (loop<19) queue[loop++]=custnr;
cust_ready.SIGNAL();
mutex2.SIGNAL();
finished[custnr].WAIT();
System.out.println("Customer Leave The Barber Chair");
leave_b_chair.SIGNAL();
System.out.println("Customer Pay The Payment");
payment.SIGNAL();
receipt.WAIT();
System.out.println("Customer Leave The Shop");
max_capacity.SIGNAL();
yield();
}
}
public class Barber extends Thread{
public void run(){
int b_cust;
do{
cust_ready.WAIT();
mutex2.WAIT();
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--;
}
}
mutex2.SIGNAL();
coord.WAIT();
System.out.println("Baraber Is Cut The Hair");
coord.SIGNAL();
// finished[b_cust].SIGNAL();
leave_b_chair.WAIT();
barber_chair.SIGNAL();
yield();
}while(true);
}
}
Int main()
{
int z;
int j;
Customer cust=new Customer();
Barber barb=new Barber();
Cashier cash=new Cashier();
for( j=0;j<50;j++)
{
cust.start();
}
for(z=0;z<3;z++)
{
barb.start();
}
cash.start();
}
با سپاس
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
سلام ميشه يكم بيشتر در مورد baci و توابع اون توضيح بديد
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
مفاهیم سیستم عامل مانند mutual exclusion , Deadlock, Semaphore,Monitor
همگی در کتابخانه دات نت تعریف شده اند ، و می توان برای شبیه سازی و پیاده سازی الگوریتم های سیستم عامل از آنها استفاده کرد.
مثلا می توانید در بخش فناوری مایکروسفت در این سایت ، طریقه باز کردن سورس .net 3.5 را یاد بگیرید و آنگاه به سورس اشیائی همچون mutex و semaphore و monitor نگاه کرده و با طرز کار متد های آن آشنا شوید.
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
نقل قول:
سلام ميشه يكم بيشتر در مورد baci و توابع اون توضيح بديد
اگر به صفحات اولیه همین پست مراجعه کنید می توانید مطالب مفیدی را در رابطه با BACI و مثالهایی از الگوریتم هایی که در آن پیاده سازی شده را پیدا کنید
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
مشگل اینجاست که در BACI نمیشه از Struct استفاده کرد!
int i=0;
int in=0;
int out=0;
int size=3;
int queue[size];
struct new_semaphore
{
int count;
int queue[100];
};
atomic void new_wait(new_semaphore& s)
{
s.count--;
if(s.count<0)
{
s.queue[in]=which_proc();
in=(in+1)%size;
suspend();
}
}
atomic void new_signal(new_semaphor& s)
{
s.count++;
if(s.count<=0)
{
revive(s.queue[out]);
out=(out+1)%size;
}
}
void new_initial(new_semaphore s,int i)
{
s.count=i;
}
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
می خوام مساله خوانندگان و نویسندگان یا تولید کننده ومصرف کننده رو بدون ترد بنویسم میشه کمکم کنید؟؟؟چه جوری همگامی رو در ویندوز اجرا کنم ؟
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
نقل قول:
نوشته شده توسط
beirami
می خوام مساله خوانندگان و نویسندگان یا تولید کننده ومصرف کننده رو بدون ترد بنویسم میشه کمکم کنید؟؟؟چه جوری همگامی رو در ویندوز اجرا کنم ؟
اصل مسئله IPC با همگامی فرآیندها به وجود می یاد تو ویندوز هم شما به 2 تا ابزار یعنی Thread و Process می تونی همگامی رو ایجاد کنی. پیشنهاد می کنم با همون Thread این کار رو انجام بدی وگرنه اسیر می شی... حالا چرا نمی خوای با ترد این کار رو بکنی ؟
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
ُسلام خسته نباشید . نمیدونم بعد این همه وقت که این تاپیک غیر فعال بوده الان کسی پیدا میشه جواب بده یا نه اما می خواستم ببینم کسی در مورد مسئله پل در سیستم عامل چیزی شنیده؟
این مسئله به این صورته که یک پل را تصور کنید که بی نهایت ماشین یک طرف و بی نهایت ماشین طرف دیگه هستند و در هر زمان فقط از یک طرف ماشین می تواند رد شود می خواهیم 10 تا ماشین از یک طرف و 10 تا دیگه از طرف دیگه بروند که این ساده ترین حالته ، حالا اگه یک طرف خالی بود طرف دیگه منتظر 10 ماشین انطرف نشه و همین طور ماشین رد بشه و اگه مثلا 3 تا ماشین یک طرف بود و بی نهایت طرف دیگه بعد اینکه 3 تا ماشین از آن طرف رد شد و ماشین ها تمام شد منتظر نباشد که حتما 10 تا ماشین رد بشه چون دیگه ماشینی نیست و از طرف دیگه همینطور ماشین رد بشه
اینا می خوام با BACI پیاده سازی کنم اما اگه کسی شبه کد برام بگه ممنون میشم چون می خوام خودم پیاده سازی کنم اما الگوریتمشا موندم چطوریه؟؟؟؟؟؟؟؟
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
سلام من زیاد آشنایی با این موضوع ندارم اگر کسی میتونه به طور کامل برام توضیح بده
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
نقل قول:
نوشته شده توسط
علی سبزقبایی
سلام من زیاد آشنایی با این موضوع ندارم اگر کسی میتونه به طور کامل برام توضیح بده
در این تاپیک به موضوع های مختلفی اشاره شده که هر کدام توضیح کافی دارند، ابتدا صفحات قبل را مطالعه کنید و در صورت نیاز سوال خود در مورد موضوع مورد نظر بیان کنید
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
مثل اینکه کسی بلد نبود
اما خودم فهمیدم چطوریه
گفتم توضیح بدم شاید به درد کسی بخوره
برای این کار باید از 5تا سمافور باید استفاده کنی 2تا برای مشخص کردن جهت ها و یکی برای هماهنگ کننده و 2تا هم برای حرکت از 2 جهت مختلف و چک می کنی جهت را تشخیص میدی و هماهنگ کننده را Wait می کنی و حرکتت را شروع می کنی
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
سلام
راه حلي براي مساله خوانندگان و نويسندگان در يكي از كتابهاي سيستم عامل وجود دارد، اما وقتي ميخواهم اين كد را در baci اجرا كنم، فقط فايل lst را بوجود مي اورد و فايل pco را توليد نميكند، گفتم شايد اشكال از برنامه باشد ، چون فقط براي اين برنامهpco توليد نمي كنه. براي همين كد رامي نويسم:
int readcount;
semaphor x=1,wsem=1;
void reader()
{
while(1)
{
wait(x);
readcount++;
if(readcount==1)
wait(wsem);
signal(x);
cout<<"a";
wait(x);
readcount--;
if(readcount==0)
signal(wsem);
signal(x);
}
}
void writer()
{
while(1)
{
wait(wsem);
cout<<"b";
signal(wsem);
}
}
void main()
{
readcount=0;
parbegin(reader,writer);
}
به نظر شما اشكالش كجاست؟ با تشكر.
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
دوست عزيز كدت رو توي تگ بزار كه قابل فهم باشه
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
با سلام و احترام : برنامه آرایشگر منصف با 3 سمافور finished چگونه است ؟
به نظر من باید از دستور finished[custnr%3 به جای finished[custnr استفاده کرد اگر این جواب درست است چه دستورات دیگری باید به برنامه اضافه کرد لطفا به زبان C بنویسید.
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
نقل قول:
نوشته شده توسط
Fatemeh22
با سلام و احترام : برنامه آرایشگر منصف با 3 سمافور finished چگونه است ؟
به نظر من باید از دستور finished[custnr%3 به جای finished[custnr استفاده کرد اگر این جواب درست است چه دستورات دیگری باید به برنامه اضافه کرد لطفا به زبان C بنویسید.
سلام دوست عزيز مثل اينكه كسي جواب سوالت را نداده من يك راهنمايي بهت مي كنم ببين بايد براي ارايشگرا يك ارايه 3 تايي در نظر بگيري مثلا مثل يك سبد كه هر كس مياد تو ارايشگاه شمارش را يا همون نوبتشا را بزاره تو سبد و ارايشگره شماره ها را برداره و مشتري را اصلاح كنه دقيق نميتونم برات توضيح بدم چون پروژه خودم هم هست و اگه ايدم را بگم تكراري ميشه و اقاي داوديان هم ديگه ميگه داديد نوشتند
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
اگه کسی برنامه کامل هر کدام از الگوریتمها رو داره بزاره البته با همین نرم افزار jbaci کار کنه ممنون میشم
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
سلام دوستان .
من باید یه برنامه ای رو که سمافور توش استفاده می شه با جاوا بنویسم،
اما مشکلی که دارم اینه که نمی دونم متد های wait و signal
توی چه کتابخونه ای از جاوا هستن؟
واینو هم نمیدونم که اگه بخوام چند فرایند رو توی main هم زمان صدا بزنم واسه اجرا باید از چه تابعی استفاده کنم ؟
در واقع نمی دونم توی جاوا چه تابعی کار parbegin رو انجام می ده؟؟
ممنون می شم راهنماییم کنید.
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
سلام
هر کدام از دوستان که الگوریتم غذا خوردن فیلسوف ها رو بوسیله سمافور و مانیتور تو Jbaci پیاده کرده ممنون میشم کدش رو برای استفاده بقیه اینجا قرار بده
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
سلام
من تمام الگوریتم های حل مسائله M.E به روش نرم افزاری آقای دکر رو میخواستم
همراه با توضیح کامل لطفا...........مرسی
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
سلام
حل مسائله ی تولید کننده و مصرف کننده با استفاده از سمافور، زمانیکه تعداد خانه های بافر 100 میباشد، برنامه اش چگونه میشود
میشه این برنامه را بنویسید؟؟؟؟؟؟؟؟؟؟
-
نقل قول: الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
سلام دوستان کسی هست راهنمایی کنه که چطوری الگوریتم فیلسوفان خورنده رو با استفاده از نخ ها توی C# پیاده سازی کرد؟!؟!