নিষ্ক্রিয় সিপিইউ প্রক্রিয়াটি কী করে?


73

উত্সটির দিকে তাকিয়ে straceআমি ক্লোন পতাকা ব্যবহারের সন্ধান পেয়েছি CLONE_IDLETASKযা এখানে বর্ণিত রয়েছে:

#define CLONE_IDLETASK 0x00001000 /* kernel-only flag */

এর গভীরতর খোঁজ নেওয়ার পরে আমি দেখতে পেলাম যে, যদিও এটিতে পতাকাটি covered man cloneাকা না থাকে তবে মেশিনের প্রতিটি সিপিইউতে নিষ্ক্রিয় প্রক্রিয়া তৈরি করার জন্য কার্নেল দ্বারা নিষ্ক্রিয় প্রক্রিয়াগুলি (যার সবগুলির পিআইডি 0 থাকা উচিত) ব্যবহার করা হয়। অর্থাত্ 8 সিপিইউযুক্ত একটি মেশিনে কমপক্ষে 7 টি (নীচের প্রশ্নটি দেখুন) এ জাতীয় প্রক্রিয়াগুলি "চলমান" (নোট উদ্ধৃতি) থাকবে।

এখন, এটি "নিষ্ক্রিয়" প্রক্রিয়াটি আসলে কী করে তা সম্পর্কে আমাকে একাধিক প্রশ্নের দিকে নিয়ে যায়। আমার ধারণাটি হ'ল এটি সময়সীমার শেষ না হওয়া অবধি ধারাবাহিকভাবে এনওপি অপারেশন চালায় এবং কার্নেলটি আবার নিষ্ক্রিয় প্রক্রিয়া চালানোর জন্য বা অ্যাসাইন করার জন্য একটি আসল প্রক্রিয়া বরাদ্দ করে (যদি সিপিইউ ব্যবহার না করা হয়)। তবুও, এটি সম্পূর্ণ অনুমান। তাই:

  1. একটি মেশিনে, বলুন, 8 সিপিইউতে কি এই জাতীয় 7 টি নিষ্ক্রিয় প্রক্রিয়া তৈরি করা হবে? (এবং কোনও সিপিইউ নিজেই কার্নেল দ্বারা পরিচালিত হবে যখন কোনও কার্য সম্পাদনকারী ইউজারস্পেস কাজ করবে না?)

  2. নিষ্ক্রিয় প্রক্রিয়াটি কি আসলেই এনওপি অপারেশনের অসীম প্রবাহ? (বা লুপ যা একই কাজ করে)।

  3. সিপিইউ ব্যবহার (বলুন uptime) কী কেবল সিপিইউতে নিষ্ক্রিয় প্রক্রিয়াটি ছিল এবং নির্দিষ্ট সময়ের মধ্যে এটি কত দিন ছিল না তা দ্বারা গণনা করা হয়?


পিএস সম্ভবত এটি একটি সিপিইউ কীভাবে কাজ করে তা আমি পুরোপুরি বুঝতে পারি না এই কারণে এই প্রশ্নের একটি ভাল চুক্তি হয়। অর্থাত্ আমি সমাবেশ, সময়সীমা এবং বিঘ্নগুলি বুঝতে পারি তবে আমি জানি না, উদাহরণস্বরূপ, কোনও সিপিইউ কী চালাচ্ছে তার উপর নির্ভর করে কীভাবে কম বা কম শক্তি ব্যবহার করতে পারে। যদি কেউ সে সম্পর্কেও আমাকে আলোকিত করতে পারে তবে আমি কৃতজ্ঞ হব।


17
শিরোনামটি দেখে কেবল "কিছুতেই মোটেও কিছুই নয়" লেখার প্রলোভনে আমাকে প্রতিহত করতে হয়েছিল।
মান 3

4
বেশিরভাগ আধুনিক সিপিইউ অলস অবস্থায় বা কম লোডের ( ডায়নামিক ফ্রিকোয়েন্সি স্কেলিং , উদাহরণস্বরূপ ইনডেল সিপিইউ'র স্পিডস্টেপ ) এর সময় তাদের ঘড়ির হার এবং বিদ্যুৎ খরচ কমিয়ে আনবে lower আপনি যদি কোনও সিপিইউ ওভারক্লাক করেন তবে এটি সাধারণত এই আচরণটি অক্ষম করে দেবে, সিপিইউকে অলস করার সময় সর্বাধিক ঘড়ির হার বজায় রাখতে বাধ্য করে।
নাট

2
"এসিপিআই পাওয়ার স্টেটস" এও দেখুন: এমন বিভিন্ন উপায় রয়েছে যাতে কোনও প্রসেসর নির্দেশাবলী কার্যকর করা বন্ধ করতে পারে তবে এখনও জাগ্রত হতে পারে।
pjc50

উত্তর:


85

নিষ্ক্রিয় কাজটি অ্যাকাউন্টিং প্রক্রিয়া করার জন্য এবং শক্তি ব্যবহার হ্রাস করার জন্য ব্যবহৃত হয়। লিনাক্সে, প্রতিটি প্রসেসরের জন্য একটি অলস টাস্ক তৈরি করা হয়, এবং সেই প্রসেসরের সাথে লক করা হয়; যখনই সেই সিপিইউতে চালানোর জন্য অন্য কোনও প্রক্রিয়া নেই, নিষ্ক্রিয় কাজ নির্ধারিত। অলস কার্যগুলিতে ব্যয় করা সময় যেমন সরঞ্জামগুলিতে "অলস" সময় হিসাবে প্রদর্শিত হয় top। (আপটাইম আলাদাভাবে গণনা করা হয়))

ইউনিক্সের কাছে সবসময় কোনও অকার্যকর লুপ রয়েছে বলে মনে হয় (তবে অগত্যা একটি আসল নিষ্ক্রিয় টাস্ক নয়, গিলসের উত্তর দেখুন ), এবং এমনকি ভি 1-তে এটি এমন একটি WAITনির্দেশিকা ব্যবহার করেছিল যা প্রসেসরটিকে কোনও বাধা না আসা পর্যন্ত থামিয়ে দিয়েছিল (এটি "অপেক্ষা করছিল" সাময়িক বিরতি ")। অন্যান্য কয়েকটি অপারেটিং সিস্টেম বিশেষত উইন্ডোজটির ব্যস্ত লুপ, ডস, ওএস / 2 এবং প্রাথমিক সংস্করণ ব্যবহার করে। দীর্ঘদিন ধরে, সিপিইউগুলি তাদের জ্বালানি খরচ এবং তাপ উত্পাদন হ্রাস করতে এই জাতীয় "অপেক্ষা" নির্দেশ ব্যবহার করে। আপনি অলস কর্মগুলির বিভিন্ন বাস্তবায়ন দেখতে পারেন উদাহরণস্বরূপ arch/x86/kernel/process.cলিনাক্স কার্নেলের মধ্যে: বেসিকটি কেবলমাত্র কল করেHLT, যা প্রসেসরটিকে কোনও বাধা উপস্থিত না হওয়া অবধি বন্ধ করে দেয় (এবং C1 শক্তি-সঞ্চয় মোড সক্ষম করে), অন্যান্য বাস্তবায়নগুলি বিভিন্ন বাগ বা অদক্ষতা ( যেমন কিছু সিপিইউ MWAITপরিবর্তে ব্যবহার করে HLT) পরিচালনা করে।

প্রক্রিয়াগুলিতে নিষ্ক্রিয় রাষ্ট্রগুলি থেকে সমস্ত কিছুই সম্পূর্ণ আলাদা, যখন তারা কোনও ইভেন্টের জন্য অপেক্ষা করে (I / O ইত্যাদি)।


3
হেই, আমি এখন এটি দেখতে, ধন্যবাদ। play_dead()এইচএলটি কার্যকর করার জন্য একটি খুব সুন্দর স্মৃতিচারণমূলক নাম। প্রতিটি সিপিইউতে এইচএলটি প্রেরণ এবং ফলস্বরূপ ঝুলতে ঝুঁকি থাকবে না? (উদাহরণস্বরূপ, এই পরিস্থিতিতে পৌঁছানো, প্রতিটি সিপিইউতে
এইচএলটি,

30
সিপিইউ একটি বাধা মাধ্যমে HALT থেকে জেগে ওঠে।
জোহান মিরেন

1
@ জোহানমায়রিন - দুর্দান্ত, এটি উপলব্ধি করে। এমন ক্ষেত্রে এমনকি কোনও ইনপুট ডিভাইস থেকে আইআরকিউ বাধাগুলি এটিকে জাগিয়ে তুলবে। ধন্যবাদ।
গ্রুচমাল

15
বা আরও নির্ভরযোগ্যভাবে, টাইমার বিঘ্নিত হয় ... (টিকলেস হ্যান্ডলিং মাছের আর একটি কেটলি))
স্টিফেন কিট

3
@ ইজেপি প্রকৃতপক্ষে, এটি একটি দুর্দান্ত সাধারণ নির্দেশ, যদিও এটির বিভিন্ন স্থাপত্যে বিভিন্ন নাম রয়েছে।
ইমিগ্রিস

50

প্রসেস শিডিউলারের পাঠ্যপুস্তকের ডিজাইনে, শিডিউলারের যদি শিডিউল করার কোনও প্রক্রিয়া না থাকে (যেমন যদি সমস্ত প্রক্রিয়া অবরুদ্ধ থাকে তবে ইনপুটটির জন্য অপেক্ষা করা হয়), তবে শিডিয়ুলার একটি প্রসেসরের বিঘ্নিত হওয়ার জন্য অপেক্ষা করে। বিঘ্ন একটি পেরিফেরাল থেকে ইনপুট নির্দেশ করতে পারে (ব্যবহারকারীর ক্রিয়া, নেটওয়ার্ক প্যাকেট, একটি ডিস্ক থেকে পড়া সমাপ্ত ইত্যাদি) বা টাইমার বিঘ্নিত হতে পারে যা একটি প্রক্রিয়াতে টাইমারকে ট্রিগার করে।

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

কীভাবে অপেক্ষার জন্য-বাধাগ্রস্থ কাজগুলি প্রসেসরের ক্ষমতার উপর নির্ভর করে। সর্বাধিক বেসিক প্রসেসরের নকশা সহ এটি কেবল একটি ব্যস্ত লুপ -

nothing:
    goto nothing

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

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


5
মনে রাখবেন যে AVR- ভিত্তিক মাইক্রোকন্ট্রোলারগুলির মতো খুব বুনিয়াদী এম্বেড হওয়া সিপিইউগুলিতে একটি ডাব্লুএফআই (ওয়েটার ফর ইন্টারপেন) নির্দেশনা রয়েছে, যদিও সেই নির্দেশটি সঠিক মডেলের উপর নির্ভর করে NOP এর সমতুল্য হতে পারে।
জোনাস শোফার

@ জোনাসওয়িলিকি আমি ভেবেছিলাম আপনার যদি কিছুই করার থাকে না তবে আপনি সাধারণত একটি টানটান লুপের মধ্যে চলে যাবেন, বা আপনি স্বল্প-বিদ্যুতের রাজ্যে যেতে পারেন এবং আপনাকে এটি থেকে ছিটকে যাওয়ার জন্য বাধার জন্য অপেক্ষা করতে পারেন (নিম্ন পাওয়ার স্টেটগুলিতে সাধারণত আরও বেশি প্রয়োজন " ধাতু "বাধা)।
নিক টি

1
এম্বেড সিস্টেমগুলির জন্য নির্মিত জোনাস উইলিকি আর্কিটেকচারগুলি বিদ্যুৎ পরিচালনার বিষয়ে যত্নশীল যাতে ডাব্লুএফএআই গুরুত্বপূর্ণ। অনেক পুরানো স্থাপত্যের তেমন কোনও জিনিস নেই। আসল ৮০86 architect আর্কিটেকচারটি, আফয়ার নয়। 68k এর কি ডাব্লুএফআই আছে? এটি কি এমআইপিএস-এ একটি আদর্শ বৈশিষ্ট্য? নিম্ন-স্তরের প্রোগ্রামিংয়ের সাথে আমার পরিচিতি বেশিরভাগ এআরএমের উপর, যেখানে স্বল্প বিদ্যুত ব্যবহার অবশ্যই বিষয় এবং ডাব্লুএফআই কেবলমাত্র বিদ্যুৎ পরিচালনার আইসবার্গের টিপ।
গিলস

1
@ গিলিস 8086 এর একটি থামার নির্দেশ ছিল। En.m.wikedia.org/wiki/HLT_(x86_in تعمیر দেখুন ) নির্দেশিকায় কেবলমাত্র ৮০৪486 ডিএক্স ৪-এর শক্তি সঞ্চয় কার্যকারিতা অন্তর্ভুক্ত ছিল। ইতিহাসের দিকে ফিরে দেখা এইচএলটি ইতিমধ্যে 8080 এ ছিল এবং ডাইরভেটস (জেড 80 এর মতো)।
pabouk

1
ডিএক্স 4 HLTবের হওয়ার আগে @ পাবউক 386 এবং 486 এর এসএল রূপগুলি পাওয়ার করতে পারেন (উইকিপিডিয়া নিবন্ধটি ভুল)।
স্টিফেন কিট

0

না, একটি অলস কার্য সিপিইউ চক্র নষ্ট করে না। সময়সূচী কার্যকরভাবে কার্যকর করার জন্য একটি অলস প্রক্রিয়া নির্বাচন করে না। একটি অলস প্রক্রিয়াটি কিছু ইভেন্ট হওয়ার জন্য অপেক্ষা করছে যাতে এটি চালিয়ে যেতে পারে। উদাহরণস্বরূপ, এটি একটি read()সিস্টেম কলে ইনপুটটির জন্য অপেক্ষা করতে পারে ।

যাইহোক, কার্নেল পৃথক প্রক্রিয়া নয়। কার্নেল কোড সর্বদা একটি প্রক্রিয়া প্রসঙ্গে নির্বাহ করা হয় (ভাল, কার্নেলের থ্রেডের বিশেষ ক্ষেত্রে ব্যতীত), সুতরাং এটি বলা ঠিক হবে না "এবং একটি সিপিইউ নিজেই কার্নেল দ্বারা অনুষ্ঠিত হবে যখন কোনও কার্য সম্পাদনকারী ব্যবহারকারী স্থান কাজ করবে না"।


3
হুমম ... আমি মনে করি না এটি এমন একপ্রকার নিষ্ক্রিয় প্রক্রিয়া যা CLONE_IDLETASK দ্বারা তৈরি হয়েছিল। যদি এটি হত তবে একেবারেই তৈরি করার দরকার পড়েনি, অর্থাত সিপিইউগুলিতে কার্নেল নিষ্ক্রিয় প্রক্রিয়াগুলি নির্ধারিত সময়সূচিটি উপেক্ষা করে থাকলে বুটের সময় তাদের জন্য কোনও প্রক্রিয়া তৈরি করার প্রয়োজন হত না। (ডিডাব্লু যদিও আমার নয় :))
গ্রাচমাল

কিছুটা গুগলিং প্রকাশ করে যে CLONE_IDLETASK একটি কর্নেল-অভ্যন্তরীণ পতাকা যা 2002 সালে কার্নেল সংস্করণে 2.5.14 এর কাছাকাছি চালু হয়েছিল এবং পরে 2004 সালে মুছে ফেলা হয়েছিল।
জোহান মাইরিন

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