เคอร์เนลโอปส์กับความตื่นตระหนกของเคอร์เนลแตกต่างกันอย่างไร


51

ฉันรู้ว่า kernel kernel คืออะไร แต่ฉันก็เห็นคำว่า "kernel oops" ด้วย ฉันมักจะคิดว่าพวกเขาเหมือนกัน แต่อาจจะไม่ ดังนั้น:

เคอร์เนล oops คืออะไรและแตกต่างจาก kernel panic อย่างไร

คำตอบ:


45

" oops " เป็นปัญหาเคอร์เนลของ Linux ที่ไม่ดีพอที่จะส่งผลกระทบต่อความน่าเชื่อถือของระบบ

"โอ๊ะโอ" บางตัวไม่ดีพอที่เคอร์เนลตัดสินใจที่จะหยุดทำงานในทันทีเพื่อมิให้เกิดการสูญหายของข้อมูลหรือความเสียหายอื่น ๆ เหล่านี้เรียกว่าตื่นตกใจเคอร์เนล

ในระยะหลังนั้นเป็นยุคแรกที่จะกลับไปสู่รุ่นแรกสุดของบรรพบุรุษ Linux ของ Unix ซึ่งพิมพ์ข้อความ "ตื่นตระหนก" บนคอนโซลเมื่อมันเกิดขึ้น เดิมฟังก์ชันเคอร์เนล AT & T panic()ยูนิกซ์ที่จัดการเงื่อนไขดังกล่าวเรียกว่า คุณสามารถติดตามกลับผ่านการเผยแพร่ซอร์สโค้ดสาธารณะของ AT&T Unix ไปจนถึงการเผยแพร่ครั้งแรก:

  • รุ่น OpenSolaris ของpanic()ถูกปล่อยออกจากดวงอาทิตย์ในปี 2005 มันค่อนข้างละเอียดและความคิดเห็นส่วนหัวของมันอธิบายอะไรมากมายเกี่ยวกับสิ่งที่เกิดขึ้นในสถานการณ์ที่ตื่นตระหนก

  • การใช้ Unix V4ของpanic()ถูกนำออกใช้ในปี 1973 มันเป็นเพียงพิมพ์สถานะหลักของเคอร์เนลไปยังคอนโซลและหยุดโปรเซสเซอร์

  • ฟังก์ชั่นนั้นไม่เปลี่ยนแปลงอย่างมีนัยสำคัญใน Unix V3ตาม Amit Singh ซึ่งมีชื่อเสียงผ่ารุ่นเก่ากว่าของ Mac OS X และอธิบายมัน ลิงค์แรกนั้นจะนำคุณไปสู่บทความที่น่ารักที่อธิบายวิธีการใช้งานของ macOS panic()ซึ่งเริ่มต้นด้วยการอภิปรายทางประวัติศาสตร์ที่เกี่ยวข้อง

  • โครงการ " unix-jun72 " เพื่อฟื้นคืนชีพ Unix V1 จากการสแกนซอร์สโค้ดแสดงให้เห็นถึงการประกอบ PDP-11 รุ่นแรก ๆของฟังก์ชั่นนี้ซึ่งเขียนเมื่อเดือนมิถุนายน 1972 ก่อนที่ Unix จะถูกเขียนใหม่ทั้งหมดใน C โดยจุดนี้การใช้งานคือ whittled ลงไปที่รูทีน 6 คำสั่งที่ทำมากกว่ารีสตาร์ท PDP-11 เล็กน้อย


เพิ่งเกิดขึ้นเพื่อดูการแก้ไขของคุณ (สมมุติว่าทำไมผมได้ upvotes บางเพิ่มเติมเกี่ยวกับคำถาม?) - น่ากลัวจริงๆขอบคุณสำหรับการเพิ่มนี้ :)
strugee

14

oops เป็นข้อผิดพลาดเฉพาะที่เคอร์เนลพบ โอ๊ะโอมีข้อมูลต่อไปนี้:

  • คำอธิบายสั้น ๆ
  • อ๊ะ #
  • ซีพียูตัวใดเกิดขึ้นและรหัสที่ซีพียูกำลังทำงานอยู่
  • ลงทะเบียนเนื้อหา

โอ๊ะเป็นวิธีในการแก้ไขข้อบกพร่องเคอร์เนลรหัสและมีโปรแกรมอรรถประโยชน์สำหรับช่วยเหลือ ความตื่นตระหนกของเคอร์เนลหมายถึงระบบไม่สามารถกู้คืนและต้องเริ่มใหม่ อย่างไรก็ตามด้วยการโอ๊ะโอระบบสามารถดำเนินการต่อได้ คุณสามารถกำหนดค่า klogd และ syslogd เพื่อบันทึก oops ข้อความไปยังไฟล์แทนที่จะเป็น std out

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.