เบื้องหลังการแก้ปัญหา Windows XP แครชบ่อย ปัญหาส่วนใหญ่เกิดจากไดรเวอร์

by mk
2 October 2013 - 12:46

หลังจาก Windows XP เป็นต้นมา เราแทบไม่เห็นอาการ "จอฟ้า" หรือ Blue Screen of the Dead อันเลื่องชื่อของวินโดวส์สักเท่าไรนัก (ส่วนใหญ่ที่เจอเกิดจากฮาร์ดแวร์มีปัญหาเสียมาก) เว็บไซต์ ZDNet มีบทความเล่าว่าไมโครซอฟท์แก้ปัญหานี้ได้อย่างไรครับ

Byron Cook หัวหน้านักวิจัยของ Microsoft Research ในเคมบริดจ์ อธิบายวิธีแก้ปัญหาของไมโครซอฟท์ว่าเริ่มจากการวิเคราะห์สถิติการแครชของระบบ ซึ่งไมโครซอฟท์พบว่า 85% มาจากปัญหาไดรเวอร์ที่ไม่ได้เขียนโดยไมโครซอฟท์ แต่พัฒนาโดยผู้ผลิตฮาร์ดแวร์จำนวนมาก (และไม่เปิดเผยโค้ด) โจทย์วิจัยของไมโครซอฟท์จึงกลายเป็นการสร้างระบบปฏิบัติการที่ทนทานต่อปัญหาไดรเวอร์

ไมโครซอฟท์วิเคราะห๋ต่อแล้วพบว่าปัญหาไดรเวอร์แยกได้เป็น 3 กลุ่มใหญ่ๆ

  • เรียก API ของเคอร์เนลผิดพลาด เช่น บางครั้งเรียก API ของ IO ซ้ำสองที ทำให้ระบบแครช
  • ปัญหาหน่วยความจำ เช่น จองหน่วยความจำไม่พอสำหรับที่ไดรเวอร์ต้องการจริงๆ
  • ไดรเวอร์ติด infinite loop ทำให้เครื่องค้าง

ไมโครซอฟท์แก้ปัญหาเหล่านี้เป็นรายตัว โดยพัฒนาเครื่องมือมาช่วยวิเคราะห์ปัญหาไดรเวอร์แต่ละอย่างเป็นการเฉพาะ

  • Slam เป็นเครื่องมือไว้แก้ปัญหาแรก มันจะตรวจสอบคุณภาพของไดรเวอร์ในการเรียก API
  • Slayer แก้ปัญหาหน่วยความจำ โดยมันจะวิเคราะห์ data structure ที่ไดรเวอร์เรียกใช้ว่าเหมาะสมหรือไม่ หลังจากไมโครซอฟท์พัฒนาเครื่องมือนี้เสร็จ แล้วนำไปทดสอบกับเทมเพลตตัวอย่างไดรเวอร์ของไมโครซอฟท์ (ที่บริษัทฮาร์ดแวร์นำไปพัฒนาไดรเวอร์ต่อ) ก็พบว่าไดรเวอร์ไมโครซอฟท์มีปัญหาเสียเองด้วย เมื่อแก้ปัญหาของฝั่งไมโครซอฟท์แล้วก็พบว่าปัญหาเรื่องหน่วยความจำลดลงไปมาก
  • Terminator แก้ปัญหา infinite loop เรื่องนี้ไมโครซอฟท์อธิบายว่าปัญหา infinite loop ตรวจสอบให้ครบทุกกรณีได้ยากมาก แต่โชคดีว่าไฟล์ของไดรเวอร์โดยทั่วไปแล้วขนาดไม่ใหญ่มากนัก จึงยังอยู่ในระดับที่พอตรวจสอบได้

การแก้ปัญหาที่ระดับแกนของระบบปฏิบัติการโดยใช้เครื่องมือหลายอย่างนี้ ช่วยให้วินโดวส์รุ่นต่อๆ มาอย่าง Windows 7 และ 8 เสถียรขึ้นมาก

ที่มา - ZDNet

Blognone Jobs Premium