Execução (computação) - Execution (computing)

A execução em engenharia de computador e software é o processo pelo qual um computador ou máquina virtual lê e age de acordo com as instruções de um programa de computador . Cada instrução de um programa é a descrição de uma ação particular que deve ser executada para que um problema específico seja resolvido. A execução envolve seguir repetidamente um ciclo de 'busca-decodificação-execução' para cada instrução. Como a máquina de execução segue as instruções, efeitos específicos são produzidos de acordo com a semântica dessas instruções.

Os programas para um computador podem ser executados em um processo em lote sem interação humana ou um usuário pode digitar comandos em uma sessão interativa de um intérprete . Neste caso, os "comandos" são simplesmente instruções do programa, cuja execução é encadeada.

O termo executar é usado quase como um sinônimo. Um significado relacionado de "executar" e "executar" refere-se à ação específica de um usuário iniciando (ou iniciando ou invocando ) um programa, como em "Execute o aplicativo".

Processo

Antes da execução, um programa deve primeiro ser escrito. Isso geralmente é feito no código-fonte , que é então compilado em tempo de compilação (e vinculado estaticamente em tempo de link ) para produzir um executável. Esse executável é então chamado, na maioria das vezes por um sistema operacional, que carrega o programa na memória ( tempo de carregamento ), possivelmente realiza vinculação dinâmica e, em seguida, começa a execução movendo o controle para o ponto de entrada do programa; todas essas etapas dependem da interface binária do aplicativo do sistema operacional. Nesse ponto, a execução começa e o programa entra em tempo de execução . O programa então é executado até o término, seja um encerramento normal ou uma falha .

Executável

O código executável , um arquivo executável ou um programa executável , às vezes simplesmente referido como um executável ou binário , é uma lista de instruções e dados para fazer com que um computador "execute as tarefas indicadas de acordo com instruções codificadas ", em oposição a um arquivo de dados que deve ser interpretado ( analisado ) por um programa para ser significativo.

A interpretação exata depende do uso. Tradicionalmente, entende-se por "instruções" as instruções em código de máquina para uma CPU física . Em alguns contextos, um arquivo contendo instruções de script (como bytecode ) também pode ser considerado executável.

Contexto de execução

O contexto em que a execução ocorre é crucial. Muito poucos programas são executados em uma máquina vazia . Os programas geralmente contêm suposições implícitas e explícitas sobre os recursos disponíveis no momento da execução. A maioria dos programas é executada com o suporte de um sistema operacional e bibliotecas de tempo de execução específicas para a linguagem de origem que fornecem serviços essenciais não fornecidos diretamente pelo próprio computador. Esse ambiente de suporte, por exemplo, geralmente desacopla um programa da manipulação direta dos periféricos do computador, fornecendo serviços abstratos mais gerais.

Sistema de tempo de execução

Um sistema de tempo de execução , também chamado de ambiente de tempo de execução , implementa principalmente partes de um modelo de execução . Isso não deve ser confundido com a fase do ciclo de vida do tempo de execução de um programa, durante a qual o sistema de tempo de execução está em operação. Ao tratar o sistema de tempo de execução como distinto do ambiente de tempo de execução (RTE), o primeiro pode ser definido como uma parte específica do software de aplicação (IDE) usado para programação , um pedaço de software que fornece ao programador um ambiente mais conveniente para executar programas durante sua produção ( teste e semelhantes), enquanto o segundo (RTE) seria a própria instância de um modelo de execução sendo aplicado ao programa desenvolvido, que é então executado no sistema de tempo de execução mencionado acima .

A maioria das linguagens de programação tem alguma forma de sistema de tempo de execução que fornece um ambiente no qual os programas são executados. Este ambiente pode abordar uma série de questões, incluindo o gerenciamento da memória do aplicativo , como o programa acessa variáveis , mecanismos para passar parâmetros entre procedimentos , interface com o sistema operacional e outros. O compilador faz suposições, dependendo do sistema de tempo de execução específico para gerar o código correto. Normalmente, o sistema de tempo de execução terá alguma responsabilidade por configurar e gerenciar a pilha e o heap , e pode incluir recursos como coleta de lixo , threads ou outros recursos dinâmicos integrados à linguagem.

Ciclo de instrução

O ciclo de instrução (também conhecido como ciclo de busca-decodificação-execução ou simplesmente ciclo de busca-execução ) é o ciclo que a unidade de processamento central (CPU) segue desde a inicialização até que o computador seja desligado para processar as instruções . É composto de três estágios principais: o estágio de busca, o estágio de decodificação e o estágio de execução.

Este é um diagrama simples que ilustra os estágios individuais do ciclo de busca-decodificação-execução.

Em CPUs mais simples, o ciclo de instrução é executado sequencialmente, cada instrução sendo processada antes do início da próxima. Na maioria das CPUs modernas, os ciclos de instrução são executados simultaneamente , e geralmente em paralelo , por meio de um pipeline de instrução : a próxima instrução começa a ser processada antes que a instrução anterior termine, o que é possível porque o ciclo é dividido em etapas separadas.

Intérprete

Um sistema que executa um programa é chamado de intérprete do programa. Em termos gerais, um intérprete executa diretamente um programa. Isso contrasta com um tradutor de idioma que converte um programa de um idioma para outro antes de ser executado.

Máquina virtual

Uma máquina virtual ( VM ) é a virtualização / emulação de um sistema de computador . As máquinas virtuais são baseadas em arquiteturas de computador e fornecem a funcionalidade de um computador físico. Suas implementações podem envolver hardware especializado, software ou uma combinação deles.

As máquinas virtuais diferem e são organizadas por suas funções, mostradas aqui:

  • As máquinas virtuais do sistema (também chamadas deVMs de virtualização completa ) fornecem um substituto para uma máquina real. Eles fornecem a funcionalidade necessária para executar sistemas operacionais inteiros. Um hipervisor usa execução nativa para compartilhar e gerenciar hardware, permitindo vários ambientes que estão isolados uns dos outros, mas existem na mesma máquina física. Os hipervisores modernos usam virtualização assistida por hardware, hardware específico da virtualização, principalmente das CPUs host.
  • As máquinas virtuais de processo são projetadas para executar programas de computador em um ambiente independente de plataforma.

Alguns emuladores de máquina virtual, como QEMU e emuladores de console de videogame , são projetados para também emular (ou "imitar virtualmente") diferentes arquiteturas de sistema, permitindo a execução de aplicativos de software e sistemas operacionais escritos para outra CPU ou arquitetura. A virtualização no nível do sistema operacional permite que os recursos de um computador sejam particionados por meio do kernel . Os termos não são universalmente intercambiáveis.

Referências

Veja também