উত্তর:
একটি থ্রেড সুইচ এবং একটি প্রক্রিয়া সুইচের মধ্যে প্রধান পার্থক্য হ'ল থ্রেড সুইচ চলাকালীন ভার্চুয়াল মেমরির স্থান একই থাকে, তবে এটি কোনও প্রক্রিয়া স্যুইচ চলাকালীন হয় না। উভয় প্রকারের প্রসঙ্গের সুইচটি সম্পাদন করতে অপারেটিং সিস্টেমের কার্নেলকে নিয়ন্ত্রণ হস্তান্তর জড়িত। ওএস কার্নেলের মধ্যে ও স্যুইচ করার প্রক্রিয়াটি নিবন্ধগুলি স্যুইচ আউট ব্যয়ের সাথে একটি প্রসঙ্গে স্যুইচ সম্পাদনের বৃহত্তম স্থায়ী ব্যয়।
আরও অস্পষ্ট ব্যয়টি হ'ল প্রসেসরগুলি ক্যাশে করার প্রক্রিয়াগুলির সাথে প্রসঙ্গ সুইচ মেসে যায়। মূলত, যখন আপনি প্রসঙ্গটি স্যুইচ করেন, প্রসেসরটি তার ক্যাশে "স্মরণ করে" মেমরির সমস্ত ঠিকানা কার্যকরভাবে অকেজো হয়ে যায়। এখানে একটি বড় পার্থক্য হ'ল আপনি যখন ভার্চুয়াল মেমোরি স্পেসগুলি পরিবর্তন করেন, প্রসেসরের অনুবাদ লুকাসাইড বাফার (টিএলবি) বা সমতুল্যতা ফ্লাশ হয়ে যায় যা কিছুক্ষণের জন্য মেমরির অ্যাক্সেসকে আরও ব্যয়বহুল করে তোলে। থ্রেড সুইচ চলাকালীন এটি ঘটে না।
প্রক্রিয়া প্রসঙ্গে স্যুইচিং মেমরি ঠিকানা স্থান স্যুইচিং জড়িত। এর মধ্যে মেমরি ঠিকানা, ম্যাপিংস, পৃষ্ঠা সারণী এবং কার্নেল সংস্থান রয়েছে includes তুলনামূলকভাবে ব্যয়বহুল অপারেশন। কিছু আর্কিটেকচারে, এর অর্থ এমনকি বিভিন্ন প্রসেসর ক্যাশেগুলি ফ্লাশ করা যা ঠিকানার জায়গাগুলি জুড়ে শেরে যায় না। উদাহরণস্বরূপ, x86 টিএলবি ফ্লাশ করতে হয়েছে এবং কিছু এআরএম প্রসেসরকে এল 1 ক্যাশে পুরোপুরি ফ্লাশ করতে হবে!
থ্রেড স্যুইচিং একই প্রক্রিয়ায় একটি থ্রেড থেকে অন্য থ্রেডে পরিবর্তনের প্রসঙ্গ (প্রসেস জুড়ে থ্রেড থেকে থ্রেডে স্যুইচ করা কেবল প্রক্রিয়া স্যুইচিং) S
প্রথমত, অপারেটিং সিস্টেমটি কার্নেল মোডে বহির্গামী থ্রেড আনয়ন করে যদি এটি ইতিমধ্যে না থাকে, কারণ থ্রেড সুইচ কেবল থ্রেডের মধ্যে সঞ্চালিত হতে পারে যা কার্নেল মোডে চলে runs তারপরে শিডিয়ুলারকে থ্রেডের বিষয়ে কোনও সিদ্ধান্ত নেওয়ার জন্য অনুরোধ করা হয়েছে যাটিতে স্যুইচিং সঞ্চালিত হবে। সিদ্ধান্ত নেওয়ার পরে, কার্নেল সিপিইউতে অবস্থিত থ্রেড প্রসঙ্গে কিছু অংশ সংরক্ষণ করে (সিপিইউ রেজিস্টারগুলি) মেমরির জন্য উত্সর্গীকৃত স্থানে (প্রায়শই বহির্গামী থ্রেডের কার্নেল স্ট্যাকের শীর্ষে)। তারপরে কার্নেল বহির্গামী থ্রেডের কার্নেল স্ট্যাক থেকে আগত থ্রেডের কার্নেল স্ট্যাকের দিকে স্যুইচ করে। এর পরে, কার্নেল পূর্বে মেমরি থেকে আগত থ্রেডের প্রসঙ্গটি CPU রেজিস্টারে লোড করে। এবং অবশেষে নিয়ন্ত্রণটি আবার ব্যবহারকারী মোডে ফিরে আসে, তবে নতুন থ্রেডের ব্যবহারকারী মোডে। ক্ষেত্রে যখন ওএস নির্ধারণ করে যে ইনকামিং থ্রেডটি চলছে runsঅন্য প্রক্রিয়া, কার্নেল একটি অতিরিক্ত পদক্ষেপ সম্পাদন করে: নতুন সক্রিয় ভার্চুয়াল ঠিকানা স্থান সেট করে।
উভয় পরিস্থিতিতে মূল ব্যয় ক্যাশে দূষণের সাথে সম্পর্কিত। বেশিরভাগ ক্ষেত্রে, বহির্গামী থ্রেড দ্বারা ব্যবহৃত ওয়ার্কিং সেটটি ইনকামিং থ্রেড দ্বারা ব্যবহৃত ওয়ার্কিং সেট থেকে উল্লেখযোগ্যভাবে পৃথক হবে। ফলস্বরূপ, আগত থ্রেড তার জীবন শুরু করবে ক্যাশে মিসের তুষারপাতের ফলে, এভাবে ক্যাশেগুলি থেকে পুরানো এবং অকেজো ডেটা ফ্লাশ করা এবং মেমরি থেকে নতুন ডেটা লোড করা। টিএলবির ক্ষেত্রেও একই কথা রয়েছে (সিপিইউতে রয়েছে অনুবাদ লুক এ্যাসাইড বাফার)। ভার্চুয়াল অ্যাড্রেস স্পেস পুনরায় সেট করার ক্ষেত্রে (থ্রেড বিভিন্ন প্রসেসে চালিত হয়) জরিমানা আরও খারাপ, কারণ ভার্চুয়াল অ্যাড্রেস স্পেস পুনরায় সেট করা পুরো টিএলবি ফ্লাশ করে, এমনকিনতুন থ্রেডে যদি কেবলমাত্র কয়েকটি নতুন এন্ট্রি লোড করতে হয়। ফলস্বরূপ, নতুন থ্রেডটি প্রচুর টিএলবি মিস এবং ঘন ঘন পৃষ্ঠা চলার সাথে সাথে তার সময় কোয়ান্টাম শুরু করবে। থ্রেডগুলির স্যুইচের সরাসরি ব্যয়ও তুচ্ছ নয় (250 ডলার থেকে 1500-2000 চক্র পর্যন্ত) এবং এটি সিপিইউ জটিলতার উপর নির্ভর করে, উভয় থ্রেডের এবং রাজ্যের রেজিস্টারগুলির সেটগুলি যা তারা আসলে ব্যবহার করে।
PS: প্রসঙ্গের সুইচ ওভারহেড সম্পর্কে ভাল পোস্ট: http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html
যদিও থ্রেড কনটেক্সট স্যুইচিংয়ের সম্পাদন প্রসঙ্গে পরিবর্তন করতে হবে (নিবন্ধসমূহ, স্ট্যাক পয়েন্টার, প্রোগ্রাম কাউন্টার), প্রসেস প্রসঙ্গের সুইচগুলি করার মতো তাদের ঠিকানার স্থান পরিবর্তন করার দরকার নেই। যখন আপনি ঠিকানা স্থান, আরও মেমরি অ্যাক্সেস (পেজিং, বিভাগকরণ ইত্যাদি) স্যুইচ করেন তখন অতিরিক্ত ব্যয় হয় এবং একটি নতুন প্রক্রিয়া প্রবেশ বা প্রস্থান করার সময় আপনাকে টিএলবি ফ্লাশ করতে হয় ...
সংক্ষেপে, থ্রেড কনটেক্সট স্যুইচটি ব্র্যান্ডের নতুন মেমরি এবং পিডের সেট সেট করে না, এটি একই প্রক্রিয়ার মধ্যে চলছে বলে এটি পিতামাতার মতোই ব্যবহার করে। একটি প্রক্রিয়া একটি নতুন প্রক্রিয়া তৈরি করে এবং এইভাবে নতুন মেম এবং পিড বরাদ্দ করে।
এটি আরও loooooot আছে। তারা এর উপর বই লিখেছেন।
ব্যয় হিসাবে, একটি প্রক্রিয়া প্রসঙ্গে সুইচ >>>> থ্রেড হিসাবে আপনাকে স্ট্যাক কাউন্টারগুলির সমস্ত পুনরায় সেট করতে হবে ইত্যাদি etc.
ধরে নিই যে সিপিইউ ওএস চালায় কিছু হাই লেটেন্সি ডিভাইস সংযুক্ত করেছে,
প্রক্রিয়াটির ঠিকানা স্পেসের অন্য একটি থ্রেড চালানোর জন্য এটি বোধগম্য হয়, যখন উচ্চ বিলম্বিত ডিভাইসটি আবার সাড়া দেয়।
তবে, যদি হাই লেটেন্সি ডিভাইসটি কোনও নতুন প্রক্রিয়ার জন্য টেবিল সেট করা + ভার্চুয়াল থেকে শারীরিক স্মৃতি অনুবাদ করার প্রয়োজনের চেয়ে সময়ের চেয়ে দ্রুত সাড়া দিচ্ছে, তবে যদি স্যুইচটি একেবারেই প্রয়োজনীয় হয় তবে এটি প্রশ্নবিদ্ধ।
এছাড়াও, হট ক্যাশে (প্রক্রিয়াটি চালানোর জন্য প্রয়োজনীয় ডেটা / থ্রেড কম সময়ে পৌঁছতে পারে) আরও ভাল পছন্দ।