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