Buscar

arquitetura_de_computadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 107 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 107 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 107 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Arquitetura de Computadores
SIMONE MARKENSON
1ª Edição
Brasília/DF - 2020
Ficha catalográfica elaborada pela Bibliotecária Marjorie Gonçalves Andersen Trindade, CRB-1/2704
M345a
Markenson, Simone
Arquitetura de computadores / Simone Markenson. – Brasília: Alumnus, 
2020.
107 p.
Recurso online: e-book
Modo de acesso: world wide web
ISBN 978-65-89227-08-3
1. Arquitetura de computador. 2. Computadores. I. e-book. 
II. Título.
CDU 004.2
Autores
Simone Markenson
Produção
Equipe Técnica de Avaliação, Revisão Linguística e 
Editoração
Sumário
Organização do Livro Didático........................................................................................................................................4
Introdução ..............................................................................................................................................................................6
Capítulo 1
Era uma vez um computador .....................................................................................................................................7
CAPÍTULO 2
Os números e os computadores ............................................................................................................................ 25
CAPÍTULO 3
Vossa Majestade, o processador ............................................................................................................................ 44
CAPÍTULO 4
Memória, para que te quero .................................................................................................................................... 65
CAPÍTULO 5
Dispositivos periféricos, porque interagir é preciso ....................................................................................... 84
CAPÍTULO 6
Novas tecnologias ...................................................................................................................................................... 95
Referências ........................................................................................................................................................................106
Anexo A – Tabela ASCII .................................................................................................................................................107
4
Organização do Livro Didático
Para facilitar seu estudo, os conteúdos são organizados em capítulos, de forma didática, objetiva e 
coerente. Eles serão abordados por meio de textos básicos, com questões para reflexão, entre outros 
recursos editoriais que visam tornar sua leitura mais agradável. Ao final, serão indicadas, também, 
fontes de consulta para aprofundar seus estudos com leituras e pesquisas complementares.
A seguir, apresentamos uma breve descrição dos ícones utilizados na organização do Livro Didático.
Atenção
Chamadas para alertar detalhes/tópicos importantes que contribuam para a 
síntese/conclusão do assunto abordado.
Cuidado
Importante para diferenciar ideias e/ou conceitos, assim como ressaltar para o 
aluno noções que usualmente são objeto de dúvida ou entendimento equivocado.
Importante
Indicado para ressaltar trechos importantes do texto.
Observe a Lei
Conjunto de normas que dispõem sobre determinada matéria, ou seja, ela é origem, 
a fonte primária sobre um determinado assunto.
Para refletir
Questões inseridas no decorrer do estudo a fim de que o aluno faça uma pausa 
e reflita sobre o conteúdo estudado ou temas que o ajudem em seu raciocínio. 
É importante que ele verifique seus conhecimentos, suas experiências e seus 
sentimentos. As reflexões são o ponto de partida para a construção de suas 
conclusões.
5
ORgANIzAçãO DO LIVRO DIDáTICO
Provocação
Textos que buscam instigar o aluno a refletir sobre determinado assunto antes 
mesmo de iniciar sua leitura ou após algum trecho pertinente para o autor 
conteudista.
Saiba mais
Informações complementares para elucidar a construção das sínteses/conclusões 
sobre o assunto abordado.
Gotas de Conhecimento
Partes pequenas de informações, concisas e claras. Na literatura há outras 
terminologias para esse termo, como: microlearning, pílulas de conhecimento, 
cápsulas de conhecimento etc.
Sintetizando
Trecho que busca resumir informações relevantes do conteúdo, facilitando o 
entendimento pelo aluno sobre trechos mais complexos.
Sugestão de estudo complementar
Sugestões de leituras adicionais, filmes e sites para aprofundamento do estudo, 
discussões em fóruns ou encontros presenciais quando for o caso.
Posicionamento do autor
Importante para diferenciar ideias e/ou conceitos, assim como ressaltar para o 
aluno noções que usualmente são objeto de dúvida ou entendimento equivocado.
6
Introdução
Os computadores estão em todos os lugares. Fazem parte das nossas vidas e às vezes 
nem percebemos. São tão comuns que muitos profissionais da área são confundidos com 
bons usuários. Podemos fazer uma analogia: existe aquele que projeta um avião; existe 
aquele que conserta o avião; existe aquele que pilota o avião e... existe o passageiro 
do avião. As profissões ligadas à computação passam por um processo semelhante, ao 
confundirmos o passageiro com o projetista, ou mesmo com os demais profissinais. 
O que nos diferencia (sim, você agora não é mais passageiro) é o conhecimento para 
além daquilo que é visível a todos. 
Existem muitos mitos sobre o funcionamento do computador. Coisas quem “ele” faz 
sem o nosso consentimento, erros que “ele” comete sozinho e funções atribuídas a 
“ele” são alguns dos exemplos mais comuns. Conhecer como funciona um computador 
é fundamental para todos que desejam seguir uma carreira na área da computação e, 
para isso, se faz necessário entender cada componente em detalhes: o que faz, como 
se relaciona e como se alimenta.
Nesse caderno, estudaremos os principais componentes de um computador e 
ainda como as informações são armazenadas e recuperadas. Com essa base, será 
possível entendermos o que está acontecendo em relação às novas tecnologias 
e identif icarmos oportunidades de aplicação.
Nerds, uni-vos! Vamos deixar de lado o mi-mi-mi e entender de verdade o que é um 
computador. Que a força esteja com vocês!
Objetivos
 » Identificar os componentes de um computador e suas funções.
 » Utilizar as formas de representação de informações.
 » Identificar oportunidades para aplicação de novas tecnologias.
7
Introdução
Há mais de 5000 anos, provavelmente na Mesopotâmia, foi desenvolvido um instrumento 
para auxiliar a elaboração de contas, como se fosse uma extensão dos dedos da mão. A 
origem do ábaco, nome atribuído ao “equipamento”, não é uma unanimidade, mas há 
consenso de que este artefato se tornou uma inspiração para a computação: a necessidade 
de fazer coisas humanas de forma mais precisa e mais rápida. Os antigos já percebiam 
como o apoio de certos instrumentos poderiam auxiliá-los. Nesta aula, iremos conhecer 
um pouco mais sobre a evolução dos computadores e os principais componentes de um 
sistema computacional.
Objetivos
 » Reconhecer as etapas de evolução da computação. 
 » Identificar as características de um computador.
 » Descrever os principais componentes de um sistema computacional.
Um pouco de história 
O ábaco está longe de ser um computador, mas é um artefato a que se atribui a origem 
da computação. Somente nos anos de 1600, Blaise Pascal projetou a primeira calculadora 
mecânica, que recebeu o nome de Pascalina. Foi um grande salto, pois era capaz de somar 
e subtrair, além de multiplicar e dividir pela repetição das duas primeiras operações. 
A calculadora de Leibniz, criada em 1673, foi, de fato, a primeira a realizar as quatro 
operações básicas.
A ideia de computadores ainda estava ligada à automação de operações matemáticas. 
Em 1822, o inglês Charles Babbage descreveu a máquina diferencial, conhecida como o 
primeiro computador de uso geral (figura 1). Essa máquina era capaz de resolver cálculos 
1CAPÍTULOERA UMA VEz UM COMPUTADOR
8
CAPÍTULO 1 • ERA UMA VEzUM COMPUTADOR
mais complexos, recebendo dados e transformando-os em informação. Babbage investiu 
em uma computação mais geral com o projeto da máquina analítica que, apesar de nunca 
ter saído do papel, deu origem aos computadores 100 anos depois.
Figura 1. Máquina diferencial.
Fonte: CC-BY-SA-2.0. Disponível em: https://commons.wikimedia.org/wiki/File:BabbageDifferenceEngine.jpg. 
O período da II Guerra Mundial foi marcado por avanços significativos no mundo 
da computação. Em 1941, o matemático Alan Turing e sua equipe desenvolveram 
um decodificador eletromecânico denominando BOMBE, para interceptar e 
decifrar as mensagens do código alemão Enigma. Em 1944, o computador Colossus, 
projetado pelo britânico Tommy Flowers, reduziu o tempo de decodificação de 
semanas para horas. Esse projeto só se tornou público nos anos 70. Na mesma 
época, a IBM apresentou o Harvard Mark I, computador eletromecânico projetado 
por Howard Aiken, professor da Universidade de Harvard, com capacidade para 
executar as quatro operações aritméticas, funções logarítmicas e trigonométricas. 
Em 1946, John Eckert e John Mauchly, da Electronic Control Company, criaram 
o primeiro computador eletrônico, o Electronic Numerical Integrator And 
Computer (ENIAC). Utilizava válvulas e era “programado” fisicamente utilizando-
se milhares de interruptores, que poderiam ser colocados no estado de “ligado” 
ou “desligado”. O valor 1 era associado ao estado “ligado”; e o valor 0, ao estado 
“desligado”. A programação era feita por uma equipe com cerca de 80 pessoas 
(Figura 2), reorganizando-se os cabos em diferentes tomadas. Era uma máquina 
muito grande, com mais de 17.000 válvulas e pesando cerca de 30 toneladas. A 
introdução da válvula marcou a primeira geração de computadores.
Sugestão de estudo
Dois filmes são particularmente interessantes para entender o que viria a seguir: “O jogo da imitação”, que conta a 
trajetória de Alan Turing, e “Estrelas além do tempo”, que mostra a inserção dos computadores na Nasa durante a 
Guerra Fria.
9
ERA UMA VEz UM COMPUTADOR • CAPÍTULO 1
Figura 2. Os programadores glen Beck (fundo) e Betty Snyder (frente) programando o ENIAC no Ballistic 
Research Laboratory, Maryland – USA.
Fonte: ENIAC. Disponível em: https://commons.wikimedia.org/wiki/ENIAC#/media/File:Eniac.jpg. 
Somente a partir do electronic discrete variable computer (EDVAC), sucessor do ENIAC, 
em 1951, com a participação do matemático John Von Neumann, a programação deixou 
de utilizar cabos e tomadas, e os programas passaram a ser armazenados na memória do 
computador. Von Neumann e outros cientistas de Princeton construíram o IAS, seguindo 
os princípios do EDVAC, mas ainda utilizando válvulas. 
A segunda geração foi marcada pelo fim das válvulas, substituídas por transistores, 
permitindo operações de liga/desliga da corrente elétrica. O dispositivo poderia, dessa 
forma, operar em dois estados. Nasce a lógica binária, que iremos estudar no próximo 
capítulo. Somente em 1961, a Digital Equipment Corporation produziu o PDP -1. A 
razão para demora pode estar relacionada com a profética afirmação do presidente da 
IBM, Thomas Watson: “Eu acredito que há mercado para talvez cinco computadores”. 
Finalmente, a terceira geração introduziu os circuitos integrados nos anos 60. A construção 
dos chips, pastilhas de silício, reduziu muito o tamanho dos computadores agregando 
dezenas de transistores. Foi uma grande revolução, contrariando outra famosa profecia, 
dessa vez do presidente da Digital, Ken Olson: “Não há nenhuma razão para alguém 
querer um computador em casa”. 
Atenção
O termo bug passou a ser utilizado no mundo da computação quando a cientista Grace Hopper identificou o 
problema que havia parado o computado Harvard Mark II: um inseto. O calor das válvulas atraía mariposas e outros 
insetos, que acabavam interrompendo o funcionamento do computador. Passou a ser comum chamar erros de bugs, 
mas isso não é correto. Um bug é algo externo à atividade do computador. Então, é sempre bom lembrar: erro é erro e 
bug é bug. Combinado?
10
CAPÍTULO 1 • ERA UMA VEz UM COMPUTADOR
Vivemos na era da quarta geração (e caminhando...), com circuitos “muito integrados”, 
conhecidos como very large scale integration (VLSI), embasando os computadores atuais. 
Grandes empresas, como a IBM, dominavam o mercado dos mainframes, desenvolvendo 
o conceito de “família” de computadores. Por volta dos anos 1970, a possibilidade de 
uma integração maior e a redução do custo dos componentes suscitaram a ideia dos 
computadores pessoais. A primeira unidade de um microprocessador foi produzida pela 
INTEL e denominada INTEL-4004.
Como você pode ver, muita coisa aconteceu até que o computador sobre a mesa fosse 
algo comum. Os microcomputadores dos anos 1990 eram bem limitados, quando 
comparados aos atuais, mas deu início a uma mudança cultural. O computador deixava 
de ser algo distante, somente para poucos, para entrar nas casas e escritórios. Mudanças 
no mundo do trabalho e do entretenimento começavam a acontecer. Vamos falar mais 
sobre a evolução dos componentes um pouquinho mais para frente, mas certamente 
você já conhece os reflexos das tecnologias no seu dia a dia: smartphone, notebook, 
caixas eletrônicos são alguns dos artefatos que permeiam a nossa vida.
Apesar da importância dos processadores, estes não são os únicos responsáveis para 
que um sistema computacional funcione. Vamos conhecer o que mais é necessário? Para 
isso, precisaremos voltar um pouco à proposta de Von Neumann.
O computador de Von Neumann
Figura 3. John Von Neumann.
Fonte: https://pt.wikipedia.org/wiki/John_von_Neumann.
Saiba mais
A relação completa dos marcos históricos sobre a evolução dos computadores pode ser obtida no livro Organização 
Estruturada de Computadores, de Andrew S. Tanembaum.
11
ERA UMA VEz UM COMPUTADOR • CAPÍTULO 1
A denominada Arquitetura de Von Neumann, referência ao criador, o matemático 
húngaro John Von Neumann (Figura 3), estabeleceu as diretrizes para os 
computadores modernos, tornando-os de uso geral. Um computador é algo que 
recebe dados e os transforma em informação.
É preciso que os dados sejam informados ao computador para que sejam processados 
e a informação seja devolvida. Durante o processamento, os dados e as ações a 
serem executados precisam ficar armazenados para que o processador possa 
ter acesso.
O computador de Von Neumann é, então, composto por uma unidade de 
processamento, memória e dispositivos de entrada e saída. A área de memória 
para armazenamento temporário de programas e dados poderia ser acessada por 
um endereço específico. A troca de dados entre memória e processador ocorre 
por meio dos barramentos de dados, endereço e controle. Essa é a estrutura 
básica que fundamenta o projeto de computadores até hoje. Cada um desses 
componentes será estudado nos capítulos mais à frente.
Cada barramento transporta um conteúdo específico: o barramento de dados 
transporta os dados que serão lidos ou escritos na memória; o barramento 
de endereços transporta o endereço de memória no qual o dado será lido ou 
escrito; o barramento de controle indica se a operação em curso é de leitura ou 
escrita na memória. O dado que será lido ou escrito na memória é armazenado 
temporariamente em um registrador dentro do processador, denominado 
registrador de dados da memória (RDM ou MBR), e o local onde o endereço 
será lido ou escrito fica armazenado no registro de endereço de memória (REM 
ou MAR). Ainda dentro do processador, a unidade de controle é a responsável, 
entre outras atividades, por indicar se a operação será de leitura ou escrita, 
e a unidade lógico-aritmética pelas operações matemáticas, como mostra a 
Figura 4.
Atenção
DADO: elemento fornecido ao computador sem um significado específico.
INFORMAÇÃO: o resultado dos dados após processamento.
Exemplo: os números 25, -100, 248 são dados que após processamento, por exemplo, de operações bancária (saques e 
depósitos) fornecem o saldo daconta corrente (a informação).
12
CAPÍTULO 1 • ERA UMA VEz UM COMPUTADOR
Figura 4. O computador de Von Neumann. 
MEMÓRIA 
ENTRADA e SAÍDA 
RDM REM 
Unidade de 
controle 
Unidade aritmé�ca e lógica 
Dados Endereço Controle
 
Barramentos 
PROCESSADOR 
Fonte: Elaborado pela autora.
Agora que já conhecemos a estrutura elementar de um computador, vamos conhecer o 
que faz um computador funcionar (além da energia elétrica, claro!).
Componentes de um sistema computacional
Um sistema computacional é o resultado da composição de dois elementos: hardware 
e software. Uma maneira simples para diferenciá-los é:
Hardware: é o que você chuta; aquilo que é físico e podemos quebrar em pedacinhos. 
A Figura 5 mostra alguns exemplos: monitor, teclado, mouse, caixa de som e um 
gabinete (torre) que contêm processador, memória, disco, placas etc. Tuuuuudo é 
hardware. 
Atenção
13
ERA UMA VEz UM COMPUTADOR • CAPÍTULO 1
Figura 5. Hardware em diversos sabores.
Fonte: https://www.shutterstock.com/pt/image-vector/electronics-devices-related-line-icon-set-1370027315.
Em alguns casos, os componentes estão integrados, como, por exemplo, em um 
monitor tipo touch screen (sensível ao toque). Se pensarmos em telefones celulares, 
fica até difícil imaginarmos que ali temos um computador com todos os seus 
componentes. Nos computadores de mesa ainda é comum identificarmos a “torre” 
como sendo “o” computador, mas lá dentro estão os componentes descritos por 
Von Neumann. Veja na Figura 6 alguns desses componentes e como se conectam.
Figura 6. Por dentro do computador.
Fonte: Elaborado pela autora.
Software: é o que você xinga; são os programas que fazem (ou deveriam fazer) o 
computador interagir conosco. O editor de texto, o sistema operacional, o seu navegador 
preferido, o editor de fotos... todos são programas.
14
CAPÍTULO 1 • ERA UMA VEz UM COMPUTADOR
Podemos imaginar que o hardware é projetado por engenheiros e produzido pela 
indústria para comercialização. Mas quem faz o software? Os programadores (ou 
desenvolvedores). Vamos contar um pouco dessa história.
As linguagens de programação
Vimos que os primeiros computadores eram “programados” por cabos e chaves. 
Assim como os computadores evoluíram, a forma de programá-los também 
evoluiu, acompanhando os novos recursos. A ideia da construção de algoritmos 
para computadores remonta aos anos de 1840, quando a matemática Ada 
Lovelace, considerada a primeira programadora, organizou e comentou as 
publicações de Charles Babbage sobre a máquina analítica, incluindo notas sobre 
variáveis, sequência de ações e atribuição de valores. Os primeiros computadores 
elétricos eram programados utilizando-se linguagem de máquina composta por 
combinações de “zeros” e “uns”. Os programas eram muito extensos e fortemente 
vinculados aos componentes do computador. 
Posteriormente, a linguagem de montagem, conhecida como assembly, passou 
a ser utilizada, facilitando a identificação das instruções com mnemônicos, mas 
mantendo o vínculo com uma arquitetura específica. A Figura 7 mostra um trecho 
de código em assembly de um microcomputador atual que escreve “Olá!” no meio 
da tela. Trabalhoso e pouco amigável, não acha?
Observe a lei
Fonte: https://www.shutterstock.com/pt/image-vector/online-piracy-vector-illustration-flat-tiny-1490808770.
Software é um produto que deve ser adquirido legalmente. Copiar software é ilegal, exceto quando explicitamente 
autorizado pelo autor.
15
ERA UMA VEz UM COMPUTADOR • CAPÍTULO 1
Figura 7. Código em assembly para escrever “Olá” no meio da tela.
mov ax,#0x7cc 
mov DI,ax 
seg es 
mov [DI],#0x9f4F 
seg es 
mov [DI+2],#0x9f4C 
seg es 
mov [DI+4],#0x9f41 
seg es 
mov [DI+6],#0x9f21 
Fonte: Elaborado pela autora.
Linguagens de programação mais amigáveis, como Formula Translation (FORTRAN) e 
Common Business Oriented Language (COBOL), respectivamente utilizadas para fins 
matemáticos e comerciais, somente se tornaram “populares” no início dos anos 60. 
Tanto o FORTRAN quanto o COBOL utilizavam o paradigma de linguagem imperativa, 
como conhecido atualmente, e os programas eram escritos em forma de ações a serem 
executadas. O programa em FORTRAN, exemplificado na Figura 8, mostra o código-
fonte para o método de Bhaskara. A estrutura, neste caso, é semelhante ao exemplo 
apresentado em C++, mas não possui elementos considerados, hoje, fundamentais para 
organização e manutenção de um programa um pouco mais complexo. 
Figura 8. Método de Bhaskara em FORTRAN IV.
 PROGRAM METODOBASKHARA 
 REAL :: A,B,C,D, R1,R2 
 PRINT 10, "Entre com os valores de a, b, c: " 
 10 FORMAT( A, 1X, $) 
 20 READ(*, *, ERR=20)A, B, C 
 IF( A.EQ.0 )GOTO 40 
 DELTA= B**2-4.0*A*C 
 IF( D.LE.0 )GOTO 30 
 X1= (-B-SQRT(D))/(2.0*A) 
 X2= (-B+SQRT(D))/(2.0*A) 
 PRINT *, "RAIZES: R1= ", R1 
 PRINT *, "R2= ", R2 
30 PRINT *, "NÃO POSSUI RAIZES REAIS" 
 GOTO 50 
40 PRINT *, "NÃO É EQUAÇÃO DE 2º. GRAU" 
50 CONTINUE 
 END PROGRAM BASKHARA 
Fonte: Elaborado pela autora.
Os programas eram desenvolvidos para aproveitar ao máximo a capacidade e reduzir 
o tempo de utilização do computador. Eram repletos de artimanhas de otimização, 
refletindo o grau de habilidade do programador. Não demorou muito até que se 
percebesse quão difícil era manter ou atualizar esses programas. Na medida em que 
16
CAPÍTULO 1 • ERA UMA VEz UM COMPUTADOR
os recursos se ampliavam, as linguagens e os métodos de programação evoluíram para 
que os códigos pudessem ficar mais claros quando lidos por outros que não o autor. 
Diferentes paradigmas de programação buscavam a clareza dos programas desenvolvidos 
para facilitar manutenções futuras. A programação estruturada, utilizada por linguagens 
como C, Pascal e COBOL, e a programação orientada a objetos, representada pela 
linguagem JAVA, são dois paradigmas importantes no cenário atual de desenvolvimento 
de software. Algumas linguagens podem, ainda, trabalhar com múltiplos paradigmas, 
tais como Python e C++.
O paradigma da programação estruturada é caracterizado pela capacidade de 
modularização do código, permitindo a divisão de um programa em partes menores 
e mais simples, e por utilizar apenas estruturas sequencial, condicional e de repetição, 
representadas na Figura 9. 
Figura 9. Estruturas: (a) sequencial; (b) condicional; (c) repetição.
Fonte: Elaborado pela autora.
Com outro olhar para a programação, a abordagem orientada a objetos se desvincula 
das ações e enfatiza objetos, suas funcionalidades e relações. A expressão “orientação 
a objetos” (OO) foi cunhado por Alan Kay, na década de 1960, inspirado no software 
Sketchpad, que permitia tanto a manipulação de objetos de forma independente 
quanto a criação de desenhos a partir de um desenho “mestre”. Um pouco depois, 1968, 
em um encontro com Seymour Papert, Kay teve contato com a linguagem Visual Logo 
para promover o ensino de programação para crianças amparado em uma abordagem 
construtivista. A linguagem Logo oferece comandos que fazem uma tartaruga se 
movimentar na tela do computador pela indicação de quantos “passos” devem ser dados 
em uma determinada direção. 
E depois? O que acontece com o programa que desenvolvemos?
17
ERA UMA VEz UM COMPUTADOR • CAPÍTULO 1
O ciclo de um programa 
O programa que escrevemos em uma linguagem de programação é denominado código-
fonte ou programa-fonte. Para que ele seja compreendido pelo computador, é preciso 
que seja transformado em instruções que o processador entenda. 
A primeira etapa do processo é a compilação do código. Nessa fase, o compilador da 
linguagem escolhida (que também é um software) lê o programa-fonte e verifica se a 
forma com que foi escrito está correta. O compilador verifica a sintaxe do programa e 
o transforma em “código-objeto”. Erros de digitação ou falta de um ponto-e-vírgula são 
detectados nessa etapa. Ao término da fase de compilação, teremos um arquivo com o 
“código-objeto”.
O exemplo ilustrado na Figura 10 mostra o trecho de um programa escrito em C++ queexibe a frase “ALO MUNDO!”. Após ser compilado, será gerado um arquivo alomundo.o, 
que é o código objeto do programa alomundo.cpp. Em seguida, o linkeditor (ou ligador) 
verificará a necessidade de incorporar código externo ao programa. A função procurada 
pode estar em uma biblioteca de funções ou em outro código-objeto. Sistemas muito 
grandes são, em geral, divididos em diversos programas que podem ser unidos em um 
único executável no momento da linkedição (ou ligação).
Figura 10. Compilação de um programa em C++.
Fonte: Elaborado pela autora.
Suponha que, no exemplo, estivesse faltando o ponto-e-vírgula (;) no final da 
linha. O compilador alertaria para um erro de compilação, pois a sintaxe estaria 
errada. Se, no entanto, o erro fosse na digitação do nome da “função” que exibe 
a frase “ALO MUNDO!”, cut em vez de cout, por exemplo, o erro seria apontado 
no momento da linkedição, pois a “função” cut não seria localizada.
Observe que, ao escrevermos um programa, a escolha da linguagem pode 
facilitar ou dificultar a tarefa. A linguagem C, por exemplo, é mais adequada 
para desenvolvimento de rotinas do sistema operacional, sistemas embarcados 
e compiladores. Lembre-se, ainda, de que o código executável é gerado para um 
18
CAPÍTULO 1 • ERA UMA VEz UM COMPUTADOR
conjunto processador/sistema operacional específico. Um executável feito para 
Windows, por exemplo, não funcionará no Linux. 
O forte vínculo entre a arquitetura computacional e o programa executável 
era um desafio a ser transposto, pois um programa desenvolvido para uma 
determinada arquitetura não poderia ser levado para outra sem que no mínimo 
um novo executável precisasse ser gerado. A linguagem C ANSI foi particularmente 
desenvolvida para gerar essa portabilidade de código, mesmo assim a geração 
de novo executável ainda se faz necessária. Uma nova proposta surgiu com as 
máquinas virtuais, em particular, com a máquina virtual JAVA, como veremos a 
seguir.
A máquiva virtual JAVA
 A linguagem JAVA tornou-se popular por ser orientada a objetos e permitir que um 
código produzido em um determinado computador possa ser executado em qualquer 
outro que suporte a linguagem. Siiiiim!!!! Você leu corretamente. Um programa escrito 
em JAVA pode rodar em qualquer computador que possua máquina virtual JAVA ( JVM), 
que é a responsável para que a mágica ocorra.
A JVM é um interpretador de código instalado no computador com o propósito de 
fornecer uma camada intermediária entre a aplicação compilada, denominada byte 
code, e o sistema operacional. A proposta é que o compilador gere código-objeto para a 
máquina virtual, e não para o sistema que o hospeda. A tradução desse código ocorrerá 
durante a execução e será feita pela JVM específica do sistema no qual está instalada, 
como ilustra a Figura 11.
Figura 11. Máquina virtual JAVA.
Fonte: Elaborado pela autora.
19
ERA UMA VEz UM COMPUTADOR • CAPÍTULO 1
A JVM específica para o seu sistema operacional pode ser obtida diretamente no 
site do fabricante. São oferecidos dois “pacotes”: Java Runtime Environment ( JRE) e 
Java Development Kit ( JDK). O primeiro contém apenas o necessário para utilização 
de aplicações escritas em Java, e o segundo oferece, além da JVM, o ambiente de 
desenvolvimento para Java.
No passado, havia uma forte restrição ao uso do Java, quando considerávamos o tempo 
de execução das aplicações, em geral, bem mais lento. As ações de tradução da JVM para 
o sistema nativo, necessárias durante a execução do código, eram o motivo (e continua 
sendo). Com os computadores atuais, podemos dizer que isso passa a ser um “problema 
menor” em grande parte das aplicações, frente ao ganho de produtividade na etapa de 
desenvolvimento. É um ótimo estímulo para aprender JAVA: poder programar em uma 
única linguagem para qualquer plataforma, não acha?
Como tudo começa? Juntando as partes.
Vimos até agora as estruturas elementares do hardware de um computador e as etapas 
necessárias para programá-lo. Precisaremos, agora, entender o que acontece a partir do 
momento que apertamos o botão até a execução dos nossos programas.
O procedimento que “liga” o computador é chamado bootstrap. O nome tem origem 
naquelas parábolas de autoajuda, com a ideia de nos erguermos sem ajuda externa, 
puxando as próprias botas para cima 
É exatamente isso que acontece com os computadores pessoais, porém podemos 
garantir que eles fazem isso porque são projetados para fazê-lo. Ao ligarmos o 
computador, o processador recebe energia e inicializa seus registrados com valores 
predeterminados. Em particular, os registrados que indicam o endereço da próxima 
instrução a ser executada recebem um valor que aponta para o código gravado em 
um chip denominado Basic Input/Output System (BIOS). 
Hummm ... o fabricante da BIOS deve ser o mesmo fabricante do processador? A 
resposta é não. Existe um acordo entre fabricantes de processadores, BIOS e sistemas 
Saiba mais
Tudo sobre JAVA em: https://www.java.com/pt_BR/.
Importante
É sempre bom lembrar que não existe um duende verde habitando as profundezas do computador. Então, nada 
é simplesmente “automático”. As coisas acontecem porque estão programadas (por nós, humanos) para 
acontecerem, ok?
20
CAPÍTULO 1 • ERA UMA VEz UM COMPUTADOR
operacionais para que seus produtos conversem independentemente de quem os 
fabricou. Assim, quem fabrica BIOS sabe o que fazer para que o processador localize 
e identifique o início do programa.
Quando o código da BIOS começa a ser executado, é feito um teste rápido sobre as 
condições da máquina. Por exemplo, se possui memória instalada. A resposta desse 
teste é dada sob a forma de sinais sonoros. Cada tipo de sinal representa um retorno 
do teste, documentado pelo fabricante. Se tudo estiver ok, a BIOS disponibiliza 
um programa para ajustes na máquina (setup), que pode ou não ser executado. No 
passado, era fundamental executar esse programa para configuração do disco rígido, 
entre outras coisas. 
Após essa etapa, um novo acordo entra em ação. A BIOS vai buscar uma “assinatura”, no disco 
rígido, que indica a presença de um sistema operacional instalado, e a localização do módulo 
de carga do sistema operacional. Somente nesse ponto o sistema é carregado para memória e 
já pode ser devidamente xingado, se necessário.
O sistema operacional
O sistema operacional assume o comando para gerenciar os recursos de hardware 
disponíveis, como mostra a Figura 12. Não podemos esquecer que sistema operacional 
é software!!! Parece óbvio, mas vou repetir isso algumas vezes. Depois me digam se tenho 
ou não razão.
Figura 12. Funções do sistema operacional.
Fonte: Elaborado pela autora.
Importante
Muitos problemas podem ocorrer antes da carga do sistema operacional. O código sonoro (pode ser visual, se houver 
uma placa para esse fim) emitido pela BIOS poderá auxiliar na identificação do problema.
21
ERA UMA VEz UM COMPUTADOR • CAPÍTULO 1
Os sistemas operacionais são categorizados. Uma categoria fundamental está 
relacionada à capacidade de gerenciar processos, que é o nome dado a um 
programa quando acionado para execução. Um processo é uma estrutura que 
agrega ao programa informações sobre o estado da execução (quanto tempo 
gastou, quanto de memória ocupa, permissões de acesso etc.).
Um sistema é dito monotarefa (Figura 13a) quando somente uma tarefa posse 
ser carregada na memória, ou seja, para que uma tarefa inicie, é necessário que 
a tarefa em execução termine. Essa estratégia já não é muito utilizada, pois o 
processador fica subutilizado aguardando periféricos mais lentos, como os discos. 
Os sistemas multitarefa (Figura 13b) são aqueles que permitem que mais de um 
processo seja iniciado, revezando o uso do processador. Enquanto um processo 
faz um acesso a disco, por exemplo, outro processo poderá executar. 
Figura 13. Sistemas monotarefa x Sistemas multitarefa.
Fonte: Elaborado pela autora.
É importante notar que o processador só executa UMA única tarefa de cada vez, 
considerandoapenas um núcleo. O que ocorre em sistemas multitarefas é a chamada 
execução concorrente de processos. A substituição de um processo em execução pode 
ocorrer por três motivos:
1. O processo termina e cede a vez para o próximo, que aguarda em uma fila, como em 
uma fila de supermercado;
2. O processo precisa aguardar algum recurso e fica bloqueado, permitindo que o próximo 
processo da fila execute;
3. É atribuída uma fatia de tempo fixo para cada processo. Se a fatia expirar, o processo 
retorna ao final da fila cedendo a vez para o próximo.
22
CAPÍTULO 1 • ERA UMA VEz UM COMPUTADOR
Nos dois primeiros casos, a ação de ceder a vez é tomada pelo processo que está 
executando. No terceiro caso, algo diferente ocorre. O processo é interrompido para 
que ceda a vez. Quem provoca essa interrupção? 
Se você respondeu “o sistema operacional”... Errou!!!
Você se lembra que no início desta seção foi dito que sistema operacional é software? 
Então... Temos um processo em execução, logo nenhum outro está executando, e isso 
inclui o sistema operacional. Como o sistema operacional pode “fazer” alguma coisa se 
não está executando? 
Ahááááá! Agora você viu como é fácil cair nessa armadilha. Quem provoca a interrupção 
do processo em execução é um componente de hardware denominado temporizador. 
O temporizador envia um sinal ao processador que, ao identificá-lo, desvia a execução 
do processo atual para a rotina de tratamento do sistema operacional. A interrupção 
é provocada por hardware, mas é tratada em parte pelo processador e em parte pelo 
sistema operacional. Interrupções são fundamentais para sistemas multitarefas.
Os sistemas multitarefas podem ser subdivididos em monousuário e multiusuário. 
Usuários são as pessoas que podem utilizar o sistema. Um sistema multiusuário é aquele 
que permite diversos usuários diferentes, utilizando o sistema ao mesmo tempo. Esse 
conceito não é muito trivial, pois os sistemas mais comuns para computadores pessoais 
são monousuários. O sistema Linux, por exemplo, é um sistema multiusuário, pois 
permite que múltiplos terminais compartilhem o mesmo computador (processador, 
memória, sistema operacional etc.). Não estamos falando de computadores em rede, 
mas de um único computador central com vários terminais (visualmente são monitores 
e teclados), um para cada usuário (Figura 15). Vale reforçar que sistemas multiusuários 
são obrigatoriamente multitarefas.
Importante
Vamos reforçar: CONCORRENTE ≠ SIMULTÂNEO. O processador executa apenas UM processo por vez. A troca entre 
os processos ocorre muito rapidamente, o que dá a impressão de que as coisas acontecem ao mesmo tempo. Isso é 
uma falácia!!!!
O gerenciador de tarefas de sistemas com o Windows, por exemplo, induz ao erro ao mostrar “% de CPU”. 
O processador não é particionado por processos. O percentual representa quanto tempo foi utilizado por 
aquele processo no último minuto.
23
ERA UMA VEz UM COMPUTADOR • CAPÍTULO 1
Figura 14. Um sistema multiusuário.
Fonte: Disponível em: http://www.thinnetworks.com.br/multiterminal/.
Vamos lembra aqui a questão colocada no início do capítulo sobre o termo mainframe. A 
tradução seria “computador central”, referindo-se ao fato de existir um único computador 
compartilhado por vários usuários. No passado, eles eram realmente grandes, mas a 
ideia é a de centralização, de um único computador.
Além de administrar a distribuição dos recursos de hardware, é função do sistema 
operacional fornecer uma interface para o usuário e garantir a segurança de acesso ao 
sistema. Nos sistemas modernos, também é oferecida grande variedade de aplicativos e 
programas específicos para dispositivos como impressoras, câmeras etc. Essas funções 
estão relacionadas ao “empacotamento” comercial e não ao sistema, propriamente dito.
Fonte: Elaborado pela autora.
24
CAPÍTULO 1 • ERA UMA VEz UM COMPUTADOR
Bom... já sabemos como funciona um computador sob o ponto de vista de quem usa. E 
lá dentro? Como palavras e números são tratados e armazenados? Você está convidado 
a responder essas e outras questões no próximo capítulo. 
Para refletir
Os computadores que dominaram o período dos anos 1960-1980 eram conhecidos como mainframes e 
geralmente associados a computadores de “grande porte”. Analise o termo original. Há alguma relação 
entre o termo mainframe e o tamanho do computador?
Sintetizando
Vimos até agora:
 » Os computadores modernos se baseiam na máquina de Von Neumann e possuem processador, memória e 
dispositivos de entrada e saída.
 » Que um sistema computacional é conjunto formado por hardware e software.
 » Para desenvolvimento de um programa, utilizamos uma linguagem de programação. O programa escrito nessa 
linguagem é transformado em código de máquina por meio dos processos de compilação e ligação.
25
Introdução
Pelo lado de fora, já vimos como funciona um computador e agora vamos aprender 
como as informações são armazenadas e tratadas pelo processador. Desde os primeiros 
computadores digitais, o processamento é baseado em dois estados possíveis: ligado 
e desligado. Assim, todos os nossos dados e ações precisam ser representados em um 
conjunto de estados ligado/desligado. Numericamente, utilizaremos a base binária com 
os seus dois algarismos: 0 e 1. As operações aritméticas não são diferentes daquelas que 
estamos acostumados com a nossa base decimal, porém os números tendem a ser muito 
grandes. A base hexadecimal nos salva, compactando as representações. E a lógica? 
Como as operações acontecem? Não percam os próximos tópicos de “como vivem os 
computadores”.
Objetivos
 » Conhecer as unidades de representação de dados. 
 » Efetuar operações aritméticas em diferentes bases.
 » Representar circuitos digitais com portas lógicas.
Como representar dados 
Dentro de um computador, a única coisa que circula é corrente elétrica. Todo o resto 
é abstração para nós, pobres mortais, entendermos o que está acontecendo. O termo 
bit (Binary digiT) é utilizado para representar os dois níveis de tensão que possuem 
significado: 0 e 1. A partir desse momento, utilizaremos o bit como a nossa unidade de 
trabalho. Um bit, no entanto, não possui significado se considerado isoladamente. Para 
que represente um dado, utilizaremos um conjunto de 8 bits, denominado byte. Byte é, 
então, a unidade de informação (Figura 15).
2CAPÍTULOOS NÚMEROS E OS COMPUTADORES
26
CAPÍTULO 2 • OS NÚMEROS E OS COMPUTADORES
Figura 15. Bits e bytes.
Fonte: Elaborado pela autora.
Podemos fazer uma comparação: bits são como átomos e bytes são como moléculas. A 
menor unidade de água, por exemplo, é composta por 3 átomos (H2O).
Como nosso mundo passou a ser binário, nada mais justo que nos familiarizarmos com 
a forma de representação desses números. Sempre que possível, faremos comparações 
com a nossa conhecida base decimal.
Bits, bytes e seus múltiplos
Como já vimos, o byte é a unidade de representação da informação e é composto por 8 
bits. Uma letra, por exemplo, pode ser representada em um byte. É um valor pequeno se 
pensarmos na capacidade armazenamento dos computadores atuais. Imagine medir o 
tamanho da estrada Rio-São Paulo em milímetros? Da mesma forma, trabalhar apenas 
com bytes não é adequado para um grande volume de dados. Da mesma forma que 
utilizamos diferentes grandezas para nosso sistema decimal, teremos grandezas também 
no sistema binário. 
No sistema decimal, as grandezas são representadas pelas portências de 10. 
Considerando o exemplo da estrada, podemos dizer que a Rio-São Paulo possui 
cerca de 400Km ou 400.000 m. Um quilômetro equivale a 103 m.
No sistema binário, utilizaremos as grandezas representadas em potências de 2, 
como estão apresentados os múltiplos de byte no Quadro 1.
Atenção
Um byte é composto por 8 bits. Isso é uma definição. Cada bit pode ter o valor 0 ou 1.
27
OS NÚMEROS E OS COMPUTADORES • CAPÍTULO 2
Quadro 1. Múltiplos de bytes.
Fonte: https://slideplayer.com.br/slide/14135634/.
Repare que 210 = 1024. Para termosapenas uma noção de ordem de grandeza, podemos 
mentalmente fazer uma estimativa utilizando 1000 em vez de 1024, mas não podemos 
esquecer de que não é o valor exato.
Sistemas de numeração
Nosso mundo é decimal. Estamos acostumados a representar os números utilizando 
dez algarimos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Todos os números são composições desses 
algarismos. O valor de cada um depende da posição que ocupa no número e por isso 
dizemos que a representação é posicional. Por exemplo:
258 = 2 * 10² + 5 * 10¹ + 8 * 100 (2 centenas + 5 dezenas + 8 unidades). 
O algarimos 2, na posição em que está no número 258, representa 200 unidades (ou 
duas centenas).
Importante
Vocês já perceberam que iremos trabalhar muuuuito com potências de 2. Minha sugestão: treinem fazer a conta de 
potências de 2 cabeça, pelo menos até 10: 2-4-8-16-32-64-128-256-512-1024. Acreditem! Vai facilitar a sua vida.
28
CAPÍTULO 2 • OS NÚMEROS E OS COMPUTADORES
O mesmo acontece para as bases binárias e hexadecimais. Na base binária, os números 
são formados a partir de dois algarismos: 0 e 1. Para a base hexadecimal, precisamos de 
16 algarismos e, para representá-los, utilizaremos letras a partir do nono: 0, 1, 2, 3, 4, 5, 
6, 7, 8, 9, A, B, C, D, E, F. Em decimal, os algarimos de A até F representam os valores de 
10 a 15. Também nessas duas bases, a representação é posicional. Por exemplo:
10011 (base binária) = 1 x 24 + 0 x 23 + 0 x 22 + 1 x 21 + 1 x 20
12A (base hexadecimal) = 1 x 162 + 2 x 161 + A x 160 (lembre-se de que A equivale a 10)
Assim, podemos facilmente converter um número representado em qualquer base 
para a nossa velha conhecida base decimal. Para facilitar a identificação da base que 
estamos utilizando, representaremos um valor em hexadecimal com a letra “h” após 
o número, como em 12Ah, ou com índices subscritos, como em 12A16 e 100112.
Nos exemplos apresentados, teremos:
 » 100112 = 16 + 0 + 0 + 2 + 1 = 1910
 » 12Ah = 256 + 32 + 10 = 29810 
Com uma quantidade n de algarismos, podemos escrever bn valores diferentes, onde b é a 
base utilizada, começando em zero até bn -1. Vamos ver? 
 » Com 3 algarismos decimais, podemos escrever 103 (1000) números diferentes: de 0 
a 99910.
 » Com 3 algarismos binários, podemos escrever 23 (8) números diferentes: de 0 a 1112
 » Com 3 algarimos em hexadecimal, podemos escrever 163 (4096) números diferentes: 
de 0 a FFFh.
As operações algébricas também são as mesmas, independentemente da base 
utilizada.Vamos ver passo a passo de uma soma na base decimal. Para efetuarmos 
a operação 19+1, somamos 9 com 1. O resultado é 10, então, representamos com 
um zero na casa da unidade e “vai um” para a dezena, que será somando ao “1” 
fornecendo o resultado 20.Faremos o mesmo com a base binária e hexadecimal, 
lembrando que no primeiro caso, o maior algar ismo é 1 e no segundo, F. As 
operações estão desenhadas na Figura 16..
Para refletir
Por que utilizaremos a base 16? Vou dar uma dica: 16 = 24.
29
OS NÚMEROS E OS COMPUTADORES • CAPÍTULO 2
Figura 16. Adição,
Fonte: Elaborado pela autora.
Faremos o mesmo processo para uma subtração, efetuando a operação 20-1 em decimal. 
Como não podemos diminuir 1 de zero, “pedimos emprestado” à casa das dezenas. Uma 
dezena equivale a 10 unidades, então teremos 10 unidades menos 1, resultando 9 na 
casa das unidades. Ficaremos com 1 na casa das dezenas. Para as bases hexadecimal 
e binária, o processo se repete, lembrando apenas que ao “pedir emprestado”, o valor 
emprestado será a base, como ilustrado na Figura 17.
Figura 17. Subtração.
Fonte: Elaborado pela autora.
Representação de números negativos na base binária
Até o momento, tratamos apenas os números positivos, mas não podemos nos 
esquecer dos números negativos. Existem formas diferentes de tratarmos números 
negativos: sinal e magnitude, complemento a 1 e complemento a 2. Vamos ver 
cada uma delas.
Atenção
Veja que o número 20, resultado das somas em decimal e hexadecimal, representa quantidades diferentes em cada 
operação.
30
CAPÍTULO 2 • OS NÚMEROS E OS COMPUTADORES
Sinal e magnitude: o dígito mais significativo é reservado para o sinal. Se 
for 0, o número é positivo e, se for 1, é negativo. Para podermos identificar 
o bit de sinal, é fundamental que se saiba quantos bits são utilizados para 
representar o número. Se utilizarmos 8 bits, por exemplo, o número 000010102 
representa o número 2, enquanto 100000102 representa -2 (Figura 18). É 
uma forma simples de representação, porém exige que o processador possua 
um circuito específico para operações de subtração e ainda possui duas 
representações para o número 0.
Figura 18. Sinal e magnitude.
Fonte: Elaborado pela autora.
Nas operações aritméticas, o bit de sinal não é considerado. O sinal da resposta 
será o mesmo da maior parcela da operação, semelhante à nossa operação 
mental na base 10. Subtraímos o menor do maior número e mantemos o sinal 
do maior.
Complemento a 1: genericamente, é conhecido como complemento a base-1. 
Como estamos trabalhando com a base binária, podemos simplificar e chamar 
de complemento a 1. O complemento é a diferença entre cada algarismo do 
número e o maior algarismo possível na base. Para a base 2, o maior algarismo 
é o 1 e, para este caso, equivale a inverter todos os dígitos. Ainda teremos 
duas representações possíveis para o 0. Considerando o mesmo exemplo, a 
representação do número -2, teremos que escrever o número positivo, 2, e 
inverter cada bit, como mostra a Figura 19.
Figura 19. Complemento a 1.
Fonte: Elaborado pela autora.
31
OS NÚMEROS E OS COMPUTADORES • CAPÍTULO 2
As operações aritméticas em complemento a 1 incorporam o bit do sinal ao número. Os 
números são somados bit a bit, incluindo o bit de sinal. Se houver um “vai 1” para fora 
do número, deverá ser somando ao resultado obtido. A regra pode ser resumida como:
Efetua a soma bit a bit (inclusive sinal);
“vai um” para fora do número, é somado ao resultado;
Se não houver “vai um” para fora do número, o resultado é negativo e deve ser 
complementado (mantendo o sinal).
Exemplo: Efetuar a operação 10 – 7 e 7 – 10, utilizando 6 bits. 
Figura 20. Operação.
Fonte: Elaborado pela autora.
Complemento a 2: genericamente, é conhecido como complemento a base, que, no 
nosso caso, é a base binária (2). O número negativo é obtido a partir do complemento 
a 1 de um número binário, somando-se 1 ao resultado. Em complemento a 2, há uma 
única representação para o 0 e utiliza-se apenas um circuito para as operações de soma 
e subtração, além de ser a forma mais usual para representar números negativos. Ainda 
tomando o -2 como exemplo, podemos ver na Figura 21 as etapas utilizadas para conversão.
Figura 21. Complemento a 2.
Fonte: Elaborado pela autora.
32
CAPÍTULO 2 • OS NÚMEROS E OS COMPUTADORES
A aritmética de complemento a 2 também considera o bit de sinal como parte do número, 
porém deve ser observada a seguinte regra:
Efetua a soma bit a bit (inclusive sinal);
“vai um” para fora do número indica resultado positivo;
Se não houver “vai um” para fora do número, o resultado é negativo e deve ser 
complementado (mantendo o sinal).
Exemplo: Efetuar a operação 10 – 7 e 7 – 10, utilizando 6 bits. 
Figura 22. Operação com bits
Fonte: Elaborado pela autora.
Representação binária de números em ponto flutuante
Representação de caracteres
Entendemos como representar números em diferentes bases, mas o que fazer 
com letras e símbolos? A resposta é simples. Utilizamos uma tabela que converte 
Sugestão de estudo
Aqui vai mais uma dica: a calculadora do Windows possui um modo “programador” que faz a conversão de base e 
representa números negativos em complemento a 2. Muito útil para checar seus resultados.
Atenção
Se ocorrer “vai 1” para o bit de sinal E para fora ou se não ocorrer “vai 1” em nenhum das duas situações, a operação 
está correta. A ocorrência de apenas um “vai 1” indica que houve overflow, ou seja, o resultado não coube na 
quantidade de bits.33
OS NÚMEROS E OS COMPUTADORES • CAPÍTULO 2
todos os caracteres que o processador reconhece, denominada tabela American 
Standard Code for Information Interchange (ASCII). A tabela é composta por 256 
caracteres, que podem ser representados com apenas 1 byte (lembre-se de que 
28 = 256).
A tabela ASCII completa pode ser consultada no ANEXO A.
Conversão de base
Aprendemos como representar números em diferentes bases e ainda como converter 
qualquer base para decimal, utilizando apenas a representação do número em 
potências da base. Vamos agora fazer o caminho inverso, convertendo números 
decimais em binário e hexadecimal. O algoritmo é o mesmo para ambos os casos.
REPITA:
Dividir o número decimal pela base;
Extrair o resto como algarismo e colocá-lo à esquerda do anterior (ou, ao final, juntar 
os restos de “trás pra frente” para formar o número na nova base).
ATÉ quociente da divisão igual a 0.
Nada melhor que um exemplo, não acham? Vamos converter o número 451 de decimal 
para binário com divisões sucessivas por 2, até que o quociente seja zero.
Figura 23. Quociente igual a zero
QUOCIENTE 
IGUAL A 
ZERO!
Fonte: Elaborado pela autora.
Portanto: 45110 = 1110000112. Quer conferir? Basta fazer a conta inversa.
Utilizando o mesmo número decimal, convertendo, agora, para hexadecimal com 
divisões sucessivas por 16, até que o quociente seja zero.
34
CAPÍTULO 2 • OS NÚMEROS E OS COMPUTADORES
Figura 24. Hexadecimal com divisões
QUOCIENTE 
IGUAL A 
ZERO!
Fonte: Elaborado pela autora.
Portanto: 45110 = 1C3h (lembre-se de que C=12).
Para finalizar, precisamos converter de binário para hexadecimal e vice-versa. 
Agora podemos responder por que utilizamos base 16. Porque podemos escrever 
um algarismo hexa com 4 bits, facilitando muito a utilização de números binários. 
Vamos usar essa propriedade.
De binário para hexadecimal: cada conjunto de 4 bits representa um dígito em 
hexadecimal, pois com 4 bits podemos escrever 16 números diferentes (24 = 16).
Exemplo: 0001 1100 00112  separando o número em grupos de 4 (começando 
pela direita), temos: 00012 = 1h; 11002 =Ch; 00112=3h. Então 0001110000112 = 1C3h.
De hexadecimal para binário: analogamente ao item anterior, cada dígito em 
hexadecimal é convertido em 4 dígitos binários.
Exemplo: 1C3h  convertendo cada dígito em hexa em binários, temos: 1h = 
00012 ; Ch = 11002; 3h=00112. Então 1C3h = 0001110000112. (Figura 25 ).
Figura 25. Conversão hexa  binário.
Fonte: Elaborado pela autora.
35
OS NÚMEROS E OS COMPUTADORES • CAPÍTULO 2
Lógica digital
As portas lógicas são circuitos eletrônicos (hardware) elementares de um sistema 
de computação. Uma operação lógica realizada sobre um ou mais valores lógicos 
produz um resultado lógico, conforme a regra definida para essa operação. Os 
valores resultantes de uma operação lógica podem ser verdadeiro (representado 
pelo valor 1) ou falso (representado pelo valor 0).
Nesta seção, conheceremos as portas lógicas, como representá-las e como 
desenvolver expressões lógicas. Analise comigo a seguinte sentença: Vou à 
praia se for domingo E estiver fazendo sol. Veja que para que eu vá a praia, 
é necessário que ocorram duas condições verdadeiras. Considere, agora, 
algumas possibilidades.
 » Hoje é domingo e está chovendo  não irei a praia, pois não está fazendo sol.
 » Hoje é segunda e faz sol  não irei a praia, pois não é domingo.
 » Hoje é segunda e está chovendo  não irei a praia, pois não e domingo nem está fazendo 
sol.
 » Hoje é domingo e faz sol.  Eba!!! Praia, aqui vou eu!!!
Se tomarmos o resultado “vou à praia” como verdadeiro, podemos ver que, nesse caso, 
só ocorrerá quando ambas as condições forem satisfeitas. Não falei nada antes, mas 
você já conheceu uma porta lógica: a porta AND. As combinações possíveis que fizemos 
é o que chamamos de tabela-verdade. Com ela, avaliamos todas as possibilidades e em 
que situações teremos resultados verdadeiros. As portas estão sintetizadas no quadro 2 
e serão apresentadas em detalhes logo após.
Quadro 2. Portas lógicas.
AND Resultado verdadeiro se ambas as condições forem verdadeiras
OR Resultado verdadeiro se pelo menos uma condição for verdadeira
NOT Inverte o valor de entrada
NOR Inverte o resultado da operação OR
NAND Inverte o resultado da operação AND
XOR Resultado verdadeiro se as entradas forem diferentes (apenas uma verdadeira)
Fonte: Elaborado pela autora.
Para cada uma das portas lógicas, vamos mostrar a expressão lógica, a representação gráfica 
e a respectiva tabela-verdade. 
36
CAPÍTULO 2 • OS NÚMEROS E OS COMPUTADORES
Porta lógica AND
Resultado verdadeiro se, e somente se, ambas as condições forem verdadeiras.
A operação é representada pelo símbolo de multiplicação ( “*”, “x” ou “.”) : X = A * B 
Representação gráfica:
Fonte: Elaborado pela autora.
Tabela-verdade:
Fonte: Elaborado pela autora.
Porta lógica OR
Resultado verdadeiro se pelo menos uma condição for verdadeira
A operação é representada pelo símbolo de adição (+): X = A + B 
Representação gráfica:
Fonte: Elaborado pela autora.
37
OS NÚMEROS E OS COMPUTADORES • CAPÍTULO 2
Tabela-verdade:
Fonte: Elaborado pela autora.
Porta lógica NOT
Inverte o valor de entrada.
A operação é representada por uma barra sobre a entrada: X = A
Representação gráfica: 
Fonte: Elaborado pela autora.
Tabela-verdade: 
Fonte: Elaborado pela autora.
Porta lógica NOR
Inverte o resultado da operação OR.
A operação é representada por uma barra sobre a expressão: X = A + B
38
CAPÍTULO 2 • OS NÚMEROS E OS COMPUTADORES
Representação gráfica: 
Fonte: Elaborado pela autora.
Tabela-verdade: 
Fonte: Elaborado pela autora.
Porta lógica NAND
Inverte o resultado da operação AND.
A operação é representada por uma barra sobre a expressão: X = A * B
Representação gráfica:
Fonte: Elaborado pela autora.
Tabela-verdade: 
Fonte: Elaborado pela autora.
39
OS NÚMEROS E OS COMPUTADORES • CAPÍTULO 2
Porta lógica XOR
Resultado verdadeiro se as entradas forem diferentes (apenas uma verdadeira).
A operação é representada pelo símbolo ⊕: X = A ⊕ B
Representação gráfica: 
Fonte: Elaborado pela autora.
Tabela-verdade: 
Fonte: Elaborado pela autora.
Agora, nada melhor que um exemplo daqueles. Considere a expressão lógica a seguir: 
Vamos construir a tabela-verdade e, em seguida, a representação gráfica dessa expressão. 
Pela ordem de precedência das operações, primeiro executamos a operação NOT B, 
para, em seguida, executar a operação AND e por fim a operação OR. Como temos três 
entradas, teremos oito combinações possíveis na tabela-verdade (não se lembra? 23 = 
8). A solução está ilustrada na Figura 26. As três primeiras colunas mostram as possíveis 
entradas; e as seguintes, o resultado das operações realizadas.
Figura 26. Construção de uma tabela-verdade.
Fonte: Elaborado pela autora.
40
CAPÍTULO 2 • OS NÚMEROS E OS COMPUTADORES
Podemos, então, construir a representação gráfica. Novamente seguiremos a mesma 
ordem utilizada na construção da tabela. O resultado está ilustrado na Figura 27
Figura 27. Construção da representação gráfica.
Fonte: Elaborado pela autora.
álgebra booleana
A álgebra booleana é a parte da matemática que trata de regras e elementos de lógica. O 
nome é uma homenagem ao matemático George Boole (1815-1864), por ter desenvolvido 
o primeiro sistema formal para raciocínio lógico (lógica booleana), semelhante ao sistema 
algébrico, que trata as variáveis e as operações com essas variáveis, utilizando valores 
binários 0 e 1. O valor 1 equivale à condição verdadeira, e o valor 0 à condição falsa.
Uma expressão lógica pode ser simplificada garantindo, assim, circuitos mais simples e 
mais baratos de serem produzidos. Essa simplificação é realizada, utilizando os postulados 
e propriedades da álgebra de Boole.
Postulados
Figura 28. Postulados.
Fonte: Elaborado pela autora.
41
OS NÚMEROS E OS COMPUTADORES • CAPÍTULO 2
Propriedades
Figura 29. Propriedades.
Fonte: Elaborado pela autora.
As dez primeiraspropriedades podem ser facilmente comprovadas, se fizermos a leitura 
como uma operação lógica. Tomando como exemplo a propriedade 1, sabemos que a 
operação OR é verdade se pelo menos uma entrada for verdade. Se a operação efetua 
um OR com o valor falso, representado pelo 0, o resultado dependerá apenas da outra 
entrada. Se for verdade, o resultado será verdade (1+0) e se for falso, o resultado será 
falso (0+0). Conclusão: o resultado é o valor da entrada variável (X). O mesmo raciocínio 
vale para as demais operações.
Fonte: Elaborado pela autora.
As demais propriedades se assemelham com as que conhecemos da álgebra, com exceção 
das propriedades a partir da 16ª.
Para evidenciarmos a importância das propriedades na simplificação de circuitos, vamos 
tomar como exemplo a expressão lógica dada por:
42
CAPÍTULO 2 • OS NÚMEROS E OS COMPUTADORES
Construindo a representação gráfica, como já aprendemos, teremos:
Figura 30. Representação gráfica.
 
Fonte: Elaborado pela autora.
Agora, considerando as propriedades da álgebra booleana, vamos simplificar este circuito. 
Indicamos em vermelho em que parte a regra está sendo aplicada.
Figura 31. Simplificação do circuito.
Fonte: Elaborado pela autora.
Na primeira linha, aplicamos a lei de Morgan, considerando a operação NAND. Em 
seguida, utilizamos novamente a lei de Morgan, mas dessa vez para a operação NOR. 
Na etapa seguinte, a propriedade 9 nos diz que o “inverso do inverso” é o próprio valor 
e, para terminarmos, a propriedade de consenso faz a última simplificação. Por fim, 
vamos redesenhar o circuito. 
Fonte: Elaborado pela autora.
43
OS NÚMEROS E OS COMPUTADORES • CAPÍTULO 2
Podemos observar nesse exemplo que a expressão inicial pode ser reduzida a 
uma simples operação OR. Imagine o quanto podemos economizar em circuitos?
Importante
Estamos utilizando uma notação semelhante à álgebra, mas o significado das operações é diferente. É importante 
lembrar que estamos falando de operações lógicas e os sinais + e * devem ser lidos como operadores lógicos. Dica: em 
vez de ler “um mais um igual a um”, leia “verdadeiro OR verdadeiro igual a verdadeiro”. Não faz mais sentido.
Sintetizando
Vimos até agora:
 » Como fazer operações com as bases binária e hexadecimal.
 » Como representar números negativos e caracteres.
 » Como realizar e representar operações lógicas.
44
Introdução
A partir desta aula, estudaremos os componente que definem a arquitetura de um 
computador. Nada mais importantes para a existência de um computador do que o 
processador, então, é por ele que começaremos. Popularmente, diz-se que o processador 
é o “cérebro” do computador, título que, no meu entendimento, não é merecido. Ele 
executa o que é comandado e o faz corretamente, mas é isso. Cabe ao projetista cuidar 
para que a execução ocorra e cabe ao desenvolvedor pensar no que será executado. Essa 
ideia é fundamental para que possamos compreender o papel de cada componente. 
Mesmo um computador com grande poder computacional depende dos comandos que 
recebe para atuar como esperado. Atenção! Nada de sair por aí dizendo que “foi ele que 
fez”. A parte legal é entendermos como a mágica acontece e, para isso, convido vocês a 
explorar o interior da alma do processador.
Objetivos
 » Descrever os componentes do processador.
 » Analisar o ciclo de instruções.
 » Identificar características relevantes para o desempenho do computador.
Como funciona o processador
Já vimos na aula 1, quando apresentamos a máquina de Von Neumman, que o 
processador é composto de subunidades, cada qual com a sua função. Para entendermos 
a organização do processador, vamos estudar a contribuição de cada subunidade 
para a execução das funções que devem ser realizadas. Segundo Stallings (2017), é 
esperado que o processador seja capaz de:
3CAPÍTULOVOSSA MAJESTADE, O PROCESSADOR
45
VOSSA MAJESTADE, O PROCESSADOR • CAPÍTULO 3
 » Realizar busca de instruções na memória;
 » Interpretar as instruções para determinar a ação que deverá tomar;
 » Realizar busca dos dados necessários para execução da instrução;
 » Executar a instrução;
 » Armazenar, se for o caso, o resultado da execução.
Com essas funções em mente, podemos associar cada tarefa à subunidade responsável 
por executá-la:
 
Considerando as funções descritas, percebemos a necessidade de armazenar dados 
temporariamente para que sejam lidos e/ou escritos na memória. Esses dados são 
armazenados em registradores.
Semelhante ao que estudamos na composição de um sistema computacional, o caminho 
utilizado para conexão entre os registradores e a unidade lógica aritmética (ULA) é 
denominado barramento interno do processador. Falamos apenas de dois registradores 
(RDM e REM), mas existem outros, como veremos a seguir. 
Os registradores
Registradores são pequenas memórias internas do processador. A quantidade e o tamanho 
dos registradores são características de um dado processador. O conteúdo armazenado 
é temporário, perdido quando o computador é desligado.
Importante
Não podemos falar em upgrade de registradores, pois são componentes internos do processador.
46
CAPÍTULO 3 • VOSSA MAJESTADE, O PROCESSADOR
O tempo de acesso aos registradores equivale ao tempo gasto em um ciclo de memória, 
considerando que o tempo de acesso é o tempo necessário para que a memória coloque 
a informação desejada no barramento de dados depois da identificação do endereço.
Possuem capacidade para armazenar um único dado ou endereço com alguns pouco bits. 
Tipicamente, possuem capacidade que varia de 8 a 128 bits. O tamanho do registrador 
define, por exemplo, capacidade de endereçamento de memória, quantidade de instruções 
disponíveis e tamanho da palavra utilizada pelo processador. Vamos exemplificar:
Considere um processador com REM de 32 bits. Como REM é o registrador de endereços, 
podemos afirmar que a quantidade máxima de endereços que pode ser acessada equivale 
a 232 ou 4G endereços.
Alguns registradores podem ser acessados e são visíveis ao programador e outros somente 
pelo próprio processador. Na família Intel, os processadores de uso geral são identificados 
por AX, BX etc. Os registradores de controle com finalidade específica, além do RDM e 
do REM, já vistos na aula anterior, são:
 » RI (registrador de instruções): armazena a instrução que está em execução.
 » PC (contador de programa): armazena o endereço da próxima instrução que será 
executada.
 » PSW (palavra de estado do processo): armazena informações sobre o estado da 
execução em um dado momento. Diferente dos demais, cada bit ou conjunto de 
bits possuem um significado.
 » Esses registradores são fundamentais para que a execução concorrente 
de programas seja possível, como veremos mais à frente ao tratarmos das 
interrupões.
Como exemplo, a figura 28 mostra os registradores do Intel® Core i7. Os registradores 
EAX, EBX, ECX e EDX são de uso geral e podem ser utilizados em partes de 8 (AH e AL, 
por exemplo) ou 16 bits (AX, por exemplo) para manter a compatibilidade com modelos 
anteriores.
Atenção
O nome atribuído aos registradores pode variar em função do fabricante do processador. O importante é 
compreender que há um (ou mais de um) registrador que possui a função indicada.
47
VOSSA MAJESTADE, O PROCESSADOR • CAPÍTULO 3
Figura 32. Registradores Intel Core i7.
Fonte: (TANEMBAUM; AUSTIN, 2013, p.277).
Conjunto de instruções de um processador
O conjunto de instruções do processador é, de fato, o que o processador “sabe” 
fazer. São os comandos que o processador reconhece e executa. Cada instrução 
é identificada por um código de operação (ou OpCode) que será executada em 
operandos. A quantidade de operandos depende da instrução. Existem instruções 
que não possuem nenhum operando e outras que podem ter até três.
Atenção
Lembre-se de que 232 = 22 x 230 = 4 G. Não tem o “B” de bytes, pois estamos falando de endereços e não de bytes. São 4 
Giga-endereços.
48
CAPÍTULO 3 • VOSSA MAJESTADE, O PROCESSADOR
Figura 33. Código deoperação e operandos.
Fonte: Elaborado pela autora.
A programação em Assembly utiliza mnemônicos para idenficar as instruções. Tomando 
a família Intel © como exemplo, algumas instruções são apresentadas no Quadro 3.
Quadro 3. Mnemônicos Intel ®.
OpCode Significado
MOV Move dados entre memória e registrador
ADD Executa operação de soma
JMP Executa desvio incondicional
CMP Compara
AND Executa operação AND bit-a-bit
Fonte: Intel ®. 
As instruções são categorizadas em:
Figura 34. Categorias das instruções.
 Fonte: Elaborado pela autora.
As instruções possuem formatos diferentes em função da quantidade de 
operandos necessários. Novamente vamos reforçar que o OpCode e a forma 
como as instruções tratam os operandos dependem exclusivamente do 
fabricante do processador. Os formatos ilustrados na figura 35 são usualmente 
encontrados. 
49
VOSSA MAJESTADE, O PROCESSADOR • CAPÍTULO 3
Figura 35. Instruções: formatos.
Fonte: (TANENBAUM; AUSTIN, 2013, p. 285).
Na Figura 36, podemos ver alguns exemplos de instruções com um, dois e três operandos. 
Tomando como exemplo a operação ADD, que executa uma adição com três operandos, 
os valores de OP2 e OP3 são somandos, e o resultado é atribuídos à OP1. Em operações 
desse tipo com apenas dois operandos, o resultado da operação é, em geral, atribuído 
ao primeiro.
Figura 36. Exemplos de instruções.
Fonte: Elaborado pela autora.
Lembrando o que foi mostrado quando falamos de registradores, podemos concluir que a 
quantidade de instruções que um processador depende do tamanho do RI. Imagine, por 
Saiba mais
Quer conhecer mais sobre assembler de processadores Intel de 64 bits? Veja em: https://software.intel.com/en-us/
articles/introduction-to-x64-assembly.
50
CAPÍTULO 3 • VOSSA MAJESTADE, O PROCESSADOR
exemplo, um processador cujo RI possui 8 bits. Como esse é o registrador que armazena 
a instrução que está sendo executada, podemos afirmar que o conjunto de instruções 
pode ter até 28 instruções distintas, ou seja, 256 instruções. 
Repare que as instruções podem fazer referência a endereços de memória, registradores 
ou até mesmo valores. Então, além da quantidade de operandos, a forma como ele é 
endereçado também é importante. Os modos de endereçamento podem ser (Figura 37):
Figura 37. Modos de endereçamento.
Fonte: Elaborado pela autora.
No modo imediato, um valor é atribuído diretamente ao endereço apontado. Bastante 
simples e rápido, porém pouco flexível. No modo direto, o valor está em um determinado 
endereço de memória ou registrados. É mais flexível que o modo imediato, mas também 
é limitado. O modo indireto é o mais flexível e com maior abrangência, mas, como 
esperado, com operação mais complexa e com mais acessos à memória. Para ilustrarmos 
cada forma de endereçamento, vamos ver o exemplo a seguir.
Considere um processador com um conjunto de instruções que emprega vários modos de 
endereçamento. A memória principal possui endereços de 16 bits, e o mapa de memória 
está representado no Quadro 4. 
Quadro 4. Exemplo: mapa de memória.
ENDEREÇO CONTEÚDO
12B9 7C
12BA 82
12BB 12
12BC BE
12BD 9ª
12BE 75
Fonte: Elaborado pela autora.
a. A instrução possui o modo direto, e o operando possui o valor 12B9.
b. A instrução retornará 7C, pois será atribuído o conteúdo do endereço 12B9.
51
VOSSA MAJESTADE, O PROCESSADOR • CAPÍTULO 3
c. A instrução usa o modo imediato, e o operando possui o valor 12BA.
d. A instrução retornará 12BA, pois será atribuído valor 12BA e não o conteúdo do 
endereço.
e. A instrução usa o modo indireto, e o operando possui o valor 12BB.
A instrução retornará 75, pois 12BB aponta para o valor 12, e o endereço tem 16 bits. 
Dessa forma, a resposta será o conteúdo de 12BE (O valor “12” ocupa 8 bits. Os outros 
8 bits então no endereço 12BC).
Ciclo de execução de instruções
A execução de uma instrução utiliza diferentes partes do processador. O que acontece 
do momento em que a instrução é iniciada até o seu término é chamado de ciclo de 
instrução. Como vimos na máquina de Von Neumann, o processador possui basicamente 
duas unidades responsáveis pela execução de uma instrução: a unidade de controle e a 
unidade lógico-aritmética. Os elementos que atuam em cada função estão apresentados 
na Figura 38.
Figura 38. Componentes do processador.
Fonte: Elaborado pela autora.
O ciclo de execução de uma instrução começa com a decodificação da instrução, passando 
pela busca de operandos, execução propriamente dita e, finamente, pelo armazenamento 
do resultado, se for o caso (Figura 39). A instrução não é interrompida durante o ciclo. 
As instruções demoram tempos diferentes para serem executadas. Em uma situação 
ideal, cada instrução deveria ser executada em um ciclo de clock.
52
CAPÍTULO 3 • VOSSA MAJESTADE, O PROCESSADOR
Figura 39. Ciclo de instrução.
Fonte: Elaborado pela autora.
O ciclo de busca também pode ser detalhado, como mostra a Figura 39. A unidade 
de controle alimenta o registrador PC e MAR (REM). O endereço é colocado no 
barramento de endereço. A memória responde ao colocar o dado no barramento 
de dados, alimentando o registrador MBR (RDM). A instrução será colocada no 
registrador IR, ficando pronta para execução.
Figura 40. Execução de uma instrução.
Fonte: (STALLINgS, 2017, p. 425).
O ciclo apresentado mostra que nem todos os componentes estão em uso 
simultaneamente. Isso parece um desperdício? Sim!! ! ! A instrução é executada 
em partes por unidades distintas dentro do processador. Para exemplificar uma 
situação análoga, imagine uma linha de montagem de um carro, como ilustrado 
Importante
Clock do processador: é um contador de tempo, em que o tempo de cada pulso é denominado ciclo. O clock alterna 
estados 0 e 1. Um pulso é o tempo gasto entre dois estados iguais.
É o responsável por definir a frequência do processador, em geral, medido em megahertz ou gigahertz. Não 
falamos em “velocidade” e sim em “frequência” para identificar o desempenho de um processador, mesmo 
não sendo o único indicador. O clock representa a quantidade de eventos realizados por segundo. Se um 
processador consegue realizar cem ciclos em um segundo, o clock é de 100 Hz. Megahertz e gigahertz 
representam milhões de ciclos e bilhões de ciclos, respectivamente.
53
VOSSA MAJESTADE, O PROCESSADOR • CAPÍTULO 3
na Figura 41. A cada etapa, uma nova peça é adicionada até que o carro esteja 
completo. Quando o chassi, montado na etapa 1, é finalizado, passa-se para a 
segunda fase e novo chassi poderá começar a ser montando enquanto o motor é 
inserido na etapa seguinte. Imagine se um novo carro só começasse a ser produzido 
quando outro fosse terminado???? 
Figura 41. Linha de montagem de um carro.
Fonte: Elaborado a partir de imagens disponíveis em: https://www.kisspng.com/png-car-assembly-line-factory-clip-art-
assembly-clipar-177909/.
Vamos fazer uma conta rápida? Para simplificar, considere que cada etapa dure 
1h. Como são 5 etapas, cada carro seria produzido em 5 horas. Se cada carro 
tiver que ser produzido integralmente para que a produção de outro comece, a 
produção de 10 carros levaria 50 horas. Pensando agora na linha de montagem, 
teremos o seguinte esquema (Figura 42):
Figura 42. Linha de produção com 5 estágios.
Fonte: Elaborado pela autora.
54
CAPÍTULO 3 • VOSSA MAJESTADE, O PROCESSADOR
Veja que os dez carros foram produzidos em 14h, em vez das 50h gastas inicialmente. 
Muito melhor, não acha? De uma forma geral, podemos dizer que a produção de n carros 
em x estágios, cada um com um tempo t, será em:
P = [ x + (n - 1) ] * t
No exemplo: x = 5; n =10; t = 1h. Então: P = 5 + 9 = 14h
Na computação, essa técnica é conhecida como pipeline. Os estágios de “produção” 
são os estágios de execução de uma instrução, e os “carros” são as instruções de um 
mesmo programa. O caso apresentado representa um pipeline ideal, mas sabemos que 
nem todas as etapas duram o mesmo tempo. Além disso, etapas mais rápidas podem 
depender de retorno de etapas mais lentas, reduzindo a eficiênciado processo. Para 
compensar, algumas estratégias são adotadas para aumentar o desempenho, como, 
por exemplo, a predição de desvio que “tenta adivinhar” qual será o resultado de uma 
operação condicional.
Já aprendemos que um programa é composto por várias instruções, que são executadas 
em uma determinada sequência. Até aí, nada de novo. Sabemos também que o 
processador somente executa um programa por vez (considerando um núcleo). Nada 
de novo, também. Ora! Então por que temos a sensação de vários programas sendo 
executados ao mesmo tempo? Isso acontece porque existe o mecanismo de interrupção, 
que veremos a seguir. 
Interrupções
Interrupção é o nome dado à mudança no fluxo de execução de um processo 
provocada por uma ação de algum dispositivo de hardware. Lembre-se do que 
falamos na aula 1. Nenhum software poderá interromper um programa em 
execução, pois, para que possa fazer isso, o programa deveria estar executando 
e, como vimos, isso não é possível em um mesmo processador. 
As interrupções são basicamente de dois tipos:
 » Interrupções mascaráveis (IRQ): são aquelas que podem ser ignoradas a partir de 
uma configuração do sistema. Existe uma instrução específica para “desligar” as 
interrupções.
Saiba mais
Quer conhecer mais sobre pipeline? Veja Arqutietura e organização de computadores, de Stallings, na 
biblioteca virtual.
55
VOSSA MAJESTADE, O PROCESSADOR • CAPÍTULO 3
Interrupções não mascaráveis (NMI): são interrupções que não podem ser desabilitadas, 
pois podem comprometer a integridade do sistema.
As interrupções são sinais que os dispositivos de hardware (mouse, teclado e o 
temporizador) enviam ao processador. Cada pedido de interrupção é identificado por 
um número chamado de interrupt request (IRQ). É um sinal enviando pelo barramento 
para o processador de forma assíncrona, ou seja, sem que o programa em execução 
esteja esperando que aconteça. Não podemos garantir e nem mesmo prever quando 
irão acontecer.
Vamos por partes. O que ocorre quando mexemos o mouse, por exemplo? 
O dispositivo envia um sinal (IRQ) ao processador. Se as interrupções não estiverem 
desabilitadas (pense nisso!!!), o processador recebe o sinal e, ao terminar a instrução que 
está em execução, iniciará o processo de tratamento, identificando qual foi o dispositivo 
que solicitou atenção. Para que seja possível retornar ao ponto em que o processo estava 
executando, o processador deverá armazenar algumas informações antes de passar 
o controle para a rotina de software que irá tratar o pedido. Isso é muito importante, 
pois se algum outro programa executar antes, as informações relativas ao PC e PSW do 
programa corrente serão perdidas. Somente depois dessa etapa, o processador carrega 
no PC o endereço da rotina de tratamento da interrupção. Lembre-se de que o PC contém 
o endereço da próxima instrução que será executada. Dessa forma, o controle passa 
para a rotina de tratamento da interrupção. Agora, sim, estamos falando de software. A 
rotina de tratamento guarda o conteúdo dos demais registradores e executa o que foi 
Posicionamento do autor
Alguns autores associam o termo exceção à “interrupção de software”. A exceção é alguma coisa que 
acontece de forma síncrona pelo programa, ou seja, sempre acontecerá naquele momento quando for 
executado. A associação tende a ser confusa por não se tratar de fato de uma interrupção.
Para refletir
Você certamente já passou por aquela sensação de que está tudo “congelado”. Mexe o mouse e... nada. Aperta a 
tecla “caps lock” e... nada. Se você considerar que tanto o mouse quanto o teclado geram interrupções para serem 
atendidos, o que pode ter ocorrido?
Vale lembrar que processador nunca “congela”. Aliás, ele só esquenta. Não existe o estado de “processador 
parado”. Ele está ativo e funcionando durante todo o tempo em que o computador está ligado.
56
CAPÍTULO 3 • VOSSA MAJESTADE, O PROCESSADOR
solicitado. Ao terminar, recupera o estado anterior e a execução retorna ao processo que 
foi interrompido. Veja a síntese do processo na Figura 43.
Figura 43. Processo de tratamento de interrupção.
Fonte: Elaborado pela autora.
A sequência que será apresentada demostra com detalhes cada passo para execução de 
uma rotina de interrupção.
a. Situação inicial: a aplicação está em execução no endereço 101. O PC está 
apontando para o próximo endereço, que seria o 102. O processo está em um 
estado representado por “estado AP”. Nesse momento, ocorre uma interrupção.
Figura 44. Situação inicial
Fonte: Elaborado pela autora.
b. O processador termina a execução da instrução que está no endereço 101, salva 
na pilha do sistema o endereço que estava no PC (102).
57
VOSSA MAJESTADE, O PROCESSADOR • CAPÍTULO 3
Figura 45. Execução da instrução
Fonte: Elaborado pela autora.
c. Em seguida, salva o conteúdo do registrador PSW.
Figura 46. Registrador PSW
Fonte: Elaborado pela autora.
d. Para passar o controle para a rotina de tratamento, o processador coloca no PC o endereço 
inicial da rotina, e o PSW passa a representar o estado da rotina de interrupção A. Veja 
que, no exemplo, o endereço inicial da rotina de tratamento da interrupção A é 500.
Figura 47. Rotina de interrupção A
Fonte: Elaborado pela autora.
58
CAPÍTULO 3 • VOSSA MAJESTADE, O PROCESSADOR
e. A rotina guarda na pilha o conteúdo dos demais registradores antes que sejam 
alterados.
Figura 48. Rotina salva os registradores
Fonte: Elaborado pela autora.
f. Quando a rotina termina, é preciso restaurar a situação anterior. A própria 
rotina recupera os registradores de trabalho e, na ordem, o PSW e o PC. 
Figura 49. PSW Rotina A
Fonte: Elaborado pela autora.
Figura 50. PSW estado AP
Fonte: Elaborado pela autora.
59
VOSSA MAJESTADE, O PROCESSADOR • CAPÍTULO 3
g. O PC deve ser o último, pois é ele que indica onde está a próxima instrução a 
ser executada. Nesse exemplo, o valor 102 é recuperado, retornando ao ponto 
onde a aplicação estava. Vale lembrar que o armazenamento tem a estrutura de 
uma pilha, ou seja, o último valor armazenado será o primeiro a ser restaurado, 
como em uma pilha de pratos.
Figura 51. Recupera PC.
Fonte: Elaborado pela autora.
h. Finalmente a execução retorna à aplicação.
Figura 52. Retorno à aplicação
Fonte: Elaborado pela autora.
Agora que você já sabe de tudo isso, pense bem antes de ficar balançando o mouse 
quando estiver com pressa. Além de não “dar corda” no processador, atrasa muito o que 
está em processamento. #ficadica.
Saiba mais
Para conhecer a tabela de interrupções da arquietura x86, veja a página 446 do livro Arqutietura e organização de 
computadores, de Stallings, na biblioteca virtual.
60
CAPÍTULO 3 • VOSSA MAJESTADE, O PROCESSADOR
Outras arquiteturas
Até o momento, estudamos os processadores mais comuns, mas é sempre bom lembrar 
que existem outras arquiteturas no mercado. Alguns modelos foram projetados para 
redução de custos de produção; e outros, para alto desempenho. Vamos conhecer agora 
essas arquiteturas e para que são utilizadas.
Arquiteturas CISC e RISC
Até agora, estudamos processadores conhecidos como sendo de arquitetura complex 
instruction set computers (CISC). São arquiteturas que possuem em torno de 300 
instruções, responsáveis pelo termo “complexo” na designação, além de diferentes 
formas de endereçamento. São utilizadas desde os computadores dos anos 1980 até os 
microcomputadores atuais. 
A indústria de computadores precisava de alguma alternativa de menor custo, mas 
que mantivesse o poder computacional dos computadores “de grande porte”. Produzir 
processadores mais rápidos e baratos foi uma das alternativas. Os processadores 
posteriormente apelidados de reduced instruction set computers (RISC) foram 
produzidos para suprir uma parte desse mercado. A proposta era a de reduzir o 
número de instruções disponíveis com base na frequência de uso dessas instruções 
e, assim, simplificar a produção dos processadores. Em contrapartida, para um 
mesmo programa, mais instruções eram

Continue navegando