ما هي أفضل طريقة للتعرف على الأجزاء الداخلية لـ Linux أو BSD kernel؟[مغلق]

StackOverflow https://stackoverflow.com/questions/24648

سؤال

أرغب في اكتساب معرفة أفضل بالأجزاء الداخلية لنظام التشغيل.إدارة العمليات وإدارة الذاكرة وأشياء من هذا القبيل.
كنت أفكر في التعلم من خلال التعرف على Linux أو BSD kernel.
أي نواة أفضل لأغراض التعلم؟
ما هو أفضل مكان للبدء؟
هل يمكنك أن توصي بأي كتب جيدة؟

هل كانت مفيدة؟

المحلول

في الكلية، كان لدي فصل دراسي لأنظمة التشغيل حيث استخدمنا ملف كتاب من تأليف تانينباوم.في الفصل، قمنا بتنفيذ برنامج تشغيل الجهاز في نظام التشغيل مينيكس.لقد كان الأمر ممتعًا للغاية، وتعلمنا الكثير.

هناك شيء واحد يجب ملاحظته، إذا اخترت Minix، فهو مصمم للتعلم.إنها نواة صغيرة، في حين أن Linux وBSD هما نواة متجانسة، لذا فإن ما تتعلمه قد لا يكون قابلاً للترجمة بنسبة 100٪ لتتمكن من العمل مع Linux أو BSD، ولكن لا يزال بإمكانك الاستفادة منه كثيرًا، دون الحاجة إلى المعالجة تمامًا الكثير من المعلومات.

كملاحظة جانبية، إذا كنت قد قرأت فقط للمتعة, في الواقع، كان لينوس يلعب مع Minix قبل أن يكتب Linux، لكن ذلك لم يكن كافيًا لتحقيق أغراضه.

نصائح أخرى

باعتباري أحد مستخدمي Linux، أود أن أقول إن Linux لديه مجتمع رائع يتيح للأشخاص التعرف على النواة. http://kernelnewbies.org يعد مكانًا رائعًا لبدء طرح الأسئلة والتعرف على كيفية عمل النواة.لا يمكنني تقديم توصية للكتاب، ولكن بمجرد قراءة المادة الأولية على kernelnewbies، يصبح المصدر موثقًا جيدًا.

بصرف النظر عن الكتب الجيدة التي سبق ذكرها (يعد تشغيل تصميم النظام وتنفيذه أمرًا جيدًا بشكل خاص)، احصل على الإصدار 1.x من Linux Kernel، وقم بتحميله في VMWare أو VirtualBox وابدأ اللعب من هناك.

ستحتاج إلى قضاء الكثير من الوقت في تصفح كود المصدر.لهذا، تحقق من http://lxr.linux.no/ وهي نسخة مرتبطة بالمصدر قابلة للتصفح وتجعل الحياة أسهل كثيرًا.للاطلاع على الإصدار الأول من Linux (0.01)، راجع http://lxr.linux.no/linux-old+v0.01/.تبدأ المتعة في http://lxr.linux.no/linux-old+v0.01/boot/boot.s.أثناء تقدمك من إصدار إلى إصدار، قم بمراجعة سجل التغيير وابحث في الأجزاء التي تغيرت حتى لا تضطر إلى إعادة قراءة الأمر برمته مرة أخرى.

بمجرد أن تتقن المفاهيم، انظر إلى 2.0، ثم 2.2، وما إلى ذلك.كن مستعدًا لإضاعة الكثير من الوقت في هذه العملية.

سبق لي أن اشتريت هذه الكتب بناءً على توصية لنفس الغرض، لكنني لم أتمكن مطلقًا من دراستها بنفسي، لذا اعتبرها مجرد نصيحة غير مباشرة.

مع ملاحظة عدم وجود BSDs هنا، فكرت في المشاركة:

لم أشارك في أي من الدورات التدريبية بنفسي، ولكنني سمعت مارشال كيرك مكوسيك يتحدث في مناسبات أخرى، وهو جيد حقًا فيما يفعله.

وبالطبع صفحات دليل BSD، والتي تعد مصدرًا ممتازًا حيث يتم صيانتها إلى حد أكبر بكثير من صفحة دليل Linux العادية.خذ على سبيل المثال يو في ام(9) صفحة الرجل، التي تصف واجهة الذاكرة الافتراضية في OpenBSD.

ليس مرتبطًا تمامًا، لكنني سأوصي أيضًا بالفيديو تاريخ توزيعات برمجيات بيركلي لأنه يقدم مقدمة لطيفة لأجزاء BSD من تاريخ وثقافة UNIX بالإضافة إلى الكثير من الحكايات المضحكة من الماضي.

أنصحك بنواة BSD!تحتوي نواة BSD على عدد أقل بكثير من المتسللين، لذا فإن متابعة تطورها أسهل.تتمتع نواة BSD وLinux بمتسللين رائعين، لكن بعض الأشخاص يجادلون بأن الشهرة المنخفضة لـ BSD تعمل على تصفية المبتدئين.كما يكون اتخاذ قرارات التصميم أسهل عندما لا يتم تحديث المصادر 100 مرة في اليوم.

من بين خيارات BSD، الخيار المفضل لدي هو NetBSD.قد لا يكون هذا هو الخيار الخالي من المتاعب الذي تريده لسطح المكتب الخاص بك، ولكن نظرًا لأنه يركز بشدة على قابلية النقل، فإن الجودة جيدة جدًا.أعتقد أن هذا الجزء يقول كل شيء:

يبدو أن بعض الأنظمة لديها فلسفة "إذا نجح الأمر، فهو صحيح".في ضوء ذلك، يمكن وصف فلسفة NetBSD بأنها "لا تعمل إلا إذا كانت صحيحة".

إذا كنت قد عملت لفترة كافية، فستعرف أن NetBSD يعد أمرًا ممتعًا جدًا لتعلم البرمجة الجيدة.على الرغم من أنك ستجد المزيد من الفرص على المستوى المهني مع Linux

أيًا كان الاختيار الذي ستتخذه، ابدأ في الانضمام إلى قوائم البريد الخاصة بهم، وتابع المناقشات.ادرس بعض التصحيحات وحاول أخيرًا إصلاح الأخطاء بنفسك.فيما يتعلق بالكتب، ابحث عن مقالات Diomidis Spinellis و كتابه.إنه ليس كتاب kernel تمامًا، ولكنه يحتوي على أمثلة NetBSD ويساعد كثيرًا في التعامل مع البرامج الكبيرة.

ليس هناك بديل للغوص في الكود.حاول العثور على برنامج تشغيل أو نظام فرعي يثير اهتمامك وتعامل معه.مع أدوات مثل محطة إم وير من السهل جدًا إجراء أي تغييرات تريدها، والتقاط صورة للجهاز الافتراضي، وتشغيل النواة المعدلة.إذا أصيبت النواة بالذعر عند الإقلاع، فمن يهتم؟ما عليك سوى الرجوع إلى اللقطة وإصلاح المشكلة.

بالنسبة للكتب أنصح بها بشدة تطوير نواة لينكس بواسطة روبرت الحب.إنه كتاب مكتوب بشكل رائع - الكثير من المعلومات، منظم بشكل معقول، وروح الدعابة...القراءة ليست جافة على الإطلاق.

خذ نصيحة مايك ستون وابدأ بـ Minix.وهذا ما فعله لينوس!إن الكتاب المدرسي مكتوب بشكل جيد حقًا، وقد قام Tannenbaum بعمل رائع في إظهار كيفية تنفيذ الميزات المختلفة في نظام حقيقي.

يبدو أن أحدًا لم يذكر أن BSD من حيث الكود أكثر نظافة وأكثر اتساقًا.طريقة التوثيق أفضل أيضًا (كما ذكرنا سابقًا).ولكن نظرًا لوجود قدر كبير من العبث بأي نظام تختاره - سأختار النظام الذي تستخدمه كثيرًا.

إن Linux وMinix ممتعان للتعلم.إذا كنت تريد أيضًا معرفة كيف يبدو نظام التشغيل الحديث ذو النواة الدقيقة، فيمكنك إلقاء نظرة على QNX.الوثائق الكاملة متاحة على الإنترنت ويمكن الوصول إليها بسهولة.على سبيل المثال، هذا كتاب على الانترنت.

عندما كنت في الجامعة، أمضيت فصلًا دراسيًا في دراسة أنظمة التشغيل، وكجزء من هذا كان لدي مهمة حيث كان علينا تنفيذ نظام ملفات قائم على ذاكرة الوصول العشوائي في Linux.

لقد كانت طريقة رائعة لفهم الأجزاء الداخلية لـ Linux keurnel والتعرف على كيفية تناسب كل شيء معًا - والكثير من المرح في اللعب بكيفية تفاعله مع الأدوات القياسية أيضًا.

لم أجربه بنفسي، ولكن يمكنك الانتقال إلى Linux From Scratch والبدء في إنشاء توزيعة Linux الخاصة بك.يبدو الأمر وكأنه شيء سيستغرق الكثير من الوقت، ولكنه سيؤدي إلى معرفة وثيقة بأجزاء نواة Linux وكيفية عمل كل جزء.بالطبع، يمكنك استكمال هذا التعلم باتباع أي من النصائح الأخرى هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top