O que há em um sistema operacional diferente do kernel

39

Pelo que entendi, o kernel faz toda a interação com o hardware e gerencia a memória, os dispositivos de E / S, etc. Assim, o kernel está fazendo tudo, mas é apenas uma parte do sistema operacional. Então, o que mais há em um sistema operacional? Apenas os aplicativos que vêm junto com ele? Por exemplo, o que o Ubuntu tem além de um kernel? O Gnome Desktop e alguns outros aplicativos?

    
por AnkurVj 29.08.2011 / 19:18

2 respostas

48

A casca, claro.

A metáfora original que nos deu a palavra "kernel" para isso em primeiro lugar é muitas vezes esquecida. A metáfora é que um sistema operacional é uma semente ou uma noz. O "kernel" da semente é o núcleo do sistema operacional, fornecendo serviços de sistema operacional para programas de aplicativos, que é cercado pelo "shell" da semente, que é o que os usuários vêem de fora.

Algumas pessoas querem amarrar o "kernel" (e, na verdade, "shell") a ser mais específico do que isso. Mas, na verdade, há muita variação nos sistemas operacionais. Não menos importante, essas variações são o que constitui um "shell" (que pode variar de sh do Solaris ao Interpretador de Comando de Console do Netware ao Workplace Shell do OS / 2 e ao Explorador do Windows NT), mas também há muita variação de um sistema operacional para outro no que é, e não é, uma parte de um "kernel" (que pode ou não incluir E / S de disco, por exemplo). É melhor lembrar que esses termos são metáforas .

Existem outras terminologias. Na terminologia de mainframe da IBM, o "kernel" na metáfora seed / nut é chamado de programa de controle . Outros nomes incluem o supervisor, o monitor, o núcleo, e o executivo. O núcleo é outra metáfora biológica razoavelmente óbvia. É interessante que também seja outro nome. Harvey M. Deitel, em seus Sistemas Operacionais , chama o programa de controle de núcleo e diz

The nucleus normally represents a small portion of the code of what is commonly thought to be the entire operating system [...]

A palavra "núcleo" vem do latim núcleo , e significa o kernel de uma noz (c.f. em latim nux , que significa "noz"). Então, até mesmo chamar o programa de controle de "o núcleo" está, de fato, fazendo essa mesma analogia do sistema operacional como uma porca. É uma analogia que é usada para mais do que apenas sistemas operacionais. Se você estiver familiarizado com a química, por exemplo, você saberá que um núcleo atômico está cercado por elétrons em cascas .

O que a pessoa sob pseudônimo new123456 escreve abaixo exemplifica os erros resultantes do esquecimento das origens dessas metáforas na medida em que se confunde a parte com o todo e confunde o kernel com todo o sistema operacional. Ser um programa "userland" não torna o shell menos do lado de fora do sistema operacional, nem o menor que inclui o kernel. Além disso, longe de ser uma idéia somente DOS que não se aplica ao Unix além da versão 7, esta idéia é difundida e atual no mundo Unix.

(É irônico que new123456 confunda isso com um DOSismo. A metáfora kernel / shell era bastante estranha ao DOS em seus primeiros anos, o que favoreceu processador de comandos e similares, da CP / M Como o CP / M antes dele, o MS-DOS era dividido em sistema operacional de disco básico (BDOS), sistema básico de entrada e saída (BIOS - não o firmware do sistema , nota), o processador de comandos , e os utilitários de manutenção .O código foi realmente dividido em arquivos desta forma.Esse é outro exemplo, de fato, de como o kernel / shell metáfora realmente não cobre ou combina totalmente com as divisões atuais em muitos sistemas operacionais.

new123456 está esquecendo o que a Deitel escreveu sobre o núcleo sendo parte do sistema operacional geral. Um sistema operacional é ambos kernel e shell. Isto é, afinal de contas, a metáfora. A Deitel também não está sozinha. Há resmas de livros Unix explicando a metáfora Unix-as-a-nut, a partir dos anos 80. Eu recomendo o Teachers Yourself FreeBSD de Urban e Tiemann em 24 Horas (SAMS, ISBN 9780672324246), pela simples razão de que na página 54 há um diagrama que ilustra a metáfora do sistema operacional como semente, e - surpreendentemente - é um dos poucos livros a fazer isso.

O nome "núcleo" é provavelmente o nome mais antigo; Certamente anterior ao Unix, o que favorece a terminologia kernel / shell que hoje - provavelmente em grande parte graças ao Unix - é a mais prevalente. Aqui está o que está no livro de 1974 de Alan C. Shaw O design lógico dos sistemas operacionais (Prentice-Hall, ISBN 9780135401125) por exemplo:

That part of the system which permanently resides in main storage has historically been called the nucleus. The nucleus will usually consist of a minimal set of primitives and processes for the management of processes, resources, and input-output.
Shaw tem um diagrama também. ☺     
por 29.08.2011 / 20:32
45

Outras partes do sistema operacional incluem os drivers que interagem com o kernel, existem várias camadas de programas auxiliares que lidam com a interface do usuário, a rede e outras partes centrais do sistema operacional que ficam entre o kernel e o aplicativo real.

Para dar um exemplo, mostrei a estrutura do OS X , como você pode ver na parte superior O Kernel (azul claro) encontra-se em várias camadas da funcionalidade "core", ferramentas de sistema, serviços e APIs (Application Programming Interface) antes mesmo de chegar à GUI, com a qual você trabalha normalmente nas próprias aplicações.

Amaioriadossistemasoperacionaistemumaestruturasemelhante,masháumamploescopodediferençasemrelaçãoaquantorealmentefazpartedokernel.VejaoartigodaWikipediasobre Microkernels para uma comparação.

EDIT - Para responder seu comentário (meu comentário ficou um pouco longo)

Você poderia inicializar apenas um kernel Linux, mas você não seria capaz de realmente conseguir muito, são todos aqueles aplicativos auxiliares que fornecem toda a interface que você vê e usa.

Uma vez que o kernel é inicializado (e inicializado o hardware) ele tentará entregar para outras partes do Sistema Operacional GNU / Linux que fornecem a funcionalidade para iniciar serviços (como UDEV que preenche /dev com interfaces de dispositivos brutos para programas para usar coisas como discos rígidos e portas seriais e assim por diante) e programas para configurar a rede ( dhcpcd ) e APIs como X.org para que as aplicações possam mostrar janelas e ícones através de um Gerenciador de Janelas como o GNOME ou KDE .

Mas sim, você poderia simplesmente inicializar o kernel em si, ele apenas ficaria lá com um "Eu inicializei, e agora?" pronto.

    
por 29.08.2011 / 19:26