Ir ao conteúdo
  • Cadastre-se

O que seria uma máquina multinível?


Ir à solução Resolvido por F4b10,

Posts recomendados

Basicamente uma maquina que suporte vários níveis de programação e interação com o hardware, e sendo que um programador de cada nível não precisa conhecer os niveis inferiores 

Tipo um PC, no nível mais baixo você tem o hardware propriamente dito, com os circuitos eletrônicos do CPU e memoria, acima deste você tem o nível de microcódigo, as CPUs atuais suportam instruções x86, mas essas instruções são quebradas em micro instruções por um decodificador dentro do CPU, essas microinstrumentos são diretamente executadas pelas unidades de execução dentro do processador, e finalmente o conjunto de micro instruções é especifico pra uma família de chips, tipo os i5 skylake tem micro instruções diferente dos i5 kabylake....

 

Acima deste nível tem a linguagem de maquina x86, e acima deste o assembly, logo acima do nivel do assembly esta o sistema operacional e suas APIs, e logo depois as linguagens de programação de alto nível compiladas, e depois as linguagens de alto nível interpretadas, e depois o JAVA e suas crias.

 

A cada nível você tem do ponto de vista do usuário/programador uma "abstração" com se fosse uma maquina virtual totalmente independente, tipo o programador java não precisa sequer saber qual sistema operacional vai T̶r̶a̶v̶a̶r̶  rodar seu programa, enquanto o programador C já tem que se preocupar com o sistema operacional, particularidades do compilador, quantidade de memoria, o programador assembly ja tem que ter um conhecimento básico de arquiteturas de processadores, endereçamento de memoria, o engenheiro que escreve o microcódigo geralmente é o mesmo que projetou o processador, ou no minimo um engenheiro desenvolvedor de firmware UEFI. quanto mais você "desce o nível" mais complicado e mais especifico fica o código do programa escrito, e mais possibilidade de fazer m...

Link para o comentário
Compartilhar em outros sites

Qual seria a parte onde ele cita da existência de 2 tipos de maquinas multiniveis? pela imagem acima é basicamente o exemplo que eu citei antes do PC, porém de forma genérica afim de se aplicar a diversas arquiteturas de computadores. o importante na imagem é que se enfatiza a abstração, cada nível de programação não precisa conhecer os níveis mais baixos, o que se mistura um pouco com o conceito de virtualização, onde uma maquina física aloca recursos e simula um computador virtual que ira rodar um sistema ou programa hospedeiro, e o hospedeiro "pensa" que tem um computador só para si.

 

 

Nesse caso o nivel 0 seria o hardware e as suas respectivas instruções de maquina que são armazenadas dentro do chip, normalmente um programador não desce abaixo desse nível e podemos "supor" que uma instrução de maquina "mov" ou "Add" sera executada diretamente pelos registradores ou pela unidade logica e aritimética dentro do processador.

 

No nivel 1 tem o as linguagens compiladas como o C e suas variantes, cujo código é compilado pra assembly e depois montado nos níveis inferiores. mas de forma genérica qualquer linguagem que seja compilada ou interpretada diretamente em linguagem de maquina entraria nesse nível.

 

No nivel 2 você teria linguagens interpretadas que não geram código de maquina direto mas um intermediário, como o JAVA que gera o byte code, esse byte code sera compilado em tempo de execução por uma JVM - java virtual machine, um programa escrito em C que lê o bytecode e gera código assembly e depois monta tudo e executa... 

 

Veja que cada nível pode ser tratado como se fosse mesmo uma maquina virtual independente

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

 

Link para o comentário
Compartilhar em outros sites

deixa eu ver se entendi, então , cada nível seria uma arquitetura de computador(processador) diferente ? logo emularia um pc diferente do meu, dentro do meu próprio pc ? 

Citação

Qual seria a parte onde ele cita da existência de 2 tipos de maquinas multiniveis? pela imagem acima é basicamente o exemplo que eu citei antes do PC, porém de forma genérica afim de se aplicar a diversas arquiteturas de computadores. o importante na imagem é que se enfatiza a abstração, cada nível de programação não precisa conhecer os níveis mais baixos, o que se mistura um pouco com o conceito de virtualização, onde uma maquina física aloca recursos e simula um computador virtual que ira rodar um sistema ou programa hospedeiro, e o hospedeiro "pensa" que tem um computador só para si.

 

  

 

 

 

 

adicionado 10 minutos depois

uma pergunta, se no nível 2 eu tenho um processador i5 , e no nível 1 eu tenho o processador i3, o do meu nível 0 onde fica meu hardware é de fato um pentium dual core, eu criando um programa no nível 2 com a linguagem de maquina L2 quem iria interpretar o programa seria o nível abaixo do 2 , logo o nível 1 com linguagem L1, mas no fim quem executaria o programa  seria o pc de nível 0?

 

não consegui ainda entender a utilidade de fato da maquina multinível. 

adicionado 17 minutos depois

@F4b10 A pagina anterior aquela mandada

SharedScreenshot1.jpg

Link para o comentário
Compartilhar em outros sites

  • Solução

Todo esse conceito de maquinas multiníveis é relacionado ao software, e do ponto de vista das linguagens de programação nos níveis mais altos o processador que vai rodar de fato o código é irrelevante, pois elas não codificam programas pra ele e sim pra rodar em seu respectivo compilador/interpretador.

 

Os níveis nesse caso são o nível de abstração da linguagem, um programa nível 0 escrito com codigo L 0 seria escrito direto em hexadecimal ou binário e poderia ser entendido diretamente pelo processador hipotético, porém o programador/engenheiro infeliz que fosse programar esse troço teria que "pensar como uma maquina" e a programação seria tarefa ingrata, lenta e sujeita a erros, por ter que lidar diretamente com números binários, endereçamento de memoria e E/S, por outro lado o programador não teria a pausa do cafe enquanto o programa compila.

 

No nível 1 você tem o assembly, onde os códigos de instrução binários são trocados por palavras (mnemônicas), mais fáceis de serem entendidas por humanos, mas o programa precisa passar por um montador que vai converter o programa texto em código de maquina, novamente nosso infeliz programador precisara conhecer a fundo como a maquina que ele vai programar trabalha, ou seja "pensar como maquina". por exemplo, pra fazer uma simples soma ele teria que se preocupar com especificar o endereço físico na memoria onde os dados a serrem somados estão e depois usar varias instruções pra copiar esses dados pros registradores do CPU e só então executar a instrução de somar. e o tempo pra montar o programa seria muito curto pra um cafe.

 

No nível 2 e superiores as coisas começam a ficar mais fáceis pro nosso programador, ele só precisa se preocupar com a logica da linguagem na qual esta programando, tipo o programador C só tem que conhecer logica de programação, matemática e a sintaxe dos programas em C, no exemplo anterior, pra somar 2 números o nosso programador trocaria os endereços hexadecimais e registradores do CPU por variáveis de nome fácil tipo "num1, num2" e caberia ao compilador converter o código C em código assembly e gerar o programa executável com código de maquina, uma tarefa bem mais fácil e ainda garante a pauda do cafe enquanto o compilador compila e gera o programa executável.

 

Essas linguagens de alto nivel podem ser interpretadas ou compiladas a saber:

 

A função básica do compilador/tradutor é basicamente ler um texto e traduzir as partes onde aparecem palavras e frases reservadas de uma determinada linguagem por trechos de código assembly próprios pra arquitetura que vai rodar o programa

 

O interpretador Faz a mesma coisa, mas converte diretamente o código linha a linha em código de maquina e já o executa diretamente sem gerar um programa executável, nesse caso novamente nosso programador fica sem pausa pro cafe.

Link para o comentário
Compartilhar em outros sites

É essa a ideia, facilitar cada vez mais o trabalho do programador ate que ele nem seja mais necessário e as maquinas consigam entender linguagem humana natural.

Apesar da perda de performance dos programas, você consegue escrever programas complexos mais rápido e focar mais na resolução dos problemas sem ter que se preocupar com particularidades da maquina que vai rodar o programa.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!