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

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

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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 D. Medeiros

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

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 Ficheiro com o código objecto Compilador Biblioteca com o código Das bibliotecas da linguagem Ficheiro com o código assembly Compilador Assembler Ligador Ficheiro executável Carregador Ficheiro carregado em memória

5 O código fonte do programa hello.c #include 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 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 l 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 Pre- processor ( cpp ) hello.i Compiler ( cc1 ) hello.s Assembler ( as ) hello.o Linker ( ld ) hellohello.c Source program (text) Modified source program (text) Assembly program (text) Relocatable object programs (binary) Executable object program (binary) printf.o Os programas são transformados por outros programas prompt> gcc –o hello hello.c

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

9 O processador lê e interpreta instruções armazenadas na memória l Para executar o programa hello é preciso interagir com o interpretador de comandos (shell) prompt>./hello hello,world prompt> l 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 l 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) l Obtem instruções da memória e executa-as l Unidade aritmética e lógica (ALU) l Registos

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

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

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

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

15 Arquitectura de computadores l Definição de arquitectura de computadores –A visão do programador do hardware l Arquitectura de Von Neumann –Usada em quase todos os computadores existentes –Computador constituído por 3 partes l Processador ou Unidade central de Processamento (CPU) – elemento activo; executa instruções l Memória central – armazenamento de dados e instruções l Dispositivos de entrada e saída –Realizar entrada de dados –Realizar a saída de dados

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

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

18 Funcionamento do CPU l 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 l 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 l 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 l Na prática, quase nunca se programa nessa linguage l 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 l Memória l O processador (CPU Central Processing Unit) contém um conjunto de Registos (cada registo N flip-flops) IP: Instruction pointer IR: Instruction Register AX: Arithmetic Register/Acumulador CF: Condition Flag

21 Programa muito simples l Mostrado em assembler e não em linguagem máquina copyax, x addax, y copyz, ax –Implementa z = x + y; l Não esquecer, que na realidade TUDO SÃO NÚMEROS –Poderia ser: –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 l O relógio conduz sistematicamente o CPU através dos dois seguintes ciclos: l FETCH (OBTENÇÃO) –Obter instrução da memória l 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) l EXECUTE (EXECUTAR) –Descodificar a instrução l Descobrir o que é pretendido (add?, copy? …) l Extrair um endereço de memória da instrução l Se necessário, obter informação da memória –Executar a instrução l Por exemplo, somar a informação obtida ao Acumulador (AX)

23 O simulador P88 l Software de apoio ao livro Great Ideas in Computer Science with Java, de A.W. Biermann e D. Ramm, MIT Press 2001, ISBN l Programa escrito em Java que simula um CPU que é uma versão simplificadíssima do Pentium l Código fonte do simulador e programas exemplo acessíveis na página da cadeira e também em l 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 –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) l 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: 44

28 Programar em Assembler l 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 l O programador conseguia fazer melhor do que o compilador … l 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 l Este número é independente da linguagem! l É melhor produzir poucas linhas de uma linguagem de alto nível

29 Computador moderno comparado com o P88 Tamanho da memória –PCs agora chegam a ter 1 Gbyte de memória central –As instruções máquina disponíveis são em muito maior número l Muitos registos –É habitual ter-se 32 acumuladores –Registos e hardware dedicados a operações em vírgula flutuante l Hierarquia de memória 1.Registos 2.Memória Cache 3.Memória central (RAM) 4.Disco (memória virtual) 5.Armazenamento Offline (bandas, CDROMs, DVDs, etc.)

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

31 Programas de aplicação ProcessadorMemória centralDispositivos de I/O Sistema de Operação Software 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

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

33 Gestão do CPU – noção de processo l 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 l 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 l A memória central é partihada pelos processos, pelo SO e pelos periféricos l 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 l Um ficheiro é um conjunto de informação armazenado no disco. Pode conter dados ou programas l 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 l Os programas do utilizador não podem executar directamente acções sobre os periféricos l 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 l Relacionamento com outros componentes do sistema l 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 l O hardware inclui dispositivos de comunicação com outros computadores (ex: Controladores de Rede Ethernet). l A troca de informação entre máquinas exige um protocolo. l Se o SO suportar esses protocolos podem ser usados recursos residentes noutras máquinas

38 Protecção l Protecção tem a ver com mecanismos para controlar o acesso aos recursos do sistema por processos ou utilizadores l 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 ? l Conjunto de código permanentemente carregado na memória central (RAM) – também chamado núcleo ou kernel l A sua acção é complementada por –Programas de sistema: interpretador de comandos, carregadores, ligadores,... –Processos de sistema l O SO é carregado na RAM quando há: –Um power up ou um reset hardware

40 Arranque do SO 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

41 Inicialização l Inicialização do hardware l Inicialização das estruturas de dados que representam os vários recursos de sistema e que suportam os algoritmos de gestão desses recursos. l Criação dos primeiros processos: - processos auxiliares de sistema (rede, sistema de ficheiros, …) - interpretador de comandos l Aguardar


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google