পুরানো লিনাক্স কার্নেলগুলির প্রাক-প্রিমিটিভিটির কারণ কী ছিল?


15

প্রথম লিনাক্স বিকাশকারীরা কেন একটি প্রাক-প্রিমিটিভ কার্নেল প্রয়োগ করতে বেছে নিয়েছিল? এটি কি সিঙ্ক্রোনাইজেশন সংরক্ষণ করা যায়?

যতদূর আমি জানি, লিনাক্স 90 এর দশকের গোড়ার দিকে তৈরি হয়েছিল, যখন পিসিগুলির একটি একক প্রসেসর ছিল। এই জাতীয় পিসিগুলিতে একটি অ-প্রাক-প্রিমিটিভ কার্নেল কী সুবিধা দেয়? তবে, কেন মাল্টি-কোর প্রসেসরগুলি দিয়ে সুবিধা হ্রাস হবে?

উত্তর:


26

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

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

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


12

প্রিম্পিটিভ কার্নেলের অর্থ কেবল কোনও বড় কার্নেল লক নেই

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

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

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

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

কার্নেলকে প্রিম্পিটিভ বানানোর জন্য এই বড় কার্নেল লকটি অপসারণ করা দরকার ছিল, অর্থাৎ মাউন্ট এবং অন্যান্য কোনও কাজ একযোগে চলতে সক্ষম হবে। এটি একটি বড় কাজ ছিল।

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

সুতরাং, আপনার প্রশ্নের উত্তরটি এটি নয় যে "প্রাক-প্রাক-চাপের কারণ কী ছিল", কারণ এটি সর্বদা প্রাক-প্রাকৃতিক ছিল। আসল প্রশ্নটি হ'ল প্রিম্পিটিভ কার্নেল প্রয়োগকে কী সত্যই প্রয়োজনীয় করে তুলেছিল । উত্তরটি তার জন্য: বহু-সিপিইউ, বহু-কোর সিস্টেমগুলির বর্ধমান অনুপাত।


আমি আসলে বুঝতে পারি নি :( কার্নেল সংস্করণ ২.৪ অবধি, কেবল ব্যবহারকারীর প্রসেসগুলি পূর্বসংশ্লিষ্ট ছিল এবং কার্নেলটি অ-প্রাক-প্রিমিটিভ ছিল before আমি আগে কাউকে উত্তর দিয়েছি বলে আমি মনে করি যে কারণটি সিঙ্ক্রোনাইজেশন ডেডলকগুলিতে কাজটি পূর্বের সাথে সংঘটিত হতে পারে যা সংরক্ষণ করা ছিল think একক-কোর প্রক্রিয়াতে বাস্তবায়ন
you

@ নর্দেন আমি জানি না আপনি এটি পড়েছিলেন। প্রায় ১.৩ বা ২.০ অবধি একাধিক প্রক্রিয়া চলমান থাকলেও কেবলমাত্র একক প্রক্রিয়া কার্নেল স্পেসে থাকতে পারে। এই সীমাবদ্ধতা মোটামুটি 2.0 এর সাথে মুছে ফেলা হয়েছিল। প্রায় ২.৪ অবধি পূর্বদিকে একটি বড় কার্নেল লক ছিল (অর্থাত্ একসাথে একাধিক ফাইল সিস্টেমগুলি মাউন্ট করা কার্যকর হয়নি)।
পিটারহ - মনিকা

@ নর্দেন তবে এটি কোনও সমবায় মাল্টিটাস্কিং নয়, ইচ্ছাকৃতভাবে সিপিইউটিকে টাস্ক শিডিয়ুলারের কাছে ফিরিয়ে দেওয়ার জন্য কোনও প্রক্রিয়া প্রয়োজন হয়নি। হ্যাঁ, বিকেএলটির কারণ সম্ভবত এটি ছিল যে এটি সঠিকভাবে করা একটি প্রচুর কাজ: 1) লকগুলি বিভক্ত করতে হবে 2) লক-ফ্রি ডেটা স্ট্রাকচারগুলি ব্যবহার করা উচিত যদি সম্ভব হয় 3) বিভক্ত লকগুলি ডেডলকগুলি বাড়ে / লাইভলকস, এগুলি সাধারণত বিশেষত নোংরা, হার্ড-টু-ফিক্স বাগ রয়েছে, তাদের সবগুলিই খুঁজে পাওয়া ও ঠিক করা উচিত ৪) সমস্ত ড্রাইভারের কার্নেল কোর এপিআই-র পরিবর্তনের জন্য পোর্ট করা উচিত।
পিটারহ - মনিকা

আমি উত্তরটি সন্ধান করার সময় এটি পড়েছিলাম এবং এটি অপারেটিং সিস্টেমগুলির নামে নেওয়া একটি কোর্সে তথ্য হিসাবেও দেওয়া হয়েছে।
নর্ডন

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

3

এটি কোনও প্রযুক্তিগত উত্তর নয় তবে ওপি কর্তৃক উত্থাপিত নির্দিষ্ট প্রশ্নের একটি historicalতিহাসিক উত্তর : "পুরানো লিনাক্স কার্নেলগুলির প্রাক-প্রিমিটিভিটির কারণ কী ছিল?"

(আমি অনুমান করি যে, @ পেটার তার উত্তর এবং মন্তব্যে ব্যাখ্যা করেছেন যে, "অ-প্রাক্প্রিয়তা" দ্বারা ওপি উভয় বা উভয়ই উল্লেখ করছে যে কেবলমাত্র একটি ব্যবহারকারী প্রক্রিয়া কার্নেলের ভিতরে থাকতে পারে (একটি এপিআইতে)) সময় এবং / অথবা বিগ কার্নেল লক)

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

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

তিনি যদি জানতেন তবে কতটা জনপ্রিয় / দরকারী / গুরুত্বপূর্ণ লিনাক্স হয়ে উঠবে ... তিনি সম্ভবত এটি একইভাবে করতেন। (কেবলমাত্র আইএমও, তিনি আসলে কী ভাবেন সে সম্পর্কে আমার কোনও ধারণা নেই)) কারণ আপনি চালানোর আগে আপনার হাঁটাচলা করতে হবে।

এবং এটি বেশ ভাল সময় ধরে ছিল কারণ ক) লিনাক্স তৈরি করার বিষয়ে আরও অনেক কাজ করার দরকার ছিল যা আজকের (বা তখনও যা ছিল) এবং খ) এটি পরিবর্তন করা একটি বড় কঠিন উদ্যোগ হবে (যেমন অন্যান্য উত্তরে ব্যাখ্যা করা হয়েছে)।

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