อาการค้าง

จากวิกิพีเดีย สารานุกรมเสรี

อาการค้าง หรือเรียกทับศัพท์ว่า แฮ็ง (อังกฤษ: hang) หรือ ฟรีซ (อังกฤษ: freeze) คือภาวะหยุดนิ่งของโปรแกรมคอมพิวเตอร์เอกเทศหรือทั้งระบบ ไม่ตอบสนองต่อสัญญาณรับเข้าใด ๆ อุบัติการณ์ทั่วไปที่เกิดกับระบบคอมพิวเตอร์ที่มีส่วนต่อประสานกราฟิกกับผู้ใช้คือ หน้าต่างของโปรแกรมที่ค้างจะคงหยุดนิ่งบนจอภาพ และแม้ว่าตัวชี้เมาส์จะสามารถขยับได้ ไม่ว่ากดแป้นพิมพ์หรือคลิกเมาส์ก็ไม่ส่งผลอันใดต่อหน้าต่างของโปรแกรมที่ค้างนั้น ตัวชี้เมาส์ก็อาจยังคงแสดงอยู่ว่ากำลังรอให้ปฏิบัติการเสร็จสิ้น โดยแสดงเป็นรูปนาฬิกาทรายหรือตัวชี้แบบหมุนเป็นต้น

ระบบปฏิบัติการสมัยใหม่ได้จัดเตรียมหนทางให้ผู้ใช้สามารถหยุดทำงานโปรแกรมที่ค้างได้โดยไม่ต้องรีบูตหรือล็อกเอาต์ สำหรับอาการค้างที่รุนแรงมากกว่าซึ่งส่งผลต่อทั้งระบบ ไม่มีหน้าต่างของโปรแกรมใดที่ตอบสนองต่อแป้นพิมพ์หรือเมาส์ และตัวชี้เมาส์ก็มักจะหยุดนิ่งบนจอภาพด้วย กรณีเช่นนี้มีหนทางเดียวที่จะแก้ปัญหาระบบค้างคือต้องรีบูตเครื่องใหม่ด้วยวิธีการตัดพลังงาน (power cycling) โดยปิดแล้วเปิดใหม่หรือกดปุ่มรีเซ็ต

สาเหตุ[แก้]

ฮาร์ดแวร์สามารถทำให้คอมพิวเตอร์ค้าง เนื่องจากมันทำงานขาด ๆ หาย ๆ หรือเข้ากันไม่ได้กับฮาร์ดแวร์อื่นในคอมพิวเตอร์นั้น [1] (อาจเกิดหลังจากอัปเกรด) ฮาร์ดแวร์ก็อาจทำงานบกพร่องได้เมื่อเวลาผ่านไปเนื่องจากความเสียหายจากฝุ่นหรือความร้อน

อาการค้างสามารถเกิดขึ้นได้ เนื่องจากโปรแกรมเมอร์วางเงื่อนไขการหยุดทำงานวงวนไม่ถูกต้อง หรือลืมที่จะยอมให้งานอื่นกระทำผ่านไปก่อน พูดอีกนัยหนึ่งคือ อาการค้างที่เกี่ยวกับซอฟต์แวร์ เกิดจากการรอเหตุการณ์จากเทร็ดที่ไม่มีการตอบสนองกลับมา [2] เรียกอีกอย่างว่าวงวนไม่รู้จบ

อีกสาเหตุหนึ่งอาจเกิดจากเงื่อนไขแข่งขัน (race condition) ในการสื่อสารระหว่างกระบวนการ นั่นคือกระบวนการที่หนึ่งได้ส่งสัญญาณไปยังกระบวนการที่สองแล้วหยุดรอการตอบรับ ถ้ากระบวนการที่สองยังไม่ว่าง สัญญาณนั้นจะถูกพักไว้จนกว่ากระบวนการจะสามารถทำงานนี้ได้ อย่างไรก็ตาม ถ้ากระบวนการที่สองไม่ว่างเนื่องจากได้ส่งสัญญาณไปยังกระบวนการที่หนึ่งแล้วหยุดรอการตอบรับเช่นกัน กระบวนการทั้งสองก็จะไม่สามารถทำงานต่อไปได้อีก เพราะต่างก็รอการตอบรับซึ่งกันและกันและไม่มีสัญญาณใดส่งกลับ เหตุการณ์เช่นนี้เรียกว่าภาวะติดตาย (deadlock) ถ้ากระบวนการทั้งสองไม่สามารถขัดจังหวะได้ มันก็จะค้างและจำต้องหยุดทำงานโปรแกรม และถ้าอย่างน้อยกระบวนการหนึ่งเป็นกระบวนการวิกฤตบนเคอร์เนล ระบบทั้งหมดอาจค้างและจำต้องรีสตาร์ตเครื่องใหม่

คอมพิวเตอร์อาจดูเหมือค้างซึ่งในความจริงคือมันประมวลผลได้ช้ามาก สาเหตุของการประมวลผลช้าเช่น หลายโปรแกรมกำลังทำงานในเวลาเดียวกันมากเกินไป หน่วยความจำ (แรม) ไม่พอเพียงหรือแตกกระจาย การเข้าถึงฮาร์ดแวร์ช้า (โดยเฉพาะอุปกรณ์ทางไกล) ส่วนต่อประสานของระบบช้า เป็นต้น นอกจากนี้ยังอาจเกิดจากโปรแกรมซ่อนตัวอาทิสปายแวร์ซึ่งลอบติดตั้งเข้าสู่ระบบ แต่สาเหตุที่สำคัญที่สุดคือมันชอบกินไก่ย่าง และมันขี้ไม่ออก

ดูเพิ่ม[แก้]

อ้างอิง[แก้]

  1. "How to Troubleshoot Computer Hangs During Hardware Detection" (Press release). Microsoft Help and Support. 2007-01-27. สืบค้นเมื่อ 2008-07-31. 
  2. Calvin Hsia (2006-11-16). "Here's an infinite loop that will hang your machine". blogs.msdn.com. Web link. Retrieved 2008-07-31.