যেহেতু প্রতিটি CPU কোর একবারে এক বা দুটি থ্রেড প্রক্রিয়া করতে পারে, তাই যদি একাধিক থ্রেড চলমান থাকে তবেও OS কী স্থিতিশীল থাকে?


0

আরো ব্যাখ্যা করার জন্য, অনুমান করুন যে আমাদের হাইপার থ্রেডিং ছাড়াই একটি ডুয়াল কোর CPU আছে, এর অর্থ হল এটি 2 টি থ্রেডকে একবারে প্রক্রিয়া করতে পারে, এখন ধরুন আমাদের কাছে একটি নেটওয়ার্ক অ্যাপ্লিকেশন রয়েছে যা দুটি পটভূমি নেটওয়ার্ক থ্রেড চালায়, প্রত্যেকে ইনকামিং সংযোগগুলির জন্য অপেক্ষা করছে হ্যান্ডেল করার জন্য, তাই থ্রেডগুলি সর্বদা চলমান হওয়া উচিত, এখন, অন্য OS এর প্রক্রিয়া এবং থ্রেড এখনও কেন কাজ করছে? যেহেতু এটি আমার কাছে মনে হচ্ছে, তাদের প্রক্রিয়া করা যাবে না কারণ দুটি থ্রেড সিপিইউ প্রক্রিয়াকরণ ইউনিটকে সম্পূর্ণভাবে সরিয়ে দেয় কারণ তারা নেটওয়ার্ক ইনকামিং সংযোগগুলির জন্য অপেক্ষা করছে এবং তাই, তারা সংযোগের জন্য প্রতিটি ন্যানোোসকন্ড প্রস্তুত হওয়া উচিত ... কিভাবে যে ঘটবে এবং কাজ করে? কোন সিপিএম একাধিক এবং অনেক থ্রেড একযোগে কোন উল্লেখযোগ্য হিমায়ন ছাড়া পরিচালনা করতে পারেন? (আমি জানি, কখনও কখনও, উইন্ডোজগুলি ধীর এবং পাগল হয়ে যায় যদি প্রচুর ভারী প্রোগ্রাম একবারে চালানো হয় তবে এটি সাধারণ সমস্যা নয়)

ধন্যবাদ।


1
কারণ ওএস সময়সূচী হ্যান্ডেল
Ramhound

উত্তর:


5

উত্তর অপেক্ষাকৃত সহজ: যখন একটি থ্রেড একটি I / O ইভেন্টের জন্য অপেক্ষা করছে, তখন এটি তার বাকি সময়টির ফাঁকে OS তে উত্পন্ন হয় যা তারপরে অন্য থ্রেড নির্ধারণ করতে পারে। উচ্চ ল্যাটিন I / O সম্পন্ন হলে, থ্রেডটি কার্যকর করার জন্য প্রস্তুত হিসাবে চিহ্নিত করা হয়।

এটি মূলত সম্ভব কারণ আই / ও অনুরোধটি (ভোট হিসাবে পরিচিত) সম্পন্ন হয়েছে কিনা তা দেখার জন্য বারবার চেক করার পরিবর্তে অধিকাংশ I / O হস্তক্ষেপের মাধ্যমে পরিচালিত হয়।


একটি থ্রেড হয় অপেক্ষা বা চলমান কিন্তু একযোগে উভয় হতে পারে।
David Schwartz

@ ডেভিড স্কয়ার্টজ, "আই / ও ইভেন্টের জন্য অপেক্ষা করছে" লেখার পরিবর্তে সিঙ্ক্রোনাস I / O এর সাথে, পরবর্তী আই / ও ডেটা অনুরোধ করে "আমি আরও সঠিকভাবে লিখিত থাকতে পারতাম" এবং এটি আরও বেশি ডেটা না হওয়া পর্যন্ত OS কে থ্রেডকে ডিস্কেড করার অনুমতি দেয়। প্রাপ্তিসাধ্য "। এমনকি অ্যাসিঙ্ক্রোনাস I / O সহও থ্রেডটি এখনও I / O এর অপেক্ষায় থাকবে তবে অপেক্ষা করার সময়ও এটি চলবে (যেমন ব্যবহারকারী কম্পিউটার ব্যবহার করে একটি ইমেলের জন্য অপেক্ষা করছে)। (একটি কলব্যাক ফাংশন কোনও থ্রেডটিকে যত তাড়াতাড়ি সম্ভব নতুন তথ্য প্রক্রিয়া করতে বা মোটা দাগযুক্ত পোলিং ব্যবহার করতে পারে, একটি কাজ ইউনিট সম্পন্ন হওয়ার পরে নতুন ডেটা যাচাই করার অনুমতি দেয়।)
Paul A. Clayton

প্রথাগত ভোটের মাধ্যমে, একটি থ্রেড উভয় অপেক্ষা করছে (স্পিন লকের মতো) প্রয়োজনীয় কোনও কাজ (স্পিন লকের মতো নয়) যদিও কোনও পলিং লুপটি কার্যকর কাজ অন্তর্ভুক্ত করতে পারে (না একটি লক-ওয়েট লুপ ঠান্ডা না)। হার্ডওয়্যার পরিচালিত ইভেন্টগুলির সাথে (যেমন x86 এর মনিটর / MWAIT), একটি থ্রেড চলমান (ওএস দৃষ্টিকোণ) এবং অপেক্ষা (হার্ডওয়্যার দৃষ্টিকোণ) চলতে পারে। মোটা গরুর হার্ডওয়্যার মাল্টিথ্রেডিংয়ের সাথে, একটি I / O নিবন্ধটি পড়ে (যা ঐতিহ্যগতভাবে ক্যাশে করা অনুমোদিত নয়) হার্ডওয়্যার স্টুডুলারকে এখনও চলমান OS দৃষ্টিকোণ থেকে থ্রেডগুলি স্যুইচ করতে পারে।
Paul A. Clayton

2

আপনি সমবায় multitasking ব্যবহার করে এবং একটি খারাপ প্রোগ্রাম আছে: তাহলে হ্যাঁ, আপনি সঠিক।

তবে বাস্তব বিশ্বের নিম্নলিখিত ঘটতে অনুমিত হয়:

  1. সমবায় multitasking: আমি চালান CPU- র জন্য চিরতরে ব্যবহার করে না। এর পরিবর্তে এটি অন্য প্রোগ্রামটিকে কিছু সময় পরে বা এটি অবরুদ্ধ করার সুযোগ দেবে।
    পল এর উত্তর পরের বর্ণনা।

  2. Preemptive multitasking (প্রায় সর্বত্র ব্যবহৃত): OS (প্রোগ্রামটি নয়) একটি প্রোগ্রামে অল্প সময়ের জন্য CPU সরবরাহ করবে এবং তারপর এটি সরিয়ে নেবে। এটি টাইমারটি চালানোর মতো সরল এবং এটি একবার প্রক্রিয়াটি বন্ধ করে দেওয়ার পরে এবং পরবর্তী ট্র্যাড / প্রোগ্রামটি যা অপেক্ষা করছে তা দেওয়ার সময় এটি সরল হতে পারে।


আপনার ক্ষেত্রে এটি দুইজন কর্মচারী এবং তিনটি (বা তার বেশি) কাজগুলির একটি অফিস হিসাবে মনে করেন। (তাদের টাস্ক-এ, টাস্ক-বি এবং টাস্ক-সি কল করতে দেয়)।

প্রথম কাজটি সুপারভাইজারদের নির্দেশ করে যা আদেশ করে:

  • একটি টাইমার 10 মিনিট সেট করুন। যখন এটি বন্ধ হয়ে যায় তখন আপনার বর্তমান কাজটি বন্ধ করতে, এটি TODO তালিকার নীচে রাখুন এবং এই দস্তাবেজটি পড়তে থাকুন।
  • এরপর TODO তালিকার শীর্ষে থাকা প্রথম আইটেমটিকে সরিয়ে দিন এবং এতে কাজ শুরু করুন।
  • পদ্ধতি পুনরাবৃত্তি করুন।

ওয়ার্কার 1 টি টাইমার সেট করে এবং TODO তালিকার প্রথম কার্যটি পায় (এই ক্ষেত্রে এটি টাস্ক-এ)।

কর্মী 2 একই জিনিস করে: এটি একটি টাইমার সেট করে এবং TODO তালিকার শীর্ষে থেকে যা পায় তা পায়। যেহেতু কর্মী 1 টাস্ক-এটিকে সরিয়ে দিয়েছে, এটি থেকে কর্মী 2 এখন টাস্ক-বিতে শুরু হয়।

দশ মিনিট পরে টাইমার বন্ধ। কর্মী 1 টাস্ক-এ কাজ বন্ধ করে এবং সুপারভাইজার নির্দেশাবলী পায়। যারা রাষ্ট্র TODO তালিকার নীচে বর্তমান টাস্ক করা। সুপারভাইজারের নির্দেশগুলি চালিয়ে যাওয়া এটি এখন টাইমারটিকে পুনঃসূচনা করে এবং TODO তালিকার শীর্ষে থাকা (যা টাস্ক-সি) কাজ করে শুরু করতে শুরু করে।

কর্মী 2 একই কাজ করে এবং টাস্ক-বি বন্ধ করে এবং TODO তালিকার শীর্ষে শুরু করে (যা উদাহরণস্বরূপ টাস্ক-এ)

ইত্যাদি ইত্যাদি

এই কিছুটা সরলীকৃত। তবে এটি আপনাকে একটি ধারণা দেবে যে তিনটি বা তার বেশি কাজগুলিতে দুইটি কর্মী (কর্মীরা) 100% সময় কাজ করতে পারে।

বাস্তব schedulers মধ্যে আরো অনেক কিছু আছে। উদাহরণস্বরূপ interrupts (একটি টাস্ক মাঝখানে ringing একটি ফোন এটি তুলনা করুন এবং যে কিভাবে পরিচালনা করতে), স্মার্ট সময়সূচী (একই কর্মী একই কাজ প্রদান সম্ভবত কর্মী এটি ইতিমধ্যে পরিচিত করা হয়, ফলে এটি দ্রুত কাজ করা হবে) I / O (যদি একজন কর্মীকে কোন লাইব্রেরি থেকে একটি বইয়ের প্রয়োজন হয় তবে টাইমারটির মেয়াদ শেষ না হওয়া পর্যন্ত তিনি অপেক্ষা করবেন না, তবে পরবর্তী কাজটি ইত্যাদি সঙ্গে সঙ্গে চলতে থাকবে ইত্যাদি।


0

অপারেটিং সিস্টেমটি বিভিন্ন সিপিএসগুলিতে একাধিক থ্রেড চলাকালীন স্থিতিশীল থাকে, একইভাবে এটি স্থিতিশীল থাকে। একটি সিপিও কোরের বাইরে থেকে একই কোর দুটি এলপি এবং দুটি আলাদা কোর প্রতিটিতে একটি এলপি মধ্যে আচরণের মধ্যে খুব সামান্য স্পষ্ট পার্থক্য রয়েছে। একই "মাল্টিপ্রসেসর-নিরাপদ" প্রোগ্রামিং কৌশলগুলি, যেমন সেমফোরেস, উভয় ক্ষেত্রেই ব্যবহার করা উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.