দুটি প্রধান ধরণের মাল্টিটাস্কিং অপারেটিং সিস্টেম রয়েছে, পূর্বসামগ্রী এবং সমবায়। উভয়ই সিস্টেমে একাধিক টাস্ক সংজ্ঞায়িত করার অনুমতি দেয়, পার্থক্যটি কীভাবে টাস্ক স্যুইচিংয়ের কাজ করে। অবশ্যই একটি একক কোর-প্রসেসরের সাথে কেবল একটি সময়ে কেবলমাত্র একটি কাজ চলছে running
উভয় ধরণের মাল্টিটাস্কিং ওএসের প্রতিটি কাজের জন্য পৃথক স্ট্যাকের প্রয়োজন। সুতরাং এটি দুটি বিষয় বোঝায়: প্রথমত, প্রসেসরটি স্ট্যামকে র্যামের যে কোনও জায়গায় রাখার অনুমতি দেয় এবং তাই স্ট্যাক পয়েন্টার (এসপি )টিকে চারপাশে সরিয়ে নেওয়ার নির্দেশনা রয়েছে - যেমন কোনও নিম্ন উদ্দেশ্যের মতো হার্ডওয়্যার স্ট্যাক নেই there আমাদের PIC আছে। এটি PIC10, 12 এবং 16 সিরিজ ছেড়ে দেয়।
আপনি সি তে প্রায় পুরোপুরি একটি ওএস লিখতে পারেন, তবে এসপিটি ঘোরাফেরা করে এমন কার্য স্যুইচারটি সমাবেশে থাকতে হবে। বিভিন্ন সময়ে আমি PIC24, PIC32, 8051, এবং 80x86 এর জন্য টাস্ক স্যুইচার লিখেছি। প্রসেসরের আর্কিটেকচারের উপর নির্ভর করে সাহসগুলি একেবারে আলাদা।
দ্বিতীয় প্রয়োজনটি হ'ল একাধিক স্ট্যাকের জন্য পর্যাপ্ত র্যাম রয়েছে। সাধারণত একজন স্ট্যাকের জন্য কমপক্ষে কয়েকশো বাইট চাইবে; তবে প্রতি টাস্কে মাত্র 128 বাইটে, আটটি স্ট্যাকের জন্য 1 কে বাইট র্যাম লাগবে - আপনাকে প্রতিটি কাজের জন্য একই আকারের স্ট্যাক বরাদ্দ করতে হবে না। মনে রাখবেন বর্তমান টাস্কটি হ্যান্ডেল করার জন্য আপনার পর্যাপ্ত স্ট্যাক এবং এর নেস্টেড সাবরুটাইনগুলিতে যে কোনও কল প্রয়োজন, তবে একটি বিঘ্নিত কলের জন্যও স্ট্যাকের প্রয়োজন কারণ কখনই কখন ঘটবে তা আপনি জানেন না।
আপনি প্রতিটি কাজের জন্য কত স্ট্যাক ব্যবহার করছেন তা নির্ধারণ করার জন্য মোটামুটি সহজ পদ্ধতি রয়েছে; উদাহরণস্বরূপ আপনি সমস্ত স্ট্যাককে একটি নির্দিষ্ট মান থেকে শুরু করতে পারেন, 0x55 বলুন এবং কিছুক্ষণের জন্য সিস্টেমটি চালনা করুন এবং তারপরে মেমরিটি থামিয়ে পরীক্ষা করতে পারেন।
আপনি কোন ধরণের পিআইসি ব্যবহার করতে চান তা বলবেন না। বেশিরভাগ পিআইসি 24 এবং পিআইসি 32 এর একটি মাল্টিটাস্কিং ওএস চালানোর জন্য প্রচুর জায়গা থাকবে; পিআইসি 18 (র্যামে স্ট্যাকের একমাত্র 8-বিট পিআইসি) এর সর্বোচ্চ র্যাম আকার 4K। সুতরাং এটি বেশ ifif।
সমবায় মাল্টিটাস্কিং (দুজনের সহজ) দিয়ে, টাস্ক স্যুইচিং কেবল তখনই করা হয় যখন টাস্কটি ওএসকে তার নিয়ন্ত্রণ ফিরে দেয়। যখনই কোনও কার্য সম্পাদনের জন্য টাস্কের কোনও ওএস রুটিন কল করা প্রয়োজন যা এটি অপেক্ষা করবে যেমন আই / ও অনুরোধ বা টাইমার কল। এটি ওএসের জন্য স্ট্যাকগুলি স্যুইচ করা সহজ করে তোলে, যেহেতু রেজিস্টার এবং সমস্ত তথ্য সংরক্ষণের প্রয়োজন হয় না, এসপিটিকে অন্য কোনও কার্যে স্যুইচ করা যেতে পারে (যদি অন্য কোনও কার্য পরিচালনার জন্য প্রস্তুত না থাকে তবে একটি নিষ্ক্রিয় স্ট্যাক থাকে) প্রদত্ত নিয়ন্ত্রণ)। যদি বর্তমান টাস্কটির কোনও ওএস কল করার প্রয়োজন না হয় তবে কিছুক্ষণ চলতে থাকে তবে সিস্টেমকে প্রতিক্রিয়াশীল রাখতে স্বেচ্ছায় নিয়ন্ত্রণ ছেড়ে দেওয়া দরকার।
সমবায় মাল্টিটাস্কিংয়ের সমস্যা হ'ল যদি কাজটি কখনই নিয়ন্ত্রণ ছেড়ে না দেয় তবে এটি সিস্টেমে হোগ করতে পারে। কেবলমাত্র এটি এবং যে কোনও বিঘ্নিত রুটিন যা নিয়ন্ত্রণ দেওয়া হতে পারে তা চলতে পারে, সুতরাং ওএস লকআপ করে বলে মনে হবে। এটি এই সিস্টেমগুলির "সমবায়" দিক। যদি কোনও ওয়াচডগ টাইমার বাস্তবায়িত হয় যা কেবলমাত্র যখন কোনও টাস্ক স্যুইচ সম্পাদিত হয় তখন পুনরায় সেট করা হয়, তবে এই ত্রুটিযুক্ত কাজগুলি ধরা সম্ভব।
উইন্ডোজ ৩.১ এবং এর আগে সমবায় অপারেটিভ সিস্টেম ছিল, আংশিক কারণেই তাদের পারফরম্যান্স এত দুর্দান্ত ছিল না।
প্রিম্পিটিভ মাল্টিটাস্কিং কার্যকর করা আরও কঠিন। এখানে, কার্যগুলি ম্যানুয়ালি নিয়ন্ত্রণ ছেড়ে দেওয়ার প্রয়োজন নেই, তবে পরিবর্তে প্রতিটি টাস্ককে চালানোর জন্য সর্বাধিক পরিমাণ সময় দেওয়া যেতে পারে (10 এমএস বলুন), এবং তারপরে একটি টাস্ক স্যুইচ যদি পরবর্তী রানযোগ্য টাস্কে সঞ্চালিত হয় তবে একটি কাজ রয়েছে। এর জন্য নির্বিচারে কোনও কাজ বন্ধ করা, রাষ্ট্রের সমস্ত তথ্য সংরক্ষণ করা এবং এসপিটিকে অন্য কোনও কার্যে স্যুইচ করা এবং এটি শুরু করা দরকার। এটি টাস্কটিকে আরও জটিল করে তোলে, আরও স্ট্যাকের প্রয়োজন হয় এবং সিস্টেমটিকে কিছুটা কমিয়ে দেয়।
সমবায় এবং প্রিমিটিভ মাল্টিটাস্কিং উভয়ের জন্যই যে কোনও সময় বাধা সৃষ্টি হতে পারে যা সাময়িকভাবে চলমান কার্যটিকে প্রশমিত করবে p
সুপার ক্যাট যেমন একটি মন্তব্যে উল্লেখ করেছে, সমবায় মাল্টিটাস্কিংয়ের একটি সুবিধা হ'ল সংস্থানগুলি ভাগ করা সহজ (যেমন কোনও মাল্টি-চ্যানেল এডিসির মতো হার্ডওয়্যার বা একটি লিঙ্কযুক্ত তালিকার সংশোধন করার মতো সফ্টওয়্যার)। কখনও কখনও দুটি কাজ একই সময়ে একই সংস্থানটিতে অ্যাক্সেস চায়। পূর্বনির্ধারিত সময়সূচির সাহায্যে, কোনও সংস্থান ব্যবহার করে কোনও টাস্কের মাঝখানে ওএসের পক্ষে কার্যগুলি স্যুইচ করা সম্ভব হবে। সুতরাং অন্য কোনও কাজ একই সংস্থানটিতে আসা এবং অ্যাক্সেস করা থেকে রোধ করার জন্য লকগুলি প্রয়োজনীয়। সমবায় মাল্টিটাস্কিংয়ের সাথে এটি প্রয়োজনীয় নয় কারণ টাস্কটি কখন এটি ওএস-এ ফিরে আসবে তা নিয়ন্ত্রণ করে।