Qual é a diferença entre bios e kernel?

Pense em termos de "onde" em vez de "o que" O BIOS vive na sua placa-mãe. O kernel vive em sua unidade de inicialização. Se você inicializar o seu computador com dupla inicialização, continuará usando a mesma BIOS independentemente de qual kernel inicializar. Você também pode pensar em termos de "quando" em vez de "o quê" O BIOS precisa estar completamente instalado e em execução antes do kernel pode começar a inicializar. Seu BIOS não se importava com o kernel. Ele exibirá felizmente a temperatura da CPU para sempre, caso você opte por não inicializar um kernel.

O kernel é uma das partes mais importantes do sistema operacional. Usamos a palavra kernel para significar a parte do sistema operacional que é executada no modo privilegiado (às vezes até um subconjunto disso). O kernel está mais próximo do hardware e geralmente executa tarefas como gerenciamento de memória e chamadas do sistema.

Agora, para o BIOS (Sistema Básico de Entrada e Saída), ele é responsável por fornecer drivers para novos dispositivos no SO. O BIOS constitui o código armazenado na memória somente leitura (ROM) e alguns dados de configuração na RAM não volátil.BIOS fornece três funções principais: 1. POST (Power on self test), para que ele saiba onde carregar o programa de inicialização. Carregar e transferir o controle para o programa de inicialização .3. Forneça drivers para todos os dispositivos.

O BIOS principal é fornecido como um chip na placa-mãe. Ele contém tudo o necessário para executar as três funções acima. BIOSs adicionais em outras placas podem fornecer acesso a dispositivos adicionais.

Espero que isto ajude.

Para fazer algo previsível (e útil), um computador precisa executar as instruções da máquina em um local previsível da memória a partir do momento em que é ligado. As configurações iniciais de inicialização de todos os computadores possuem um programa embutido no hardware, localizado (na memória) naquele local. Isso foi chamado de IPL (Initial Program Loader) ou Boot Loader ("Boot", como em "Elevando-se pelas tiras de inicialização"). É o programa que procura outros programas para iniciar (como em hardware que fornece memória como interfaces Ethernet, interfaces de disco, interfaces de som etc.). É um programa que conhece o suficiente o hardware do computador para encontrar essas coisas. No caso do IBM / PC (e das máquinas CP / M antes dele), recebeu o nome de BIOS para "Sistema básico de entrada e saída".

Um recurso MUITO importante do carregador de inicialização / BIOS é encontrar uma maneira de carregar o sistema operacional. Para dispositivos de armazenamento local (como discos), isso geralmente é feito procurando discos ativos que possuam dados em locais específicos no disco, copiando esse disco do disco para a memória e iniciando a execução. Geralmente, é um carregador específico do sistema operacional que compreende o suficiente dos sistemas de arquivos no disco para concluir o carregamento do Kernel do sistema operacional (pelo menos conceitualmente).

É possível que o carregador de inicialização / BIOS tenha funções (geralmente fornecidas pelos drivers ethernet) que permitem que esse processo ocorra através de uma rede em vez de usar discos locais. A maioria dos computadores modernos possui esse recurso.

BIOS é um programa que reside na ROM que está embutida na placa-mãe. Seu trabalho é verificar se todo o hardware está instalado corretamente, funcionando ou não, executando o POST (autoteste de inicialização) e, em seguida, inicializar o firmware do hardware. O BIOS configurará todo o hardware que será usado pelo sistema operacional, onde o kernel não possui toda essa inteligência. O BIOS terá os drivers com funcionalidade mínima para conversar com quase todo o hardware, como monitor, mouse, teclado etc. O BIOS também pode detectar a mídia de armazenamento, através da qual você pode inicializar no sistema operacional. ele pode escolher qualquer uma das mídias disponíveis e inicializá-las (se a mídia de armazenamento for compatível com a inicialização). Depois de encontrar qualquer mídia inicializável, ele inicia a inicialização. O BIOS lê o MBR (registro mestre de inicialização) onde o carregador de inicialização (programa para executar o kernel e inicializar o SO) está presente e o executa. No caso do Linux, este é o estágio em que mostra a lista de sistemas operacionais presentes no seu disco rígido. Depois de escolher o sistema operacional, o kernel será executado e você inicializará no sistema operacional. O kernel é a parte principal do sistema operacional que possui drivers (funcionalidade mais avançada que os drivers do BIOS) para conversar com o gerente de hardware, memória, Agendador de processos, manipuladores de interrupção, agendador de CPU, etc. O kernel também pode detectar o hardware presente no sistema e conversar com eles através dos drivers. Mas existem limitações nas informações que o kernel pode obter sobre o hardware; é aqui que ele usa as informações fornecidas pelo BIOS. Inicialmente, o BIOS lê as informações de hardware e, em seguida, despeja as tabelas chamadas tabelas ACPI na RAM, que serão usadas pelo kernel para obter informações mais detalhadas sobre o hardware.

Portanto, o BIOS possui recursos mais avançados que podem pesquisar informações detalhadas sobre o hardware, inicializá-las, fornecer um ambiente para que o usuário possa usá-lo para instalar / inicializar no SO e usar o hardware com eficiência. Enquanto o Kernel é a parte principal do sistema operacional, onde as entradas do usuário são obtidas por meio de algumas UI / comandos que, por sua vez, são convertidas em chamadas do sistema e depois comunicadas ao kernel, que usa drivers específicos para conversar com o hardware para executar alguma tarefa, juntamente com .

A explicação acima é conforme o meu entendimento. Pode conter algumas informações incorretas. Quaisquer especialistas que possam corrigi-las, por favor, comente em vez de fazer uma votação para baixo, para que eu possa melhorar meu conhecimento.

O BIOS (

Sistema Básico de Entrada e Saída

) é um software que não faz parte do sistema operacional ou do software instalado pelo usuário. Está embutido na placa-mãe, usando memória somente leitura (ROM). Na verdade, não é totalmente somente leitura - é possível atualizar o BIOS usando ferramentas especiais. Sob circunstâncias normais, no entanto, o BIOS é sacrossanto e não pode ser modificado.

O BIOS é uma biblioteca de funções usada para inicializar o sistema e para executar acesso básico de leitura e gravação ao hardware na placa-mãe, por exemplo, os chips de RAM. Depois que o sistema é inicializado, o BIOS permanece inativo, aguardando o sistema operacional chamar qualquer uma de suas funções. O sistema operacional, por sua vez, pode optar por ignorar o BIOS e acessar o hardware diretamente. Existem prós e contras nisso. O código do BIOS é conveniente porque, em teoria, ele lida com todos os requisitos confusos de leitura e gravação em um hardware específico. Por outro lado, o código do BIOS é notoriamente defeituoso e, às vezes, um sistema operacional pode não ter escolha a não ser ignorá-lo.

o

núcleo

é o software que recebe o controle do sistema após o BIOS concluir suas tarefas de inicialização. O kernel é o que normalmente chamamos de 'sistema operacional'. Por exemplo, se você executa o Linux, isso significa que seu sistema usa o kernel do Linux. Se você executa a Microsoft, isso significa que seu sistema usa o kernel da Microsoft.

Como o BIOS, o kernel fornece um conjunto de funções de biblioteca, chamadas de chamadas do sistema, para executar entradas e saídas básicas e acessar as várias peças de hardware do sistema. O software do usuário, como navegadores da web e editores de texto, usa essas chamadas do sistema para acessar a memória, a tela, as impressoras, o disco rígido e assim por diante.

Diferentemente do BIOS, um dos principais trabalhos do kernel é tratar o hardware do sistema como um conjunto de recursos que podem precisar ser alocados a qualquer número de usuários ao mesmo tempo. Se mais de um usuário tentar salvar um arquivo que está editando, por exemplo, seus editores de texto usam as chamadas de sistema fornecidas pelo kernel, para enviar uma solicitação de gravação em disco. O kernel, por sua vez, organizará e priorizará essas solicitações de gravação, para que pareçam estar acontecendo simultaneamente.

Na realidade, o kernel alterna entre todas as tarefas do usuário no sistema, muitas vezes por segundo, proporcionando a cada usuário uma experiência tranquila.

Resumindo

: O BIOS é um conjunto de funções básicas da biblioteca, suficientes para colocar um sistema em funcionamento. O kernel é um conjunto muito mais sofisticado de bibliotecas de alocação e priorização de recursos, estruturas de dados e processos contínuos, que dão ao usuário a capacidade completa de usar o sistema.

[03/12 EDITADO para amplificar o BIOS! = ROM de inicialização após uma onda de respostas incorretas aparecer aqui]

Historicamente, BIOS é um termo de arte desde os dias de

CP / M

.

Gary Kildall

entendeu que, embora houvesse formas de vida dominantes nos primeiros microcomputadores, nem todos tinham o mesmo hardware, e ele precisava fornecer uma maneira de o sistema operacional conversar com isso, com todos os valores "disso".

Digite a primeira abstração de hardware baseada em software na computação pessoal.

O BIOS - Subsistema básico de E / S - era o código que você tinha que escrever manualmente e corrigir no disco de inicialização adquirido quando comprou sua cópia. Havia rotinas básicas para "colocar na linha serial", "obter da linha serial", "colocar na porta paralela da impressora", "verificar o status da porta", "ler bloco de disco", "gravar bloco de disco" etc. flange o código necessário no assembler, vincule-o manualmente ao corpus de código no disco, reescreva o disco e pronto! SO inicializável e executável instantaneamente! (se você não estragou tudo, o que é claro, ninguém nunca fez ...)

Como os fabricantes vendiam seus computadores pré-fornecidos com o CP / M, tudo o que havia sido feito antes de você obtê-lo e você, o usuário final, nunca o viu. No entanto, se você atualizou seu hardware, provavelmente precisará entrar e corrigir isso em algum momento.

Observe bem, você

AINDA

tinha que ter uma maneira de iniciar o computador. Nativamente, o processador iniciará da inicialização em um endereço específico. Se não há nada lá, ele fica e espera até que exista.

Nos dias em que os computadores do painel frontal (onde eu peguei o ônibus), você alternava manualmente a sequência de inicialização e pressionava executar. A CPU teria instruções suficientes a bordo para carregar o primeiro bloco de armazenamento (de fita de papel, fita cassete, fita magnética e muito mais disquetes e discos rígidos) que teriam código adicional que carregaria o resto do sistema operacional .

Para resolver esse problema, algo chamado ROM de inicialização foi criado. Este é um exemplo de um controlador de disquete do período. Observe o chip grande com o "ponto" redondo no meio ??? É uma EPROM, um chip de memória somente leitura programável apagável. Ele é definido no endereço 0x0000 (configurável por jumpers na placa) e quando o sistema é ligado, a CPU pega o código de lá, carrega um micro-driver para o disquete e carrega o sistema operacional. Como parte disso, ele seleciona um endereço de controlador que retira o mapeamento da ROM da memória, para que o sistema operacional esteja executando a partir da RAM nesse ponto.

Para PCs de consumo, essa foi uma vitória gigantesca. Praticamente tudo o que foi construído após esse ponto incorporou o Boot ROM.

MAS A ROM DE BOOT FOI - E NÃO É - O BIOS!

Próxima parada, o original

IBM PC

em 1981. Os renegados em Boca Raton que o construíram eram todos entusiastas de computadores e acabaram de migrar o que sabiam sobre como o CP / M foi construído para o hardware. Em grande parte, porque até bem tarde no jogo, acreditava-se que o sistema operacional para o PC IBM seria de fato o CP / M-86.

O que eles fizeram, no entanto, foi genial. Eles colocaram os pontos de entrada para todas essas funções "necessárias para executar o SO" na ROM e forneceram uma tabela de salto para o escritor do SO usar para acessá-los. Assim, o patch foi muito mais simples e ninguém precisou escrever código.

E, é claro, como eles precisavam ter uma ROM de inicialização, eles empacotaram o BIOS no mesmo chip, mas não usaram as mesmas técnicas de re-mapeamento de memória que a família 8086 possui endereços iniciais com muita memória, não no zero.

Isso foi ainda mais codificado em 1982, quando

Rod Canion

e seu bando de foliões da Compaq decidiu criar um "IBM PC funcional" que fosse

compatível até o nível do BIOS.

Eles concluíram que esse nível de abstração de hardware era a única coisa que importava - se atingissem isso, qualquer coisa executada no PC IBM também seria executada em suas caixas. (Me pediram para provar matematicamente a correção de sua implementação, mas fui expulso pelo departamento jurídico quando soube que eu já tinha acesso ao código-fonte da IBM).

Desde então, é disso que se trata - colocar as rotinas de controle específicas da placa-mãe na ROM, com locais conhecidos e estrutura de chamadas, para que o sistema operacional possa fazer tudo o que precisa, sem ter que saber nada sobre o subjacente hardware.

O "kernel" é a parte do sistema operacional que é executada no modo supervisor e geralmente é o que faz essas chamadas. Você não deseja que o código do espaço do usuário faça coisas como monitorar o gerenciamento de memória ou os registros de E / S.