Visão geral da arquitetura


Programa em pseudo-linguagem para somar dois numeros:
-Coloca um número em uma variável
-Coloca outro número em outra variável
-Coloca soma dos números em outra variável
Arquivo texto com programa fonte soma.c:

#include <stdio.h>
int main ()
{
int x;
int y;
int t;

x=5;
y=4;
t=x+y;
printf("Soma=%d\n");
exit(0);
}

Máquinas somente entendem bits, então programa tem que ser traduzido para bits. Processo de tradução:

  1. Pré-processador transforma em arquivo texto soma.i para incluir arquivos gerando um outro arquivo C
  2. Compilador traduz o arquivo texto soma.i para arquivo texto soma.s escrito em assembler. Compiladores Fortran e C geram arquivos na mesma linguagem assembler
    .LC0:
            .string "Soma=%d\n"
    .text
            .align 4
    .globl main
            .type    main,@function
    main:
    	pushl	%ebp
    	movl	%esp, %ebp
    	subl	$24, %esp
    	movl	$5, -4(%ebp)
    	movl	$4, -8(%ebp)
    	movl	-8(%ebp), %eax
    	addl	-4(%ebp), %eax
    	movl	%eax, -12(%ebp)
    	subl	$12, %esp
            pushl   $.LC0
            call    printf
            addl    $16, %esp
            subl    $12, %esp
    	pushl	$0
    	call	exit
    
  3. O montador (assembler) traduz o programa soma.s em um arquivo objeto (binário) soma.o com informações de relocação
  4. O ligador liga programa com bibliotecas externas e outros módulos para gerar o arquivo executável que pode ser carregado na memória e executado
    000001011000110111101110101010101
    001011011000110111101110101011111
    111011011000110111101110101011111
    .
    .
    .
    111111111000110111101110101011111
    
Exemplo de comando de compilação:
unix> gcc -o soma soma.c

Organização de hardware do sistema

O sistema é composto de UCP, Memória e dispositivos de entrada e saída interconectados por barramentos.

Atividade da UCP:

  1. Lê instrução na memória indicada pelo PC
  2. Interpreta os bits da instrução
  3. Executa a instrução
  4. Atualiza o conteúdo de PC

Operações que podem ser executadas: load, store, atualiza (operação entre 2 registradores e resultado em um), lê dados de E/S, escreve dados para E/S, pula para alguma instrução.

Como o programa é executado ?

Comando para execução:

unix> ./soma
unix>

O sistema operacional espera o usuário digitar alguma coisa. Os caracteres vão do teclado para um registrador e com a tecla ENTER, o comando é finalizado.

O arquivo executável soma é copiado do disco para a memória e o processador inicia a execução.

Processador consegue ler dados muito mais rapidamente que a memória consegue fornecer. Utilização de memória cache implementada com tecnologia SRAM (Static Random Access Memory)