Por que o kernel do Linux é chamado de "imagem"?

62

Costumo ouvir as pessoas se referirem ao kernel do Linux como a imagem do kernel do Linux e não consigo encontrar respostas em nenhum mecanismo de pesquisa sobre o motivo pelo qual é chamado de imagem.

Quando penso em uma imagem , só consigo pensar em duas coisas: uma cópia de um disco ou uma foto. Com certeza não é uma imagem fotográfica, por que é referida como imagem?

Tony
fonte
10
Pode ser também copiar da região RAM (que é IMHO o caso com kernel)
Romeo Ninov

Respostas:

60

O processo de inicialização do Unix possui apenas recursos limitados de carregamento inteligente de um programa (realocação, carregamento de bibliotecas etc.). Portanto, o programa inicial era uma imagem exata, armazenada em disco, do que precisava ser carregado na memória e "chamado" para fazer o kernel funcionar.

Somente muito mais tarde coisas como (des-) compactação foram adicionadas e, embora agora haja carregadores de inicialização mais poderosos, o nome da imagem ficou bloqueado.

Anthon
fonte
11
Compressão e descompressão não tem nada a ver com algo que é chamado de "imagem". Ele ainda é carregado em um ponto específico na memória e chamado diretamente, como nos velhos tempos. O carregador de inicialização intermediário sempre existiu também. O próprio kernel ainda é uma imagem, carregada em um ponto específico da memória e chamada diretamente.
phyrfox
Exatamente, é por isso que o OP ficou confuso na IMO. Uma versão compactada de sua imagem não se pareceria mais com uma imagem (se estiver descompactada) e não seria chamada de imagem. Mas o kernel ainda é chamado de imagem.
Anthon
TBH não tenho certeza de que você está certo sobre a origem, mas sua explicação faz tanto sentido que eu tenho que votar. IMHO imagem compactada ainda é uma imagem. A maneira de recuperar a imagem é irrelevante. É uma imagem. Isso deixa claro o que você está falando e talvez seja a coisa mais importante.
akostadinov
Interessante. Portanto, se eu tiver um arquivo javascript que contenha o texto de um objeto contendo várias funções semelhantes ao kernel, carregue-o via XMLHttpRequest e avalie-o, no lado do NodeJS e use o servidor NodeJS para interagir com ele por meio de solicitações, posso chamar isso javascript arquivar uma imagem do kernel: O
Dmitry
31

A palavra imagem também possui uma definição "Um arquivo que contém todas as informações necessárias para produzir uma cópia de trabalho ao vivo".

Simon Richter
fonte
3
É um bom termo inequívoco, evitando a necessidade de se preocupar com termos como "binário", "executável", "programa", ... para se referir à imagem real no disco.
Thomas
3
Uma imagem é um instantâneo da memória.
Ikegami
2
Não totalmente - preciso de informações suficientes para (re) criar o estado completo do sistema. Se um despejo de memória é suficiente para isso, tenho conhecimento implícito (endereço de início, estado inicial do sistema); se não for suficiente, não me referiria ao despejo de memória como uma imagem .
22616 Simon Simonter
20

Isso não significa que uma "imagem" é apenas uma cópia 1: 1 de um disco. Assim como uma fotografia representa a realidade exatamente como era ao fotografar, uma imagem de um programa executável (ou kernel) representa o programa em um estado, onde ele pode ser carregado (ou descompactado) na memória do sistema exatamente como está e depois dado controle a ele. Esse programa pode então começar a ser executado a partir desse estado de maneira consistente. Portanto, a imagem do kernel do Linux é uma imagem (uma imagem do estado) do kernel do Linux que é capaz de executar por si só depois de dar o controle a ele.

Atualmente, o carregador de inicialização carrega essa imagem do sistema de arquivos do disco rígido (é necessário driver), substitui-se por ela e, portanto, dá o controle a ela. O processo de inicialização de um computador faz isso várias vezes até o sistema operacional finalmente ser executado. Isso é chamado de carregamento em cadeia . Ou, se um programa menor (cadeia) carrega um programa mais complexo, é chamado de inicialização .

O BIOS carrega o carregador de inicialização que também é uma imagem, por exemplo, chamada boot.imgno caso de grub. Isso boot.imgnão é um arquivo (se o grub estiver instalado); é o nome da parte que está no MBR (Master Boot Record). Se você despejar isso em um arquivo, seria uma imagem no formato de um arquivo não gravado bruto no disco, mas gravado em um arquivo. Essa também é uma representação (imagem) do estado mais antigo onde grubé possível carregar o restante. grubentão, tem seu próprio mecanismo de como carregar-se completamente carregando outras imagens. Isso é representado pelos diferentes estágios do grub. Depois disso, o carregador de inicialização carrega a imagem do kernel, substituindo-se pelo conteúdo extraído desse arquivo.

caos
fonte
7

História antiga. o termo imagem vem de um termo antigo da Digital Equipment Corporation para a saída do compilador-> vinculador. o arquivo é uma imagem criada pela interpretação do código e assim por diante através do vinculador para criar uma "Imagem" executável do seu design.

SkipBerne
fonte
11
Eu upvote se você adicionou um link de referência
Robau
referem-se a Digital Equipment Corporation do "Manual RSX-11M + Sistemas de Referência" DEC 1981. Desde então, propagadas através da indústria
SkipBerne
5

Em matemática, o kernel é a imagem inversa de um subconjunto da imagem de um mapa, onde o subconjunto é igual ao elemento de identidade no codomain. Estou certo de que esses nomes derivam de conceitos matemáticos, pois estão relacionados significativamente em vários campos da matemática. Considerando que o Unix foi derivado em um ambiente acadêmico, pode ser possível que o uso do kernel e da imagem dessas palavras seja o mesmo.

Se você tiver um conjunto que represente algum nível de informação sobre o sistema operacional "completo", se essa informação também formar um grupo, poderá definir o homomorfismo do grupo nesse conjunto ou mapear basicamente para outros conjuntos com tamanhos diferentes do conjunto original, desde que eles "respeitam" a estrutura do conjunto original que o transformou em um grupo. Você pode ver que pode ser a seu favor mapear o conjunto para um conjunto menor ou um subconjunto de algum conjunto em que o subconjunto é menor.

Imagem - A imagem de um homomorfismo de grupo e, em geral, funções e mapas, são apenas um subconjunto de algum conjunto, para quem os elementos realmente são mapeados. A função pode não ser mapeada para todos os elementos e esses elementos não seriam incluídos na imagem.

Kernel - basicamente apenas os elementos do conjunto original que são mapeados para a imagem, mas apenas são mapeados para o elemento de identidade na imagem. Basicamente, os elementos que são mapeados para 0 são semelhantes à imagem.

Se a imagem tiver um tamanho menor, então o conjunto original poderá ver vários itens devem ser mapeados para um único elemento. Assim, por exemplo, pode haver vários elementos do kernel que são mapeados para a imagem e já sabemos que todos eles precisam ser mapeados para 0.

Podemos ver que, se escolhermos o conjunto original como sequências finitas de binários ou 1s e 0s e o codomain (conjunto mapeado para) como também sequências de binários, podemos construir essas coisas se e somente se, uma estrutura de grupo adequada pode ser definido (um pouco mais profundo e não relacionado à pergunta).

Portanto, vemos com total certeza que "kernel" e "imagem" de um sistema operacional são completamente definidos e têm significado matemático. Independente de talvez outros usos dos termos.

marechal craft
fonte
Basicamente, o kernel pode ser uma versão "reduzida" do sistema operacional, ou parte do sistema operacional que é importante e pode ser "abstraído"; em seguida, desde que o mapa tenha homorfismo injetivo e seja conhecido, ele pode trabalhar a imagem inteira sem precisar carregar a imagem inteira. Parece que um método de compensação de dados é o "kernel" e a "imagem" do termo. Mas na verdade eles se originam de conceitos matemáticos bem conhecidos.
Marshal craft
3
Oi marechal. É melhor melhorar sua postagem editando-a em vez de adicionar comentários.
Anthony G - Justice para Monica
4
Eu acredito que o uso de computação do kernel vem da "parte central (geralmente comestível) de uma porca, especialmente depois que a casca dura foi removida " (veja o dicionário wikcionário ) - é a parte pequena e interna do sistema operacional; depois de remover todas as "camadas externas" (GUIs, shells de comando, drivers carregáveis), é a parte (aproximadamente) mínima necessária para fazer / deixar o hardware operar de alguma maneira útil.
TripeHound
Wow apenas wow. Especulação sem base. TripeHound acertou. marechal embarcação adivinhou.
Joshua
Rever a sua "quase certo" ty :)
Hobbs