คอมพิวเตอร์รู้ได้อย่างไรว่าพีซีไม่ได้ปิดอย่างถูกต้อง?


92

ที่จริงแล้วคำถามนี้ทำให้ฉันหลงเพราะการตัดไฟในบ้านของฉัน เมื่อมีการตัดไฟจะมีการสูญเสียพลังงานอย่างกะทันหันจากคอมพิวเตอร์

คอมพิวเตอร์รู้ได้อย่างไรว่าการปิดระบบไม่ได้ทำอย่างถูกต้อง

คำตอบ:


104

Windows ยังใช้วิธีDirty Bitเพื่อตรวจสอบว่าพีซีปิดตัวลงอย่างถูกต้องหรือไม่

เมื่อปิดเครื่องตามปกติบิตจะถูกปิด อย่างไรก็ตามในกรณีที่ไฟฟ้าดับหรือถูกปิด (บังคับ) ไม่ถูกต้องบิตจะยังคงอยู่ในครั้งต่อไปที่พีซีเริ่มทำงาน

ซึ่งหมายความว่า Windows สามารถแนะนำการดำเนินการแก้ไขเช่นการบูตเข้าสู่ Safe Mode

นอกจากนี้พีซีที่ใช้ Windows จะเขียนรายการลงในรายละเอียดบันทึกเหตุการณ์เมื่อใดและเพราะเหตุใด (ถ้าทราบ) มันถูกปิด นอกจากนี้ยังเขียนเหตุการณ์เมื่อพีซีเริ่มทำงาน

ระบบปิดตัวลง

ระบบเริ่มทำงาน

เมื่อพีซีรีสตาร์ทเครื่องจะสามารถตรวจสอบบันทึกเหตุการณ์และหากไม่พบเหตุการณ์ "ปิดระบบ" หลังจากเหตุการณ์ "เริ่มต้น" ครั้งสุดท้ายมันรู้ว่าพีซีไม่ได้ปิดอย่างถูกต้องและอาจมีปัญหาเนื่องจากยังไม่ได้บันทึก ข้อมูล ฯลฯ


2
คำตอบของดาวิดไม่แม่นยำกว่าหรือไม่ ฉันคิดว่า NTFS มีบิต 'สกปรก' ซึ่ง FS ตรวจพบเมื่อติดตั้ง ฉันสันนิษฐานเสมอว่าบันทึกเหตุการณ์เป็นเพียงบันทึกของสิ่งที่พบมากกว่าการตรวจจับที่แท้จริงและการให้เหตุผลที่อยู่เบื้องหลัง
HaydnWVN

3
แต่ในสถานการณ์ปิดเครื่องโดยไม่ได้วางแผน (โดยไม่มี UPS อย่างเห็นได้ชัด) การปิดเครื่องจะเป็น 'ไม่คาดคิด' (กล่าวถึงโดยบันทึกเหตุการณ์) ข้อมูลที่ดีที่นี่If a program initiates an I/O operation that alters the structure of an NTFS volume - that is, changes the directory structure, extends a file, allocates space for a new file, and so on - NTFS treats that operation as an atomic transaction. It guarantees that the transaction is either completed or, if the system fails while executing the transaction, rolled back.
HaydnWVN

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

1
@ChrisF ความต้องการนั้นสามารถปิดได้ในนโยบายกลุ่ม / ท้องถิ่น และจะถูกข้ามหากปิดผ่านบางสิ่งบางอย่างเช่นแผงควบคุมของโฮสต์ VM ดีกว่าที่จะใช้เหตุการณ์เคอร์เนลทั่วไป # 12 (ปิดระบบปกติ) และ EventLog # 6002 (ปิดระบบครั้งล่าสุดไม่คาดคิด) ถ้าเป็น BSOD ก็ควรมี BugCheck # 1001 ด้วย (เหตุการณ์ทั้งหมด: source #id.)
Richard

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

121

สำหรับพีซีที่ไม่ใช่ Windows การตรวจจับมักจะทำแบบพื้นฐานต่อระบบไฟล์ เมื่อระบบไฟล์ถูกเมาท์ในโหมดอ่าน / เขียนรายการจะถูกเขียนไปยังระบบไฟล์ที่ทำเครื่องหมายว่าสกปรก เมื่อระบบไฟล์ถูก unmount รายการจะถูกเขียนเพื่อทำเครื่องหมายว่ามันสะอาด เมื่อเริ่มต้นระบบปฏิบัติการจะตรวจสอบว่าระบบไฟล์หลักมีการทำเครื่องหมายสกปรกหรือไม่และหากเป็นเช่นนั้นก็รู้ว่าไม่มีการปิดระบบใหม่ทั้งหมด - อย่างน้อยระบบไฟล์เหล่านั้น


29
+1 เนื่องจากคำถามไม่ได้ถามเกี่ยวกับระบบปฏิบัติการที่เฉพาะเจาะจง
เทรเวอร์บอยด์สมิ ธ

42

ใน Windows อ้างอิงจากผู้เขียน Windows Internals รุ่นที่ 5 ซึ่งเป็นไฟล์ bootstat.dat (อยู่ที่ค่าเริ่มต้นในไดเรกทอรี \ boot ของพาร์ติชันระบบ):

Windows ใช้ไฟล์สถานะการบูต ... เพื่อบันทึกความจริงที่ว่ามันได้ผ่านขั้นตอนต่างๆของวงจรชีวิตของระบบรวมถึงการบูตและการปิดระบบ สิ่งนี้ช่วยให้ตัวจัดการการเริ่มระบบโหลดเดอร์ Windows และเครื่องมือซ่อมแซมการเริ่มต้นตรวจพบการปิดที่ผิดปกติหรือความล้มเหลวในการปิดเครื่องอย่างหมดจดและเสนอการกู้คืนผู้ใช้และตัวเลือกการบูตเพื่อการวินิจฉัย ...

 


3
แหล่งที่มาของคำพูด?
Paul DelRe

23
"Windows Internals" โดย Mark Russinovich และ David Solomon กับ Alex Ionescu, หน้า 1010
artm

ในการเปรียบเทียบสิ่งนี้กับคำตอบของ ChrisF - "บิตสกปรก" ที่ดูแลโดยระบบไฟล์แต่ละระบบใช้สำหรับสถานะของระบบไฟล์นั้นเท่านั้น มันไม่ได้ทั้งระบบ โปรดทราบว่าคุณสามารถ "ปลดการเชื่อมต่ออย่างปลอดภัย" ฮาร์ดไดรฟ์ที่ถอดออกได้ซึ่งจะเป็นการลบบิตที่สกปรกสำหรับระบบไฟล์นั้น - จากนั้นการปิดระบบที่ไม่คาดคิดอาจเกิดขึ้นหลังจากนั้น
Jamie Hanrahan

0

ในคอมพิวเตอร์บางเครื่องอาจมีการตั้งค่าวิธีการที่เป็นอิสระของ OS ในฮาร์ดไดรฟ์ BIOS ขึ้นอยู่กับผู้จำหน่ายคอมพิวเตอร์และผู้จำหน่าย BIOS

ผู้ที่ได้รับรางวัล ได้แก่ American Megatrends Inc. (AMI), รางวัลและ Phoenix Technologies ดูรายละเอียดเฉพาะของผู้ผลิตเหล่านี้


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