পিটারসনের 2-প্রক্রিয়া পারস্পরিক বর্জন অ্যালগরিদম মরার প্রক্রিয়াগুলির জন্য অ্যাকাউন্ট করে?


9

আমি মনে করি পারস্পরিক বর্জনের জন্য পিটারসনের অ্যালগরিদমে যদি সমালোচনামূলক বিভাগে প্রবেশের প্রক্রিয়াটি যদি প্রথমে মারা যায় বা বাতিল হয়ে যায় তবে অন্যান্য প্রক্রিয়া সমালোচনামূলক বিভাগে প্রবেশের অপেক্ষায় চিরতরে লুপ হয়ে যায়।

ছবিতে, প্রক্রিয়া 1 বন্ধ করা হলে, প্রক্রিয়া 1 এর পিছনে থাকা সমস্ত প্রক্রিয়াগুলি 1 প্রক্রিয়াটি কোথায় থাকে তবে চালানো হবে তবে লুপ হবে।

এখানে চিত্র বর্ণনা লিখুন

সমালোচনামূলক বিভাগে পৌঁছানোর প্রক্রিয়াটি আগে রেখে যাওয়ার আগে মারা গেলে কী হবে?


আমি আপনার প্রশ্নটি সেই অনুযায়ী সম্পাদনা করেছি। যেহেতু আপনি কীভাবে অ্যালগরিদমকে আরও দুটি প্রক্রিয়াতে প্রসারিত করবেন সে সম্পর্কে কোনও মন্তব্য করেননি, তাই আমি প্রশ্নের সেই অংশটি পরিবর্তন করেছি; আমি মনে করি সমস্যাটি ইতিমধ্যে দ্বি-প্রক্রিয়া সংস্করণে উপস্থিত রয়েছে। যদিও আমি এখনও ছবিটি মোটেও বুঝতে পারি না।
রাফায়েল

উত্তর:


1

এটি কীভাবে লক প্রয়োগ করা হয় তার উপর নির্ভর করে। আপনি যদি উইকিপিডিয়া নিবন্ধের মতো এটি করেন, যেমন প্রক্রিয়া প্রতি এক বুলিয়ান দিয়ে সমালোচনামূলক বিভাগটি রক্ষা করেন you তবে আপনি অবশ্যই সমস্যায় পড়েছেন। যদি একটি প্রক্রিয়া মারা যায় তবে এটি কখনও তার পতাকাটিকে পুনরায় সেট করে না তাই অন্য প্রক্রিয়া চিরকালের জন্য লুপ হয়ে যায়।

অনুশীলনে, আপনি আপনার কোডটি মারা যাওয়ার বিভিন্ন উপায়ের বিরুদ্ধে রক্ষা করতে পারেন। উদাহরণস্বরূপ, জাভা-শৈলীর এই প্রয়োগটি নিন:

flag[1] = true;
turn = 1;
while ( flag[0] == true && turn == 1 ) { Thread.yield(); }
try {
  // critical section
}
finally {
  flag[1] = false;
}

এটি ত্রুটিপূর্ণ বিভাগে যা ঘটবে ততক্ষণ পতাকাটি পুনরায় সেট করা হবে তা নিশ্চিত করবে, যতক্ষণ না সিস্টেম ত্রুটি পরিচালনা করে। জাভাতে, এটি স্ট্যাক এবং হিপ ওভারফ্লোগুলির জন্যও সত্য। সুতরাং প্রক্রিয়াটি আক্ষরিক অর্পণ না হলে ( kill², প্রসেসরের ব্যর্থতা, নেটওয়ার্ক সংযোগ বিচ্ছিন্ন, ...) আপনি নিরাপদ। মনে রাখবেন যে বেশিরভাগ অ-সমালোচক সফ্টওয়্যার এই ক্ষেত্রে ব্যর্থ হয় - এটি যে ত্রুটিটি এটি চালাচ্ছে না তা কীভাবে পরিচালনা করতে পারে? - তাই অনেক ক্ষেত্রেই তা গ্রহণ করতে হয়। প্রয়োজনে পুনরায় আরম্ভ করার পরে আপনি অসঙ্গতিগুলি পরিচালনা করতে পারেন।

আপনি যদি যথাযথ, ভাষা-স্তরের লক ব্যবহার করেন তবে রানটাইম সিস্টেমটি নিখোঁজ লক মালিকদের পরিচালনা করতে পারে, অর্থাত মৃত মালিকদের সাথে তালাবদ্ধ করে। আপনি প্রতিটি প্রক্রিয়াটিকে একজন মৃত ব্যক্তির স্যুইচ দিয়ে অন্যরা পড়তে পারেন বা তা লক মালিকানার প্রক্রিয়াটি এখনও জীবিত আছে কিনা তা সরাসরি পরীক্ষা করতে পারেন (যদি সিস্টেম এটি সমর্থন করে)।


  1. যাইহোক, যে ভাল স্কেল না।
  2. জাভাতে, আমি মনে করি finalizeএমনকি চালানো উচিত kill, তবে এটি অনুমান দ্বারা গ্যারান্টিযুক্ত হয় না। kill -9সম্ভবত কোনও সমাধানের জন্য মৃত্যুদণ্ড যা মরণ প্রক্রিয়াটিকে কিছু করার প্রয়োজন হয়।

1

অনুমানগুলি দেখুন, বিশেষত যে কোনও প্রক্রিয়া অনির্দিষ্টকালীন সমালোচনামূলক বিভাগে থাকে না (এতে অবশ্যই দূরে যাওয়া অন্তর্ভুক্ত থাকে)। আমি মনে করি না যে কোনও সিঙ্ক্রোনাইজেশন প্রক্রিয়া দিয়ে সেই সাধারণ সমস্যা সমাধানের কোনও উপায় আছে।

এই সমাধানটি কেবলমাত্র দুটি প্রক্রিয়ার জন্য, প্রায় প্রক্রিয়াগুলির জন্য সমাধান রয়েছে।n

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.