Ouvi falar de coisas como "C Runtime", "Visual C ++ 2008 Runtime", ".NET Common Language Runtime", etc.
- O que é exatamente " tempo de execução "?
- Do que isso é feito?
- Como ele interage com meu código? Ou talvez mais precisamente, como meu código é controlado por ele?
Ao codificar a linguagem assembly no Linux, eu poderia usar a instrução INT para fazer a chamada do sistema. Então, o tempo de execução nada mais é do que um monte de funções pré-fabricadas que agrupam a função de baixo nível em funções mais abstratas e de alto nível? Mas isso não parece mais a definição da biblioteca, não do tempo de execução?
O "tempo de execução" e a " biblioteca de tempo de execução " são duas coisas diferentes?
ADICIONAR 1
Hoje em dia, acho que talvez o Runtime tenha algo em comum com a chamada Máquina Virtual , como a JVM. Aqui está a citação que leva a esse pensamento:
Esse processo de compilação é suficientemente complexo para ser dividido em várias camadas de abstração, e geralmente envolve três tradutores: um compilador, uma implementação de máquina virtual e um montador. --- Os elementos dos sistemas de computação (introdução, o caminho até a terra do hardware)
ADICIONAR 2
O livro Expert C Programming: Deep C Secrets . O Capítulo 6 Estruturas de dados de tempo de execução é uma referência útil a esta pergunta.
fonte
runtime library
código de controle mais e algum estado (fornecido pelo sistema operacional).Respostas:
O tempo de execução descreve o software / instruções que são executadas enquanto o programa está sendo executado, especialmente as instruções que você não escreveu explicitamente, mas são necessárias para a execução correta do seu código.
Linguagens de baixo nível, como C, têm muito pequeno (se houver) tempo de execução. Linguagens mais complexas, como o Objective-C, que permite a passagem dinâmica de mensagens, têm um tempo de execução muito mais extenso.
Você está certo de que o código de tempo de execução é um código de biblioteca, mas o código de biblioteca é um termo mais geral, descrevendo o código produzido por qualquer biblioteca. O código de tempo de execução é especificamente o código necessário para implementar os recursos do próprio idioma.
fonte
Tempo de execução é um termo geral que se refere a qualquer biblioteca, estrutura ou plataforma na qual seu código é executado.
Os tempos de execução C e C ++ são coleções de funções.
O tempo de execução do .NET contém um interpretador de idioma intermediário , um coletor de lixo e muito mais.
fonte
cout
ouprintf
.Conforme Wikipedia: biblioteca de tempo de execução / sistema de tempo de execução .
Re: sua edição , "runtime" e "runtime library" são dois nomes diferentes para a mesma coisa.
fonte
O ambiente de tempo de execução ou execução é parte de uma implementação de linguagem que executa código e está presente no tempo de execução ; a parte em tempo de compilação da implementação é chamada de ambiente de tradução no padrão C.
Exemplos:
o Java Runtime consiste na máquina virtual e na biblioteca padrão
um tempo de execução C comum consiste no carregador (que faz parte do sistema operacional) e na biblioteca de tempo de execução, que implementa as partes da linguagem C que não são incorporadas ao executável pelo compilador; em ambientes hospedados, isso inclui a maioria das partes da biblioteca padrão
fonte
No meu entendimento, tempo de execução é exatamente o que isso significa - o momento em que o programa é executado. Você pode dizer que algo acontece em tempo de execução / tempo de execução ou em tempo de compilação.
Eu acho que o tempo de execução e a biblioteca de tempo de execução devem ser (se não forem) duas coisas separadas. "C runtime" não parece certo para mim. Eu chamo de "biblioteca de tempo de execução C".
Respostas para suas outras perguntas: Eu acho que o termo tempo de execução pode ser estendido para incluir também o ambiente e o contexto do programa quando ele é executado, portanto:
Esta resposta é, de certa forma, estender apenas minha opinião, não um fato ou definição.
fonte
Matt Ball respondeu corretamente. Eu diria sobre isso com exemplos.
Considere executar um programa compilado no compilador Turbo-Borland C / C ++ (versão 3.1 do ano 1991) e deixe-o executar em uma versão de 32 bits do Windows, como o Windows 98/2000 etc.
É um compilador de 16 bits. E você verá que todos os seus programas têm ponteiros de 16 bits. Por que é assim quando o sistema operacional é de 32 bits? Como seu compilador configurou o ambiente de execução de 16 bits e a versão de 32 bits do SO o suportou.
O que é comumente chamado de JRE (Java Runtime Environment) fornece a um programa Java todos os recursos que pode ser necessário para executar.
Na verdade, o ambiente de tempo de execução é um produto cerebral da ideia de Máquinas Virtuais. Uma máquina virtual implementa a interface bruta entre o hardware e o que um programa pode precisar executar. O ambiente de tempo de execução adota essas interfaces e as apresenta para o uso do programador. Um desenvolvedor de compilador precisaria dessas instalações para fornecer um ambiente de execução para seus programas.
fonte
Tempo de execução exatamente onde seu código entra em funcionamento e você pode ver muita coisa importante que seu código faz.
O tempo de execução tem a responsabilidade de alocar memória, liberar memória, usar o subsistema do sistema operacional como (Serviços de arquivo, Serviços de IO .. Serviços de rede etc.)
Seu código será chamado "TRABALHANDO EM TEORIA" até você praticamente executar o seu código. e o Runtime é um amigo que ajuda a conseguir isso.
fonte
um tempo de execução pode indicar a fase atual da vida do programa (tempo de execução / tempo de compilação / tempo de carregamento / tempo de link) ou pode significar uma biblioteca de tempo de execução, que forma as ações básicas de baixo nível que fazem interface com o ambiente de execução. ou pode significar um sistema de tempo de execução, que é o mesmo que um ambiente de execução.
no caso de programas C, o tempo de execução é o código que configura a pilha, a pilha etc., que é um requisito esperado pelo ambiente C. essencialmente configura o ambiente prometido pelo idioma. (poderia ter um componente da biblioteca de tempo de execução, crt0.lib ou algo parecido no caso de C)
fonte
Descobri que a seguinte estrutura de pastas cria um contexto muito esclarecedor para entender o que
runtime
é:Você pode ver que existe a ' fonte ', existe o ' SDK ' ou 'Software Development Kit' e, em seguida, existe o
Runtime
, por exemplo. o material que é executado - em tempo de execução. Seu conteúdo é como:O zip do win32 contém .exe -s e .dll -s.
Então, por exemplo. o tempo de execução C seriam os arquivos como este - bibliotecas de tempo de execução C, .so-s ou .dll -s - você executa em tempo de execução, tornados especiais por sua inclusão (ou pelo conteúdo ou finalidades) na definição de Linguagem C (em 'papel'), implementada pela sua implementação C de sua escolha. E então você obtém o tempo de execução dessa implementação, para usá-lo e desenvolver sobre ele.
Ou seja, com um pouco de polarização, os arquivos executáveis que os usuários do seu novo programa baseado em C precisarão. Como desenvolvedor de um programa baseado em C, você também precisa, mas também precisa do compilador C e dos cabeçalhos da biblioteca C; os usuários não precisam deles.
fonte
Tempo de execução significa basicamente quando o programa interage com o hardware e o sistema operacional de uma máquina. O C não possui seu próprio tempo de execução, mas, em vez disso, solicita que o tempo de execução de um sistema operacional (que é basicamente parte do RAM) se execute.
fonte
Se meu entendimento da leitura das respostas acima estiver correto, o tempo de execução é basicamente 'processos em segundo plano', como coleta de lixo, alocação de memória, basicamente quaisquer processos invocados indiretamente, pelas bibliotecas / estruturas em que seu código está escrito, e especificamente aqueles processos que ocorrem após a compilação, enquanto o aplicativo está em execução.
fonte
Estas seções da documentação do MSDN lidam com a maioria das suas perguntas: http://msdn.microsoft.com/en-us/library/8bs2ecf4(VS.71).aspx
Eu espero que isso ajude.
Obrigado Damian
fonte
O tempo de execução é a instância em que você não sabe sobre que tipo de objetos cria durante sua execução, a criação de objetos se baseia em determinadas condições ou em algum trabalho de computação. Por outro lado, o tempo de compilação é a instância em que os objetos necessários são definidos por você antes de suas execuções.
fonte
O tempo de execução é um pouco oposto ao tempo de design e tempo de compilação / tempo de link. Historicamente, ele vem de um ambiente lento de mainframe, onde o tempo da máquina era caro.
fonte