Escolar Documentos
Profissional Documentos
Cultura Documentos
Informática
Paulo Cardoso
Grupo de Sistemas Embebidos
Departamento de Eletrónica Industrial
Escola de Engenharia
Universidade do Minho
Sumário
l Componentes de um computador
l O modelo de von Neumann
l O ciclo do processador
l Linguagens de alto nível
l Sistemas computacionais
l Sistemas computacionais baseados em
microcontroladores
Organização interna do computador
Componentes de um computador
l Componentes de um computador
l Na sua essência, um computador é um sistema
composto por três partes
l Um microprocessador
l Capaz de interpretar e executar instruções/programas
l Uma memória
l Para armazenar dados e programas
l Entrada/saída
l Um mecanismo para a transferência de dados de e para o
mundo exterior
l Modelo de von Neumann
l Mais detalhes adiante …
Organização interna do computador
Componentes de um computador
l Palavras chave
l Microprocessador
l Circuito integrado complexo
l Microcomputador
l receber
l armazenar
l processar
l conjunto de instruções
l programado
Organização interna do computador
Componentes de um computador
l Componentes de um computador
l Microprocessador
l Unidade lógica/aritmética e unidade de controlo
l Entrada
l rato, teclado, ...
l Saída
l monitor, impressora, ...
l Memória
l Cache, RAM, disco, CD
l Onde são armazenadas as instruções e os dados
Organização interna do computador
Componentes de um computador
l Componentes de um computador
Fonte: https://en.wikipedia.org/wiki/
Von_Neumann_architecture
Organização interna do computador
O modelo de von Neumann
l Representação
Datapath
Organização interna do computador
O modelo de von Neumann
l Fetch
l A unidade de controlo obtém a próxima instrução
l Usando o program counter para determinar a sua
localização na memória
Organização interna do computador
O ciclo do processador
l Decode
l A unidade de controlo descodifica a instrução e
l Gera os sinais que controlam o funcionamento da ALU
Organização interna do computador
O ciclo do processador
l Decode
l A unidade de controlo descodifica a instrução e
l Seleciona os registos/memória a entrar na ALU
Nem em todas as
arquiteturas é feito
este acesso
(RISC vs CISC)
Organização interna do computador
O ciclo do processador
l Execute
l A ALU executa a instrução e
l Coloca os resultados nos registos ou memória
Nem em todas as
arquiteturas é feito
este acesso
(RISC vs CISC)
Organização interna do computador
ISA
O ciclo do processador
Ociclo
lO ciclododoprocessador
processador – outra perspectiva
Ociclo
lO ciclododoprocessador
processador – outra perspectiva
fetch decode execute
Processor Devices
Network
Control
000000 00100 00010 0001000000100000
Memory
Input
Datapath
Output
Ociclo
lO ciclododoprocessador
processador – outra perspectiva
Processor Devices
Network
Control
000000 00100 00010 0001000000100000
Memory
Input
Datapath
contents Reg #4 ADD contents Reg #2
results put in Reg #2 Output
Pré-process.
Código fonte Código
l Do código C em C em C
ao processo Compilador
Programa Programa
em assembly em assembly
Assembler Assembler
Programa Programa
objecto objecto
l Pré-processador
l Processador de macros
l Passa ao compilador um ficheiro de código C
l Sem qualquer diretiva ou macro
l Apenas código C
Organização interna do computador
Linguagens de alto nível
l Compilador
l Transforma o código alto nível em assembly
l Os optimizadores dos compiladores atuais
l Produzem código quase tão bom como o de um
expert em assembly
l Muitas vezes melhor, no caso de um grande programa
Organização interna do computador
Linguagens de alto nível
l Assembler
l Gera um ficheiro objeto (código máquina)
l Criado a partir do código fonte (assembly)
l Mas não é executável (chamado código relocatable)
l Constrói uma tabela de símbolos associando as etiquetas
(labels) aos respetivos endereços
l Resolve as referências a dados e funções definidos dentro do
ficheiro
l Não resolve as referências a dados e funções definidos fora do
ficheiro
l Definidos noutro ficheiro de código fonte ou em bibliotecas
Organização interna do computador
Linguagens de alto nível
l Assembler
l Geração do ficheiro objeto
l Cria um ficheiro objeto a partir do código assembly
l Código relocatable
l Cujos endereços só são atribuídos em link time
l Relocation é o processo de ligar referências simbólicas a definições
simbólicas (papel do linker)
l Contém uma lista de
l Nomes e endereços de símbolos visíveis externamente
l Nomes e referências de símbolos que necessitam de relocation
Organização interna do computador
Linguagens de alto nível
l Linker
l Liga (Link) os vários ficheiros objeto
l Junta o código objeto dos vários ficheiros (módulos)
l Utiliza as tabelas de símbolos para resolver as invocações
noutros módulos
l Para os símbolos que não ficarem resolvidos
l Procura nas bibliotecas fornecidas pelo compilador
Organização interna do computador
Linguagens de alto nível
Programas e sua execução
l Linker
linker
executable
Organização interna do computador
Linguagens de alto nível
Programas e sua execução
l Loader
l Corre dentro do S.O.
Loader
Carrega o programa para ser executador
l
memory
Organização interna do computador
Linguagens de alto nível
l Linguagem Java
l É traduzida para uma linguagem intermédia
(compilador)
l Byte code
l É executada numa máquina virtual
(interpretador)
l Java Virtual Machine (JVM)
l Traduz e executa cada instrução
Organização interna do computador
Linguagens de alto nível
l Linguagem Java
l Compilador
l Byte code
l É executada numa máquina virtual
(interpretador)
l Java Virtual Machine (JVM)
l Traduz e executa cada instrução
Fonte: https://www.baeldung.com/java-compiled-interpreted
Organização interna do computador
Linguagens de alto nível
l Linguagem Java
l Máquina virtual
Fonte: https://www.baeldung.com/java-compiled-interpreted
Organização interna do computador
Linguagens de alto nível
l Linguagem Python
l Compilação
l Máquina virtual
Fonte: https://www.gkindex.com/python-tutorial/python-virtual-machine.jsp
Organização interna do computador
Virtualização
l Virtualização
l Está na base da computação na cloud
l Versão de um recurso baseada em software
l E.g.: Computação; rede; armazenamento;
l Hipervisor
l Estão na base da virtualização
l Gestor de recursos de uma máquina virtual
l Tipo 1 (base metal)
l Server virtualization
l E.g.: VMWare ESXi; Microsoft Hyper-V; KVM (oper source)
l Tipo 2 (OS hosted)
l End user virtualization
l E.g. Oracle Virtualbox; VMWare Workstation
Organização interna do computador
Virtualização
l Máquina virtual
l Corre por cima do hipervisor
l Software based computer
l Process virtual machine
l Ou plataforma de execução
l Visa fornecer um ambiente de programação
independente de plataforma
l Abstraindo os detalhes do S.O. e hardware
l E.g. JVM, PVM, ART (Android Runtime)
l O ART ao contrário do JVM permite a compilação completa da
aplicação após instalada
Organização interna do computador
Virtualização
l A pilha de software
do Android
Organização interna do computador
Virtualização
l Contentor
l Baseados na tecnologia introduzida pelo Linux
l Namespaces; cgroups
l Agrupa uma aplicação e todas as suas
dependências
l E.g. Docker, Cloud Foundry (container runtimes)
Organização interna do computador
Virtualização
l Virtualização
A A A A
p p p p
p p p p
A A A A A A
App App App
p
p
p
p
p
p
p
p
p
p
p
p
A A
MV MV A A
Java
App
Python
App A A
Libs Libs Libs
p p p p p p
MV MV MV p p hipervisor p p JMV PMV p p Container runtime
hipervisor SO SO SO
hardware hardware hardware hardware
Organização interna do computador
Sistema computacional
l Deixando a virtualização
l Sistema computacional de uso genérico
l P.ex o nosso portátil
Organização interna do computador
Sistema computacional
l Sistema computacional
Organização interna do computador
Sistema computacional
l Processador
l Tem pelo menos 2 modos de operação
l User mode
l Modo não privilegiado de execução
l Limita o acesso a determinadas regiões de memória e recursos
l Impede o acesso a I/O
l Algumas instruções não podem ser executadas
l Privileged mode
l Modo privilegiado de execução
l Acede sem restrições a todos os recursos
l Processador
l Aplicações
l Executam em user mode
l Para evitar que as aplicações possam comprometer o sistema
l Sistema operativo (kernel)
l Executa em privileged mode
l Para poder gerir e multiplexar os recursos entre as aplicações
l Processador
l Tem pelo menos 2 modos de operação
l Quer isto dizer que se escrevêssemos um programa
em assembly
l Não podíamos usar todas as instruções aceites pelos
processador
l O nosso programa não corre em modo privilegiado
Organização interna do computador
Sistema computacional
l Processador
l MMU – Memory management unit
l Conceito relacionado mas independente
l Implementa o conceito de memória virtual
l Os endereços de memória não correspondem a endereços
físicos
l É necessário um “conversor” de endereços, a MMU
l Um programa vê o espaço de memória como se fosse todo seu
l O conceito de memória virtual impede que um
programa acede à memória do outro
l Cada programa ”vive” no seu “contentor” de memória
Organização interna do computador
Sistema computacional
l Sistema computacional
Organização interna do computador
Sistema computacional
l Sistemas operativo
l Os dois mecanismos apresentados são a base de
qualquer sistema operativo moderno
l Garantindo robustez ao sistema para que uma
aplicação mal comportada não comprometa todo o
sistema
l Um programa “normal” deixa de poder “mexer” directamente
com os recursos de hardware
l Definição
l Controla os recursos de hardware e a sua
multiplexagem pelas aplicações
l Fornece um interface às aplicações para utilização
desses recursos
Organização interna do computador
Sistema computacional
l Sistema operativo
l Então como fazem as aplicações para aceder aos
recursos (disco, memória, teclado, vídeo, etc.)?
l Invocam chamadas ao sistema operativo
l System calls
l Mas os meus programas usam tudo isso e nunca invoquei uma
system call…
As funções da biblioteca do C fazem-no por nós
Ex: printf(), fwrite(), malloc(), etc.
Nem todas as funções da biblioteca do C invocam system calls
Ex: sqrt(), pow(), strcmp(), strtok(), etc.
l Que “acedem” aos device drivers se necessário
Organização interna do computador
Sistema computacional
l Sistema operativo
l Por outro lado, todos os dias novos dispositivos
surgem no mercado
l Para se ligarem ao computador
l E.g. impressoras
l O S.O. não está preparado para comunicar estes
dispositivos
l Isto é feito através de device drivers
Organização interna do computador
Sistema computacional
l Sistema operativo
l Device drivers
Organização interna do computador
Sistema computacional
l Sistema computacional
Organização interna do computador
Sistema computacional microcontrolador
l Processos
l Aplicações em execução
l Usam diretamente o processador
l Para executar as instruções do programa
l Processarem os dados
l Interagindo com a memória do processo
l Interagem com o S.O. através de system calls
l Sempre que precisam de mais memória
l Aceder a recursos externos
l Disco, teclado vídeo, rede, porta série, etc...
l Comunicação entre processos
l ...
Organização interna do computador
Sistema computacional
l Processos
l Já vimos que os S.O. modernos colocam os
processos em “contentores”
l Estão confinados ao seu próprio espaço de
endereçamento
l De forma a não comprometerem o sistema, nem outros
processos
l Mas… e quando os processos querem comunicar
entre si?
l Terá de ser o S.O. a ajudar
Organização interna do computador
Sistema computacional
l Processos
l Comunicação entre processos
(Inter-process communication – IPC)
l Razões para processo querer comunicar com outro
l Partilha de dados
l Modularidade
l Desempenho
l Privilégios
l Conveniência
Organização interna do computador
Sistema computacional microcontrolador
l Sistema computacional
l Desktop vs microcontrolador
Organização interna do computador
Sistema computacional microcontrolador
l Anatomia de um programa em C
//declaracoes include
//Variaveis globais
//Funcoes auxiliares
//inicializacoes
while (1) {
//codigo do programa
}
}
Organização interna do computador
Sistema computacional microcontrolador
https://www.eng.auburn.edu/~nelsovp/courses/elec3040_3050/C%20programming%20for%20embedded%20system%20applications.pdf
Organização interna do computador
Sistema computacional microcontrolador