A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Arquitectura de Computadores e Sistemas de Operação

Apresentações semelhantes


Apresentação em tema: "Arquitectura de Computadores e Sistemas de Operação"— Transcrição da apresentação:

1 Arquitectura de Computadores e Sistemas de Operação
CPU+Memória+Dispositivos de Entrada/Saída Sistema de Operação Pedro D. Medeiros

2 Grupo de Disciplinas de Arquitectura e Sistemas de Computadores
Cadeiras obrigatórias ASC 1 3º Sem Teoria da Informação Sistemas de Processmento Paralelo e Distribuído ASC2 4º Sem Engenharia dos Sistemas de Objectos Distribuídos Complementos de Redes de Computadores Redes de Computadores 5º Sem Sistemas de Operação Desempenho de Sistemas de Computadores 6º Sem Sistemas Distribuídos 8º Sem Cadeiras opcionais: a partir do 7º semestre

3 Grupo de Arquitectura de Computadores, Sistemas de Operação e Redes de Computadores
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

4 Passos até termos um programa em execução
Ficheiro com o código fonte Compilador Ficheiro com o código “assembly” Compilador Ficheiro carregado em memória Ficheiro com o código objecto “Assembler” Carregador Biblioteca com o código Das bibliotecas da linguagem Ficheiro executável Ligador

5 O código fonte do programa hello.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 > ... Notar a existência de códigos para o espaço e a mudança de linha

6 Toda a informação no sistema é 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

7 Os programas são transformados por outros programas
prompt> gcc –o hello hello.c printf.o Pre- processor (cpp) Compiler (cc1) Assembler (as) Linker (ld) hello.c hello.i hello.s hello.o hello Source program (text) Modified source program (text) Assembly program (text) Relocatable object programs (binary) Executable object program (binary)

8 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 printf.o Pre- processor (cpp) Compiler (cc1) Assembler (as) Linker (ld) hello.c hello.i hello.s hello.o hello Source program (text) Modified source program (text) Assembly program (text) Relocatable object programs (binary) Executable object program (binary)

9 O processador lê e interpreta instruçõ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

10 A execução do programa hello
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

11 CPU Register file ALU PC System bus Memory bus Main memory Bus interface I/O bridge I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk hello executable stored on disk

12 O interpretador de comandos lê os caracteres ASCII
“./hello” cr do teclado Register file ALU CPU PC System bus Memory bus Main memory Bus interface I/O bridge "hello" I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk User types "hello"

13 O ficheiro executável “hello” é carregado em memória central
Register file CPU ALU PC System bus Memory bus Main memory Bus interface I/O bridge "hello,world\n" hello code I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk hello executable stored on disk

14 Execução do programa hello
CPU Register file ALU "hello,world\n" PC hello code System bus Memory bus Main memory Bus interface I/O bridge I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk hello executable stored on disk "hello,world\n"

15 Arquitectura 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

16 Arquitectura de Von Neumann
Dispositvos de entrada CPU Memória central (programa + dados) Dispositivos de saída

17 Memória central Ordem de leitura CPU Ordem de escrita Endereço Dados

18 Funcionamento 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

19 Linguagem 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)

20 Características de uma arquitectura
Memória O processador (CPU Central Processing Unit) contém um conjunto de Registos (cada registo N flip-flops) 1 2 3 4 5 6 7 8 9 00 10 20 30 IP: Instruction pointer IR: Instruction Register AX: Arithmetic Register/Acumulador CF: Condition Flag

21 Programa 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

22 Ciclo “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)

23 O 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 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 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

24 Algumas instruções copy e add in e out
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); }

25 sum.as 0 in ax ; readln(x); 1 copy x, ax 2 in ax ; readln(y)
3 copy y, ax 4 copy ax, x ; z = x + y 5 add ax, y 6 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

26 Mais 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

27 largest.as Programa para escrever o maior de dois números lidos:
in ax ; readln( r ) copy r, ax in ax ; readln( s ) copy s, ax copy ax, s cmp ax, r ; if( s < r ) jnb there ; sim, saltar para there copy 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

28 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

29 Computador moderno comparado 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ória Registos Memória Cache Memória central (RAM) Disco (memória virtual) Armazenamento “Offline” (bandas, CDROMs, DVDs, etc.)

30 Papel do sistema de operação (SO)
Ficheiro Executável Carregado em Memória Instruções interpretadas pelo Sistema de Operação (por exemplo, escrita no écrã, leitura do disco ...) Instruções máquina executadas directamente pelo CPU Sistema de Operação (sempre carregado em Memória) Hardware (Processador, Memória, Discos, ...)

31 Programas de aplicação
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 Programas de aplicação Software Sistema de Operação Processador Memória central Dispositivos de I/O Hardware

32 Funçõ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

33 Gestão do CPU – noção de processo
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.

34 Gestã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.

35 Gestã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.

36 Suporte 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

37 Suporte 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

38 Protecçã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.

39 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

40 Arranque do SO O “bootstrap loader em ROM” lê o programa de “boot” para memória O programa de “boot” lê o resto do sistema para memória

41 Inicializaçã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


Carregar ppt "Arquitectura de Computadores e Sistemas de Operação"

Apresentações semelhantes


Anúncios Google