Como o computador sabe que o PC não foi desligado corretamente?

92

Na verdade, essa pergunta me atingiu por causa de cortes de energia em minha casa. Quando há um corte de energia, há uma perda repentina de energia do computador.

Como o computador sabe que o desligamento não foi realizado corretamente?

FrozenKing
fonte

Respostas:

104

O Windows também usa o método Dirty Bit para detectar se o PC foi desligado corretamente:

Quando desligado normalmente, o bit é desligado. No entanto, em caso de falta de energia ou desligamento inadequado (forçado), o bit continuará sendo na próxima vez que o PC for iniciado.

Isso significa que o Windows pode sugerir ações corretivas - como inicializar no modo de segurança.

Além disso, um PC com Windows gravará uma entrada no log de eventos detalhando quando e por que (se conhecido) foi desligado. Ele também grava um evento quando o PC é inicializado.

Desligamento do sistema

Inicialização do sistema

Quando o PC é reiniciado, ele pode verificar o log de eventos e, se não encontrar um "evento de desligamento" após o último evento de "inicialização", ele sabe que o PC não foi desligado corretamente e pode haver problemas devido a alterações não salvas. dados etc.

ChrisF
fonte
2
A resposta de Davi não é mais precisa? Eu pensei que o NTFS tinha um 'bit sujo' que o FS detecta quando montado. Sempre presumi que o log de eventos é apenas um log do que é encontrado, e não a detecção e o raciocínio reais por trás dele.
precisa saber é o seguinte
3
Mas em uma situação de desligamento não planejado (sem UPS, obviamente), o desligamento seria "inesperado" (mencionado pelo log de eventos). Ótima informação aquiIf 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 O bit sujo do sistema de arquivos é usado para identificar uma desmontagem anormal, para que o sistema operacional saiba que o sistema de arquivos pode estar em um estado indeterminado e possa executar um diagnóstico (por exemplo chkdsk) para identificar possíveis problemas no sistema de arquivos. É por isso que às vezes você recebe a caixa de diálogo de reparo ao conectar unidades USB que não foram removidas corretamente. Por outro lado, o termo "bit sujo" significa simplesmente um campo definido e desabilitado posteriormente quando ocorre o término adequado do tempo de execução do sistema ou dispositivo. Uma terminação imprópria sai do conjunto de campos e é reconhecida na próxima inicialização do dispositivo.
Polynomial
1
@ChrisF Esse requisito pode ser desativado na política de grupo / local. E será ignorado se desativado através de algo como o painel de controle de um host de VM. Melhor confiar nos eventos Kernel-General # 12 (desligamento normal) e EventLog # 6002 (o último desligamento foi inesperado). Se era um BSOD, também deveria haver um BugCheck # 1001. (Todos os eventos: #id fonte.)
Richard
1
Primeiro, como o estado desse bit é mantido na memória volátil após um ciclo de energia? E a inicialização dupla? A citação da wikipedia parece conjectura - embora eu não tenha lido o livro Conceitos de Sistema Operacional. Segundo, a ideia de que o Windows lê o log de eventos para determinar se ocorreu um desligamento limpo está obviamente incorreta. A resposta que aponta para bootstat.dat para Windows é muito mais provável que seja correta do que qualquer uma dessas suposições, em parte porque faz mais sentido, mas principalmente por causa de sua fonte citada.
cânhamo
121

Para PCs não baseados em Windows, a detecção geralmente é feita por sistema de arquivos. Quando um sistema de arquivos é montado no modo de leitura / gravação, uma entrada é gravada no sistema de arquivos marcando-o como sujo. Quando o sistema de arquivos é desmontado, uma entrada é gravada marcando-o como limpo. Na inicialização, o sistema operacional verifica se seus sistemas de arquivos principais estão marcados como "sujos" e, se for o caso, sabe que não houve um desligamento limpo - pelo menos desses sistemas de arquivos.

David Schwartz
fonte
29
+1 porque a pergunta não está sendo feita sobre um sistema operacional específico.
Trevor Boyd Smith
42

No Windows, de acordo com os autores do Windows Internals, 5ª ed., É o arquivo bootstat.dat (localizado por padrão no diretório \ boot da partição do sistema):

O Windows usa um arquivo de status de inicialização ... para registrar o fato de que ele progrediu em vários estágios do ciclo de vida do sistema, incluindo inicialização e desligamento. Isso permite que o Gerenciador de inicialização, o carregador do Windows e a ferramenta Reparo de inicialização detectem um desligamento anormal ou uma falha no desligamento limpo e ofereçam ao usuário opções de recuperação e diagnóstico de inicialização ...

 

kreemoweet
fonte
3
Fonte da citação?
Paul DelRe
23
"Windows Internals" por Mark Russinovich e David Solomon com Alex Ionescu, página 1010.
artm
Para contrastar isso com a resposta de ChrisF - o "bit sujo" mantido por cada sistema de arquivos é apenas para o estado desse sistema de arquivos; não é de todo o sistema. Observe que você pode "desconectar com segurança" um disco rígido removível - isso limpa o bit sujo desse sistema de arquivos - e, em seguida, um desligamento inesperado pode ocorrer depois disso.
Jamie Hanrahan 23/09
0

Em alguns computadores, um método independente do SO pode ser definido no BIOS de hardware. Depende do fornecedor e do fornecedor do BIOS.

Os principais nomes incluem American Megatrends Inc. (AMI), Award e Phoenix Technologies. Veja esses fabricantes para detalhes.

Sushi
fonte
2
Em vez de apenas acenar com a mão e dizer "a informação está lá fora", que tal realmente vincular-se a algumas referências relevantes?
G-Man