Reinicialização
# Reinicialização

Em um computador ou sistema de transmissão de dados, uma reinicialização limpa quaisquer erros ou eventos pendentes e restaura o sistema ao seu estado normal ou inicial, geralmente de forma controlada. Isso costuma ser feito em resposta a uma condição de erro, quando não é possível ou desejável que o processamento continue e todos os mecanismos de recuperação de erros falham. Um programa de armazenamento de computador pode realizar uma "reinicialização" se um comando expirar e métodos de recuperação, como novas tentativas ou interrumpções, também falharem.

## Reinicialização do software

Uma reinicialização de software (ou reinicialização suave) é iniciada pelo software, por exemplo, quando a combinação de teclas Control-Alt-Delete é pressionada ou quando é executada uma reinicialização no Microsoft Windows .

## Reinicialização de hardware

A maioria dos computadores possui uma linha de reinicialização que coloca o dispositivo no estado de inicialização, permanecendo ativa por um curto período após o início do sistema. Por exemplo, na arquitetura x86, a ativação da linha RESET interrompe a CPU; isso ocorre logo após o sistema ser ligado e antes que a fonte de alimentação informe um estado de "energia boa", indicando que está pronta para fornecer tensões estáveis em níveis adequados.
A reinicialização causa menos estresse no hardware do que o ciclo de desligamento e religamento, pois a energia não é removida. Muitos computadores, especialmente modelos mais antigos, possuem botões de "reinicialização" acessíveis ao usuário, que ativam a linha de reinicialização, permitindo reiniciar o sistema de forma que não pode ser bloqueada pelo sistema operacional. Em alguns dispositivos móveis, isso pode ser feito segurando uma combinação específica de botões. Se o dispositivo não tiver um botão de reinicialização dedicado, o usuário pode manter pressionado o botão liga/desliga para forçar o desligamento, e, em seguida, religar o computador. O gerenciamento remoto também costuma oferecer a opção de reinicializar o sistema dessa forma.
Muitos circuitos digitais com capacidade de memória, como flip-flops, registradores e contadores, aceitam sinais de reinicialização que os define para um estado pré-determinado. Esse sinal é geralmente aplicado após a inicialização, mas também pode ser usado em outras situações. Após uma reinicialização forçada, os estados de registro de muitos componentes de hardwares são apagados.
A capacidade de um dispositivo eletrônico de se reinicializar após um erro ou perda repentina de energia é um aspecto essencial no design e da programação de sistemas embarcados . Isso pode ser observado em diversos aparelhos eletrônicos do dia a dia, como televisores, equipamentos de áudio e eletrônicos automotivos, que retomam seu funcionamento normal mesmo após quedas de energia inesperadas. Às vezes, um erro incomum em um dispositivo pode ser resolvido simplesmente desligando e religando o aparelho. Alguns dispositivos, como reprodutores de mídia portáteis, costumam incluir um botão de reinicialização dedicado, pois são propensos a travamentos. A falta dessa capacidade pode tornar um dispositivo inutilizado após uma queda de energia ou um mau funcionamento.
Os usuários também podem iniciar uma reinicialização forçada para redefinir um dispositivo caso o software trave, falhe ou pare de responder. No entanto, esse processo pode corromper dados caso não seja feito corretamente. Normalmente, uma reinicialização forçada é ativada pressionando um botão de reset dedicado. Em alguns sistemas, como o console de videogame PlayStation 2, pressionar rapidamente o botão liga/desliga inicia uma reinicialização, enquanto segurá-lo por alguns segundos desliga completamente o sistema.

### Reinicialização de hardware em IBM PC 80x86

Os microprocessadores 8086 fornecem o pino RESET que é usado para fazer a reinicialização do hardware. Quando um HIGH é aplicado ao pino, a CPU para imediatamente e define os principais registradores para estes valores:
| Registrar | Valor |
| CS ( Segmento de Código ) | 0xFFFF |
| DS ( Segmento de Dados ) | 0x0000 |
| ES ( Segmento de Dados Extra) | 0x0000 |
| SS (Segmento de Pilha ) | 0x0000 |
| IP ( Ponteiro de Instrução ) | 0x0000 |
A CPU usa os valores dos registradores CS e IP para encontrar o local da próxima instrução a ser executada. A localização da próxima instrução é calculada usando esta equação simples:
Location of next instruction = (CS<<4) + (IP)
Isso implica que, após a reinicialização do hardware, a CPU iniciará a execução no endereço físico 0xFFFF0. Em computadores compatíveis com IBM PC, este endereço é mapeado para a ROM do BIOS . A palavra de memória em 0xFFFF0 geralmente contém uma instrução JMP que redireciona a CPU para executar o código de inicialização do BIOS. Esta instrução JMP é absolutamente a primeira instrução executada após a reinicialização.

### Reinicialização de hardware em CPUs x86 posteriores

Processadores x86 posteriores redefinem os registradores CS e IP de forma semelhante, consulte Redefinir vetor .

### Mac

Os computadores Apple Mac permitem vários níveis de reinicialização, incluindo (CTL, CMD, EJECT) análogo à saudação de três dedos (CTL, ALT, DEL) em computadores Windows.