Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores...

41
Arquitectura de Arquitectura de Computadores e Computadores e Sistemas de Operação Sistemas de Operação Arquitectura de computadores CPU+Memória+Dispositivos de Entrada/Saída Sistema de Operação Pedro D. Medeiros ([email protected])

Transcript of Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores...

Page 1: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Arquitectura de Computadores Arquitectura de Computadores ee

Sistemas de OperaçãoSistemas de Operação

Arquitectura de computadores – CPU+Memória+Dispositivos de Entrada/Saída

Sistema de Operação

Pedro D. Medeiros ([email protected])

Page 2: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Grupo de Disciplinas de Arquitectura e Sistemas Grupo de Disciplinas de Arquitectura e Sistemas

de Computadoresde Computadores

ASC2

ASC 1

Redes deComputadores

Sistemas deOperação

SistemasDistribuídos

Cadeiras obrigatórias

Cadeiras opcionais: a partir do 7º semestre

Teoria daInformação

Sistemas deProcessmento

Paralelo e Distribuído

Engenharia dosSistemas de

ObjectosDistribuídos

Complementosde Redes de

Computadores

Desempenho deSistemas de

Computadores

3º Sem

4º Sem

5º Sem

6º Sem

8º Sem

Page 3: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Grupo de Arquitectura de Grupo de Arquitectura de Computadores, Sistemas de Computadores, Sistemas de

Operação e Redes de Operação e Redes de ComputadoresComputadores

Objectivos principais– Ensinar os alunos a serem programadores eficientes

e sofisticados, através da compreensão do que realmente se passa quando um programa está a ser executado

Page 4: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Passos até termos Passos até termos um programa em execuçãoum programa em execução

Ficheirocom o código fonte

Ficheirocom o código

objecto

Compilador

Bibliotecacom o código

Das bibliotecas dalinguagem

Ficheirocom o código

“assembly”

Compilador

“Assembler”

Ligador Ficheiroexecutável

Carregador

Ficheirocarregado em

memória

Page 5: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

O código fonte do programa O código fonte do programa hello.chello.c

#include <stdio.h>int main(){

printf(“hello,world\n”);}

O programa foi criado por um editor de texto e salvo num ficheiro hello.c. O ficheiro com código fonte é uma sequência de bits, organizados em bytes e que usam a codificação ASCII.

# i n c l u d e < s t d i o . h >35 105 110 99 108 117 100 101 32 60 115 116 100 105 111 46 104 62 104

...

Notar a existência de códigos para o espaço e a mudança de linha

Page 6: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Toda a informação no sistemaToda a informação no sistemaé um conjunto de bitsé um conjunto de bits

O que distingue cada conjunto é o contexto que define a forma como os bits são interpretados. O mesmo conjunto de bits pode ser– Um inteiro– Um real representado em vírgula flutuante– Uma sequência de caracteres– Um conjunto de instruções máquina

Page 7: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Pre-processor

(cpp)

hello.i Compiler(cc1)

hello.s Assembler(as)

hello.o Linker(ld)

hellohello.c

Sourceprogram

(text)

Modifiedsource

program(text)

Assemblyprogram

(text)

Relocatableobject

programs(binary)

Executableobject

program(binary)

printf.o

Os programas são transformados por outrosprogramas

prompt> gcc –o hello hello.c

Page 8: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Pre-processor

(cpp)

hello.i Compiler(cc1)

hello.s Assembler(as)

hello.o Linker(ld)

hellohello.c

Sourceprogram

(text)

Modifiedsource

program(text)

Assemblyprogram

(text)

Relocatableobject

programs(binary)

Executableobject

program(binary)

printf.o

-Fase de pré-processamento: o programa original é modificado de acordo com as directivas (#): exemplos: macros, inclusão de stdio.h-Fase de compilação: o compilador traduz o ficheiro hello.i para um ficheiro com mnemónicas em “assembly”-Fase de “assembly”: o “assembler” traduz o ficheiro hello.s para um ficheiro hello.o em que os seus bytes respresentam as instruções máquina correspondentes a cada mnemónica-Fase de ligação: o ligador inclui no ficheiro executável o código da função printf() e resolve as referências

Page 9: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

O processador lê e interpreta O processador lê e interpreta instruções armazenadas na memóriainstruções armazenadas na memória

Para executar o programa hello é preciso interagir com o interpretador de comandos (shell)

prompt> ./hello

hello,world

prompt> O interpretador de comandos executa o ciclo:

– Lê uma linha– Interpreta essa linha, pondo um programa a executar– Espera que esse programa acabe

Page 10: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

A execução do programa A execução do programa hellohello Os slides seguintes apresentam as várias fases da

vida do programa hello quando é executada num computador semelhante a um PC. O hardware inclui:– “bus” de interligação– Dispositivos de entrada/saída– Memória central (RAM)– Processador (CPU)

Obtem instruções da memória e executa-as Unidade aritmética e lógica (ALU) Registos

Page 11: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Mainmemory

I/O bridge

Bus interface

ALU

Register file

CPU

System bus Memory bus

Disk controller

Graphicsadapter

USBcontroller

Mouse Keyboard Display

Disk

I/O bus Expansion slots forother devices suchas network adapters

hello executable stored on disk

PC

Page 12: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Mainmemory

I/O bridge

Bus interface

ALU

Register fileCPU

System bus Memory bus

Disk controller

Graphicsadapter

USBcontroller

Mouse Keyboard Display

Disk

I/O bus Expansion slots forother devices suchas network adapters

PC

"hello"

Usertypes

"hello"

O interpretador de comandos lê os caracteres ASCII“./hello” cr do teclado

Page 13: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Mainmemory

I/O bridge

Bus interface

ALU

Register fileCPU

System bus Memory bus

Disk controller

Graphicsadapter

USBcontroller

Mouse Keyboard Display

Disk

I/O bus Expansion slots forother devices suchas network adapters

hello executable stored on disk

PC

hello code

"hello,world\n"

O ficheiro executável “hello” é carregado em memória central

Page 14: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Mainmemory

I/O bridge

Bus interface

ALU

Register file

CPU

System bus Memory bus

Disk controller

Graphicsadapter

USBcontroller

Mouse Keyboard Display

Disk

I/O bus Expansion slots forother devices suchas network adapters

hello executable stored on disk

PChello code

"hello,world\n"

"hello,world\n"

Execução do programa hello

Page 15: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Arquitectura de computadoresArquitectura de computadores Definição de arquitectura de computadores

– A visão do programador do hardware

Arquitectura de Von Neumann– Usada em quase todos os computadores existentes

– Computador constituído por 3 partes Processador ou Unidade central de Processamento (CPU) –

elemento activo; executa instruções Memória central – armazenamento de dados e instruções Dispositivos de entrada e saída

– Realizar entrada de dados

– Realizar a saída de dados

Page 16: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Arquitectura de Von NeumannArquitectura de Von Neumann

CPU

Memóriacentral

(programa +dados)Dispositivos

de saída

Dispositvosde entrada

Page 17: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Memória centralMemória central

CPU

Ordem de leitura

Ordem de escrita

Endereço

Dados

Page 18: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Funcionamento do CPUFuncionamento do CPU Extremamente Primitivo

– Não percebe instruções em língua natural nem numa linguagem de programação

– Não há nenhum comando para executar a construção while– A complexidade é sacrificada em favor da velocidade

Usa-se um tradutor para transformar um programa escrito numa linguagem de alto nível para a linguagem nativa da máquina– Esse tradutir chama-se compilador

– Um programa escrito numa linguagem de alto nível como Java, C++, C chama-se programa fonte

– A linguagem para a qual se traduz chama-se linguagem máquina

– A linguagem máquina é aquela que compreendida pelo hardware

Page 19: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Linguagem máquinaLinguagem máquina A linguagem máquina é a mais primitiva

– Tudo é representado por números– A nível hardware, os números são representados em binário– Os números representam instruções (código)– Os números representam dados– O Contexto decide se um número representa um dado ou uma

instrução Na prática, quase nunca se programa nessa linguage Usa-se uma linguagem, muito próxima da linguagem

máquina chamada Assembler– É simbólica por natureza (em oposição a numérica)– A cada número de instrução corresponde uma mnemónica– Ex., 12 é ADD– Às posições de memória também se podem associar nomes (às

vezes chamadas variáveis)

Page 20: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Características de uma arquitecturaCaracterísticas de uma arquitectura Memória

O processador (CPU Central Processing Unit) contém um conjunto de Registos (cada registo N flip-flops)

30

2010

00

8764 53210 9

IP: Instruction pointer

IR: Instruction Register

AX: Arithmetic Register/AcumuladorCF: Condition

Flag

Page 21: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Programa muito simplesPrograma muito simples Mostrado em “assembler” e não em linguagem máquina

copy ax, x

add ax, y

copy z, ax– Implementa

z = x + y; Não esquecer, que na realidade TUDO SÃO NÚMEROS

– Poderia ser:20 101

12 102

21 103

– Se copy-into = 20, add = 12, e copy-out = 21 e

x armazenado em 101, y em 102, e z em 103

Page 22: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Ciclo “Obter-Executar” Fetch ExecuteCiclo “Obter-Executar” Fetch Execute O relógio conduz sistematicamente o CPU através dos dois

seguintes ciclos: FETCH (OBTENÇÃO)

– Obter instrução da memória O registo IP (também chamado program counter ou PC) diz de onde se

obtém

– Incrementa o IP (para apontar para a próxima instrução)

EXECUTE (EXECUTAR)– Descodificar a instrução

Descobrir o que é pretendido (add?, copy? …) Extrair um endereço de memória da instrução Se necessário, obter informação da memória

– Executar a instrução Por exemplo, somar a informação obtida ao Acumulador (AX)

Page 23: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

O simulador P88O simulador P88 Software de apoio ao livro “Great Ideas in

Computer Science with Java”, de A.W. Biermann e D. Ramm, MIT Press 2001, ISBN 0-262-02497-7

Programa escrito em Java que simula um CPU que é uma versão simplificadíssima do Pentium

Código fonte do simulador e programas exemplo acessíveis na página da cadeira e também em http://www.cs.duke.edu/~dept/Great_Ideas_with_Java/software.html

Para usar:– Colocar todos os ficheiros numa directoria de trabalho– Compilar os ficheiros com extensão java– Usando um “browser” abrir o ficheiro P88.html

Page 24: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Algumas instruçõesAlgumas instruções copy e add

– Movimento da direita para a esquerda– Muitas instruções envolvem o acumulador (AX)

in e out– Como write/cout/printf and read/cin/scanf em Pascal/C++/C– in transfere do teclado para AX– out transfere de AX para o ecrã

Exemplo -- programa para executar:{ readln(x); readln(y); z = (x + y); writeln(z);}

Page 25: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

sum.assum.as0 in ax ; readln(x);1 copy x, ax 2 in ax ; readln(y)3 copy y, ax 4 copy ax, x ; z = x + y5 add ax, y6 copy z, ax 7 copy ax, z ; writeln( z );8 out ax

x 0 y 0 z 0

Exemplo de uma entrada e saída de dados: <23 <16>39

Page 26: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Mais instruçõesMais instruções Necessárias para suportar as construções if e while Usa a instrução cmp

– Compara valores em AX e numa posição de memória– Posiciona a “carry flag”

CF = B (below) : AX menor que o conteúdo da posição) ou CF = NB (not below): (AX maior ou igual ao conteúdo da posição de

memória)

Usa a instrução jump para tirar partido da informação na “carry flag”– Instrução jnb endereço: salta para o endereço se CF contém

NB– Instrução jb endereço salta para o endereço se CF contém B– jmp salta sempre, independentemente do valor de CF

Pode-se agora apresentar o código “assembler” equivalente ao if

Page 27: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

largest.aslargest.asPrograma para escrever o maior de dois números lidos:

in ax ; readln( r )copy r, axin ax ; readln( s )copy s, ax copy ax, s cmp ax, r ; if( s < r )jnb there ; sim, saltar para therecopy ax, r out ax ; writeln( r );jmp quit

there copy ax, s out ax ; writeln( s );

quit halt r 0 s 0 Exemplo de entradas/saídas: <33 <44 >44

Page 28: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Programar em “Assembler”Programar em “Assembler”

Escrever programas em “assembler”– Não é demasiado difícil e adquire-se prática rapidamente

– Em tempos fez-se por razões de eficiência O programador conseguia fazer melhor do que o compilador … Mas os compiladores cada vez são melhores

– Contudo, a experiência mostra que um programador produz em média poucas dezenas de linhas de código por dia Este número é independente da linguagem! É melhor produzir poucas linhas de uma linguagem de alto nível

Page 29: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Computador moderno Computador moderno comparado com o P88comparado com o P88

Tamanho da memória– PC’s agora chegam a ter 1 Gbyte de memória central

– As instruções máquina disponíveis são em muito maior número

Muitos registos– É habitual ter-se 32 acumuladores

– Registos e hardware dedicados a operações em vírgula flutuante

Hierarquia de memória1. Registos

2. Memória Cache

3. Memória central (RAM)

4. Disco (memória virtual)

5. Armazenamento “Offline” (bandas, CDROMs, DVDs, etc.)

Page 30: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Papel do sistema de operação (SO)Papel do sistema de operação (SO)

Ficheiro ExecutávelCarregado em Memória

Hardware (Processador, Memória, Discos, ...)

Sistema de Operação(sempre carregado em

Memória)

Instruções máquina executadas directamentepelo CPU

Instruções interpretadaspelo Sistema de Operação(por exemplo, escrita no écrã,leitura do disco ...)

Page 31: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Programas de aplicação

Processador Memória central Dispositivos de I/O

Sistema de OperaçãoSoftware

Hardware

O sistema de operação faz a gestão do hardware• quando o programa hello correu ele não fez acesso directo aos dispositivos de entrada/saída• O sistema de operação (SO) interpõe-se entre os programas e o hardware•Funções do SO

•Proteger o hardware de “maus usos”•Criar uma forma mais fácil e unificada de manipular o hardware que pode ser de diferentes tipos

Page 32: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Funções do SOFunções do SO

Gestão do CPU Gestão da memória central Suporte do sistema de ficheiros Suporte das operações de E/S Suporte dos protocolos de rede Protecção e segurança

Page 33: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Gestão do CPU – noção de Gestão do CPU – noção de processoprocesso

Um processo é um programa em execução. Um processo necessita de recursos para efectuar a computação que lhe está associada

- tempo de CPU

- memória central

- ficheiros, periféricos e dispositivos de

comunicação com outros processos Em termos de gestão de processos, o SO tem de:

– Criar e destruir processos.– Suspender e reactivar processos.

Page 34: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Gestão de memóriaGestão de memória A memória central é partihada pelos processos,

pelo SO e pelos periféricos O SO é responsável por:

– Manter informação sobre que partes da memória estão livres e quais estão ocupadas e por quem.

– Atribuir e desafectar memória de acordo com as necessidades dos processos.

Page 35: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Gestão de ficheirosGestão de ficheiros Um ficheiro é um conjunto de informação

armazenado no disco. Pode conter dados ou programas

O SO é responsável por:– Criar e destruir ficheiros.– Criar e destruir directorias.– Suportar primitivas para manipular ficheiros e

directorias.– Fazer a correspondência (Mapping) dos ficheiros e

directorias em blocos de disco.

Page 36: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Suporte das operações de E/SSuporte das operações de E/S Os programas do utilizador não podem executar

directamente acções sobre os periféricos O suporte das operações de E/S é feito por uma

parte do SO que é composto por:– Parte independente dos periféricos - conjunto de

serviços comuns Relacionamento com outros componentes do sistema Optimização do desempenho (por exemplo caches)

– Parte dependente de cada periférico - manipulação do controlador hardware, interrupções … “device driver” – gestor de periféricos

Page 37: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

Suporte de redeSuporte de rede

O hardware inclui dispositivos de comunicação com outros computadores (ex: Controladores de Rede Ethernet).

A troca de informação entre máquinas exige um protocolo.

Se o SO suportar esses protocolos podem ser usados recursos residentes noutras máquinas

Page 38: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

ProtecçãoProtecção

Protecção tem a ver com mecanismos para controlar o acesso aos recursos do sistema por processos ou utilizadores

O mecanismo de protecção deve: – Distinguir entre uso autorizado e não autorizado.

– Especificar as operações permitidas.

– Fornecer meios para garantir o cumprimento das regras.

Page 39: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

O que é o sistema de operação ?O que é o sistema de operação ? Conjunto de código permanentemente carregado na

memória central (RAM) – também chamado núcleo ou “kernel”

A sua acção é complementada por– Programas de sistema: interpretador de comandos,

carregadores, ligadores, ... – Processos de sistema

O SO é carregado na RAM quando há:– Um “power up” ou um “reset” hardware

Page 40: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

B o o t

M em o ry

B o o t

O p era tin g sy stem

Arranque do SOArranque do SO

O p era tin g sy stem

M em o ry

B o o t

O p era tin g sy stem

O programa de “boot” lê o resto do sistema para memória

O “bootstrap loader em ROM” lê o programa de “boot” para memória

Page 41: Arquitectura de Computadores e Sistemas de Operação l Arquitectura de computadores –CPU+Memória+Dispositivos de Entrada/Saída l Sistema de Operação Pedro.

InicializaçãoInicialização Inicialização do hardware Inicialização das estruturas de dados que

representam os vários recursos de sistema e que suportam os algoritmos de gestão desses recursos.

Criação dos primeiros processos:

- processos auxiliares de sistema (rede,

sistema de ficheiros, …)

- interpretador de comandos Aguardar