題 計算機如何知道PC沒有正常關閉?


實際上,這個問題讓我感到震驚,因為家裡停電了。斷電時,計算機會突然斷電。

計算機如何知道關閉未正確完成?


92
2017-09-26 08:31


起源




答案:


Windows也使用了 骯髒的位 檢測PC是否正常關閉的方法:

正常斷電時,該位關閉。但是,在斷電或不正確(強制)關閉的情況下,該位仍將在下次啟動PC時啟用。

這意味著Windows可以建議補救措施 - 例如啟動到安全模式。

此外,基於Windows的PC將在事件日誌中寫入一個條目,詳細說明何時以及為何(如果已知)關閉它。它還會在PC啟動時寫入事件。

System shut down

System start up

當PC重新啟動時,它可以檢查事件日誌,如果它在最後一次“啟動”事件後沒有找到“關閉事件”,它就知道PC沒有正常關閉並且那裡 可以 由於未保存的數據等問題


104
2017-09-26 08:41



下面大衛的回答不是更準確嗎?我認為NTFS有一個'臟位',FS在安裝時會檢測到。我一直認為事件日誌只是找到的內容的日誌,而不是它背後的實際檢測和推理? - HaydnWVN
但是在非計劃的斷電情況下(顯然沒有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
@HaydnWVN文件系統臟位用於識別異常卸載,以便操作系統知道文件系統可能處於不確定狀態,並且可以運行診斷(例如, chkdsk)識別潛在的文件系統問題。這就是為什麼在插入未正確移除的USB驅動器時有時會得到修復對話框的原因。相反,術語“臟位”僅表示設置的字段,並且在系統或設備運行時的正確終止發生時稍後未設置。不正確的終止會離開字段集,因此在下次初始化設備時會被識別。 - Polynomial
@ChrisF可以在組/本地策略中關閉該要求。如果通過VM主機的控制面板關閉,將被繞過。最好依靠事件Kernel-General#12(正常關閉)和EventLog#6002(上次關閉是意外的)。如果它是BSOD,那麼也應該有一個BugCheck#1001。 (所有事件:源#id。) - Richard
首先,在電源循環後,該位的狀態如何在易失性存儲器中保持?雙啟動怎麼樣?維基百科的引用讀起來像猜想 - 雖然我還沒有讀過它引用的操作系統概唸書。其次,Windows讀取事件日誌以確定是否發生乾淨關閉的想法顯然是不正確的。指向Windows的bootstat.dat的答案遠比這些猜測更正確,部分原因是因為它更有意義,但主要是因為它的引用來源。 - hemp


對於非基於Windows的PC,檢測通常基於每個文件系統進行。當文件系統以讀/寫模式掛載時,會將一個條目寫入文件系統,標記為臟。卸載文件系統時,會寫入一個條目,將其標記為乾淨。在啟動時,操作系統檢查其核心文件系統是否標記為臟,如果是,則它知道沒有乾淨關閉 - 至少是那些文件系統。


122
2017-09-26 08:54



+1因為問題不在於詢問特定的操作系統。 - Trevor Boyd Smith


根據Windows Internals第5版的作者,在Windows中,它是bootstat.dat 文件(默認位於系統分區的\ boot目錄中):

Windows使用引導狀態文件...來記錄它已經進入系統生命週期的各個階段的事實,包括引導和關閉。這允許引導管理器,Windows加載程序和啟動修復工具檢測異常關閉或無法完全關閉並提供用戶恢復和診斷引導選項...


42
2017-09-26 16:21



報價來源? - Paul DelRe
Mark Russinovich和David Solomon與Alex Ionescu的“Windows Internals”,第1010頁。 - artm
與ChrisF的答案形成對比 - 每個文件系統維護的“臟位”僅適用於該文件系統的狀態;它不是系統範圍的。請注意,您可以“安全地斷開”可移動硬盤驅動器 - 這會清除該文件系統的髒位 - 然後在此之後可能會發生意外關閉。 - Jamie Hanrahan


在某些計算機上,可以在硬件BIOS中設置獨立於OS的方法。這取決於BIOS的計算機供應商和供應商。

這些專業包括American Megatrends Inc.(AMI),Award和Phoenix Technologies。看看這些製造商的具體細節。


0
2018-05-03 23:35



而不是只是揮手並說“信息在那裡”,如何實際鏈接到一些相關的參考? - G-Man