কাঁটাচামচ এবং সুতোর পার্থক্য কি কেউ ব্যাখ্যা করতে পারেন?
উত্তর:
একটি কাঁটাচামচ আপনাকে একটি ব্র্যান্ড নতুন প্রক্রিয়া দেয়, যা একই কোড বিভাগগুলির সাথে বর্তমান প্রক্রিয়ার একটি অনুলিপি। মেমরি চিত্র পরিবর্তন হওয়ার সাথে সাথে (সাধারণত এটি দুটি প্রক্রিয়ার ভিন্ন আচরণের কারণে হয়) আপনি মেমরি চিত্রগুলির একটি পৃথকীকরণ পান (অনুলিপি অনুলিপি করুন), তবে এক্সিকিউটেবল কোডটি একই থাকে the কার্যগুলি মেমরি ভাগ করে না যতক্ষণ না তারা কিছু ইন্টার প্রসেস কমিউনিকেশন (আইপিসি) আদিম ব্যবহার করে।
একটি প্রক্রিয়াতে একাধিক থ্রেড থাকতে পারে, প্রতিটি প্রক্রিয়াটির একই প্রসঙ্গে সমান্তরালে কার্যকর করা হয়। মেমোরি এবং অন্যান্য সংস্থানগুলি থ্রেডের মধ্যে ভাগ করা হয়, তাই কিছু আদিম এবং সিঙ্ক্রোনাইজেশন অবজেক্টের (যেমন মুটেক্সেস , কন্ডিশনের ভেরিয়েবল এবং সেমোফোর্স ) মাধ্যমে ভাগ করা ডেটা অ্যাক্সেস করতে হবে যা আপনাকে ডেটা দুর্নীতি এড়াতে দেয়।
কাঁটাচামচ একটি নতুন প্রক্রিয়া ছাড়া কিছুই নয় যা একেবারে পুরানো বা পিতামাতার প্রক্রিয়ার মতো দেখায় তবে এটি বিভিন্ন প্রক্রিয়া আইডি সহ একটি পৃথক প্রক্রিয়া এবং এর নিজস্ব স্মৃতি রয়েছে। অভিভাবক প্রক্রিয়া সন্তানের জন্য পৃথক ঠিকানার স্থান তৈরি করে। পিতা বা মাতা এবং সন্তানের উভয় প্রক্রিয়া একই কোড বিভাগের অধিকারী, তবে একে অপর থেকে স্বাধীনভাবে সম্পাদন করে।
আপনি যখন ইউনিক্স / লিনাক্সের শেলটিতে একটি কমান্ড চালান তখন কাঁটাচামচ করার সহজ উদাহরণ। প্রতিবার কোনও ব্যবহারকারী কোনও কমান্ড জারি করার পরে, শেলটি একটি শিশু প্রক্রিয়া তৈরি করে এবং কাজটি সম্পন্ন করে।
যখন একটি কাঁটাচামচ কল কল জারি করা হয়, তখন প্যারেন্ট প্রসেসের সাথে সম্পর্কিত সমস্ত পৃষ্ঠাগুলির একটি অনুলিপি তৈরি করা হয়, শিশু প্রক্রিয়াটির জন্য ওএস দ্বারা পৃথক মেমরির স্থানে লোড করা হয়, তবে কিছু ক্ষেত্রে, এটির প্রয়োজন হয় না। 'এক্সিকিউট' সিস্টেম কলগুলির মতো, পিতামাতার প্রক্রিয়া পৃষ্ঠাগুলি অনুলিপি করার দরকার নেই, কারণ এক্সিকিউভ পিতা-মাতার প্রক্রিয়াটির ঠিকানা স্থানটি প্রতিস্থাপন করে।
কাঁটাচামচ সম্পর্কে কয়েকটি বিষয় লক্ষণীয়:
থ্রেডগুলি হ'ল হালকা ওজন প্রক্রিয়া (এলডাব্লুপি)। Ditionতিহ্যগতভাবে, একটি থ্রেড কেবলমাত্র একটি সিপিইউ (এবং কিছু অন্যান্য ন্যূনতম রাজ্য) রাষ্ট্র রয়েছে যাতে বাকী (ডেটা, স্ট্যাক, আই / ও, সিগন্যাল) থাকে with থ্রেডগুলিতে "কাঁটাচামচ" বা নতুন প্রক্রিয়া তৈরির চেয়ে কম ওভারহেডের প্রয়োজন হয় কারণ প্রক্রিয়াটির জন্য সিস্টেম কোনও নতুন সিস্টেম ভার্চুয়াল মেমরির স্থান এবং পরিবেশকে আরম্ভ করে না। মাল্টিপ্রসেসর সিস্টেমে সবচেয়ে কার্যকর যেখানে প্রক্রিয়া প্রবাহটি অন্য প্রসেসরের উপর সঞ্চালনের জন্য নির্ধারিত হতে পারে এভাবে সমান্তরাল বা বিতরণ প্রক্রিয়াজাতকরণের মাধ্যমে গতি অর্জন করতে পারে, সেখানে ইউনিকপ্রসেসর সিস্টেমেও লাভ পাওয়া যায় যা I / O এবং অন্যান্য সিস্টেম ফাংশনগুলিতে বিলম্বকে কাজে লাগায় যা প্রক্রিয়া বন্ধ করে দিতে পারে may কার্যকর করা
একই প্রক্রিয়া ভাগ থ্রেড:
ডাকাভের উত্তরটি দুর্দান্ত, আমি কেবল এটি যুক্ত করতে চেয়েছিলাম যে সমস্ত থ্রেডিং মডেল আপনাকে সত্যিকারের মাল্টি-প্রসেসিং দেয় না।
উদাহরণস্বরূপ, রুবির ডিফল্ট থ্রেডিং বাস্তবায়ন সত্যই ওএস / কার্নেল থ্রেড ব্যবহার করে না। পরিবর্তে এটি একক কার্নেল থ্রেড / প্রক্রিয়ার মধ্যে থ্রেড বস্তুর মধ্যে স্যুইচ করে একাধিক থ্রেড থাকার অনুকরণ করে।
এটি মাল্টিপ্রসেসর / মাল্টি-কোর সিস্টেমগুলিতে গুরুত্বপূর্ণ, কারণ এই ধরণের লাইটওয়েট থ্রেডগুলি কেবল একটি একক কোরতে চলতে পারে - আপনি একাধিক থ্রেড থাকা থেকে পারফরম্যান্স বৃদ্ধির পথে বেশি কিছু পান না।
অন্য স্থানে এটির পার্থক্য রয়েছে যখন একটি থ্রেড ব্লক হয় (আই / ও এর জন্য অপেক্ষা করা বা ড্রাইভারের আইওসিটিএল কল করা), সমস্ত থ্রেড ব্লক করে।
আজকাল এটি খুব সাধারণ নয় - বেশিরভাগ থ্রেডিং বাস্তবায়নগুলি কার্নেল থ্রেডগুলি ব্যবহার করে যা এই সমস্যাগুলিতে ভোগেনা - তবে এটি পরিপূর্ণতার জন্য মেনটুইনিং worth
বিপরীতে, কাঁটাচামচ আপনাকে একটি অন্য প্রক্রিয়া দেয় যা মূল প্রক্রিয়াটি সম্পাদন করার সময় অন্য শারীরিক সিপিইউতে একই সাথে চলমান। কিছু লোক আইপিসি তাদের অ্যাপ্লিকেশনটির জন্য আরও উপযুক্ত বলে মনে করেন, আবার কেউ থ্রেডিং পছন্দ করেন।
গুড লাক এবং মজা আছে! মাল্টি-থ্রেডিং উভয়ই চ্যালেঞ্জিং এবং ফলপ্রসূ।
থ্রেডগুলি সমান্তরালভাবে সঞ্চালিত ফাংশন, কাঁটাচামচ একটি পিতামাতার উত্তরাধিকারের সাথে একটি নতুন প্রক্রিয়া। সমান্তরালভাবে কোনও কার্য সম্পাদন করার জন্য থ্রেডগুলি ভাল, যখন কাঁটাচামচগুলি স্বাধীন প্রক্রিয়া, এটি একই সাথে চলমান। থ্রেডগুলিতে রেসের শর্ত রয়েছে এবং সেখানে সেমফোরস এবং লকস বা মিটেক্সেস নিয়ন্ত্রণ করে, পাইপগুলি কাঁটাচামচ এবং থ্রেড উভয়ই ব্যবহার করা যায়।