Critical Section এবং Race Condition হল concurrency control এর দুটি গুরুত্বপূর্ণ ধারণা, যা একাধিক প্রক্রিয়া বা থ্রেডের মধ্যে তথ্যের সঠিকতা এবং নিরাপত্তা নিশ্চিত করতে ব্যবহৃত হয়। নিচে এই দুটি ধারণার বিস্তারিত আলোচনা করা হলো:
১. Critical Section
সংজ্ঞা:
Critical Section হল একটি কোডের অংশ যেখানে একাধিক প্রক্রিয়া বা থ্রেড একই সময়ে একটি শেয়ার্ড রিসোর্স (যেমন একটি ভেরিয়েবল, ফাইল, বা ডেটাবেস) অ্যাক্সেস করতে পারে। যখন একটি প্রক্রিয়া বা থ্রেড এই শেয়ার্ড রিসোর্সের উপর কাজ করছে, তখন অন্য সব প্রক্রিয়া বা থ্রেডকে সেই রিসোর্সে প্রবেশ করতে বাধা দেওয়া হয়।
উদ্দেশ্য:
- নিরাপত্তা: Critical Section এর উদ্দেশ্য হল রিসোর্সের একসাথে অ্যাক্সেসের কারণে কোনো অপ্রত্যাশিত ফলাফল বা তথ্যের ভুল বুঝাবুঝি থেকে রক্ষা করা।
- সমন্বয়: এটি নিশ্চিত করে যে একই সময়ে একাধিক প্রক্রিয়া একই ডেটা পরিবর্তন না করে।
উদাহরণ:
ধরি, একটি ব্যাংক অ্যাকাউন্টে দুটি ট্রানজেকশন একসাথে করা হচ্ছে। যদি একটি ট্রানজেকশন অ্যাকাউন্টের ব্যালেন্স পরিবর্তন করে, তখন অন্য ট্রানজেকশনকে অপেক্ষা করতে হবে যতক্ষণ না প্রথমটি সম্পূর্ণ হয়।
void deposit(int amount) {
lock(); // Acquire lock
balance += amount; // Critical section
unlock(); // Release lock
}
২. Race Condition
সংজ্ঞা:
Race Condition হল একটি পরিস্থিতি যেখানে দুই বা তার অধিক থ্রেড বা প্রক্রিয়া একসাথে একটি শেয়ার্ড রিসোর্স অ্যাক্সেস করার ফলে অপ্রত্যাশিত বা ভুল আচরণ সৃষ্টি করে। এটি সাধারণত ঘটে যখন একাধিক প্রক্রিয়া একই সময়ে একটি রিসোর্স পরিবর্তন করে এবং সঠিক ফলাফল পাওয়ার জন্য সঠিক সময়ে ডেটা প্রক্রিয়াকরণ হয় না।
উদাহরণ:
ধরি, দুটি প্রক্রিয়া A এবং B একই শেয়ার্ড ভেরিয়েবলে (যেমন counter) একসাথে লেখার চেষ্টা করছে। যদি তারা সময়ের দিক থেকে একে অপরের কাজের মধ্যে হস্তক্ষেপ করে, তাহলে counter এর চূড়ান্ত মান ভুল হতে পারে।
// Shared variable
int counter = 0;
void increment() {
int temp = counter; // Read counter
temp = temp + 1; // Increment
counter = temp; // Write back
}
// If two threads call increment simultaneously, a race condition occurs
৩. পার্থক্য
| বৈশিষ্ট্য | Critical Section | Race Condition |
|---|---|---|
| সংজ্ঞা | একটি কোডের অংশ যেখানে একসাথে শেয়ার্ড রিসোর্স অ্যাক্সেস হয় | একাধিক প্রক্রিয়ার মধ্যে অবৈধ প্রতিযোগিতা |
| উদ্দেশ্য | রিসোর্স নিরাপত্তা নিশ্চিত করা | অপ্রত্যাশিত ফলাফল থেকে রক্ষা পাওয়া |
| অবস্থা | যখন একটি প্রক্রিয়া অ্যাক্সেসে থাকে, তখন অন্য প্রক্রিয়াগুলি অপেক্ষা করে | একাধিক প্রক্রিয়া বা থ্রেডের মধ্যে সংঘর্ষ ঘটে |
| নিয়ন্ত্রণ | Mutex, Semaphores, বা Locks ব্যবহার করে সুরক্ষিত করা হয় | সঠিক সমন্বয় বা সিঙ্ক্রোনাইজেশন দ্বারা প্রতিরোধ করা যায় |
উপসংহার
Critical Section এবং Race Condition হল concurrency control এর গুরুত্বপূর্ণ অংশ। Critical Section এর মাধ্যমে শেয়ার্ড রিসোর্সের অ্যাক্সেস নিয়ন্ত্রণ করা হয়, যেখানে Race Condition সাধারণত ঘটে যখন একাধিক প্রক্রিয়া একই রিসোর্সের উপর কাজ করছে। সঠিক Synchronization Techniques ব্যবহার করে এগুলি নিয়ন্ত্রণ করা সম্ভব।
Read more