আপনার নিজস্ব কার্নেল তৈরির বিষয়ে উচ্চাকাঙ্ক্ষী শিক্ষার্থীর জন্য পরামর্শ [বন্ধ]


18

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

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

কার্নেল তৈরির প্রাথমিক পদক্ষেপগুলি কী কী? আপনার যে বিষয়গুলি সম্বোধনের দরকার? অর্ডার দিচ্ছেন নাকি কাজ করছেন? আমি জানি আমি প্রচুর কামড় দিচ্ছি তবে আমি এটি পরিচালনা করতে যথেষ্ট দৃ enough়প্রতিজ্ঞ।


12
আপনাকে সবকিছু শিখতে চাইলে আপনাকে ধর্ষণ করার দরকার নেই। তবে আপনি যদি বাস্তবে চেষ্টা করার পরিকল্পনা করে থাকেন তবে আপনার জীবনকাল, একটি অতিমানবিক মস্তিষ্ক এবং আপনার জীবনের কোনও পরিকল্পনা নেই, আপনি আরও উন্নত করেছেন;)

2
আমি তাদের সব আছে আশা করি! সত্যই যদিও তা নয়, আমার কেবল শিখার অপ্রতিরোধ্য আগ্রহ রয়েছে।
n0pe

@ ডেলান সম্ভাব্য প্যারানয়েড সিজোফ্রেনিয়া আরও একটি প্লাস: মন্দিরোস.আর
ড্যান্ট

নিবন্ধন করুন
Panzercrisis

উত্তর:


34

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

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

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

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

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

ভাগ্যক্রমে, আরও বেশ কয়েকটি সম্ভাবনা রয়েছে - উদাহরণস্বরূপ অ্যান্ড্রু টেনেনবাউম এবং অ্যালবার্ট উডহুলের অপারেটিং সিস্টেম ডিজাইন এবং বাস্তবায়ন


বাহ সুন্দর প্রতিক্রিয়া জন্য ধন্যবাদ। আমি এই সমস্ত বই খতিয়ে দেখব।
n0pe

7
আমি বই এবং উত্সের পিডিএফগুলিতে লিঙ্কগুলি যুক্ত করেছি। ভি 6 ইউনিক্সের উত্স সম্পর্কে আশ্চর্যজনক বিষয়টি হ'ল এটি পৃষ্ঠায় 100 লাইন সহ 100 পৃষ্ঠাগুলি। এবং কোডের 10,000 টি লাইনে আপনার একটি সম্পূর্ণ, মাল্টিটাস্কিং অপারেটিং সিস্টেম রয়েছে । 2238 লাইনে বিখ্যাত মন্তব্যের আশেপাশে কোডটি যদি আপনি সত্যই বুঝতে পারেন, "আপনি এটি বুঝতে অনুমান করেন না," আপনি নিজেকে একটি সোনার তারা এবং একটি অনারারি মাস্টার দিতে পারেন। উপভোগ করুন!
পিটার রওয়েল

লিঙ্কগুলির জন্য ধন্যবাদ! এখন আমাকে কোথায় এটি প্রিন্ট করতে হবে তা নির্ধারণ করতে হবে ....
n0pe

1
মিনিক্স (ট্যানেনবাউম বই) শিক্ষার জন্য ডিজাইন করা হয়েছে এবং এটি এখানে যা প্রয়োজন তা হতে পারে।

@PeterRowell, DMR বিবৃত এটি একটি বাগ ছিল cm.bell-labs.com/who/dmr/odd.html

12

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

এর বেশ কয়েকটি সুবিধা রয়েছে:

  1. আপনার কার্নেলের জন্য আপনার শেষ পর্যন্ত একটি বুটস্ট্র্যাপ প্রক্রিয়া প্রয়োজন, সুতরাং এটি অর্থহীন অনুশীলন হবে না।
  2. এটি আপনাকে সমাবেশে লেখার অনুশীলন দেবে।
  3. এটি নিম্ন স্তরের আইও রুটিনগুলিতে লেখার অনুশীলন দেবে। আপনি যখন কল করার জন্য কোনও ওএস নেই তখন আপনি কীভাবে স্ক্রিনে একটি বার্তা লিখবেন, বা কীস্ট্রোকটি পড়বেন?
  4. এটি আপনাকে সিপিইউ এবং মাদার বোর্ডের প্রযুক্তিগত সংক্ষিপ্তসার নিয়ে গবেষণা করার অভিজ্ঞতা দেবে। (প্রথম প্রশ্ন: আপনার মাদারবোর্ড / সিপিইউ শুরু হওয়ার সাথে সাথে কীভাবে বুটযোগ্য প্রোগ্রামটি খুঁজে পায়?)
  5. কার্নেলগুলি লেখার বিষয়টি একটি অত্যন্ত পরিশীলিত কাজ হয়ে উঠেছে, যার সাথে এক টন সূক্ষ্মতা রয়েছে। এই কাজটি আপনাকে শুরু করার জন্য কিছু দেবে এবং আপনি এমনকি শুরুর আগে আগাছায় হারিয়ে যাওয়া থেকে বিরত রাখবেন।

একবার আপনি এটি করতে পারবেন, আপনি কী gettingোকাচ্ছেন সে সম্পর্কে আপনার আরও ভাল ধারণা হবে have


এর জন্য ধন্যবাদ, আমি মনে করি এটি হ'ল আমি যা চেষ্টা করে যাচ্ছি। আমার ভবিষ্যতে আরও পড়া।
n0pe

7

এসেম্বলারের মধ্যে কীভাবে প্রোগ্রাম করবেন তা শিখতে প্রথম শুরু করা এবং এমএসডোস .0.০ থেকে এটি করা কার্যকর হতে পারে পাশাপাশি বৈশিষ্ট্যগুলিতে অন্তর্নিহিততার কারণে।

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

সি / সি ++ কেবল তখনই কাজ করতে পারে যদি আপনার কার্নেল এই ভাষার জন্য স্ট্যান্ডার্ড লাইব্রেরির সাথে সামঞ্জস্য করে, অন্যথায় আপনি এই লাইব্রেরির একটি অনুলিপিও লিখতে হবে।

এটি এমনকি মাল্টিথ্রেডিং, সিস্টেম সিকিউরিটি, নেটওয়ার্কিং সম্পর্কে ভাবতে শুরু করে না।


7

মিনিক্স একটি দুর্দান্ত ইউনিক্স ক্লোন (যা লিনাক্সকে অনুপ্রাণিত করেছিল) যা শিক্ষার জন্য লেখা হয়েছিল।

অ্যান্ড্রু এস Tannenbaum একটি চমৎকার লেখক ও শিক্ষক এবং উদাহরণ হিসাবে অপারেটিং Minix ব্যবহারকারী সিস্টেমে সম্পর্কে একটি সম্পূর্ণ বই লেখা হয়েছে (এবং বরাবর অনুসরণ করতে সোর্স কোড অন্তর্ভুক্ত): http://en.wikipedia.org/wiki/Operating_Systems:_Design_and_Implementation

ব্যক্তিগতভাবে আমি দেখতে পেলাম তিনি প্রোগ্রামারের চেয়ে কিছুটা উন্নত লেখক তাই কিছু বিষয় আমি ব্যক্তিগতভাবে পছন্দ করতে পারিনা, তবে - আরে - এটি কার্যকর!

আমি দৃ strongly়ভাবে একটি শিক্ষার উত্স হিসাবে এটি দেখার পরামর্শ দিতে পারেন। এটি আপনাকে বাস্তবে কার্যকর হতে পারে এমন কিছু উত্পাদন করতে প্রয়োজনীয় পরিমাণের পরিমাণ সম্পর্কে ধারণা দেয়।


আমি শারীরিক বই পাওয়ার পরামর্শ দিই। নোটগুলি নেওয়া সহজ

আসলে এটি ভাবতে আসা, আমি মনে করি আমি সস্তার জন্য অ্যামাজনে বইটি দেখেছি। আমি এটি সেখানে পেতে পারে। ধন্যবাদ
n0pe

এছাড়াও এটি তৃতীয় সংস্করণ নোট করুন। আমি বিশ্বাস করি যখন আমি কোর্সটি ছিলাম তখন আমরা প্রথম সংস্করণটি ব্যবহার করেছি।

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