Qual é a diferença entre um kernel oops e um kernel panic?

48

Eu sei o que é um kernel panic, mas também vi o termo "kernel oops". Eu sempre pensei que eles eram os mesmos, mas talvez não. Então:

O que é um kernel oops e como ele é diferente de um kernel panic?

    
por strugee 22.09.2013 / 07:30

2 respostas

42

Um " oops " é um problema no kernel Linux ruim o suficiente para afetar a confiabilidade do sistema.

Alguns "oops" são ruins o suficiente para que o kernel decida parar imediatamente, para que não haja perda de dados ou outros danos. Estes são chamados de pânico do kernel .

O último termo é primordial, voltando às primeiras versões dos antepassados Unix do Linux, que também imprimem uma mensagem de "pânico" no console quando elas acontecem. A função original do kernel AT & T Unix que lida com essas condições é chamada de panic() . Você pode rastreá-lo através dos lançamentos de código-fonte público do AT & T Unix em seus primeiros lançamentos:

  • O OpenSolaris A versão de panic() foi lançada pela Sun em 2005 . É bastante elaborado, e seus comentários de cabeçalho explicam muito sobre o que acontece em uma situação de pânico.

  • A implementação Unix V4 de panic() foi lançado em 1973. Basicamente, ele apenas imprime o estado principal do kernel no console e pára o processador.

  • Essa função é substancialmente substancialmente inalterada no Unix V3 de acordo com Amit Singh, que < Um famoso href="http://amzn.to/2qDgVOA"> dissecou uma versão mais antiga do Mac OS X e explicou isso. Esse primeiro link leva você a um belo artigo explicando a abordagem do macOS para a implementação de panic() , que começa com uma discussão histórica relevante.

  • O projeto " unix-jun72 " para ressuscitar o Unix V1 do código-fonte varrido as impressões mostram uma versão do assembly PDP-11 muito antiga dessa função, escrita em algum momento antes de junho de 1972, antes que o Unix fosse totalmente reescrito em C. A essa altura, sua implementação é reduzida a uma rotina de 6 instruções que faz pouco mais do que reiniciar o PDP-11.

por 22.09.2013 / 08:20
14

Um oops é um erro específico que o kernel encontra. Um Oops contém as seguintes informações:

  • Breve descrição
  • Oops #
  • Qual CPU aconteceu e o código que a CPU estava executando
  • Registrar conteúdo

Oops é uma maneira de depurar o código do kernel, e existem utilitários para ajudar com isso. Um kernel panic significa que o sistema não pode recuperar e deve ser reiniciado. No entanto, com um Oops, o sistema geralmente pode continuar. Você pode configurar o klogd e o syslogd para registrar mensagens oops em arquivos, em vez de std out.

    
por 22.09.2013 / 08:03