Desempenho de Programas e Linguagens de Programação

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Quais dos seguintes fatores não afetam diretamente o desempenho de um programa?

  • Algoritmo utilizado
  • Tamanho do disco rígido (correct)
  • Linguagem de programação
  • Compilador utilizado

A frequência do relógio de um processador é diretamente proporcional à quantidade de energia consumida.

True (A)

Explique o conceito de 'benchmark' e sua importância na avaliação de desempenho de computadores.

Um benchmark é um conjunto de programas que representam o uso típico de um computador, servindo para medir o desempenho e compará-lo entre diferentes computadores.

A Lei de Amdahl afirma que o aumento de desempenho possível em um sistema é ______ pelo grau de uso da parte do sistema que não é melhorada.

<p>limitado</p> Signup and view all the answers

Relacione cada conceito com sua respectiva definição:

<p>CPI = Número médio de ciclos de relógio necessários para executar uma instrução. SPECratio = Medida normalizada de desempenho que agrega 12 benchmarks sobre um conjunto de tarefas inteiras. Máquinas de Estado Finito = Modelam um sistema com um número limitado de modos ou estados, representando seu comportamento através de diagramas de transição de estados. Máquinas de Turing = Modelo de computação com memória de acesso aleatório, representando o poder computacional máximo.</p> Signup and view all the answers

O código-fonte de uma aplicação é essencialmente uma receita que o computador pode executar automaticamente.

<p>True (A)</p> Signup and view all the answers

Linguagens de alto nível são mais ______ do que linguagens de baixo nível, distanciando-se de conceitos como circuitos e bits.

<p>abstratas</p> Signup and view all the answers

Qual das seguintes é uma característica desejável para o código-fonte de uma aplicação?

<p>Ser legível para facilitar a manutenção e o desenvolvimento (C)</p> Signup and view all the answers

Explique a diferença entre linguagens de alto nível e linguagens de baixo nível.

<p>Linguagens de alto nível são mais abstratas e mais fáceis de entender para humanos, enquanto linguagens de baixo nível estão mais próximas do hardware e exigem conhecimento técnico mais profundo.</p> Signup and view all the answers

Relacione os seguintes exemplos com seus respectivos tipos de linguagem de programação:

<p>Python = Linguagem de alto nível Assembly = Linguagem de baixo nível C++ = Linguagem de alto nível Linguagem-máquina = Linguagem de baixo nível</p> Signup and view all the answers

Bibliotecas e Frameworks são programas pré-feitos que permitem aos programadores adicionar funcionalidades complexas sem precisar escrever todo o código do zero.

<p>True (A)</p> Signup and view all the answers

O código-fonte de uma aplicação deve ser ______ para permitir que outros programadores entendam e modifiquem o código facilmente.

<p>legível</p> Signup and view all the answers

Qual dos seguintes exemplos representa um tipo de linguagem de baixo nível?

<p>Assembly (D)</p> Signup and view all the answers

Qual é a vantagem principal de usar bibliotecas e frameworks na programação?

<p>Bibliotecas e frameworks facilitam a inclusão de funcionalidades comuns, reduzindo o tempo e esforço necessário para desenvolver o software e permitindo que os programadores se concentrem em aspectos mais específicos do projeto.</p> Signup and view all the answers

A porta lógica AND retorna verdadeiro (1) somente se ambas as entradas forem verdadeiras (1).

<p>True (A)</p> Signup and view all the answers

Qual das seguintes opções descreve corretamente a porta lógica OR?

<p>Retorna verdadeiro (1) se pelo menos uma das entradas for verdadeira (1). (D)</p> Signup and view all the answers

Qual é a função da porta lógica NOT?

<p>A porta lógica NOT inverte o valor da sua entrada. Se a entrada for 1, a saída será 0, e vice-versa.</p> Signup and view all the answers

Apesar de serem compostos de milhões ou biliões de portas lógicas, qualquer programa de computador é redutível a combinações de ______ lógicas.

<p>portas</p> Signup and view all the answers

Faça a correspondência entre os elementos e suas descrições:

<p>Transistores = Dispositivos eletrónicos básicos que constituem portas lógicas. Domínio Analógico = Representação de valores através de tensões elétricas contínuas. Portas lógicas = Operações básicas que combinam valores lógicos, como AND, OR e NOT. Valores lógicos = Representação de informação como 0 e 1, utilizados em computadores digitais.</p> Signup and view all the answers

Qual é a principal diferença entre o domínio analógico e o domínio digital?

<p>O domínio analógico utiliza valores contínuos, enquanto o domínio digital utiliza valores discretos. (D)</p> Signup and view all the answers

Os transistores modernos operam no domínio dos bits, representando valores como 0 e 1.

<p>False (B)</p> Signup and view all the answers

Descreva como funciona um interruptor controlado por tensão elétrica.

<p>Um interruptor controlado por tensão elétrica é um componente que fecha o circuito quando a tensão de entrada ultrapassa um determinado limite. Se a tensão cair abaixo do limite, o interruptor abre.</p> Signup and view all the answers

Os transistores atuam como ______ que formam a base dos circuitos digitais.

<p>interruptores</p> Signup and view all the answers

Computadores possuem a mesma expressividade que a abstração e comunicação entre camadas.

<p>False (B)</p> Signup and view all the answers

A abstração e comunicação entre camadas organizam os computadores em ______ de abstração, que por sua vez são organizados em domínios.

<p>níveis</p> Signup and view all the answers

Qual das seguintes áreas NÃO está diretamente relacionada à abstração e comunicação entre camadas?

<p>Componentes físicos do computador (A)</p> Signup and view all the answers

Explique a relação entre linguagens de programação e o domínio do software abstrato.

<p>Linguagens de programação permitem que desenvolvedores manipulem o computador sem precisar entender detalhes complexos da arquitetura do hardware. Elas fornecem uma interface abstrata que facilita a criação de software, abstraindo detalhes complexos do nível de hardware.</p> Signup and view all the answers

Qual das seguintes opções melhor descreve a abstração e comunicação entre camadas?

<p>Um conjunto de níveis de complexidade que ocultam detalhes complexos e facilitam o desenvolvimento de software. (D)</p> Signup and view all the answers

Flashcards

CPI

Ciclos por instrução, mede a eficiência de um processador.

Lei de Amdahl

Limita a melhoria de desempenho com um aumento específico.

Máquina de Estado Finito

Modelo que representa sistemas com estados limitados.

Máquinas Deterministas

Máquinas que têm um único próximo estado possível.

Signup and view all the flashcards

Expressões Regulares

Representam padrões de símbolos em computação.

Signup and view all the flashcards

Abstração

Processo de ocultar detalhes complexos e focar em aspectos essenciais.

Signup and view all the flashcards

Camadas de Abstração

Estruturas que organizam diferentes níveis de funcionamento dos computadores.

Signup and view all the flashcards

Domínio do Software

Conjunto de aplicações e linguagens usadas para criar software.

Signup and view all the flashcards

Linguagens de Programação

Ferramentas que permitem criar programas sem entender todos os detalhes do computador.

Signup and view all the flashcards

Bibliotecas de Software

Conjuntos de código reutilizável que facilitam o desenvolvimento.

Signup and view all the flashcards

Sistemas Operativos

Software que gerencia hardware e oferece serviços para aplicações.

Signup and view all the flashcards

Arquitetura de Computadores

Estrutura interna e organização de componentes de um computador.

Signup and view all the flashcards

Código-Fonte

A descrição da aplicação que deve ser legível e executável pelo computador.

Signup and view all the flashcards

Legibilidade

Propriedade do código que facilita sua compreensão. É essencial para manter e desenvolver programas.

Signup and view all the flashcards

Linguagens de Alto Nível

Linguagens que estão distantes dos fundamentos de hardware, facilitando a programação.

Signup and view all the flashcards

Linguagens de Baixo Nível

Possuem uma correspondência direta com operações elementares do hardware, mais difíceis de usar.

Signup and view all the flashcards

Assembly

Uma linguagem de baixo nível que se aproxima da linguagem de máquina ou do hardware.

Signup and view all the flashcards

Frameworks

Bibliotecas que contêm códigos pré-fabricados para ajudar programadores a incluir funcionalidades comuns.

Signup and view all the flashcards

Bibliotecas

Conjuntos de funções e procedimentos pré-definidos que podem ser utilizados em programas.

Signup and view all the flashcards

Implementação

O processo de desenvolver e integrar diferentes partes de um programa.

Signup and view all the flashcards

Portas Lógicas

Dispositivos que realizam operações lógicas com entradas binárias.

Signup and view all the flashcards

AND

Resultado verdadeiro (1) se ambas as entradas forem 1.

Signup and view all the flashcards

OR

Resultado é 1 se pelo menos uma das entradas for 1.

Signup and view all the flashcards

NOT

Resultado é 1 se a única entrada for 0.

Signup and view all the flashcards

Transistores

Dispositivos eletrônicos que constituem portas lógicas.

Signup and view all the flashcards

Entrada de Tensão

Valor elétrico que controla o estado do transistor.

Signup and view all the flashcards

Interruptor Controlado

Fecha se a tensão ultrapassar um limite, abre se descer.

Signup and view all the flashcards

Domínio Analógico

Refere-se ao controle de valores elétricos contínuos.

Signup and view all the flashcards

Operações Lógicas

Combinações que podem ser reduzidas a portas lógicas.

Signup and view all the flashcards

Study Notes

Tipos de Computadores

  • Computadores pessoais (PCs) geralmente incluem ecrã, teclado, rato e processamento de alta intensidade com IA.
  • Servidores e supercomputadores
  • Computadores embutidos (embedded)
  • Dispositivos móveis (ex: smartphones) com autonomia de bateria.

Servidores

  • Os servidores estão a crescer, organizados em clusters ou centros de dados.
  • Computação em nuvem
  • Software como serviço (SaaS)

Ideias de Arquitetura de Computadores

  • Lei de Moore: circuitos integrados duplicam a capacidade a cada 18-24 meses, ajudando a prever novos chips.
  • Abstração: várias camadas de abstração são escondidas para o programador, que pode priorizar funções e recursos com frequência.
  • Paralelismo: executar operações independentes em paralelo para acelerar o processo.
  • Antecipação: prever futuras necessidades numa determinada situação.

Hierarquia de Memórias

  • Memórias rápidas e caras com baixa capacidade (ex: cache).
  • Memórias lentas e baratas com maior capacidade (ex: discos rígidos, SSDs).
  • Memórias voláteis (ex: RAM): perdem dados quando o computador é desligado.
  • Memórias não voláteis (ex: discos rígidos, SSDs): mantêm os dados mesmo quando o computador é desligado.
  • Tolerância a falhas: o sistema suporta falhas e mantém a funcionalidade.
  • Redundância nos componentes: melhoria da confiabilidade.

Camadas de Abstração

  • Mostra variações entre a camada hardware - software, que formam diferentes níveis de abstração.

Compilador

  • Programa que traduz linguagens de alto nível (ex: C, C++) para instruções de máquina (código de máquina).

Computador

  • Componentes de entrada (ex: rato, teclado).
  • Componentes de saída (ex: ecrã, impressora, altofalantes).
  • Memória.
  • Caminho de dados (datapath).
  • Controlo (CPU - processador).

Cache

  • Armazena os dados mais frequentemente acessados para um acesso mais rápido.
  • Acesso muito rápido dentro do processador (SRAM).

CPU - Unidade Central de Processamento

  • Mecanismos para lidar com instruções e dados.
  • Entrada de dados
  • Controlo
  • Caminho de dados
  • Saída de dados

Arquiteturas

  • CISC (Complex Instruction Set Computer).
  • RISC (Reduced Instruction Set Computer).
  • PowerPC - usado em Macs.
  • ARM - usado em dispositivos móveis e portáteis.

Desempenho Computacional

  • Medidas de desempenho: tempo de resposta, capacidade de processamento e largura de banda.
  • Tempo do CPU: tempo de execução de um programa.
  • Ciclo de relógio: tempo mínimo de uma operação básica no CPU.
  • Frequência do relógio: inverso do ciclo de relógio.
  • Tempo de CPU = número de ciclos de relógio * ciclo de relógio do programa.
  • CPI (ciclos por instrução): Número de ciclos de relógio necessários para executar uma instrução.
  • Fatores chaves de desempenho: frequência de relógio do processador, número de instruções do programa e CPI médio.

Barreiras de energia

  • Consumo de energia de diferentes processadores e tempo de retorno.
  • Escolha de alternativas.
  • Uniprocessadores e Multiprocessadores

Benchmark

  • Usado para avaliar o desempenho de um computador comparando diferentes computadores e suas comparações.
  • SPEC: Criado para medir o desempenho de diferentes computadores.
  • Média normalizada: Usada para avaliar o desempenho de computadores.

Lei de Amdahl

  • A melhoria de desempenho e limitada pelo aumento no uso desse recurso.
  • Tempo de execução após melhoria.

Máquinas de estado finito

  • Representam sistemas com um número limitado de estados e transições.
  • Estados: representados por símbolos (por exemplo, círculos, quadrados e outras formas), e os estados iniciais são marcados com setas.
  • Transições: mudanças de estados, representados por setas.

Formalismos mais complexos

  • Expressões regulares/ padrões.
  • Máquina de pilha: dispositivo de memória.
  • Gramáticas independentes do contexto: conjunto de regras de composição de símbolos.
  • Máquinas de Turing: memórias de acesso aleatório.

Níveis de abstração

  • Aplicações/ programas
  • Linguagens de programação
  • Bibliotecas
  • Sistemas operativos
  • Arquitetura (Computador)
  • Circuitos/ Componentes
  • Transístores

Domínio do Software

  • Aplicações
  • Linguagens de programação
  • Bibliotecas
  • Sistemas operativos
  • Arquitetura (Computador)
  • Componentes
  • Transístores

Bibliotecas/Frameworks

  • Instrumentos reutilizáveis de código que podem ser incluídos no programa.

Sistemas Operativos (SO)

  • Camada de software, que permite que aplicações e bibliotecas se comuniquem com o computador.
  • Núcleo (Kernel): parte principal do SO responsável pelo controlo direto do hardware.
  • Tarefas da SO: gestão de memória RAM, controlo e tempo do programa no CPU, comunicação com dispositivos de input/output.

Arquitetura

  • Forma de abstrair as funções iniciais do computador, em termos de instruções e funções básicas de processamento.
  • 64-bits: capacidade de ler e escrever 64 bits pelo computador.

Componentes

  • Organização dos computadores e suas partes, incluíndo CPU (Unidade Central de Processamento), memória, dispositivos de entrada e saída.
  • Integração de componentes numa única peça.

Circuito Integrado (Chip)

  • Coleção de componentes eletrônicos para uma função.
  • Ex: processador, chip de memória.
  • Capacidade de memória que depende de vários chips.
  • Camadas de abstração no próprio chip.

Portas Lógicas

  • Componentes eletrônicos básicos.
  • Baseados em operações lógicas (AND, OR, NOT).
  • Operam com valores binários.
  • Valores representados no nível das tensões elétricas.

Transistores

  • Componentes básicos em eletrônicos digitais.
  • Baseados em tensões elétricas.
  • Controlam o fluxo de elétrons nos circuitos.

Modelos de Aplicações Distribuídas

  • Aplicativo centralizado em uma única máquina.
  • Aplicativo distribuído em várias máquinas ligadas por uma rede.
  • Modelo Cliente-Servidor: comunicação entre cliente e servidor.
  • Modelo Peer-to-Peer: comunicação entre pares.

Paralelismo

  • Multiprocessador: sistema com dois ou mais processadores.
  • Paralelismo ao nível do processo, tarefa ou programa.
  • Simultaneamente vários processadores para melhoria do desempenho.
  • Clusters: computadores ligados em rede funcionando como um único computador.
  • Microprocessador Multicore: vários processadores num único circuito integrado.

Categorização de Hardware

  • SISD (Single Instruction, Single Data).
  • MISD (Multiple Instruction, Single Data).
  • SIMD (Single Instruction, Multiple Data).
  • MIMD (Multiple Instruction, Multiple Data).

Multithreading por Hardware

  • Thread: unidade de trabalho mais leve que o processo.
  • Compartilhamento do espaço de endereço de memória pelos threads.
  • Processador Multicore: uso de vários processadores para acelerar as operações.

NUMA (Non-Uniform Memory Access)

  • Espaço de memória único.
  • Memória acessível a todos os processadores, mas a latência pode ser variável entre os processadores.

Unidade de Processamento Gráfico (GPU)

  • Acelerador que complementa o CPU, sendo mais rápido na tarefa de processamento grádico e em cálculos paralelos.
  • Usam multithreading para processamento acelerado.

Clusters e Computadores de Grande Escala

  • Computadores agrupados em rede para cálculos de grandes escalas.
  • Utilização de paralelismo, minimizando os problemas causados pela escala.

Modelos de Computação em Nuvem

  • Arquitetura baseada em paralelismo que disponibiliza recursos compartilhados em uma rede.

Benchmarks

  • Programas que testam o desempenho de hardware e software.
  • Indicadores do desempenho dos processadores com tarefas específicas.
  • Modelos de desempenho para testes e análise.
  • Desempenho de cálculos de vírgula flutuante e de outros indicadores.

Administração de Sistemas

  • Planeamento, backup, criação e gestão de contas de usuários.
  • Instalação e atualização de software.
  • Gestão do sistema e segurança.

Métodos para acessar um superusuário.

  • métodos de acesso para administradores do sistemas.

Interface de Usabilidade

  • opções de interfaces para tarefas.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Caching and Variable Conversion Quiz
10 questions
Program Outputs and Performance Assessment
15 questions
Introduction to Programming in Python - Performance
42 questions
Computer Abstractions and Technology Quiz
45 questions
Use Quizgecko on...
Browser
Browser