Como um sistema operacional baseado em Linux manipula aplicativos? [fechadas]

2

Eu estava tentando aprender como executar um aplicativo sem um sistema operacional, e continuei encontrando essa informação: para executar um programa sem um sistema operacional, esse programa tem que fornecer todos os processos normalmente fornecidos por o sistema operacional. Isso me fez pensar: Quais são os processos que um sistema operacional como o Linux (como o Android) usa para executar aplicativos?

Em outras palavras, eu sei que os aplicativos são executados dentro do Os (no dip :), mas eu não entendo muito bem quais funções o Os fornece ou como eles interagem com o Kernel do Linux.

Conselhos sobre como desenvolver um programa sem um sistema operacional são úteis, mas estou principalmente procurando informações sobre como o sistema gerencia os aplicativos. Obrigado pela ajuda!

    
por Keychain1 10.02.2016 / 01:42

1 resposta

1

Todos os processos são uma linha de instruções fornecidas ao processador através da memória, que pode saltar para outras partes da memória e manipular partes da memória como dados. É assim que funciona um computador mais simples. (confira link e link para mais informações)

Com computadores modernos, você tem processadores que são executados em dois modos diferentes - modo real e modo de usuário . Quando o computador inicia, o primeiro processo pode reivindicar o modo real e, nele, ele vê o computador como realmente é - com todo o hardware que possui.

Esse processo é o kernel do sistema operacional. O que um kernel Unix faz é então iniciar um user process (o primeiro programa, geralmente chamado de init no Unices), que tem a ilusão de ter o computador sozinho .

É uma ilusão porque o kernel irá configurar o hardware para que de vez em quando, o processo seja forçadamente e (para ele) invisivelmente retirado do processador e o kernel seja liberado para fazer seu trabalho gerencial por um curto período. fração de tempo. A memória que o processo do usuário verá também não será memória real, mas sim memória falsa que o kernel mapeia para a memória real do hardware (com alguma ajuda de hardware, veja link para mais informações).

O processo do usuário não tem acesso direto ao hardware, mas o kernel Unix apresenta uma estrutura hierárquica para leitura e gravação (o sistema de arquivos ) que o kernel traduz para manipulação de hardware (mais simplesmente para leituras de disco e disco escreve, mas não apenas isso). O kernel também apresenta alguns outros serviços além do acesso ao sistema de arquivos. O processo do usuário pode solicitar todos esses serviços, contatando o kernel através de um protocolo simples especificado (chamado de chamada de sistema ).

Dois dos serviços mais fundamentais que podem ser solicitados são forking e execing . Bifurcação pede ao kernel para criar outro processo para a imagem do pai, e executar carrega uma nova imagem do sistema de arquivos. Desta forma, o processo inicial pode iniciar um monte de outros processos do usuário, que podem então iniciar outros processos e assim por diante.

Assim como o processo inicial, cada processo filho do usuário pode atuar como se estivesse no próprio computador, mas estará realmente executando apenas em um espaço de endereço memória virtual (que o kernel mapeia para endereços reais por trás das costas do processo), e o kernel irá forçá-lo a sair do processador de vez em quando, para que outros processos também possam ser executados no processador (isso é chamado multitarefa preemptiva e o kernel tem uma parte chamada scheduler que é responsável por exatamente como é feito).

Essencialmente, um kernel multiplexa os recursos de hardware (CPU, RAM, Hardrive, GPU, ...) de um computador entre os processos do usuário que foram iniciados nele, e o faz razoavelmente razoavelmente (cada processo obtém um timeslice para que todos os processos possam progredir) e eficientemente (se um processo estiver aguardando dados de uma origem lenta (disco, rede), o kernel Não desperdiçará tempo da CPU fazendo com que ela seja executada na CPU apenas para perguntar "já está?", quando a resposta logicamente não será por um bom tempo. Toda essa justiça padrão é ajustada com políticas inseridas por pessoas. O kernel também garante que os processos possam se comunicar uns com os outros através de vários meios oferecidos pelo kernel e que eles tenham uma visão razoável do estado global compartilhado.

    
por 10.02.2016 / 02:37