Computadores e Programação (DCC/UFRJ)

Documentos relacionados
Algoritmos Computacionais

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Organização e Arquitetura de Computadores I

Conceitos Básicos Processador

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Multiprogramação leve em arquiteturas multi-core

Parte I Multiprocessamento

Processador: Conceitos Básicos e Componentes

Arquitetura de Computadores. Processamento Paralelo

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Sistemas Operacionais. Adão de Melo Neto

14/3/2016. Prof. Evandro L. L. Rodrigues

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

Processador. Processador

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

SSC510 Arquitetura de Computadores 1ª AULA

Sistemas Operacionais

Sistemas Operacionais. Conceitos de Hardware

ARQUITETURA DE COMPUTADORES

Sistemas Operacionais

Arquitetura de Computadores Aula 10 - Processadores

Sistemas Operacionais. Visão Geral

Arquitetura de Computadores. Prof. João Bosco Jr.

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

INFORMÁTICA: Informação automática

Processos e Threads e em sistemas distribuídos. Prof. Me. Hélio Esperidião

Introdução a Sistemas Operacionais. Adão de Melo Neto

1. Conceitos Básicos de Computação

SOP - TADS Threads. Revisão Ultima aula. Programa em execução Cada processo têm sua própria CPU

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Arquitetura de Computadores Unidade Central de Processamento CPU

SSC0611 Arquitetura de Computadores

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Informática I. Aula /09/2006 1

Arquitetura de Computadores Aula 11 - Multiprocessamento

ARQUITETURA DE COMPUTADORES. Organização de Sistemas Computacionais. Prof.: Agostinho S. Riofrio

Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Lista de Exercícios para a Terceira Unidade.

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Arquitetura de Computadores

Caracterização de Sistemas Distribuídos

Organização de Sistemas de Computadores

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

Estrutura Básica de um Computador

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira

Processadores. Principal função é executar programas armazenados na memória principal.

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA

Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado)

3. Unidade Central de Processamento

ORGANIZAÇÃO DE COMPUTADORES

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES. Cristina Boeres,

Sistema Computacional

Linguagens de Programação Classificação

Aula 16: UCP: Conceitos Básicos e Componentes

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

2. A influência do tamanho da palavra

2. A influência do tamanho da palavra

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano

Organização de Sistemas Computacionais Processadores: Organização da CPU

Processadores para computação de alto desempenho

2º Estudo Dirigido CAP 3

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Fundamentos de Sistemas Operacionais

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS

5 Unidades de Processamento Gráfico GPUs

Introdução à Organização de Computadores. Aula 8

Arquitetura e Organização de Computadores

CP Introdução à Informática Prof. Msc. Carlos de Salles

Computadores e Programação (DCC/UFRJ)

Unidade Central de Processamento 2. Registradores

Sistemas Operacionais. Entrada/Saída

Gerência de Memória Memória Virtual e Paginação

Arquitetura de Computadores. Ciclo de Busca e Execução

Organização e Arquitetura de Computadores INTRODUÇÃO

Arquitetura e Organização de Computadores

Computação L. Apresentação da Disciplina e Conceitos Básicos de Computadores

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

Transcrição:

Computadores e Programação (DCC/UFRJ) Aula 3:

1 2 3

Abstrações do Sistema Operacional Memória virtual Abstração que dá a cada processo a ilusão de que ele possui uso exclusivo da memória principal Todo processo tem a mesma visão da memória principal, chamada espaço de endereçamento virtual com 4 GBytes O espaço de endereçamento virtual é dividido em áreas de propósito específico: 1 código e dados 2 heap 3 bibliotecas compartilhadas 4 pilha 5 memória virtual do kernel

Exemplo das áreas da memória virtual para hello.c

Abstrações do Sistema Operacional Áreas da memória virtual 1 Código e dados: carregados diretamente a partir do conteúdo do arquivo objeto executável 2 Heap: espaço de dados criado dinamicamente (ex., malloc/free) 3 Bibliotecas compartilhadas: código e dados para bibliotecas compartilhadas 4 Pilha: uso especial para implementar chamadas de funções (cresce e diminui dinamicamente) 5 Memória virtual do kernel: o kernel é a parte do SO que fica sempre residente na memória em área que as aplicações não podem ler/escrever/executar diretamente

Abstrações do Sistema Operacional Funcionamento da memória virtual Para que a abstração de memória virtual funcione, é preciso um esquema sofisticado de interação entre o hardware e o SO Páginas da memória virtual são mapeadas em páginas da memória física Requer tradução pelo hardware de todo endereço de memória gerado pelo processador A idéia básica consiste em armazenar o conteúdo da memória virtual no disco e usar a memória principal como cache para o disco

Memória Virtual: Falta de Página

Memória Virtual: Nova Página

Memória Virtual: Compartilhando Página

Abstrações do Sistema Operacional Arquivos Um arquivo é uma sequência de bytes com um determinado tamanho (em bytes) Todo dispositivo de E/S (disco, teclado, monitor, rede) é modelado como um arquivo Toda tarefa de E/S é executada lendo e escrevendo em arquivos através de chamadas de sistema do SO Vantagem: Usa-se primitivas de nível mais alto e não é preciso conhecer a tecnologia de cada dispositivo

Usando as redes para comunicar-se com outros sistemas Os sistemas de computador modernos estão normalmente ligados entre si através de infraestruturas de redes Do ponto de vista de um sistema isolado, a rede pode ser vista como mais um dispositivo de E/S O processador pode copiar dados entre a memória principal e o adaptador de rede (em geral via DMA), permitindo a comunicação entre diferentes máquinas

Usando as redes para comunicar-se com outros sistemas Com o advento da Internet, a interação entre sistemas de computador tem se tornado cada vez mais comuns e usuais! Cliente solicita a execução remota do programa Hello no servidor e recebe a saída do programa Exemplo de interação cliente/servidor

Concorrência é o termo usado para referenciar a noção geral de um sistema com atividades simultâneas Paralelismo é o termo usado para referenciar o uso da concorrência para fazer um sistema executar mais rápido O paralelismo pode ser explorado em diferentes níveis de abstração: threads, instrução e SIMD

Paralelismo no nível de threads Vários fluxos de controle dentro do mesmo processo Os sistemas de computador podem ser: uniprocessador (um único processador sob o controle do SO) ou multiprocessador (vários processadores sob o controle do mesmo SO) Os sistemas multiprocessador têm se tornado mais comuns com o advento das tecnologias multicore e hyperthreading

Paralelismo no nível de threads Processadores multicore Possuem várias CPUs ( cores ) dentro do mesmo chip

Paralelismo no nível de threads Hyperthreading (ou multithreading simultâneo) Técnica que permite uma única CPU executar vários fluxos de controle de um mesmo processo Requer várias cópias de um mesmo hardware (como PC e registradores), enquanto outras partes são compartilhadas (ex., unidade de aritmética de ponto flutuante) Requer bem menos ciclos de relógio (clock) para chavear entre threads Troca de contexto de processos num processador convencional pode levar 20.000 ciclos Hyperthreading permite a troca de contexto em um ciclo apenas (i.e., cada núcleo Intel Core I7 suporta 2 threads)

Paralelismo ao nível de instrução Paralelismo No passado, vários ciclos de relógio por instrução Hoje, em processadores superescalares, várias instruções por ciclo de clock, com uso de pipelining Pipelining As ações requeridas para executar uma instrução são divididas em diferentes passos e o hardware do processador é organizado como uma série de estágios, cada um executando um desses passos Hardware pode executar mais de uma instrução simultaneamente, mas com comportamento equivalente ao sequencial

Exemplo da técnica de pipelining

Exemplo da técnica de pipelining

O que é ciclo de clock?

Paralelismo SIMD SIMD (Single-Instruction, Multiple-Data) No nível mais baixo, os processadores modernos possuem hardware especial que permite uma única instrução disparar várias operações para serem executadas em paralelo (ex., instruções Intel e AMD que permitem somar mais de um par de números fracionários em paralelo) Maior eficiência para aplicações envolvendo processamento vetorial e matrizes

Os computadores armazenam e processam informações representadas como valores binários Os circuitos eletrônicos para armazenar, processar e transmitir sinais binários são muito mais simples de construir e manter

Formas de representação de valores numéricos Consideraremos as três principais formas de representação de números: 1 Sem sinal: notação binária tradicional, representando números maiores ou iguais a zero 2 Complemento a 2: forma mais comum para representar números negativos 3 Ponto-flutuante: versão na base binária da notação científica para representar números reais (veremos detalhes mais a frente)

Complemento a 2 (C2) Em complemento a 2, o bit mais significativo da palavra tem peso negativo ex., 0101 = 0 2 3 + 1 2 2 + 0 2 1 + 1 2 0 = 5 ex., 1011 = 1 2 3 + 0 2 2 + 1 2 1 + 1 2 0 = 8 + 3 = 5 Exemplo com 4 dígitos Não negativos Valor Interpretação Negativos Valor Interpretação 0111 7 7 1111-1 -8+7 = -1 0110 6 6 1110-2 -8+6 = -2 0101 5 5 1101-3 -8+5 = -3 0100 4 4 1100-4 -8+4 = -4 0011 3 3 1011-5 -8+3 = -5 0010 2 2 1010-6 -8+2 = -6 0001 1 1 1001-7 -8+1 = -7 0000 0 0 1000-8 -8 Olhando as representações negativas como inteiros sem sinal, quanto maior a representação, maior o número negativo representado!

Limitações da representação de valores numéricos no computador A representação de números no computador usa uma quantidade limitada de bits Em razão disso, algumas operações podem causar estouro (overflow) quando os resultados obtidos são maiores que o que é possível representar Acontece também o arredondamento de valores (aproximações, a serem estudadas com detalhes em cálculo numérico)

Exemplos Sumário Implementar e executar a expressão 200 300 400 500 em C (ver código anexo) ver outros exemplos de execução de programas em C

Importância de estudar as formas de representação dos números O estudo das formas de representação dos números no computador nos permite compreender quais faixas de valores podem ser representados e quais propriedades das operações aritméticas (associatividade, comutatividade, transitividade) são válidas Essa compreensão é essencial para escrever programas de computador que funcionem corretamente e que sejam portáveis entre diferentes combinações de máquinas, SOs e compiladores

Estratégias para otimização de código Importante! Há diferentes formas de executar operações aritméticas no computador (considerando a manipulação direta da representação dos números ao nível de bits) Compreender essas técnicas é importante para entender o código de máquina gerado pelos compiladores, e as estratégias de otimização de execução de expressões aritméticas que são adotadas Todo programador precisa compreender claramente a relação entre a aritmética computacional e a aritmética inteira e real que conhecemos da Matemática!

Exercícios Sumário Ler o capítulo 1 do livro texto (disponível em csapp.cs.cmu.edu/public/ch1-preview.pdf) Recordar a representação em complemento a 2

Referências bibliográficas Computer Systems - A Programmer s Perspective (Cap.1)