Làm thế nào để máy tính biết rằng PC không được tắt đúng cách?


92

Trên thực tế, câu hỏi này đánh tôi vì cắt điện trong nhà tôi. Khi bị cắt điện, máy tính bị mất điện đột ngột.

Làm thế nào để máy tính biết rằng việc tắt máy không được thực hiện đúng cách?

Câu trả lời:


104

Windows cũng sử dụng phương pháp Dirty Bit để phát hiện xem PC đã tắt đúng cách chưa:

Khi tắt nguồn như bình thường, bit bị tắt. Tuy nhiên, trong trường hợp mất điện hoặc tắt máy (cưỡng bức) không đúng cách, bit sẽ vẫn ở lần tiếp theo khi PC khởi động.

Điều này có nghĩa là Windows có thể đề xuất hành động khắc phục - chẳng hạn như khởi động vào Chế độ an toàn.

Ngoài ra, một PC dựa trên Windows sẽ viết một mục vào chi tiết nhật ký sự kiện khi nào và tại sao (nếu biết) nó bị tắt. Nó cũng viết một sự kiện khi PC khởi động.

Hệ thống tắt

Hệ thống khởi động

Khi PC khởi động lại, nó có thể kiểm tra nhật ký sự kiện và nếu nó không tìm thấy "sự kiện tắt" sau sự kiện "khởi động" cuối cùng thì nó biết rằng PC đã không tắt đúng cách và có thể có vấn đề do chưa được lưu dữ liệu vv


2
Không phải câu trả lời của David dưới đây chính xác hơn sao? Tôi nghĩ rằng NTFS có 'bit bẩn' mà FS phát hiện khi được gắn kết. Tôi đã luôn cho rằng Nhật ký sự kiện chỉ là nhật ký của những gì được tìm thấy chứ không phải là phát hiện và lý do thực sự đằng sau nó?
HaydnWVN

3
Nhưng trong tình huống tắt nguồn không có kế hoạch (rõ ràng không có UPS), việc tắt máy sẽ là 'bất ngờ' (được đề cập bởi Nhật ký sự kiện). Thông tin tuyệt vời ở đâyIf 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 Bit bẩn của hệ thống tập tin được sử dụng để xác định sự cố bất thường, để HĐH biết rằng hệ thống tập tin có thể ở trạng thái không xác định và có thể chạy chẩn đoán (ví dụ chkdsk) để xác định các sự cố hệ thống tệp tiềm năng. Đây là lý do tại sao đôi khi bạn nhận được hộp thoại sửa chữa khi cắm vào ổ USB không được tháo đúng cách. Ngược lại, thuật ngữ "bit bẩn" chỉ đơn giản có nghĩa là một trường được đặt và không được đặt sau này khi chấm dứt đúng thời gian hệ thống hoặc thiết bị xảy ra. Một chấm dứt không thích hợp rời khỏi trường thiết lập, vì vậy nó được nhận ra khi khởi tạo tiếp theo của thiết bị.
Đa thức

1
@ChrisF Yêu cầu đó có thể được tắt trong chính sách nhóm / địa phương. Và sẽ được bỏ qua nếu tắt thông qua một cái gì đó như bảng điều khiển của máy chủ VM. Tốt hơn là dựa vào các sự kiện Kernel-General # 12 (tắt máy bình thường) và EventLog # 6002 (tắt máy lần cuối là bất ngờ). Nếu đó là BSOD thì cũng nên có BugCheck # 1001. (Tất cả các sự kiện: nguồn #id.)
Richard

1
Đầu tiên, làm thế nào trạng thái của bit đó được duy trì trong bộ nhớ dễ bay hơi sau một chu kỳ năng lượng? Khởi động kép thì sao? Trích dẫn wikipedia đọc như phỏng đoán - mặc dù tôi chưa đọc cuốn sách Khái niệm hệ điều hành mà nó tham khảo. Thứ hai, ý tưởng rằng Windows đọc nhật ký sự kiện để xác định xem có xảy ra tắt máy rõ ràng không. Câu trả lời chỉ vào bootstat.dat cho Windows có nhiều khả năng đúng hơn nhiều so với những dự đoán này, một phần vì nó có ý nghĩa hơn, nhưng chủ yếu là do nguồn trích dẫn của nó.
gai

121

Đối với các PC không chạy Windows, việc phát hiện thường được thực hiện trên cơ sở từng hệ thống. Khi một hệ thống tập tin được gắn kết ở chế độ đọc / ghi, một mục nhập được ghi vào hệ thống tập tin đánh dấu nó bẩn. Khi hệ thống tập tin không được đếm, một mục được viết đánh dấu nó sạch. Khi khởi động, hệ điều hành sẽ kiểm tra xem các hệ thống tập tin cốt lõi của nó có bị đánh dấu bẩn hay không và nếu có thì nó sẽ không tắt máy - ít nhất là trong số các hệ thống tập tin đó.


29
+1 vì câu hỏi không hỏi về một HĐH cụ thể.
Trevor Boyd Smith

42

Trong Windows, theo các tác giả của Windows Internals, lần xuất bản thứ 5, đó là tệp bootstat.dat (được đặt mặc định trong thư mục \ boot của phân vùng hệ thống):

Windows sử dụng tệp trạng thái khởi động ... để ghi lại thực tế rằng nó đã tiến triển qua các giai đoạn khác nhau của vòng đời hệ thống, bao gồm khởi động và tắt máy. Điều này cho phép Trình quản lý khởi động, trình tải Windows và công cụ Sửa chữa khởi động để phát hiện tắt máy bất thường hoặc không tắt máy sạch và cung cấp tùy chọn khởi động phục hồi và chẩn đoán người dùng ...

 


3
Nguồn trích dẫn?
Paul DelRe

23
"Windows Internals" của Mark Russinovich và David Solomon với Alex Ionescu, trang 1010.
artm

Để đối chiếu điều này với câu trả lời của ChrisF - "bit bẩn" được duy trì bởi mỗi hệ thống tệp chỉ dành cho trạng thái của hệ thống tệp đó; nó không phải là toàn hệ thống. Lưu ý rằng bạn có thể "ngắt kết nối" một cách an toàn một ổ cứng di động - điều này sẽ xóa bit bẩn cho hệ thống tập tin đó - và sau đó có thể tắt máy đột xuất sau đó.
Jamie Hanrahan

0

Trên một số máy tính, một phương thức độc lập với hệ điều hành có thể được đặt trong BIOS phần cứng. Nó phụ thuộc vào nhà cung cấp máy tính và nhà cung cấp BIOS.

Các mojors bao gồm American Megatrends Inc. (AMI), Award và Phoenix Technologies. Nhìn vào các nhà sản xuất để biết chi tiết.


2
Thay vì chỉ vẫy tay và nói "thông tin nằm ngoài đó", làm thế nào về việc thực sự liên kết với một số tài liệu tham khảo có liên quan?
G-Man
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.