Como os computadores funcionam

Descubra o que acontece dentro de um computador quando ele executa um programa. Conheça os componentes do modelo de von Neumann e como os barramentos e dispositivos os conectam, como as portas lógicas e o processador executam instruções no ciclo de busca, decodificação e execução e como os programas se tornam código de máquina. Compare memória e armazenamento, veja por que as memórias cache tornam os computadores rápidos e descubra como o sistema operacional inicializa o computador, carrega programas na memória e mantém tudo funcionando em conjunto.

BásicoAula 3 de 7 do curso Curso de Introdução à ciência da computação

O que você vai aprender

  1. Identificar os principais componentes de hardware de um computador, explicar o conceito de programa armazenado por trás da arquitetura de von Neumann e descrever como os barramentos e os dispositivos de entrada e saída conectam tudo.
    • Identificar os principais componentes de um computador e o conceito de programa armazenado
      Distinguir hardware de software e descrever a arquitetura de von Neumann: um processador, uma memória para instruções e dados, entrada e saída e as conexões entre eles.
    • Explicar como os barramentos transportam endereços, dados e sinais de controle
      Descrever as partes de endereços, dados e controle do barramento de sistema, acompanhar uma leitura e uma escrita na memória e calcular como a largura do barramento limita a memória endereçável e a velocidade de transferência.
    • Classificar dispositivos de entrada e saída e explicar como se conectam à CPU
      Classificar dispositivos por sua função, explicar a conversão entre sinais analógicos e dados digitais e descrever como controladores, drivers, interrupções e acesso direto à memória permitem que dispositivos lentos trabalhem com um processador rápido.
  2. Mostrar como transistores e portas lógicas realizam operações com bits, identificar os componentes da CPU, rastrear o ciclo de busca, decodificação e execução e explicar o que torna um processador mais rápido que outro.
    • Usar portas lógicas para entender como o hardware realiza operações com bits
      Ler as tabelas-verdade das portas lógicas básicas, determinar a saída de um pequeno circuito e explicar como portas construídas com transistores somam números e armazenam bits.
    • Identificar os componentes da CPU e a função de cada um
      Descrever a unidade de controle, a unidade lógica e aritmética, os registradores de uso geral e especiais, o clock e os núcleos de processamento, e a função de cada um durante a execução de um programa.
    • Rastrear o ciclo de busca, decodificação e execução
      Acompanhar os passos que a CPU repete para cada instrução, rastrear os registradores durante um programa curto e explicar como saltos e interrupções alteram o que é executado em seguida.
    • Explicar o que torna um processador mais rápido
      Comparar os efeitos da frequência de clock, do número de núcleos, do tamanho da cache e da execução em pipeline e estimar como cada um altera o tempo necessário para uma tarefa.
  3. Descrever código de máquina e conjuntos de instruções, ler um programa curto em linguagem de montagem e explicar como compiladores, montadores, ligadores e interpretadores transformam código-fonte em um programa em execução.
    • Ler código de máquina e linguagem de montagem
      Explicar o que uma instrução de máquina contém, por que um conjunto de instruções vincula programas a uma família de processadores e como a linguagem de montagem torna o código de máquina legível.
    • Explicar como compiladores e interpretadores transformam código-fonte em programas em execução
      Comparar compilação e interpretação, acompanhar as etapas de um arquivo-fonte até um executável e explicar bytecode, máquinas virtuais e por que o mesmo programa pode ser executado em computadores diferentes.
  4. Comparar a memória principal com os diferentes tipos de armazenamento secundário, explicar a hierarquia de memória e o uso de cache e escolher um armazenamento adequado para uma tarefa.
    • Descrever a memória principal e seu endereçamento
      Explicar RAM e ROM, volatilidade, endereços de bytes e unidades de capacidade, e por que um programa precisa estar na memória principal para ser executado.
    • Comparar tecnologias de armazenamento secundário
      Explicar como discos rígidos, unidades de estado sólido, mídias flash, discos ópticos, fita magnética e armazenamento em nuvem guardam dados e escolher o armazenamento por capacidade, velocidade, custo, durabilidade e portabilidade.
    • Explicar a hierarquia de memória e o uso de cache
      Ordenar os níveis, dos registradores ao armazenamento de arquivo, por velocidade, tamanho e custo, explicar por que as caches funcionam e calcular como acertos e faltas na cache afetam o tempo médio de acesso.
  5. Descrever o que um sistema operacional faz, como um computador inicializa e como o sistema operacional carrega programas na memória, executa-os no processador e os mantém separados.
    • Descrever a função do sistema operacional
      Explicar como o sistema operacional gerencia o processador, a memória, o armazenamento e os dispositivos, fornece uma interface de usuário e um sistema de arquivos e mantém usuários e programas seguros.
    • Acompanhar como um computador inicializa e executa um programa
      Rastrear a sequência de inicialização, acompanhar como o sistema operacional carrega um programa na memória e o inicia e explicar como a memória virtual mantém os programas separados e permite que usem mais memória do que a instalada.

Guia de estudo de Como os computadores funcionam

5 capítulos

1

Componentes do computador e os caminhos entre eles

Um computador fica mais fácil de entender quando você separa as funções de seus componentes. A entrada traz dados, o processador segue instruções armazenadas, a memória fornece o conteúdo de trabalho e a saída apresenta resultados. As conexões importam tanto quanto os componentes: acompanhe um endereço, um valor e um sinal de controle para ver como um processador acessa a memória e os dispositivos e depois veja como dispositivos mais lentos solicitam atenção.

1.1 Os componentes que fazem um computador funcionar

Um computador aceita entrada, segue instruções para processá-la, armazena dados e produz saída. Essas funções se aplicam tanto a um notebook quanto a um controlador dentro de uma máquina de lavar. A diferença está na tarefa e nos equipamentos conectados a ele.

Componentes físicos e programas

Hardware é o equipamento físico. Software consiste em programas e nos dados com que trabalham. A CPU é o chip do processador, não o gabinete inteiro do computador. Uma placa-mãe a conecta à RAM, ao armazenamento, a uma GPU, à alimentação e às portas de dispositivos. A GPU cuida do desenho e de outros trabalhos que aplicam operações semelhantes a muitos valores. Um celular combina muitas dessas funções em um sistema em um chip (SoC).

A RAM guarda instruções e dados em uso no momento. Uma unidade de armazenamento mantém programas e arquivos salvos sem energia. Em um computador descrito como tendo 16 GB de memória e um SSD de 512 GB, a primeira capacidade descreve a RAM e a segunda descreve o armazenamento. Uma unidade maior não fornece mais RAM de trabalho.

Um programa armazenado como dados

A arquitetura de von Neumann tem uma CPU, memória principal que guarda instruções e dados, dispositivos de entrada e saída e barramentos que os conectam. John von Neumann descreveu esse modelo em 1945 no “First Draft of a Report on the EDVAC”. Sua ideia central é o programa armazenado: instruções são valores binários na memória, prontos para a CPU buscar.

Máquinas anteriores, como o ENIAC, eram configuradas para tarefas com interruptores e cabos. Carregar um novo programa permite que uma máquina de programa armazenado mude de tarefa sem reconectar cabos. O Manchester Baby executou um programa em memória eletrônica regravável em 21 de junho de 1948.

A memória não atribui um significado a cada padrão. O byte 01000001 pode representar o número 65, a letra “A” do ASCII ou parte de uma instrução. O que a CPU ou o programa faz com o padrão determina seu significado. Durante a busca de uma instrução, a CPU trata o padrão buscado como uma instrução.

Por que o processador pode esperar

Instruções e dados compartilham o caminho entre a CPU e a memória principal. A memória também os fornece mais lentamente do que a CPU consegue usá-los. Essa restrição é o gargalo de von Neumann. Assim, um processador rápido pode passar tempo esperando pelo próximo valor. Memórias cache pequenas e rápidas mantêm cópias úteis perto da CPU e reduzem muitas dessas esperas.

ModeloInstruções e dadosConsequência útil
Von NeumannCompartilham a memória principal e seu caminhoUma memória guarda uma combinação variável de código e dados.
HarvardTêm memórias e caminhos separadosUma instrução e um valor de dados podem ser buscados juntos.

Pequenos microcontroladores e processadores de sinais frequentemente usam um modelo Harvard. CPUs modernas de uso geral combinam as ideias: memória principal compartilhada, mas caches de nível 1 separadas para instruções e dados.

Computadores dentro de outros dispositivos

Um sistema embarcado realiza uma tarefa específica dentro de um dispositivo maior. Um termostato lê um sensor de temperatura, processa a leitura e controla o aquecimento. Seu programa armazenado geralmente permanece em memória não volátil. As funções de processador, memória e entrada e saída continuam presentes, mesmo sem teclado, tela ou um sistema operacional completo de computador de mesa.

Principais conclusões

  • Hardware é o equipamento físico; software fornece programas e dados.
  • A CPU é um componente distinto da RAM, do armazenamento e do gabinete do computador.
  • Um computador de programa armazenado busca instruções binárias guardadas na memória.
  • Um padrão de bits recebe seu significado da forma como é usado.
  • As caches reduzem a espera causada pelo gargalo entre CPU e memória.

1.2 Como endereços, valores e comandos trafegam

Um processador precisa de três coisas para acessar a memória: uma posição, o valor a transferir e um comando que diga à memória o que fazer. Manter essas funções separadas torna uma transação no barramento muito mais fácil de acompanhar.

Três funções em um barramento de sistema clássico

Um barramento é um caminho de comunicação compartilhado. Em um barramento de sistema paralelo clássico, vários fios ou trilhas de uma placa de circuito transportam bits ao mesmo tempo.

Parte do barramentoO que transportaDireção em um acesso da CPU à memória
Barramento de endereçosA posição a usarDa CPU para a memória ou um dispositivo
Barramento de dadosUma instrução ou um valor de dadosPara a CPU em uma leitura; a partir da CPU em uma escrita
Barramento de controleSinais de leitura, escrita, temporização e interrupçãoDepende do sinal

Um endereço identifica uma posição; ele não é o valor armazenado nela. O endereço 200 pode guardar 7 hoje e 9 depois sem mudar de endereço. Uma comparação útil é uma caixa de correio numerada: o número identifica a caixa, enquanto seu conteúdo pode mudar.

Acompanhe uma leitura e uma escrita

Para ler o endereço 200, a CPU coloca 200, em binário 11001000, no barramento de endereços e envia um comando de leitura pelo barramento de controle. A memória devolve o valor naquela posição, aqui 7, pelo barramento de dados. A CPU o copia para um registrador.

Para escrever 9 no endereço 201, a CPU coloca 201 no barramento de endereços, 9 no barramento de dados e um comando de escrita no barramento de controle. A memória substitui o conteúdo da posição 201. Enviar 201 pelo barramento de dados enviaria o valor errado; o endereço e o conteúdo têm funções diferentes.

A largura do endereço limita o número de posições

Com n bits de endereço, há 2n endereços diferentes. Se cada endereço identifica um byte, esse também é o número de bytes endereçáveis.

  • 16 bits fornecem 216=65.536 endereços, ou 64 KiB.
  • 32 bits fornecem 232=4.294.967.296 endereços, ou 4 GiB.
  • Aumentar de 20 para 21 bits dobra a capacidade de 1 MiB para 2 MiB.

Cada bit adicional dobra as combinações. Dobrar a quantidade de bits de 16 para 32 multiplica a quantidade de posições por 216; não apenas a dobra. Esse cálculo fornece um limite de endereçamento, não a quantidade de RAM realmente instalada.

A largura de dados limita cada transferência

Um caminho de dados de 64 bits transporta 8 bytes em uma transferência. Um caminho de 8 bits precisa de quatro transferências para transportar um valor de 4 bytes. A largura de banda mede quantos dados podem ser transferidos por segundo:

largura de banda=bytes por transfereˆncia×transfereˆncias por segundo

Com 1 bilhão de transferências por segundo, um caminho de 8 bytes transporta 8 bilhões de bytes por segundo, ou 8 GB/s. A largura do endereço controla quantas posições podem ser identificadas; a largura de dados controla quanto é transferido de uma vez.

A palavra de uma CPU é seu tamanho natural de trabalho, normalmente 32 ou 64 bits. Um processador de 64 bits não exige que toda conexão tenha 64 fios. Sua faixa de endereços implementada também pode usar menos de 64 bits.

As conexões modernas mantêm as mesmas funções

Canais de memória, PCI Express e USB substituem um barramento compartilhado por várias conexões. PCI Express e USB são seriais: os bits trafegam um após o outro por pares de fios rápidos. Endereços, valores e comandos são agrupados em mensagens. Eles ainda identificam um destino, transportam conteúdo e coordenam a transferência.

Principais conclusões

  • Um endereço identifica uma posição; os dados são o conteúdo transferido.
  • Comandos de leitura e escrita trafegam como sinais de controle.
  • Um endereço de n bits tem 2ⁿ valores possíveis; o endereçamento por byte torna a capacidade igual a 2ⁿ bytes.
  • Cada bit de endereço adicional dobra a faixa de endereços.
  • A largura de banda é igual aos bytes por transferência multiplicados pelas transferências por segundo.
  • Conexões seriais transportam informações de endereçamento, dados e controle em mensagens.

1.3 Entrada e saída de dados em um computador

Um dispositivo de entrada fornece dados; um dispositivo de saída apresenta um resultado ou age com base nele. A classificação descreve a função do dispositivo no sistema. Ela não descreve a complexidade interna do dispositivo.

Classifique a ação

Teclados, câmeras, microfones, leitores de código de barras e sensores fornecem entrada. Telas, impressoras, alto-falantes e atuadores fornecem saída. Um atuador altera algo físico, como abrir uma válvula ou girar um motor.

Alguns dispositivos fazem as duas coisas. Uma tela sensível ao toque detecta toques e exibe imagens. Um headset combina um microfone com alto-falantes. Um adaptador de rede envia e recebe dados. Unidades de armazenamento também realizam leituras e escritas por controladores de E/S, mas sua principal finalidade é guardar dados, por isso formam a categoria separada armazenamento secundário.

Uma impressora pode conter um processador que transforma uma página em pontos imprimíveis. Ela continua sendo um dispositivo de saída por causa do que faz para o computador. Um mouse sem fio fornece entrada assim como um com fio.

Transforme sinais contínuos em números

Som e temperatura variam continuamente: são sinais analógicos. Um conversor analógico-digital (ADC) mede um sinal em intervalos regulares e codifica as amostras como números. Um conversor digital-analógico (DAC) transforma valores digitais em uma saída analógica, como o sinal que aciona um alto-falante.

Para um canal de áudio amostrado 44.100 vezes por segundo com 16 bits por amostra:

44.100×16=705.600 bits por segundo

Essa é a taxa de dados das amostras brutas. Cada segundo contém 44.100 medições, e cada medição precisa de 16 bits. A amostragem e a codificação permitem que um computador armazene e processe a gravação.

Controlador de hardware, driver de software

Dispositivos se conectam por portas ou conexões sem fio como USB, HDMI, Bluetooth ou Wi-Fi. Um controlador de dispositivo é um circuito que cuida da comunicação de baixo nível e disponibiliza registradores que a CPU pode ler ou escrever. Um driver de dispositivo é um software que traduz solicitações do SO em comandos para o dispositivo. O controlador é hardware; o driver é software.

Permita que os dispositivos solicitem atenção

Com a consulta periódica, o processador verifica repetidamente um registrador de estado. Isso é simples, mas um dispositivo que geralmente está ocioso pode causar muitas verificações sem resultado útil.

Com uma interrupção, o controlador sinaliza quando precisa de atenção. A CPU conclui a instrução atual no modelo simples de ciclo de instrução, salva o estado interrompido e executa um tratador de interrupção. Depois, restaura o estado salvo e continua. O pressionamento de uma tecla ou a conclusão de uma leitura de disco podem iniciar essa sequência.

Pessoas e muitos dispositivos agem muito mais lentamente que uma CPU. Uma pessoa digita apenas alguns caracteres por segundo, enquanto um processador pode executar bilhões de instruções por segundo. As interrupções permitem que a CPU trabalhe entre eventos.

Em uma transferência grande, o acesso direto à memória (DMA) permite que um dispositivo ou controlador de DMA transfira um bloco diretamente para a RAM ou a partir dela. A CPU configura a operação e trabalha em outra coisa. Uma interrupção de conclusão informa quando o bloco está pronto. O DMA elimina a necessidade de a CPU copiar cada byte; ela ainda participa da preparação e da conclusão da transferência.

Principais conclusões

  • Classifique entrada e saída pela ação realizada para o computador.
  • Um ADC codifica a entrada analógica amostrada; um DAC produz saída analógica.
  • Um controlador é hardware, enquanto um driver é software.
  • A consulta periódica verifica repetidamente; uma interrupção sinaliza que é necessária atenção.
  • O DMA transfere blocos entre um dispositivo e a RAM sem que a CPU copie cada byte.
2

Como um processador realiza seu trabalho

Dentro de um processador, circuitos simples se combinam em uma máquina capaz de seguir um programa. Comece com portas que atuam sobre bits e depois identifique os registradores e sinais de controle que movem uma instrução pela CPU. Um rastreamento curto torna visível a mudança de estado. Frequência de clock, núcleos, caches e pipelines explicam por que executar o mesmo trabalho útil pode levar tempos diferentes em sistemas diferentes.

2.1 Dos interruptores aos cálculos

As operações mais básicas de um computador vêm de circuitos que alternam entre dois níveis de sinal. Uma tensão alta representa 1 e uma tensão baixa representa 0. Esses níveis representam bits; um chip não reconhece o significado de uma foto ou de uma frase.

Portas transformam bits de entrada em uma saída

Um transistor funciona como um interruptor controlado eletronicamente. Pequenos grupos formam portas lógicas, cada uma com uma regra fixa de entrada e saída. Uma tabela-verdade lista todas as combinações de entrada e suas saídas. Com duas entradas há quatro combinações; em geral, n entradas precisam de 2n linhas.

A porta NÃO inverte sua única entrada. As portas com duas entradas funcionam da seguinte forma:

ABANDORXORNANDNOR
0000011
0101110
1001110
1111000

A porta E (AND) exige que as duas entradas sejam 1. A porta OU (OR) exige pelo menos uma, incluindo as duas. A porta OU exclusivo (XOR) exige entradas diferentes. A porta NÃO E (NAND) inverte E; a porta NÃO OU (NOR) inverte OU. Interpretar OU como “uma, mas não ambas” é confundi-la com OU exclusivo.

Para avaliar (A AND B) OR (NOT C) com A = 1, B = 0, C = 0, avance das entradas para a saída. A AND B produz 0. NOT C produz 1. Por fim, 0 OR 1 produz 1. Anote as saídas intermediárias para que a última porta receba as entradas corretas.

Portas somam dígitos binários

Um meio somador recebe dois bits. Sua saída de soma é XOR e sua saída de vai-um é AND. Para duas entradas iguais a 1, o bit de soma é 0 e o bit de vai-um é 1: o resultado de dois bits é 10, que significa 2.

Um somador completo também recebe um vai-um da coluna anterior. Encadear esses circuitos permite que uma ULA some números maiores. Acompanhe 0110 mais 0011 a partir da direita:

  1. A coluna mais à direita produz 1, sem vai-um.
  2. A coluna seguinte tem dois 1: escreva 0 e leve 1.
  3. A seguinte tem 1, 0 e vai-um 1: escreva 0 e leve 1.
  4. A mais à esquerda tem 0, 0 e vai-um 1: escreva 1.

O resultado é 1001, ou 9. Um vai-um pertence à próxima coluna; descartá-lo altera o valor.

Portas podem armazenar um bit

Realimentação significa devolver a saída de um circuito à sua entrada. Portas NAND ou NOR conectadas de forma cruzada formam um latch que mantém um bit enquanto a energia permanece ligada. Um flip-flop captura um novo bit em uma borda de clock, mantendo as atualizações sincronizadas com o clock do processador. Registradores usam circuitos de armazenamento controlados por clock. Células de cache SRAM usam circuitos do tipo latch; a DRAM armazena carga em capacitores.

NAND e NOR são, cada uma, universais: qualquer um desses tipos de porta, sozinho, pode construir qualquer função lógica. Conectar as duas entradas de uma porta NAND a A resulta em A NAND A, que funciona como NÃO A.

Essas são camadas de abstração. Transistores formam portas; portas formam somadores, registradores e circuitos de controle; estes formam um processador que executa instruções. Uma pessoa que programa pode usar a camada de instruções sem projetar os interruptores abaixo dela.

Principais conclusões

  • Tabelas-verdade enumeram todas as combinações de entrada.
  • OU inclui o caso em que as duas entradas são 1; OU exclusivo o exclui.
  • Avalie um circuito por meio das saídas intermediárias das portas.
  • Um meio somador produz uma soma XOR e um vai-um AND.
  • A realimentação armazena bits; as bordas de clock controlam as atualizações dos flip-flops.
  • NAND e NOR são, cada uma, suficientes para construir qualquer função lógica.

2.2 Os componentes de trabalho do processador

A CPU, ou processador, executa as instruções de um programa. Sua unidade de controle dirige o trabalho, sua unidade lógica e aritmética realiza operações e seus registradores guardam os valores necessários imediatamente. Um clock coordena as mudanças nesses circuitos.

Dirigir e realizar o trabalho

A unidade de controle busca uma instrução, decodifica-a e emite sinais de controle. Ela pode dizer à memória que devolva um valor, selecionar duas entradas para a ULA e permitir que um registrador armazene o resultado. Ela coordena a operação; a ULA faz a operação aritmética ou lógica.

As operações da ULA incluem adição, subtração, comparações, deslocamentos de bits e operações de portas como AND e XOR. Os resultados também atualizam indicadores de estado. Um indicador de zero aponta um resultado zero; um indicador de negativo registra um resultado negativo. Um desvio pode testar um indicador para escolher a próxima instrução.

Registradores guardam o estado imediato de trabalho

Registradores são posições de armazenamento muito pequenas e rápidas dentro do processador. Um registrador de uso geral geralmente guarda uma palavra. Por exemplo, x86-64 oferece 16 registradores de uso geral para inteiros, e ARM de 64 bits oferece 31. Os programas os usam para manter valores perto da ULA.

O processador didático torna visíveis as seguintes funções:

RegistradorFunção
Contador de programa, PCEndereço da próxima instrução a buscar
Registrador de endereços de memória, MAREndereço para a próxima leitura ou escrita na memória
Registrador de dados de memória, MDRValor recém-lido ou que será escrito
Registrador de instrução, CIRInstrução que está sendo decodificada e executada
Acumulador, ACCValor de trabalho e resultado da ULA na máquina didática

O MDR também é chamado registrador de buffer de memória (MBR). O CIR também é chamado registrador de instrução (IR). Chips reais organizam essas funções de maneiras mais complexas, mas o modelo permite acompanhar o movimento de uma instrução e de seus dados.

O PC guarda um endereço, não um total de instruções concluídas. Um salto pode enviá-lo para trás para repetir um laço. MAR e MDR também são diferentes: um endereço como 10 vai para o MAR; o valor armazenado no endereço 10 vai para o MDR.

Um ciclo de clock é um passo de temporização

A frequência de clock conta pulsos por segundo, medidos em hertz (Hz). Um clock de 3 GHz produz 3 bilhões de ciclos a cada segundo. A duração de um ciclo é:

13.000.000.000 s≈0,33 ns

Um pulso permite que partes de um circuito avancem. Algumas instruções precisam de vários passos de temporização, e processadores modernos sobrepõem o trabalho em várias instruções.

Mais de um núcleo de processamento

Um núcleo de processamento tem os recursos de controle, aritmética, registradores e cache necessários para executar uma sequência de instruções. Quatro núcleos podem executar quatro sequências de uma vez. Um programa se beneficia quando seu trabalho pode ser dividido entre eles; apenas ter quatro núcleos não divide todas as tarefas.

Uma GPU tem muitas unidades de processamento menores, adequadas para realizar operações semelhantes em muitos dados. Desenhar pixels, processar vídeo e fazer alguns cálculos de aprendizado de máquina têm essa forma. Uma CPU é adequada a uma variedade maior de instruções e decisões.

Pense em uma cozinha: a unidade de controle atribui ações, a ULA as realiza, os registradores guardam ingredientes à mão e a memória fornece mais. A CPU segue padrões de bits mecanicamente; o significado útil vem do programa.

Principais conclusões

  • A unidade de controle coordena as operações; a ULA realiza operações aritméticas e lógicas.
  • Indicadores registram condições como um resultado zero para desvios posteriores.
  • PC, MAR, MDR, CIR e ACC guardam partes diferentes do estado atual de trabalho.
  • Um ciclo de clock é um passo de temporização, não necessariamente uma instrução concluída.
  • Múltiplos núcleos ajudam em trabalhos que podem ser executados em paralelo.

2.3 Acompanhe uma instrução pela CPU

O ciclo de busca, decodificação e execução conecta os componentes do processador em um programa em execução. Cada ciclo busca uma instrução, determina sua operação e a realiza. Um rastreamento registra as mudanças nos registradores e na memória para que cada resultado tenha uma causa visível.

Busque a instrução

No processador simples, a busca segue esta sequência:

  1. Copie o PC para o MAR.
  2. Coloque o endereço no barramento de endereços e envie um sinal de leitura de memória.
  3. Receba a instrução pelo barramento de dados no MDR.
  4. Copie-a para o CIR.
  5. Avance o PC para a próxima instrução.

Na máquina didática, cada instrução ocupa uma posição, então o PC aumenta em 1. Um processador com endereçamento por byte avança pelo tamanho da instrução em bytes. Durante a execução, o PC já aponta para além da instrução buscada.

Decodifique e execute

A unidade de controle separa o código de operação, que especifica a operação, do operando, que fornece um valor, registrador ou endereço. Em seguida, envia os sinais necessários para executar a instrução. Um carregamento lê dados, uma adição usa a ULA, um armazenamento escreve dados e um salto altera o PC. Algumas descrições chamam a escrita do resultado de etapa separada de escrita do resultado.

Rastreie um programa completo

A máquina didática tem um acumulador. Aqui, LOAD, ADD e STORE usam endereços de memória como operandos.

Address  Instruction      Data address  Value
0        LOAD 10          10            7
1        ADD 11           11            5
2        STORE 12         12            0
3        HALT

Comece com PC 0. Buscar LOAD 10 muda o PC para 1. A execução coloca o endereço 10 no MAR, lê 7 pelo MDR e define o ACC como 7. O operando 10 identifica uma posição; não é o valor carregado.

Em seguida, ADD 11 é buscada e o PC passa a 2. A posição de memória 11 fornece 5. A ULA soma 7 e 5, deixando o ACC em 12. A busca de STORE 12 avança o PC para 3. A execução coloca o endereço 12 no MAR e o valor 12 no MDR e depois escreve 12 naquela posição. O ACC permanece em 12. Por fim, a busca de HALT avança o PC para 4 e a execução para a máquina didática. Quatro instruções foram executadas.

Desvios substituem o próximo endereço

JUMP 0 coloca 0 no PC durante a execução, independentemente de seu valor anterior. JUMPZ 6 salta somente quando o ACC é zero. Se essa instrução foi buscada no endereço 4, a busca primeiro faz o PC passar a 5. A execução então define o PC como 6 quando o ACC é zero; caso contrário, o PC permanece em 5. É assim que uma sequência pode escolher um caminho ou repetir um laço.

Interrupções e processadores reais

No limite entre instruções nesse modelo, a CPU verifica se há interrupções. Para tratar uma, ela salva o PC e outros registradores de trabalho, executa o tratador e depois restaura o estado salvo. O programa interrompido continua com seus próprios valores e próximo endereço.

Uma CPU não busca um programa-fonte inteiro de uma vez. Ela executa instruções de máquina, frequentemente várias para uma instrução do código-fonte. CPUs modernas sobrepõem e reordenam o trabalho interno, preservando os resultados exigidos pelo programa.

Principais conclusões

  • A busca lê a instrução pelo MAR e pelo MDR até o CIR.
  • O PC avança durante a busca; a execução de um salto pode substituir esse endereço.
  • Um operando de endereço deve ser usado para ler o valor armazenado nele.
  • STORE escreve o ACC na memória sem alterar o ACC nessa máquina didática.
  • O tratamento de interrupções salva e restaura o estado de trabalho interrompido.
  • Processadores reais sobrepõem trabalho enquanto preservam os resultados exigidos pelo programa.

2.4 Por que um programa termina mais cedo

O desempenho de um processador depende do trabalho necessário a um programa e da rapidez com que o computador o conclui. Frequência de clock, trabalho útil por ciclo, tempo de espera e oportunidades de trabalho em paralelo são fatores importantes.

Frequência de clock e uma quantidade fixa de ciclos

Para uma tarefa que exige uma quantidade conhecida de ciclos de clock:

tempo=ciclos necessaˊriosciclos por segundo

Uma tarefa que precisa de 6 bilhões de ciclos leva 2 segundos a 3 GHz e 1,5 segundos a 4 GHz. A comparação mantém fixa a quantidade de ciclos. Em projetos diferentes de processador, um programa pode precisar de quantidades diferentes de ciclos. Um chip de 3,5 GHz pode, portanto, superar um de 4 GHz ao concluir mais instruções úteis por ciclo.

Frequências de clock mais altas também consomem mais energia e produzem calor. A redução de frequência por aquecimento reduz o clock quando um processador aquece demais. Isso ajuda a explicar por que os ganhos de desempenho vieram de mais do que aumentar os gigahertz.

Núcleos dividem apenas a parte paralela

Suponha que uma tarefa leve 10 segundos em um núcleo. Dois segundos precisam ocorrer em sequência; oito segundos podem ser divididos igualmente entre quatro núcleos. Desconsiderando a sobrecarga de coordenação:

2+84=4 segundos

Dividir os 10 segundos inteiros por quatro resulta em 2,5 segundos, mas divide incorretamente o trabalho sequencial. Mesmo uma quantidade ilimitada de núcleos não pode eliminar esses dois segundos. Múltiplos núcleos também ajudam programas separados a ser executados ao mesmo tempo, mesmo quando cada programa usa apenas um núcleo.

Um pipeline sobrepõe etapas

Em um pipeline de três etapas, uma instrução é executada enquanto a seguinte é decodificada e outra é buscada. Cada instrução ainda passa pelas três etapas. O ganho é a conclusão de mais instruções em um período.

Se cada etapa leva um ciclo, dez instruções independentes levam 30 ciclos sem sobreposição. Um pipeline ideal precisa de três ciclos para concluir a primeira instrução e mais um para cada instrução restante:

3+(10−1)=12 ciclos

Um desvio pode tornar inúteis instruções já buscadas. Descartar esse trabalho custa ciclos, por isso os processadores preveem desvios. Dependências reais e esperas pela memória também impedem que um pipeline alcance sempre sua taxa ideal.

Mantenha o processador abastecido

Uma cache guarda cópias próximas de instruções e dados. Mais capacidade útil de cache pode reduzir os acessos à RAM, especialmente quando um programa usa repetidamente um conjunto de trabalho que antes não cabia nela. Se esse conjunto já couber, a capacidade extra pode ajudar pouco.

A largura de banda da memória limita a rapidez com que muitos valores podem chegar. A velocidade do armazenamento importa ao abrir arquivos ou iniciar aplicativos: passar de um disco rígido para um SSD pode reduzir o atraso, mesmo sem mudar a CPU. O tamanho da palavra e as instruções que um processador suporta também afetam os tipos de trabalho adequados.

Mais transistores, usos diferentes

A lei de Moore descreve a observação de Gordon Moore, feita pela primeira vez em 1965 e revisada em 1975, de que a quantidade de transistores dobrava aproximadamente a cada dois anos. Essa tendência histórica não é uma regra de que programas se tornam duas vezes mais rápidos em um intervalo fixo. À medida que a redução de escala desacelerou, projetistas de chips passaram a usar transistores adicionais para núcleos, caches, GPUs e aceleradores especializados. Uma comparação útil pergunta quanto tempo a mesma tarefa leva nas mesmas condições.

Principais conclusões

  • Compare o tempo de execução da tarefa real, não apenas a frequência de clock.
  • Mais núcleos reduzem apenas o trabalho que pode ser dividido entre eles.
  • A execução em pipeline aumenta a vazão ao sobrepor etapas de instruções.
  • Cache, largura de banda da memória, armazenamento e calor podem limitar o trabalho útil da CPU.
3

Como programas escritos se tornam instruções de máquina

Um programa legível e as instruções que uma CPU executa são formas diferentes do mesmo trabalho pretendido. A linguagem de montagem expõe operações e desvios individuais; compiladores e interpretadores conectam o código de alto nível a essas operações. Acompanhar uma construção mostra por que um arquivo-fonte é diferente de um executável, por que as bibliotecas importam e por que levar software para outra plataforma pode exigir uma nova construção ou um ambiente de execução adequado.

3.1 Ler as instruções executadas por um processador

Código de máquina são instruções binárias para um tipo específico de processador. A linguagem de montagem escreve essas instruções com nomes legíveis. Ambos descrevem operações muito mais próximas do hardware do que uma linguagem de alto nível como Python ou C.

Operações e operandos

Uma instrução contém um código de operação que especifica o que fazer e geralmente um ou mais operandos que especificam o que usar. Um operando pode indicar um registrador ou endereço de memória, ou fornecer um valor diretamente. Seu significado vem do formato definido para a instrução.

Considere uma codificação didática de 8 bits. Os primeiros quatro bits guardam um código de operação; os últimos quatro guardam um endereço. Se LOAD é 0001, então LOAD 10 se torna 0001 1010, pois 10 em decimal é 1010 em binário. Quatro bits para o código de operação permitem 24=16 códigos de operação. Quatro bits de endereço identificam as posições de 0 a 15. Essa codificação ilustra um formato limitado; os outros rastreamentos da máquina didática usam instruções escritas com endereços maiores.

Uma arquitetura do conjunto de instruções (ISA) define as instruções, codificações e registradores que um processador oferece. x86-64, ARM e RISC-V são exemplos. As instruções A64 do ARM têm 32 bits de comprimento; as instruções x86-64 variam de 1 a 15 bytes. O tamanho da palavra de um processador de 64 bits não determina o comprimento de todas as instruções.

Um laço legível

Um montador transforma mnemônicos e rótulos da linguagem de montagem em código de máquina para uma ISA. Grupos úteis de instruções incluem transferência de dados, aritmética e lógica, fluxo de controle e operações de sistema ou E/S.

Este programa com acumulador faz uma contagem regressiva a partir de 3. SUB 21 subtrai o conteúdo do endereço 21. JUMPZ faz um desvio se o ACC for zero.

0  LOAD 20
1  SUB 21
2  STORE 20
3  JUMPZ 5
4  JUMP 0
5  HALT

20 holds 3; 21 holds 1.

Na primeira passada, LOAD lê 3, SUB deixa 2 e STORE salva 2. O teste de zero falha, então JUMP 0 inicia outra passada. A segunda passada salva 1 e salta de volta. A terceira salva 0, então JUMPZ 5 vai para HALT.

As duas primeiras passadas usam cinco instruções cada. A última usa quatro antes de HALT, que também conta como uma instrução: 5+5+4+1=15. Contar apenas as seis linhas escritas deixa de fora as execuções repetidas.

Uma instrução no código-fonte, várias instruções de máquina

Uma instrução de alto nível como total = price + tax pode se tornar operações para carregar um valor, somar outro e armazenar o resultado. Linguagens de alto nível expressam variáveis, escolhas, laços e funções sem nomear cada registrador. A linguagem de montagem geralmente associa cada instrução escrita a uma instrução de máquina e depende diretamente de sua ISA.

Código de máquina para x86-64 não pode ser executado nativamente como código ARM. O código-fonte pode ser recompilado para ARM, ou uma camada de tradução ou emulação pode lidar com a incompatibilidade.

RISC e CISC

Projetos RISC como ARM e RISC-V favorecem instruções simples e regulares. Muitos usam instruções de tamanho fixo, mas RISC-V pode misturar formas compactadas de 16 bits com instruções padrão de 32 bits. Projetos CISC como x86 oferecem instruções mais complexas e de tamanho variável. Processadores x86 modernos dividem as instruções em operações internas mais simples. Esses termos descrevem abordagens de projeto, não garantem que uma máquina seja mais rápida.

Principais conclusões

  • Um código de operação seleciona uma operação; os operandos especificam suas entradas ou destinos.
  • Uma ISA define o contrato de código de máquina que um processador implementa.
  • Um montador traduz mnemônicos legíveis em código de máquina.
  • Laços executam algumas instruções repetidamente, por isso a quantidade de execuções difere da quantidade de linhas.
  • Programas de alto nível precisam de tradução ou de um interpretador implementado em código de máquina.
  • RISC e CISC descrevem estilos de conjunto de instruções, com exceções às regras simples de tamanho.

3.2 Do código-fonte a um programa em execução

Código-fonte é o texto legível de um programa. Um processador executa instruções de máquina, então uma ferramenta precisa fazer a ligação entre eles. Compilação e interpretação descrevem maneiras de fazer isso; muitas implementações reais as combinam.

As ferramentas de tradução
FerramentaSeu trabalho
MontadorTraduz linguagem de montagem em código de máquina
CompiladorTraduz código para outra forma, frequentemente código de máquina ou bytecode
InterpretadorRealiza as operações de um programa enquanto ele é executado

A maioria dos compiladores trabalha antes de um programa começar. Um compilador em tempo de execução (JIT) trabalha durante a execução. Um interpretador é, ele próprio, um programa em código de máquina: a CPU executa o interpretador, que realiza as operações do programa-fonte.

Acompanhe a construção de um programa em C

O comando clang hello.c -o hello constrói um executável chamado hello a partir de hello.c. Uma ferramenta de construção como make pode organizar comandos do compilador para a pessoa que programa. As etapas principais são:

  1. Pré-processamento: tratar diretivas como #include <stdio.h>, incorporando declarações de cabeçalho ao código-fonte.
  2. Compilação: traduzir o código C em operações no nível da linguagem de montagem.
  3. Montagem: codificar essas operações como código de máquina em arquivos-objeto.
  4. Ligação: conectar o código-objeto e as referências a bibliotecas para produzir um executável.

Os cabeçalhos descrevem interfaces de bibliotecas; incluir um cabeçalho, por si só, não copia a implementação compilada da biblioteca para o programa. A ligação fornece a conexão com esse código. A ligação estática copia o código necessário das bibliotecas para o executável. A ligação dinâmica registra as dependências de bibliotecas compartilhadas que são carregadas e conectadas quando necessário.

O executável é destinado a uma ISA e a um formato de sistema operacional. Construir para um Mac com ARM e um computador com Windows e x86-64 exige, portanto, construções nativas separadas. Editar o código-fonte também exige reconstruir um executável compilado antes que a alteração tenha efeito.

Erros acontecem em etapas diferentes

Um compilador pode informar erros de sintaxe, como a falta de um ponto e vírgula em C, e erros de tipo onde a linguagem verifica tipos. Uma compilação bem-sucedida não estabelece que o programa resolva o problema correto. Um erro de lógica produz um resultado incorreto. Um erro em tempo de execução ocorre enquanto o programa é executado, como a divisão por um valor de entrada que acaba sendo zero.

Um interpretador simples pode chegar a um erro somente depois que instruções anteriores já foram executadas. Python verifica primeiro a sintaxe de um arquivo inteiro, mas um nome não definido ainda pode causar uma falha somente quando a execução chega a ele. O método de tradução, por si só, não informa quando cada tipo de erro é encontrado.

Bytecode e máquinas virtuais

Java compila o código-fonte em bytecode, instruções para a Máquina Virtual Java (JVM). Cada plataforma compatível fornece sua própria JVM. Ela pode interpretar bytecode e compilar com JIT as partes usadas com frequência em código de máquina da CPU local. O bytecode permanece portável porque a JVM específica da plataforma lida com as diferenças de hardware.

CPython também compila Python em bytecode e o executa com uma máquina virtual. PyPy usa um compilador JIT, e os mecanismos JavaScript dos navegadores também usam compilação JIT. “Compilado” e “interpretado” descrevem implementações, não propriedades permanentes de uma linguagem.

Código nativo compilado antecipadamente geralmente evita trabalho repetido de interpretação. A interpretação torna conveniente o ciclo de editar e executar, enquanto bytecode e JIT combinam portabilidade com otimização durante a execução. Em todos os caminhos, a CPU acaba seguindo instruções de máquina, e o SO carrega o código executável necessário na memória.

Principais conclusões

  • Compiladores traduzem código; interpretadores realizam operações durante a execução.
  • A construção de um programa em C envolve pré-processamento, compilação, montagem e ligação.
  • A ligação estática inclui código de bibliotecas; a ligação dinâmica registra dependências de bibliotecas compartilhadas.
  • A compilação pode detectar erros de sintaxe e deixar passar erros de lógica e de tempo de execução.
  • O bytecode é executado por uma máquina virtual específica da plataforma.
  • A compilação JIT traduz durante a execução; linguagens podem ter implementações diferentes.
  • Executáveis nativos dependem tanto de uma ISA quanto de um formato de sistema operacional.
4

Memória, armazenamento e cópias rápidas

O lugar onde um computador guarda dados afeta tanto a sobrevivência deles à perda de energia quanto a rapidez com que podem ser usados. Compare a RAM de trabalho com unidades de armazenamento persistente e depois acompanhe a hierarquia dos registradores aos arquivos. As escolhas de armazenamento dependem dos padrões de acesso e da capacidade. O uso de cache explica como um armazenamento pequeno e rápido pode evitar muitos acessos lentos, e uma média ponderada mostra quanto as faltas afetam o resultado.

4.1 Memória de trabalho e seus endereços

A memória principal guarda as instruções e os dados atualmente disponíveis para a CPU. Para um aplicativo comum armazenado em um SSD, o SO primeiro traz o código e os dados necessários para a RAM. A CPU então busca instruções por meio de seu sistema de memória e cache.

RAM, DRAM e SRAM

RAM significa memória de acesso aleatório: uma posição pode ser alcançada sem passar por todas as posições anteriores. A RAM de trabalho comum é volátil, portanto seu conteúdo é perdido sem energia. Salvar um documento copia seus dados para um armazenamento não volátil.

A memória principal usa DRAM, que armazena bits como carga em pequenos capacitores. A carga se dissipa, por isso as células precisam de atualização, normalmente em um intervalo de 64 ms. A SRAM usa circuitos de transistores do tipo latch que mantêm seu estado enquanto alimentados. Ela não precisa de atualização, mas ocupa mais espaço e custa mais por bit. Sua velocidade é adequada às caches do processador.

TipoArmazena um bit usandoFunção típicaMantém o conteúdo sem energia?
DRAMCarga em um capacitorMemória principal de trabalhoNão
SRAMUm circuito do tipo latchCache da CPUNão
Flash de firmwareCarga retidaInstruções de inicializaçãoSim

A ROM, ou memória somente de leitura, é uma memória não volátil associada a instruções fixas, como o firmware. O firmware UEFI ou BIOS moderno normalmente fica em memória flash atualizável. A capacidade anunciada para arquivos em um celular é armazenamento flash, mesmo quando uma descrição informal a chama de “ROM”; o celular grava arquivos ali regularmente.

Um byte tem um endereço

Na memória endereçável por byte, cada endereço identifica um byte. Um inteiro de 4 bytes que começa no endereço decimal 1000 ocupa as posições 1000, 1001, 1002 e 1003. A próxima posição não usada é 1004. Os endereços são frequentemente escritos em hexadecimal, como 0x7FFE0010, pois o hexadecimal representa padrões de bits de forma compacta.

O endereço identifica onde os bytes são encontrados. Ler o número escrito como endereço é diferente de ler o valor armazenado nesse endereço.

Unidades de capacidade usam dois sistemas

Um byte contém 8 bits. b minúsculo significa bits; B maiúsculo significa bytes.

Unidade decimalBytesUnidade bináriaBytes
kB1.000KiB1.024
MB1.000.000MiB1.048.576
GB1.000.000.000GiB1.073.741.824
TB1.000.000.000.000Não se aplicaNão se aplica

Uma unidade vendida como 1 TB contém 1012 bytes. Em GiB, a quantidade é:

1012230≈931 GiB

Algumas telas de sistemas operacionais identificam essa quantidade binária como “GB”. O número diferente decorre do tamanho da unidade; não é evidência de espaço faltando.

Capacidade é diferente de velocidade do processador

Mais RAM permite que mais programas em execução e dados fiquem prontos ao mesmo tempo. Quando os dados de trabalho excedem a RAM, o SO pode mover páginas para o armazenamento, tornando o acesso mais lento. RAM adicional ajuda nessa falta, mas não aumenta a frequência de clock da CPU. Excluir arquivos salvos libera armazenamento. Fechar programas ou abas desnecessários pode liberar RAM de trabalho.

Principais conclusões

  • A RAM de trabalho é volátil; salvar transfere dados para armazenamento não volátil.
  • A DRAM exige atualização; a SRAM usa circuitos latch e é adequada para caches rápidas.
  • O firmware permanece sem energia e pode ficar em memória flash atualizável.
  • Cada endereço em uma memória endereçável por byte identifica um byte.
  • GB decimal e GiB binário usam quantidades diferentes de bytes.

4.2 Escolher o armazenamento para a tarefa

O armazenamento secundário mantém programas e arquivos sem energia. Em comparação com a RAM, oferece mais capacidade a um custo menor por byte, com acesso mais lento. Diferentes tecnologias de armazenamento apresentam compromissos entre velocidade, custo, portabilidade e durabilidade.

Discos magnéticos e unidades de estado sólido

Uma unidade de disco rígido (HD ou HDD) armazena padrões magnéticos em pratos giratórios. Uma cabeça móvel busca a trilha correta e depois espera que a parte desejada do prato gire até ficar abaixo dela. Os dois movimentos acrescentam atraso ao acesso.

A 7.200 rotações por minuto, uma volta leva:

607.200 s≈8,3 ms

A espera média de rotação é de meia volta, cerca de 4,2 ms. Essa é apenas a parte da rotação, não o tempo total de leitura; a busca e a transferência também levam tempo. As peças móveis também tornam um HD em funcionamento vulnerável a choques.

Um SSD armazena carga em células flash e não tem peças móveis. Pequenas leituras aleatórias levam dezenas de microssegundos, em vez dos milissegundos típicos do acesso a um HD. SSDs são silenciosos, resistem a choques e são adequados a computadores portáteis. HDs geralmente oferecem menor custo por terabyte para grandes coleções.

As células flash toleram um número limitado de ciclos de apagamento e gravação. O controlador usa nivelamento de desgaste para distribuir as gravações entre as células. Pendrives, cartões de memória e armazenamento de celulares também usam flash, embora o controlador e a interface afetem seu desempenho.

Discos ópticos e fita
MídiaComo armazena ou lê dadosSituação adequada
CD, DVD, Blu-rayUm laser lê marcas em uma camada refletivaDistribuir mídia ou manter um arquivo em discos
Fita magnéticaOs dados seguem uma sequência ao longo de uma fita compridaGrandes cópias de segurança e arquivos

Capacidades típicas são cerca de 700 MB para um CD, 4,7 GB para um DVD de camada única e 25 GB para um disco Blu-ray de camada única. Mídias ópticas são portáteis, mas lentas em comparação com unidades modernas.

A fita oferece baixo custo para grandes arquivos. Seu acesso sequencial significa que a unidade precisa enrolar a fita para alcançar um arquivo distante. Discos e SSDs oferecem acesso direto, alcançando uma posição selecionada sem percorrer todos os dados anteriores. Por isso, a fita é mais adequada a grandes cópias de segurança programadas do que a um aplicativo que abre repetidamente pequenos arquivos espalhados.

Armazenamento em nuvem é um serviço

O armazenamento em nuvem guarda arquivos em equipamentos nos centros de dados de um provedor. As mídias subjacentes continuam sendo SSDs, HDs ou fita. Uma conexão de rede acrescenta atrasos de acesso e transferência. O serviço oferece compartilhamento, acesso remoto e cópias em outro local, com custos recorrentes e dependência dos controles de acesso e da confiabilidade do provedor.

Considere o fator limitante

Tempo de acesso é o atraso antes de os dados começarem a chegar. Taxa de transferência mede a rapidez com que fluem depois disso. Muitas leituras de arquivos pequenos incorrem repetidamente no atraso de acesso; um arquivo grande e contínuo dá mais importância à taxa de transferência.

Um SSD é adequado para os programas em uso em um notebook. HDs são adequados a um servidor que armazena 20 TB de vídeo de forma econômica. Fita ou um arquivo em nuvem é adequado aos registros de longo prazo de uma empresa, enquanto uma unidade USB é prática para transportar arquivos. Escolha considerando capacidade, tempo de acesso, taxa de transferência, custo por byte, consumo de energia, confiabilidade e portabilidade. Ser feito de chips não transforma um SSD em RAM de trabalho: ele continua sendo armazenamento não volátil acessado por um controlador de armazenamento.

Principais conclusões

  • O acesso a um HD inclui atraso de busca e de rotação; SSDs não têm peças móveis.
  • O nivelamento de desgaste distribui as gravações flash entre as células.
  • A fita fornece acesso sequencial e é adequada para grandes arquivos.
  • O armazenamento em nuvem usa armazenamento físico acessado por uma rede.
  • Tempo de acesso e taxa de transferência medem partes diferentes de uma leitura.
  • Escolha o armazenamento pelo padrão de acesso da tarefa e pelas necessidades práticas.

4.3 Manter dados úteis perto da CPU

Um computador combina vários tipos de armazenamento porque acesso rápido, grande capacidade e baixo custo não se encontram em uma única tecnologia. A hierarquia de memória coloca uma pequena quantidade de armazenamento muito rápido perto da CPU e armazenamentos maiores e mais lentos mais distantes.

Os níveis da hierarquia

Do mais rápido e menor para o mais lento e maior, os principais níveis são registradores, cache L1/L2/L3, RAM, SSD, HD e armazenamento de arquivo. O custo por byte geralmente diminui à medida que a capacidade aumenta.

NívelTempo de acesso ilustrativoEscala típica
RegistradoresFração de nanossegundoAlguns kilobytes ou menos
Cache L1Cerca de 1 nsDezenas a centenas de kilobytes por núcleo
Cache L2Alguns nsAté alguns megabytes
Cache L3Cerca de 10–20 nsAlguns a dezenas de megabytes
RAMCerca de 50–100 nsAlguns a dezenas de gigabytes
SSDCerca de 20–100 µsCentenas de gigabytes a terabytes
HDCerca de 5–10 msAlguns terabytes

Esses tempos mostram a escala, não uma especificação fixa para todos os dispositivos. Usando 1 ns para L1, 100 ns para RAM e 10 ms para um disco, a RAM leva cerca de 100 vezes o tempo da L1 e o disco cerca de 100.000 vezes o tempo da RAM.

Acertos, faltas e cópias úteis

Uma cache da CPU usa SRAM para guardar blocos copiados da memória principal. O hardware examina os níveis de cache antes de buscar na RAM. Um acerto encontra o conteúdo solicitado na cache. Uma falta exige uma busca em um nível mais lento e pode trazer uma cópia para a cache.

A taxa de acertos é o número de acertos dividido por todos os acessos. Para 950 acertos em 1.000 acessos, ela é de 95%. Uma falta não significa que os dados estejam ausentes ou danificados; significa que a cópia rápida não estava disponível.

Por que acessos anteriores indicam acessos futuros

Localidade temporal significa que o conteúdo usado recentemente provavelmente será usado de novo em breve. Um laço lê repetidamente um contador e suas próprias instruções. Localidade espacial significa que endereços próximos provavelmente serão usados em breve. A leitura de elementos consecutivos de uma lista segue esse padrão.

Uma cache traz uma linha de cache inteira, normalmente 64 bytes vizinhos, aproveitando a localidade espacial. Vários níveis equilibram capacidade e tempo de busca: uma cache enorme levaria mais tempo para ser pesquisada.

Calcule o atraso médio

Suponha que uma verificação da cache leve 1 ns e um acesso à RAM leve 100 ns. Uma falta custa os dois, então leva 101 ns. Com uma taxa de acertos de 95%:

0,95×1+0,05×101=6 ns

Com uma taxa de acertos de 80%:

0,80×1+0,20×101=21 ns

A segunda média é 21÷6=3,5 vezes maior. Pondere o custo completo do acerto e o custo completo da falta pela frequência com que cada um ocorre. Esquecer a verificação da cache em uma falta mudaria a resposta desse modelo.

Uso de cache além do processador

O SO mantém conteúdo de arquivos em cache na RAM. Um navegador guarda em cache arquivos da web baixados no armazenamento, e redes de distribuição de conteúdo mantêm cópias perto dos usuários. Todos reutilizam cópias próximas para evitar buscas lentas repetidas. Limpar a cache do navegador remove arquivos do navegador; não limpa os circuitos de cache da CPU. As caches da CPU guardam pequenos blocos de memória, não uma biblioteca organizada de documentos inteiros.

Principais conclusões

  • A hierarquia equilibra velocidade e custo por byte com capacidade.
  • Um acerto na cache encontra uma cópia rápida; uma falta busca em um nível mais lento.
  • A localidade temporal reutiliza conteúdo; a localidade espacial usa endereços próximos.
  • O tempo médio de acesso pondera o custo completo dos acertos e das faltas.
  • Caches de navegador, arquivos e CPU usam a mesma ideia geral em camadas diferentes.
5

Como o sistema operacional põe os componentes para trabalhar

Abrir um aplicativo depende de mais do que um processador e um arquivo de programa. O sistema operacional atribui memória, compartilha o tempo do processador, verifica permissões e oferece serviços de arquivos e dispositivos. Acompanhe a inicialização do firmware ao núcleo e depois acompanhe um editor em execução por suas regiões de memória, eventos de entrada e uma solicitação para salvar. A memória virtual conecta a visão de endereços de cada processo à RAM física que ele tem permissão para usar.

5.1 As tarefas cotidianas do sistema operacional

Um sistema operacional (SO) gerencia o hardware e fornece serviços aos aplicativos. Windows, macOS e Linux atendem a computadores pessoais e servidores; Android e iOS atendem a dispositivos móveis. A área de trabalho visível é apenas uma parte desse trabalho.

Gerenciar recursos e ocultar detalhes do hardware

Como gerenciador de recursos, o SO atribui tempo de processador, memória de trabalho, arquivos e dispositivos a programas e usuários. Como uma abstração, ele fornece operações mais simples que ocultam os detalhes do hardware. Um editor de texto pode solicitar “abrir o arquivo report.txt” sem escolher trilhas de disco ou comandos de dispositivo.

FunçãoO que o SO faz
Gerenciamento de processosInicia, escalona e encerra programas em execução
Gerenciamento de memóriaAtribui memória e garante a separação
Gerenciamento de arquivosOrganiza arquivos, pastas e dados armazenados
Gerenciamento de dispositivosComunica-se com dispositivos por meio de drivers
SegurançaFaz cumprir as regras de contas e permissões
RedeFornece serviços para troca de dados

A interface de usuário permite que as pessoas solicitem esse trabalho. Uma interface gráfica do usuário (GUI) usa janelas, ícones, menus e toque ou um ponteiro. Uma interface de linha de comando (CLI) aceita comandos digitados. Comandos como ls no Linux e macOS ou dir no Windows listam arquivos; scripts podem combinar comandos para tarefas repetidas.

O núcleo controla operações privilegiadas

O núcleo é a parte central do SO responsável pelo controle do hardware e pelos recursos protegidos. Os aplicativos são executados em modo usuário com privilégios restritos. O código do núcleo é executado em modo núcleo com privilégios maiores. Um aplicativo solicita um serviço protegido por meio de uma chamada de sistema, por exemplo pedindo ao SO que leia um arquivo.

O núcleo verifica as permissões e realiza a ação permitida. Um aplicativo defeituoso não pode simplesmente usar uma instrução comum do modo usuário para assumir o controle de todos os dispositivos ou ler a memória protegida de outro processo.

Compartilhar o tempo do processador

O escalonador decide qual programa pronto recebe tempo do processador. Turnos curtos em uma única sequência de processamento fazem a reprodução de música e a edição de documentos parecerem simultâneas. Múltiplos núcleos também permitem que trabalhos sejam executados no mesmo momento. Algumas CPUs oferecem suporte a múltiplas threads por hardware dentro de um núcleo, mas o compartilhamento de tempo continua necessário quando há mais trabalho pronto do que o hardware pode executar em conjunto.

Dar nomes a arquivos e drivers a dispositivos

Um sistema de arquivos acompanha o conteúdo dos arquivos e metadados como tamanho, datas e permissões. Pastas formam uma hierarquia; um caminho identifica um arquivo, por exemplo /home/sam/notes.txt no Linux. NTFS, APFS e ext4 são exemplos de sistemas de arquivos.

Excluir um arquivo geralmente remove sua entrada no diretório e libera seu espaço para reutilização. Isso é diferente de sobrescrever deliberadamente cada byte. Dados antigos às vezes podem continuar recuperáveis, especialmente em HDs; uma exclusão normal não garante o apagamento seguro.

Um driver traduz solicitações gerais de dispositivos em comandos que um controlador entende. Drivers padrão atendem a muitos teclados e unidades USB, enquanto alguns dispositivos exigem um driver específico.

Associar o software à sua função

O SO, os drivers e utilitários como ferramentas de cópia de segurança são software de sistema. Navegadores, editores, jogos e planilhas são software aplicativo. Sistemas móveis priorizam duração da bateria, toque e separação entre aplicativos; servidores oferecem suporte a serviços de rede. Um SO de tempo real cumpre prazos de resposta especificados para tarefas de controle. Dispositivos embarcados muito simples podem executar um programa sem um SO completo.

Principais conclusões

  • O SO gerencia recursos compartilhados e oculta detalhes do hardware por trás de serviços.
  • Chamadas de sistema solicitam serviços do núcleo a partir de aplicativos restritos ao modo usuário.
  • O escalonador compartilha o tempo do processador entre trabalhos prontos.
  • Sistemas de arquivos acompanham conteúdo, nomes, caminhos e permissões dos arquivos.
  • Drivers conectam solicitações gerais do SO a comandos específicos de dispositivos.
  • O software de sistema executa e mantém o computador; aplicativos realizam tarefas do usuário.

5.2 Da ligação do computador ao documento salvo

Inicializar um computador e iniciar um aplicativo envolvem etapas diferentes. A inicialização coloca o sistema operacional no controle. O carregamento do aplicativo cria então um processo em execução que usa o processador, a memória e os serviços do SO.

Comece com instruções persistentes

Ao ligar o computador, a RAM de trabalho não tem um programa em execução que possa ser usado. A CPU começa com o firmware armazenado em memória não volátil. Em um PC moderno, o firmware UEFI prepara o hardware e realiza verificações de inicialização, frequentemente chamadas de autoteste de inicialização (POST). Ele seleciona um dispositivo de inicialização e inicia um carregador de inicialização. O carregador de inicialização carrega o núcleo do SO na RAM e transfere o controle a ele. O núcleo prepara o gerenciamento de memória, os drivers e os serviços antes de a tela de login ou a tela inicial aparecer.

Transforme um arquivo de programa em um processo

Um programa é um conjunto de instruções armazenadas. Um processo é uma instância em execução, com memória, estado dos registradores e recursos. Instâncias separadas de um editor podem manter documentos separados, mesmo tendo sido iniciadas a partir do mesmo arquivo de programa.

Para iniciar um aplicativo, o SO verifica o executável e a permissão para executá-lo, cria um espaço de endereços, carrega o código e os dados necessários inicialmente, configura uma pilha e define o endereço de sua instrução inicial. Mais páginas podem ser carregadas quando usadas. O escalonador dá ao processo tempo na CPU, que executa suas instruções de máquina.

Regiões diferentes guardam conteúdos diferentes
RegiãoConteúdo
CódigoInstruções de máquina
DadosVariáveis globais
HeapMemória solicitada durante a execução do programa
PilhaChamadas de função ativas, valores locais e endereços de retorno

Chamar uma função acrescenta informações à pilha; retornar libera a parte dessa chamada. Chamadas repetidas sem um ponto de parada podem esgotar a pilha, causando um estouro da pilha. Um vazamento de memória ocorre quando um programa mantém memória de que não precisa mais, fazendo crescer a quantidade que permanece alocada. Apenas usar uma grande quantidade de memória não é suficiente para diagnosticar um vazamento.

Separe endereços de posições físicas

A memória virtual dá a cada processo seu próprio espaço de endereços. O SO e a unidade de gerenciamento de memória (MMU) da CPU mapeiam endereços virtuais para a RAM física em páginas, frequentemente de 4 KiB. Dois processos podem usar 0x1000 para posições físicas diferentes. As permissões de acesso impedem leituras ou escritas não autorizadas; o SO também pode permitir explicitamente páginas compartilhadas.

Um acesso proibido causa uma falha, que pode encerrar o processo. No Linux ou macOS, um programa em C pode informar uma “falha de segmentação”. Um endereço virtual identifica uma posição no mapa daquele processo, não necessariamente um byte da RAM com a mesma numeração.

Quando a demanda por memória é alta, o SO pode mover páginas inativas para um arquivo de troca ou de paginação no armazenamento. Recuperar uma página usada como exemplo em 100 µs leva cerca de 1.000 vezes o tempo de um acesso à RAM de 100 ns. O movimento repetido de páginas, chamado paginação excessiva, pode dominar o tempo de execução. Reduzir a demanda de memória ativa ou acrescentar RAM pode ajudar.

Acompanhe o pressionamento de uma tecla pelas camadas

Um controlador de teclado sinaliza uma interrupção. O tratador e o driver do SO obtêm o evento e o entregam ao processo do editor. O editor atualiza o documento em sua memória e pede aos serviços gráficos do SO que atualizem a tela. Salvar solicita ao sistema de arquivos que escreva o documento no armazenamento. Quando o processo termina, o SO recupera sua memória e seus recursos. Os dados salvos permanecem; as alterações mantidas apenas na memória do processo desaparecem.

Principais conclusões

  • O firmware inicia antes de o carregador de inicialização carregar o núcleo.
  • Um processo é uma instância de um programa em execução com seu próprio estado.
  • Código, dados, heap e pilha guardam partes diferentes de um processo.
  • A memória virtual mapeia endereços de processos para a RAM e faz cumprir as permissões de acesso.
  • A troca entre memória e armazenamento usa o armazenamento para páginas; transferências frequentes podem causar paginação excessiva.
  • A edição altera a memória de trabalho; salvar escreve o documento no armazenamento.
  • O SO recupera os recursos de um processo quando ele termina.

Exercícios resolvidos de Como os computadores funcionam

5 Lições Interativas

1

Rastrear os caminhos dentro de um computador

13 passos
Relacionar o modelo de programa armazenado a transferências de memória e eventos de dispositivos.
  1. 1
    IntroduçãoAcompanhe uma ação simples

    Abrir uma foto envolve várias partes: a entrada solicita a ação, o armazenamento guarda o arquivo, a RAM mantém o conteúdo de trabalho e o processador segue instruções para exibi-lo. As instruções compartilham a memória com os dados, a arquitetura de von Neumann, de modo que uma só máquina pode executar muitas tarefas.

    Vamos separar essas funções, rastrear uma transferência de memória e ver como os dispositivos recebem atenção (uma interrupção) sem manter a CPU esperando. Essas funções também descrevem um celular ou um controlador dentro de um dispositivo maior.

  2. 2
    ExplicaçãoLocalize os componentes de trabalho

    A CPU executa instruções. A RAM guarda as instruções e os dados atuais; um SSD ou HD guarda arquivos persistentes. Dispositivos de entrada fornecem dados, e dispositivos de saída apresentam resultados ou agem com base neles.

    A placa-mãe conecta esses componentes. Um celular combina muitas funções em um sistema em um chip. O gabinete inteiro do computador não é a CPU: o processador é um componente dentro do sistema.

  3. 3
    Ideia-chaveProgramas são conteúdo da memória

    No modelo de von Neumann, uma única memória principal guarda instruções e dados. A CPU busca instruções binárias nela, permitindo que um novo programa carregado dê uma tarefa diferente ao mesmo hardware.

    Um padrão de bits não tem significado próprio para a memória. O byte 01000001 pode representar 65, a letra “A” do ASCII ou parte de uma instrução. Seu uso fornece a interpretação.

  4. 4
    DesafioMude a tarefa

    Um controlador de temperatura e um notebook contêm processadores, memória e entrada e saída. Por que o controlador é um sistema embarcado e o que permite que o notebook passe da edição de texto para a reprodução de áudio?

    ---reveal---

    O controlador realiza uma tarefa específica dentro de outro dispositivo. O notebook muda de tarefa executando instruções armazenadas diferentes. As funções do hardware permanecem as mesmas enquanto o programa muda o trabalho que realizam.

  5. 5
    AnalogiaEscolha uma caixa de correio e depois seu conteúdo

    Pense nas posições de memória como caixas de correio numeradas. O endereço seleciona uma caixa; os dados são o que ela contém. Uma leitura solicita seu conteúdo, e uma escrita o substitui.

    No barramento de sistema clássico, o barramento de endereços seleciona a posição, o barramento de dados transporta o conteúdo e o barramento de controle transporta o comando de leitura ou escrita. Alterar o conteúdo nunca muda o número da posição.

  6. 6
    ExemploLeia o endereço 200

    A CPU quer o conteúdo do endereço de memória 200. Ela envia 200 pelo barramento de endereços e ativa um comando de leitura no barramento de controle.

    A memória encontra essa posição e coloca seu conteúdo, aqui 7, no barramento de dados. A CPU recebe 7 em um registrador. O endereço fez a seleção; os dados retornados fornecem o valor. Nenhuma escrita ocorre, então o conteúdo da posição 200 permanece 7.

  7. 7
    ExplicaçãoConte posições e transferências

    Com 16 bits de endereço, uma memória endereçável por byte tem 65.536 posições, ou 64 KiB. Acrescentar um bit de endereço dobra essa faixa.

    A largura de dados responde a outra pergunta. Um caminho de 64 bits transfere 8 bytes por transferência. A um bilhão de transferências por segundo, sua largura de banda é 8 GB/s. Mais bits de endereço permitem identificar mais posições; mais bits de dados permitem transferir mais conteúdo em uma transferência.

  8. 8
    DesafioSepare as duas larguras

    Um sistema didático endereçável por byte tem 11 bits de endereço e um caminho de dados de 16 bits. Quanta memória ele pode endereçar e quantos bytes são transferidos de uma vez?

    ---reveal---

    Ele pode endereçar 211=2.048 bytes, ou 2 KiB. O caminho de dados transporta 2 bytes por transferência porque cada byte tem 8 bits. Multiplicar a quantidade de endereços por dois pressuporia incorretamente que cada endereço identifica dois bytes.

  9. 9
    ExplicaçãoConverta entre sinais e valores

    Um microfone fornece entrada, e um alto-falante fornece saída. O som varia continuamente, enquanto um computador guarda valores digitais. Um ADC amostra a entrada e codifica as medições como números; um DAC converte valores digitais de saída em um sinal analógico.

    Uma tela sensível ao toque realiza duas funções: detectar toques fornece entrada e exibir uma imagem fornece saída. Um dispositivo pode conter circuitos de processamento e ainda ser classificado por essa função.

  10. 10
    ConexãoControlador e driver trabalham juntos

    Um controlador é hardware que se comunica com um dispositivo. Um driver é software que transforma solicitações do SO em comandos para esse controlador.

    A consulta periódica pergunta repetidamente se o dispositivo está pronto. Com uma interrupção, o controlador sinaliza quando precisa de atenção. Para um bloco grande, o DMA pode transferir conteúdo entre o dispositivo e a RAM enquanto a CPU trabalha em outra coisa e depois sinalizar a conclusão.

  11. 11
    DesafioEvite verificações sem resultado

    Um scanner envia uma imagem grande para a RAM. A CPU configura a transferência, continua outra tarefa e recebe um sinal de conclusão. Qual é a contribuição do DMA e qual é a da interrupção?

    ---reveal---

    O DMA transfere o bloco da imagem sem que a CPU copie cada byte. A interrupção anuncia que a transferência terminou para que o SO possa tratá-la. A CPU ainda organiza a transferência; ela simplesmente evita fazer todo o trabalho de mover os bytes.

  12. 12
    DesafioRelacione uma leitura a um resultado

    Um controlador de estufa lê um valor digital de temperatura para a RAM, calcula uma decisão e abre uma válvula. Quais são sua entrada e sua saída, e o que precisa passar entre a memória e a CPU?

    ---reveal---

    A leitura da temperatura é a entrada, e o acionamento da válvula é a saída. A CPU precisa tanto das instruções de controle armazenadas quanto da leitura da memória. O endereçamento seleciona essas posições, a transferência de dados transporta seu conteúdo e os sinais de controle coordenam o acesso.

  13. 13
    RecapitulaçãoLeia o caminho completo

    Identifique primeiro a função: entrada, processamento, memória de trabalho, armazenamento persistente ou saída. Depois, distinga a posição selecionada do conteúdo transferido.

    Instruções armazenadas dizem à CPU o que fazer; barramentos ou conexões modernas transportam endereçamento, valores e comandos. Controladores e drivers conectam dispositivos, enquanto interrupções e DMA permitem que o trabalho lento ou volumoso dos dispositivos compartilhe um computador rápido de forma eficiente.

2

Construir e rastrear uma operação do processador

19 passos
Trabalhar das saídas de portas até registradores, um programa curto e estimativas de desempenho.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoTorne a execução visível
  2. 2
    ExplicaçãoLeia a regra de uma porta
  3. 3
    ExemploProduza um vai-um
  4. 4
    DesafioAvalie as saídas intermediárias
  5. 5
    ConexãoMantenha um resultado entre etapas
  6. 6
    ExplicaçãoAtribua as funções do processador
  7. 7
    DesafioMantenha endereço e conteúdo separados
  8. 8
    ExplicaçãoBusque antes de usar a instrução
  9. 9
    ExemploPrimeira instrução: carregar
  10. 10
    ExemploSegunda instrução: somar
  11. 11
    ExemploTerceira e quarta: armazenar e parar
  12. 12
    DesafioExecute ou ignore um desvio
  13. 13
    Ideia-chaveContinue após uma interrupção
  14. 14
    ExemploCompare uma quantidade fixa de ciclos
  15. 15
    ExemploDivida apenas o trabalho paralelo
  16. 16
    ExplicaçãoSobreponha etapas, não significados
  17. 17
    DesafioEstime uma nova tarefa paralela
  18. 18
    DesafioExplique um pipeline rápido sem trabalho
  19. 19
    RecapitulaçãoRelacione bits, estado e tempo
3

Acompanhar um programa do texto à execução

13 passos
Ler um laço de contagem regressiva e comparar construções nativas, interpretação e bytecode.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoSepare as formas do programa
  2. 2
    ExplicaçãoDivida uma instrução em campos
  3. 3
    ExplicaçãoIdentifique o contrato do hardware
  4. 4
    ExemploConfigure uma contagem regressiva
  5. 5
    ExemploConte as execuções, incluindo a saída
  6. 6
    DesafioMude o início e rastreie a saída
  7. 7
    ExplicaçãoConstrua antes de executar
  8. 8
    ConexãoDetermine onde fica o código da biblioteca
  9. 9
    DesafioExplique uma construção bem-sucedida com saída incorreta
  10. 10
    Ideia-chaveA interpretação também executa código de máquina
  11. 11
    DesafioLeve o programa para outra CPU
  12. 12
    DesafioRastreie dois caminhos até o mesmo hardware
  13. 13
    RecapitulaçãoMantenha clara a função de cada camada
4

Comparar memória e calcular efeitos da cache

14 passos
Distinguir capacidade persistente, atrasos de armazenamento e cópias rápidas úteis.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoFaça duas perguntas sobre dados armazenados
  2. 2
    ExplicaçãoSepare conteúdo de trabalho e conteúdo persistente
  3. 3
    ExemploLeia a unidade de capacidade
  4. 4
    DesafioLocalize o último byte
  5. 5
    ExplicaçãoSepare a espera do fluxo
  6. 6
    ExemploEncontre uma parte do atraso de um disco
  7. 7
    DesafioAssocie o comportamento do armazenamento à necessidade
  8. 8
    ExplicaçãoDesça na hierarquia
  9. 9
    ConexãoPreveja os próximos bytes úteis
  10. 10
    ExemploInclua as duas partes de uma falta
  11. 11
    ExemploAltere a taxa de acertos
  12. 12
    DesafioCalcule uma nova média de cache
  13. 13
    DesafioEscolha a melhoria relevante
  14. 14
    RecapitulaçãoAssocie o recurso à necessidade
5

Acompanhar a inicialização, o pressionamento de uma tecla e o salvamento

15 passos
Ver como serviços do SO, processos e memória virtual conectam o hardware a um aplicativo.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoAcompanhe um editor pelo sistema
  2. 2
    ExplicaçãoSolicite um serviço
  3. 3
    ExemploCompartilhe o tempo de execução
  4. 4
    DesafioIdentifique o limite do SO
  5. 5
    ExplicaçãoComece antes do sistema operacional
  6. 6
    ExemploCrie a instância em execução
  7. 7
    ExplicaçãoDê funções diferentes às regiões de memória
  8. 8
    AnalogiaUse um mapa privado de endereços
  9. 9
    DesafioMantenha endereços iguais separados
  10. 10
    Ideia-chaveO armazenamento pode dar suporte à memória, lentamente
  11. 11
    ExemploEntregue o evento de tecla
  12. 12
    ExemploSalve para além da duração do processo
  13. 13
    DesafioSepare dois tipos de lentidão
  14. 14
    DesafioRelacione proteção de processos e salvamento
  15. 15
    RecapitulaçãoRastreie os serviços em ordem

Questões de Como os computadores funcionam

50 Questões de Prática em 5 conjuntos

Conjunto 1: Conexões, tradução e escolhas de memória10 Questões de Prática

Questão 1 de 10

Um dispositivo endereçável por byte aumenta sua largura de endereço de 12 bits para 14 bits. Por qual fator sua capacidade endereçável cresce?
  1. 2
  2. 14/12
  3. 4
  4. 16
Mostrar respostaOcultar resposta
Resposta: C
Cada bit de endereço adicional dobra o número de endereços possíveis. Dois bits adicionais, portanto, multiplicam a faixa por quatro, de 4.096 para 16.384 posições de byte. Um fator de dois conta apenas um dos bits acrescentados; o aumento é exponencial em relação à quantidade de bits, não proporcional a ela.

Questão 2 de 10

Um sensor amostra um canal 24.000 vezes por segundo usando 12 bits por amostra. Qual é sua taxa de dados brutos?
  1. 288.000 bits/s
  2. 36.000 bits/s
  3. 2.000 bits/s
  4. 2.304.000 bits/s
Mostrar respostaOcultar resposta
Resposta: A
Cada uma das 24.000 amostras exige 12 bits, resultando em 288.000 bits por segundo. Dividir esse resultado por oito fornece 36.000 bytes/s, não 36.000 bits/s. Mantenha a unidade solicitada junto ao cálculo para que a conversão de bits em bytes não altere seu significado sem que você perceba.

Questão 3 de 10

Na máquina didática, JUMPZ 18 é buscada no endereço 7 enquanto o ACC é 4. Qual endereço será buscado em seguida?
  1. 7
  2. 18
  3. 4
  4. 8
Mostrar respostaOcultar resposta
Resposta: D
A busca primeiro avança o PC de 7 para 8. Como o ACC é 4, a condição de zero é falsa e a execução mantém esse próximo endereço inalterado. Buscar no endereço 18 seguiria o desvio mesmo com a condição falsa; a presença de um operando de salto não torna um desvio condicional incondicional.

Questão 4 de 10

Uma tarefa exige 9 bilhões de ciclos em uma CPU específica que funciona a 3 GHz. Desconsiderando esperas fora desses ciclos, quanto tempo ela leva?
  1. 0,33 s
  2. 3 s
  3. 6 s
  4. 27 s
Mostrar respostaOcultar resposta
Resposta: B
Três gigahertz fornecem 3 bilhões de ciclos por segundo, então 9 bilhões de ciclos levam três segundos. Multiplicar os dois números para obter 27 usa a taxa no sentido errado. O tempo de execução resulta da divisão dos ciclos necessários pelos ciclos disponíveis a cada segundo.

Questão 5 de 10

Uma instrução didática de 8 bits usa quatro bits de código de operação seguidos por quatro bits de endereço. ADD é 0010. Como ADD 13 é codificada?
  1. 0010 1101
  2. 1101 0010
  3. 0010 1011
  4. 0010 0011
Mostrar respostaOcultar resposta
Resposta: A
O código de operação permanece no primeiro campo, e 13 em decimal é 1101 em binário, então a instrução é 0010 1101. Inverter os campos altera tanto a operação quanto o operando. O operando é um endereço aqui; codificá-lo não exige conhecer o conteúdo armazenado no endereço 13.

Questão 6 de 10

A construção de um programa em C produziu arquivos-objeto de código de máquina, mas ainda precisa resolver suas referências a bibliotecas para formar um executável. Qual etapa é necessária?
  1. Pré-processamento
  2. Montagem
  3. Interpretação
  4. Ligação
Mostrar respostaOcultar resposta
Resposta: D
A ligação conecta os arquivos-objeto e o código de biblioteca ou as dependências de que precisam para formar um executável. A montagem já produziu os arquivos-objeto de código de máquina. Repetir a montagem não fornece a conexão que falta entre uma chamada de função externa e a biblioteca que a implementa.

Questão 7 de 10

Quantos bytes há em 2 KiB?
  1. 2.000 bytes
  2. 256 bytes
  3. 2.048 bytes
  4. 16.384 bytes
Mostrar respostaOcultar resposta
Resposta: C
O prefixo binário Ki significa 1.024, então 2 KiB contêm 2.048 bytes. Usar 2.000 aplica o prefixo decimal k. Multiplicar a quantidade de bytes por oito forneceria o número de bits, uma unidade diferente dos bytes solicitados aqui.

Questão 8 de 10

Um arquivo consulta uma cópia de segurança grande e completa uma vez por ano e prioriza o baixo custo por terabyte. Ele pode tolerar o tempo necessário para enrolar a mídia até os dados. Qual mídia atende a essas necessidades?
  1. Cache SRAM
  2. Fita magnética
  3. DRAM da memória principal
  4. Disco óptico de baixa capacidade
Mostrar respostaOcultar resposta
Resposta: B
A fita magnética é adequada para cópias de segurança grandes e pouco consultadas porque oferece baixo custo por terabyte e a situação aceita acesso sequencial. Uma cache rápida resolveria o problema errado: ela tem pequena capacidade, alto custo por byte e perde seu conteúdo sem energia. O atraso de acesso é aceitável aqui, enquanto a grande capacidade persistente é essencial.

Questão 9 de 10

Uma consulta à cache leva 2 ns e, em uma falta, a RAM leva mais 80 ns. A taxa de acertos é de 90%. Qual é o tempo médio de acesso?
  1. 8,2 ns
  2. 9,8 ns
  3. 82 ns
  4. 10 ns
Mostrar respostaOcultar resposta
Resposta: D
Um acerto custa 2 ns e uma falta custa 82 ns, incluindo a consulta. A média ponderada é 0,90×2+0,10×82=10 ns. O resultado tentador de 9,8 ns trata uma falta como apenas 80 ns e omite a verificação da cache que a pergunta inclui explicitamente.

Questão 10 de 10

Um computador reproduz áudio enquanto um editor e um navegador se revezam em uma sequência de processamento. Qual função do SO atribui esses turnos?
  1. Alocação de arquivos
  2. Enumeração de dispositivos
  3. Escalonamento de processos
  4. Compilação de código-fonte
Mostrar respostaOcultar resposta
Resposta: C
O escalonador seleciona o trabalho pronto e atribui tempo de processador, permitindo que vários aplicativos avancem em uma sequência. Drivers de dispositivo ajudam a comunicar-se com o hardware de áudio, mas atribuir turnos entre todos esses processos é tarefa do escalonamento. Múltiplos aplicativos abertos não exigem um núcleo físico separado para cada um.
Conjunto 2: Componentes, instruções e trabalho cotidiano do computador10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um termostato lê uma temperatura e liga um aquecedor. O que faz dele um sistema computacional embarcado?
  1. Ele armazena suas leituras apenas enquanto a energia permanece ligada.
  2. Ele executa uma tarefa de controle específica dentro de um dispositivo maior.
  3. Ele conecta um dispositivo de entrada diretamente a um dispositivo de saída.
  4. Ele executa os mesmos aplicativos de uso geral que um notebook.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

A CPU escreve o valor 18 no endereço de memória 92. O que deve estar no barramento de endereços?
  1. 18
  2. 110
  3. O comando de escrita
  4. 92
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma máquina lê o código de barras de um pacote e imprime uma etiqueta de envio. Como essas duas ações devem ser classificadas?
  1. A leitura do código de barras é entrada; a impressão da etiqueta é saída.
  2. A leitura do código de barras é saída; a impressão da etiqueta é entrada.
  3. A leitura do código de barras e a impressão da etiqueta são entradas.
  4. A leitura do código de barras e a impressão da etiqueta são saídas.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Dois bits de entrada são ambos 1. Qual é a saída de uma porta XOR de duas entradas?
  1. 1
  2. 10
  3. 0
  4. 11
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Qual componente do processador realiza uma subtração?
  1. A unidade de controle
  2. A ULA
  3. O contador de programa
  4. O registrador de instrução
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Na máquina didática, o endereço 8 guarda LOAD 30 e o endereço 30 guarda 14. O PC começa em 8. Quais são os valores do PC e do ACC após a execução dessa instrução?
  1. O PC é 8; o ACC é 14.
  2. O PC é 9; o ACC é 30.
  3. O PC é 9; o ACC é 14.
  4. O PC é 30; o ACC é 14.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma ferramenta converte LOAD, ADD e outros mnemônicos de linguagem de montagem em instruções binárias. Que tipo de ferramenta é essa?
  1. Um montador
  2. Um interpretador
  3. Um ligador
  4. Um carregador de inicialização
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um valor de 6 bytes começa no endereço de byte 800. Qual é o endereço de seu último byte?
  1. 806
  2. 804
  3. 848
  4. 805
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um editor pede para ler um arquivo que o usuário tem permissão para abrir. Como o editor solicita esse serviço protegido do SO?
  1. Apoderando-se do modo núcleo.
  2. Por meio de uma chamada de sistema.
  3. Por comandos diretos à unidade.
  4. Por meio de seu próprio firmware.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Duas instâncias separadas de um programa usam o endereço virtual 0x3000 para dados privados. Uma armazena 9 nele e a outra armazena 22. Por que os dois valores podem permanecer intactos?
  1. Seus espaços de endereços podem mapeá-lo para posições diferentes da RAM.
  2. O SO mantém os dois em uma página física e alterna os turnos na CPU.
  3. Cada gravação renumera o endereço virtual do outro processo.
  4. Os dois processos compartilham um mapeamento que mantém o valor mais recente.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 3: Rastrear escolhas e comparar desempenho10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Dois computadores têm a mesma velocidade de CPU e RAM. Um deles usa memórias separadas para instruções e dados, com caminhos separados. Qual acesso simultâneo essa separação permite?
  1. Buscar todas as instruções de um programa.
  2. Salvar um arquivo e mantê-lo sem energia.
  3. Executar quaisquer duas instruções dependentes.
  4. Buscar uma instrução e um valor de dados.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Qual é a saída de (A XOR B) AND (NOT C) quando A = 1, B = 1 e C = 0?
  1. 1
  2. 0
  3. 10
  4. 11
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma leitura de memória colocou o endereço selecionado no MAR. Qual registrador recebe o conteúdo retornado pela memória na CPU do modelo didático?
  1. MDR
  2. PC
  3. ACC
  4. CIR
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Uma tarefa leva 18 s em um núcleo: 3 s devem permanecer sequenciais e 15 s são divididos igualmente entre cinco núcleos. Sem sobrecarga de paralelização, quanto tempo ela levaria em cinco núcleos?
  1. 3,6 s
  2. 3 s
  3. 6 s
  4. 15,6 s
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um laço didático tem LOAD 40, SUB 41, STORE 40, JUMPZ 5, JUMP 0, HALT nos endereços 0–5. A posição 40 começa em 2 e a posição 41 guarda 1. Começando com o PC em 0, quantas instruções são executadas até HALT, inclusive?
  1. 10
  2. 6
  3. 9
  4. 11
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um arquivo de bytecode Java é executado em duas famílias de processadores diferentes, cada uma com uma JVM adequada. O que lida com as diferenças de hardware?
  1. Uma largura fixa de bytecode substituindo a ISA.
  2. Um executável nativo ligado ao bytecode.
  3. O SO executando o bytecode como código nativo.
  4. A implementação da JVM específica de cada plataforma.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Duas unidades têm a mesma taxa de transferência sustentada para um arquivo grande. Uma tem tempo de acesso aleatório muito menor. Por que ela ainda pode abrir mais rapidamente um diretório com milhares de arquivos minúsculos?
  1. Arquivos minúsculos aumentam a taxa sustentada de bytes da unidade.
  2. Cada leitura separada pode incorrer em um atraso inicial.
  3. Um tempo de acesso menor dispensa todos os metadados dos arquivos.
  4. Taxas sustentadas iguais dão tempos de abertura iguais.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um programa lê uma lista em ordem de endereço. Depois de buscar um elemento, a cache já tem vários elementos seguintes. Qual propriedade explica esse benefício?
  1. Localidade temporal
  2. Não volatilidade
  3. Localidade espacial
  4. Escalonamento sequencial
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um processo lê oito páginas. Seis já estão na RAM e levam 60 ns cada. Duas exigem, cada uma, uma recuperação adicional de 120 µs no armazenamento, seguida pelo mesmo acesso à RAM de 60 ns. Qual é o tempo médio por página, desconsiderando outros custos?
  1. 30,06 µs
  2. 30 µs
  3. 120,06 µs
  4. 0,03 µs
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

A máquina didática tem LOAD 50, SUB 51, JUMPZ 4, ADD 51, STORE 52, HALT nos endereços 0–5. As posições 50 e 51 guardam ambas 6. O que está armazenado em 52 quando ela para?
  1. 6
  2. 0
  3. 12
  4. 52
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 4: Diagnosticar o comportamento de sistemas computacionais10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma CPU mais rápida quase não melhora uma tarefa que espera repetidamente por dados da memória principal ausentes da cache. Qual mudança trata mais diretamente o gargalo indicado?
  1. Uma cache que mantém mais dados reutilizados pela tarefa.
  2. Uma unidade de armazenamento maior com a mesma velocidade de acesso.
  3. Uma nova tela com resolução maior em pixels.
  4. Uma frequência de clock maior com o mesmo tempo de espera pela memória.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um sistema endereçável por byte tem 18 bits de endereço e um caminho de dados de 32 bits. Quais são sua capacidade endereçável e seus bytes por transferência?
  1. 32 KiB e 18 bytes.
  2. 256 KiB e 32 bytes.
  3. 256 KiB e 4 bytes.
  4. 1 MiB e 4 bytes.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um controlador de armazenamento copia um bloco grande para a RAM após a configuração pela CPU e depois sinaliza a conclusão. Durante a transferência, a CPU trabalha em outro processo. Qual mecanismo explica isso?
  1. DMA e consulta periódica pela CPU.
  2. Cópia pela CPU e interrupção.
  3. Cópia pela CPU e consulta periódica.
  4. DMA seguido de interrupção.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um meio somador de duas entradas recebe 1 e 1. Quais são suas saídas de soma e vai-um?
  1. Soma 1, vai-um 0.
  2. Soma 0, vai-um 1.
  3. Soma 1, vai-um 1.
  4. Soma 0, vai-um 0.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um pipeline ideal tem quatro etapas, cada uma levando um ciclo. Sem interrupções, quantos ciclos são necessários para concluir sete instruções a partir de um pipeline vazio?
  1. 7
  2. 10
  3. 28
  4. 11
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um executável nativo inicia em sua plataforma de destino, mas informa que uma biblioteca compartilhada necessária está ausente. O que isso indica sobre sua ligação de bibliotecas?
  1. Ele depende de código de biblioteca fornecido separadamente durante a execução.
  2. Suas declarações de cabeçalho precisam ser montadas na inicialização.
  3. Seu código de biblioteca necessário está inteiramente copiado no executável.
  4. Seu texto-fonte é o código que está sendo buscado pela CPU.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma unidade de 500 GB é apresentada usando GiB. Qual quantidade está mais próxima de sua capacidade decimal anunciada?
  1. 500 GiB
  2. 512 GiB
  3. 537 GiB
  4. 466 GiB
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um arquivo é mantido em armazenamento em nuvem. Onde seus dados persistentes são guardados fisicamente?
  1. Na RAM do usuário até o próximo desligamento.
  2. Apenas nos sinais de rede que trafegam até o usuário.
  3. Em equipamentos de armazenamento nos centros de dados de um provedor.
  4. Na cache do processador do usuário entre sessões.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma verificação da cache leva 3 ns e uma falta acrescenta um acesso à RAM de 60 ns. De 200 leituras, 150 são acertos. Qual é o tempo médio de leitura?
  1. 15 ns
  2. 17,25 ns
  3. 63 ns
  4. 18 ns
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Dois programas em modo usuário compartilham uma impressora, mas apenas um tem permissão para imprimir. A impressora pode ser substituída depois por um modelo diferente. Qual divisão de trabalho faz cumprir o acesso e mantém os comandos do dispositivo fora dos aplicativos?
  1. O núcleo verifica o acesso e coordena os trabalhos; o driver traduz os comandos do dispositivo.
  2. O driver verifica os nomes dos arquivos; cada aplicativo coordena diretamente os trabalhos da impressora.
  3. O núcleo traduz comandos específicos do modelo; cada aplicativo concede seu próprio acesso.
  4. A impressora escolhe as permissões dos usuários; o escalonador traduz os comandos da impressora.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 5: Relacionar instruções, memória e sistema operacional10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma subtração da ULA resulta em zero. Um desvio condicional seguinte testa se esse resultado foi zero. Qual informação armazenada na CPU permite essa decisão?
  1. A contagem de pulsos de clock.
  2. O indicador de estado de zero.
  3. O endereço do operando.
  4. A largura do barramento de dados.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma interrupção é aceita depois que uma instrução termina, quando o próximo PC é 26 e o ACC é 17. O tratador usa o ACC. Qual estado é necessário para retomar corretamente o cálculo interrompido?
  1. O endereço da instrução concluída e os registradores do tratador.
  2. O endereço da próxima instrução e os registradores do tratador.
  3. O próximo PC salvo e os registradores de trabalho originais.
  4. O endereço inicial do programa e os valores iniciais de registradores.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Em um núcleo, uma tarefa leva 16 s. Doze segundos podem ser executados em paralelo e quatro segundos não podem. Desconsiderando a sobrecarga, qual melhoria ocorre ao passar de quatro para seis núcleos?
  1. O tempo cai de 7 s para 6 s.
  2. O tempo cai de 4 s para 2,67 s.
  3. O tempo cai de 7 s para 4,67 s.
  4. O tempo cai de 12 s para 8 s.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Uma CPU usa um formato de 8 bits com quatro bits de código de operação e quatro bits de endereço direto. Por que esse formato inalterado não pode codificar LOAD 19 diretamente?
  1. O endereço cabe se o código de operação encolher no mesmo formato.
  2. Um operando de LOAD sempre usa toda a largura da instrução.
  3. Uma CPU hospedeira de 64 bits estende todo operando didático.
  4. O campo de endereço direto pode identificar apenas de 0 a 15.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Uma pessoa desenvolvedora edita um arquivo-fonte em C e o compila em um arquivo-objeto atualizado, mas pula a ligação. O executável antigo é iniciado, e suas bibliotecas compartilhadas permanecem inalteradas. Qual etapa de construção falta e por que o comportamento antigo persiste?
  1. Reprocessar os cabeçalhos; iniciar um executável antigo incorpora novos objetos automaticamente.
  2. Montar novamente o executável antigo; suas codificações mudam quando o código-fonte é editado.
  3. Ligar novamente o objeto atualizado; o executável antigo ainda tem as instruções anteriores do programa.
  4. Recarregar as bibliotecas compartilhadas; suas instruções substituem todas as instruções alteradas do arquivo-objeto.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um usuário salva um documento e depois desliga o computador normalmente. Qual local mantém o documento salvo sem energia?
  1. O SSD ou outro armazenamento não volátil.
  2. O acumulador da CPU até a próxima inicialização.
  3. As células DRAM que guardavam o documento aberto.
  4. A cache SRAM usada pelo processo do editor.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Duas caches levam 2 ns cada para serem verificadas. Uma falta acrescenta 100 ns. Uma tem acerto em 92% das leituras; a outra, em 96%. O que acontece com o tempo médio de acesso?
  1. Ele cai de 9,84 ns para 5,92 ns.
  2. Ele cai de 8 ns para 4 ns.
  3. Ele cai 4% a partir de 10 ns.
  4. Ele cai de 10 ns para 6 ns.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Uma tarefa de controle gasta 1 ms em uma etapa sequencial fixa e 6 ms em trabalho que se divide perfeitamente entre três núcleos. Um requisito de tempo real estabelece um prazo de 4 ms. Desconsiderando a sobrecarga, qual é o tempo ideal de execução e o resultado em relação ao prazo?
  1. 3 ms, cumprindo o prazo.
  2. Cerca de 2,33 ms, cumprindo o prazo.
  3. 4 ms, cumprindo o prazo.
  4. 7 ms, ultrapassando o prazo.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um processo adquire repetidamente memória da heap de que não precisa mais e nunca a libera. Depois, transferências frequentes de páginas para o armazenamento dominam seu tempo de execução. Qual sequência explica a lentidão?
  1. Um estouro da pilha mantém blocos antigos da heap, e a troca causa paginação excessiva.
  2. Um vazamento de memória aumenta a demanda, e a troca intensa causa paginação excessiva.
  3. Um vazamento de memória aumenta a demanda, mas as transferências de página são consultas rápidas à cache.
  4. Um vazamento de memória aumenta os arquivos salvos enquanto a demanda de RAM permanece igual.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um PC informa que as verificações de inicialização do firmware terminaram, chega a um menu do carregador de inicialização e depois informa que falta uma imagem do núcleo. Após desligar e ligar o computador, a configuração do firmware ainda abre. O que explica tanto a etapa de inicialização concluída quanto a tela de configuração disponível?
  1. O núcleo inicializou seus drivers, mas não iniciou o carregador; o firmware permanece na RAM.
  2. O carregador concluiu o carregamento do núcleo; a configuração do firmware é executada na RAM do processo anterior.
  3. O núcleo chegou ao modo usuário antes de ser carregado; o carregador recria o firmware após o desligamento.
  4. O carregador foi executado, mas não carregou o núcleo; o firmware persistente ainda pode ser executado.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Travou em uma questão sua? Ajuda com Tarefas

Termos-Chave

109 Termos-Chave, cada um com sua definição

A

Acerto e falta na cache
Um acerto na cache encontra o conteúdo solicitado na cache; uma falta exige recuperá-lo de um nível mais lento, acrescentando atraso a esse acesso.
Uma falta para um elemento de lista pode carregar também seus bytes vizinhos, fazendo com que acessos posteriores sejam acertos na cache.
Acesso direto à memória (DMA)
O acesso direto à memória permite que um dispositivo ou controlador de DMA transfira blocos para a RAM ou a partir dela sem que a CPU copie cada byte individualmente.
Após configurar o DMA para uma transferência de imagem, a CPU pode realizar outro trabalho enquanto o bloco é transferido.
Acumulador
Um acumulador é um registrador de trabalho que guarda resultados aritméticos ou lógicos e fornece operandos em um modelo simples de processador.
Em uma máquina acumuladora simples, ADD atualiza o ACC, enquanto STORE copia o ACC para a memória sem alterar seu valor.
Armazenamento em nuvem
O armazenamento em nuvem é um serviço que mantém arquivos nos equipamentos físicos de armazenamento de um provedor e os torna acessíveis por uma rede.
Um arquivo remoto pode ser compartilhado entre dispositivos, mas sua leitura depende da conexão e do provedor.
Armazenamento secundário
O armazenamento secundário mantém programas e dados sem energia, oferecendo capacidade persistente acessada mais lentamente que a memória principal de trabalho.
Um arquivo de aplicativo permanece no SSD após seu processo em execução terminar e sua RAM ser recuperada.
Arquitetura de von Neumann
A arquitetura de von Neumann coloca instruções de programas e dados em uma única memória principal conectada a um processador e a dispositivos de entrada e saída.
A busca de uma instrução e a leitura de um dado competem pelo caminho compartilhado de memória no modelo clássico.
Arquitetura do conjunto de instruções (ISA)
Uma arquitetura do conjunto de instruções define as instruções, codificações e registradores de um processador, estabelecendo sua interface com software em código de máquina.
Uma construção nativa para ARM tem como destino uma ISA diferente de uma construção nativa x86-64 do mesmo programa-fonte.
Arquitetura Harvard
A arquitetura Harvard mantém instruções e dados em memórias separadas, com caminhos separados, permitindo um acesso de cada tipo ao mesmo tempo.
Um microcontrolador pode buscar sua próxima instrução enquanto lê o valor de um sensor pelo caminho de dados.

Á

Área de alocação dinâmica (heap)
A heap é uma região da memória de um processo usada para alocações solicitadas durante a execução, como armazenamento para uma coleção que cresce.
Um programa que constrói uma lista de tamanho variável pode obter memória da heap à medida que recebe elementos adicionais.

B

Barramento
Um barramento é um caminho de comunicação compartilhado que transporta sinais entre componentes de um computador; um barramento paralelo transporta vários bits de uma vez.
Um barramento de sistema clássico permite que o processador envie um endereço de memória e receba o conteúdo armazenado nele.
Barramento de controle
O barramento de controle transporta sinais de comando e temporização que coordenam transferências, incluindo sinais de leitura, escrita e solicitação de interrupção.
Um sinal de escrita diz à memória que armazene o conteúdo do barramento de dados na posição selecionada pelo barramento de endereços.
Barramento de dados
O barramento de dados transporta instruções ou valores transferidos entre o processador, a memória e os dispositivos, permitindo leituras e escritas.
Uma leitura de memória retorna um byte armazenado pelo barramento de dados depois que sua posição é selecionada.
Barramento de endereços
O barramento de endereços transporta a posição selecionada para um acesso à memória ou a um dispositivo, identificando a posição à qual pertence o conteúdo transferido.
Durante uma escrita da CPU no endereço 300, o barramento de endereços transporta 300 enquanto o barramento de dados transporta o valor.
Bytecode
Bytecode é uma representação de instruções para uma máquina virtual, que permite distribuir um programa independentemente de uma CPU física específica.
Um arquivo de bytecode Java pode ser executado por implementações diferentes da JVM em computadores ARM e x86-64.

C

Carregador de inicialização (bootloader)
Um carregador de inicialização é um software de inicialização que carrega o núcleo do sistema operacional do armazenamento para a memória e transfere a execução a ele.
Depois que o firmware prepara o hardware, o carregador de inicialização traz o núcleo para a RAM para que a inicialização do SO possa continuar.
Chamada de sistema
Uma chamada de sistema é uma solicitação controlada de um programa ao núcleo do sistema operacional para um serviço protegido, como acesso a arquivos ou dispositivos.
O núcleo pode verificar a permissão do usuário para um arquivo antes de realizar uma solicitação de leitura de um aplicativo.
Ciclo de busca, decodificação e execução
O ciclo de busca, decodificação e execução é o processo repetido de obter uma instrução de máquina, interpretar sua operação e realizá-la.
Uma instrução LOAD precisa primeiro ser buscada antes que sua execução realize a leitura separada de dados.
Ciclo de clock
Um ciclo de clock é um intervalo de temporização no sinal de clock do processador, que coordena mudanças nos circuitos sem necessariamente concluir uma instrução.
Um clock de 3 GHz fornece cerca de 0,33 ns por ciclo, enquanto uma instrução pode envolver várias etapas internas.
Código de máquina
Código de máquina é a codificação binária de instruções que um processador executa diretamente de acordo com sua arquitetura do conjunto de instruções.
Um executável x86-64 contém codificações de instruções que um processador ARM não pode executar nativamente.
Código de operação (opcode)
Um código de operação é a parte de uma instrução de máquina que especifica sua operação, como carregar um valor, somar ou fazer um desvio.
Na codificação de uma instrução, alterar o código de operação pode transformar um carregamento de dados em outra operação.
Código-fonte
Código-fonte é o texto legível por pessoas de um programa, escrito em uma linguagem de programação antes da tradução ou interpretação.
Editar um arquivo-fonte em C altera seu texto, mas o executável nativo anterior permanece inalterado até ser reconstruído.
Compilação em tempo de execução (JIT)
A compilação em tempo de execução traduz código em instruções de máquina nativas enquanto o programa é executado, frequentemente focando nas partes executadas com frequência.
Depois de identificar um laço muito usado, um ambiente de execução pode compilá-lo para que repetições posteriores evitem interpretação repetida.
Compilador
Um compilador traduz código de programa para outra representação, frequentemente código de máquina ou bytecode, antecipadamente ou durante a execução.
Um compilador antecipado pode transformar um programa em C em código para o processador selecionado como destino.
Conceito de programa armazenado
O conceito de programa armazenado significa que instruções são representadas como conteúdo binário na memória para que um processador as busque e execute.
Carregar um programa diferente permite que o mesmo computador edite um documento depois de executar um jogo.
Consulta periódica (polling)
Consulta periódica é a verificação repetida do estado de um dispositivo para descobrir se ele tem dados prontos ou concluiu uma operação atribuída.
Um processador que verifica repetidamente um sensor ocioso gasta tempo em verificações que não retornam dados novos.
Contador de programa
O contador de programa guarda o endereço da próxima instrução a buscar, avançando durante a busca e mudando quando um desvio é realizado.
Um salto de volta ao endereço 0 substitui o próximo endereço sequencial do PC para que o programa possa repetir um laço.
Controlador de dispositivo
Um controlador de dispositivo é um hardware que cuida da comunicação de baixo nível com o dispositivo e fornece registradores de estado e de dados para o sistema.
Um controlador de armazenamento recebe uma solicitação de transferência e informa quando seu bloco de dados chegou à RAM.
Conversor analógico-digital
Um conversor analógico-digital amostra um sinal analógico e representa os valores medidos como números digitais para processamento pelo computador.
Os circuitos de entrada de um microfone convertem medições de som em números armazenados como uma gravação de áudio.
Conversor digital-analógico
Um conversor digital-analógico transforma valores representados digitalmente em um sinal analógico que pode acionar uma saída, como um alto-falante.
Reproduzir uma gravação armazenada exige converter suas amostras digitais em um sinal para o alto-falante.

D

Desvio
Um desvio é uma instrução que altera o endereço da próxima instrução, incondicionalmente ou somente quando um teste especificado é satisfeito.
Uma instrução de salto se zero, como JUMPZ, envia uma CPU ao seu destino somente quando o acumulador é zero no momento da execução.
Disco óptico
Um disco óptico armazena dados como marcas lidas por um laser em uma camada refletiva, fornecendo mídia removível como CDs, DVDs e discos Blu-ray.
Um DVD de camada única normalmente armazena 4,7 GB, enquanto um disco Blu-ray de camada única normalmente armazena 25 GB.
Dispositivo de entrada
Um dispositivo de entrada fornece dados a um computador, incluindo dados inseridos por uma pessoa ou medições coletadas do mundo físico.
Um sensor de luz fornece entrada que um controlador usa para decidir se uma lâmpada deve ser ligada.
Dispositivo de saída
Um dispositivo de saída apresenta os resultados de um computador ou age fisicamente com base neles, por exemplo exibindo uma imagem ou movendo um atuador.
Uma válvula é um dispositivo de saída quando um controlador a abre em resposta a uma temperatura medida.
Driver de dispositivo
Um driver de dispositivo é um software que traduz solicitações gerais do sistema operacional nos comandos necessários a um controlador de dispositivo específico.
Um driver de impressora transforma a solicitação de impressão do SO em comandos que a impressora conectada entende.

E

Escalonador
O escalonador é o componente do SO que seleciona trabalho pronto para receber tempo de processador, compartilhando os recursos de execução disponíveis entre processos.
Turnos curtos permitem que um reprodutor de música e um editor continuem avançando em uma única sequência de processamento.
Escrita do resultado (write-back)
A escrita do resultado é a etapa da execução de uma instrução que coloca um resultado calculado no registrador de destino ou na posição de memória de destino.
Após uma operação aritmética, escrever o resultado em seu destino o torna disponível para instruções posteriores.
Estouro da pilha (stack overflow)
Um estouro da pilha ocorre quando as chamadas de função exigem mais espaço do que o disponível na pilha, frequentemente após chamadas se repetirem sem um ponto de parada.
Uma função que continua chamando a si mesma acrescenta registros de chamada até que o processo esgote o espaço disponível na pilha.
Execução em pipeline
A execução em pipeline sobrepõe etapas de instruções diferentes, aumentando a taxa de conclusão de instruções depois que o pipeline está preenchido.
Enquanto uma instrução é executada, outra pode ser decodificada e uma terceira pode ser buscada em um pipeline de três etapas.
Executável
Um executável é um arquivo de programa preparado para ser carregado e executado, contendo código e informações de apoio no formato esperado por uma plataforma.
Um executável nativo pode depender tanto da ISA de seu processador de destino quanto do formato de arquivo de seu sistema operacional.

F

Firmware
Firmware é software de baixo nível armazenado em memória não volátil que controla hardware ou fornece instruções de inicialização antes da execução do SO principal.
O firmware UEFI prepara o hardware de um PC e inicia um carregador de inicialização antes de o núcleo ser carregado na RAM.
Fita magnética
A fita magnética é uma mídia de armazenamento persistente que registra dados em sequência, oferecendo grande capacidade a baixo custo com acesso lento às posições.
Um grande arquivo pode aceitar o atraso de enrolamento necessário para recuperar dados acessados apenas ocasionalmente.
Flip-flop
Um flip-flop é um circuito de armazenamento controlado por clock que captura um bit em uma borda de clock e mantém esse estado entre atualizações.
Fileiras de flip-flops podem guardar valores de registradores e ser atualizadas juntas na borda de clock apropriada.
Frequência de clock
Frequência de clock é a taxa dos ciclos de temporização do processador, medida em hertz; ela influencia o tempo de execução junto com o trabalho realizado por ciclo.
Uma tarefa fixa de seis bilhões de ciclos leva 1,5 s a 4 GHz, mas projetos diferentes de CPU podem exigir quantidades diferentes de ciclos.

H

Hardware
Hardware é o equipamento físico de um sistema computacional, incluindo processador, placas de circuito, chips de memória, unidades de armazenamento e dispositivos.
O teclado e os módulos de RAM de um notebook são hardware, enquanto o editor de texto executado nele é software.
Hierarquia de memória
A hierarquia de memória combina armazenamentos pequenos e rápidos perto da CPU com níveis maiores e mais lentos, equilibrando capacidade, velocidade e custo por byte.
Registradores e caches atendem ao trabalho imediato, enquanto RAM, unidades e arquivos fornecem armazenamentos progressivamente maiores.

I

Indicador de estado (flag)
Um indicador de estado é uma condição armazenada na CPU e definida por uma operação, como um resultado zero ou negativo, que uma instrução posterior pode testar.
Um desvio condicional pode verificar o indicador de zero para decidir se continua ou salta para outro endereço.
Interface gráfica do usuário (GUI) e interface de linha de comando (CLI)
Uma GUI fornece controles visuais, como janelas e ícones; uma CLI aceita comandos digitados que também podem ser combinados em scripts.
Um usuário pode navegar visualmente por uma pasta ou usar ls em uma linha de comando para solicitar a listagem de seus arquivos.
Interpretador
Um interpretador é um programa que realiza as operações de outro programa durante a execução, usando sua própria implementação no computador hospedeiro.
A CPU executa o código de máquina de um interpretador enquanto ele implementa as operações de um programa de alto nível.
Interrupção
Uma interrupção é um sinal que solicita a atenção do processador, fazendo com que um tratador apropriado seja executado antes de o trabalho interrompido continuar.
Uma transferência de disco concluída pode gerar uma interrupção para que o SO saiba que os dados solicitados estão prontos.

L

Largura de banda
Largura de banda é a quantidade de dados que um caminho de comunicação pode transferir por segundo, frequentemente expressa em bytes por segundo ou bits por segundo.
Um caminho mais largo pode transferir mais bytes por transferência, aumentando a largura de banda quando a taxa de transferências é fixa.
Latch
Um latch é um circuito de realimentação que pode manter um bit enquanto alimentado, formando um componente básico para armazenar estado digital.
Portas conectadas de forma cruzada devolvem suas saídas umas às outras para que o circuito possa lembrar seu estado.
Lei de Moore
A lei de Moore é a observação histórica de que a quantidade de transistores em chips cresceu aproximadamente ao dobro a cada dois anos durante um longo período.
Mais transistores podem fornecer caches maiores e núcleos adicionais sem dobrar a velocidade de todos os programas.
Ligação estática e dinâmica
A ligação estática copia o código necessário de bibliotecas para um executável; a ligação dinâmica conecta o executável a bibliotecas compartilhadas fornecidas separadamente.
Um programa ligado dinamicamente pode falhar ao iniciar se uma biblioteca compartilhada compatível necessária estiver ausente.
Ligador (linker)
Um ligador combina arquivos-objeto e resolve referências a bibliotecas para produzir um executável, usando código estático ou dependências de bibliotecas compartilhadas.
Uma função externa não resolvida após a montagem exige trabalho de ligação, não outra verificação da sintaxe do código-fonte.
Linguagem de montagem (assembly)
A linguagem de montagem representa instruções de máquina com mnemônicos legíveis, nomes de registradores e rótulos diretamente ligados a uma ISA específica.
Uma contagem regressiva escrita com LOAD, SUB e saltos expõe as operações que implementam seu laço.
Linha de cache
Uma linha de cache é o bloco de bytes vizinhos da memória transferido junto para uma cache da CPU, normalmente de 64 bytes em processadores modernos.
Buscar um byte solicitado também pode copiar bytes próximos que leituras posteriores encontrarão sem outro acesso à RAM.
Localidade espacial
Localidade espacial é a tendência de acessar endereços próximos de um endereço usado recentemente, tornando úteis as cópias de bytes vizinhos.
Ler elementos consecutivos de uma lista se beneficia quando a busca de uma linha de cache traz vários deles para perto.
Localidade temporal
Localidade temporal é a tendência de instruções ou dados usados recentemente serem acessados de novo em breve, tornando úteis as cópias mantidas.
Um laço lê e atualiza repetidamente seu contador, reutilizando o mesmo conteúdo de trabalho em um curto período.

M

Máquina virtual
Uma máquina virtual de linguagem é um software que fornece o ambiente de instruções necessário para executar bytecode em um computador físico.
A JVM interpreta ou compila bytecode Java usando uma implementação construída para a plataforma hospedeira.
Meio somador
Um meio somador soma dois bits de entrada e produz bits separados de soma e vai-um, usando XOR para a soma e AND para o vai-um.
Somar dois bits iguais a 1 produz vai-um 1 e soma 0, representando o número binário de dois bits 10.
Memória cache
Uma cache da CPU é um armazenamento SRAM pequeno e rápido que guarda cópias de blocos de instruções e dados de níveis mais lentos da memória para reutilização rápida.
Um laço pode encontrar repetidamente suas instruções na cache em vez de buscá-las na RAM a cada vez.
Memória de acesso aleatório (RAM)
A RAM é uma memória de trabalho de leitura e escrita com acesso direto às posições; a RAM comum de computadores é volátil e guarda instruções e dados em execução.
Um editor mantém o conteúdo atual de um documento na RAM, enquanto uma cópia salva fica em armazenamento não volátil.
Memória endereçável por byte
A memória endereçável por byte atribui um endereço distinto a cada byte, de modo que um valor de vários bytes ocupa várias posições de endereço consecutivas.
Um valor de quatro bytes que começa em 1000 ocupa os endereços de 1000 a 1003, deixando 1004 como próxima posição.
Memória RAM dinâmica (DRAM)
A DRAM é uma memória volátil que armazena bits como carga em capacitores e exige atualização regular, sendo adequada para uma memória principal de grande capacidade.
A atualização da DRAM restaura a carga antes que sua dissipação torne os valores dos bits armazenados pouco confiáveis durante o funcionamento.
Memória RAM estática (SRAM)
A SRAM é uma memória volátil que mantém bits em circuitos do tipo latch sem atualização enquanto alimentada, fornecendo armazenamento rápido, mas caro por bit.
As caches da CPU usam SRAM para reduzir atrasos de acesso, embora ela custe mais por byte que a DRAM da memória principal.
Memória somente de leitura (ROM)
A ROM é uma memória não volátil associada a conteúdo mantido e normalmente fixo; o firmware moderno geralmente usa memória flash atualizável.
Chamar de “ROM” o espaço de arquivos de um celular, no qual se grava frequentemente, confunde seu armazenamento flash com o conteúdo fixo de inicialização.
Memória virtual
A memória virtual dá aos processos seus próprios espaços de endereços, mapeando seus endereços para a memória física e fazendo cumprir as permissões de acesso.
Dois processos podem usar o mesmo endereço virtual escrito enquanto mantêm seus valores privados em páginas diferentes da RAM.
Montador
Um montador traduz instruções de linguagem de montagem em suas codificações de máquina para a arquitetura do conjunto de instruções selecionada.
O mnemônico de uma adição se torna a instrução binária que a CPU de destino pode buscar e executar.

N

Nivelamento de desgaste
Nivelamento de desgaste é uma técnica do controlador flash que distribui operações de apagamento e gravação entre as células para distribuir sua resistência limitada a gravações.
Redirecionar gravações repetidas entre as células ajuda a evitar o desgaste prematuro de uma região atualizada com frequência.
Núcleo de processamento
Um núcleo de processamento é uma unidade com os recursos de controle, aritmética e estado de trabalho necessários para executar uma sequência de instruções.
Quatro núcleos podem executar trabalhos separados ao mesmo tempo quando o sistema operacional tem tarefas prontas.
Núcleo do sistema operacional (kernel)
O núcleo é a parte central de um sistema operacional que controla recursos privilegiados e faz cumprir o limite de proteção em torno dos aplicativos.
Um aplicativo em modo usuário solicita serviços de arquivos ao núcleo em vez de emitir comandos irrestritos diretamente à unidade.

O

Operando
Um operando fornece a entrada ou o destino de uma instrução, como um registrador, um endereço ou um valor imediato, conforme definido pela instrução.
Em uma instrução como LOAD 10, o operando é o endereço 10, cujo conteúdo é lido para o acumulador, ACC.

P

Página
Uma página é um bloco de tamanho fixo usado em mapeamentos de memória virtual e na movimentação de conteúdo entre a RAM e o armazenamento de apoio.
Um sistema que usa páginas de 4 KiB mapeia e recupera memória em blocos que contêm 4.096 bytes cada.
Paginação excessiva (thrashing)
Paginação excessiva é uma lentidão acentuada causada quando a movimentação frequente de páginas entre a RAM e o armazenamento consome grande parte do tempo de execução do sistema.
Fechar aplicativos que consomem muita memória pode reduzir o tráfego de páginas e deixar mais RAM para o trabalho ativo restante.
Palavra
Uma palavra é o tamanho natural dos dados que um processador trata em uma operação, normalmente refletido na largura de seus registradores de uso geral.
Uma palavra de 64 bits comporta oito bytes, mas isso não exige que toda conexão use 64 fios paralelos.
Pilha de execução
A pilha de execução é uma região da memória de um processo que acompanha chamadas de função ativas, incluindo endereços de retorno e valores locais necessários a essas chamadas.
Uma chamada de função acrescenta suas informações de trabalho, e o retorno libera a parte da pilha usada por essa chamada.
Porta E (AND)
Uma porta E produz 1 somente quando todos os seus bits de entrada são 1; qualquer entrada igual a 0 faz sua saída ser 0.
Uma porta E de duas entradas produz um bit de vai-um quando um meio somador recebe dois bits de entrada iguais a 1.
Porta lógica
Uma porta lógica é um circuito que recebe um ou mais bits de entrada e produz um bit de saída segundo uma regra fixa, como E ou NÃO.
A combinação de portas permite que um processador compare padrões de bits, calcule somas e controle o destino dos resultados.
Porta NÃO (NOT)
Uma porta NÃO inverte seu único bit de entrada, produzindo 1 para uma entrada 0 e 0 para uma entrada 1.
Se um sinal que entra em uma porta NÃO é 0, a próxima porta conectada recebe 1 de sua saída.
Porta NÃO E (NAND)
Uma porta NÃO E inverte o resultado de E, produzindo 0 somente quando todas as entradas são 1; portas NAND sozinhas podem implementar qualquer função lógica.
Conectar as duas entradas de uma porta NAND a um bit faz com que sua saída seja o oposto desse bit.
Porta NÃO OU (NOR)
Uma porta NÃO OU inverte o resultado de OU, produzindo 1 somente quando todas as entradas são 0; portas NOR sozinhas podem implementar qualquer função lógica.
Quando uma de duas entradas é 1, sua saída NOR é 0 porque seu resultado OU seria 1.
Porta OU (OR)
Uma porta OU produz 1 quando pelo menos uma entrada é 1, incluindo o caso em que todas as entradas são 1.
Duas entradas iguais a 1 mantêm a saída de OU em 1; interpretá-la como “uma, mas não ambas” seria confundi-la com OU exclusivo.
Porta OU exclusivo (XOR)
Uma porta OU exclusivo de duas entradas produz 1 quando suas entradas são diferentes e 0 quando são iguais, implementando a regra do bit de soma de um meio somador.
Um meio somador que recebe 1 e 1 tem um bit de soma zero da porta XOR e um bit de vai-um da porta AND.
Processo
Um processo é uma instância de um programa em execução com seu próprio estado de execução, espaço de endereços e recursos gerenciados pelo sistema operacional.
Instâncias separadas de um editor podem usar o mesmo arquivo de programa enquanto mantêm estados diferentes de documentos na memória.

R

Redução de frequência por aquecimento (thermal throttling)
A redução de frequência por aquecimento é a diminuição da frequência de clock do processador quando a temperatura está alta demais, protegendo o chip enquanto reduz sua taxa de trabalho.
Um cálculo prolongado pode ficar mais lento quando o resfriamento não consegue remover o calor produzido na frequência de clock anterior.
Registrador
Um registrador é uma pequena posição de armazenamento muito rápida dentro do processador que guarda um valor de trabalho imediato, endereço ou instrução.
Manter um contador de laço em um registrador evita buscar repetidamente esse valor de trabalho na memória principal.
Registrador de dados de memória
O registrador de dados de memória guarda o conteúdo recém-lido da memória ou que será escrito nela; também é chamado registrador de buffer de memória.
Durante STORE, o MDR recebe o valor do acumulador antes que esse valor seja escrito na posição selecionada.
Registrador de endereços de memória
O registrador de endereços de memória guarda a posição selecionada para uma leitura ou escrita na memória, fornecendo o endereço do acesso.
Para ler um valor de dados da posição 20, uma CPU coloca 20 no MAR antes de solicitar a leitura.
Registrador de instrução
O registrador de instrução guarda a instrução buscada enquanto ela é decodificada e executada; também é chamado registrador de instrução atual.
Depois que uma instrução chega ao MDR, uma CPU a copia para o CIR para que sua operação possa ser decodificada.
RISC e CISC
RISC e CISC são estilos de projeto de conjuntos de instruções que favorecem, respectivamente, operações simples e regulares e operações mais complexas.
As formas compactadas do RISC-V mostram por que identificar um projeto RISC não estabelece um único comprimento de instrução.

S

Sistema de arquivos
Um sistema de arquivos organiza o conteúdo armazenado em arquivos e pastas com nomes e acompanha suas posições, tamanhos, datas e permissões de acesso.
O caminho /home/sam/notes.txt identifica um arquivo Linux sem revelar quais blocos de armazenamento o contêm.
Sistema em um chip (SoC)
Um sistema em um chip combina várias funções de computador, como CPU, gráficos e circuitos de controle de dispositivos, em um único chip integrado.
Um celular usa um sistema em um chip para acomodar muitas funções computacionais em um dispositivo pequeno e eficiente no consumo de energia.
Sistema embarcado
Um sistema embarcado é um computador integrado a um dispositivo maior para realizar uma tarefa específica usando seu processador, memória e entrada e saída.
O controlador de uma máquina de lavar lê sensores e liga ou desliga seu motor por meio de um programa de controle armazenado.
Sistema operacional
Um sistema operacional gerencia recursos de hardware e fornece serviços que os aplicativos usam para executar, acessar arquivos e comunicar-se com dispositivos.
Um editor solicita um arquivo pelo nome enquanto o SO localiza seus dados e coordena o dispositivo de armazenamento.
Sistema operacional de tempo real
Um sistema operacional de tempo real fornece garantias especificadas de tempo de resposta para tarefas cuja correção depende do cumprimento de prazos.
Uma resposta de controle industrial precisa chegar antes de seu prazo, mesmo que uma resposta posterior calcule o mesmo valor.
Software
Software consiste em programas e nos dados com que trabalham, fornecendo as instruções e informações que atribuem tarefas úteis ao hardware.
Um editor de imagens usa instruções de software para alterar os valores de cor armazenados em uma fotografia.

T

Tabela-verdade
Uma tabela-verdade lista a saída de um circuito para cada combinação possível de suas entradas, tornando explícita a regra completa de entrada e saída.
Uma porta de duas entradas precisa de quatro linhas porque seus dois bits têm quatro combinações possíveis de entrada.
Taxa de acertos
A taxa de acertos é o número de acessos encontrados em uma cache dividido pelo total de acessos, expressando a frequência com que a cópia rápida está disponível.
Uma cache que encontra 950 de 1.000 valores solicitados tem uma taxa de acertos de 95% e uma taxa de faltas de 5%.
Tempo de acesso e taxa de transferência
Tempo de acesso é o atraso até que os dados comecem a chegar, enquanto taxa de transferência é a quantidade entregue por segundo depois que a transferência começa.
Milhares de arquivos minúsculos incorrem em atrasos de acesso repetidos, enquanto um arquivo grande destaca a taxa de transferência sustentada.
Transistor
Um transistor é um componente controlado eletronicamente que funciona como interruptor em circuitos digitais, ajudando a representar e manipular bits.
Grupos de transistores implementam as regras das portas usadas dentro de uma unidade lógica e aritmética e de seus registradores.
Tratador de interrupção
Um tratador de interrupção é uma rotina que responde a uma interrupção enquanto o estado do programa interrompido é preservado para retomada posterior.
Um tratador de teclado ajuda a processar um evento de tecla, após o que o cálculo interrompido pode continuar.
Troca entre memória e armazenamento (swapping)
A troca entre memória e armazenamento move páginas entre a RAM e o armazenamento de apoio, permitindo que conteúdo inativo saia da RAM para que outro trabalho use o espaço.
Uma página mantida em um arquivo de troca precisa ser recuperada antes que seu conteúdo ausente possa ser usado novamente na RAM.

U

Unidade de controle
A unidade de controle coordena a execução de instruções, buscando-as e decodificando-as e enviando sinais às outras partes do processador.
Para uma instrução ADD, a unidade de controle seleciona os operandos enquanto a ULA realiza a adição.
Unidade de disco rígido (HD ou HDD)
Uma unidade de disco rígido armazena bits magneticamente em pratos giratórios, usando uma cabeça móvel que introduz atrasos de busca e rotação.
Ler pequenos arquivos dispersos faz com que um HD incorra repetidamente em atrasos antes de transferir cada bloco.
Unidade de estado sólido (SSD)
Uma unidade de estado sólido usa células flash não voláteis sem peças móveis, fornecendo acesso aleatório rápido a programas e arquivos persistentes.
Um SSD é adequado para os arquivos em uso de um notebook porque o acesso rápido e a resistência a choques ajudam no uso portátil.
Unidade de gerenciamento de memória (MMU)
A unidade de gerenciamento de memória é um hardware da CPU que traduz endereços virtuais usando mapeamentos estabelecidos pelo SO e verifica permissões de acesso.
Um acesso a uma posição protegida causa uma falha quando o mapeamento do processo não permite a operação solicitada.
Unidade de processamento gráfico (GPU)
Uma unidade de processamento gráfico é um processador especializado em trabalho altamente paralelo que aplica operações semelhantes a muitos valores de dados.
Atualizar muitos pixels de uma imagem é adequado ao processamento por GPU porque o trabalho contém muitos cálculos semelhantes.
Unidade lógica e aritmética (ULA)
A unidade lógica e aritmética é o circuito da CPU que realiza operações aritméticas, lógica bit a bit, deslocamentos e comparações e registra condições dos resultados.
Subtrair um valor dele mesmo produz zero, que a ULA pode registrar para um desvio condicional posterior.

V

Vazamento de memória
Um vazamento de memória ocorre quando um programa mantém memória de que não precisa mais e deixa de liberá-la, permitindo o acúmulo de alocações desnecessárias.
Um programa de longa execução que abandona repetidamente alocações desnecessárias na heap pode aumentar continuamente seu uso de memória.

Sobre esta aula

Por StudeliRelatar um erro

Crie seus próprios Materiais de Estudo

Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.

Começar