Monday 18 December 2017

تتحرك من المتوسط نواة


الانتقال إلى الأمام الجزء الأول: قرارات التصميم في النواة الرابعة من قبل براد رودريجيز ظهرت هذه المقالة لأول مرة في مجلة الحاسوب 59 (كانون الثاني / يناير - شباط / فبراير 1993). مقدمة الجميع في المجتمع الرابع يتحدث عن كم هو سهل للميناء الرابع إلى وحدة المعالجة المركزية الجديدة. ولكن مثل العديد من المهام كوتاسيكوت و كوتوبيسكوت، لم يكتب الكثير عن كيفية القيام بذلك لذلك، عندما اقترح بيل كيبلر هذا الموضوع لمقال، قررت أن كسر مع التقليد الشفهي العظيم من فورثوريتس، ​​وتوثيق العملية بالأبيض والأسود. على مدى هذه المواد سوف تطوير فورثس ل 6809، 8051، و Z80. إم القيام 6809 لتوضيح نموذج من السهل والتقليدي الرابع بالإضافة إلى ذلك، إيف نشرت بالفعل 6809 المجمع ROD91، ROD92، و إل تكون بحاجة إلى 6809 فورث لمشاريع تجي المستقبلية. إم القيام 8051 الرابع لمشروع الجامعة، لكنه يوضح أيضا بعض القرارات تصميم مختلفة بدلا من ذلك. و Z80 فورث هو لجميع القراء كيم من تسج، وبالنسبة لبعض الأصدقاء مع ترس-80s جمع الغبار. الأجهزة الأساسية يجب عليك اختيار وحدة المعالجة المركزية. أنا لن الخوض في مزايا وحدة المعالجة المركزية واحد على آخر ل فورث، لأن اختيار وحدة المعالجة المركزية وعادة ما أجبر عليك من قبل اعتبارات أخرى. الى جانب ذلك، والهدف من هذه المقالة هو لإظهار كيفية نقل فورث إلى أي وحدة المعالجة المركزية. هل يمكن أن نتوقع المعتاد 16 بت نواة فورث (انظر أدناه) لاحتلال حوالي 8K بايت من مساحة البرنامج. لنواة كاملة التي يمكن أن تجمع تعريفات الرابع، يجب أن تسمح الحد الأدنى من 1K بايت من ذاكرة الوصول العشوائي. لاستخدام فورثس نظام إدارة كتلة لتخزين القرص، يجب إضافة 3 كبيتس أو أكثر للمخازن المؤقتة. بالنسبة لنموذج فورث 32 بت، قم بتضاعفة هذه الأرقام. هذه هي الحد الأدنى للحصول على نواة الرابعة وتشغيلها. لتشغيل تطبيق على الجهاز الخاص بك، يجب زيادة بروم وذاكرة الوصول العشوائي الأحجام لتناسب. 16 أو 32 بيت حجم الكلمة المستخدمة من قبل فورث ليست بالضرورة نفس وحدة المعالجة المركزية. أصغر عملي الرابع هو نموذج 16 بت أي واحد الذي يستخدم 16 بت عدد صحيح وعناوين 16 بت. ويدعو المجتمع الرابع هذا الحجم كوتلسكوت، منذ كوتوردكوت يشير إلى تعريف الرابع. وحدات المعالجة المركزية 8 بت تقريبا تقريبا دعم 16 بت فورثس. وهذا يتطلب عادة ترميزا صريحا للحساب المزدوج البايت، على الرغم من أن بعض وحدات المعالجة المركزية 8 بت لديها عدد قليل من العمليات 16 بت. وحدات المعالجة المركزية 16 بت عادة تشغيل فورثس 16 بت، على الرغم من أن نفس تقنيات الدقة المزدوجة يمكن استخدامها لكتابة 32 بت الرابع على وحدة المعالجة المركزية 16 بت. وقد كتب واحد على الأقل 32 بت الرابع ل 80868088. وحدات المعالجة المركزية 32 بت عادة تشغيل فورثس 32 بت. نادرا ما يحفظ النموذج الرابع طول الشفرة أو وقت المعالج. ومع ذلك، وأنا أعرف من واحد على الأقل 16 بت الرابع مكتوبة ل 68000. وهذا لا يتقلص حجم رمز التطبيق بعامل من اثنين، حيث أن تعريفات رابع المستوى عالية تصبح سلسلة من عناوين 16 بت بدلا من سلسلة من 32- بت. (وهذا سيصبح واضحا قريبا.) ومعظم 68000s، على الرغم من أن لديها الكثير من ذاكرة الوصول العشوائي. كل الأمثلة الموضحة في هذه المقالة هي فورثس 16 بت تعمل على وحدات المعالجة المركزية 8 بت. ذي ثريادينغ تيشنيك كوثريدد كودكوت هو السمة المميزة فورث. و كوتريدكوت الرابع هو مجرد قائمة عناوين الروتينية التي سيتم تنفيذها. يمكنك التفكير في ذلك كقائمة المكالمات الفرعية، مع إزالة تعليمات كال. على مر السنين وقد وضعت العديد من الاختلافات خيوط، والذي هو أفضل واحد يعتمد على وحدة المعالجة المركزية والتطبيق. لاتخاذ قرار، تحتاج إلى فهم كيفية عملهم، ومقاومتهم. رمز الخيوط غير المباشرة (إيتس) هذه هي تقنية الخيوط الرابعة التقليدية، المستخدمة في الشكلين الرابع والثالث، والواردة في معظم الكتب على الرابع. جميع مخططات الترابط الأخرى هي كوتيمبروفيمنتسكووت على هذا، لذلك تحتاج إلى فهم مركز التجارة الدولية لتقدير الآخرين. دعونا ننظر إلى تعريف الكلمة الرابعة سكوار: في نموذجي إيتس فورث هذا سوف تظهر في الذاكرة كما هو مبين في الشكل 1. (سيتم مناقشة رأس في مقال في المستقبل أنه يحمل معلومات التدبير المنزلي المستخدمة في تجميع، وليس متورطا في خيوط .) تفترض واجهت مربع أثناء تنفيذ بعض الكلمة الرابعة الأخرى. سوف فورثس مترجم (إب) يشير إلى خلية في الذاكرة - الواردة في تلك الكلمة كوثروثكوت - الذي يحتوي على عنوان كلمة سكوير. (على وجه الدقة، تحتوي هذه الخلية على عنوان حقل التعليمات سكويرز.) المترجم جلب هذا العنوان، ثم يستخدمه لجلب محتويات حقل التعليمات سكويرز. هذه المحتويات هي عنوان آخر - عنوان روتينية لغة الجهاز الذي ينفذ كلمة سكوار. في الكود الزائف، وهذا هو: وهذا يوضح مبدأ مهم ولكن نادرا-توضيح: عنوان الكلمة الرابعة دخلت للتو يتم الاحتفاظ بها في الكلمات W. كود لا تحتاج هذه المعلومات، ولكن كل أنواع أخرى من الكلمات الرابعة تفعل. إذا كان سكوار مكتوبا في شفرة الماكينة، فستكون هذه هي نهاية القصة: سيتم تنفيذ هذه البتة من شفرة الجهاز، ومن ثم الانتقال إلى مترجم فورث - الذي منذ زيادة إب، يشير إلى الكلمة التالية إلى يعدم. وهذا هو السبب في أن المترجم الرابع يسمى عادة نيكست. ولكن، سكوار هو تعريف كوتكولونكوت رفيع المستوى - أنه يحمل كوتريدكوت، قائمة العناوين. من أجل تنفيذ هذا التعريف، يجب إعادة ترجمة مترجم فورث في موقع جديد: حقل المعلمة سكوار. بطبيعة الحال، يجب أن يتم حفظ المترجمين الموقع القديم، لاستئناف الكلمة كوثروثوت الرابع بمجرد الانتهاء من ساحة. هذا هو تماما مثل استدعاء روتين عمل لغة الآلة سكوير هو ببساطة لدفع إب القديم، تعيين إب إلى موقع جديد، تشغيل مترجم، وعندما يتم سكوير بوب إب. (كما ترون، إب هو كروبروغرام كونتركوت من عالية المستوى فورث.) وهذا ما يسمى دوكولون أو إنتر في فورثس مختلفة: يستخدم هذا الشفرة رمز متطابقة من قبل جميع التعاريف عالية المستوى (أي مترابطة) الرابع ذلك لماذا مؤشر إلى هذه الشفرة رمز، وليس الجزء نفسه، يتم تضمينها في تعريف الرابع. أكثر من مئات التعاريف، المدخرات تضيف، وهذا هو السبب في أنها تسمى خيوط غير المباشرة. و كورتورن من سوبروتينكوت هو كلمة إكسيت، الذي يحصل على تجميع عندما رأى فورث. (بعض فورثس يطلق عليه S بدلا من إكسيت). إكسيت فقط ينفذ روتين لغة الجهاز الذي يفعل ما يلي: المشي من خلال اثنين من تعريفات الرابع المتداخلة، فقط للتأكد من أن هذا يعمل. لاحظ خصائص مركز التجارة الدولية: كل كلمة الرابعة لديها حقل رمز واحد الخلية. تعريفات القولون تجميع خلية واحدة لكل كلمة المستخدمة في التعريف. والمترجم الرابع يجب أن يؤدي في الواقع ضعف مزدوج للحصول على عنوان رمز الجهاز المقبل لتشغيل (أولا من خلال إب، ثم من خلال W). مركز التجارة الدولية ليس أصغر وأسرع تقنية خيوط. قد يكون أبسط على الرغم من دتك (وصفها المقبل) هو في الحقيقة لا أكثر تعقيدا. فلماذا هناك الكثير من فورثس غير مترابطة الخيوط أساسا لأن فورثس السابقة، وتستخدم كنماذج، كانت غير مترابطة. في هذه الأيام، دتك أصبحت أكثر شعبية. لذلك عندما ینبغي استخدام مرکز التجارة الدولیة من خلال التقنیات المختلفة، یقوم مرکز التجارة الدولیة بإصدار تعریفات أنظف وأکثر أناقة - لا یوجد إلا بعناوین. إذا کنت متمسکا بھذه الاعتبارات، یجوز لمرکز التجارة الدولیة أن یناشدك. إذا كان الرمز الخاص بك يتناقض مع دوافع التعاريف، فإن بساطة وتوحيد تمثيل مركز التجارة الدولية قد يعزز قابلية النقل. مركز التجارة الدولية هو النموذج الكلاسيكي الرابع، لذلك قد يكون من المفضل للتعليم. وأخيرا، على وحدات المعالجة المركزية التي تفتقر إلى تعليمات مكالمة فرعية - مثل 1802 - مركز التجارة الدولية غالبا ما تكون أكثر كفاءة من دتك. تختلف التعليمات البرمجية المترابطة المباشرة رمز مترابطة (دتك) عن مركز التجارة الدولية في واحد فقط من الاحترام: بدلا من حقل التعليمات البرمجية التي تحتوي على عنوان بعض رموز الجهاز، يحتوي حقل التعليمات البرمجية على رمز الجهاز الفعلي نفسه. إيم لا أقول أن التعليمات البرمجية كاملة ل إنتر الواردة في كل تعريف القولون في كلمات كوثيغ-ليفيلكوت فورث، سوف يحتوي حقل التعليمات البرمجية على مكالمة فرعية. كما هو مبين في الشكل 2. تعريفات القولون، على سبيل المثال، سوف تحتوي على دعوة إلى روتين إنتر. الرمز الزائف التالي للخيوط المباشرة هو ببساطة: هذه سرعة المكاسب: المترجم ينفذ الآن فقط واحد غير مباشر. على Z80 هذا يقلل من روتين نيكست - جزء التعليمات البرمجية الأكثر استخداما في نواة فورث - من أحد عشر تعليمات إلى سبعة هذه التكاليف الفضاء: كل تعريف رفيع المستوى في Z80 فورث (على سبيل المثال) هو الآن بايت واحد أطول، حيث تم استبدال عنوان 2 بايت باستدعاء 3 بايتات. ولكن هذا ليس صحيحا عالميا. وقد يحل محل 32 بت 68000 فورث عنوان 4 بايتات مع تعليمات بسر 4 بايت، دون خسارة صافية. وعلى زيلوغ Super8، الذي يحتوي على تعليمات الجهاز ل دتك فورث، يتم استبدال عنوان 2 بايت بواسطة تعليمات 1 بايت إنتر، مما يجعل دتك الرابع أصغر على Super8 بالطبع، تعريفات دتك كود هي بايتين أقصر، لأنها لم تعد بحاجة إلى مؤشر على الإطلاق اعتدت على الاعتقاد بأن تعريفات عالية المستوى في دتك فورثس تتطلب استخدام مكالمة روتينية في حقل التعليمات البرمجية. فرانك سيرجانتس بيغمي فورث SER90 يوضح أن قفزة بسيطة يمكن استخدامها بسهولة كما هو، وعادة ما تكون أسرع. وقد قام جاي كيلي بتجميع استعراض رائع لتطبيقات فورث لجهاز عب بيسي KEL92، الذي أوصي به بشدة لجميع كتاب نواة فورث. من 19 فورثس درس، 10 تستخدم دتك، 7 تستخدم إيتس، و 2 تستخدم خيوط الروتين الفرعي (نوقشت بعد ذلك). أوصي باستخدام التعليمات البرمجية المباشر الموضوع على رمز غير مباشر الخيوط لجميع حبات الرابع الجديد. الانتقال إلى التالي، أو التعليمات البرمجية في الخط المترجم الداخلي الرابع، نيكست، هو روتين مشترك لجميع تعريفات الكود. قد تبقي نسخة واحدة فقط من هذا الروتين المشترك، ويكون كل الكلمات كود القفز إليها. (لاحظ أنك انتقل إلى التالي روتين الفرعية دعوة ليست ضرورية). ومع ذلك، فإن سرعة نيكست أمر حاسم لسرعة النظام الرابع بأكمله. أيضا، على العديد من وحدات المعالجة المركزية، روتين نيكست قصيرة جدا في كثير من الأحيان سوى اثنين أو ثلاثة تعليمات. لذلك قد يكون من الأفضل أن رمز نيكست في الخط، أينما يتم استخدامه. يتم ذلك في كثير من الأحيان عن طريق جعل نيكست ماكرو المجمع. هذا هو سرعة بسيطة مقابل قرار الفضاء: في خط نيكست هو دائما أسرع، ولكن دائما أكبر تقريبا. زيادة الحجم الكلي هو عدد البايتات الإضافية المطلوبة للتوسع في خط، عدد مرات كلمات كود في النظام. في بعض الأحيان ثيريس أي مقايضة على الإطلاق: في 6809 دتك فورث، في خط نيكست هو أقصر من تعليمات القفز سوبروتين ثريدد كود (ستك) تعريف رفيع المستوى الرابع ليس سوى قائمة من الروتين الفرعية التي سيتم تنفيذها. أنت لا تحتاج إلى مترجمين شفويين لإنجاز هذا يمكنك الحصول على نفس التأثير ببساطة عن طريق التوتير قائمة من دعوات روتين معا: انظر الشكل 3. وقد استخدم هذا التمثيل من الكلمات الرابعة كنقطة انطلاق لشرح تقنيات خيوط الرابع لمبرمجي لغة التجميع KOG82. ستك هو تعريفات القولون التمثيل الأنيق والكلمات كود هي الآن متطابقة. يتم التعامل مع كوتيدفيند وردسكوت (فاريابلز، كونستانتس، وما شابه ذلك) كما هو الحال في دتك - حقل الرمز يبدأ مع قفزة أو استدعاء لبعض رمز الجهاز في مكان آخر. العيب الرئيسي هو أن المكالمات الفرعية عادة ما تكون أكبر من العناوين البسيطة. على Z80، على سبيل المثال، يزيد حجم تعريفات القولون بنسبة 50 - ومعظم التطبيق الخاص بك هو تعريفات القولون في المقابل، على 32 بت 68000 قد لا يكون هناك أي زيادة حجم على الإطلاق، عندما يتم استبدال عناوين 4 بايت مع 4 بايت بسرس. (ولكن إذا كان حجم التعليمات البرمجية الخاص بك يتجاوز 64K، يجب استبدال بعض هذه العناوين مع جسر 6 بايت.) سوبروتين خيوط قد تكون أسرع من خيوط مباشرة. يمكنك توفير الوقت من خلال عدم وجود مترجم، ولكن تفقد الوقت لأن كل إشارة إلى الكلمة الرابعة ينطوي على دفعة والبوب ​​من عنوان المرسل. في دتك فورث، فقط الكلمات عالية المستوى تسبب النشاط على كومة العودة. على 6809 أو زيلوغ Super8، دتك أسرع من ستك. وهناك ميزة أخرى لشركة الاتصالات السعودية: إنها تستغني عن سجل الملكية الفكرية. بعض المعالجات - مثل 8051 - هي قصيرا في معالجة السجلات. القضاء على إب يمكن تبسيط حقا وتسريع النواة الطريقة الوحيدة لمعرفة بالتأكيد هو كتابة نموذج التعليمات البرمجية. ويتعلق هذا الأمر ارتباطا وثيقا باختيار السجلات، الذي نوقش في القسم التالي. شركة الاتصالات السعودية مع التجميع المباشر في التوسع الأمثل المباشر على وحدات المعالجة المركزية القديمة و 8 بت، تقريبا كل البدائية الرابع يتضمن عدة تعليمات الجهاز. ولكن على وحدات المعالجة المركزية أكثر قوة، يتم كتابة العديد من الأوليات الرابع في تعليمات واحدة. على سبيل المثال، في 32 بت 68000، دروب هو ببساطة في فرعي مترابطة الفرعي، باستخدام دروب في تعريف القولون من شأنه أن يؤدي إلى تسلسل أدق هو تعليم اثنين بايت. لماذا تكتب دعوة فرعية رباعية البايت لتعليم ثنائي البايت بغض النظر عن عدد المرات التي يستخدم فيها دروب، لا توجد مدخرات تكون الشفرة أصغر وأسرع إذا تم تشفير أدق مباشرة في تيار بسرس. بعض المجمعين الرابع يفعلون هذا توسع خط كوتينكوت من الكلمات كود CUR93a. والعيب في التوسع في خط هو أن فك العودة إلى شفرة المصدر الأصلي يصبح من الصعب جدا. طالما يتم استخدام المكالمات الفرعية، لا يزال لديك مؤشرات (عناوين الروتين الفرعي) إلى كلمات فورث التي تتضمن مؤشر الترابط. مع مؤشرات على الكلمات، يمكنك الحصول على أسمائهم. ولكن مرة واحدة يتم توسيع كلمة في التعليمات البرمجية في الخط، كل المعرفة من حيث جاء هذا الرمز من فقدت. ميزة التوسع في خط - وبصرف النظر عن السرعة والحجم - هو إمكانية لتحسين التعليمات البرمجية. على سبيل المثال، سيتم تجميع تسلسل فورث في 68000 ستك كما يمكن توسيعها في خط كدليل آلة واحدة الأمثل المجمعين الرابع هو موضوع واسع جدا لهذه المادة. هذا هو مجال نشط من البحوث اللغوية الرابعة انظر، على سبيل المثال، SCO89 و CUR93b. تتويجا النهائي الأمثل ستك هو الرابع الذي يجمع إلى كود آلة كوتوريكوت، تماما مثل C أو فورتران مترجم. رمز خيط رمزية (تك) دتك و ستك تهدف إلى تحسين سرعة البرامج فورث، في بعض التكلفة في الذاكرة. الآن يتيح تحريك الاتجاه الآخر من مركز التجارة الدولية، نحو شيء أبطأ ولكن أصغر. الغرض من موضوع الترابط الرابع هو تحديد قائمة من الكلمات الأربع (فرعون) التي يتعين تنفيذها. لنفرض أن نظام فورث 16 بت فقط كان أقصى 256 كلمة مختلفة. ثم كل كلمة يمكن تحديدها بشكل فريد من قبل عدد 8 بت. بدلا من قائمة من عناوين 16 بت، سيكون لديك قائمة من معرفات 8-بت أو كوتوكنس، وكوت وحجم تعريفات القولون سوف يكون نصفه A مؤشر ترابط الرابع يحتفظ جدول عناوين جميع الكلمات الأربع، كما كما هو مبين في الشكل 4. ثم يتم استخدام قيمة الرمزية لفهرسة في هذا الجدول، للعثور على الكلمة الرابعة المقابلة لرمز معين. هذا يضيف مستوى واحد من غير المباشرة إلى مترجم فورث، لذلك هو أبطأ من كوتادس-ثريددكوت فورث. الميزة الرئيسية ل فورثس الخيوط رمزية هو حجم صغير. ويعتبر تك أكثر شيوعا في أجهزة الكمبيوتر المحمولة وغيرها من التطبيقات ذات الحجم المقيد بشدة. أيضا، جدول نقاط الاقتباس في كل الكلمات الأربع يمكن تبسيط ربط وحدات منفصلة. عيب تك هو السرعة: تك يجعل أبطأ فورثس. أيضا، مترجم تك هو قليلا أكثر تعقيدا. إذا كنت بحاجة إلى أكثر من 256 كلمات الرابع، من الضروري أن يكون بعض نظام الترميز مفتوحة لخلط الرموز 8 بت وأكبر. أستطيع أن أتخيل 32 بت الرابع باستخدام الرموز 16 بت، ولكن كم من أنظمة 32 بت هي مقيدة الحجم القسم مترابطة كود نظرا لوجود الكثير من المشتقات في العالم 8086، يستحق خيوط قطاع إشارة قصيرة. بدلا من استخدام عناوين بايت كوتنورمالكوت ضمن شريحة 64K، يتم استخدام عناوين الفقرة. (A كوتاراغرافكوت هو 16 بايت في 8086.) ثم، يمكن للمترجم تحميل هذه العناوين في سجلات القطاع، بدلا من في سجلات العناوين المعتادة. وهذا يسمح نموذج فورث 16 بت للوصول بكفاءة ميغابايت كامل من 8086 الذاكرة. العيب الرئيسي من خيوط القطاع هو 16-بايت كوغرانولاريتيكيوت من مساحة الذاكرة. يجب أن تكون كل كلمة الرابعة محاذاة إلى حد 16 بايت. إذا كانت الكلمات الأربع لها أطوال عشوائية، سيتم إهدار 8 بايتات في المتوسط ​​لكل كلمة. تسجيل التخصيص بجانب تقنية الترابط، فإن استخدام سجلات وحدة المعالجة المركزية هو قرار التصميم الأكثر أهمية. وربما كان الأكثر صعوبة. يمكن توافر سجلات وحدة المعالجة المركزية تحديد ما هي تقنية خيوط يمكن استخدامها، وحتى ما هي خريطة الذاكرة ستكون السجلات الرابعة الكلاسيكية النموذج الرابع الرابع يحتوي على خمسة سجلات كفتيرتوال. هذه هي الكيانات المجردة التي تستخدم في العمليات البدائية من الرابعة. تم تعريف نيكست و إنتر و إكسيت في وقت سابق من حيث هذه السجلات المجردة. كل واحدة من هذه الخلايا هي خلية واحدة على نطاق واسع - أي في فورث 16 بت، وهذه هي سجلات 16 بت. (هناك استثناءات لهذه القاعدة، كما سترى لاحقا.) قد لا تكون جميع السجلات بو. إذا لم يكن لديك وحدة المعالجة المركزية الخاصة بك ما يكفي من السجلات، وبعض هذه يمكن أن تبقى في الذاكرة. سوء وصف لهم في ترتيب أهميتها أي الجزء السفلي من هذه القائمة هي أفضل المرشحين ليتم تخزينها في الذاكرة. W هو سجل العمل. يتم استخدامه لأشياء كثيرة، بما في ذلك إشارة الذاكرة، لذلك يجب أن يكون سجل عنوان أي يجب أن تكون قادرة على جلب وتخزين الذاكرة باستخدام محتويات W كعنوان. تحتاج أيضا أن تكون قادرة على القيام الحساب على W. (في دتك فورثس، يجب أيضا أن تكون قادرة على القفز غير المباشر باستخدام W.) يستخدم W من قبل مترجم في كل كلمة الرابعة. في وحدة المعالجة المركزية وجود سجل واحد فقط، يمكنك استخدامه ل W والحفاظ على كل شيء آخر في الذاكرة (وسيكون النظام بطيئة بشكل لا يصدق). إب هو مترجم مترجم. يتم استخدام هذا من قبل كل كلمة الرابعة (من خلال التالي، إنتر، أو الخروج). يجب أن يكون عنوان إب سجلا عنوانيا. تحتاج أيضا إلى أن تكون قادرة على زيادة إب. سوبروتين الخيوط فورثس لا تحتاج هذا السجل. بسب هو كومة المعلمة (أو كوتداتا ستاكوت) مؤشر، وأحيانا تسمى ببساطة سب. أنا أفضل بسب لأن سب غالبا ما يكون اسم سجل وحدة المعالجة المركزية، وأنها لا ينبغي الخلط. معظم الكلمات كود استخدام هذا. يجب أن يكون بسب مؤشر كومة، أو سجل العناوين التي يمكن أن تكون متزايدة وقصيرة. كما أنها زائد إذا كنت تستطيع أن تفعل معالجة مفهرسة من بسب. رسب هو مؤشر كومة العودة، وأحيانا تسمى ببساطة رب. ويستخدم هذا من قبل تعريفات القولون في مركز التجارة الدولية و دتك فورثس، وبكل الكلمات في ستك فورثس. يجب أن يكون رسب مؤشر كومة، أو سجل العناوين التي يمكن أن تكون متزايدة وقصيرة. إذا كان ذلك ممكنا. وضع W، إب، بسب، و رسب في السجلات. السجلات الافتراضية التي تتبع يمكن الاحتفاظ بها في الذاكرة، ولكن عادة ما يكون هناك ميزة السرعة لإبقائهم في سجلات وحدة المعالجة المركزية. X هو سجل عمل، لا يعتبر واحدا من سجلات كوتلاسيكالكوت فورث، على الرغم من أن المركز الكلاسيكي الرابع فورثس في حاجة إليها للغير مباشر الثاني. في مركز التجارة الدولية يجب أن تكون قادرة على القفز غير المباشر باستخدام X. X يمكن أيضا أن تستخدم من قبل عدد قليل من الكلمات كود للقيام الحساب ومثل هذه. هذا مهم بشكل خاص على المعالجات التي لا يمكن استخدام الذاكرة كمعامل. على سبيل المثال، أد على Z80 قد يكون (في الكود الزائفة) أحيانا يتم تعريف سجل عمل آخر، Y، أيضا. أوب هو مؤشر المستخدم، مع الاستمرار على عنوان قاعدة منطقة المستخدم المهام. أوب عادة ما تضاف إلى إزاحة، وتستخدم من قبل رمز فورث رفيع المستوى، لذلك يمكن تخزينها فقط في مكان ما. ولكن إذا كانت وحدة المعالجة المركزية يمكن أن تفعل معالجة مفهرسة من سجل أوب، يمكن للكلمات كود بسهولة أكبر وسرعة الوصول إلى متغيرات المستخدم. إذا كان لديك فائض من سجلات العناوين، استخدم واحد ل أوب. مهمة واحدة فورثس لا تحتاج أوب. X - إذا لزم الأمر - هو أكثر أهمية للاحتفاظ في سجل من أوب. أوب هو أسهل من السجلات الظاهرية فورث للانتقال إلى الذاكرة. استخدام كومة الأجهزة تحتوي معظم وحدات المعالجة المركزية على مؤشر كومة كجزء من الأجهزة المستخدمة من قبل المقاطعات والمكالمات الفرعية. كيف هذه الخريطة في سجلات فورث يجب أن يكون بسب أو رسب الجواب القصير هو، فإنه يعتمد. ويقال أن بسب يستخدم أكثر من رسب في مركز التجارة الدولية و دتك فورثس. إذا كانت وحدة المعالجة المركزية لديك تحتوي على عدد قليل من سجلات العناوين، و بوش و بوب أسرع من مرجع صريح، استخدم كومة الأجهزة ككومة المعلمة. من ناحية أخرى، إذا وحدة المعالجة المركزية الخاصة بك غنية في معالجة وسائط - ويسمح معالجة مفهرسة - ثيريس زائد في وجود بسب كغرض عنوان الغرض العام. في هذه الحالة، استخدم كومة الأجهزة ككومة الإرجاع. في بعض الأحيان كنت لا تفعل كومة الأجهزة TMS320C25s ثمانية خلايا فقط عميقة - كل ولكن غير مجدية ل فورث. لذلك يتم استخدام كومة الأجهزة فقط للمقاطعات، وكل من بسب و رسب هي سجلات العناوين للأغراض العامة. (يحدد أنس فورث ما لا يقل عن 32 خلية من كومة المعلمة و 24 خلية من كومة العودة أفضل 64 خلية من كل.) سوف تواجه أحيانا العقيدة أن كومة الأجهزة كتكست تكدس كومة المعلمة، أو قم بإزالة كومة العودة. بدلا من ذلك، قم بتدوين بعض العينات الأولية، مثل معرفة أي نهج أصغر أو أسرع. (دوب و دروب، بالمناسبة، لا يوجد اختبار - أنها عادة تافهة). في بعض الأحيان كنت قد وصلت إلى استنتاجات غريبة وأشار غاري بيرغستروم إلى أن 6809 دتك فورث يمكن إجراء بضع دورات أسرع باستخدام مؤشر كومة المستخدم 6809 كما إب نيكست يصبح بوب. يستخدم سجل فهرس لأحد مداخن فورثس. أعلى من المكدس في سجل يمكن تحسين أداء فورثس إلى حد كبير من خلال الحفاظ على العنصر العلوي من كومة المعلمة في سجل العديد من الكلمات الأربع (مثل 0) ثم لا تحتاج إلى استخدام المكدس. كلمات أخرى لا تزال تفعل نفس العدد من يدفع والملوثات العضوية الثابتة، إلا في مكان مختلف في التعليمات البرمجية. فقط عدد قليل من الكلمات الأربع (دروب و 2DROP) تصبح أكثر تعقيدا، حيث لم يعد يمكنك ببساطة ضبط مؤشر كومة - لديك لتحديث سجل توس كذلك. هناك عدد قليل من القواعد عند كتابة الكلمات كود: كلمة التي يزيل العناصر من المكدس يجب أن تطفو على توس توسع في سجلها. الكلمة التي تضيف عناصر إلى المكدس يجب دفع توسك كوتكوت على المكدس (ما لم، بالطبع، المستهلكة من قبل الكلمة). إذا كان لديك ما لا يقل عن ستة سجلات وحدة المعالجة المركزية حجم الخلية، أوصي الحفاظ على توس في السجل. أرى توس أكثر أهمية من أوب أن يكون في التسجيل، ولكن أقل أهمية من W، إب، بسب، و رسب. (توس في السجل يؤدي العديد من وظائف سجل X). مفيدة إذا كان هذا السجل يمكن أن تؤدي معالجة الذاكرة. بدب-11s، Z8s، و 68000s مرشحين جيدين. تسعة من 19 عب بيسي فورثس دراستها غي كيلي KEL92 تبقي توس في السجل. وأعتقد أن هذا الابتكار قد قاوم بسبب المعتقدات الكاذبة أن أ) أنها تضيف تعليمات، و ب) يجب أن يكون عنصر كومة العلوي يمكن الوصول إليها كذاكرة. وتبين أن حتى كلمات مثل بيك، رول، و ديبث يتم تعديلها تافهة ل توس في التسجيل. ماذا عن التخزين المؤقت عنصرين كومة في السجلات عند الاحتفاظ الجزء العلوي من المكدس في سجل، لا يزال العدد الإجمالي للعمليات المنجزة هي نفسها في الأساس. لا يزال دفع دفعة، بغض النظر عما إذا كان قبل أو بعد العملية التي تقوم بها. من ناحية أخرى، التخزين المؤقت عنصرين كومة في سجلات يضيف عددا كبيرا من التعليمات - دفعة يصبح دفعة تليها خطوة. يمكن فقط المعالجات الرابعة المخصصة مثل RTX2000 ومجمعي الأمثل ذكي خيالي الاستفادة من التخزين اثنين من عناصر المكدس في السجلات. بعض الأمثلة هنا هي مهام السجل التي قام بها فورثس لعدد من وحدات المعالجة المركزية المختلفة. حاول استنتاج القرارات التصميمية للمؤلفين من هذه القائمة. يشير كوتسكوت إلى مؤشر كومة الأجهزة. يشير كوزاباجيكوت إلى القيم المحفوظة في صفحة الذاكرة 6502s الصفر، والتي تكون تقريبا مفيدة - أحيانا أكثر فائدة من - القيم المحفوظة في السجلات على سبيل المثال. ويمكن استخدامها لمعالجة الذاكرة. كوتيفيدسكوت يعني أن باينس 8051 فورث لديه واحد، منطقة المستخدم غير المنقولة، و أوب هو ثابت الثابت. سجلات الضيقة لاحظ أي شيء غريب في القائمة السابقة 6502 فورث - نموذج 16 بت - يستخدم مؤشرات مكدس 8 بت فمن الممكن لجعل بسب، رسب، وأصغر من حجم الخلية من الرابع. وذلك لأن المداخن ومنطقة المستخدم هي مناطق صغيرة نسبيا من الذاكرة. كل كومة قد تكون صغيرة مثل 64 خلايا في الطول، ومنطقة المستخدم نادرا ما يتجاوز 128 الخلايا. تحتاج ببساطة للتأكد من أن إما أ) هذه المناطق البيانات تقتصر على مساحة صغيرة من الذاكرة، لذلك يمكن استخدام عنوان قصير، أو ب) يتم توفير بت عنوان عالية بطريقة أخرى، على سبيل المثال. يتم تحديد صفحة الذاكرة. في 6502، يقتصر المكدس الأجهزة إلى الصفحة الأولى من ذاكرة الوصول العشوائي (عناوين 01xxh) من خلال تصميم وحدة المعالجة المركزية. يمكن استخدام مؤشر المكدس 8 بت ل ريتورن ستاك. يتم الاحتفاظ كومة المعلمة في صفحة صفر من ذاكرة الوصول العشوائي، والتي يمكن الوصول إليها بشكل غير مباشر من قبل سجل مؤشر 8 بت X. (سؤال للطالب المتقدم: لماذا استخدام 6502s X، وليس تلميح Y: نظرة على وسائط معالجة المتاحة. ) في 8051، يمكنك استخدام سجلات 8 بت R0 و R1 لمعالجة ذاكرة الوصول العشوائي الخارجية، شريطة أن تقوم بإخراج 8 بت عالية من العنوان إلى المنفذ 2. وهذا يسمح ل كتيباج سيليكتكوت لمكدستين. أوب يختلف عن بسب و رسب: فإنه ببساطة يوفر عنوان قاعدة لم يتم زيادة أو تناقص أبدا. لذلك عملي لتوريد فقط بت عالية من هذا السجل الظاهري. ويجب بعد ذلك توفير البتات المنخفضة باستخدام أي تقنية معالجة مفهرسة. على سبيل المثال، على 6809، يمكنك استخدام سجل دب للاحتفاظ ب 8 بت عالية من أوب، ثم استخدام الصفحة المباشرة معالجة للوصول إلى أي من 256 موقعا في هذه الصفحة. هذا يجبر جميع مناطق المستخدم للبدء على عنوان xx00h، الذي لا توجد مشقة كبيرة، ويحد من مساحة المستخدم إلى 128 خلايا في الطول. على 8086 هل يمكن أن تصور استخدام سجل شريحة لتحديد عنوان قاعدة لمنطقة المستخدم. المراجع CUR93a كيرلي، تشارلز، كوتليف في فاستفورث لين، بانتظار النشر في فورث ديمنزيونس. وصف 68000 روتيني الخيوط الرابع. CUR93b كيرلي، تشارلز، كوتوبتيميزينغ في بسرجسر الخيوط الرابع، بانتظار نشر في الرابع الأبعاد. واحد تمرير رمز الأمثل ل فاستفورث، في خمس شاشات فقط من رمز يتضمن الإدراج. KEL92 كيلي، غاي M. كوتورث كومباريسونز كومباريسونس، فور فورث ديمنزيونس زيي: 6 (مارابر 1992). نشرت أيضا في إجراءات المؤتمر فورمل 1991. وكلاهما متاح من مجموعة فورث إنتيريست، P. O. بوكس 2154، أواكلاند، كا 94621. يوضح مقايضات التصميم لكثير من 8086 فورثس مع شظايا رمز ومعايير - ينصح بشدة KOG82 كوغ، بيتر M. كوتان الممر المعماري إلى الخيوط - أنظمة كود، إيي الكمبيوتر، المجلد. 15 رقم 3 (مار 1982). يبقى الوصف النهائي لمختلف تقنيات خيوط. ROD91 رودريجيز، B. J.KP. Y.O. أسمبلر، كوت بارت 1، ذي كومبيوتر جورنال 52 (سيبوكت 1991). المبادئ العامة لكتابة المجمعين الرابع. ROD92 رودريجيز، B. J.KP. Y.O. المجمع، الجزء الثاني، مجلة الحاسوب 54 (جانفب 1992). A، 6809، المجمع، إلى داخل، فورث. SCO89 سكوت، أندرو، كوتان إكستنسيبل أوبتميزر فور كومبينغ فورث، كوت 1989 فورمل كونفيرانس بروسيدينغس. مجموعة المصالح الرابعة، P. O. بوكس 2154، أواكلاند، كا 94621. وصف جيد ل 68000 محسن أي رمز المقدمة. CUR86 كيرلي، تشارلز، ريال-فورث ل 68000. تم توزيعها بشكل خاص (1986). JAM80 جيمس، جون S. فيغ-فورث فور بدب-11. فورث إنتيريست غروب (1980). KUN81 كونتز، روبرت E. مفب-فورث عن أبل إي. مطبعة ماونتن فيو (1981). LAX84 لاكسين، H. و بيري، M. F83 ل عب بيسي. الإصدار 2.1.0 (1984). وزعت من قبل المؤلفين، وهي متاحة من مجموعة الفائدة الرابعة أو جيني. LOE81 لوليجر، R. G. ثريدد إنتربريتيف لانغواجيس. بايت بوبليكاتيونس (1981)، إيسبن 0-07-038360-X. قد يكون الكتاب الوحيد من أي وقت مضى مكتوب على هذا الموضوع من خلق نواة تشبه الرابع (المثال المستخدم هو Z80). يستحق ذلك إذا كان يمكنك العثور على نسخة. MPE92 الصغرى هندسة المحدودة مب Z8Super8 بويرفورث الهدف. مب هيلد لين، شيرلي، سوثامبتون، S01 5AF، U. K. (جوون 1992). منتج تجاري. PAY90 باين، ويليام H. جزءا لا يتجزأ من وحدة تحكم فورث للأسرة 8051. أكاديميك بريس (1990)، إيسبن 0-12-547570-5. هذا هو كوكيتكوت كاملة ل 8051 فورث، بما في ذلك ميتاكومبيلر ل عب بيسي. يمكن تحميل الملفات الورقية فقط من جيني. ليس للمبتدئ SER90 الرقيب، فرانك، القزم الرابع ل عب بيسي. الإصدار 1.3 (1990). وزعت من قبل المؤلف، وهي متاحة من مجموعة الفائدة الرابعة. الإصدار 1.4 متاح الآن على جيني، وتستحق بذل المزيد من الجهد للحصول على. TAL80 تالبوت، R. J. فيغ-فورث فور 6809. فورث إنتيريست غروب (1980). لاحظ المؤلفون المنشور على شبكة الإنترنت: الملفات المتوفرة سابقا على خدمة جيني عبر الإنترنت متوفرة الآن من خادم فتب المجموعة فورث الفائدة فتب: ftp. forth. orgpubForth. Updated: 14 يونيو 2010 هذه المقالة هي جزء من بلدي لينكس نواة تحطم كتاب. وهو متاح للتحميل مجانا في شكل بدف وأخيرا، لقد حان الوقت الكبير. قراءة المعلومات المعروضة من قبل الأداة المساعدة تحطم، فهم ما تعنيه هذه الخطوط الغريبة والقرصنة طريقك من خلال المشكلة إلى الجانب الآخر. لقد تعلمنا كيفية تكوين أنظمتنا لإغراق تحطم نواة، وذلك باستخدام لكد و كدومب. سواء محليا أو عبر الشبكة. لقد تعلمنا كيفية إعداد آلية الإغراق تحطم على كل من سينتوس و أوبنزيوس. واستعرضنا الفروق الدقيقة بين نظامي التشغيل. بعد ذلك، نحن يتقن الاستخدام الأساسي من الأداة المساعدة تحطم، وذلك باستخدام لفتح ذاكرة ملقاة ومعالجة المعلومات الواردة فيه. ولكننا لم نتعلم حتى الآن لتفسير الناتج. مقدمة قبل اليوم، وسوف نركز على ذلك فقط. قراءة تحليل فمكور، وفهم ما يعني الإدخالات، وإجراء التحقيق الأساسي للمشكلة، ودراسة التعليمات البرمجية المصدر، واستخلاص منهجية فعالة لمعالجة مشاكل تحطم النواة في المستقبل. حتى إذا كنت في مزاج لبعض هاكولوغي فائقة الخطورة، يرجى اتباع لي. جدول المحتويات القراءة الضرورية يجب عليك قراءة المقالات الأخرى في أخرى لفهم كامل كيف يعمل الأعطال. يمكنك العثور على قائمة مفصلة من المراجع أدناه. دون إتقان المفاهيم الأساسية، بما في ذلك كدومب وظائف تحطم، فلن تكون قادرة على متابعة هذا البرنامج التعليمي بكفاءة. تحليل تقرير الحادث - الخطوات الأولى بمجرد إطلاق الحادث، سوف تحصل على معلومات التقرير الأولي المطبوعة إلى وحدة التحكم. هذا هو المكان الذي يبدأ تحليل تحطم الطائرة. كراش 4.0-8.9.1.el5.centos كوبيرايت (C) 2002، 2003، 2004، 2005، 2006، 2007، 2008، 2009 ريد هات، Inc. حقوق الطبع والنشر (C) 2004، 2005، 2006 عب كوربوراتيون كوبيرايت (C) 1999 -2006 هيوليت باكارد كو حقوق الطبع والنشر (C) 2005، 2006 فوجيتسو ليميتد حقوق التأليف والنشر (C) 2006، 2007 فا أنظمة لينكس اليابان كك حقوق الطبع والنشر (C) 2005 نيك كوربوراتيون حقوق الطبع والنشر (C) 1999، 2002، 2007 سيليكون غرافيكس، Inc. حقوق الطبع والنشر (C) 1999، 2000، 2001، 2002 ميسيون كريتيكال لينوكس، Inc. هذا البرنامج هو البرمجيات الحرة، التي يغطيها جنو العامة الترخيص، وأنت مدعو إلى تغييره أندور توزيع نسخ منه في ظل ظروف معينة. أدخل نسخ المساعدة لمعرفة الشروط. هذا البرنامج لديه أي ضمان على الاطلاق. أدخل ضمان المساعدة للحصول على التفاصيل. ملاحظة: ستدين: نوت a تي غنو غب 6.1 حقوق الطبع والنشر 2004 مؤسسة البرمجيات الحرة، وشركة غب هو البرمجيات الحرة، التي تغطيها رخصة جنو العمومية العامة، وأنت مدعو لتغييره أندور توزيع نسخ منه في ظل ظروف معينة. اكتب عرض النسخ لرؤية الظروف. هناك على الإطلاق أي ضمان ل غب. اكتب إظهار الضمان للحصول على التفاصيل. تم تكوين هذا غب كما x8664-أننوين-لينوكس-غنو. بت: لا يمكن الانتقال من كومة الاستثناء إلى كومة العملية الحالية: مؤشر كومة الاستثناء: ffff810107132f20 مؤشر كومة العملية: ffff81010712bef0 كيرنتستاكباس: ffff8101b509c000 كيرنيل: usrlibdebuglibmodules2.6.18-164.10.1.el5.centos. plusvmlinux دومبفيل: فمكور كبوس: 2 ديت: تو جان 19 20:21:19 2010 أوبتيم: 00:00:00 لواد أفيراج: 0.00، 0.04، 0.07 المهام: 134 نودنام: testhost2localdomain ريليس: 2.6.18-164.10.1.el5 الإصدار: 1 سمب ذو جان 7 19:54: 26 إست 2010 آلة: x8664 (3000 ميغاهرتز) الذاكرة: 7.5 غيغابايت الذعر: سيسرق. الزناد على كراشدومب بيد: 0 كوماند: سوابر تاسك: ffffffff80300ae0 (1 أوف 2) ثرادينفو: ffffffff803f2000 بو: 0 ستات: تاسكرونينغ (أكتيف) يتيح المشي من خلال التقرير. أول شيء تراه هو نوع من الخطأ: بت: لا يمكن الانتقال من كومة الاستثناء إلى كومة العملية الحالية: مؤشر كومة الاستثناء: ffff810107132f20 مؤشر كومة العملية: ffff81010712bef0 كيرنتستاكباس: ffff8101b509c000 الشرح التقني لهذا الخطأ هو قليلا صعبة. اقتباس من قائمة تحطم الأداة المساعدة القائمة البريدية حول التغييرات في تحطم الأداة المساعدة 4.0-8.11 الافراج عنهم، ونحن نتعلم المعلومات التالية: إذا تم تلقي نمي كدم صدر إلى وحدة المعالجة المركزية غير تحطمها x8664 أثناء تشغيل في الجدول الزمني () بعد تعيين المهمة التالية كما الحالي في كبوس رونكو، ولكن قبل تغيير كومة النواة إلى أن المهمة التالية، ثم فشل التتبع الخلفي لجعل الانتقال من نمي استثناء كومة مرة أخرى إلى كومة العملية، مع رسالة الخطأ بت: لا يمكن الانتقال من كومة الاستثناء إلى كومة العملية الحالية. وهذا التصحيح تقرير التناقضات وجدت بين مهمة وضعت كمهمة الحالية في كبوس رونكو، والمهمة الموجودة في وحدة المعالجة المركزية لكل وحدة x8664pda الحقل الحالي (2.6.29 وأسبق) أو متغير وحدة المعالجة المركزية لكل وحدة المعالجة المركزية (2.6.30 و في وقت لاحق). إذا كان يمكن تحديد بأمان أن الإعداد رونكو (المستخدمة افتراضيا) هو سابق لأوانه، ثم سيتم تغيير المهام الداخلية تحطم الأداة المساعدة لكل وحدة المعالجة المركزية لتكون المهمة المشار إليها من قبل قيمة محددة الهندسة المعمارية المناسبة. ماذا يعني هذا التحذير الذي يجب أن يراعي عند تحليل تقرير الحادث. وسيساعدنا في تحديد هيكل المهام الذي نحتاج إلى إلقاء نظرة عليه لتحري الخلل في سبب الأعطال وإصلاحه. في الوقت الحالي، تجاهل هذا الخطأ. ليس من المهم فهم ما يحتوي على تقرير تحطم الطائرة. يمكنك أو لا ترى ذلك. الآن، يتيح فحص التعليمات البرمجية أسفل هذا الخطأ. كيرنيل (كيرنيل): يحدد النواة التي يتم تشغيلها عند وقوع الحادث. دومفيل: هو اسم الذاكرة الذاكرة ملقاة. كبوس: هو عدد وحدات المعالجة المركزية على جهازك. ديت: يحدد وقت الحادث. المهام: يشير إلى عدد المهام في الذاكرة في وقت الحادث. المهمة هي مجموعة من تعليمات البرنامج تحميلها في الذاكرة. نودنام: هو اسم المضيف تحطمت. ريليس: و فيرسيون: حدد إصدار النواة والإصدار. ماشين: يحدد بنية وحدة المعالجة المركزية. الذاكرة: هو حجم الذاكرة الفعلية على الجهاز تحطمت. وتأتي الآن بت مثيرة للاهتمام: الهوس: يحدد ما حدث من حادث تحطم على الجهاز. هناك عدة أنواع يمكنك أن ترى. سيسرك (طلب النظام) يشير إلى مفاتيح سحرية، والتي تسمح لك بإرسال التعليمات مباشرة إلى النواة. ويمكن الاحتجاج بها باستخدام تسلسل لوحة المفاتيح أو عن طريق صدى الأحرف الأوامر إلى الزناد بروسيسرق. شريطة تمكين وظيفة. لقد ناقشنا هذا في البرنامج التعليمي كدومب. عفوا هو الانحراف عن السلوك المتوقع، الصحيح من النواة. عادة، عفوا النتائج في قتل العملية المسيئة. قد يقوم النظام أو قد لا يستأنف سلوكه الطبيعي. على الأرجح، فإن النظام يدخل حالة غير مستقرة، غير مستقرة، والتي يمكن أن تؤدي إلى الذعر نواة إذا كان بعض من عربات التي تجرها الدواب، قتل الموارد المطلوبة في وقت لاحق. على سبيل المثال، في بلدي أوبونتو كارميك وفيدورا قسطنطين استعراض، رأينا دليل على تحطم النواة. ومع ذلك، واصل النظام العمل. وكانت هذه الأعطال في الواقع البساتين. وسوف نناقش قضية فيدورا في وقت لاحق. الذعر هو حالة حيث واجه النظام خطأ فادح ولا يمكن استرداد. يمكن أن يكون سبب الذعر عن طريق محاولة الوصول إلى عناوين غير مسموح بها، التحميل القسري أو التفريغ من وحدات النواة، أو مشاكل الأجهزة. في المثال الأول، الأكثر حميدة، بانيك: تشير السلسلة إلى استخدام مفاتيح ماجيك. لقد تسببنا عمدا في تحطم الطائرة. الذعر: سيسرق. قم بتشغيل بيد بيد كراشدومب: هو معرف العملية. العملية التي تسببت في الحادث. كوماند: هو اسم العملية، في هذه الحالة سوابر. المقايض. أو بيد 0 هو جدولة. في العملية التي تفوض وقت وحدة المعالجة المركزية بين العمليات رونابل وإذا لم يكن هناك عمليات أخرى في رونكو، فإنه يأخذ السيطرة. قد ترغب في الإشارة إلى سوابر كمهمة الخمول، إذا جاز التعبير. ثريس واحد مبادلة لكل وحدة المعالجة المركزية، والتي سوف نرى قريبا عندما نبدأ استكشاف الحادث في عمق أكبر. ولكن هذا ليس مهما حقا. سوف نواجه العديد من العمليات بأسماء مختلفة. تاسك: هو العنوان في الذاكرة لعملية الإساءة. سنستخدم هذه المعلومات لاحقا. هناك فرق في الذاكرة لمعالجة 32 بت و 64 بت البنى. وحدة المعالجة المركزية: هو عدد وحدة المعالجة المركزية (ذات الصلة إذا كان أكثر من واحد) حيث كانت العملية المخالفة قيد التشغيل في وقت الحادث. وحدة المعالجة المركزية يشير إلى النوى وحدة المعالجة المركزية وليس فقط وحدات المعالجة المركزية المادية. إذا كنت تقوم بتشغيل لينوكس الخاص بك مع ارتفاع التفعيل تمكين، ثم سوف يكون أيضا عد المواضيع منفصلة وحدات المعالجة المركزية. هذا أمر مهم أن نتذكر، لأن تعطل المتكررة على وحدة المعالجة المركزية محددة واحدة فقط قد يشير إلى مشكلة وحدة المعالجة المركزية. إذا كنت تقوم بتشغيل العمليات الخاصة بك مع مجموعة تقارب إلى وحدات المعالجة المركزية معينة (تاسكيت)، ثم قد يكون لديك أكثر صعوبة تحديد المشاكل المتعلقة بو عند تحليل تقارير الأعطال. يمكنك فحص عدد من وحدات المعالجة المركزية الخاصة بك عن طريق تشغيل القط بروكوبينفو. ستات: يشير إلى حالة العملية في وقت الحادث. تاسكرونينغ يشير إلى عمليات رونابل، أي العمليات التي يمكن أن تستمر تنفيذها. مرة أخرى، سوف نتحدث أكثر عن هذا لاحقا. الحصول على دفئا رأينا مثالا حميدة حتى الآن. مجرد مقدمة. وسوف نلقي نظرة على عدة أمثلة أخرى، بما في ذلك الحالات الحقيقية. في الوقت الراهن، ونحن نعلم القليل عن الحادث، إلا أن العملية التي تسببت فيه. سنقوم الآن بدراسة العديد من الأمثلة ومحاولة فهم ما نراه هناك. فيدورا مثال يتيح العودة إلى حالة فيدورا. ألق نظرة على لقطة الشاشة أدناه. في حين يتم ترتيب المعلومات بشكل مختلف إلى حد ما مما رأيناه في وقت سابق، في الأساس، في نفس الشيء. ولكن ثيريس قطعة جديدة من المعلومات: بيد: 0، كوم: سوابر غير ملوث. يتيح التركيز على سلسلة غير ملوثة للحظة. ماذا يعني هذا يعني أن النواة لا تقوم بتشغيل أي وحدة تم تحميلها بقوة. وبعبارة أخرى، نحن على الأرجح تواجه علة في مكان ما بدلا من انتهاك للنواة. يمكنك فحص نواة تشغيل الخاص بك عن طريق تنفيذ: حتى الآن، علمنا قليلا أخرى من المعلومات. سنتحدث عن هذا لاحقا. مثال آخر، من الكتاب الأبيض نلقي نظرة على هذا: ميموري: 128MB بانيك: عفوا: 0002 (تحقق من السجل للحصول على التفاصيل) بيد: 1696 كوماند: إنزمود ماذا لدينا هنا قطعة جديدة من المعلومات. عفوا: 0002. ماذا يعني هذا خطأ الصفحة كيرنيل الأرقام الأربعة هي رمز عشري من خطأ الصفحة كيرنيل. ريادينغ أوريليس فهم نواة لينكس، الفصل 9: عنوان عنوان العملية، معالج استثناء خطأ الصفحة، الصفحات 376-382، نتعلم المعلومات التالية: إذا كانت البتة الأولى واضحة (0)، كان الاستثناء ناتجا عن الوصول إلى صفحة غير موجود إذا تم تعيين البتة (1)، وهذا يعني حق الوصول غير صالح. إذا كانت البتة الثانية واضحة (0)، فقد كان الاستثناء ناتجا عن قراءة أو تنفيذ الوصول إذا تم تعيين (1)، كان الاستثناء ناتجا عن وصول الكتابة. إذا كانت البتة الثالثة واضحة (0)، حدث الاستثناء بينما كان المعالج في وضع كيرنيل خلاف ذلك، حدث في وضع المستخدم. بت الرابع يعلمنا ما إذا كان خطأ كان جلب التعليمات. هذا صالح فقط للهندسة المعمارية 64 بت. منذ لدينا الجهاز هو 64 بت، قليلا له معنى هنا. هذا هو مثير جدا للاهتمام. ويبدو أن المعلومات غير المفهومة تبدو منطقية جدا. أوه، قد تشاهد أيضا أخطاء صفحة كيرنيل بالتنسيق التالي كجدول: في بعض الأحيان، يشار إلى الوصول غير الصحيح أيضا باسم خطأ الحماية: لذلك، لفهم ما حدث، نحن بحاجة لترجمة التعليمات البرمجية العشرية إلى ثنائي ثم فحص البتات الأربع، من اليمين إلى اليسار. يمكنك العثور على هذه المعلومات تحت archarchmmfault. c في شجرة المصدر كيرنيل: تعريف خطأ خطأ بتات الصفحة ببروت (1ltlt0) أو عدم العثور على صفحة تعريف بفوريت (1ltlt1) تعريف بفوسر (1ltlt2) تعريف برسفد (1ltlt3) تعريف بينستر (1ltlt4) في حالتنا، عشري 2 هو ثنائي 10. أبحث من اليمين إلى اليسار، بت 1 هو صفر، يضاء قليلا 2، بت 3 و 4 هي صفر. لاحظ العد الثنائي، بدءا من الصفر. 0002 (ديك) --gt 0010 (ثنائي) --gt ليس تعليمات فيتشكرنيل مودوريتينفاليد الوصول ولذلك، لدينا صفحة لم يتم العثور عليها أثناء عملية الكتابة في وضع كيرنيل خطأ لم يكن جلب التعليمات. وبطبيعة الحال، لها أكثر تعقيدا قليلا من ذلك، ولكن لا يزال الحصول على فكرة جيدة جدا من ماذا يحدث. حسنا، بداية للحصول على مثيرة للاهتمام، أليس هو النظر في عملية الإساءة، إنزمود. وهذا يخبرنا قليلا. حاولنا تحميل وحدة النواة. حاولت الكتابة إلى صفحة لا يمكن العثور عليها، وهذا يعني خطأ الحماية، مما تسبب في نظامنا إلى تعطل. قد يكون هذا جزء مكتوب بشكل سيء من التعليمات البرمجية. التحقق من حالة موافق، حتى الآن، شهدنا قليلا من المعلومات المفيدة. لقد علمنا عن حقول المعرفات الأساسية في تقرير الأعطال. علمنا عن أنواع مختلفة من الذعر. علمنا عن تحديد عملية الإساءة، البت فيما إذا كانت النواة ملوثة وأي نوع من المشاكل حدثت في وقت الحادث. ولكننا بدأنا للتو تحليلنا. دعونا نأخذ هذا إلى مستوى جديد. الحصول على الساخنة في المقال الأول على الحادث، علمنا عن بعض الأوامر الأساسية. وقتها لوضعها في حالة جيدة. الأمر الأول الذي نريده هو بت - التتبع الخلفي. نحن نريد أن نرى تاريخ تنفيذ العملية المخالفة، بمعنى التتبع الخلفي. PID: 0 TASK: CPU ffffffff80300ae0: 0 COMMAND: المقايض 0 ffffffff80440f20 crashnmicallback في ffffffff8007a68e 1 ffffffff80440f40 donmi في ffffffff8006585a 2 ffffffff80440f50 NMI في ffffffff80064ebf استثناء RIP: RIP defaultidle61: ffffffff8006b301 RSP: RFLAGS ffffffff803f3f90: 00000246 RAX: 0000000000000000 RBX: RCX ffffffff8006b2d8: 0000000000000000 RDX : 0000000000000000 رسي: 0000000000000001 ردي: ffffffff80302698 ربب: 0000000000090000 R8: ffffffff803f2000 R9: 000000000000003e R10: ffff810107154038 R11: 0000000000000246 R12: 0000000000000000 R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 أوريجراكس: فففففف كس: 0010 سس: 0018 --- لتكسيبتيون ستاكغت - - 3 ffffffff803f3f90 ديفولتدل في ffffffff8006b301 4 ffffffff803f3f90 بويدل في ffffffff8004943c لدينا الكثير من البيانات هنا، يتيح بدء هضم ببطء. تتبع المكالمات تسلسل الخطوط المرقمة، بدءا من علامة التجزئة () هو تتبع المكالمة. لها قائمة من وظائف النواة تنفيذها قبل الحادث مباشرة. وهذا يعطينا مؤشرا جيدا لما حدث قبل أن ينخفض ​​النظام. 0 ffffffff80440f20 crashnmicallback في ffffffff8007a68e 1 ffffffff80440f40 donmi في ffffffff8006585a 2 ffffffff80440f50 NMI في ffffffff80064ebf استثناء RIP: RIP defaultidle61: ffffffff8006b301 RSP: RFLAGS ffffffff803f3f90: 00000246 RAX: 0000000000000000 RBX: RCX ffffffff8006b2d8: 0000000000000000 RDX: 0000000000000000 RSI: 0000000000000001 RDI: RBP ffffffff80302698: 0000000000090000 R8 : ffffffff803f2000 R9: 000000000000003e R10: ffff810107154038 R11: 0000000000000246 R12: 0000000000000000 R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 ORIGRAX: ffffffffffffffff CS: 0010 SS: 0018 --- ltexception stackgt --- 3 ffffffff803f3f90 defaultidle في ffffffff8006b301 4 ffffffff803f3f90 cpuidle في ffffffff8004943c وسوف نناقش ذلك لاحقا. مؤشر التعليمات أول خط مثير للاهتمام هو هذا واحد: استثناء ريب: defaultidle61 لدينا استثناء ريب: defaultidle61. ماذا يعني هذا أولا، يتيح مناقشة ريب. ريب هو مؤشر التعليمات. ويشير إلى عنوان الذاكرة، مشيرا إلى التقدم المحرز في تنفيذ البرنامج في الذاكرة. في حالتنا، يمكنك أن ترى العنوان المحدد في السطر أسفل خط الاستثناء بين قوسين: استثناء ريب: defaultidle61 ريب: ffffffff8006b301 رسب: ffffffff803f3f90. في الوقت الحالي، العنوان نفسه ليس مهما. ملاحظة: في بنية 32 بت، يسمى مؤشر التعليمات إيب. الجزء الثاني من المعلومات هو أكثر فائدة بكثير بالنسبة لنا. ديفولتيدل هو اسم وظيفة النواة التي تكمن فيها ريب. 61 هو الإزاحة، في شكل عشري، داخل الدالة المذكورة حيث حدث الاستثناء. هذا هو الشيء المهم حقا أننا سوف تستخدم في وقت لاحق في تحليلنا. كود الشفرة (كس) سجل الرمز بين السلسلة بين قوسين إلى --- لتكسيبتيون ستاكت --- هو إلقاء السجلات. معظمها ليست مفيدة لنا، باستثناء كس (رمز الشفرة) التسجيل. مرة أخرى، نواجه مزيج من أربعة أرقام. من أجل شرح هذا المفهوم، ولست بحاجة إلى تحريف قليلا والتحدث عن مستويات الامتيازات. مستوى الامتياز هو مفهوم حماية الموارد على وحدة المعالجة المركزية. يمكن أن يكون لسلاسل التنفيذ المختلفة مستويات امتيازات مختلفة، والتي تمنح حق الوصول إلى موارد النظام، مثل مناطق الذاكرة، ومنافذ إو، وما إلى ذلك. هناك أربعة مستويات تتراوح من 0 إلى 3. المستوى 0 هو الأكثر تميزا، والمعروف باسم وضع كيرنيل. المستوى 3 هو الأقل حظا، والمعروفة باسم وضع المستخدم. معظم أنظمة التشغيل الحديثة، بما في ذلك لينكس، تتجاهل مستويين وسيطين، باستخدام فقط 0 و 3. وتعرف المستويات أيضا باسم الخواتم. وكان استثناء ملحوظ من استخدام مستويات نظام عب OS2. سجل مستوى الامتياز الحالي (كبل) (كس) سجل هو الذي يشير إلى شريحة حيث يتم تعيين تعليمات البرنامج. وتحدد البتاتان الأقل دلالة من هذا السجل مستوى الامتياز الحالي (كبل) لوحدة المعالجة المركزية. اثنين من البتات، وهذا يعني الأرقام بين 0 و 3. الواصفات مستوى الامتياز (دبل) أمب المطلوب مستوى الامتياز (ربل) الواصفات مستوى الامتياز (دبل) هو أعلى مستوى من الامتيازات التي يمكن الوصول إلى المورد ويتم تعريفها. يتم تعريف هذه القيمة في واصف الشريحة. يتم تعريف مستوى الامتياز المطلوب (ربل) في محدد القطاعات، آخر بتتين. رياضيا، لا يسمح ل كبل بتجاوز ماكس (ربل، دبل)، وإذا كان ذلك، فإن هذا سوف يسبب خطأ الحماية العامة. الآن، لماذا كل هذا مهم، تسأل جيدا، على سبيل المثال، إذا واجهت حالة حيث تحطمت النظام بينما كان كبل 3، ثم وهذا يمكن أن يشير إلى الأجهزة الخاطئة، لأن النظام يجب أن لا تعطل بسبب وجود مشكلة في وضع المستخدم . بدلا من ذلك، قد تكون هناك مشكلة مع استدعاء نظام عربات التي تجرها الدواب. فقط بعض الأمثلة الخام. لمزيد من المعلومات، يرجى النظر في الإشارة إلى أوريليس فهم نواة لينكس، الفصل 2: ​​معالجة الذاكرة، صفحة 36-39. سوف تجد معلومات مفيدة حول محددات القطاع، وصف الواصفات، فهرس الجدول، جداول الواصفات العالمية والمحلية، وبالطبع، مستوى الامتياز الحالي (كبل). العودة إلى سجل الأعطال لدينا: كما نعلم، البتتين الأقل أهمية تحدد كبل. يعني البتاتان أربعة مستويات، ومع ذلك، يتم تجاهل المستويات 1 و 2. هذا يترك لنا مع 0 و 3، ووضع كيرنيل ووضع المستخدم، على التوالي. ترجمت إلى شكل ثنائي، لدينا 00 و 11. يمكن أن يكون الشكل المستخدم لعرض البيانات الوصفي مربكا، ولكن بسيط جدا. إذا كان الرقم الأكثر الحق هو حتى، ثم كانت في وضع كيرنيل إذا كان الرقم الأخير غريبا، ثم كانت في وضع المستخدم. وبالتالي، فإننا نرى أن كبل هو 0، المهمة المسيئة مما أدى إلى تحطم كان قيد التشغيل في وضع كيرنيل. وهذا هو المهم أن نعرف. قد يساعدنا على فهم طبيعة مشكلتنا. للاشارة فقط، هيريس مثال حيث وقع الحادث في وضع المستخدم، التي تم جمعها على آلة سوس: ولكن هذا مجرد الحديث العبقري غريب الأطوار. على سبيل المثال، تعلمنا العديد من التفاصيل المفيدة والمهمة. نحن نعرف عنوان الذاكرة بالضبط حيث كان مؤشر التعليمات في وقت الحادث. نحن نعرف مستوى الامتياز. الأهم من ذلك، نحن نعرف اسم وظيفة النواة والإزاحة حيث كان ريب يشير في وقت الحادث. لجميع الأغراض العملية، نحن بحاجة فقط للعثور على الملف المصدر وفحص التعليمات البرمجية. وبطبيعة الحال، قد لا يكون ذلك ممكنا دائما، لأسباب مختلفة، ولكننا سنفعل ذلك، مع ذلك، كممارسة. لذلك، ونحن نعلم أن دالة (دنا) (دونمي)، ودعا نمي ()، نمي () كان يسمى من قبل ديفولتيدل ()، الذي تسبب في تحطم الطائرة. يمكننا فحص هذه الوظائف ومحاولة فهم أكثر عمقا ما يفعلونه. وسوف نفعل ذلك قريبا. الآن، يتيح إعادة زيارة لدينا فيدورا سبيل المثال مرة أخرى. فيدورا سبيل المثال، مرة أخرى الآن أن نفهم ما الخطأ، يمكننا أن نلقي نظرة على مثال فيدورا مرة أخرى ومحاولة فهم المشكلة. لدينا تحطم في نواة غير ملوث، والناجمة عن عملية سوابر. تقرير تحطم يشير إلى وظيفة ناتفابيكوريتدومي. ثم، ثيريس أيضا تتبع مكالمة طويلة جدا. قليلا من المعلومات المفيدة التي ينبغي أن تساعدنا على حل المشكلة. وسوف نرى كيف يمكننا استخدام تقارير الأعطال لمساعدة المطورين إصلاح الخلل وإنتاج أفضل، والبرمجيات أكثر استقرارا. الآن، يتيح التركيز بعض أكثر على تحطم والأوامر الأساسية. باكتراس لجميع المهام افتراضيا، سوف تعطل عرض التتبع الخلفي للمهمة النشطة. ولكن قد ترغب أيضا في رؤية المسار الخلفي لجميع المهام. في هذه الحالة، ستحتاج إلى تشغيل فوريش. تفريغ سجل نظام ذاكرة تفريغ - تفريغ المخزن المؤقت رسالة النظام هذا الأمر يقذف محتويات لوجبوف كيرنيل في الترتيب الزمني. قد يحتوي عارض تسجيل الدخول النواة (لوغبوف) على أدلة مفيدة قبل وقوع الحادث، مما قد يساعدنا على تحديد المشكلة بسهولة أكبر وفهم سبب هبوط نظامنا. قد لا يكون الأمر سجل مفيدا حقا إذا كان لديك مشاكل الأجهزة متقطعة أو البق البرمجيات بحتة، ولكنها بالتأكيد تستحق المحاولة. هيريس سجل تحطم لدينا، في الأسطر القليلة الماضية: إيد: فشل رمز التشغيل: 0xec متر: عدم تطابق نوع ل f8000000،400000 القديم: غير قابلة للكسر جديد: الكتابة بين إسو 9660 ملحقات: ميكروسوفت جوليت مستوى 3 إسو 9660 ملحقات: RRIP1991A سيسرق. تحريك كراشدومب و ثيريس رسالة سيسرق. من المفيد أن تعرف. في الحالات الحقيقية، قد يكون هناك شيء أكثر إثارة للاهتمام. معلومات حالة عملية العرض بس - معلومات حالة عملية العرض يعرض هذا الأمر حالة العملية لعمليات محددة أو جميعها في النظام. إذا لم يتم إدخال أية وسيطات، يتم عرض بيانات العملية لجميع العمليات. ألق نظرة على المثال أدناه. لدينا اثنين من عمليات سوابر كما قلت لك في وقت سابق، كل وحدة المعالجة المركزية لديها جدولة الخاصة بها. وتتميز المهمة النشطة ب غ. قد تحطم الأداة المساعدة تحطم مشيرا إلى مهمة التي لم تسبب الذعر أو قد لا تكون قادرة على العثور على مهمة الذعر. لا توجد ضمانات. إذا كنت تستخدم الأجهزة الظاهرية، بما في ذلك فموير أو شين، ثم الأمور قد تصبح أكثر تعقيدا. في هذه الحالة، المؤشر في الإخراج بس علامة عملية خاطئة: استخدام التتبع الخلفي لجميع العمليات (مع فوريش) وتشغيل الأمر بس، يجب أن تكون قادرا على تحديد موقع عملية الإساءة ودراسة مهمتها. معلومات مفيدة أخرى قد تحتاج إليها: العناصر بين أقواس هي المواضيع كيرنيل على سبيل المثال، إينيت و أوديفد ليست كذلك. ثم، ثيريس معلومات استخدام الذاكرة، فز و رسس، حالة العملية، وأكثر من ذلك. سوبر العبقري غريب الأطوار الاشياء ملاحظة: هذا القسم من الصعب مستحيل. من الصعب جدا بالنسبة لمعظم الناس. عدد قليل جدا من الناس المهرة بما فيه الكفاية لتشويش في رمز النواة ونعرف حقا ما يحدث في هناك. تحاول أن تكون شجاعا ومعالجة الأخطاء المحتملة مخبأة في النوى تحطم هو محاولة نبيلة، ولكن يجب أن لا تأخذ هذا بخفة. يجب أن أعترف أنه على الرغم من أنني يمكن الاطلاع على تقارير الأعطال والمصادر المصاحبة، لا يزال لدي صفقة ضخمة لمعرفة الأشياء الصغيرة والبتات. لا نتوقع أي معجزات. ثيريز لا حل رصاصة الفضة لتحطم الحادث الوقت للحصول على فائقة الخطورة. دعونا نقول قد ترغب حتى في تحليل رمز C للوظيفة المخالف. وغني عن القول، يجب أن يكون لديك مصادر C المتاحة وتكون قادرة على قراءتها. هذا ليس شيئا يجب على الجميع القيام به، ولكن لها ممارسة العقلية مثيرة للاهتمام. شفرة المصدر كل الحق، وتريد فحص التعليمات البرمجية. أولا، سيكون لديك للحصول على المصادر. بعض التوزيعات تجعل المصادر متاحة بسهولة. على سبيل المثال، في أوبنسيوس، لديك فقط لتحميل حزمة كيرنيل المصدر. مع سينتوس، بل هو أكثر صعوبة قليلا، ولكن قابلة للتنفيذ. يمكنك أيضا زيارة أرشيف كيرنيل كيرنيل وتنزيل النواة التي تطابقها، على الرغم من أن بعض المصادر قد تكون مختلفة عن تلك المستخدمة على النظام الخاص بك، لأن بعض البائعين إجراء التغييرات المخصصة الخاصة بهم. مرة واحدة لديك مصادر، وقتها لفحصها. على سبيل المثال، على أوبنزيوس: هل يمكن تصفح المصادر باستخدام الأدوات القياسية مثل البحث و غريب، ولكن هذا يمكن أن يكون مملة نوعا ما. بدلا من ذلك، لماذا لا تدع النظام تفعل كل العمل الشاق بالنسبة لك. ويسمى أداة أنيق جدا لتصفح رمز C كسكوب. يتم تشغيل الأداة من سطر الأوامر ويستخدم واجهة تشبه في. بشكل افتراضي، فإنه سيتم البحث عن مصادر في الدليل الحالي، ولكن يمكنك تكوينه بأي طريقة. كسكوب متاح في المستودعات: الآن، في الدليل الذي يحتوي على مصادر (افتراضيا، أوسرسركلينوكس)، تشغيل كسكوب: وهذا سوف بشكل متكرر البحث في جميع الدلائل الفرعية، فهرسة المصادر وعرض الواجهة الرئيسية. هناك استخدامات أخرى وكذلك محاولة صفحة الرجل أو --help العلم. الآن، وقتها لوضع الأداة إلى الاستخدام الجيد والبحث عن الوظائف المطلوبة. سنبدأ بالبحث عن رمز C هذا. استخدم مفاتيح المؤشر للانتقال إلى هذا السطر، ثم اكتب اسم الوظيفة المطلوب واضغط على إنتر. سيتم عرض النتائج: اعتمادا على ما حدث، قد تحصل على نتائج كثيرة أو لا شيء. فمن الممكن تماما أنه لا يوجد شفرة المصدر التي تحتوي على وظيفة ينظر في تقرير الحادث. إذا كان هناك الكثير من النتائج، ثم قد ترغب في البحث عن الدالة التالية في تتبع المكالمة باستخدام الدالات البحث عن طريق هذه الوظيفة الدالة. استخدم تاب للانتقال بين قسم الإدخال والإخراج. إذا كان لديك دعم بائع الرسمي، وهذا هو لحظة جيدة لتحويل الأمر أكثر والسماح لهم بالسيارة. إذا كنت عصا مع التحقيق، وتبحث عن وظائف أخرى المدرجة في تتبع الدعوة يمكن أن تساعدك على تضييق ملف C التي تحتاج إليها. ولكن ثيريس أي ضمان وهذا يمكن أن يكون عملية طويلة، شاقة. وعلاوة على ذلك، في أي وقت كنت بحاجة إلى مساعدة، فقط اضغط. وسوف تحصل على دليل الاستخدام الأساسي: في الدليل مصدر النواة، يمكنك أيضا إنشاء فهارس كسكوب، لعمليات البحث أسرع في المستقبل، عن طريق تشغيل جعل كسكوب. تفكيك الكائن على افتراض كنت قد وجدت المصدر، وقتها لتفكيك الكائن تجميعها من هذا المصدر. أولا، إذا كنت تقوم بتشغيل نواة تصحيح، ثم تم تجميع كافة الكائنات مع رموز التصحيح. انت محظوظ. تحتاج فقط لتفريغ الكائن وجحر في التجمع المختلطة-C رمز. إن لم يكن، سيكون لديك لإعادة ترجمة المصدر مع رموز التصحيح ثم عكس الهندسة ذلك. هذه ليست مهمة بسيطة أو تافهة. أولا، إذا كنت تستخدم مترجم يختلف عن تلك المستخدمة لتجميع الأصل، فإن الكائن الخاص بك سيكون مختلفا عن واحد في تقرير الأعطال، مما يجعل جهودك صعبة إن لم يكن مستحيلا. مثال تافهة أسميه هذا المثال تافهة لأنه لا علاقة له بالنواة. انها مجرد يوضح كيفية تجميع الكائنات ومن ثم تفكيكها. أي مصدر سوف تفعل. في حالتنا، وكذلك استخدام مبلاير، شعبية لاعب وسائل الإعلام مفتوحة المصدر كبش فداء لدينا. تحميل التعليمات البرمجية المصدر مبلاير، تشغيل. configure، وجعل. بعد إنشاء الكائنات، حذف واحد منهم، ثم إعادة ترجمة ذلك. تشغيل جعل لوبجيكت نامغت. على سبيل المثال: يرجى ملاحظة أن جعل ليس له معنى دون ماكفيل، الذي يحدد ما يجب القيام به. ولكن لدينا ماكيفيل. تم إنشاؤه بعد ركضنا. configure. وإلا، فإن كل هذا لن يعمل حقا. ماكيفيل مهم جدا. سنرى مثالا أقل تافهة قريبا. إذا لم تقم بإزالة الكائن الموجود، فإنك ربما لن تكون قادرا على جعله. قم بمقارنة الطوابع الزمنية على المصادر والهدف، لذلك ما لم تقم بتغيير المصادر، سوف تفشل إعادة ترجمة الكائن. الآن، هيريس مثال بسيط آخر، ولاحظ الفرق في حجم الكائن الذي تم إنشاؤه، مرة واحدة مع رموز التصحيح ومرة ​​واحدة دون: إذا لم يكن لديك ماكيفيل، يمكنك استدعاء غك يدويا باستخدام جميع أنواع الأعلام. سوف تحتاج رؤوس النواة التي تتطابق مع الهندسة المعمارية ونواة الإصدار الذي تم استخدامه لإنشاء النواة حيث وقع الحادث، وإلا سوف الكائنات التي تم جمعها حديثا تكون مختلفة تماما عن تلك التي قد ترغب في تحليل، بما في ذلك وظائف وإزاحة. الأداة المساعدة التي تريد استخدامها للتفكيك هي أوبجدومب. ربما كنت ترغب في استخدام الأداة المساعدة مع العلم - S، مما يعني عرض شفرة المصدر مختلطة مع تعليمات التجميع. قد تحتاج أيضا - s العلم، والتي سيتم عرض محتويات جميع الأقسام، بما في ذلك تلك الفارغة. - S يعني - d. الذي يعرض منيمونيكس تجميع لتعليمات الجهاز من أوبجفيل هذا الخيار فقط تفكيك تلك الأقسام التي من المتوقع أن تحتوي على تعليمات. بدلا من ذلك، استخدم - D لجميع الأقسام. وبالتالي، فإن أوبجدومب الأكثر شمولا سيكون: أوبجدومب - D - S لوتكومبيد مع الكائن التصحيح سيمبولزغت غ لتوتبوت فيلغت وسوف تبدو شيئا من هذا القبيل: ومثال أفضل، تفريغ ميمهوج: الانتقال إلى مصادر النواة الاحماء. مرة واحدة كنت ممارسة ثقة مع رمز تافهة، والوقت للانتقال إلى النواة. تأكد من أنك لا مجرد حذف أي ملف مهم. من أجل ممارسة الرياضة، نقل أو إعادة تسمية أي الكائنات كيرنيل الموجودة قد تجد الكامنة عنه. ثم، إعادة ترجمة لهم. سوف تحتاج إلى ملف. config المستخدم لتجميع النواة. وينبغي إدراجها مع المصادر. بدلا من ذلك، يمكنك تفريغها من procconfig. gz. زكات procconfig. gz غ. config على آلات ريدهات، وسوف تجد ملفات التكوين أيضا تحت التمهيد. تأكد من استخدام واحد يطابق النواة التي تم تحطيمها ونسخها إلى الدليل المصدر. إذا لزم الأمر، تحرير بعض الخيارات، مثل كونفيجبوجينفو. المزيد عن ذلك لاحقا. بدون ملف. config، لن تكون قادرا على تجميع مصادر النواة: قد تواجه أيضا خطأ حيث يفترض أن ماكيفيل مفقود، ولكن هناك. في هذه الحالة، قد تواجه مشكلة بسيطة نسبيا، مع تعيين متغير البيئة أرش غير صحيح. على سبيل المثال، i585 مقابل i686 و x86-64 مقابل x8664. إيلاء الاهتمام للخطأ ومقارنة العمارة لمتغير أرش. في أسوأ الأحوال، قد تحتاج إلى تصديره بشكل صحيح. على سبيل المثال: كحل طويل الأجل، هل يمكن أيضا إنشاء روابط رمزية تحت أوسرسكلينوكس من سيكون من شأنه أن يكون بنية سيئة إلى حق واحد. هذا لا يرتبط بدقة لتحليل تحطم النواة، ولكن إذا قمت بتجميع مصادر النواة، قد تواجه هذه المشكلة. الآن، فيما يتعلق متغير كونفيجبوجينفو. يجب تعيينه إلى 1 في ملف. config الخاص بك. إذا كنت تتذكر البرنامج التعليمي كدومب، وهذا كان شرطا مسبقا طلبنا، من أجل أن تكون قادرة على استكشاف الأخطاء وإصلاحها بنجاح الأعطال كيرنيل. هذا يخبر المجمع البرمجي بإنشاء الكائنات مع رموز تصحيح الأخطاء. بدلا من ذلك، تصدير المتغير في قذيفة، كما CONFIGDEBUGINFO1. ثم، نلقي نظرة على ماكيفيل. يجب أن ترى أنه إذا تم تعيين هذا المتغير، سيتم تجميع الكائن مع رموز تصحيح الأخطاء (-g). هذا هو ما نحتاج إليه. بعد ذلك، مرة أخرى، سوف نستخدم أوبجدومب. الآن، ماكيفيل قد يكون حقا في عداد المفقودين. في هذه الحالة، سوف تحصل على مجموعة كاملة من الأخطاء المتعلقة بعملية التجميع. ولكن مع ماكيفيل في مكان، يجب أن تعمل كل سلاسة. ثم، ثيريس الكائن حتى الآن مثال مرة أخرى. إذا لم تقم بإزالة واحدة موجودة، فلن تكون قادرا على ترجمة واحدة جديدة، خاصة إذا كنت بحاجة إلى رموز التصحيح للتفكيك في وقت لاحق. وأخيرا، الكائن تفكيكها: ماذا نفعل الآن حسنا، كنت تبحث عن وظيفة المدرجة في ريب استثناء وعلامة على عنوان البداية. ثم أضف الإزاحة إلى هذا الرقم، وترجم إلى تنسيق عشري. ثم انتقل إلى السطر المحدد. كل ما تبقى هو محاولة لفهم ما حدث حقا. سيكون لديك تعليمات التجميع المدرجة وربما بعض كود C، تقول لنا ما قد يكون خطأ. إنه ليس سهلا. في الواقع، من الصعب جدا. But its exciting and you may yet succeed, finding bugs in the operating system. Whats more fun than that Above, we learned about the compilation and disassembly procedures, without really doing anything specific. Now that we know how to go about compiling kernel objects and dissecting them into little bits, lets do some real work. Intermediate example We will now try something more serious. Grab a proof-of-concept code that crashes the kernel, compile it, examine the crash report, then look for the right sources, do the whole process we mentioned above, and try to read the alien intermixed assembly and C code. Of course, we will be cheating, cause we will know what were looking for, but still, its a good exercise. The most basic non-trivial example is to create a kernel module that causes panic. Before we panic our kernel, lets do a brief overview of the kernel module programming basics. Create problematic kernel module This exercise forces us to deviate from the crash analysis flow and take a brief look at the C programming language from the kernel perspective. We want to crash our kernel, so we need kernel code. While were going to use C, its a little different from everyday stuff. Kernel has its own rules. We will have a sampling of kernel module programing. Well write our own module and Makefile, compile the module and then insert it into the kernel. Since our module is going to be written badly, it will crash the kernel. Then, we will analyze the crash report. Using the information obtained in the report, we will try to figure out whats wrong with our sources. Step 1: Kernel module We first need to write some C code. Lets begin with hello. c. Without getting too technical, heres the most basic of modules, with the init and cleanup functions. The module does not nothing special except print messages to the kernel logging facility. hello. c - The simplest kernel module. include ltlinuxmodule. hgt Needed by all modules include ltlinuxkernel. hgt Needed for KERNINFO int initmodule(void) printk(KERNINFO Hello world. n) A non 0 return means initmodule failed module cant be loaded. return 0 void cleanupmodule(void) printk(KERNINFO Goodbye world. n) We need to compile this module, so we need a Makefile: all: make - C libmodules(shell uname - r)build M(PWD) modules clean: make - C libmodules(shell uname - r)build M(PWD) clean Now, we need to make the module. In the directory containing your hello. c program and the Makefile, just run make. You will see something like this: Our module has been compiled. Lets insert it into the kernel. This is done using the insmod command. However, a second before we do that, we can examine our module and see what it does. Maybe the module advertises certain bits of information that we might find of value. Use the modinfo command for that. In this case, nothing special. Now, insert it: If the module loads properly into the kernel, you will be able to see it with the lsmod command: sbinlsmod grep hello Notice that the use count for our module is 0. This means that we can unload it from the kernel without causing a problem. Normally, kernel modules are used for various purposes, like communicating with system devices. Finally, to remove the module, use the rmmod command: If you take at a look at varlogmessages, you will notice the Hello and Goodbye messages, belonging to the initmodule and cleanupmodule functions: That was our most trivial example. No crash yet. But we have a mechanism of inserting code into the kernel. If the code is bad, we will have an oops or a panic. Step 2: Kernel panic Well now create a new C program that uses the panic system call on initialization. Not very useful, but good enough for demonstrating the power of crash analysis. Heres the code, we call it kill-kernel. c. kill-kernel. c - The simplest kernel module to crash kernel. include ltlinuxmodule. hgt Needed by all modules include ltlinuxkernel. hgt Needed for KERNINFO int initmodule(void) printk(KERNINFO Hello world. Now we crash. n) panic(Down we go, panic called) void cleanupmodule(void) printk(KERNINFO Goodbye world. n) When inserted, this module will write a message to varlogmessages and then panic. Indeed, this is what happens. Once you execute the insmod command, the machine will freeze, reboot, dump the kernel memory and then reboot back into the production kernel. Step 3: Analysis Lets take a look at the vmcore. And the backtrace: What do we have here First, the interesting bit, the PANIC string: Kernel panic - not syncing: Down we go, panic called That bit looks familiar. Indeed, this is our own message we used on panic. Very informative, as we know what happened. We might use something like this if we encountered an error in the code, to let know the user what the problem is. Another interesting piece is the dumping of the CS register - CS: 0033. Seemingly, we crashed the kernel in user mode. As Ive mentioned before, this can happen if you have hardware problems or if theres a problem with a system call. In our case, its the latter. Well, that was easy - and self-explanatory. So, lets try a more difficult example. For more information about writing kernel modules, including benevolent purposes, please consult the Linux Kernel Module Programming Guide. Difficult example Now another, a more difficult example. We panicked our kernel with. panic. Now, lets try some coding malpractice and create a NULL pointer testcase. Weve seen earlier how to create a kernel module. Now, lets spice up our code. We will now create a classic NULL pointer example, the most typical problem with programs. NULL pointers can lead to all kinds of unexpected behavior, including kernel crashes. Our program, called null-pointer. c. now looks like this: null-pointer. c - A not so simple kernel module to crash kernel. include ltlinuxmodule. hgt Needed by all modules include ltlinuxkernel. hgt Needed for KERNINFO int initmodule(void) printk(KERNINFO We is gonna KABOOM nown) void cleanupmodule(void) printk(KERNINFO Goodbye world. n) We declare a NULL pointer and then dereference it. Not a healthy practice. I guess programmers can explain this more eloquently than I, but you cant have something pointing to nothing get a valid address of a sudden. In kernel, this leads to panic. Indeed, after making this module and trying to insert it, we get panic. Now, the sweet part. Step 1: Analysis Looking at the crash report, we see a goldmine of information: Lets digest the stuff: PANIC: Oops: 0002 1 SMP (check log for details) We have an Oops on CPU 1. 0002 translates to 0010 in binary, meaning no page was found during a write operation in kernel mode. Exactly what were trying to achieve. Were also referred to the log. المزيد عن ذلك قريبا. WARNING: panic task not found There was no task, because we were just trying to load the module, so it died before it could run. In this case, we will need to refer to the log for details. This is done by running log in the crash utility, just as weve learned. The log provides us with what we need: The RIP says nullpointer:initmodule0x190x22. Were making progress here. We know there was a problem with NULL pointer in the initmodule function. Time to disassemble the object and see what went wrong. Theres more useful information, including the fact the kernel was Tainted by our module, the dumping of the CS register and more. Well use this later. First, lets objdump our module. objdump - d - S null-pointer. ko gt tmpwhatever Looking at the file, we see the Rain Man code: The first part, the cleanup is not really interesting. We want the initmodule. The problematic line is even marked for us with a comment: 27 ltinitmodule0x19gt. 27: c6 00 01 movb 0x1,(rax) What do we have here Were trying to load (assembly movb ) value 1 ( 0x1 ) into the RAX register ( rax ). Now, why does it cause such a fuss Lets go back to our log and see the memory address of the RAX register: RAX register is: 0000000000000000. In other words, zero. Were trying to write to memory address 0. This causes the page fault, resulting in kernel panic. Problem solved Of course, in real life, nothing is going to be THAT easy, but its a start. In real life, you will face tons of difficulties, including missing sources, wrong versions of GCC and all kinds of problems that will make crash analysis very, very difficult. Remember that For more information, please take a look at the case study shown in the crash White Paper. Again, its easier when you know what youre looking for. Any example you encounter online will be several orders of magnitude simpler than your real crashes, but it is really difficult demonstrating an all-inclusive, abstract case. Still, I hope my two examples are thorough enough to get you started. Alternative solution (debug kernel) If you have time and space, you may want to download and install a debug kernel for your kernel release. Not for everyday use, of course, but it could come handy when youre analyzing kernel crashes. While it is big and bloated, it may offer additional, useful information that cant be derived from standard kernels. Plus, the objects with debug symbols might be there, so you wont need to recompile them, just dump them and examine the code. Next steps So the big question is, what do crash reports tell us Well, using the available information, we can try to understand what is happening on our troubled systems. First and foremost, we can compare different crashes and try to understand if theres any common element. Then, we can try to look for correlations between separate events, environment changes and system changes, trying to isolate possible culprits to our crashes. Combined with submitting crash reports to vendors and developers, plus the ample use of Google and additional resources, like mailing lists and forums, we might be able to narrow down our search and greatly simply the resolution of problems. Kernel crash bug reporting When your kernel crashes, you may want to take the initiative and submit the report to the vendor, so that they may examine it and possibly fix a bug. This is a very important thing. You will not only be helping yourself but possibly everyone using Linux anywhere. What more, kernel crashes are valuable. If theres a bug somewhere, the developers will find it and fix it. Kerneloops. org is a website dedicated to collecting and listing kernel crashes across the various kernel releases and crash reasons, allowing kernel developers to work on identifying most critical bugs and solving them, as well as providing system administrators, engineers and enthusiasts with a rich database of crucial information. Remember the Fedora 12 kernel crash report We had that nativeapicwritedummy Well, lets see what kerneloops. org has to say about it. As you can see, quite a lot. Not only do you have all sorts of useful statistics, you can actually click on the exception link and go directly to source, to the problematic bit of code and see what gives. This is truly priceless information As we mentioned earlier, some modern Linux distributions have an automated mechanism for kernel crash submission, both anonymously and using a Bugzilla account. For example, Fedora 12 uses the Automatic Bug Reporting Tool (ABRT), which collects crash data, runs a report and then sends it for analysis with the developers. For more details, you may want to read the Wiki. Beforehand, Fedora 11 used kerneloops utility, which sent reports to, yes, you guessed it right, kerneloops. org. Some screenshots. Heres an example of live submission in Fedora 11. And more recently in Fedora 12. Hopefully, all these submissions help make next releases of Linux kernel and the specific distributions smarter, faster, safer, and more stable. Google for information Sounds trivial, but it is not. If youre having a kernel crash, theres a fair chance someone else saw it too. While environments differ from one another, there still might be some commonality for them all. Then again, there might not. A site with 10 database machines and local logins will probably experience different kinds of problems than a 10,000-machine site with heavy use of autofs and NFS. Similarly, companies working with this or that hardware vendor are more likely to undergo platform-specific issues that cant easily be find elsewhere. The simplest way to search for data is to paste the exception RIP into the search box and look for mailing list threads and forum posts discussing same or similar items. Once again, using the Fedora case an an example: Crash analysis results And after you have exhausted all the available channels, its time to go through the information and data collected and try to reach a decisionresolution about the problem at hand. We started with the situation where our kernel is experiencing instability and is crashing. To solve the problem, we setup a robust infrastructure that includes a mechanism for kernel crash collection and tools for the analysis of dumped memory cores. We now understand what the seemingly cryptic reports mean. The combination of all the lessons learned during our long journey allows us to reach a decision what should be done next. How do we treat our crashing machines Are they in for a hardware inspection, reinstallation, something else Maybe theres a bug in the kernel internals Whatever the reason, we have the tools to handle the problems quickly and efficiently. Finally, some last-minute tips, very generic, very generalized, about what to do next: Single crash A single crash may seem as too little information to work with. Dont be discouraged. If you can, analyze the core yourself or send the core to your vendor support. Theres a fair chance you will find something wrong, either with software at hand, the kernel or the hardware underneath. Hardware inspection Speaking of hardware, kernel crashes can be caused by faulty hardware. Such crashes usually seem sporadic and random in reason. If you encounter a host that is experiencing many crashes, all of which have different panic tasks, you may want to considering scheduling some downtime and running a hardware check on the host, including memtest, CPU stress, disk checks, and more. Beyond the scope of this article, Im afraid. The exact definition of what is considered many crashes, how critical the machine is, how much downtime you can afford, and what you intend to do with the situation at hand is individual and will vary from one admin to another. Reinstallation amp software changes Did the software setup change in any way that correlates with the kernel crashes If so, do you know what the change is Can you reproduce the change and the subsequent crashes on other hosts Sometimes, it can be very simple sometimes, you may not be able to easily separate software from the kernel or the underlying hardware. If you can, try to isolate the changes and see how the system responds with or without them. If theres a software bug, then you might be just lucky enough and have to deal with a reproducible error. Kernel crashes due to a certain bug in software should look pretty much the same. But theres no guarantee youll have it that easy. Now, if your system is a generic machine that does not keep any critical data on local disks, you may want to consider wiping the slate clean - start over, with a fresh installation that you know is stable. يستحق المحاولة. Submit to developervendor Regardless of what you discovered or you think the problem is, you should send the kernel crash report to the relevant developer andor vendor. Even if youre absolutely sure you know what the problem is and youve found the cure, you should still leave the official fix in the hands of people who do this kind of work for a living. I have emphasized this several times throughout the article, because I truly believe this is important, valuable and effective. You can easily contribute to the quality of Linux kernel code by submitting a few short text reports. Its as simple and powerful as that. And that would be all for now, I think. Im spent. I still owe you some information, but I cant possibly include everything in a single article. We will revisit some of the stuff when we discuss gdb. Official documentation Heres a selection of highly useful articles and tutorials:PECAN WEEVIL Where it is found in Texas, the pecan weevil is the most damaging late-season pecan pest. Infestations are often localized and vary greatly within orchards. In August, adult weevils begin to emerge from the soil and feed on nuts in the water stage, causing them to drop. After the kernel has entered the gel stage, the nut is susceptible to egg laying and attack by pecan weevil larvae. Infested nuts remain on the tree while the developing larvae consume the kernel. Full-grown larvae emerge from the nut in late fall or early winter through a round hole chewed through the shell. The life cycle of the pecan weevil egg, larva, pupa and adult usually is completed in 2 years but can require 3. Adult weevils begin emerging from the soil in August their numbers peak from late August through early September. Rainfall, soil moisture and soil type influence the ability of the weevils to emerge from the soil. Drought can delay adult emergence until rain or irrigation loosens the soil. Adult weevils feed on nuts and live for several weeks. Once nuts reach the gel stage, they are suitable for egg laying. For this reason, early-maturing varieties are infested first. The female weevil drills a hole through the shell and deposits one or more eggs within the developing kernel. A single female lays eggs in about 30 nuts. Larvae hatch from the eggs and feed inside the nut, destroying the kernel. Larvae emerge from the nuts about 42 days after the eggs are deposited. Emergence of full-grown larvae from nuts begins in late September and continues as late as December. Larvae burrow 4 to 12 inches into the soil and build a cell, where they remain for 8 to 10 months. Most of the larvae then pupate and transform to the adult stage within a few weeks. However, the adults remain in the underground cell for an additional (second) year before emerging from the soil the following summer. Those larvae (about 10 percent) not pupating after the first year remain as larvae for 2 years and then emerge from the soil as adults the third year. PECAN NUT CASEBEARER - Adult Pecan nut casebearer adults have been collected in pheromone traps in Texas as far north as College Station, TX as of April 19. During this time of year pecan bud moth adults occasionally are collected in PNC pheromone traps. Proper identification of PNC adults is important for determining scouting time. PNC adults have a ridge of scales that sticks up that appears as a band across the forewings approximately 13 the distance from where the wings attach to the body. This is a key identification character for PNC. The picture shows a PNC adult on the left and a pecan bud moth adult on the right. Pecan Nut Casebearer - Egg Female casebearer adults will deposit singular eggs on the stigma end of small nutlets. Oviposition or egg lay will begin 7 and 10 days after the initia l catch of adults in pheromone traps. New eggs are a pearly white color but as eggs mature, red spots will form and the egg will take on a pink or red color prior to hatch. Time from egg lay to larval hatch is 3 to 5 days. STINK BUGS AND LEAFFOOTED BUGS Several species of stink bugs and leaffooted bugs feed on pecan nuts. Infestations often develop on field crops or weeds and then move into pecans. Stink bugs and leaffooted bugs suck sap from developing nuts. Nuts injured before the shells harden fall from the tree. Feeding after shell hardening causes brown or black spots on the kernel. Affected areas taste bitter. As adults, these bugs overwinter under fallen leaves and in other sheltered places on the ground. Adults lay eggs on many crops and weeds, where populations increase in summer. Fields of soybeans, other legumes and sorghum may be sources of adults that fly to pecans. Infestations are usually greatest from September through shuck split. Weed control in and near the orchard helps suppress stink bugs and lower the possibility of their moving into pecans. Cypermethrin (Ammo reg. Cymbush reg ), esfenvalerate (Asana reg. azinphosmethyl (Guthion reg ) or carbaryl (Sevin reg ) applied for other pests may also control stink bugs and leaffooted bugs. These kernel-feeding insects can also be managed by planting certain host or trap crops, which lure adult stink bugs and leaffooted bugs away from pecans in September, October and November. Planting plots or single rows of peas (blackeye, purple hull, crowder, etc.) along the edge of the pecan orchard in the last week of July through the first week of August produces an attractive trap crop for these pests. The trap crop does not have to be continuous around the entire orchard. Small plantings in several selected locations can be enough. To help ensure having an attractive trap crop longer into the fall, stagger the plantings by a couple of weeks. Monitor the peas for adult leaffooted and stink bugs when the plants begin to bloom and set pods. Apply an insecticide to the trap crop to kill stink b ugs and leaffooted bugs once the crop stops blooming and setting pods. This treatment is necessary to kill the bugs before they have a chance to leave and fly into the pecans. Before planting a trap crop, consider these factors: having available water to obtain a stand planting a variety of pea suited to the soil type and soil pH of the orchard weed control and grazing of plots by wildlife and livestock. High populations on nut clusters can result in nut loss. Currently there are no well defined guidelines for treatment thresholds. Provado reg is a selective insecticide for sucking insects and could be used to treat spittle bugs and not disrupt beneficial insects. HICKORY SHUCKWORM . Hickory shuckworm is an important mid - and late-season pest of pecans throughout much of Texas. Shuckworm larvae tunnel in the shuck, interrupting the flow of nutrients and water needed for normal kernel development. Infested nuts are scarred, late in maturing and of poor quality. Damaged shucks stick to the nuts and fail to open, creating sticktights that reduce harvesting efficiency. Infestations occurring before shell hardening may cause nuts to fall. Adult shuckworms are dark brown to grayish-black moths about 38 inch long. They are active in spring before pecan nuts are available. Adults deposit eggs on hickory nuts and pecan buds. Larvae on pecan feed in phylloxera galls in spring. Later in the season when pecan nuts are present, moths deposit eggs singly on the nuts. The egg is attached to the shuck with a creamy white substance visible on the shuck surface. The tiny larva hatches in a few days and burrows into the shuck to feed for about 15 to 20 days. Mature larvae are about 12 inch long, and cream colored with light brown heads. Pupation occurs in the shuck and the moth soon emerges. Several generations are completed each year. Shuckworms overwinter as full-grown larvae in old pecan shucks on the tree or the orchard floor. Pecans are most susceptible to hickory shuck-worm damage during the water through gel stages. If the orchard has a history of shuckworm damage, treat with insecticide when pecans reach the half-shell hardening stage. Asecond application 10 to 14 days later may be needed. Cultivars such as Pawnee and other early-maturing varieties that reach half-shell hardening earlier than other varieties must be treated earlier for hickory shuckworm. Removing and destroying old shucks and dropped nuts, where shuckworms overwinter, can reduce shuckworm infestations. Pheromone traps are available that attract and capture hickory shuckworm moths. Guidelines for using trap catches to determine the need for treatment have not been validated in Texas. RED IMPORTED FIRE ANT Fire ants can lower pecan production when they interfere with such operations as grafting, mowing and harvesting. They also may damage drip or sprinkler irrigation systems. Chlorpyrifos (Lorsban reg ) is registered for use in pecan orchards as an orchard floor spray for fire ants. Logic Fire Ant Bait reg is registered for use only in nonbearing pecan orchards. BLACK PECAN APHID The black pecan aphid is much more destructive than the two species of yellow aphid. Three black pecan aphids per compound leaf can cause severe leaf damage and defoliation. Like yellow aphids, the black pecan aphid feeds on the undersides of leaves and occurs throughout the pecan growing region of Texas. While feeding, black pecan aphids inject a toxin that turns the leaf tissue between major veins bright yellow. These damaged areas, up to 14 inch across, turn brown and die. Infested leaves soon fall. Premature defoliation reduces nut fill and the next yearOtildes production. The black pecan aphid is pear-shaped. Nymphs are dark olive-green while adults, which may be winged, are black. Like yellow aphids, all summer forms are females that reproduce without mating. Male and female forms appear in fall and females lay eggs that overwinter on branches. Densities often are very low until August or September, when infestations often increase rapidly. Monitor the orchard frequently for black pecan aphids and their characteristic leaf injury. Because these aphids feed singly and can be damaging in low numbers, examine leaves closely. Examine the interior of the canopy, where infestation often begins. In general, treat when black pecan aphids average two to three per compound leaf. In most cases, black pecan aphids are easier than yellow aphids to control with insecticides. Natural enemies are important in maintaining low numbers of black pecan aphids. YELLOW APHIDS Aphids are small, soft-bodied insects that suck sap from pecan leaves. There are two species of yellow or honeydew aphids, the blackmargined aphid, Monellia caryella. and the yellow pecan aphid, Monelliopsis pecanis. The blackmargined aphid has a black stripe along the outside margin of its wings, which are held flat over the body. The yellow pecan aphid holds its wings roof-like over its body and lacks the black stripe along the wing margin. Immature aphids are difficult to identify because they lack wings. Infestations may contain both species. Blackmargined aphid infestations typically increase to large numbers during June to August and then decline after about 3 weeks. Outbreaks on most cultivars (except possibly Cheyenne) usually decline without causing measurable damage to foliage or yield. The yellow pecan aphid occurs later in the season. Outbreaks of this species can cause defoliation and reduce yield and quality on most cultivars. Both species of yellow aphids have piercingsucking mouthparts for removing water and plant nutrients from leaf veins. As they feed, aphids excrete large amounts of excess sugars. This sticky material, called honeydew, collects on leaves. Honeydew serves as a food source for sooty mold, which can cover leaves when humidity is high. The shading effect of sooty mold can reduce photosynthesis. Studies have also shown that aphid feeding can reduce leaf efficiency large, persistent infestations of the yellow pecan aphid, M. pecanis, can defoliate trees. This leaf injury and loss can reduce current and subsequent yields and quality because of lower carbohydrate production. Yellow aphid eggs survive the winter hidden in bark crevices on twigs and tree trunks. Immature aphids, called nymphs, hatch from eggs in spring and begin to feed on newly expanded leaves. Nymphs mature in about a week and give birth to live young. All individuals are females that reproduce without males during spring and summer. In late September and October, males and females develop, and females deposit overwintering eggs. Control. Aphids have a short life cycle and high reproductive capacity, so infestations can increase quickly under favorable conditions. Natural enemies, including lacewings, lady beetles, spiders and other insects, can suppress aphid infestations if there are enough of them. Insecticides applied for aphids or other pests can sometimes destroy these natural enemies, allowing aphids to increase to even greater densities than before treatment. Inspect leaves frequently to monitor yellow aphid densities. Treatment of either species of yellow aphid may be justified on Cheyenne when aphid densities are high and persist for several weeks. Pawnee is the least susceptible cultivar to yellow aphids and normally needs no protection with insecticides. Consider treatment when infestations of yellow pecan aphid exceed 25 per compound leaf, indicating the onset of an outbreak. Scouting the orchard on a 4- to 5-day schedule will determine if yellow pecan aphid numbers are increasing or decreasing and indicate the need for insecticide treatment. Do not base the need for treatment on the amount of honeydew alone, as infestations often decline rapidly (crash) because of weather or physiological effects. Insecticides do not consistently control either species of yellow aphids. Aphids may become tolerant to an insecticide used frequently in an orchard. An insecticide that is effective in one orchard may be ineffective in a nearby orchard. Studies have shown that in some cases, applications of pyrethroid insecticides (Asana reg. Ammo reg. Cymbush reg ) to control casebearers or aphids may be followed by large increases in yellow aphids. PECAN PHYLLOXERA : Feeding by the immature stages of the pecan phylloxera, Phylloxera devastatrix causes galls or knots to form on the woody portion of the new growth. This includes stems, leaf petioles and midribs, nutlets and catkins. Heavy infestations of this insect can cause nut loss and defoliation. The immature stage hatches from eggs in the spring that have overwintered on the tree. The immatures, also known as stem mothers migrate to the new growth where they settle and begin to feed. As the phylloxera feed, gall formation is initiated with tissue forming around the insect. If an insecticide is needed, it should be applied before the immatures become embedded in the new tissue. Insecticides only need to be applied to a tree if a tree had galls the previous season. The time of treatments should be when the foliage is at the stage shown in the picture. Recommended insecticides can be found in the Texas Agricultural Extension Service publication Managing Insect and Mite Pests of Commercial Pecans in Texas B-1238. Since the last printing of the pecan insect control guide, the insecticide imidacloprid, (Provado 1.6F or Admire 2F) has received a label for pecans. Provado 1.6F, the formulation for foliar application has provided good control of phylloxera. In addition, this product does not have a grazing restriction. SAWFLY Adult sawflies are small, bee-like in appearance and are about 14 to 13 inch long. Larvae feed on foliage and leave holes in the leaves or consume the whole leaf. Sawfly larvae resemble caterpillars but are actually larvae of a wasp. Larvae of moths and butterflies have 1 to 4 sets of abdominal prolegs, whereas sawfly larvae have 6 sets. Once larvae finish feeding, they drop to the ground and burrow into the soil to overwinter. There is only one generation per year. FALL WEBWORM . Fall webworm caterpillars build large silken webs in pecan trees. A hundred or more caterpillars may be found inside the web, where they feed on pecan leaves. Large infestations may cover the tree with webs, causing severe defoliation. Mature larvae are about 1 inch long, pale yellow or green, and covered with tufts of long, white hairs. The adult is a white moth with dark spots on the wings. Female moths emerge in spring and deposit eggs in masses of several hundred on the undersides of pecan and other tree leaves. The greenish-white eggs are covered by gray hairs left by the female. There are two to four generations each year, depending on location in the state. The last or fall generation is usually the most damaging. Many insect parasites and predators feed on and reduce the number of fall webworm larvae. Also, insecticides applied for other pecan pests help reduce webworm densities. If webs are common and the potential defoliation appears unacceptable, spot spraying of infested trees may be practical. The insecticide spray must penetrate the web to be effective. WALNUT CATERPILLAR . Walnut caterpillars feed together in large numbers on pecan leaves, but do not build silken webs like fall webworms. Larvae eat leaves, leaving only the mid-ribs and leaf stems. Large infestations can defoliate entire trees. This insect is found throughout Texas east of the Pecos River. Although economic infestations are uncommon, severe and widespread outbreaks of walnut caterpillar have occasionally occurred in Texas. Walnut caterpillar moths emerge in spring, de-positing eggs in masses of 500 or more on the undersides of leaves. The egg masses are round, about the size of a half-dollar and are not covered with hairs or scales. Eggs hatch in about 10 days larvae feed for about 25 days. Young larvae are reddish-brown with yellow lines running the length of the body. Full-grown larvae are about 2 inches long, black with grayish lines and are covered with long, soft, gray hairs. Larvae congregate in large masses on the trunk and scaffold branches to shed their skins before crawling back to complete feeding on leaves. These final-stage larvae consume most of the foliage, and defoliation can occur very quickly. Mature larvae crawl to the soil to pupate. A generation is completed in about 6 to 8 weeks. There are two to three generations each year. Because walnut caterpillars do not build tents or webs, infestations often go unnoticed until leaf damage becomes obvious. To detect infestations early, look for egg masses or leaf feeding. Egg masses can be detected at night by shining a flashlight on the undersides of leaves and looking for white spots about the size of a half dollar. SPIDER MITES . The pecan leaf scorch mite is the most important spider mite attacking pecans. Large numbers of these tiny mites feed on the undersides of pecan leaves. Mites suck plant sap, causing irregular brown spots on infested leaves. Infestations often develop first along the leaf midrib. Damaged leaves appear russeted or scorched. Large infestations can result in leaf loss, especially if trees are under moisture stress. Scorch mites overwinter as adults in the rough bark of limbs. Adult females begin laying eggs in spring. Mites can complete a generation in 5 to 15 days and are more numerous during hot, dry weather. Natural enemies of scorch mites, including predatory mite species, are important in controlling these pests. Because scorch mites prefer the shady, interior portion of the tree, significant damage can occur before infestations are detected. Check water sprouts and shady, lower branches to detect early mite infestations. Mites may increase after some insecticides (e. g. Sevin reg ) are applied for hickory shuckworm, aphids or other pests. Monitor the orchard for mites when the weather is hot and dry and after insecticides are used. Spray when mites are present and damaging leaves. Mark infested trees or areas to determine if spot treatment is practical. ASIAN AMBROSIA BEETLE Infestations of the Asian ambrosia beetle can be identified by the toothpick-like projections from the trunk or the main scaffold limbs. Infested trees should be removed and surrounding trees should be treated with lindane or chlorpyrifos (Lorsban reg). This is an early season pest with most infestations observed in April or May. Infested trees should be burned or shredded to prevent the adults from from emerging from the wood.

No comments:

Post a Comment