মাল্টি-কোর প্রসেসরের জন্য লিনাক্সে লক-ফ্রি আইপিসি


9

আমি লিনাক্স-এ লক-ফ্রি আইপিসি, সি-তে, মাল্টি-কোর প্রসেসরের সাহায্যে একটি অ্যাপ্লিকেশন লেখার উপায় খুঁজতে চেষ্টা করছি।

আসুন ধরে নেওয়া যাক আমার কাছে প্রক্রিয়া 1 এবং প্রক্রিয়া 2 রয়েছে যা কোনও ফিফো বা ভাগ করা মেমোরিতে লেখেন। তারপরে প্রক্রিয়া 3 এবং প্রক্রিয়া 4 সেই ভাগ করা মেমরি বা ফিফো থেকে পড়বে।

লক-মুক্ত অ্যালগরিদম দিয়ে এটি কি সম্ভব?

আপনার নির্দেশিকা অত্যন্ত প্রশংসা করা হয়।


আপনি লক-মুক্ত যোগাযোগ সম্পর্কিত কিছু বাহ্যিক ডকুমেন্টেশনের জন্য কিছু ইঙ্গিত বা রেফারেন্স দিতে পারেন? এই শব্দটির সাথে ঠিক কী বোঝানো হয়েছে?
জর্জিও

হ্যাঁ নিশ্চিত, drdobbs.com/cpp/lock-free-interprocess-communication/... এবং আপনার ডিভাইসে এক en.wikipedia.org/wiki/Non-blocking_algorithm
বহু

যদি আমি সঠিকভাবে বুঝতে পারি তবে সমস্যাটি হচ্ছে সমবর্তী লেখাগুলি (1, 2) এবং সমবর্তী পাঠ (3, 4)। লেখক এবং পাঠকদের মধ্যে সমন্বয়টি ইতিমধ্যে সংযুক্ত পৃষ্ঠায় বর্ণিত অ্যালগরিদম দ্বারা আচ্ছাদিত।
জর্জিও

উত্তর:


2

আমি রিং বাফারগুলি ব্যবহার করার বিষয়ে উল্লেখ পেয়েছি এবং লকগুলির প্রয়োজনীয়তা দূর করতে বা হ্রাস করার জন্য অবস্থান পয়েন্টারগুলিকে নিয়ন্ত্রণ করে। এটি যদিও অপেক্ষার প্রয়োজনটি দূর করে না এবং কেবল তখনই কাজ করা উচিত যদি রিং বাফার একজন লেখক এবং একজন পাঠক থাকে। আপনার ক্ষেত্রে আপনার কমপক্ষে দুটি বাফার প্রয়োজন।

আমি যে প্রক্রিয়াটি বুঝতে পারি তা হ'ল:

  • খোলা স্লট না হওয়া পর্যন্ত লেখক অপেক্ষা করেন (শেষ + 1! = বর্তমান)
  • লেখক রিং বাফার এন্ট্রি লিখেছেন।
  • লেখক সর্বশেষ প্রবেশের পয়েন্টার আপডেট করে।

  • রিং বাফারে (শেষ! = বর্তমান) কোনও উপলভ্য না হওয়া পর্যন্ত পাঠক অপেক্ষা করেন।

  • পাঠক প্রবেশের প্রক্রিয়া।
  • পাঠক বর্তমান পয়েন্টার বৃদ্ধি।

ব্যবহৃত অপেক্ষার সময়ের উপর নির্ভর করে এটি হয় খালি কাতারে নতুন আইটেমগুলির জন্য বিলম্ব করতে পারে বা ওয়েট লুপে প্রচুর সিপিইউ চক্র জ্বলতে পারে। পয়েন্টার আপডেট করার ক্রম এবং রাইট অ্যাক্সেসের কঠোর পৃথকীকরণ এটি কাজ করার জন্য গুরুত্বপূর্ণ। পাঠকের কাছে পয়েন্টারটি বাড়ানোর জন্য লেখককে কেবল রিং বাফার এন্ট্রি লেখার অনুমতি দেওয়া হয়।


এবং আমি এটি উইকিপিডিয়ায়ও পেয়েছি, আকর্ষণীয় দেখায়, এটি চেষ্টা করে দেখিনি যদিও কনকনুরসিকিট.আর
পলি

1

হ্যাঁ এটা সম্ভব. আমরা আমাদের প্রকল্পে লক-মুক্ত সারির একটি অ্যালগরিদম ব্যবহার করি। তবে এই অ্যালগরিদমগুলি সত্যই সুস্পষ্ট নয়। আপনি যদি এগুলি গভীরতার সাথে বুঝতে চান তবে আপনার এটির জন্য কয়েক মাস ব্যয় করার জন্য প্রস্তুত থাকতে হবে।


0

আন্ত প্রক্রিয়া যোগাযোগ লক-মুক্ত হতে পারে না। কেবল আন্ত-থ্রেড। যতদূর আমি সচেতন।


আমি মনে করি "লক ফ্রি" ব্যবহারকারীর নয়, প্রক্রিয়াটির একটি বৈশিষ্ট্য। আপনি মিশ্রণে ভাগ করা মেমরির মতো জিনিস যুক্ত করলে থ্রেড এবং প্রক্রিয়াগুলির মধ্যে পার্থক্য বেশ পাতলা হয়ে যায়।
টাইলার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.