Você está na página 1de 143

Gilberto Farias de Sousa Filho

Eduardo de Santana Medeiros Alexandre

Introduo a Computao

Editora da UFPB
Joo Pessoa
2015
UNIVERSIDADE
FEDERAL DA PARABA

Reitora MARGARETH DE FTIMA FORMIGA MELO DINIZ


Vice-Reitor EDUARDO RAMALHO RABENHORST

EDITORA DA UFPB

Diretora IZABEL FRANA DE LIMA


Vice-Diretor JOS LUIZ DA SILVA
Superviso de Editorao ALMIR CORREIA DE VASCONCELLOS JNIOR
Superviso de Produo JOS AUGUSTO DOS SANTOS FILHO

Pr-reitora de graduao ARIANE NORMA DE MENESES S


Diretor da UFPB Virtual JAN EDSON RODRIGUES LEITE
Diretor do CI GUIDO LEMOS DE SOUZA FILHO

CURSO DE LICENCIATURA EM COMPUTAO A DISTNCIA

Coordenador LUCIDIO DOS ANJOS FORMIGA CABRAL


Vice-coordenadora DANIELLE ROUSY DIAS DA SILVA

S725i Sousa Filho, Gilberto.

Introduo computao / Gilberto Farias de


Sousa Filho, Eduardo de Santana Medeiros Alexandre. -
2Edio. Joo Pessoa: Editora da UFPB, 2015.

???p. : il.

ISBN: ???-??-???-????-?

Curso de Licenciatura em Computao na


Modalidade Distncia. Universidade Federal da Paraba.

1. Computao. 2. Informtica. 3. Redes de


computadores. I. Ttulo.

CDU: 004

Todos os direitos e responsabilidades dos autores.

EDITORA DA UFPB
Caixa Postal 5081 Cidade Universitria
Joo Pessoa Paraba Brasil
CEP: 58.051 970
http://www.editora.ufpb.br

Impresso no Brasil
Printed in Brazil
Introduo Computao i

Introduo Computao

Ed. v1.1.2
Introduo Computao ii

HISTRICO DE REVISES

VERSO DATA MODIFICAES NOME

v1.1.2 09/03/2015 Correo ortogrfica; Eduardo

v1.1.1 31/10/2014 Atualizao de imagens para impresso; Eduardo


Incluso de mini-sumrio na impresso;

v1.1.0 16/10/2014 cap3 Reorganizao das sees de Eduardo


Aritmtica Binria e Complemento de 2;
Incluso do ISBN;

v1.0.7 23/9/2014 Solicitando feedback ao final de cada Eduardo


captulo;

v1.0.6 20/9/2014 Criando links para issues no histrico de Eduardo


reviso;

v1.0.5 2/Setembro/2013 Correo na tabela 2.4; Eduardo

v1.0.4 2/Setembro/2013 Incluso de exerccios no captulo 3; Eduardo


Criao de captulo com respostas;
Incluso de seo atividades no
prefcio;

v1.0.3 26/Agosto/2013 Melhoria de imagens. Eduardo

v1.0.2 Agosto 2013 Incluso do ISBN e colorao de Eduardo Santana


imagens.

v1.0.1 Agosto 2013 Reviso do livro aps voltar da grfica. Gilberto Farias,
Eduardo Santana

v1.0.0 Agosto 2013 Primeira verso do livro. Gilberto Farias,


Eduardo Santana
Introduo Computao iii

Sumrio

1 Histria dos computadores 1


1.1 Precursores dos computadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 As geraes dos computadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 Representao da informao 19
2.1 Conceito de bit e byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Possibilidades de representao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3 Sistemas de numerao 27
3.1 Noes de Sistema de Numerao . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 Sistema de Numerao Posicional . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3 Converses entre bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4 Aritmtica Binria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.5 Nmeros Binrios Negativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.6 Circuitos nos computadores para realizar as operaes . . . . . . . . . . . . . . . . 41
3.7 Representao de Nmero Fracionrio no Sistema Binrio . . . . . . . . . . . . . . 42
3.8 Fundamentos da Notao de Ponto Flutuante . . . . . . . . . . . . . . . . . . . . . 43
3.9 Lgica Binria e Portas Lgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.10 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.11 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4 Organizao e Funcionamento do Computador 51


4.1 Arquitetura de um Computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2 Programando um computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3 Animao demonstrando o funcionamento da arquitetura . . . . . . . . . . . . . . . 59
4.4 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.5 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Introduo Computao iv

5 Algoritmos, Linguagem de Programao, Tradutor e Interpretador 61


5.1 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2 Linguagem de Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.3 Paradigmas de Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.4 Tradutor e Interpretador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.5 Tradutores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.6 Ligao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.7 Carregamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.8 Interpretadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.9 Contedos complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.10 Prtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.11 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.12 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6 Introduo aos Sistemas Operacionais 77


6.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.2 Tipos de Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.3 Conceitos de Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.4 Contedos complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.5 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.6 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

7 Redes de Computadores e Internet 92


7.1 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.2 Tecnologias de Acesso e Meios de Comunicao . . . . . . . . . . . . . . . . . . . 96
7.3 Topologia da Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.4 Camadas de protocolos e seus servios . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.5 Contedos complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.6 Prtica escolar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.7 Prticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.8 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.9 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

8 Referncias 111
8.1 Referncias Bibliogrficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

A Lgica Binria e Portas Lgicas 112


A.1 Lgica Binria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
A.2 Somador de 2 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Introduo Computao v

B Usando os Softwares Bsicos 117

C Investigando a Internet 121


C.1 Usando a aplicao Traceroute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

D Usando a aplicao Wireshark 123

E Respostas das atividades 126


E.1 Captulo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
E.2 Captulo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
E.3 Captulo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
E.4 Captulo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
E.5 Captulo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
E.6 Captulo 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
E.7 Captulo 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

9 ndice Remissivo 128


Introduo Computao vi

Prefcio

Sumrio
Pblico alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Como voc deve estudar cada captulo . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Caixas de dilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Vdeos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Compreendendo as referncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Cdigos e comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Baixando os cdigos fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x

BAIXANDO A VERSO MAIS NOVA DESTE LIVRO


Acesse https://github.com/edusantana/introducao-a-computacao-livro/releases para veri-
ficar se h uma verso mais nova deste livro (verso atual: v1.1.2). Voc pode consultar
o Histrico de revises, na incio do livro, para verificar o que mudou entre uma verso e
outra.

Este livro foi desenvolvido para a introduo do tema Computao, no tendo a ambio de englobar
toda esta vasta rea do conhecimento humano. Computao a rea responsvel pelas diversas regras
e tcnicas para o ato de computar, representar e disponibilizar a informao de forma automtica.
O curso de Licenciatura em Computao tem como objetivo transformar seus egressos em profissio-
nais que possam atuar na rea da educao com o auxlio da Computao, tanto para ensinar conceitos
de sua prpria rea, como tambm servir de consultor para professores que atuam em diversas reas
como Matemtica, Histria, Cincias e etc.
No entanto, para o profissional desta rea se tornar um diferencial na educao, ele precisa conhecer
as Cincias da Computao, permitindo que o mesmo possa responder a questes como: Como a
informao representada em um computador? Como o computador realiza uma soma? Como
fazer para o computador resolver um problema especfico de forma automtica? Como o computador
disponibiliza informao no mundo todo e como fazer para disponibilizar o seu material neste meio?
So perguntas como esta que o aluno ir aprender a responder durante todo o seu curso, sendo este
livro apenas um produtor de novas dvidas.
Iremos abordar aqui a histria evolutiva dos Computadores; discutiremos sobre como a informa-
o (nmeros, imagem som e etc.), representada no computador; descreveremos a arquitetura e
o funcionamento dos componentes bsicos de um computador; apresentaremos os softwares bsi-
cos responsveis por construir os programas desenvolvidos por qualquer programador atravs de seus
Introduo Computao vii

algoritmos; descreveremos as funcionalidades bsicas de um sistema operacional, software que geren-


cia os recursos do computador e por fim introduziremos o funcionamento das redes de computadores
promovendo comunicao instantnea entre as pessoas do mundo inteiro.
Introduo Computao apenas uma viso rpida sobre os diversos temas da Computao, ser-
vindo como porta de entrada para o vasto campo do conhecimento que vocs se aventuraro em todo
o curso. Prometemos duas coisas para quem pretende concluir este curso: muito trabalho e muita sa-
tisfao. O educador Rubem Alves criou um belo aforismo Ostra Feliz no faz Prola, se referindo
ao fato de que a ostra ao se proteger de um corpo estranho que penetrou em sua concha, cria uma
defesa natural ao redor deste invasor, gerando por fim uma prola, entretanto, durante este processo a
ostra sofre muito devido falta de defesa dentro de sua concha. Para ns aprendizes o ensino assim,
cheio de sofrimento, mas ao final teremos criado nossas prprias prolas.

Pblico alvo

O pblico alvo desse livro so os alunos de Licenciatura em Computao, na modalidade distncia


1 . Ele foi concebido para ser utilizado numa disciplina de Introduo Computao, no primeiro

semestre do curso.

Como voc deve estudar cada captulo

Leia a viso geral do captulo


Estude os contedos das sees
Realize as atividades no final do captulo
Verifique se voc atingiu os objetivos do captulo

NA SALA DE AULA DO CURSO

Tire dvidas e discuta sobre as atividades do livro com outros integrantes do curso
Leia materiais complementares eventualmente disponibilizados
Realize as atividades propostas pelo professor da disciplina

Caixas de dilogo

Nesta seo apresentamos as caixas de dilogo que podero ser utilizadas durante o texto. Confira os
significados delas.

Nota
Esta caixa utilizada para realizar alguma reflexo.

1 Embora ele tenha sido feito para atender aos alunos da Universidade Federal da Paraba, o seu uso no se restringe

a esta universidade, podendo ser adotado por outras universidades do sistema UAB.
Introduo Computao viii

Dica
Esta caixa utilizada quando desejamos remeter a materiais complementares.

Importante
Esta caixa utilizada para chamar ateno sobre algo importante.

Cuidado
Esta caixa utilizada para alertar sobre algo que exige cautela.

Ateno
Esta caixa utilizada para alertar sobre algo potencialmente perigoso.

Os significados das caixas so apenas uma referncia, podendo ser adaptados conforme as intenes
dos autores.

Vdeos

Os vdeos so apresentados da seguinte forma:

Figura 1: Como baixar os cdigos fontes: http://youtu.be/Od90rVXJV78

Nota
Na verso impressa ir aparecer uma imagem quadriculada. Isto o qrcode
(http://pt.wikipedia.org/wiki/C%C3%B3digo_QR) contendo o link do vdeo. Caso voc tenha
um celular com acesso a internet poder acionar um programa de leitura de qrcode para
acessar o vdeo.
Na verso digital voc poder assistir o vdeo clicando diretamente sobre o link.
Introduo Computao ix

Compreendendo as referncias

As referncias so apresentadas conforme o elemento que est sendo referenciado:

Referncias a captulos
Prefcio [vi]
Referncias a sees
Como voc deve estudar cada captulo [vii], Caixas de dilogo [vii].
Referncias a imagens
Figura 2 [x]

Nota
Na verso impressa, o nmero que aparece entre chaves [ ] corresponde ao nmero da
pgina onde est o contedo referenciado. Na verso digital do livro voc poder clicar no
link da referncia.

Cdigos e comandos

Os cdigos ou comandos so apresentados com a seguinte formao:


echo "Hello Word"

No exemplo a seguir, temos outra apresentao de cdigo fonte. Desta vez de um arquivo main.c, que
se encontra dentro do diretrio livro/capitulos/code/prefacio. O diretrio prefacio indica o captulo
onde o cdigo est relacionado.
Cdigo fonte code/prefacio/main.c
main.c
#include "teste.h"
#include <stdio.h>

int main(){
int a, b;
a = soma(2, 3);
printf("Soma = %d\n", a);
b = subtrai(4, 3);
printf("Subtrao = %d\n", b);
}

Baixando os cdigos fontes

Recomendamos duas formas de acessar os cdigos fontes contidos neste livro:

Acesso on-line individual


https://github.com/edusantana/introducao-a-computacao-livro/tree/v1.1.2/livro/capitulos/code
Introduo Computao x

Baixando zip contendo os cdigos

Verso atual
https://github.com/edusantana/introducao-a-computacao-livro/archive/v1.1.2.zip

Nota
Independente do mtodo utilizado para acessar os arquivos, os cdigos fontes esto organi-
zados por captulos no diretrio livro/capitulos/code.

Feedback

Voc pode contribuir com a atualizao e correo deste livro. Ao final de cada captulo voc ser
convidado a faz-lo, enviando um feedback como a seguir:

Nota
A seo sobre o feedback, no guia do curso, pode ser acessado em: https://github.com/-
edusantana/guia-geral-ead-computacao-ufpb/blob/master/livro/capitulos/livros-
contribuicao.adoc.

Figura 2: Exemplo de contribuio


Introduo Computao 1 / 130

Captulo 1

Histria dos computadores

Sumrio
1.1 Precursores dos computadores . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 baco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Ossos de Napier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3 As rodas dentadas de Pascal (Pascaline) . . . . . . . . . . . . . . . . . . . 5
1.1.4 Leibniz - A primeira calculadora com quatro operaes . . . . . . . . . . . 6
1.1.5 Mquinas Programveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.5.1 Tear de Jacquard . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.5.2 A Mquina Diferencial . . . . . . . . . . . . . . . . . . . . . . 8
1.1.5.3 A Mquina Analtica . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.5.4 A Primeira programadora . . . . . . . . . . . . . . . . . . . . . 9
1.1.6 Linha do tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.7 Alan Turing - O pai da Cincia da Computao . . . . . . . . . . . . . . . 10
1.2 As geraes dos computadores . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.1 Primeira Gerao (1946-1954) . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.2 Segunda Gerao (1955-1964) . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.3 Terceira Gerao (1964-1977) . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.4 Quarta Gerao (1977-1991) . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.5 Quinta Gerao (1991 dias atuais) . . . . . . . . . . . . . . . . . . . . . 17
1.3 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:

Citar os precursores dos computadores


Discorrer sobre a importncia do surgimento das primeiras tecnologias para a Compu-
tao
Introduo Computao 2 / 130

Descrever como eram os computadores em cada uma das 5 geraes


Relatar a importncia do circuito integrado no processo de fabricao dos computado-
res atuais

Os computadores fazem parte do dia a dia da sociedade contempornea, mas voc conhece a histria
deles?
Conhecer a histria dos computadores importante pois atravs do estudo do passado que pode-
mos compreender e valorizar o presente. Ao decorrer do captulo veremos exemplos de como ideias
simples contriburam para evoluo da humanidade.
Mas o que um computador? A palavra computador significa aquele que faz clculos, seja ele
pessoa ou mquina. Sem dvida as pessoas foram os primeiros computadores, j que passavam horas
realizando contas e mais contas. Inclusive, veremos mais a adiante que o surgimento de uma simples
calculadora causou revolta pois as pessoas tiveram medo de perder seus empregos. Mas no vamos
precipitar nossos estudos, vamos comear pelo incio.

Nota
Daqui e em diante, sempre que mencionarmos a palavra computador estaremos nos refe-
rindo ao seu sentido usual, de mquinas.

Neste captulo iremos conhecer os instrumentos e mquinas precursores dos computadores, e sabere-
mos em qual momento da histria surgiram as mquinas programveis. Em seguida, estudaremos as
geraes de computadores, procurando entender a sua evoluo.
Para ajud-lo na leitura que se segue, convidamos a assistir estes vdeos sobre a Histria do Compu-
tador.

Figura 1.1: Histria do Computador 1: http://youtu.be/Ixgh3AhiL3E


Introduo Computao 3 / 130

Figura 1.2: Histria do Computador 2: http://youtu.be/dWiUZsoLD0M

1.1 Precursores dos computadores

So considerados precursores dos computadores todos os instrumentos ou mquinas que contriburam


com ideias para a criao dos mesmos. Dentre eles, o surgimento de uma mquina programvel foi
um grande marco na histria dos computadores.
Vamos iniciar nossos estudos com um instrumento que talvez voc conhea e provavelmente j utili-
zou na escola, o baco.

1.1.1 baco

O baco foi um dos primeiros instrumentos desenvolvidos para auxiliar os humanos na realizao de
clculos. Muitos atribuem sua criao China, mas existem evidncias deles na Babilnia no ano 300
A.C.

Figura 1.3: Ilustrao de um baco

A ideia bsica do baco considerar as contas (bolinhas) contidas na parte inferior chamada de cho
do baco com valor unitrio, e cada conta contida na parte superior chamada de cu do baco com
valor de cinco unidades. Cada valor unitrio tem representao diferente dependendo da coluna em
que se encontra, logo, uma unidade na primeira coluna tem valor 1 em nosso sistema numrico, j
uma unidade na segunda coluna tem valor 10.
Introduo Computao 4 / 130

Dica
Voc pode conhecer mais sobre o baco no seguinte site:
http://www.educacaopublica.rj.gov.br/oficinas/matematica/abaco/03.html

1.1.2 Ossos de Napier

Em 1614, John Napier (l-se Neper) descobriu os clculos logaritimicos.

"A inveno dos logaritmos surgiu no mundo como um relmpago. Nenhum trabalho
prvio anunciava ou fazia prever a sua chegada. Surge isolada e abruptamente no pen-
samento humano sem que se possa considerar consequncia de obras ou de pesquisas
anteriores"
Lord Moulton

Napier tambm inventou o que ficou conhecido por Ossos de Napier (Figura 1.4 [4]), que auxilia-
vam na realizao de multiplicaes, baseando-se na teoria de logaritmos.

Figura 1.4: Ilustrao dos Ossos de Napier.


Introduo Computao 5 / 130

Figura 1.5: Ilustrao da operao de multiplicao utilizando os ossos de Napier: 46785399 x 7.

Nota
Para conhecer como os Ossos de Napier funcionam consulte: http://eu-
thais.blogspot.com.br/2010/08/como-funcionam-os-bastoes-de-napier.html ou
http://en.wikipedia.org/wiki/Napier%27s_bones (em ingls).

A criao da Rgua de Clculo, (Figura 1.6 [5]) em 1632 na Inglaterra, foi diretamente influenciada
pelos Ossos de Napier. Esta rgua chegou a ser utilizada pelos engenheiros da NASA na dcada de
1960, nos programas que levaram o homem Lua.

Figura 1.6: Rgua de Clculo

1.1.3 As rodas dentadas de Pascal (Pascaline)

Em 1642, o francs Blaise Pascal, aos 19 anos de idade, foi o primeiro a inventar um dispositivo
mecnico para realizao de clculos. O dispositivo conhecido como As rodas dentadas de Pascal
(ou Pascaline, Figura 1.7 [6]).
Pascal era filho de um cobrador de impostos e auxiliava o pai na realizao de clculos utilizando
um instrumento similar ao baco. Mas segundo ele, o trabalho era muito entediante, o que o levou a
elaborar um dispositivo para realizao de somas e subtrao.
Introduo Computao 6 / 130

Figura 1.7: Pascaline de 8 dgitos aberta, mostrando as engrenagens (acima), e a apresentao da


mquina fechada (abaixo).

O mecanismo de funcionamento o mesmo utilizado at hoje nos odmetros de carros, onde as


engrenagens so organizadas de tal forma a simular o "vai um"para a prxima casa decimal nas
operaes de adio.

Dica
Existe uma animao demonstrando o funcionamento da mquina pascaline, voc pode
acess-la atravs do seguinte link: http://therese.eveilleau.pagesperso-orange.fr/pages/-
truc_mat/textes/pascaline.htm.

As operaes de soma eram realizadas girando as engrenagens em um sentido e as operaes de


subtrao no sentido oposto, enquanto que as operaes de multiplicao utilizavam vrios giros da
soma manualmente.
O surgimento da pascaline, no entanto, no agradou a todos, alguns empregados queriam destruir a
mquina com medo de perder seus empregos.

Dica
Voc pode consultar a biografia de Pascal em: http://www.thocp.net/biographies/-
pascal_blaise.html

1.1.4 Leibniz - A primeira calculadora com quatro operaes

Em 1672, o Alemo Gottfried Wilhelm Leibniz foi o primeiro a inventar uma calculadora que realizava
as 4 operaes bsicas (adio, subtrao, multiplicao e diviso). A adio utilizava um mecanismo
Introduo Computao 7 / 130

baseado na Pascaline, mas as operaes de multiplicao realizavam a sequncia de somas automti-


cas.
Leibniz tambm foi o primeiro a defender a utilizao do sistema binrio, que fundamental nos
computadores digitais que utilizamos hoje.

1.1.5 Mquinas Programveis

Um marco na histria foi a inveno de mquinas programveis, que funcionavam de forma diferente
de acordo com uma programao que lhes era fornecida.

1.1.5.1 Tear de Jacquard

Em 1804, o Francs Joseph Marie Jacquard inventou uma mquina de tear que tranava o tecido de
acordo com uma programao que era fornecida atravs de furos num carto.

Figura 1.8: Mquina de tear usando programao atravs de cartes perfurados.

A inveno de Jacquard revolucionou a industria de tecido, e em 1806, ela foi declarada propriedade
pblica e ele foi recompensado com uma penso e royalties por cada mquina que fosse construda.

Figura 1.9: Esquerda: Jacquard perfurando os cartes. Direita: cartes perfurados.


Introduo Computao 8 / 130

1.1.5.2 A Mquina Diferencial

Em 1822, o matemtico ingls Charles Babbage props a construo de uma mquina de calcular
que ocuparia uma sala inteira. O propsito da mquina seria de corrigir os erros das tabelas de
logaritmos, muito utilizadas pelo governo britnico devido as grandes navegaes. A construo da
mquina, no entanto, excedeu em oramento e tempo na sua construo, foi inclusive o projeto mais
caro que o governo britnico j havia financiado. Eventualmente, os subsdios foram retirados e o
projeto abortado.

Figura 1.10: Pequena seo da mquina diferencial de Charles Babbage.

A seguir voc pode conferir um vdeo sobre uma rplica da Mquina Diferencial de Charles Barbage.

Figura 1.11: Demonstrao da Mquina Diferencial de Charles Babbage: http://youtu.be/-


BlbQsKpq3Ak

1.1.5.3 A Mquina Analtica

Aps a inacabada mquina diferencial, em 1837, Charles Babbage anunciou um projeto para cons-
truo da Mquina Analtica. Influenciado pelo tear de Jacquard, Babbage props uma mquina de
propsito genrico, utilizando uma programao atravs de cartes perfurados.
Introduo Computao 9 / 130

Babbage trouxe um grande avano intelectual na utilizao de cartes perfurados, enquanto Jacquard
utilizava os cartes apenas para acionar ou desativar o funcionamento de uma determinada seo da
mquina de tear, Babbage percebeu que os cartes poderiam ser utilizados para armazenar ideias
abstratas, sejam elas instrues ou nmeros, adontando na sua mquina o conceito de memria.

Figura 1.12: Mquina Analtica e os cartes perfurados.

Ele percebeu que os cartes perfurados poderiam ser utilizados para guardar nmeros, sendo utiliza-
dos como um mecanismo de armazenamento de dados e futuramente poderiam ser referenciados. Ele
idealizou o que hoje chamamos de unidade de armazenamento e unidade de processamento de
dados.
A principal funcionalidade que a diferenciava das mquinas de calcular era a utilizao de instrues
condicionais. A mquina poderia executar fluxos diferentes baseada em condies que eram avaliadas
conforme instrues perfuradas nos cartes.
Nenhum dos dois projetos de Babbage foram concludos, a mquina analtica se fosse construda teria
o tamanho de uma locomotiva.

1.1.5.4 A Primeira programadora

A condessa de Lovelace, Ada Byron, se interessou pela mquina analtica de Babbage e se comuni-
cava com ele atravs de cartas e encontros. Ela passou a escrever programas que a mquina poderia
ser capaz de executar, caso fosse construda. Ela foi a primeira a reconhecer a necessidade de loops e
sub-rotinas. Por esta contribuio, Ada ficou reconhecida na histria como a primeira programadora.

Figura 1.13: Ada Lovelace, primeira programadora.


Introduo Computao 10 / 130

1.1.6 Linha do tempo

Na Figura 1.14 [10] apresentamos uma linha do tempo dos precursores dos computadores, apresenta-
dos neste captulo.

Figura 1.14: Linha do tempo dos precursores dos computadores

1.1.7 Alan Turing - O pai da Cincia da Computao

Alan Mathison Turing (23 de Junho de 1912 7 de Junho de 1954) foi um matemtico, lgico,
criptoanalista e cientista da computao britnico. Foi influente no desenvolvimento da cincia da
computao e proporcionou uma formalizao do conceito de algoritmo e computao com a m-
quina de Turing, desempenhando um papel importante na criao do computador moderno. Durante
a Segunda Guerra Mundial, Turing trabalhou para a inteligncia britnica em Bletchley Park, num
centro especializado em quebra de cdigos. Por um tempo ele foi chefe de Hut 8, a seo responsvel
pela criptoanlise da frota naval alem. Planejou uma srie de tcnicas para quebrar os cdigos ale-
mes, incluindo o mtodo da bombe, uma mquina eletromecnica que poderia encontrar definies
para a mquina de criptografia alem, a Enigma. Aps a guerra, trabalhou no Laboratrio Nacional
de Fsica do Reino Unido, onde criou um dos primeiros projetos para um computador de programa
armazenado, o ACE.
Aos 24 anos de idade, consagrou-se com a projeo de uma mquina que, de acordo com um sistema
formal, pudesse fazer operaes computacionais. Mostrou como um simples sistema automtico po-
deria manipular smbolos de um sistema de regras prprias. A mquina terica de Turing pode indicar
que sistemas poderosos poderiam ser construdos, tornando possvel o processamento de smbolos,
ligando a abstrao de sistemas cognitivos e a realidade concreta dos nmeros. Isto buscado at
hoje por pesquisadores de sistemas com Inteligncia Artificial (IA). Para comprovar a inteligncia
artificial ou no de um computador, Turing desenvolveu um teste que consistia em um operador no
poder diferenciar se as respostas a perguntas elaboradas pelo operador eram vindas ou no de um
computador. Caso afirmativo, o computador poderia ser considerado como dotado de inteligncia
artificial. Sua mquina pode ser programada de tal modo que pode imitar qualquer sistema formal. A
ideia de computabilidade comeou a ser delineada.
A maior parte de seu trabalho foi desenvolvido na rea de espionagem e, por isso, somente em 1975
veio a ser considerado o pai da Cincia da Computao.
Para saber mais sobre a vida e obra de Alan Turing assista ao vdeo do Globo Cincia:
Introduo Computao 11 / 130

Figura 1.15: Vida e Obra de Alan Turing: http://youtu.be/yIluxaHL0v0

1.2 As geraes dos computadores

Os computadores so mquinas capazes de realizar vrios clculos automaticamente, alm de possuir


dispositivos de armazenamento e de entrada e sada.
Nesta seo iremos ver a evoluo dos computadores at os dias atuais.

1.2.1 Primeira Gerao (1946-1954)

A primeira gerao dos computadores marcada pela utilizao de vlvulas. A vlvula um tubo de
vidro, similar a uma lmpada fechada sem ar em seu interior, ou seja, um ambiente fechado a vcuo,
e contendo eletrodos, cuja finalidade controlar o fluxo de eltrons. As vlvulas aqueciam bastante e
costumavam queimar com facilidade.

Figura 1.16: As vlvulas eram do tamanho de uma lmpada.

Alm disso, a programao era fsica e realizada diretamente na linguagem de mquina, o que difi-
cultava a programao e consequentemente despendia muito tempo. O armazenamento dos dados era
realizado em cartes perfurados, que depois passaram a ser feitos em fita magntica.
Introduo Computao 12 / 130

Figura 1.17: ENIAC, representante da primeira gerao dos computadores.

Um dos representantes desta gerao o ENIAC (Figura 1.17 [12]). Ele possua 17.468 vlvulas,
pesava 30 toneladas, tinha 180 m2 de rea construda, sua velocidade era da ordem de 100 kHz e
possua apenas 200 bits de memria RAM.

Figura 1.18: Programao fsica no ENIAC

Dica
Para conhecer um pouco sobre como era esta programao (Figura 1.18 [12]) recomendados
acessar o link:
http://henrique.geek.com.br/posts/19110-programadoras-do-eniac-as-seis-mulheres-que-
operaram-o-1-computador-digital-da-historia

Nenhum dos computadores da primeira gerao possuam aplicao comercial, eram utilizados para
fins balsticos, predio climtica, clculos de energia atmica e outros fins cientficos.
Introduo Computao 13 / 130

O primeiro bug da histria


A palavra bug (inseto em ingls) empregada atualmente para designar um defeito, geral-
mente de software.
Conta a histria que um dia o computador apresentou defeito. Ao serem investigadas as
causas, verificou-se que um inseto havia prejudicado seu funcionamento. A foto abaixo,
supostamente, indica a presena do primeiro bug.

At hoje os insetos costumam invadir os equipamentos eletrnicos, portanto observe-os


atentamente, evite deixar comida prximo ao computador e no fique sem utiliz-lo por um
longo perodo.

1.2.2 Segunda Gerao (1955-1964)

A segunda gerao de computadores foi marcada pela substituio da vlvula pelo transistor. O tran-
sistor revolucionou a eletrnica em geral e os computadores em especial. Eles eram muito menores
do que as vlvulas a vcuo e tinham outras vantagens: no exigiam tempo de pr-aquecimento, con-
sumiam menos energia, geravam menos calor e eram mais rpidos e confiveis. No final da dcada
de 50, os transistores foram incorporados aos computadores.

Dica
Para saber mais sobre o funcionamento dos transistores consulte http://pt.wikipedia.org/wiki/-
Transistor.
Introduo Computao 14 / 130

Figura 1.19: Circuito com vrios transistores (esquerda). Comparao do circuito com vlvulas (canto
superior-direito) com um circuito composto de transistores (inferior-direito).

Na segunda gerao o conceito de Unidade Central de Procedimento (CPU), memria, linguagem de


programao e entrada e sada foram desenvolvidos. O tamanho dos computadores diminuiu con-
sideravelmente. Outro desenvolvimento importante foi a mudana da linguagem de mquina para
a linguagem assembly, tambm conhecida como linguagem de montagem. A linguagem assembly
possibilita a utilizao de mnemnicos para representar as instrues de mquina.

Nota
Ao longo do livro iremos estudar cada um destes conceitos: Unidade Central de Procedi-
mento (Seo 4.1.2 [54]), memria (Seo 4.1.1 [52]), linguagem de programao (Seo 5.2
[66]), entrada e sada (Seo 4.1.3 [55]).

Figura 1.20: Computadores IBM da segunda gerao.

Em seguida vieram as linguagens de alto nvel, como, por exemplo, Fortran e Cobol. No mesmo
perodo surgiu o armazenamento em disco, complementando os sistemas de fita magntica e possibi-
litando ao usurio acesso rpido aos dados desejados.

1.2.3 Terceira Gerao (1964-1977)

A terceira gerao de computadores marcada pela utilizao dos circuitos integrados, feitos de
silcio. Tambm conhecidos como microchips, eles eram construdos integrando um grande nmero
Introduo Computao 15 / 130

de transistores, o que possibilitou a construo de equipamentos menores e mais baratos.

Figura 1.21: Comparao do tamanho do circuito integrado com uma moeda (esquerda) e um chip
(direita).

Mas o diferencial dos circuitos integrados no era apenas o tamanho, mas o processo de fabricao
que possibilitava a construo de vrios circuitos simultaneamente, facilitando a produo em massa.
Este avano pode ser comparado ao advento da impressa, que revolucionou a produo dos livros.

Nota
Didaticamente os circuitos integrados so categorizados de acordo com a quantidade de
integrao que eles possuem:

LSI (Large Scale Integration - 100 transistores): computadores da terceira gerao

VLSI (Very Large Scale Integration - 1.000 transistores): computadores da quarta gerao

ULSI (Ultra-Large Scale Integration - milhes de transistores): computadores da quinta


gerao

Um computador que representa esta gerao foi o IBMs System/360, voltado para o setor comercial
e cientfico. Ele possua uma arquitetura plugvel, na qual o cliente poderia substituir as peas que
dessem defeitos. Alm disso, um conjunto de perifricos eram vendidos conforme a necessidade do
cliente.

Figura 1.22: Arquitetura plugvel da srie 360 da IBM.


Introduo Computao 16 / 130

A IBM, empresa que at ento liderava o mercado de computadores, passou a perder espao quando
concorrentes passaram a vender perifricos mais baratos e que eram compatveis com sua arquitetura.
No final desta gerao j comearam a surgir os computadores pessoais (Figura 1.23 [16]).

Figura 1.23: Computador pessoal Apple I.

Outro evento importante desta poca foi que a IBM passou a separar a criao de hardware do de-
senvolvimento de sistemas, iniciando o mercado da indstria de softwares. Isto foi possvel devido a
utilizao das linguagens de alto nvel nestes computadores.

Linguagem de alto nvel


Uma linguagem considerada de alto nvel quando ela pode representar ideias abstratas de
forma simples, diferente da linguagem de baixo nvel que representa as prprias instrues
de mquina.
Exemplo de linguagem de alto nvel:
x = y*7 + 2

Mesmo cdigo, mas escrito numa linguagem de baixo nvel (assembly):


load y // carrega valor de y
mul 7 // multiplica valor carregado por 7
add 2 // adiciona 2
store x // salva o valor do ltimo resultado em x

Os cdigos load, mul, add e store so os mnemnicos que representam as instrues


em cdigo de mquina (binrio).

1.2.4 Quarta Gerao (1977-1991)

Os computadores da quarta gerao so reconhecidos pelo surgimento dos processadores unidade


central de processamento. Os sistemas operacionais como MS-DOS, UNIX, Apples Macintosh fo-
ram construdos. Linguagens de programao orientadas a objeto como C++ e Smalltalk foram de-
senvolvidas. Discos rgidos eram utilizados como memria secundria. Impressoras matriciais, e os
teclados com os layouts atuais foram criados nesta poca.
Os computadores eram mais confiveis, mais rpidos, menores e com maior capacidade de armaze-
namento. Esta gerao marcada pela venda de computadores pessoais (Figura 1.24 [17]).
Introduo Computao 17 / 130

Figura 1.24: Computador pessoal da quarta gerao.

1.2.5 Quinta Gerao (1991 dias atuais)

Os computadores da quinta gerao usam processadores com milhes de transistores. Nesta gerao
surgiram as arquiteturas de 64 bits, os processadores que utilizam tecnologias RISC e CISC, discos
rgidos com capacidade superior a 600GB, pen-drives com mais de 1GB de memria e utilizao de
disco tico com mais de 50GB de armazenamento.

Figura 1.25: Computador da quinta gerao.

A quinta gerao est sendo marcada pela inteligncia artificial e por sua conectividade. A inteli-
gncia artificial pode ser verificada em jogos e robores ao conseguir desafiar a inteligncia humana. A
conectividade cada vez mais um requisito das indstrias de computadores. Hoje em dia, queremos
que nossos computadores se conectem ao celular, a televiso e a muitos outros dispositivos como
geladeira e cmeras de segurana.

1.3 Recapitulando

Estudamos neste captulo a histria do computador. Conhecemos os precursores do computador,


iniciando pelo o baco que auxiliava a humanidade na realizao de clculos. Muitos sculos depois,
Napier descobriu os logaritmos e inventou os ossos de Napier. Pascal inventou uma mquina que era
capaz de realizar somas e subtraes atravs de engrenagens.
Tambm vimos que no sculo XIX, o Tear de Jacquard introduziu o uso de cartes perfurados, e mais
tarde, Charles Babbage adaptou a ideia para o uso em sistemas computacionais, embora nunca tenha
terminado a construo de suas mquinas.
Em seguida, conclumos os estudos do captulo aprendendo sobre as geraes dos computadores,
inicialmente com o uso de velas, depois com transistores e finalmente com a utilizao de circuitos
integrados e como eles revolucionaram a fabricao dos computadores.
Introduo Computao 18 / 130

1.4 Atividades

1. Qual a contribuio e que caractersticas as mquinas a seguir incorporaram aos computadores


atuais?

a. Pascaline e a calculadora de Leibniz


b. Tear de Jacquard
c. Mquina Analtica de Charles Babbage

2. Descreva a tecnologia adota nas 3 primeiras Geraes de Computadores na Histria. Elenque


vantagens e desvantagens de cada tecnologia.

3. Do que se tratam a quarta e quinta gerao de computadores?

4. Quem foi Alan Turing? Qual sua importncia para Computao?

Feedback sobre o captulo


Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Acesse https://github.com/edusantana/introducao-a-computacao-livro/issues/new para reali-
zar seu feedback. Lembre-se de incluir na mensagem a seo, captulo (cap1) e a verso do
livro (v1.1.2) alvo de sua contribuio. Voc receber notificaes sobre os encaminhamen-
tos que sero dados a partir do seu feedback. Para compreender melhor como feedbacks
funcionam consulte o guia do curso.
Introduo Computao 19 / 130

Captulo 2

Representao da informao

Sumrio
2.1 Conceito de bit e byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Possibilidades de representao . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.1 Nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.3 Imagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.4 Msica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:

Explicar o que so bit e byte e a importncia do ltimo para representao da informa-


o
Explicar como nmeros, textos, imagens e msicas podem ser expressos atravs de
sequncias de bits
Ser capaz de representar novas informaes atravs de bits, com o auxlio de uma tabela

Voc provavelmente j ouviu algum falar que os computadores trabalham internamente apenas com
0 e 1 (zero e um). Tudo o que voc assiste, escuta ou cria no computador, processado internamente
atravs de sequncias de zeros e uns. O computador ao ler estas sequncias, consegue interpret-las e
em seguida apresentar as informaes contidas nelas.
Neste captulo estudaremos o conceito e bit e byte e como eles podem ser utilizados para representar
diversas informaes.
Vamos comear nossos estudos aprendendo sobre os bits e bytes.
Introduo Computao 20 / 130

2.1 Conceito de bit e byte

Um bit ou dgito binrio (binary digit), a unidade bsica que os computadores e sistemas digitais
utilizam para trabalhar, ele pode assumir apenas dois valores, 0 ou 1. Um byte uma sequncia de 8
bits.
Fisicamente, um bit pode ser representado de vrias formas: atravs de dois valores de voltagem apli-
cados num fio, diferentes direes de magnetizao em uma fita magntica, entre outras. O importante
que seja possvel identificar dois estados diferentes.

Importante
O byte a menor unidade de armazenamento utilizada pelos computadores. Isto quer
dizer que, ns nunca conseguiremos salvar menos do que 8 bits.

Na prxima seo iremos estudar como os bits e bytes so utilizados na representao de dados e
mdias.

2.2 Possibilidades de representao

Como um bit s pode assumir dois valores (0 ou 1), s ser possvel representar exatamente dois
estados distintos. Na Tabela 2.1 [20] ns temos exemplos de como podemos associar significados aos
valores do bit.
Por exemplo, em um sistema com trava eletrnica, o valor 0 poderia indicar que a porta estava fechada,
enquanto 1 indicaria que a porta est aberta. Em outro sistema que registra o estado civil, 0 poderia
representar Solteiro, enquanto 1 seria Casado.

Tabela 2.1: Representaes com um bit.

Bit Porta Lmpada Sexo Detector de movimento Estado civil


0 Fechada Desligada Masculino Sem movimento Solteiro
1 Aberta Ligada Feminino Com movimente Casado

Para representar mais de dois valores distintos ns precisamos de uma sequncia de bits maior. Na
Tabela 2.2 [20] ns temos exemplos de representaes utilizando sequncias com 2 bits, obtendo 4
possibilidades. Nesta caso, o estado civil Casado passou a ser representado pela sequncia 01.

Tabela 2.2: Representaes com dois bits.

Sequencia de Bits Lmpada Estado civil


00 Desligada Solteiro
01 Ligada com intensidade baixa Casado
10 Ligada com intensidade alta Divorciado
11 No utilizado Vivo
Introduo Computao 21 / 130

As tabelas so bastante utilizadas para representar informaes. Em uma coluna colocamos o que de-
sejamos representar e na outra sua representao binria. No h uma ordem particular, por exemplo,
na Tabela 2.2 [20] Solteiro representado por 00, mas poderamos construir outra tabela em que seria
codificado como 11 (l-se um-um).

Importante
O termo codificao binria significa traduzir um contedo para a sua representao bin-
ria.

Percebam tambm que, quando todas as informaes desejadas j foram representadas, podem existir
sequncias binrias que no possuem significado definido, que foi o caso da sequncia 11 para a
lmpada (Tabela 2.2 [20]).

Nota
Observe que o nmero de possibilidades diferentes que podemos representar depende do
tamanho da sequncia de bits que estamos utilizando, mais precisamente: 2tamanho em bits .

21 = 2 22 = 4 23 = 8 24 = 16
25 = 32 26 = 64 27 = 128 28 = 256 possibilidades (um
byte)
16 bits = 65.535 32 bits = 4.294.967.295 64 bits =
18.446.744.073.709.551.615

2.2.1 Nmeros

Independente do que desejamos representar, o primeiro passo verificar quantas informaes diferen-
tes iremos utilizar e, com base nestas informaes podemos calcular quantos bits sero necessrios
para representar todas as possibilidades.

Importante
Para representar nmeros necessrio estabelecer o intervalo de nmeros que desejamos
utilizar, pois precisamos definir quantas possibilidades diferentes queremos representar.

J vimos que com 8 bits podemos representar 256 possibilidades (nmeros) diferentes. Para repre-
sentar nmeros inteiros1 e positivos podemos construir uma tabela com todas estas possibilidades. Na
Tabela 2.3 [22] temos exemplos de como alguns desses nmeros so representados.

1 As representaes de nmeros negativos (Seo 3.5 [39]) e reais (ponto flutuante, Seo 3.7 [42]) tambm so

possveis utilizando estratgias que veremos mais adiante.


Introduo Computao 22 / 130

Tabela 2.3: Representao de nmeros utilizando um byte.

Num Byte Num Byte Num Byte Num Byte Num Byte
0 00000000 8 00001000 16 00010000 24 00011000 248 11111000
1 00000001 9 00001001 17 00010001 25 00011001 249 11111001
2 00000010 10 00001010 18 00010010 26 00011010 250 11111010
3 00000011 11 00001011 19 00010011 27 00011011 251 11111011
4 00000100 12 00001100 20 00010100 28 00011100 252 11111100
5 00000101 13 00001101 21 00010101 29 00011101 253 11111101
6 00000110 14 00001110 22 00010110 30 00011110 254 11111110
7 00000111 15 00001111 23 00010111 31 00011111 255 11111111

2.2.2 Texto

Nesta seo ns iremos aprender como o computador representa texto. Novamente, podemos utilizar
uma tabela definindo os caracteres que desejamos representar e suas correspondncias binrias.
O ASCII o padro de representao de caracteres mais conhecido. Na Tabela 2.4 [22] apresentado
um extrato da tabela ASCII, onde cada caractere possui sua representao em bits. Este padro
tambm inclui outros caracteres de controle, no apresentados na tabela, como fim de linha e final de
arquivo. A composio de um texto realizada informando a sequncia de caracteres contidos nele.

Tabela 2.4: Extrato da tabela ASCII

Char Byte Char Byte Char Byte Char Byte Char Byte
a 01100001 A 01000001 n 01101110 N 01001110 0 00110000
b 01100010 B 01000010 o 01101111 O 01001111 1 00110001
c 01100011 C 01000011 p 01110000 P 01010000 2 00110010
d 01100100 D 01000100 q 01110001 Q 01010001 3 00110011
e 01100101 E 01000101 r 01110010 R 01010010 4 00110100
f 01100110 F 01000110 s 01110011 S 01010011 5 00110101
g 01100111 G 01000111 t 01110100 T 01010100 6 00110110
h 01101000 H 01001000 u 01110101 U 01010101 7 00110111
i 01101001 I 01001001 v 01110110 V 01010110 8 00111000
j 01101010 J 01001010 w 01110111 W 01010111 9 00111001
k 01101011 K 01001011 x 01111000 X 01011000
l 01101100 L 01001100 y 01111001 Y 01011001
m 01101101 M 01001101 z 01111010 Z 01011010

Importante
Percebam que neste sistema os caracteres so representados por exatamente um byte, que
o tamanho mnimo possvel de ser salvo no computador.

Talvez voc tenha percebido a ausncia dos caracteres especiais, como o "", "", alm dos caracteres
Introduo Computao 23 / 130

acentuados como "", "", "", etc. Isto porque o padro ASCII foi criado por americanos para
codificar as mensagens escritas no idioma ingls, que no possuem tais caracteres. Por esta razo,
existem vrios outros sistemas de codificao para melhor representar as mensagens do idioma que
se deseja utilizar, alguns exemplos so: Unicode, UTF-8 e ISO 8859-1 (padro latino-americano).

Testando o tamanho do caracteres


Faa um teste! Abra um editor de texto como o bloco de notas, gedit ou kate (no use o
Word). Digite abc no documento em branco e salve-o. Em seguida, verifique o tamanho do
arquivo, dependendo da codificao utilizada pelo seu editor o arquivo poder ter de 3 a 8
bytes.

2.2.3 Imagem

Uma das formas possveis para representar imagens trat-las como grades de pontos (ou pixels).
Ao atribuir uma cor para cada ponto, podemos ento pintar a imagem. Na Figura 2.1 [23] ns temos
uma imagem e um recorte em destaque, mostrando a grade de pontos com suas respectivas cores.
Alm das cores dos pontos tambm necessrio definir o tamanho da grade (quantos pontos teremos
na horizontal e na vertical), tambm conhecida como resoluo da imagem. Sem a resoluo teramos
apenas um linha de pontos coloridos.

Figura 2.1: Fotografia evidenciando a grade de pontos.

Um sistema popular de representao de cores o RGB, onde reservado um byte para os tons de
cada uma das cores primrias: vermelho, verde e azul. Como um byte permite representar 256 tons
de uma cor, ao total so possveis representar 16 milhes (256x256x256) de cores.

Nota
Atravs do sistema RGB podemos representar as trs cores primrias e as suas derivadas,
que so as cores resultantes das misturas das cores primrias. Neste sistema, o branco
interpretado como sendo a unio de todas as cores, e o preto a ausncia de cor. Este
sistema utilizado pelo formato de imagem BMP.
O sistema RGBA inclui tambm um canal alpha, responsvel por representar a transparncia
do ponto, utilizado pelo formato de imagem PNG.
Introduo Computao 24 / 130

2.2.4 Msica

Para representar uma msica, podemos imagin-la como sendo apenas uma partitura e salvar todas as
informaes contidas nela. Depois a msica poder ser ouvida tocando a partitura salva.

Figura 2.2: Partitura da msica Marcha Soldado.

Nota
Os toques dos antigos celulares monofnicos utilizavam este sistema para reproduzir as m-
sicas, salvando apenas as notas dos tons. O formato de arquivo MID utiliza esta estratgia.
Voc pode baixar esta msica em: https://github.com/edusantana/introducao-a-computacao-
livro/raw/master/arquivos/midias/marcha_soldado.mid

Voc deve est pensando, "Mas as msicas MP3 que escuto tambm tem voz, como ela represen-
tada?". Os sons tambm podem ser representados atravs das frequncias de ondas (Figura 2.3 [24])
que os caracterizam. Mais tarde, quando voc desejar escutar as msicas, o computador ser capaz
de reproduzir os mesmos sons.

Figura 2.3: Representao de uma msica atravs de ondas.

Se possvel, acessem este vdeo sobre a representao da informao.


Introduo Computao 25 / 130

Figura 2.4: Vdeo sobre Representao da Informao: http://youtu.be/y_eCItEibHI

2.3 Recapitulando

Neste captulo voc aprendeu o que so bits e bytes, e a importncia do ltimo para salvar dados no
computador.
Em seguida, vimos como dados podem ser representados atravs de uma tabela, e como calcular
quantos bits so necessrios para representar as informaes que desejamos.
Por ltimo, vimos como nmeros, textos, imagens e msicas podem ser representadas atravs de bits.

2.4 Atividades

1. Utilizando o mtodo de representao de nmeros estudado (Seo 2.2.1 [21]), represente os


nmeros 32, 64 e 128 em bytes.

2. Como voc representaria todos os meses do ano em bits?

3. Quantos bits so necessrios para representar 150 possibilidades diferentes?

4. H Como voc representaria as horas em bits?

5. H Como voc representaria o tabuleiro abaixo em binrio? Quantos bytes sua estratgia utiliza?
Introduo Computao 26 / 130

Feedback sobre o captulo


Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Acesse https://github.com/edusantana/introducao-a-computacao-livro/issues/new para reali-
zar seu feedback. Lembre-se de incluir na mensagem a seo, captulo (cap2) e a verso do
livro (v1.1.2) alvo de sua contribuio. Voc receber notificaes sobre os encaminhamen-
tos que sero dados a partir do seu feedback. Para compreender melhor como feedbacks
funcionam consulte o guia do curso.
Introduo Computao 27 / 130

Captulo 3

Sistemas de numerao

Sumrio
3.1 Noes de Sistema de Numerao . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.1 Sistema de numerao Egpcio (3000 a.C.) . . . . . . . . . . . . . . . . . 29
3.1.2 Sistema de numerao Babilnico (2000 a.C.) . . . . . . . . . . . . . . . . 29
3.1.3 Sistema de numerao Romano . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.4 Sistema de numerao Indo-Arbico . . . . . . . . . . . . . . . . . . . . . 31
3.2 Sistema de Numerao Posicional . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.1 Base de um Sistema de Numerao . . . . . . . . . . . . . . . . . . . . . 32
3.3 Converses entre bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.1 Converses entre as bases 2, 8 e 16 . . . . . . . . . . . . . . . . . . . . . 34
3.3.2 Converso de nmeros em uma base b qualquer para a base 10. . . . . . . 35
3.3.3 Converso de nmeros da base 10 para uma base b qualquer . . . . . . . . 36
3.4 Aritmtica Binria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4.1 Soma e Subtrao Binria . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.2 Multiplicao e diviso binria . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5 Nmeros Binrios Negativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.1 Sinal e Amplitude/Magnitude (S + M) . . . . . . . . . . . . . . . . . . . . 39
3.5.2 Complemento de 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.3 Complemento de 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.6 Circuitos nos computadores para realizar as operaes . . . . . . . . . . . . . 41
3.6.1 Circuito somador com complemento de 2 . . . . . . . . . . . . . . . . . . 41
3.6.2 Circuito subtrator com complemento de 2 . . . . . . . . . . . . . . . . . . 42
3.7 Representao de Nmero Fracionrio no Sistema Binrio . . . . . . . . . . . 42
3.7.1 Notao de Ponto Fixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.7.2 Soma e subtrao de nmeros fracionrios . . . . . . . . . . . . . . . . . . 42
3.8 Fundamentos da Notao de Ponto Flutuante . . . . . . . . . . . . . . . . . . . 43
3.8.1 Notao de Excesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.8.2 Notao de Ponto Flutuante . . . . . . . . . . . . . . . . . . . . . . . . . 44
Introduo Computao 28 / 130

3.8.2.1 Ponto Flutuante . . . . . . . . . . . . . . . . . . . . . . . . . . 44


3.8.3 Problema com Arredondamento . . . . . . . . . . . . . . . . . . . . . . . 46
3.8.3.1 Overflow e Underflow . . . . . . . . . . . . . . . . . . . . . . . 46
3.8.4 Adio e Subtrao em Ponto Flutuante . . . . . . . . . . . . . . . . . . . 46
3.9 Lgica Binria e Portas Lgicas . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.10 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.11 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:

Entender a origem dos sistemas de numerao na histria


Explicar o funcionamento do sistema de numerao binrio
Ser capaz de efetuar operaes da aritmtica e lgica binria
Compreender como a lgica binria permite criar operaes mais complexas no com-
putador

Um numeral um smbolo ou grupo de smbolos que representa um nmero em um determinado ins-


tante da histria humana. Tem-se que, numa determinada escrita ou poca, os numerais diferenciaram-
se dos nmeros do mesmo modo que as palavras se diferenciaram das coisas a que se referem. Os sm-
bolos "11", "onze"e "XI"(onze em latim) so numerais diferentes, representativos do mesmo nmero,
apenas escrito em idiomas e pocas diferentes. Este captulo debrua-se sobre os vrios aspectos dos
sistemas de numerais.
Entraremos em mais detalhes sobre o sistema de numerao binria devido a sua utilizao nos com-
putadores, permitindo assim, que o mesmo realize pequenas operaes aritmticas que serviro como
base para grandes operaes como busca, ordenao e indexao de informao entre outras opera-
es comuns do dia a dia.

3.1 Noes de Sistema de Numerao

H milhares de anos o modo de vida era muito diferente do atual. Os homens primitivos no tinham
necessidade de contar. Eles no compravam, no vendiam, portanto no usavam dinheiro.
Com o passar dos anos, os costumes foram mudando e o homem passou a cultivar a terra, a criar
animais, a construir casas e a comercializar. Com isso, surgiu a necessidade de contar.
A vida foi tornando-se cada vez mais complexa. Surgiram as primeiras aldeias que, lentamente,
foram crescendo, tornando-se cidades. Algumas cidades se desenvolveram, dando origem s grandes
civilizaes. Com o progresso e o alto grau de organizao das antigas civilizaes, a necessidade de
aprimorar os processos de contagem e seus registros tornou-se fundamental.
Foram criados, ento, smbolos e regras originando assim os diferentes sistemas de numerao.
Introduo Computao 29 / 130

3.1.1 Sistema de numerao Egpcio (3000 a.C.)

Um dos primeiros sistemas de numerao que temos conhecimento o egpcio, que foi desenvolvido
pelas civilizaes que viviam no vale do Rio Nilo, ao nordeste da frica.
Observem, na Figura 3.1 [29], os smbolos e a representao de alguns nmeros nesse sistema de
numerao.

Figura 3.1: Sistema de Numerao Egpcio

Este sistema adota o princpio aditivo, ou seja, os smbolos possuem seus respectivos valores indivi-
duais e juntos passam a formar novos valores pela simples adio destes.

3.1.2 Sistema de numerao Babilnico (2000 a.C.)

Os babilnios viviam na Mesopotmia, nos vales dos rios Tigres e Eufrates, na sia. Esta regio
ocupada atualmente pelo Iraque.
Na escrita dos nmeros, o sistema de numerao dos babilnios se parecia muito com o sistema
de numerao desenvolvido pelos egpcios, ambos eram aditivos. Observe, na Figura 3.2 [30], os
smbolos e a representao de alguns nmeros, de 7 a 59, nesse sistema de numerao.
Introduo Computao 30 / 130

Figura 3.2: Sistema de Numerao Babilnico

Nota
Agora com voc. Qual seria o valor que cada smbolo babilnico, seguindo os exemplos
da Figura 3.2 [30]?

=?

=?

3.1.3 Sistema de numerao Romano

O sistema de numerao romano, apesar das dificuldades operatrias que apresentava, foi utilizado na
Europa durante muitos sculos. Esse sistema de numerao foi desenvolvido pela civilizao romana,
cuja sede era a cidade de Roma, situada na Itlia.
Ainda hoje, utilizamos esse sistema de numerao em algumas situaes, tais como:

na designao de papas e reis;

na designao de sculos e datas;

na indicao de captulos e volumes de livros;

nos mostradores de alguns relgios, etc.

Com o passar dos anos, o sistema de numerao romano (Figura 3.3 [31]) sofreu um longo processo
de evoluo. Inicialmente, os romanos utilizavam apenas o principio aditivo, sendo que um mesmo
smbolo podia ser repetido at, no mximo, quatro vezes. Posteriormente, eles evoluram este sistema,
passando a utilizar tambm o princpio subtrativo, alm de permitir a repetio de um mesmo smbolo,
no mximo, trs vezes.
Introduo Computao 31 / 130

Numerao romana antiga Numerao romana moderna


Princpio aditivo Princpio subtrativo

IIII IV
1+1+1+1=4 5-1=4

VIIII IX
5+1+1+1+1=9 10 - 1 = 9

Princpio Princpio Princpio Princpio


aditivo subtrativo e aditivo subtrativo e
aditivo aditivo

Nossa Numerao Numerao Nossa Numerao Numerao


numerao roma roma numerao roma roma
antiga moderna antiga moderna
1 I I 16 XVI XVI
2 II II 17 XVII XVII
3 III III 18 XVIII XVIII
4 IIII IV 19 XVIIII XIX
5 V V 20 XX XX
6 VI VI 40 XXXX XL
7 VII VII 50 L L
8 VIII VIII 90 LXXXX XC
9 VIIII IX 100 C C
10 X X 400 CCCC CD
11 XI XI 500 D D
12 XII XII 1000 M M

Figura 3.3: Sistema de Numerao Romano

3.1.4 Sistema de numerao Indo-Arbico

Os hindus, que viviam no vale do Rio Indo, onde hoje o Paquisto, conseguiram desenvolver um
sistema de numerao que reunia as diferentes caractersticas dos antigos sistemas.
Tratava-se de um sistema posicional decimal. Posicional porque um mesmo smbolo representava
valores diferentes dependendo da posio ocupada, e decimal porque era utilizado um agrupamento
de dez smbolos.
Esse sistema posicional decimal, criado pelos hindus, corresponde ao nosso atual sistema de numera-
o, j estudado por voc nas sries do ensino fundamental. Por terem sido os rabes os responsveis
pela divulgao desse sistema. Ele ficou conhecido como sistema de numerao indo-arbico. Os dez
smbolos, utilizados para representar os nmeros, denominam-se algarismos indo-arbicos. So eles:

0 1 2 3 4 5 6 7 8 9
Introduo Computao 32 / 130

Dica
Veja, na Figura 3.4 [32]a , as principais mudanas ocorridas nos smbolos indo-arbicos, ao
longo do tempo.

Figura 3.4: Sistema de numerao Indo-Arbico

Observe que, inicialmente, os hindus no utilizavam o zero. A criao de um smbolo para o


nada, ou seja, o zero, foi uma das grandes invenes dos hindus.
a Fonte: http://www.programandoomundo.com/Sistema%20Indo-Arabico.htm.

3.2 Sistema de Numerao Posicional

O mtodo de numerao de quantidades ao qual estamos acostumados, utiliza um sistema de nume-


rao posicional. Isto significa que a posio ocupada por cada algarismo em um nmero altera seu
valor de uma potncia de 10 (na base 10) para cada casa esquerda.
Por exemplo:
No sistema decimal (base 10), no nmero 125 o algarismo 1 representa 100 (uma centena ou 102 ), o
2 representa 20 (duas dezenas ou 2 x 101 ), o 5 representa 5 mesmo (5 unidades ou 5x100 ).
Assim, em nossa notao:

125 = 1102 + 2101 + 5100

3.2.1 Base de um Sistema de Numerao

A base de um sistema a quantidade de algarismos disponveis na representao. A base 10 hoje a


mais usualmente empregada, embora no seja a nica utilizada. No comrcio pedimos uma dzia de
rosas (base 12) e marcamos o tempo em minutos e segundos (base 60).
Quando lidamos com computadores, muito comum e conveniente o uso de outras bases, as mais
importantes so a binria (base 2), octal (base 8) e hexadecimal (base 16).
Introduo Computao 33 / 130

Um sistema numrico de base k precisa de k smbolos diferentes para representar seus dgitos de 0 a
k-1. Os nmeros decimais so formados a partir de 10 dgitos decimais:

0 1 2 3 4 5 6 7 8 9

J os nmeros na base binria so representados a partir de dois dgitos:

0 1

O octal necessita de oito:

0 1 2 3 4 5 6 7

No caso de nmeros hexadecimais, so necessrios 16 algarismos. Portanto, sero mais 6 smbolos


alm dos dez algarismos arbicos. Em geral, usam-se as letras maisculas de A a F:

0 1 2 3 4 5 6 7 8 9 A B C D E F

A representao 31810 (base 10), significa:

31810 = 3102 + 1101 + 8100

Generalizando, representamos uma quantidade N qualquer, numa dada base b, com um nmero tal
como segue:

Nb = a0 bn + a1 bn-1 + . . . + an b0

Abaixo, o nmero 35 ser expresso nas bases elencadas acima:

Decimal
35 = 3101 + 5100 = 30 + 5 = 3510

Binrio
35 = 125 + 024 + 023 + 022 + 121 + 120 = 32 + 0 + 0 + 0 + 2 + 1 = 1000112

Octal
35 = 481 + 380 = 32 + 3 = 438

Hexadecimal
35 = 2161 + 3160 = 32 + 3 = 2316

Nota
Usualmente bytes so representados utilizando o sistema hexadecimal, pois eles so mais
fceis de manipular por programadores. Por exemplo, a sequncia de bits 0010 0011 que
corresponde ao nmero 3510 , expressa por 0x23 em hexadecimal.
Nas linguagens de programao os nmeros hexadecimais costumam ser representados
com o prefixo 0x e os octais com o prefixo 0.
Portando 23 representa o nmero 23, enquanto 0x23 um valor hexadecimal que corres-
ponde ao decimal 35 e 023 um valor octal que corresponde ao decimal 19.
Introduo Computao 34 / 130

3.3 Converses entre bases

Nesta seo iremos analisar as regras gerais para converter nmeros entre duas bases quaisquer.

3.3.1 Converses entre as bases 2, 8 e 16

As converses mais simples so as que envolvem bases que so potncias entre si. Vamos exemplificar
com a converso entre a base 2 e a base 8. Como 23 = 8, ento a converso funciona da seguinte forma:
separando os algarismos de um nmero binrio (base 2) em grupos de trs algarismos (comeando
sempre da direita para a esquerda) e convertendo cada grupo de trs algarismos para seu equivalente
em octal, teremos a representao do nmero em octal.
Por exemplo:

101010012 = 010 . 101 . 0012

Olhando a tabela de converso direta temos:

Tabela 3.1: Converso direta de binrio para octal e vice-


versa

Binrio Octal
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

Logo:

0102 = 28 1012 = 58 0012 = 18 101010012 = 2518

Vamos agora exemplificar com uma converso entre as bases 2 e 16. Como 24 = 16, seguindo o
processo anterior, basta separarmos em grupos de quatro algarismos e converter cada grupo seguindo
a Tabela 3.2 [35].
Por exemplo:

110101011012 = 0110 . 1010 . 11012

Olhando a tabela de converso direta temos:


Introduo Computao 35 / 130

Tabela 3.2: Converso direta de binrio para hexadecimal e


vice-versa.

Binrio Hexadecimal Binrio Hexadecimal


0000 0 1000 8
0001 1 1001 9
0010 2 1010 A
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 7 1111 F

Logo:

01102 = 616 10102 = A16 11012 = D16 110101011012 = 6AD16

Vamos agora analisar a converso inversa.


Por exemplo:

A8116 = A . 8 . 116

Sabemos que:

A16 = 10102 816 = 10002 116 = 00012

Portanto:
A8116 = 1010100000012

3.3.2 Converso de nmeros em uma base b qualquer para a base 10.

Vamos lembrar a expresso geral j apresentada:


Nb = a0 bn + a1 bn-1 + . . . + an b0
A melhor forma de fazer a converso usando essa expresso. Como exemplo, o nmero 1011012
ter calculado seu valor na base 10:
1011012 = 125 + 024 + 123 + 122 + 021 + 120 = 4510
Outros exemplos:
Converter A516 para a base 10:
A516 = 10161 + 5160 = 160 + 5 = 16510
Converter 4859 para a base 10:
4859 = 492 +891 + 590 = 324 + 72 + 5 = 40110
Introduo Computao 36 / 130

3.3.3 Converso de nmeros da base 10 para uma base b qualquer

A converso de nmeros da base 10 para uma base qualquer, emprega algoritmos que sero o inverso
dos anteriores. O nmero decimal ser dividido sucessivas vezes pela base, o resto de cada diviso
ocupar sucessivamente as posies de ordem 0, 1, 2 e assim por diante, at que o resto da ltima
diviso (que resulta em quociente 0) ocupe a posio de mais alta ordem.

Converso do nmero 1910 para a base 2:

Logo temos:

1910 = 100112

Usando a converso anterior como prova real, temos:

100112 = 124 + 023 + 022 + 121 + 120 = 1910

Converso do nmero 27810 para a base 16:

Logo temos:

27810 = 11616

3.4 Aritmtica Binria

Como o computador manipula os dados (nmeros) atravs de uma representao binria, iremos es-
tudar agora a aritmtica do sistema binrio, a mesma usada pela ULA (Unidade Lgica e Aritmtica)
dos processadores.
Introduo Computao 37 / 130

3.4.1 Soma e Subtrao Binria

A tabuada da soma aritmtica binria:


0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 (e vai um para o dgito de ordem superior)
1 + 1 + 1 = 1 (e vai um para o dgito de ordem superior)

Por exemplo:

Efetuar 0111002 + 0110102

Nota
Soma-se as posies da direita para esquerda, tal como uma soma decimal.

Soluo:

01 1 1 1 1 0 0 <-- vai um
+ 0 1 1 0 1 0
1 1 0 1 1 0

A tabuada da subtrao aritmtica binria:


0 - 0 = 0
0 - 1 = 1 (vem um do prximo)
1 - 0 = 1
1 - 1 = 0

Nota
Como impossvel tirar 1 de 0, o artifcio pedir emprestado 1 da casa de ordem superior,
ou seja, na realidade o que se faz subtrair 12 de 102 e encontramos 12 como resultado,
devendo ento subtrair 1 do dgito de ordem superior. Este algoritmo exatamente o mesmo
da subtrao em decimal.

Por exemplo: 111002 010102 = ?


Soluo:

1 1 0 12 0 0
- 0 1 0 1 0
1 0 0 1 0
Introduo Computao 38 / 130

Nota
No esquea, subtrai-se as colunas da direita para a esquerda, tal como uma subtrao
decimal.

Voc pode assistir uma aula sobre soma e subtrao binria no vdeo a seguir.

Figura 3.5: Vdeo sobre Soma e Subtrao Binria: http://youtu.be/NeQBC9Z5FHk

3.4.2 Multiplicao e diviso binria

Vamos ver agora a tabuada da multiplicao:


0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1

Nota
O processo de multiplicao binrio idntico ao decimal.

Exemplo:
Efetuar: 1012 x 1102
Soluo:

1 0 12 --> 510
x 1 1 02 --> 610
0 0 0
1 0 1
1 0 1
1 1 1 1 02 --> 3010
Introduo Computao 39 / 130

No entanto, a multiplicao em computadores feita, tambm, por um artifcio: para multiplicar A


por n somamos A com A (n-1) vezes.
Exemplo:

4 x 3 = 4 + 4 + 4 = 12

E a diviso tambm pode ser feita por subtraes sucessivas, at o resultado zerar ou ficar negativo.
Este artifcio serve apenas para divises inteiras.
Por exemplo:

16 4 16 - 4 = 12 12 - 4 = 8 8 - 4 = 4 4 4 = 0

O nmero de subtraes indica o resultado da diviso inteira, neste caso, igual a 4.

Nota
Podemos concluir que qualquer operao aritmtica pode ser realizada em computadores
atravs de somas (diretas ou em complemento). Com isso diminui-se o nmero de circuitos
lgicos de operaes para o processador.

3.5 Nmeros Binrios Negativos

Os computadores lidam com nmeros positivos e nmeros negativos, sendo necessrio encontrar uma
representao para nmeros com sinal negativo. Existe uma grande variedade de opes, das quais
nesta seo sero apresentadas apenas trs para representar valores negativos:

Sinal e amplitude/magnitude (S+M)

Complemento de 1

Complemento de 2

A representao de Complemento de 2 a mais utilizada, mas para compreend-la necessrio


primeiro conhecer as anteriores, que so mais simples.

3.5.1 Sinal e Amplitude/Magnitude (S + M)

Como o prprio nome indica, a representao sinal e amplitude dividida em duas partes. Utiliza
um bit para representar o sinal, o bit mais esquerda: 0 para indicar um valor positivo, 1 para indicar
um valor negativo. J o resto dos bits representam seu valor absoluto.

+1010 = 010102 -1010 = 110102


Introduo Computao 40 / 130

3.5.2 Complemento de 1

Na representao em complemento de 1 invertem-se todos os bits de um nmero para representar o


seu complementar: assim, se converte um valor positivo para um negativo, e vice-versa. Quando o bit
mais esquerda 0, esse valor positivo; se for 1, ento negativo.
Exemplo:

011001002 = 10010

Invertendo todos os bits:

100110112 = 10010

Importante
O problema desta representao que existem 2 padres de bits para o 0, havendo assim
desperdcio de representao:

010 = 000000002 = 111111112

3.5.3 Complemento de 2

Na representao do complemento de 2 no h desperdio. Para determinar o negativo de um nmero,


inverte-se todos os seus bits e soma-se uma unidade.
Exemplo:

Representao binria
10110 = 011001012 (com 8 bits)
Invertendo todos os bits
100110102
Somando uma unidade
100110112 = 100110102 + 1 = 10110

Importante
A representao em complemento para 2 tem as seguintes caractersticas:

o bit da esquerda indica o sinal;

possui processo para converter um nmero de positivo para negativo e de negativo para
positivo;

o 0 tem uma representao nica: todos os bits iguais a 0;

a gama de valores que possvel representar com n bits -2n-1 . . . 2n-1 -1.

Exemplo:
Qual o nmero representado por 111001002 (com 8 bits)? Como o bit da esquerda 1 este nmero
negativo. Invertendo todos os bits:
Introduo Computao 41 / 130

000110112

Somando uma unidade:

000110112 + 1 = 000111002 = 2810

Logo:

111001002 = 2810

3.6 Circuitos nos computadores para realizar as operaes

Na eletrnica digital de dispositivos tais como computadores, circuitos simples custam menos e ope-
ram mais rpido do que circuitos mais complexos. Logo, nmeros em complemento de dois so
usados na aritmtica, pois eles permitem o uso dos circuitos mais simples, baratos e rpidos.

3.6.1 Circuito somador com complemento de 2

Uma caracterstica do sistema de complemento de dois que tanto os nmeros com sinal quanto os
nmeros sem sinal podem ser somados pelo mesmo circuito. Por exemplo, suponha que voc deseja
somar os nmeros sem sinal 13210 e 1410 .

O microprocessador tem um circuito na ULA (Unidade Lgica e Aritmtica) que pode somar nme-
ros binrios sem sinal, quando aparece o padro 100001002 em uma entrada e 000011102 na outra
entrada, resulta 100100102 na sada.
Surge a pergunta: como a ULA sabe que os padres de bits nas entradas representam nmero sem
sinal e no nmeros em complemento de dois? E a resposta : no sabe. A ULA sempre soma como
se as entradas fossem nmeros binrios sem sinal. Sempre produzir o resultado correto, mesmo se
as entradas forem nmeros em complemento de dois.

Isto comprova um ponto muito importante. O somador na ULA sempre soma padres de bits como
se eles fossem nmeros binrios sem sinal. a nossa interpretao destes padres que decide se
nmeros com ou sem sinal esto sendo tratados. O bom do complemento de dois que os padres
de bits podem ser interpretados de qualquer maneira. Isto nos permite trabalhar com nmeros com e
sem sinal sem requerer diferentes circuitos para cada padro.
Introduo Computao 42 / 130

3.6.2 Circuito subtrator com complemento de 2

A aritmtica de complemento de dois tambm simplifica a ULA em outro ponto. Todo microproces-
sador precisa da instruo de subtrao. Assim, a ULA deve ser capacitada a subtrair um nmero
de outro. Entretanto, se isto necessitar de um circuito de subtrao separado, a complexidade e o
custo da ULA seriam aumentados. Felizmente, a aritmtica de complemento de dois permite a ULA,
realizar operaes de subtrao usando um circuito somador. Ou seja, a CPU usa o mesmo circuito
tanto para soma como para subtrao.
Uma vez que o complemento de dois foi formado, a CPU pode realizar uma subtrao indiretamente
pela adio do complemento de dois do Subtraendo com Minuendo. No esquecendo de ignorar o
ltimo transporte da adio.
Como exemplo temos a subtrao de 6910 (Minuendo) por 2610 (Subtraendo).
Jogue fora o transporte final:
Minuendo 0 1 0 0 0 1 0 1 69
Complemento de dois do Subtraendo 1 1 1 0 0 1 1 0 74 Complemento de dez
Diferena 0 0 1 0 1 0 1 1 43

Nota
Fica o desafio de descobrir porque o valor 7410 o complemento de 10 do nmero 2610 , a
regra anloga do complemento de 2 binria, ou seja, primeiro deve ser feito o complemento
de 9 para cada nmero individualmente e depois deve ser somado o valor 1.

3.7 Representao de Nmero Fracionrio no Sistema Binrio

3.7.1 Notao de Ponto Fixo

Esta notao conhecida como Notao de Ponto Fixo, utiliza um ponto que funciona da mesma forma
que o ponto da notao decimal. Em outras palavras, os dgitos esquerda do ponto representam a
parte inteira do valor, funcionando da mesma forma que a notao binria. E os dgitos direita do
ponto representam a parte no inteira, sendo o expoente da base 2 decrementada em 1 a cada casa
afastada do ponto.
Exemplo:
1 0 -1 -2 -3
10.101 = 12 + 02 (parte inteira) + 12 + 02 + 12 (parte fracionria)

2 + 0 + 0,5 + 0 + 0,125 = 2,62510

Figura 3.6: Representao de ponto fixo

3.7.2 Soma e subtrao de nmeros fracionrios

Para somarmos e subtrairmos duas representaes binrias contendo ponto, basta alinharmos os pon-
tos e aplicarmos o mesmo algoritmo de adio ou subtrao binria demonstrada anteriormente.
Exemplos:
Introduo Computao 43 / 130

3.8 Fundamentos da Notao de Ponto Flutuante

A utilizao da notao de ponto flutuante muito grande em computadores, tanto para clculos
matemticos com preciso, renderizao de imagens digitais (criao de imagens pelo computador)
entre outros. Os processadores atuais se dedicam muito em aperfeioar a tcnica de seus chips para
a aritmtica de ponto flutuante, devido demanda de aplicativos grficos e jogos 3D que se utilizam
muito deste recurso.
Nesta subseo iremos descrever os fundamentos da aritmtica de ponto flutuante, para isso, sero
apresentados alguns conceitos bsicos, que juntamente com os conceitos da seo anterior, serviro
para o entendimento do processo desta aritmtica em um sistema computacional.

3.8.1 Notao de Excesso

Para trabalhar com a Notao Ponto Flutuante, precisamos entender a representao dos nmeros
inteiros (negativos e no negativos) utilizando a Notao de Excesso.
Neste sistema, cada nmero codificado como um padro de bits, de comprimento convencionado.
Para estabelecer um sistema de excesso, primeiro escolhemos o comprimento do padro a ser empre-
gado, em seguida, escrevemos todos os diferentes padres de bits com este comprimento, na ordem
em que eles seriam gerados se estivssemos contando em binrio.
Logo, observamos que o primeiro desses padres, que representa um dgito 1 como seu bit mais
significativo, figura aproximadamente no centro da lista.

Tabela 3.3: Notao de excesso com 3 bits.

Valor Binrio (Notao de Excesso) Valor Representado


000 -4
001 -3
010 -2
011 -1
100 (centro) 0
101 1
110 2
111 3

Como podemos observar na Tabela 3.3 [43], escolhemos este padro para representar o ZERO, os
padres que o seguem sero utilizados para representar 1, 2, 3. . . , os padres que o precedem sero
adotados para a representao dos inteiros negativos -1, -2, -3. . .
Logo na Tabela 3.3 [43] podemos observar o cdigo resultante para padres de trs bits de compri-
mento.
Introduo Computao 44 / 130

Exemplo:

O valor 1 equivale a 1012 O valor -1 equivale a 0112

Nota
No sistema de Notao de Excesso fcil distinguir entre padres que representam valo-
res negativos e positivos, pois aqueles que apresentam um 0 no bit mais significativo so
nmeros negativos, servindo o mesmo como bit de sinal.

3.8.2 Notao de Ponto Flutuante

O primeiro ponto a ser discutido, o motivo da criao da Notao de Ponto Flutuante, j que na seo
anterior j tnhamos trabalhado com a representao de nmeros no inteiros utilizando a Notao de
Ponto Fixo.
O problema do Ponto Fixo, que o tamanho da parte inteira e da fracionria fica fixo com relao
a seu armazenamento em memria, logo para nmeros com a parte apenas inteira, a regio alocada
para tratar a parte fracionria ser inutilizada e vice-versa. Logo, para evitar este desperdcio criou-se
a Notao de Ponto Flutuante.

3.8.2.1 Ponto Flutuante

Vamos explicar a notao de ponto flutuante por meio de um exemplo que emprega somente um byte
de memria.
Primeiramente, escolhemos o bit mais significativo do byte para ser o bit de sinal do nmero. Um 0
neste bit significa que o valor representado no negativo, enquanto o 1 indica que negativo.
Em seguida dividimos os sete bits restantes em dois grupos, o campo de expoente e o campo da
mantissa, como mostrado na Figura 3.7 [44].

Figura 3.7: Diviso de 1 byte nos campos da Notao de Ponto Flutuante

Seja um byte contendo o padro de bits 01101011. Interpretando este padro no formato que acaba-
mos de definir, constatamos que o bit de sinal 0, o expoente 110, e a mantissa 1011.
Para decodificarmos o byte, extramos primeiro a mantissa e colocamos o ponto binrio sua es-
querda, obtendo:

.1011
Introduo Computao 45 / 130

Em seguida, extramos o contedo do campo do expoente e o interpretamos como um inteiro codi-


ficado em trs bits pelo mtodo de representao de excesso, nos dando o nmero positivo 2 (vide
Tabela 3.3 [43]). Isto indica que devemos deslocar o ponto binrio dois bits direita (um expoente
negativo codifica um deslocamento para a esquerda do ponto binrio com a adio do valor 0).
Como resultado temos:

10.11

Que representa na Notao de Ponto Fixo:

= 121 + 020 + 12-1 + 12-2 = 2+0+0,5+0,25 = 2,75

Em seguida, notamos que o bit de sinal do nosso exemplo 0, assim, o valor representado positivo
(+2,75).
No vdeo a seguir, possvel assistir uma aula sobre a Notao de Ponto Flutuante.

Figura 3.8: Vdeo sobre o Notao de Ponto Flutuante: http://youtu.be/psyH7eBVLr4

Nota
O uso da notao de excesso para representar o expoente no sistema de Ponto Flutuante se
d pela comparao relativa das amplitudes de dois valores, consistindo apenas em empare-
lhar as suas representaes da esquerda para a direita em busca do primeiro bit em que os
dois diferem. Assim, se ambos os bits de sinal forem iguais a 0, o maior dos dois valores
aquele que apresentar, da esquerda para a direita, um 1 no bit em que os padres diferem,
logo ao comparar:

Conclui-se que o primeiro padro maior que o segundo, sem haver a necessidade de decodificar as
representaes em Ponto Flutuante, tarefa que seria mais custosa.
Quando os bits de sinal forem iguais a 1, o maior nmero aquele que apresentar o 0 na diferena
dos padres (sempre percorrendo o nmero da esquerda para a direita).
Introduo Computao 46 / 130

3.8.3 Problema com Arredondamento

Consideremos o incmodo problema de representar o nmero 2,625 no sistema de ponto flutuante de


um byte. Primeiramente, escrevemos 2,625 em binrio, obtendo 10.101. Entretanto, ao copiarmos
este cdigo no campo da mantissa, no haver espao suficiente, e o ltimo 1 (o qual representa a
ltima parcela: 0,125) se perde, como pode ser observado na figura abaixo:

2,62510 10.1012
Expoente 110
Mantissa 10101

Logo temos:

Ao ignorarmos este problema, e continuarmos a preencher o campo do expoente e do bit do sinal,


teremos o padro de bits 01101010, que representa o valor 2,5 e no 2,625: o fenmeno assim ob-
servado denominado erro de arredondamento, devido o campo da mantissa ter apenas quatro bits,
enquanto, por questo de preciso, seriam necessrios no mnimo cinco bits.

3.8.3.1 Overflow e Underflow

Os projetistas do hardware devem encontrar um compromisso entre a mantissa e o expoente dos


nmeros em ponto flutuante. A relao entre mantissa e expoente expressa do seguinte modo: o
aumento do nmero de bits reservados mantissa aumenta a preciso do nmero, enquanto o aumento
do nmero de bits reservados ao expoente aumenta o intervalo de variao dos nmeros representados.
Quando o expoente muito grande ou muito pequeno para ser armazenado no espao reservado para
ele, ocorrem os fenmenos chamados de overflow e underflow respectivamente. Outro fenmeno o
prprio overflow da mantissa como mostrado acima.

3.8.4 Adio e Subtrao em Ponto Flutuante

A adio e a subtrao de ponto flutuante tratam os expoentes junto com o valor dos operandos,
logo h a necessidade de equalizar os expoentes e efetuar a operao sobre a mantissa equalizada e o
resultado deve ser normalizado para a representao utilizada:
Vamos analisar a seguinte adio em Ponto Flutuante:

01101010 + 01011100 = ?
Introduo Computao 47 / 130

Processo:
Mantissa 1 = 1010 Expoente = 110 (2 na Notao de Excesso)
Mantissa 2 = 1100 Expoente = 101 (1 na Notao de Excesso)

Equalizando os expoentes, temos:

Normalizando:
Resultado = 1000
Expoente = 110 (2 na Notao de Excesso)

Representao do resultado (01101010 + 01011100) em Ponto Flutuante = 01101000

3.9 Lgica Binria e Portas Lgicas

O Apndice A [112] contm a apresentao da Lgica Binria e a notao de Portas Lgicas (uti-
lizadas nas confeces de circuitos). L voc poder verificar como um circuito para somar 2 bits,
utilizado nos computadores, pode ser implementado atravs de portas lgicas.

3.10 Recapitulando

Neste captulo estudamos a origem dos sistemas de numerao. Aprendemos a trabalhar com os
sistemas de numerao mais utilizados na computao. Aprendemos mais profundamente o funcio-
namento do sistema binrio, sua aritmtica, representao de nmeros negativos e a representao de
nmeros fracionrios.

3.11 Atividades

1. Efetue as converses de base 2 para base 10:

a. 1012
b. 100012
c. 1110102
d. 1010112
Introduo Computao 48 / 130

e. 1010102
f. 10101112
g. 1111110001112
h. 1101012
i. 10012

Resoluo
As resolues dos exerccios b e d podem ser vistas no seguinte vdeo:

Figura 3.9: Converso de Decimal para Binrio: http://youtu.be/pNSkIP3C9mA

2. Efetue as converses de base 10 para base 2:

a. 1310
b. 4510
c. 18910
d. 58810
e. 102410
f. 308910
g. 403410
h. 5810
i. 11310

Resoluo
As resolues dos exerccios a e e podem ser vistas no seguinte vdeo:
http://www.youtube.com/watch?v=JS8yeKtCFqQ
As resolues dos exerccios h e i podem ser vistas no seguinte vdeo:

Figura 3.10: Converso de Decimal para Binrio: http://youtu.be/pNSkIP3C9mA


Introduo Computao 49 / 130

3. Efetue as seguintes converses:

a. Converta para octal 1101110111012 e 11111112


b. Converta para hexadecimal 1011001011002
c. Converta para binrio FF1F16 e ABC16

4. Efetue as seguintes converses:

a. Converta para decimal 1101.012 e 10.012 (Ponto Fixo)


b. Converta para octal 1101110111012 e 11111112
c. Converta para hexadecimal 1011001011002
d. Converta para binrio 0xFF1F (Hexadecimal1 )

5. Converta o nmero 5 para uma representao binria usando 4-bits, com as seguintes repre-
sentaes:

a. Sinal e amplitude
b. Complemento para 1
c. Complemento para 2
d. Notao de Excesso

6. Converta o nmero 33 para uma representao binria usando 6-bits, com as seguintes repre-
sentaes:

a. Sinal e amplitude
b. Complemento para 1
c. Complemento para 2

7. Converta para decimal o valor em binrio (usando apenas 5-bits) 101012 , considerando as se-
guintes representaes:

a. Inteiro sem sinal


b. Sinal e amplitude
c. Complemento de 2

8. Efetue os seguintes clculos usando aritmtica binria de 8-bits em complemento de 2, ou seja,


primeiro converta o valor para binrio e depois efetue a operao aritmtica.

a. 410 + 12010
b. 7010 + 8010
c. 10010 + (6010 )
d. 10010 2710
1 Em programao costumamos representar nmeros hexadecimais iniciando-os com "0x", portanto 0xFF1F equivale
a FF1F16 .
Introduo Computao 50 / 130

9. A maioria das pessoas apenas consegue contar at 10 com os seus dedos; contudo, os enge-
nheiros informticos podem fazer melhor! Como? Cada dedo conta como um bit, valendo 1 se
esticado, e 0 se dobrado.

a. Com este mtodo, at quanto possvel contar usando ambas as mos?


b. Considere que um dos dedos na extremidade da mo o bit do sinal numa representao
em complemento para 2. Qual a gama de valores que possvel representar com ambas
as mos?

10. Efetue as operaes Aritmticas no sistema binrio:

a. 1001010102 + 1010101112
b. 1010101102 0101101112
c. 1000000002 0000100112
d. 1111111112 + 1010101012

11. Converta para a representao em Ponto Flutuante, com 12 bits (1: sinal; 4: expoente; 8:
mantissa), os seguintes valores, dados em base 10 (apresente todos os clculos):

a. +12
b. 10.75
c. 8.25

Feedback sobre o captulo


Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Acesse https://github.com/edusantana/introducao-a-computacao-livro/issues/new para reali-
zar seu feedback. Lembre-se de incluir na mensagem a seo, captulo (cap3) e a verso do
livro (v1.1.2) alvo de sua contribuio. Voc receber notificaes sobre os encaminhamen-
tos que sero dados a partir do seu feedback. Para compreender melhor como feedbacks
funcionam consulte o guia do curso.
Introduo Computao 51 / 130

Captulo 4

Organizao e Funcionamento do Computa-


dor

Sumrio
4.1 Arquitetura de um Computador . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.1.1 Memria Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.1.1.1 Endereos vs Dados . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.2 Unidade Central de Processamento (UCP) . . . . . . . . . . . . . . . . . . 54
4.1.3 Unidades de Entrada/Sada . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.1.3.1 Tipos de dispositivos de Entrada/Sada . . . . . . . . . . . . . . 55
4.1.3.2 Funcionamento dos dispositivos de Entrada e Sada . . . . . . . 55
4.1.4 O Modelo de Barramento . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2 Programando um computador . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2.1 Linguagem de Mquina . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2.1.1 Arquiteturas RISC e CISC . . . . . . . . . . . . . . . . . . . . . 57
4.2.1.2 Tipos de instrues . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2.1.3 Codificao de instrues . . . . . . . . . . . . . . . . . . . . . 58
4.2.2 Executando Programas em Linguagem de Mquina . . . . . . . . . . . . . 58
4.3 Animao demonstrando o funcionamento da arquitetura . . . . . . . . . . . . 59
4.4 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.5 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:

Descrever a arquitetura geral de um computador


Descrever seus componentes bsicos e suas funes, como por exemplo a UCP, a me-
mria principal, e os dispositivos de E/S
Descrever o ciclo de mquina responsvel pela execuo de programas de computador
Introduo Computao 52 / 130

Um sistema de computador integrado pelo seu hardware e seu software. O hardware o equipa-
mento propriamente dito, e seus elementos bsicos so: unidade central de processamento, memria
principal e seus dispositivos de entrada e sada.
O software constitudo pelos programas que lhe permitem atender s necessidades dos usurios.
Ele abriga programas fornecidos pelos fabricantes do computador e programas desenvolvidos pelo
usurio.
Neste captulo, iremos identificar como estes dois elementos unidos permitem que atividades pr-
programadas, atravs de uma linguagem, sejam executas de forma automtica pelo computador.

4.1 Arquitetura de um Computador

Os circuitos de um computador que executam operaes sobre dados, tais como adio e subtra-
o, so isolados em uma regio chamada Unidade Central de Processamento UCP (CPU Central
Processing Unit), ou processador.
Os dados que esto armazenados na memria principal do computador so transferidos atravs de
barramentos que interligam estes componentes.
A comunicao com o mundo externo, os usurios, se d pelos dispositivos de Entrada e Sada (E/S).
A comunicao entre o computador e estes dispositivos se d atravs dos controladores de cada dis-
positivo de E/S. Em computadores comuns, estes controladores correspondem a placas de circuito
encaixadas na placa principal do computador (placa me). Est ilustrada na Figura 4.1 [52], a arqui-
tetura bsica de um computador, demonstrando a organizao de seus componentes bsicos.

Figura 4.1: Arquitetura geral de um computador

Nas sees a seguir so apresentas descries sobre cada unidade desta Arquitetura, descrevendo seus
componentes e funes bsicas.

4.1.1 Memria Principal

A memria do computador consiste numa coleo de registradores numerados consecutivamente (en-


dereados), onde cada um possui um tamanho denominado de tamanho da palavra, que pode variar
Introduo Computao 53 / 130

em 16, 32, 64 e 128 bits, com a palavra de 32 bits sendo a mais comum hoje em dia, e a palavra de
64 bits aumentando de popularidade.
Cada registrador tem um endereo, chamado de localizao na memria, estas so organizadas line-
armente em ordem consecutiva. O nmero nico que identifica cada palavra chamado de endereo.
A memria possui um espao de endereamento representado pelo tamanho em bits do seu endereo,
logo, um espao de endereamento de 32 bits pode acessar qualquer palavra de memria em qualquer
lugar no intervalo de 0 a 232 -1.
O espao de endereamento pode ser dividido em regies distintas usadas pelo sistema operacional,
dispositivos de E/S (Entrada e Sada), programas de usurio e pilha de execuo do sistema operaci-
onal.

Figura 4.2: Mapa de Memria do Computador

As regies ilustradas na Figura 4.2 [53] compem um possvel mapa de memria. Os endereos
disponveis so dividos da seguinte forma:

Reservados para o sistema operacional


Os endereos acima de 2048 (0-2048) so reservados para uso do sistema operacional.

Reservados para os dispositivos de E/S


A poro do espao de endereamento entre 231 e 232 1 est reservada para dispositivos de
E/S.

Disponvel para o usurio


Corresponde ao restante do espao, onde os programas do usurio sero carregados.

4.1.1.1 Endereos vs Dados

importante manter clara a distino entre o que endereo e o que dado. Uma palavra na
memria, pode ter distintas representaes dependendo do seu uso. Ela pode armazenar uma instruo
contendo a operao e os operandos (dados de entrada) para a realizao de uma especfica operao,
mas tambm pode armazenar o endereo de uma outra regio de memria. Logo, o endereo um
apontador para uma posio de memria que contm dados, e estes so informaes significativas
para a realizao de alguma atividade no computador, ou a representao de alguma informao.
Introduo Computao 54 / 130

4.1.2 Unidade Central de Processamento (UCP)

A Unidade Central de Processamento, ilustrada na Figura 4.3 [54], composta por duas partes prin-
cipais: a unidade lgica e aritmtica (ULA), formada por circuitos que manipulam os dados atravs
de operaes binrias (dois operandos) e unrias (um operando). Exemplos incluem a soma e opera-
dores lgicos: and, or e not. E a unidade de controle, cujos circuitos so responsveis por coordenar
as operaes da UCP.

Figura 4.3: Componentes lgicos da UCP

Para o armazenamento e a comunicao entre estas duas unidades a UCP contm circuitos de armaze-
namento chamados de registradores, que se assemelham s clulas de armazenamento da memria
principal.
Alguns registradores funcionam como posies intermedirias de armazenamento para os dados ma-
nipulados pela UCP. Nestes registradores so armazenados os dados de entrada para a ULA e ainda
proporcionam um local de armazenamento para o resultado das operaes.
Os dados a serem manipulados pela ULA tem origem na memria principal, sendo de responsabi-
lidade da unidade de controle transferir estes dados aos registradores, informar ULA sobre quais
registradores esto os dados de entrada, ativar o circuito da operao apropriada e informar em que
registrador deve guardar o resultado da operao.
A transferncia desta informao oriunda da memria principal se d atravs do barramento que
responsvel por transmitir padres de bits entre a UCP, os dispositivos de E/S e a memria principal.

Nota
Executar uma simples operao de soma mais complexo que apenas somar estes nme-
ros. Coordenado pela unidade de controle, os registradores intermedeiam a comunicao da
memria principal e a ULA.

PASSOS PARA A OPERAO DE SOMA

1. Obter da memria um dos valores da soma e guardar em um registrador;

2. Obter da memria o outro nmero a ser somado e armazen-lo em outro registrador;


Introduo Computao 55 / 130

3. Acionar o circuito de adio tendo os registradores do passo 1 e 2 como entrada, e escolher


outro registrador para armazenar o resultado;

4. Armazenar o resultado na memria principal;

5. Finalizar operao.

4.1.3 Unidades de Entrada/Sada

Entrada/Sada (E/S) compreende todas as maneiras como o computador se comunica com os usurios
e outras mquinas ou dispositivos. Os dispositivos de entrada aceitam dados e instrues do usurio,
os dispositivos de sada retornam os dados processados.

4.1.3.1 Tipos de dispositivos de Entrada/Sada

Os dispositivos de entrada/sada so classificados da seguinte forma:

Dispositivos de entrada
So os dispositivos que possuem a funo bsica de enviar dados. Os dispositivos de entrada
mais conhecidos so teclado, mouse, scanner e microfone.

Dispositivos de sada
So os dispositivos que possuem a funo bsica de receber ou apresentar dados. Os dispositi-
vos de sada mais comuns so a tela de vdeo (monitor), a impressora e o auto-falante.

Dispositivos de entrada e sada


So os dispositivos que possuem a funo de enviar, receber ou apresentar dados. Exemplos
de dispositivos de entrada e sada so: discos rgidos, pen-drives, placas de redes e telas touch-
screen.

Um dispositivo especial de E/S de um computador o disco rgido (HD), nele so armazenados todos
os dados que devem persistir num sistema computacional, mesmo na ausncia de energia. Todos os
programas que no esto em execuo se encontram no disco, seu nico problema o tempo excessivo
para a recuperao e escrita de uma informao, havendo assim a necessidade de se trabalhar com a
memria voltil (memria principal), mais rpida, porm mais cara.

4.1.3.2 Funcionamento dos dispositivos de Entrada e Sada

Os dispositivos de E/S trabalham com a memria do computador do seguinte modo: os dados capta-
dos pelos dispositivos de entrada so representados em pulsos eltricos e transmitidos ao computador.
Estes pulsos so convertidos em dados binrios e armazenados na memria do computador. No cami-
nho inverso, a informao binria transformada em pulso eltrico e encaminhada para o dispositivo
de sada especialista para trat-lo e gerar uma sada ao usurio.
Introduo Computao 56 / 130

4.1.4 O Modelo de Barramento

O objetivo do barramento reduzir o nmero de interconexes entre a UCP e seus subsistemas. Em


lugar de mantermos um caminho de comunicao entre a memria e cada um dos dispositivos de
entrada e sada, a UCP interconectada com os mesmos via barramento de sistema compartilhado.

Figura 4.4: Modelo de Barramento do Computador

Os componentes so interconectados ao barramento da forma ilustrada na Figura 4.4 [56]. A UCP


gera endereos que so colocados no barramento de endereos,1 e a memria recebe endereos do
mesmo.
Durante a execuo de um programa, cada instruo levada at ULA (Unidade Lgica e Aritm-
tica) a partir da memria, uma instruo de cada vez, junto com qualquer dado que seja necessrio
para execut-la. A sada do programa colocada em um dispositivo, tal como display de vdeo ou
disco. A comunicao entre os trs componentes (UCP, memria e E/S) feita sempre pelos barra-
mentos.

4.2 Programando um computador

A grande evoluo na arquitetura dos computadores foi a flexibilidade da unidade de controle quanto
ao tratamento de instrues. Em suas primeiras verses existiam circuitos fsicos montados na uni-
dade de controle que realizavam algumas atividades especficas, e sempre que o usurio quisesse
utilizar outras operaes, era necessrio reprogramar fisicamente a fiao do circuito para que a nova
operao pudesse ser executada. O leitor deve perceber que esta estratgia tornaria qualquer progra-
mao invivel para leigos da rea de circuitos eletrnicos.
Esta seo apresenta o funcionamento atual da UCP para executar os programas do sistema e de
usurios.

4.2.1 Linguagem de Mquina

A unidade de controle moderna projetada para reconhecer instrues codificadas como padres
de bits. Ao conjunto de instrues dado o nome de linguagem de mquina, e cada uma destas
1 O caminho inverso desta operao no possvel, como pode ser observado na figura.
Introduo Computao 57 / 130

instrues chamada de instruo de mquina.

Nota
Algo que pode surpreender o leitor a pequena quantidade de instrues necessria para a
UCP decodificar, sendo atravs da combinao destas poucas instrues, bem planejadas,
que o computador desenvolve tarefas de usos gerais nas mais diversas situaes em nosso
cotidiano. E a grandeza da Cincia da Computao que se tivermos projetado instrues
bem planejadas, a adio de outras instrues mais especficas se torna desnecessria, pois
uma combinao das instrues bsicas tem o mesmo efeito lgico da instruo especfica.

4.2.1.1 Arquiteturas RISC e CISC

A deciso entre instrues especficas ou instrues de uso geral levou a disputa de duas filosofias de
projetos para as UCPs.

RISC (Reduced Instruction Set Computer)


Possui um conjunto mnimo de instrues, tem em sua defesa o fato de criar mquinas simples
e eficientes.

CISC (Complex Instruction Set Computer)


Possui um conjunto de instrues complexas, que tem como argumento a facilidade de pro-
gramao, j que uma nica instruo capaz de realizar vrias tarefas individuais do RISC.

As duas filosofias tem entrada no mercado, sendo o CISC adotado pela famlia Pentium da Intel e o
RISC adotado pela Apple Computer, IBM e Motorola.

4.2.1.2 Tipos de instrues

Existem trs tipos de instrues:

Instrues de transferncia de dados


realizam cpia de valores entre registradores da UCP e a memria principal, como por exemplo
STORE e LOAD;

Instrues lgicas e aritmticas


ativam os circuitos especficos da ULA para a realizao das operaes, como por exemplo
ADD, SHIFT, OR, AND e etc.;

Instrues de controle
responsveis por tratar a sequncia da execuo do programa sem haver manipulao de seus
dados, como por exemplo o JUMP e CALL, usadas para a mudana do fluxo normal de um
programa, implementando assim os desvios condicionais, cdigos de repetio, chamada de
funo e retorno.
Introduo Computao 58 / 130

4.2.1.3 Codificao de instrues

A codificao de uma instruo composta de duas partes, o campo cdigo da operao e o campo
do operando.

Podemos observar no exemplo a seguir, a codificao da operao STORE e seus operandos:

Figura 4.5: Codificao de uma instruo STORE em cdigo de mquina

O primeiro dgito hexadecimal, o B, representa, neste exemplo, a operao STORE (armazena o con-
tedo de um registrador em memria). O dgito hexadecimal seguinte representa o identificador do
registrador (valor C) que possui o contedo a ser gravado, e j o par de dgitos hexadecimais F3 re-
presenta o endereo na memria principal onde o contedo do registrador C ser guardado. Podemos
traduzir este cdigo da seguinte forma:

Armazene o padro de bits contido no registrador C para a clula de memria de ende-


reo F3.

4.2.2 Executando Programas em Linguagem de Mquina

Um programa uma sequncia de instrues em uma linguagem a ser executada com o objetivo de
realizar uma determinada atividade pr-programada.
O programa em linguagem de mquina fica posto na memria principal, sendo de responsabilidade
da unidade de controle, a busca por cada instruo de mquina, sua decodificao e o gerenciamento
da execuo desta instruo com o auxlio da ULA. Aps o trmino de cada instruo o processo se
repete dando continuidade ao ciclo de mquina, este ciclo est ilustrado na Figura 4.6 [59].
Introduo Computao 59 / 130

Figura 4.6: As trs fases do ciclo de mquina

Para o controle deste ciclo a unidade de controle possui dois registradores de propsito especfico: o
contador de instrues e o registrador de instrues. No contador de instrues armazenado o
endereo de memria da prxima instruo a ser executada, assim a unidade de controle fica infor-
mada sobre a posio do programa em execuo. J o registrador de instrues guarda a instruo de
mquina que est em execuo.
Como ilustrado na Figura 4.6 [59], o ciclo de mquina divido em trs fases. Em cada fase a unidade
de controle utiliza seus registradores para auxili-la na execuo das instrues:

Busca
a unidade de controle pede para a memria principal transferir a instruo contida no endereo
de memria indicado pelo contador de instrues e este contedo armazenado no registrador
de instrues. Por fim, o contedo do contador de instrues incrementado, ficando pronto
para a prxima fase de busca;

Decodificao
a unidade de controle separa os campos da instruo contida no registrador de instrues de
acordo com o tipo de operao, identificando os operandos da instruo;

Execuo
os circuitos especficos da ULA so ativados, os dados de entrada carregados e a tarefa indicada
na instruo executada.

Ao final da execuo, a unidade de controle recomear o ciclo, partindo da fase de busca.

4.3 Animao demonstrando o funcionamento da arquitetura

O vdeo a seguir demonstra o funcionamento interno da UCP (ou CPU), nele possvel ver como as
intrues so carregas, decodificadas e executadas.
Introduo Computao 60 / 130

Figura 4.7: Funcionamento bsico da UCP: http://youtu.be/69svptJTE9Y

4.4 Recapitulando

Neste captulo estudamos a Arquitetura bsica de um computador, identificamos cada um dos seus
componentes, descrevendo suas funcionalidades principais e um resumo de seu funcionamento in-
terno. Descrevemos como estes componentes interagem entre si para o funcionamento do computa-
dor, dentre estes componentes estudamos a Unidade Central de Processamento, a Memria Principal,
os dispositivos de Entrada e Sada e os Barramentos.
Por fim, demos uma introduo sobre como o computador consegue executar um programa desenvol-
vido em linguagem de mquina, apresentando, para isso, o conceito de ciclo de mquina.

4.5 Atividades

1. Qual o papel de cada unidade dentro da UCP?

2. Qual a funo dos registradores existentes na UCP?

3. Qual a importncia dos Barramentos na Arquitetura de um computador?

4. Como a unidade de controle gerencia o ciclo de mquina de um computador?

5. Descreva o caminho percorrido entre os componentes de um computador para que uma soma
de dois operandos tenha seu resultado apresentando em um monitor de vdeo.

Feedback sobre o captulo


Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Acesse https://github.com/edusantana/introducao-a-computacao-livro/issues/new para reali-
zar seu feedback. Lembre-se de incluir na mensagem a seo, captulo (cap4) e a verso do
livro (v1.1.2) alvo de sua contribuio. Voc receber notificaes sobre os encaminhamen-
tos que sero dados a partir do seu feedback. Para compreender melhor como feedbacks
funcionam consulte o guia do curso.
Introduo Computao 61 / 130

Captulo 5

Algoritmos, Linguagem de Programao, Tra-


dutor e Interpretador

Sumrio
5.1 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.1.1 Exemplo de um Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1.2 Programa de Computador . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1.3 Construindo um algoritmo em sala de aula . . . . . . . . . . . . . . . . . . 65
5.2 Linguagem de Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2.1 Linguagem de mquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2.2 Linguagem assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.2.3 Linguagens de alto nvel . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.3 Paradigmas de Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.4 Tradutor e Interpretador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.5 Tradutores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5.1 Processo de Montagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5.2 Processo de Compilao . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5.2.1 Tarefas da compilao . . . . . . . . . . . . . . . . . . . . . . . 71
5.6 Ligao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.7 Carregamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.8 Interpretadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.9 Contedos complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.9.1 Caractersticas dos softwares montadores . . . . . . . . . . . . . . . . . . 73
5.9.2 Montadores de dois passos . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.9.3 Por que usar uma Linguagem de Montagem? . . . . . . . . . . . . . . . . 74
5.10 Prtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.11 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.12 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Introduo Computao 62 / 130

O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:
Apresentar o conceito de algoritmos;
Apresentar como os algoritmos so formalizados nos computadores atravs de lingua-
gens de programao;
Descrever os softwares bsicos que permitem ao computador entender os algoritmos
descritos nas linguagens de programao.

5.1 Algoritmos

Historiadores trazem divergncias sobre a origem da palavra algoritmo, sendo a mais difundida, de-
vido ao seu sobrenome, a de Mohamed ben Musa Al-Khwarizmi, um matemtico persa do sculo IX,
cujas obras foram traduzidas no ocidente no sculo XII, tendo uma delas recebido o nome Algorithmi
de numero indorum (indiano), acerca dos algoritmos que trabalham sobre o sistema de numerao
decimal.
Independente de sua real etimologia, a ideia principal contida na palavra refere-se descrio sistem-
tica da maneira de se realizar alguma tarefa. Para a Cincia da computao, o conceito de algoritmo
foi formalizado em 1936 por Alan Turing (Mquina de Turing) e Alonzo Church, que formaram as
primeiras fundaes da Cincia da Computao. Sendo esta formalizao descrita a seguir:

Um algoritmo um conjunto no ambguo e ordenado de passos executveis que definem


um processo finito.

Em sua definio o algoritmo requer um conjunto de passos ordenados, isto significa que estes passos
devem ser bem definidos e estruturados para uma ordem de execuo. Isto no quer dizer que estes
passos devem ser executados sempre em uma nica sequncia consistindo de um primeiro passo
seguido por um segundo, e assim por diante.1
Seguindo a definio, todo algoritmo deve consistir em passos executveis. Considere a seguinte
instruo

Faa uma lista de todos os nmeros inteiros mpares

Sendo um algoritmo para sua soluo impossvel de ser realizado, pois existe uma infinidade de
nmeros inteiros mpares. Logo, um algoritmo deve ser eficaz, ou seja, que possa ser resolvido.
Podemos criar um algoritmo para solucionar a instruo acima modificando sua descrio

Faa uma lista de todos os nmeros inteiros mpares no intervalo [1; 100]

Por fim, os passos em um algoritmo no podem ser ambguos, isto significa que durante a execu-
o de um algoritmo, o estado atual do processamento deve ser suficiente para determinar nica e
completamente as aes requeridas por cada passo.
1 Muitos algoritmos, conhecidos como algoritmos paralelos, contm mais do que uma sequncia de passos, cada

um sendo projetado para executar um processo distinto em mquinas multiprocessadas. Logo, as sequncias dos passos
podem intercalar entre si dependendo do ambiente de execuo, entretanto, dentro de uma mesma sequncia sua ordem
de execuo no muda durante o processo.
Introduo Computao 63 / 130

5.1.1 Exemplo de um Algoritmo

Guilherme recebe alguns convidados que esto visitando a cidade em sua casa e precisa ensin-los a
chegar igreja para a missa do domingo.

Figura 5.1: Mapa da cidade de Guilherme

O anfitrio muito organizado apresenta o mapa de seu bairro como visto na Figura 5.1 [63] e prope
o seguinte algoritmo para que seus amigos no se percam nas ruas da cidade.
Algoritmo proposto
Tire o carro da garagem de r
Pegue a rua no setido da sua direita
Siga em frente
Dobre na primeira rua direita
Siga em frente
Dobre na primeira rua esquerda
Siga em frente
Dobre na primeira rua direita
Siga em frente
Procure a igreja ao seu lado esquerdo
Estacione em frente igreja
Introduo Computao 64 / 130

Figura 5.2: Rota para igreja descrita no algoritmo

Neste exemplo, os passos so descritos em sua ordem de execuo de forma concisa e sem dubieda-
des2 em seu entendimento.

Pratique
Que tal fazer um algoritmo? Como seria o algoritmo para Guilherme ensinar seus amigos a
chegarem no banco?

5.1.2 Programa de Computador

Um programa de computador essencialmente um algoritmo que diz ao computador os passos espe-


cficos e em que ordem eles devem ser executados.
Quando os procedimentos de um algoritmo envolvem o processamento de dados, a informao
lida de uma fonte de entrada, processada e retornada sob novo valor aps processamento o que
geralmente realizado com o auxlio de um conjunto de instrues e estrutura de dados.

Figura 5.3: (a) Autmato suo do sculo XIX escrevendo um poema


2 Sem ambiguidade.
Introduo Computao 65 / 130

Figura 5.4: (b) Autmato do filme A Inveno de Hugo Cabret

Algoritmos podem ser implementados em circuitos eltricos ou at mesmo em dispositivos mecnicos


(autmatos, vide Figura 5.3 [64] e Figura 5.4 [65]). Mania dos inventores do sculo XIX, os autma-
tos eram mquinas totalmente mecnicas, construdas com a capacidade de serem programadas para
realizar um conjunto de atividades autnomas. Em 2011, o filme A Inveno de Hugo Cabret (tradu-
o brasileira) do cineasta Martin Scorsese traz a histria do ilusionista Georges Mlis precursor do
cinema e um colecionador de autmatos, sendo uma de suas mquinas o fio condutor desta histria.
O autmato especfico era capaz de desenhar a cena emblemtica do seu filme "Viagem Lua".
Entretanto, a maioria dos algoritmos so desenvolvidos para programas de computador, para isto,
existe uma grande variedade de linguagens de programao, cada uma com caractersticas especficas
que podem facilitar a implementao de determinados algoritmos, definiremos melhor uma linguagem
de programao na Seo 5.2 [66].

5.1.3 Construindo um algoritmo em sala de aula

Imagine que voc queira ensinar o conceito de algoritmo para um grupo de alunos. Uma forma muito
interessante de abordar a construo de um primeiro algoritmo em sala apresentar um jogo que
utilize uma sequncia de passos lgicos para sua resoluo.
Pea para os alunos pensarem em uma soluo e definir comandos em portugus a serem seguidos
pelo seu colega ao lado. Se o colega obtiver xito na resoluo do jogo, seu algoritmo ter sido
validado.
Propomos a abordagem do conhecido jogo imprensadinho, onde o jogador tem o objetivo de adi-
vinhar um nmero escolhido aleatoriamente pelo seu adversrio dentro de um intervalo de valores
pr-estabelecido. O jogador pergunta por qualquer nmero dentro deste intervalo e o adversrio tem
que responder se o nmero escolhido foi descoberto ou no. O jogador ainda pode perguntar se o
nmero a ser encontrado maior ou menor que o nmero corrente testado. O jogo acaba quando o
jogador descobre o nmero escolhido.
Introduo Computao 66 / 130

Figura 5.5: Proposta de algoritmo para o jogo imprensadinho

Dica
Antes de propor esta atividade a seus alunos, que tal tentar elaborar um algoritmo que forma-
lize sua soluo. Descreva testes a serem efetuados e instrues para descrever as decises
a serem tomadas.

5.2 Linguagem de Programao

Imagine aplicaes para redes sociais, jogos eletrnicos e decodificadores de vdeo digital sendo im-
plementados em linguagem de mquina (utilizando hexadecimal como na Figura 4.5 [58]), seria uma
tarefa impossvel. Para isso, linguagens de programao foram desenvolvidas para permitir que al-
goritmos sejam aceitveis para os humanos e facilmente convertidos em instrues de linguagem de
mquina. Podemos definir uma linguagem de programao como um conjunto de palavras (vocabu-
lrio) e de regras (sintaxe) que permite a formulao de instrues a um computador.

5.2.1 Linguagem de mquina

Os cdigos interpretados pelos primeiros computadores consistiam em instrues codificadas como


dgitos numricos. Escrever programas nesta linguagem, alm de ser tedioso, passvel de muitos
Introduo Computao 67 / 130

erros que devem ser localizados e corrigidos para finalizar o trabalho.


Na dcada de 40, pesquisadores desenvolveram um sistema de notao onde instrues numricas
podem ser representadas por mnemnicos. Por exemplo, a instruo a seguir poderia ser expressa
numericamente usando uma linguagem de mquina como: 4056

I NSTRUO
Mova o contedo do registrador 5 para o registrador 6

5.2.2 Linguagem assembly

Com o uso do sistema mnemnico, programas chamados montadores (assemblers em ingls) foram
desenvolvidos para converter expresses mnemnicas em linguagem de mquina. Por isso, muitas
vezes as linguagens mnemnicas so conhecidas como linguagem assembly.
Em um sistema mnemnico podemos representar a instruo da seo anterior da seguinte forma:
MOV R5, R6

Apesar da melhoria acarretada com a adoo do sistema mnemnico, sua programao ainda traz
muitos dissabores aos desenvolvedores. A linguagem uma troca direta de comandos bsicos da
linguagem de mquina, tornando a sua programao totalmente amarrada a arquitetura da mquina
em que o cdigo est sendo desenvolvido (dependncia de plataforma).3

Nota
Por esta razo as linguagens de mquina e assembly so consideradas linguagens da baixo
nvel (dependente da arquitetura).

5.2.3 Linguagens de alto nvel

Os pesquisadores de computao desenvolveram a terceira gerao de linguagens de programao,


sendo suas primitivas bsicas de alto nvel e independentes de mquina, um diferencial das linguagens
anteriores. Estas linguagens so desenvolvidas para usos mais especializados. Os exemplos mais co-
nhecidos desta primeira fase das linguagens de alto nvel so o FORTRAN (FORmula TRANslation),
que foi desenvolvido para aplicaes cientficas e de engenharia, e o COBOL (Common Business-
Oriented Language) desenvolvido para aplicaes comerciais.
O objetivo das linguagens de alto nvel era descrever operaes sem se preocupar quais instrues de
mquina seriam necessrias para implementar estas operaes. Uma vez identificado este conjunto
de primitivas de alto nvel necessrias para o algoritmo, um programa, conhecido como tradutor,
acionado para converter programas escritos na linguagem de alto nvel, em programas com linguagem
de mquina.4
3 Fazendo uma analogia com a construo de uma casa, seria necessrio pensar em sua construo a partir de tijolos,
canos, cimento, pedra e etc. Embora toda construo precise trabalhar com estes elementos bsicos, durante o projeto de
uma casa, o arquiteto pensa em termos de salas, varanda, portas e etc.
4 Este software ser estudado mais adiante na Seo 5.4 [69].
Introduo Computao 68 / 130

5.3 Paradigmas de Programao

Um paradigma de programao fornece e determina a viso que o programador possui sobre a estrutu-
rao e execuo do programa. Os paradigmas representam abordagens fundamentalmente diferentes
para a construo de solues para os problemas, portanto afetam todo o processo de desenvolvimento
de software. A seguir sero descritos os paradigmas de programao clssicos:

Paradigma imperativo
Descreve a computao como aes, enunciados ou comandos que mudam o estado (variveis)
de um programa. Muito parecido com o comportamento imperativo das linguagens naturais
que expressam ordens como visto no algoritmo das rotas (Seo 5.1.1 [63]).

Paradigma declarativo
Descreve propriedades da soluo desejada, no especificando como o algoritmo em si deve
agir. Muito popular em linguagens de marcao, sendo utilizado na programao das pgi-
nas web (linguagem HTML) e descrio de documentos multimdia como a linguagem Nested
Context Language NCL5 , adota pelo padro brasileiro de TV Digital.
Exemplo de cdigo HTML
<h1>Frutas da estao</h1>
<ul>
<li>Abacate</li>
<li>Laranja</li>
<li>Manga</li>
</ul>

Paradigma funcional
Trata a computao como uma avaliao de funes matemticas. Ela enfatiza a aplicao de
funes, em contraste da programao imperativa, que enfatiza mudanas no estado do pro-
grama. Neste paradigma ao se pensar em uma funo simples de calculo de mdias de notas,
usamos o auxlio de funes mais primitivas, podendo a funo Media (Numeros) ser represen-
tada pela expresso:
(Divide (Soma Numeros) (Conta Numeros) )

logo a funo Divide opera com os resultados das funes Soma e Conta.

Paradigma orientado a objeto


Neste paradigma, diferente do paradigma imperativo, os dados passam a ter um papel principal
na concepo do algoritmo. No paradigma imperativo, rotinas de controle manipulam os dados
que so elementos passivos. J na orientao a objetos, os dados so considerados objetos
auto gerenciveis formados pelos prprios dados e pelas rotinas responsveis pela manipulao
destes dados.
Exemplo de cdigo orientado a objeto
carro.ligar();
carro.setVelocidade(100);

5 Para conhecer NCL acesse http://www.gingancl.org.br/en/livrosecapitulosdelivros


Introduo Computao 69 / 130

5.4 Tradutor e Interpretador

Ao receber uma bicicleta no natal Carlinhos precisa ler o manual de instrues e seguir passo a
passo as tarefas descritas no documento para poder se divertir com seu presente. Podemos dizer que
Carlinhos um interpretador dos comandos fornecidos pelo manual de instrues. Entretanto seu pai
encontrou uma promoo na internet e comprou um produto fabricado na Frana e o menino ao se
deparar com o manual percebeu que o mesmo no poderia ser interpretado, j que no sabia ler em
francs. Para resolver o problema seu pai contratou um tradutor de francs para portugus, assim,
este novo manual pde ser interpretado por Carlinhos e enfim sua bicicleta seria montada.
No computador, o problema de Carlinhos se repete diariamente, havendo a necessidade de softwares
bsicos para traduzir e interpretar os diversos programas dos usurios escritos em diversas lingua-
gens existentes. Os softwares que convertem um programa de usurio escrito em uma linguagem
para outra linguagem so chamados de tradutores. A linguagem na qual o programa original est
expresso chamada de linguagem fonte e a linguagem para a qual ela ser convertida conhecida
como linguagem alvo. Tanto a linguagem fonte quanto a linguagem alvo definem nveis de abstrao
especficos.
O mtodo de traduo empregado quando h um processador (seja ele implementado em hardware
ou por interpretao) disponvel para executar programas expressos na linguagem alvo mas no na
linguagem fonte. 6 Se a traduo tiver sido feita corretamente, a execuo do programa traduzido vai
obter exatamente os mesmos resultados que a execuo do programa fonte obteria se houvesse um
processador que o executasse diretamente.

Importante
importante observar a diferena entre traduo e interpretao. Na traduo, o programa
original, expresso na linguagem fonte, no executado diretamente. Em vez da execuo
direta, esse programa precisa ser convertido para um programa equivalente, conhecido como
programa objeto ou programa binrio executvel, que ser executado aps o trmino do
processo de traduo.

Logo, a traduo envolve dois passos distintos:

1. Gerao de um programa equivalente na linguagem alvo;

2. Execuo do programa obtido.

Nota
No processo de interpretao existe apenas um nico passo: a execuo do programa origi-
nal na linguagem fonte.

Nesta seo iremos analisar a funo dos softwares bsicos7 : compilador, montador, ligador, carrega-
dor e interpretador.
6 Se existir um processador que possa executar diretamente programas escritos na linguagem fonte, no h necessidade

de se traduzir o programa fonte para uma linguagem alvo.


7 Programas necessrios para que os softwares dos usurios implementados em alguma linguagem de programao

especfica possam ser executados em um computador.


Introduo Computao 70 / 130

5.5 Tradutores

Os tradutores podem ser divididos em dois grupos, dependendo da relao existente entre a lingua-
gem fonte e a linguagem alvo.

Montador
Quando a linguagem fonte for essencialmente uma representao simblica para uma lingua-
gem de mquina numrica, o tradutor chamado de montador e a linguagem fonte chamada
de linguagem de montagem.

Compilador
Quando a linguagem fonte for uma linguagem de alto nvel, como o caso do Pascal ou do C,
e a linguagem alvo for uma linguagem de mquina numrica ou uma representao simblica
desta linguagem (linguagem de montagem), o tradutor chamado de compilador.

Podemos observar na Figura 5.6 [70] o processo de traduo e ligao de cdigos fonte, escrito em
linguagens de programao, em um cdigo binrio executvel. Nesta seo vamos abordar apenas o
processo de traduo (montagem ou compilao), o processo de ligao ser visto depois.

Figura 5.6: Processos de traduo e ligao

5.5.1 Processo de Montagem

O processo de traduzir um programa em linguagem de montagem para programa em linguagem de


mquina chamado de processo de montagem. Este um processo simples, uma vez que existe um
mapeamento de um para um dos comandos em linguagem de montagem para seus correspondentes
em linguagem de mquina.
No processo de montagem, a instruo abaixo poderia ser traduzida no cdigo binrio presente na
Figura 4.5 [58].
Instruo em linguagem de montagem
STORE [0xF3], regC

5.5.2 Processo de Compilao

Diferente do processo de montagem de um programa em linguagem de montagem para um programa


em linguagem de mquina, que bastante simples, pois existe um mapeamento direto de um para um
entre os comandos em linguagem de montagem e os equivalentes em cdigo binrio, o processo de
compilao de linguagens muito mais complexo.
Introduo Computao 71 / 130

5.5.2.1 Tarefas da compilao

Para compreender as tarefas do processo de compilao considere o comando de uma linguagem de


alto nvel a seguir:
a = b + 4;

Diferente do processo de montagem, os comandos de alto nvel no possuem um correspondente


nico em linguagem de mquina, portanto o comando mencionado precisar ser traduzidos em vrias
instrues de baixo nvel.
O processo de compilao envolver as seguintes etapas:

1. Reduzir o texto do programa para smbolos bsicos da linguagem, como identificadores tais
como a e b, demarcaes como o valor constante 4 e delimitadores do programa tais como = e
+. Esta parte da compilao chamada de anlise lxica.

2. Decodificar os smbolos para reconhecer a estrutura do programa. No comando usado acima,


por exemplo, um programa chamado parser deve reconhecer o comando como sendo uma
atribuio de valores da forma:
<Identificador> "=" <Expresso>

onde <Expresso> decodificado na forma:


<Identificador> "+" <Constante>

Essa tarefa chamada de anlise sinttica.

3. Anlise de nomes: associar os nomes a e b com variveis do programa, e associ-los tambm a


posies de memria especficas onde essas variveis sero armazenadas durante a execuo.

4. Anlise de tipos: determinar os tipos de todos os dados. No caso anterior, as variveis a e b e a


constante 4 seriam reconhecidas como sendo do tipo int em algumas linguagens. As anlises
de nome e tipo so tambm conhecidas como anlise semntica: determina o significado dos
componentes do programa.

5. Mapeamento de aes e gerao de cdigo: associar comandos do programa com uma sequn-
cia em linguagem de montagem apropriada. No caso anterior, a sequncia em linguagem de
montagem poderia ser:
Comando de atribuio
ld[b], %r0, %r1 // Carregue varivel b em um registrador.
add %r1, 4, %r2 // Calcule o valor da expresso.
st %r2, %r0, [a] // Faa a atribuio na varivel a.

6. Existem etapas adicionais que o compilador deve tomar, tais como, alocar variveis a registra-
dores, usar registradores e otimizar o cdigo gerado.

Otimizador de cdigo
O otimizador de cdigo um mdulo opcional nos compiladores e pode ser acionado pelo
desenvolvedor na etapa de compilao. A otimizao ir gerar cdigos mais eficientes.
Introduo Computao 72 / 130

5.6 Ligao

A maioria dos programas composto de mais de um procedimento. Os compiladores e os montadores


geralmente traduzem um procedimento de cada vez, colocando a sada da traduo em disco. Antes
que o programa possa ser executado, todos os seus procedimentos precisam ser localizados e ligados
uns aos outros de maneira a formarem um nico cdigo.
A funo do ligador (Figura 5.6 [70]) coletar procedimentos traduzidos separadamente e lig-los
uns aos outros para que eles possam executar como uma unidade chamada cdigo binrio executvel
(o programa).
Se o compilador ou o montador lesse um conjunto de procedimentos fonte e produzisse diretamente
um programa em linguagem de mquina pronto para ser executado, bastaria que um nico comando
fonte fosse alterado para que todos os procedimentos fonte tivessem que ser novamente traduzidos.
Usando a tcnica do cdigo objeto separado, o nico procedimento a ser novamente traduzido seria
aquele modificado. Havendo a necessidade de realizar apenas a etapa de ligao dos cdigos separa-
dos novamente, sendo esta tarefa mais rpida que a traduo.

5.7 Carregamento

O carregador um programa que coloca um mdulo de carregamento na memria principal. Concei-


tualmente, a tarefa do carregador no difcil. Ele deve carregar os vrios segmentos de memria com
seus valores corretos e inicializar certos registradores, tais como o apontador para pilha do sistema,
responsvel pelo escopo das rotinas que estaro em execuo e o contador de instrues contido no
processador, com seus valores iniciais, indicando assim onde o programa deve ser iniciado.

Figura 5.7: Esquema de carregamento

Em Sistemas Operacionais modernos, vrios programas esto residentes na memria a todo instante,
e no h como o montador ou o ligador saber em quais endereos os mdulos de um programa iro re-
sidir. O carregador deve relocar estes mdulos durante o carregamento adicionando um deslocamento
a todos os endereos, permitindo desta forma acessar cada mdulo individualmente na memria.
Esse tipo de carregamento chamado de carregamento com relocao. O carregador simplesmente
modifica endereos relocveis dentro de um nico mdulo de carregamento para que vrios programas
passem a residir na memria simultaneamente.

5.8 Interpretadores

O software interpretador um programa de computador que executa instrues escritas em uma lin-
guagem de programao. Por exemplo, as linguagens Basic, Prolog, Python e Java, so frequente-
mente interpretados. Um interpretador geralmente usa uma das seguintes estratgias para a execuo
Introduo Computao 73 / 130

do programa: executar o cdigo fonte diretamente ou traduzir o cdigo fonte em alguma eficiente
representao intermediria e depois executar este cdigo (Figura 5.8 [73]).

Figura 5.8: Esquema de interpretao

Para isso, certos tipos de tradutores transformam uma linguagem fonte em uma linguagem simpli-
ficada, chamada de cdigo intermedirio, que pode ser diretamente executado por um programa
chamado interpretador. Ns podemos imaginar o cdigo intermedirio como uma linguagem de m-
quina de um computador abstrato projetado para executar o cdigo fonte.

Nota
Interpretadores so, em geral, menores que compiladores e facilitam a implementao de
construes complexas em linguagens de programao. Entretanto, o tempo de execuo
de um programa interpretado geralmente maior que o tempo de execuo deste mesmo
programa compilado, pois o interpretador deve analisar cada declarao no programa a cada
vez que executado e depois executar a ao desejada, enquanto que o cdigo compilado
apenas executa a ao dentro de um contexto fixo, anteriormente determinado pela compi-
lao. Este tempo no processo de anlise conhecido como overhead interpretativa.

5.9 Contedos complementares

Nesta seo reunimos informaes complementares aos contedos apresentados no captulo.

5.9.1 Caractersticas dos softwares montadores

Embora a montagem seja um processo simples, tedioso e passvel de erros quando feito manual-
mente. Montadores comerciais tm ao menos as seguintes caractersticas:

Permitem ao programador especificar posio de valores de dados e programas durante a execuo;


Permitem que o programador de incio realize valores de dados na memria antes da execuo do
programa;
Implementam mnemnicos em linguagem de montagem para todas as instrues da mquina e
modos de endereamento, e traduzem comandos em linguagem de montagem vlidos, nos seus
equivalentes em linguagem de mquina;
Permitem o uso de rtulos simblicos para representar endereos e constantes;
Introduo Computao 74 / 130

Incluem um mecanismo que permite que variveis sejam definidas em um programa em linguagem
de montagem e usadas em outros programas separadamente;
Possibilitam a expanso de macros, ou seja, rotinas (semelhantes s funes em linguagem de alto
nvel) que podem ser definidas uma vez e ento instanciadas quantas vezes necessrio.

5.9.2 Montadores de dois passos

A maioria dos montadores leem textos do programa em linguagem de montagem duas vezes, e so
chamados de montadores de dois passos. O primeiro passo serve para determinar o endereo de
todos os itens de dados e instrues de mquina, e selecionar quais instrues devem ser geradas para
cada instruo em linguagem de montagem (mais ainda no ger-las).
Os endereos dos itens de dados e instrues so determinados por meio do uso de um contador de
programa para a montagem, chamado contador de localizao. O contador de localizao gerencia o
endereo da instruo executada e dos itens de dados durante a montagem, que geralmente iniciali-
zada com 0 (zero). No incio do primeiro passo, incrementado de acordo com o tamanho de cada
instruo.
Durante este passo, o montador tambm efetua quaisquer operaes aritmticas em tempo de monta-
gem, e insere as definies de todos os rtulos de funes e variveis e as constantes, em uma tabela
chamada Tabela de Smbolos.
A razo principal para exigir uma segunda passagem permitir que smbolos sejam usados no pro-
grama antes de serem definidos. Aps a primeira passagem, o montador ter identificado todos os
smbolos e os colocado na Tabela de Smbolos, j durante a segunda passagem, gerar cdigo de
mquina, inserindo os identificadores dos smbolos que agora so conhecidos.

5.9.3 Por que usar uma Linguagem de Montagem?

Programar em uma linguagem de montagem no fcil. Alm da dificuldade, o desenvolvimento de


um programa na linguagem de montagem consome mais tempo do que seu desenvolvimento em uma
linguagem de alto nvel. A depurao e manuteno dos programas em linguagem de montagem so
mais complicados.

Nota
Depurao (em ingls: debugging, debug) o processo de encontrar e reduzir defeitos
num aplicativo de software ou mesmo em hardware. Erros de software incluem aqueles que
previnem o programa de ser executado e aqueles que produzem um resultado inesperado.
Para saber mais consulte: http://pt.wikipedia.org/wiki/Depurao.

Nessas condies, por que algum escolheria programar em uma linguagem de montagem?
Existem duas razes que justificam esta opo: performance e acesso aos recursos da mquina. Um
expert na linguagem de montagem pode produzir um cdigo menor e muito mais eficiente do que o
gerado por um programador usando linguagem de alto nvel.
Em segundo lugar, certos procedimentos precisam ter acesso total ao hardware. Por exemplo, se a
mquina alvo tiver um bit para expressar o overflow de operaes aritmticas, um programa em lin-
guagem de montagem pode testar diretamente este bit, coisa que um programa em Java no pode fazer.
Alm disso, um programa em linguagem de montagem pode executar qualquer uma das instrues do
conjunto de instrues da mquina alvo.
Introduo Computao 75 / 130

5.10 Prtica

No Apndice B [117] possvel encontrar uma prtica para compreender os processos de compilao
e ligao.

5.11 Recapitulando

Neste captulo estudamos o conceito de algoritmo e vimos que o mesmo pode ser implementado por
diversos mecanismos mecnicos e eltricos. Um algoritmo descrito em um computador atravs de
uma linguagem de programao. So diversos os nveis de abstrao em cada linguagem, cada uma
com um objetivo distinto. Para que todas estas linguagens possam coexistir no computador foram
criados software bsicos com o objetivo de realizar a execuo do algoritmo descrito atravs destas
linguagens de programao.
Dentre os softwares bsicos estudados vimos os Tradutores e Interpretadores, cada um com seu uso
exclusivo. Os Tradutores ainda podem ser classificados em Compiladores e Montadores, ambos tendo
como objetivo traduzir uma linguagem fonte para uma linguagem alvo cujo Interpretador seja imple-
mentado no computador corrente.

5.12 Atividades

1. Quais os ganhos que as linguagens de programao de alto nvel trazem para os programadores?

2. Descreva 3 diferentes paradigmas de programao.

3. Sistemas Operacionais so tipos de software bsico? Quais os tipos de softwares bsicos exis-
tentes?

4. Marque a alternativa correta. Um interpretador, a partir de um programa-fonte:

a. Gera um programa-objeto para posterior execuo


b. Efetua a traduo para uma linguagem de mais alto nvel
c. Interpreta erros de lgica
d. Executa instruo a instruo, sem gerar um programa-objeto
e. No detecta erros de sintaxe

5. Qual a funo de uma linguagem de montagem (linguagem assembly)?

6. Quais as diferenas entre interpretador e tradutor?

7. Quais as diferenas entre compilador e montador?


Introduo Computao 76 / 130

Feedback sobre o captulo


Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Acesse https://github.com/edusantana/introducao-a-computacao-livro/issues/new para reali-
zar seu feedback. Lembre-se de incluir na mensagem a seo, captulo (cap5) e a verso do
livro (v1.1.2) alvo de sua contribuio. Voc receber notificaes sobre os encaminhamen-
tos que sero dados a partir do seu feedback. Para compreender melhor como feedbacks
funcionam consulte o guia do curso.
Introduo Computao 77 / 130

Captulo 6

Introduo aos Sistemas Operacionais

Sumrio
6.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.1.1 O Sistema Operacional como uma Mquina Estendida . . . . . . . . . . . 80
6.1.2 Gerenciador de Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.2 Tipos de Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.1 Computadores de Grande Porte . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.2 Sistema Operacional de Servidores . . . . . . . . . . . . . . . . . . . . . 81
6.2.3 Sistema Operacional de Multiprocessadores . . . . . . . . . . . . . . . . . 81
6.2.4 Sistema Operacional de PC . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.5 Sistema Operacional de Tempo Real . . . . . . . . . . . . . . . . . . . . . 82
6.2.6 Sistema Operacional Embarcado . . . . . . . . . . . . . . . . . . . . . . . 82
6.2.7 Sistema Operacional de Cartes Inteligentes . . . . . . . . . . . . . . . . . 82
6.3 Conceitos de Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . . 82
6.3.1 Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.3.1.1 Estados de Processos . . . . . . . . . . . . . . . . . . . . . . . 83
6.3.1.2 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.3.2 Gerenciamento de memria . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.3.2.1 Monoprogramao . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.3.2.2 Multiprogramao . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.3.2.3 Memria Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.3.3 Entrada/Sada (E/S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.3.3.1 Dispositivos de E/S . . . . . . . . . . . . . . . . . . . . . . . . 86
6.3.4 Sistema de Arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.4 Contedos complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.4.1 Evoluo dos Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . 88
6.4.1.1 Computadores a Vcuo (1945-1955) . . . . . . . . . . . . . . . 88
6.4.1.2 Transistores e Sistemas em Lote (1955-1965) . . . . . . . . . . 88
6.4.1.3 Circuitos Integrados e Multiprogramao (1965-1980) . . . . . . 88
Introduo Computao 78 / 130

6.4.1.4 Computadores Pessoais (1980-1995) . . . . . . . . . . . . . . . 89


6.4.2 A Guerra dos Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . 90
6.5 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.6 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:

Descrever as funes de um Sistema Operacional;


Apresentar os principais fatos na evoluo dos Sistemas Operacionais durante a evolu-
o da arquitetura dos computadores;
Descrever os principais conceitos de Sistema Operacional e como o mesmo abstrai o
uso do hardware de um computador.

Um sistema computacional moderno consiste em um ou mais processadores, memria principal, dis-


cos, impressoras, teclado, monitor, interfaces de rede e outros dispositivos de entrada e sada. Enfim
um sistema complexo. Desenvolver programas que mantenham o controle de todos esses componen-
tes e os utilizem corretamente e de maneira otimizada um trabalho extremamente difcil. Por isso,
os computadores tm um dispositivo de software denominado Sistema Operacional, cujo trabalho
gerenciar esses componentes e fornecer aos programas do usurio uma interface com o hardware mais
simples.
A maioria dos usurios de computador j teve alguma experincia com um Sistema Operacional,
mesmo assim difcil reconhecer de modo preciso o que um Sistema Operacional. Este problema
ocorre porque os Sistemas Operacionais realizam basicamente duas funes no relacionadas: esten-
der a mquina e gerenciar recursos. Este captulo ir descrever suas principais funes para o usurio
do computador.

6.1 Introduo

Sem o software, um computador seria um pedao de metal sem uso. Muitos consideram o software
como a alma do computador.
Existem dois tipos de software para computadores:

Programas do sistema
responsveis por operaes de gerenciamento do prprio computador,

Programas aplicaes
implementados por usurios do computador para resolver seus problemas especficos.

O principal programa do sistema o Sistema Operacional (SO), responsvel por gerenciar o acesso
aos recursos do computador e prover servios extras da mquina. Nos computadores modernos,
muitos so os dispositivos a serem gerenciados: um ou mais processadores, memria principal, ter-
minais de acesso, disco rgido, interfaces de rede e etc. Imagine a complexidade de implementar um
programa que faz uso de cada um destes dispositivos, controlando o acesso concorrente de outros
programas para no interferir no resultado final do seu.
Introduo Computao 79 / 130

Sistema
Operacional

Figura 6.1: Recursos gerenciados pelo Sistema Operacional

O leitor deve perceber que seriam programaes muito complexas e uma das funes do Sistema
Operacional, permitir as aplicaes de usurio o uso destes dispositivos de forma mais simplificada.
Para isso, o Sistema Operacional fornece as aplicaes, uma coleo de funes pr-programadas
para atuarem sobre estes dispositivos, as chamadas do sistema (system calls).

Figura 6.2: Sistema de um computador: hardware, programas do sistema e aplicaes.

Podemos observar na Figura 6.2 [79] a arquitetura em camadas de um sistema computacional. Na


camada inferior encontram-se os circuitos integrados, fonte de energia, barramentos, placas de rede e
etc.
Um conjunto de instrues interpretado pela camada de Microprogramao. Esta camada conversa
diretamente com os dispositivos providenciando funcionalidades para a camada acima atravs das
instrues de mquina.
A principal funo da camada do Sistema Operacional diminuir a complexidade e fornecer ao
programador um conjunto de instrues de mais alto nvel, sem a preocupao dos detalhes das
instrues, como a movimentao do cabeote de leitura dos discos rgidos contidos na memria
secundria para ler os dados de um programa em execuo.
Introduo Computao 80 / 130

Acima do Sistema Operacional, existem outros programas do sistema, como os Compiladores, Edito-
res e os Interpretadores de Comandos, que auxiliam as aplicaes a fazerem uso das funcionalidades
do Sistema Operacional. E por fim, a camada de aplicaes, escritas pelos usurios para resolver seus
problemas especficos, como processamento de imagens, servios de comunicao na rede, aplicaes
comerciais, cientficas e etc.

Importante
Muitos confundem o Sistema Operacional com a sua interface grfica. No Windows, Sistema
Operacional da Microsoft, existe um programa do sistema, chamado gerenciador de janelas,
responsvel por controlar as aes do usurio e ativar os recursos do Sistema Operacional,
dando assim uma falsa impresso que o mesmo seja o Sistema Operacional de fato.

Para podermos definir bem a fronteira do que o papel do Sistema Operacional, elencamos e em
seguida descrevemos suas duas principais funes: Extenso da Mquina e Gerenciador de Recursos.

6.1.1 O Sistema Operacional como uma Mquina Estendida

A arquitetura, conjunto de instrues, organizaes de memria, E/S e estrutura de barramentos da


maioria dos computadores em nvel de linguagem de mquina primitivo e de difcil programao.
Examinando como feita a E/S da unidade de discos flexveis (disquete), so realizados inmeros
comandos para leitura e escrita de dados, movimentao do brao do disco e formatao de trilhas.
Alm da inicializao, sinalizao, reinicializao e recalibrao do controlador e das unidades de
disquetes.
Sem entrar em detalhes de fato, claro que um programador de nvel mdio provavelmente no se
envolver com os detalhes de programao das unidades de disco, em vez disso, busca lidar com essas
unidades de modo mais abstrato e simples.
Esse programa que oculta a verdade ao programador sobre o hardware e apresenta uma viso sim-
ples o Sistema Operacional, permitindo que o usurio trabalhe com o conceito de arquivos com
nomes para dividir o disco.
Em todo caso a abstrao oferecida pelo sistema operacional mais simples e mais fcil de usar que
a do hardware, oferecendo ao usurio o equivalente a uma mquina estendida.

6.1.2 Gerenciador de Recursos

O segundo trabalho do Sistema Operacional fornecer uma alocao ordenada e controlada de


processadores, memrias e dispositivos de E/S entre vrios programas que competem por eles.
Imagine o que aconteceria se trs programas em execuo em algum computador tentassem imprimir
suas sadas simultaneamente na mesma impressora. As primeiras linhas poderiam ser do programa 1,
as linhas seguintes do programa 2 e algumas outras do programa 3. O resultado seria uma confuso.
O Sistema Operacional pode trazer ordem a essa confuso, armazenando temporariamente no disco
todas as sadas destinadas impressora, tratando a impresso de cada sada por vez.
Alm disso, os usurios muitas vezes precisam compartilhar no somente hardware, mas tambm
informao (arquivo, banco de dados e etc).
O gerenciamento de recursos realiza o compartilhamento destes recursos de duas maneiras:
Introduo Computao 81 / 130

Compartilhamento no tempo
Quando o recurso compartilhado no tempo, diferentes usurios aguardam sua vez para utilizar
um recurso. Por exemplo, com somente uma CPU e mltiplos programas, o Sistema Operacio-
nal aloca a CPU a um programa, e depois que executou o suficiente, outro programa obtm seu
uso, ento outro e por fim o primeiro programa novamente.

Compartilhamento no espao
No compartilhamento do espao, os usurios no esperam a sua vez, cada um ocupa sua parte
no recurso. Por exemplo, a memria principal normalmente dividida entre vrios programas
em execuo, assim, cada um pode residir ao mesmo tempo na memria.

6.2 Tipos de Sistemas Operacionais

Como vimos na seo anterior, muitos Sistemas Operacionais possuem caractersticas distintas de-
vido arquitetura do hardware em que iro executar. Esta seo traz alguns dos tipos de Sistemas
Operacionais existentes descrevendo suas principais caractersticas

6.2.1 Computadores de Grande Porte

Estes computadores distinguem dos PCs em termos de capacidade de E/S. Possui milhares de discos
com milhares de terabytes de dados. Atualmente ressurgiram como sofisticados servidores web e
servidores para transaes entre empresas.
Seus Sistemas Operacionais so, sobretudo, orientados para o processamento simultneo de muitos
tarefas (jobs) com quantidades volumosas de E/S. Esses sistemas oferecem normalmente trs tipos de
servios: em lote (batch), processamento de transaes e tempo compartilhado.

6.2.2 Sistema Operacional de Servidores

Servidores so computadores pessoais grandes, estaes de trabalho e at computadores de grande


porte. Eles servem mltiplos usurios de uma vez em uma rede e permitem-lhe compartilhar recursos
de hardware e software. Seu Sistema Operacional deve prover um bom gerenciamento de recursos,
como servios de impresso, servios de arquivos ou servios web.

6.2.3 Sistema Operacional de Multiprocessadores

Um mdulo cada vez mais comum de obter potncia computacional conectar mltiplas CPUs em
um nico sistema. Dependendo da forma como so interligados os processadores e o que os mesmos
compartilham, esses sistemas so denominados computadores paralelos, multicomputadores ou mul-
tiprocessadores. So Sistemas Operacionais com aspectos especiais de comunicao e conectividade.

6.2.4 Sistema Operacional de PC

Seu trabalho oferecer uma boa interface para um nico usurio. So amplamente usados para
processadores de texto, planilha e acesso a internet.
Introduo Computao 82 / 130

6.2.5 Sistema Operacional de Tempo Real

Os Sistemas Operacionais de tempo real so caracterizados por terem o tempo como um parmetro
fundamental. Por exemplo, em sistemas de controle de processos industriais muito comum a exis-
tncia de prazos rgidos para a execuo de determinadas tarefas, podendo uma ao, ocorrendo em
um momento incorreto, soldar uma regio errada de uma pea, estragando o produto final.
Existem dois tipos de Sistema Operacionais de tempo real:

Crtico
Onde as aes precisam ocorrer em determinados instantes.

No crtico
No qual o descumprimento ocasional de um prazo aceitvel. Sistemas multimdia pertencem
a esta ltima categoria.

6.2.6 Sistema Operacional Embarcado

Sistemas embarcados so pequenos computadores, geralmente computadores de mo, celulares e set-


top-box para TV Digital. Realizam um pequeno nmero de funes, seu Sistema Operacional deve
lidar com restries de tamanho, memria e consumo de energia.

6.2.7 Sistema Operacional de Cartes Inteligentes

Sistemas de Cartes Inteligentes so dispositivos do tamanho de cartes de crdito que contm um


chip de CPU. Possui restries severas de consumo de energia e de memria. Alguns deles podem
realizar apenas uma nica funo, como pagamentos eletrnicos, mas outros podem tratar mltiplas
funes. O gerenciamento dos recursos e a proteo das mesmas so tratados pelo Sistema Operaci-
onal, geralmente muito primitivo, contido no carto.

6.3 Conceitos de Sistemas Operacionais

Todos os Sistemas Operacionais tm certos conceitos bsicos, como processos, memria e arquivos,
que so fundamentais para entend-los. Nesta seo iremos dar uma introduo sobre seus principais
conceitos.

6.3.1 Processos

Um processo basicamente um programa em execuo. Associado a cada processo est o seu espao
de endereamento e uma lista de posies de memria que este processo possui permisso para ler e
escrever. Tambm associado a cada processo est um conjunto de registradores, que inclui o contador
de programa, o ponteiro para a pilha de execuo e demais informaes necessrias para executar um
programa.
Em um sistema multiprogramado, a CPU salta de programa para programa, executando cada um deles
por dezenas ou centenas de vezes por segundo. Estritamente falando, enquanto a cada instante a CPU
executa somente um programa, no decorrer de um segundo ela pode trabalhar sobre vrios programas,
Introduo Computao 83 / 130

dando a iluso de um verdadeiro paralelismo. Fala-se em pseudoparalelismo para contrastar com o


real paralelismo dos sistemas multiprocessadores.
Quando um processo suspenso temporariamente dessa maneira, ele dever ser reiniciado mais tarde,
exatamente do mesmo ponto em que ele estava quando foi interrompido. Logo, todas as informaes
relativas ao processo devem ser explicitamente salvas. Por exemplo, um processo pode ter vrios
arquivos abertos para leitura. Existe um ponteiro associado a cada um desses arquivos, que indica
a posio atual, assim quando o processo retorna a execuo, a chamada de sistema read sobre o
arquivo poder ler os dados corretamente de sua ltima posio manipulada.
Em muitos sistemas operacionais os dados relativos ao processo, que no estejam em seu espao
de endereamento, so armazenados em uma tabela do Sistema Operacional chamada de tabela de
processos, contendo uma entrada para cada processo.

6.3.1.1 Estados de Processos

Os processos em um Sistema Operacional possuem trs estados ilustrados na Figura 6.3 [83], estes
estados so:

Em execuo
realmente usando a CPU naquele instante;

Pronto
executvel, temporariamente parado para dar lugar a outro processo;

Bloqueado
incapaz de executar enquanto um evento externo esperado no ocorrer.

Figura 6.3: Transio de estados de um processo.

As transies entre os estados tambm esto ilustradas na Figura 6.3 [83], estas transies so:

1. Processo bloqueia aguardando uma entrada dos dispositivos de E/S.

2. O escalador de processos seleciona outro processo.


Introduo Computao 84 / 130

3. O escalador de processos seleciona este processo.

4. A entrada torna-se disponvel.

A transio 1 ocorre quando um processo descobre que ele no pode prosseguir. No UNIX, quando
um processo l de um arquivo especial e no h entrada disponvel, o processo automaticamente
bloqueado.
As transies 2 e 3 so causadas pelo escalonador de processos sem que o processo saiba disso. A
transio 2 ocorre quando o escalonador decide que o processo em execuo j teve tempo suficiente
de CPU e momento de deixar outro processo ocupar o tempo de CPU. A transio 3 ocorre quando
o escalonador define que justo que o processo retorne a ser executado, aps ter compartilhado a
CPU com outros processos.
A transio 4 ocorre quando um evento externo pelo qual um processo estava aguardando (por exem-
plo, a chegada de uma dado vindo da placa de rede). Note que a transio 4 no leva o processo
diretamente para o estado Em Execuo, pois pode existir um outro processo em execuo e este
processo que estava bloqueado deve aguardar sua vez no escalonador.

6.3.1.2 Threads

Em Sistemas Operacionais tradicionais, cada processo tem um espao de endereamento e um nico


thread (fluxo) de controle. Na verdade, isso quase uma definio de processo. Contudo, frequente-
mente h situaes em que desejvel ter mltiplos threads de controle no mesmo espao de ende-
reamento executando quase em paralelo como se fossem dois processos separados. Este conceito,
chamado de multithread, pode ser observado na Figura 6.4 [84](b) a seguir.

Figura 6.4: (a)Trs processos, cada um com um Thread de execuo. (b) Um processo com trs
threads de execuo.

Threads distintos em um processo no so to independentes quanto processos distintos. Todos os


threads tm exatamente o mesmo espao de endereamento, o que significa que eles compartilham as
mesmas variveis globais.
Introduo Computao 85 / 130

Como os threads tm algumas das propriedades dos processos, eles so chamados de processos leves.
importante perceber que cada thread tem sua prpria pilha de execuo. Logo os estados dos
processos so os mesmos para os threads, ocorrendo as mesmas transaes de estados, como se cada
thread fosse um processo separado. Havendo a necessidade de salvar o estado da pilha de execuo
de cada thread toda vez que o mesmo perder a vez na CPU, podendo futuramente retornar a execuo
no ponto em que foi interrompido.

Importante
A vantagem de se criar thread est na rapidez de sua criao e no menor gasto de recursos
do sistema para o mesmo.

6.3.2 Gerenciamento de memria

O que todo programador deseja dispor de uma memria infinitamente grande, rpida e no voltil,
a um custo muito baixo. Infelizmente, a tecnologias atuais no comportam essas memrias. Por
isso, a maioria dos computadores utiliza uma hierarquia de memrias, que combina: uma pequena
quantidade de memria cache, voltil, muito rpida e de alto custo; uma grande memria principal
(RAM), voltil com alguns gigabytes, de velocidade e custo mdios; e uma memria secundria,
constituda de armazenamento no voltil em disco, com centenas de gigabytes e custo baixo. Cabe
ao Sistema Operacional coordenar a utilizao dessas memrias.
A parte do Sistema Operacional, responsvel pela gerncia das hierarquias de memria, denominado
gerenciador de memria. Sua funo manter o controle de quais partes da memria esto em uso
e quais no esto, alocando memria aos processos quando precisam e liberando a memria quando
os processos terminam.

6.3.2.1 Monoprogramao

Quando se utiliza o esquema mais simples de gerenciamento de memria, a mesma compartilhada


entre o programa e o Sistema Operacional, e somente um programa executado por vez.
To logo um usurio tecle um comando, o Sistema Operacional carrega o programa solicitado do
disco na memria e o executa. Quando o processo finaliza, o Sistema Operacional espera por um
novo comando. Ao receber um novo comando, carregar o novo programa na memria, no espao de
endereamento ocupado pelo programa anterior.

Nota
Os antigos jogos do MS-DOS funcionavam assim. Quando um jogo era iniciado, nenhum
outro aplicativo poderia ser executado. O jogo tinha exclusividade de acesso a toda memria
do usurio. Para acionar outro programa era necessrio sair do jogo.

6.3.2.2 Multiprogramao

A maioria dos sistemas modernos permite a multiprogramao, onde mltiplos processos estejam em
execuo simultnea, coexistindo na memria principal, atravs do particionamento da memria entre
os processos. Das tcnicas de compartilhamento e gerenciamento desta memria a mais utilizada nos
microcomputadores a Memria Virtual.
Introduo Computao 86 / 130

6.3.2.3 Memria Virtual

O conceito bsico da Memria Virtual que um programa pode est com sua parte ativa em me-
mria e o restante em disco, por exemplo, um programa com 1 GB de memria pode rodar em um
computador de 512 MB de memria, sendo parte do programa dinamicamente carregado em memria
de acordo com a necessidade de execuo.
Na multiprogramao vrios programas podem ter pedaos ativos deles em memria, enquanto o resto
se encontra em disco. Ficando como responsabilidade do Sistema Operacional o controle de indicar
que programas devem ficar na memria e quais devem ficar em disco, chaveando estes programas a
medida que forem sendo exigidos pelo usurio.

Nota
Por isso lento alternar entre aplicativos quando temos vrios aplicativos abertos, pois os
outros provavelmente estaro na memria virtual. Para acessar esses aplicativos o SO ter
que salvar o aplicativo atual no disco, liberando espao na memria principal, e carregar o
aplicativo selecionado da memria virtual para a memria principal, restaurando seu estado
anterior.

6.3.3 Entrada/Sada (E/S)

O Sistema Operacional deve controlar todos os dispositivos de E/S de um computador. Deve emitir
comandos para os dispositivos, interceptar interrupes e tratar os erros, deve tambm fornecer uma
interface simples e fcil de usar, na medida do possvel, esta interface deveria ser a mesma para todos
os dispositivos. Ou seja, para o usurio ler dados de um arquivo ou de um dispositivo de rede as
chamadas ao sistema so iguais, mudando apenas os parmetros de entrada.

Interrupo
Uma interrupo um sinal de um dispositivo que tipicamente resulta em uma troca de
contexto, isto , o processador para de fazer o que est fazendo para atender o dispositivo
que pediu a interrupo. Para saber mais consulte: http://pt.wikipedia.org/wiki/Interrupes

6.3.3.1 Dispositivos de E/S

Os dispositivos de E/S podem ser de modo genrico, divididos em duas categorias:

Dispositivos de blocos
Um dispositivo de bloco aquele que armazena informao em blocos de tamanho fixo, cada
um com seu prprio endereo. Os tamanhos de blocos variam de 512 bytes a 32.768 bytes. A
propriedade essencial de um dispositivo de blocos que cada bloco pode ser lido ou escrito
independente de todos os outros. Discos so dispositivos de blocos mais comuns.

Dispositivos de caractere
Envia ou recebe um fluxo de caracteres, sem considerar qualquer estrutura de blocos. Ele no
enderevel e no dispe de qualquer operao de posicionamento. Impressoras, teclado,
interface de rede, mouses e a maior parte de outros dispositivos (diferentes dos discos) so
considerados dispositivos de caractere.
Introduo Computao 87 / 130

6.3.4 Sistema de Arquivo

Um problema em manter a informao dentro do espao de endereamento do processo quando o


mesmo termina, e sua informao perdida. Em muitas aplicaes a informao precisa ficar retida
por semanas, meses ou at para sempre.
A soluo usual para esse problema armazenar a informao em disco, em unidades chamadas ar-
quivos. Chamadas ao sistema so obviamente necessrias para criar, remover, ler e escrever arquivos.1
Antes que possa ser lido, um arquivo deve ser localizado no disco, aberto e depois de lido, fechado.
Desse modo, chamadas ao sistema so fornecidas para realizar estas tarefas.
Para ter um local para guardar os arquivos, a maioria dos Sistemas Operacionais fornece o conceito
de diretrio (ou pasta) como um modo de agrupar arquivos. So necessrias chamadas ao sistema
para criar e remover diretrios. So tambm fornecidas chamadas para colocar um arquivo em um
diretrio e remov-los de l. Entrada para diretrios tambm podem ser outros diretrios, formando
uma hierarquia de diretrios como ilustrado na Figura 6.5 [87].

Figura 6.5: Sistema de Arquivos de um computador pessoal.

Os sistemas de arquivos tambm so responsveis por controlar as permisses de acessos aos ar-
quivos e diretrios. Atravs dele possveis especificar os usurios e grupos de usurios com seus
respectivos direitos de acesso para cada arquivo ou diretrio. Os direitos de acesso so: somente
leitura, leitura e escrita ou sem acesso.

Nota
Se um usurio no possui permisso de leitura para um determinado arquivo ele no poder
manipul-lo.

1Algum poderia pensar que a soluo de armazenamento seria banco de dados ao invs de arquivos, no entanto, os
bancos de dados utilizam arquivos internamente.
Introduo Computao 88 / 130

6.4 Contedos complementares

6.4.1 Evoluo dos Sistemas Operacionais

A histria dos Sistemas Operacionais est diretamente ligada a arquitetura dos computadores em que
os mesmos iriam executar. Nesta seo iremos abordar alguns exemplos desta evoluo casada entre
o hardware e o software.

6.4.1.1 Computadores a Vcuo (1945-1955)

Durante a segunda guerra mundial uma acelerao na evoluo dos computadores ocorreu devido
necessidade de aplicaes que pudessem quebrar a codificao das mensagens dos inimigos.
Neste perodo alguns pesquisadores como John Von Newman em Princeton, Konrad Zuse na Ale-
manha e Howard Aiken em Harvad construram dispositivos capazes de computar atravs de tubos a
vcuo, sendo estes equipamentos grandes o bastante para ocupar salas inteiras.
Nesta gerao as instrues eram dadas diretamente em cdigo de mquina. No havia linguagem
de programao (nem mesmo linguagem de montagem). E os Sistemas Operacionais no tinham
qualquer funcionalidade, ou seja, no existiam.

6.4.1.2 Transistores e Sistemas em Lote (1955-1965)

Com o surgimento dos transistores, os computadores se tornaram confiveis e passaram a ser comer-
cializados, isto em meados da dcada de 50.
O computador passou a ter mais clara a separao dos papeis de seus atores: os projetistas do compu-
tador, programadores e os operadores da mquina. Antes estes papeis eram realizados pelos mesmos
desbravadores da Computao.
Para executar um programa, o programador desenvolvia seu algoritmo e entregava o carto contendo
seu cdigo ao operador. O operador era responsvel por entrar com o carto no computador e acionar
sua computao, ao final, a sada era impressa e o resultado entregue de volta ao programador.
Como os computadores iniciais eram muito caros, uma empresa compartilhava seus diversos proces-
sos em uma nica mquina, para isso, desenvolveu-se o conceito de sistema em lote.
O sistema em lote trabalhava com fitas magnticas que possuam diversos programas a serem exe-
cutados em sequencia. Um programa especial (ancestral do Sistema Operacional) carregava cada
programa da fita, executava o programa e enviava sua sada para a impressora. Aps o encerramento
deste programa o sistema configurava a prxima atividade para entrar em execuo. Este ciclo se
repetia at acabarem todas as atividades do lote.

6.4.1.3 Circuitos Integrados e Multiprogramao (1965-1980)

No incio da dcada de 60, os computadores passaram a ter duas utilizaes no mercado: os computa-
dores cientficos de larga escala para a cincia e a engenharia e os computadores comerciais adotados
por bancos, companhias de seguro e departamentos de recursos humanos.
O principal responsvel pela sua popularizao foi a adoo da tecnologia de Circuitos Integrados
que diminuiu o tamanho e o preo dos computadores. O IBM 360 foi o principal computador adotado
pelos dois files do mercado.
Introduo Computao 89 / 130

A principal mudana para os Sistemas Operacionais foi a criao da Multiprogramao, permitindo


que vrios programas pudessem compartilhar a memria principal ao mesmo tempo, cada uma com
seu espao reservado na memria, compartilhamento do espao (Figura 6.6 [89](a)), podendo estas
atividades serem executadas ao mesmo tempo.

Figura 6.6: Multiprogramao em um Sistema Operacional, tipos de compartilhamento dos recursos


do computador.

Entretanto os computadores desta poca no tinham mais de um ncleo de processamento (processa-


dor), logo era de responsabilidade do Sistema Operacional, dividir o uso do nico processador com
os diversos programas em execuo durante pequenas fraes de tempo, compartilhamento do tempo
(Figura 6.6 [89](b)).

6.4.1.4 Computadores Pessoais (1980-1995)

Com o advento dos minicomputadores na dcada de 80, o computador passou a ser usado na vida
privada das pessoas, passou-se a comprar computadores como se comprava vdeo cassete, surgindo
assim o conceito de Computador Pessoal (Personal Computer - PC).
A popularizao do computador se deu pelas interfaces grficas propostas pelos Sistemas Operacio-
nais, permitindo que leigos da rea pudessem manipular suas aplicaes pessoais, sem o auxlio dos
antigos operados de mquina.
Os principais Sistemas operacionais da poca foram o MS-DOS, precursor do Windows da Microsoft,
o Unix, base para as diversas distribuies do Linux, Sistema Operacional aberto ao pblico (podendo
usa-lo e modificar seu cdigo) e o Mac OS, sistema criado pela Apple que trouxe a revoluo na
Interface Grfica, adotado at hoje nos Sistemas Operacionais modernos.
No final da dcada de 80, comeou-se a criar Sistemas Operacionais para manipular computadores
interligados por redes de comunicao, chamados Sistemas Operacionais de Rede ou de Sistemas
Distribudos. Nele o usurio passou a controlar diversos computadores ao mesmo tempo, podendo
at se logar em um computador remoto, localizado a quilmetros de distncia, e controla-lo como se
estivesse usando seu teclado ou mouse local.
Introduo Computao 90 / 130

6.4.2 A Guerra dos Sistemas Operacionais

Na dcada de 70 dois jovens estudantes tiveram vises distintas sobre o futuro dos computadores,
na poca dominada por grandes computadores da poderosa IBM. Seus nomes Steven Jobs e Bill
Gates. O primeiro entendeu que o computador deveria ser usado por pessoas comuns para auxili-los
em tarefas do trabalho e de casa, criando assim o conceito de Computador Pessoal, materializado
pelo lanamento do Apple 2 no ano de 1977, que passou a ser o nome de sua empresa, a atual
gigante Apple. Sua proposta era ter controle total sobre o desenvolvimento do computador, sendo
responsvel pelo projeto do hardware e do software. Inicialmente o design de seus produtos fizeram
muito sucesso e a interface grfica de seu sistema operacional (Mac OS), adota da empresa Xerox,
foi to revolucionria que grupos de usurios passaram a se intitular fs dos produtos e seu mentor o
profeta da revoluo da Computao que iria livrar o mundo da opresso dos grandes computadores
da IBM.
O segundo criou a Microsoft, e tinha uma viso mais voltada para o software, o seu Sistema Opera-
cional, o Windows, foi pensado para funcionar em qualquer hardware, fato que diminuiu a qualidade
do mesmo. Entretanto aliado funcionalidade da interface grfica, copiado dos produtos da Apple, a
um conjunto de aplicaes muito funcionais nas empresas e em trabalhos domsticos como o Word,
Excel, Powerpoint e etc (Killed Applications), o Sistema Operacional dos computadores comerciais
por muito tempo passou a ser sinnimo de Windows. Na dcada de 90 a Microsoft se torna a maior
empresa de informtica do mundo, tornando seu dono o homem mais rico do planeta. Nada mal para
um estudante pobre que s vendia software.
A disputa entre Jobs e Gates tinha se tornada pblica, e na dcada de 90 a aposta total no software
parecia ter sido declarada como campe. Steven Jobs fora demitido da sua prpria empresa e chegou
a trabalhar no ramo da animao, tendo como frutos a empresa Pixel, hoje um renomado estdio de
desenhos animados, criadora do famoso desenho Toy Story.
No final da dcada de 90 Jobs retorna a Apple, e com sua capacidade de inovao e a busca constante
pela perfeio no design de seus produtos sempre pensando na interface com o usurio, a Apple lana
em srie novos produtos revolucionrios, o iPod, iPhone e iPad, alm de uma srie de computadores
pessoais e seus notebooks sempre elegantes e modernos. A ideia de ter o controle sobre o projeto do
hardware influenciando o projeto do software permitiu que na primeira dcada do sculo XXI a Apple
tomasse o posto de maior empresa de informtica da Microsoft, chegando em 2012 a valer o dobro
da concorrente. O iPod (tocador de msica em mp3) foi o equipamento eletrnico mais vendido da
histria, desbancando o posto do Walkman da Sony. O tablet iPad com seus jogos, aplicativos, design
e usabilidade tem conquistando um mercado que era exclusivo dos computadores.
Introduo Computao 91 / 130

Agora sem o comando de Gates a Microsoft quer voltar a ser a empresa inovadora de antes, mas para
isso tem que percorrer o caminho j trilhado por suas concorrentes. Em 2012 a Microsoft lanou
seu primeiro computador, chamado Surface, um hbrido de notebook e tablet e para controlar seu
hardware foi desenvolvido um novo Sistema Operacional, o Windows 8, com boa aparncia mas
com a velha obsesso da Microsoft de colocar seus softwares para serem compatveis com vrios
hardwares, logo o Windows 8 foi adaptado para telas de toque e computadores com teclado e mouse,
o que leva o usurio a confuses de navegabilidade.
O importante que nesta briga ganham os usurios, com novas ferramentas mais amigveis e novas
funcionalidade para os dispositivos que um dia serviam apenas para clculos cientficos ou contabili-
dades empresariais.

6.5 Recapitulando

Neste captulo introduzimos o conceito de Sistema Operacional, descrevendo suas duas principais
funes paras os programadores de aplicaes: Extenso da Mquina e Gerenciamento dos Recursos
da mquina. Analisamos a evoluo dos Sistemas Operacionais na histria, ligados a evoluo da ar-
quitetura dos computadores a eles associados e ainda identificamos os tipos de Sistemas Operacionais
baseado nas necessidades de cada arquitetura.
Por fim, descrevemos os principais conceitos de um Sistema Operacional na viso de seus usurios,
estes conceitos so: Processos, Thread, seus estados e transies; Gerenciamento de Memria e
Sistemas de Arquivos.

6.6 Atividades

1. Quais as principais funes de um Sistema Operacional? Para quem se destinam estas funes?
2. Descreva o que um Processo. Quais seus possveis estados? Quais so as transies entre
estes estados?
3. Descreva trs tipos de Sistemas Operacionais, destacando suas principais funes para a arqui-
tetura do computador que o mesmo executa.
4. Durante a programao de uma aplicao de usurio, para que serve o uso de chamadas de
sistema (system calls)?
5. Como o Sistema Operacional abstrai o uso dos dispositivos de E/S? Quais so os dois tipos de
dispositivos de E/S manipulados pelo Sistema Operacional?
6. Qual a funo do Sistema de Arquivo no Sistema Operacional?

Feedback sobre o captulo


Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Acesse https://github.com/edusantana/introducao-a-computacao-livro/issues/new para reali-
zar seu feedback. Lembre-se de incluir na mensagem a seo, captulo (cap6) e a verso do
livro (v1.1.2) alvo de sua contribuio. Voc receber notificaes sobre os encaminhamen-
tos que sero dados a partir do seu feedback. Para compreender melhor como feedbacks
funcionam consulte o guia do curso.
Introduo Computao 92 / 130

Captulo 7

Redes de Computadores e Internet

Sumrio
7.1 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.1.1 O que a Internet? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.1.2 Protocolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.2 Tecnologias de Acesso e Meios de Comunicao . . . . . . . . . . . . . . . . . . 96
7.2.1 Tecnologias de Acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.2.2 Acesso residencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.2.3 Acesso corporativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.2.4 Acesso sem fio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.2.5 Meios de Comunicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.2.5.1 Fio de Par Tranado . . . . . . . . . . . . . . . . . . . . . . . . 98
7.2.5.2 Cabo Coaxial . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.2.5.3 Cabo de Fibra ptica . . . . . . . . . . . . . . . . . . . . . . . 99
7.2.5.4 Conexes Sem Fio . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.3 Topologia da Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.3.1 Barramento Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.3.2 Estrela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.3.3 Anel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.4 Camadas de protocolos e seus servios . . . . . . . . . . . . . . . . . . . . . . . 101
7.4.1 O Modelo OSI da ISO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.4.1.1 Nvel Fsico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.4.1.2 Nvel de Enlace . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.4.1.3 Nvel de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.4.1.4 Nvel de Transporte . . . . . . . . . . . . . . . . . . . . . . . . 103
7.4.1.5 Nvel de Sesso . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.4.1.6 Nvel de Apresentao . . . . . . . . . . . . . . . . . . . . . . . 104
7.4.1.7 Nvel de Aplicao . . . . . . . . . . . . . . . . . . . . . . . . 104
7.4.2 Arquitetura da Internet TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . 104
Introduo Computao 93 / 130

7.4.2.1 Nvel de aplicao . . . . . . . . . . . . . . . . . . . . . . . . . 105


7.4.2.2 Nvel de Transporte . . . . . . . . . . . . . . . . . . . . . . . . 105
7.4.2.3 Nvel de Inter-Rede . . . . . . . . . . . . . . . . . . . . . . . . 106
7.4.2.4 Nvel de Interface de Rede . . . . . . . . . . . . . . . . . . . . 106
7.5 Contedos complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.5.1 Prof. Leonard Kleinrock . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.6 Prtica escolar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.6.1 Comunicao em rede na sala de aula . . . . . . . . . . . . . . . . . . . . 107
7.7 Prticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.7.1 Traceroute: Investigando as rotas na internet . . . . . . . . . . . . . . . . 109
7.7.2 Wireskark: Observando mensagens numa rede . . . . . . . . . . . . . . . 109
7.8 Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.9 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:

Apresentar a utilidade das redes de computadores


Apresentar a rede mundial de computadores, a Internet
Apresentar os componentes de hardware e software que compem as redes de compu-
tadores
Introduzir o conceito de protocolos de redes
Apresentar alguns servios da Internet

Imaginem um computador sem acesso aos recursos da Internet. Os tablets da moda seriam apenas
leitores digitais, os smartphones seriam apenas telefones iguais aos orelhes da esquina. A Internet
d vida ao trazer informaes, diverso, servios entre outros, de locais remotos em fraes de
segundos para uma mquina cujo objetivo original calcular.
A possibilidade de conectar vrios computadores resulta em tantos benefcios que se tornou uma
das reas de maior crescimento no mercado de microcomputadores. Uma rede de computadores
formada por um conjunto de mdulos processadores capazes de trocar informaes e compartilhar
recursos interligados por um sistema de comunicao.
Estes mdulos processadores (computadores) comunicam-se de duas maneiras importantes: por meio
de modens e de placas de redes. Os modens permitem que os computadores usem linhas telefni-
cas ou conexes celulares para trocarem dados, ao passo que as redes conectam os computadores
diretamente, seja por intermdio de fios especiais ou de alguma forma de transmisso sem fio.
Nas empresas, universidades, escolas e em muitos tipos de organizao, as redes de computadores de
todos os tipos oferecem tremendos benefcios:

Compartilhamento de informao
vrios funcionrios precisam acessar os mesmos dados simultaneamente. Aqui, entra a questo
de integridade dos dados, e os funcionrios mantm cpias separadas em seus discos pessoais,
e haver um problema na atualizao dos mesmos, gerando inconsistncia nos dados.
Introduo Computao 94 / 130

Compartilhamento de recursos
talvez o maior incentivo para as empresas pequenas ligarem seus computadores em rede seja
o compartilhamento de dispositivos perifricos, especialmente os de custo elevado, que podem
ser utilizados ocasionalmente por cada funcionrio individualmente.

Prover comunicao entre pessoas


uma das principais evolues geradas pelas redes de computador est na rea das comunica-
es pessoais, atravs de inmeras aplicaes as distncias diminuram, tornando muito mais
acessveis maioria da populao, a exemplo do email, redes sociais, bate-papo e conferncia
de udio e vdeo.

Neste captulo iremos abordar os princpios bsicos das redes de computador e a famosa Internet.

7.1 Internet

A Internet caiu no domnio pblico em meados da dcada de 1990. A taxa de crescimento de sites e
usurios pode ser descrita como algo sem precedentes na histria das mdias de comunicao.
Mas o efeito sobre a vida das pessoas , e ser ainda mais impressionante. O comrcio eletrnico est
crescendo. Pessoas atarefadas podem fazer seu supermercado pela tela de um navegador (browser).
Segundo algumas estimativas, as tecnologias da informao e o desenvolvimento baseado na Internet
foram responsveis por mais da metade do crescimento econmico dos Estados Unidos na dcada de
90.
A principal caracterstica da Internet trazer para si (convergncia) funes e atividades que estavam
consolidadas por outras mdias ou sistemas, como por exemplo, o fato do correio ter deixado de ser
usado como mecanismo de comunicao pessoal, j que mais simples a utilizao do email. As
transaes bancrias j so efetuadas, em grande parte, na Internet.
As operadoras de telefone tentam impedir a popularizao do VOIP (voz pela internet), pois iriam
prejudicar seus lucros, uma vez que os usurios poderiam telefonar entre si sem custos adicionais,
pagando somente a taxa fixa do acesso a internet. E a prxima mdia nos olhares da Internet a TV.
Certamente, o futuro da TV no est no VHF ou UHF (sinais de broadcast), mas sim em uma TV
personalizada e acessvel pelo computador, utilizando o IP (IPTV) como protocolo de comunicao.

7.1.1 O que a Internet?

Podemos defini-la como uma rede mundial de computadores, que interconecta milhes de equipa-
mentos computacionais. Entretanto, atualmente dispositivos como smartphones, tablets, geladeiras,
carros, impressoras, entre outros, se conectam Internet, tirando um pouco a corretude deste termo
redes de computadores. Sendo assim, um termo mais correto para os dispositivos da Internet seria
sistemas finais ou hospedeiros.
Os sistemas finais incluem os clientes de algum servio, ou os servidores deste servio que se inter-
ligam por meios de acesso de diversas tecnologias, a exemplo do cabo, fibra tica e rdio, sendo cada
uma delas diferente na velocidade de transmisso, que tem como unidade bsica os bits por segundo.
Seria impossvel que cada sistema final se ligasse a todos os outros sistemas finais atravs de enlaces
individuais. At 2003 existiam 233 milhes de sistemas finais, imaginem o nmero de possveis
ligaes entre eles.
Introduo Computao 95 / 130

Nota
Nas antigas centrais telefnicas analgicas, quando um usurio telefonava para outro, as
centrais conectavam os circuitos intermedirios entre os dois usurios para estabelecer a
comunicao. Voc pode imaginar que se formava um grande fio (um enlace individual)
ligando os dois usurios, que se mantinha reservado para eles durante toda a realizao
da ligao (inclusive nos momentos de silncio, onde no h informao til sendo enviada).
Nenhum outro usurio tinha acesso linha enquanto eles estivessem ocupando-a.
Nas centrais digitais as vozes so convertidas em bits e enviados em pacotes (conjunto de
bits). Um enlace possibilita transmitir pacotes de usurios diferentes, possibilitando atender
mais usurios simultaneamente, sem degradar o servio de voz oferecido pela operadora.

Figura 7.1: Rede de sistemas finais interligado por ISPs.

Na internet, ao invez de interligar os sistemas finais de forma direta (como nas centrais telefnicas
analgicas), existem dispositivos computacionais intermedirios conhecidos como comutadores de
pacotes. Podemos observar esta interligao entre os dispositivos na Figura 7.1 [95], que respons-
vel por encaminhar mensagens recebidas em um enlace de entrada para outro enlace de sada que se
liga ao destino.
As mensagens enviadas na rede so chamadas de pacotes e os comutadores de pacotes so chamados
de roteadores (ou switches), que so dispositivos melhor elaborados com algoritmos especficos para
criao de rotas durante a comunicao de pacotes em uma rede. A rota ou caminho, um conjunto
de enlaces de acesso entre o sistema final emissor do pacote e o sistema final receptor. Vrios pacotes
de distintas rotas podem passar pelo mesmo comutador de pacotes ao mesmo tempo devido tcnica
adotada pela Internet de comutao de pacotes desenvolvida na dcada de 70.
Todo sistema final precisa de um provedor de acesso Internet, chamado Provedor de Servio de
Internet (Internet Service Provider - ISP), que faz o papel de primeiro comutador de seus pacotes.
Existem vrios tipos de ISPs, os residenciais como IG e provedores locais de TV a cabo ou rdio,
ISPs de universidade pblicas, no Brasil provido pela Rede Nacional de Pesquisa (RNP) entre outros.
Introduo Computao 96 / 130

A Figura 7.1 [95] traz uma possvel configurao de ISPs e seus sistemas finais interligados por
enlaces de acesso e concentrados pelos comutadores de pacotes.
Cada ISP gerenciado de forma independente, executa as regras do protocolo IP obedecendo con-
venes na atribuio de endereo IP e nome de cada sistema final. Tanto os sistemas finais quanto
os comutadores de pacotes devem seguir os protocolos (Seo 7.1.2 [96]) da Internet para controlar
o envio e recebimento dos pacotes. O conjunto de protocolos TCP/IP so os mais importantes da In-
ternet, sendo o protocolo IP responsvel pelo funcionamento do encaminhamento dos pacotes pelos
roteadores atravs do tratamento dos endereos de cada sistema final conectado na rede.

7.1.2 Protocolo

Computadores, placas de redes, fios de cobre, roteadores, todos so dispositivos fsicos que compem
uma rede, entretanto, igual ao corpo humano, estes dispositivos precisam de uma conscincia para
torn-los teis. Podemos chamar esta conscincia de protocolos de rede, ou protocolos de Internet.
Kurose define um protocolo como:

Um protocolo define o formato e a ordem das mensagens trocadas entre duas ou mais
entidades comunicantes, bem como as aes realizadas na transmisso e/ou recebimento
de uma mensagem ou outro evento.

Todas as atividades na rede que envolvam duas entidades comunicantes (hospedeiros e/ou comuta-
dores de pacotes) remotos so governadas por um protocolo. Para a comunicao de uma sequncia
de bits atravs de um fio de cobre, entre duas placas de rede contidas em dois computadores que se
comunicam, h a necessidade da implementao de protocolos de comunicao em seus hardwares,
permitindo assim a codificao/decodificao da informao durante a transmisso no meio fsico.
Existem diversos outros protocolos com funes distintas, protocolos de controle de congestiona-
mento que controlam a taxa com que os pacotes so transmitidos, evitando assim o congestionamento
nos comutadores de pacotes. Os protocolos contidos nos roteadores determinam as rotas de um pacote
de sua fonte a seu destino.
Alguns protocolos so simples e diretos enquanto outros possuem uma complexidade devido a vrios
possveis estados em que a comunicao pode se encontrar. A Internet e as redes de computadores
fazem uso intenso de protocolos com diferentes tarefas durante a comunicao, dando vida aos
equipamentos nelas contidos.

7.2 Tecnologias de Acesso e Meios de Comunicao

7.2.1 Tecnologias de Acesso

As redes de acesso so a infraestrutura necessria para conectar os hospedeiros clientes ao seu pri-
meiro roteador, denominado roteador de borda, permitindo assim que estes sistemas finais possam
se comunicar com outros sistemas finais conectados na rede.

7.2.2 Acesso residencial

A rede responsvel pelo acesso de pessoas em suas casas Internet, a tecnologia que a popularizou
nos primrdios do acesso residencial foi o ((modem discado)), dispositivo que modula e demodula
Introduo Computao 97 / 130

informaes binrias atravs de uma linha telefnica analgica, que utiliza o mesmo meio de acesso
que o telefone residencial, sendo muito inconveniente devido ao uso no simultneo do telefone, logo,
a linha fica ocupada durante a conexo, alm do alto custo cobrado por minuto como se fosse uma
ligao comum. As ISPs provedores residenciais conseguiam devido qualidade do fio de telefone
(par tranado) uma velocidade de transmisso no mximo de 56kbps (kilobits por segundo).
A tecnologia conhecida como banda larga, trouxe mais velocidade transmisso e tirou a necessi-
dade de dedicar a linha telefnica durante a transmisso. Existem, basicamente, dois tipos de tecno-
logia de acesso residencial por banda larga: linha digital de assinante (digital subscriber line - DSL)
e cabo hbrido coaxial/fibra (hybrid fiber-coaxial cable - HFC). No mundo todo, desde 2003, estas
tecnologias esto se popularizando, sendo seu preo ainda um empecilho para muitas famlias no
Brasil.
A tecnologia DSL foi inicialmente provida por companhias telefnicas e depois outras empresas se
especializaram neste servio (por exemplo, GVT ou Oi Brasil Telecom). O DSL tambm utiliza
um modem para sua transmisso e tambm aproveita a linha telefnica j existente, entretanto, por
restringir a distncia ente o equipamento do cliente e seu ISP de acesso, permite velocidades mais
altas de transmisso. As taxas de transmisso so assimtricas nas duas direes, sendo a velocidade
maior para as informaes que chegam no cliente e mais lentas para a transmisso do cliente ao
ISP. Esta abordagem possvel, pois a maioria dos clientes so consumidores de informaes e no
produtores.
Com estas duas abordagens a proximidade do cliente ao ISP e assimetria de transmisso, o DSL pode
chegar a 10 Mbps do ISP ao seu cliente e de 1 Mbps no sentido inverso.

7.2.3 Acesso corporativo

Empresas e universidades utilizam redes locais (LAN) interligando os sistemas finais a um roteador
de borda. A principal tecnologia para redes LAN o Ethernet que opera em 10Mbps, 100Mbps,
1Gbps e at 10 Gbps. A conexo dos sistemas finais se d por pares de fios de cobre tranados ou via
cabo coaxial.
de responsabilidade dos roteadores de borda o roteamento dos pacotes que tenham destino hosts
finais externos instituio.

7.2.4 Acesso sem fio

As tecnologias de rede sem fio (wireless) permitem a conexo de dispositivos eletrnicos sem o uso
de cabos. As distncias variam de acordo com a tecnologia empregada e a potncia dos dispositivos.
As redes sem fio usam ondas de rdio para transmisso dos sinais. A tecnologia padronizada pelo
IEEE - Institute of Electrical and Electronics Engineers, uma associao tcnica de profissionais de
Engenharia Eltrica e Eletrnica dos Estados Unidos com membros de todo o mundo sob a identifi-
cao 802.11. Os equipamentos certificados de acordo com esta norma geralmente tem o selo Wi-Fi,
que uma marca registrada da Wi-Fi Alliance, associao de fabricantes. No Brasil os padres so
validados pela Anatel, que tambm homologa os equipamentos para uso no pas.
Os padres IEEE 802.11 so identificados por letras e cada um deles define como as informaes
so codificadas para transmisso entre os equipamentos, as frequncias e canais disponveis para
uso, e as velocidades de transmisso possveis. O IEEE 802.11a, que trabalha com frequncia de
5 Ghz e possibilita uma velocidade de transmisso de at 54 Mbps, este padro no comum nos
equipamentos fabricados no pas; IEEE 802.11g, que trabalha com frequncia de 2,4 Ghz e possibilita
Introduo Computao 98 / 130

uma velocidade de transmisso de at 54 Mbps e o padro mais utilizado em equipamentos Wi-Fi;


o IEEE 802.11n, que tanto pode trabalhar a 2,4 Ghz como a 5 Ghz e possibilita, na configurao
mais comum, velocidades de transmisso de at 150 Mbps. Existe ainda o padro IEEE 802.11b, que
trabalha com frequncia de 2,4 Ghz e possibilita velocidades de transmisso de at 11 Mbps.
A infraestrutura da rede compreende equipamentos de controle e pontos de acesso (AP Access
Point). Os APs so equipamentos que transformam os dados transmitidos pela rede comum, cabeada,
em ondas de rdio. Ao contrrio dos equipamentos domsticos, os APs no possuem a funo de
roteador, o que permite que vrios equipamentos dispersos em uma instituio formem um nico
domnio de mobilidade. Esta caracterstica tcnica permite que seus usurios se movimentem dentro
das reas cobertas sem perda da conexo, como acontece com as redes de telefonia mvel.

7.2.5 Meios de Comunicao

Nota
Quando falamos sobre armazenamento de dados, o termo meio significa o meio de armaze-
namento usado, por exemplo, os discos e pen drive. Mas na comunicao, meio refere-se ao
fio, cabo e outros recursos usados pelos dados para viajar de sua origem para seu destino.

7.2.5.1 Fio de Par Tranado

O fio de par tranado, ilustrado na Figura 7.2 [98], consiste em dois fios de cobre, envolvidos indi-
vidualmente em plstico e depois entrelaados um em torno do outro. Ele comumente conhecido
como fio telefnico. Devido ao seu baixo custo e ampla disponibilidade, o fio telefnico foi logo
eleito o veculo de comunicao de dados no incio das redes pessoais. Seu principal problema a
alta interferncia a rudos eletromagnticos no meio.

Figura 7.2: Fio de Par Tranado

7.2.5.2 Cabo Coaxial

O cabo coaxial, ilustrado na Figura 7.3 [99], amplamente usado em TVs a cabo e h algum tempo
suplantou o fio de par tranado como meio de conexo. H dois condutores em um cabo coaxial. Um
deles um fio simples no centro do cabo, o outro uma blindagem que envolve o primeiro cabo com
um isolante no meio. Embora tenha o mesmo condutor do par tranado, o cabo coaxial, devido a sua
proteo, consegue transportar mais dados.
Introduo Computao 99 / 130

Figura 7.3: Cabo Coaxial

7.2.5.3 Cabo de Fibra ptica

um fino fio revestido internamente de vidro que transmite raios de luz em vez de frequncias el-
tricas (Figura 7.4 [99]). Como a luz viaja muito mais depressa do que a eletricidade, a velocidade de
transmisso atravs de fibras pticas muito maior que os meios antecessores de transmisso.

Figura 7.4: Fibra ptica

Um problema com a fibra o trajeto fsico do cabo, devido a sua parede interna ser composta de
pedaos de vidro, o mesmo no deve se curvar muito, evitando assim uma reflexo do sinal origem.
Outra vantagem da fibra ptica sua capacidade de isolamento a interferncias eletromagnticas, j
que a luz no sofre influncia das mesmas.

7.2.5.4 Conexes Sem Fio

Com a popularizao da comunicao de dados e a evoluo dos dispositivos mveis (celulares, no-
tebooks), houve um impulso na direo de meios mais flexveis, com isso, criou-se vrios tipos de
conexes para comunicao sem fio.
O meio utilizado neste tipo de conexo o ar, e diferente dos outros meios vistos, a comunicao
entre os computadores realizada competindo com outros usurios deste meio, a exemplo do rdio,
do telefone celular e etc. Por este motivo sua capacidade de transmisso limitada.
As micro-ondas, que so um tipo de ondas de rdio, so muito usadas quando h necessidade de enviar
dados para uma distncia de vrios quilmetros. Quando os elos de comunicao cobrem milhares de
quilmetros, os satlites de comunicao podem entrar em ao. Como ilustrado na Figura 7.5 [100],
os dados saem de um ponto da terra at o satlite e o mesmo repassa estes dados para outro ponto
remoto na superfcie da terra.
Introduo Computao 100 / 130

Figura 7.5: Transmisso Via Satlite

7.3 Topologia da Rede

Topologia de rede o layout fsico dos fios que conectam os ns da rede. H trs topologias comuns:
barramento linear, estrela e anel.

7.3.1 Barramento Linear

A rede em barramento linear, assim como o barramento do prprio computador, um veculo a qual
todos os ns e dispositivos perifricos da rede esto conectados entre si, como ilustrado na Figura 7.6
[100]. Os ns transmitem dados e esperam que eles no colidam com os dados transmitidos pelos
outros ns. Em caso de coliso, cada n espera um determinado tempo pequeno e aleatrio, e depois
tenta retransmitir os dados.
Apesar de ser uma das mais comuns, a topologia de barramento linear tem desvantagens inerentes.
A preveno e a correo das colises requerem implementaes de circuitos e software extra, e o
rompimento de uma conexo pode fazer cair toda a rede.

Bus ou
Barramento

Figura 7.6: Topologia de Barramento Linear

7.3.2 Estrela

A rede em topologia de estrela coloca um hub (concentrador de conexes de rede) no centro dos ns
da rede como ilustrado na Figura 7.7 [101].
Introduo Computao 101 / 130

Topologia
Estrela

Figura 7.7: Topologia Estrela

Os dados so encaminhados por meio do hub central para os pontos de destino. Esse esquema tem a
vantagem de que o hub monitora o trfego impedindo colises, e o rompimento de uma conexo no
afeta o restante da rede. Se voc perder o hub, porm, toda a rede cair.

7.3.3 Anel

A topologia de anel conecta os ns da rede em uma cadeia circular, cada n conectado ao n


seguinte, e o n final da cadeia conectado ao primeiro para fechar o anel. Esta topologia esta
ilustrada na Figura 7.8 [101].

Topologia
em Anel

Figura 7.8: Topologia em Anel

Com essa topologia, cada n examina os dados que esto sendo enviados pelo anel, e se os dados no
esto endereados ao n que os est examinando, eles so enviados ao n seguinte.
A implementao da comunicao de dados nesta topologia utiliza o conceito de token, quem possui
o token naquele momento o responsvel pela transmisso, impedindo com isso possveis colises.
Se uma das ligaes do anel cair, o sentido da comunicao pode ser invertido permitindo que a rede
permanea ativa.

7.4 Camadas de protocolos e seus servios

A arquitetura das redes de computador formada por nveis, interfaces e protocolos. Cada nvel
oferece um conjunto de servios atravs de uma interface ao nvel superior, usando funes realizadas
Introduo Computao 102 / 130

no prprio nvel e servios disponveis nos nveis inferiores.


Cada nvel deve ser pensado como um programa ou processo, implementado por hardware ou soft-
ware, que se comunica com o processo no nvel correspondente em outra mquina. Os dados transfe-
ridos em uma comunicao de um nvel no so enviados diretamente ao processo do mesmo nvel em
outra mquina, mas descem verticalmente atravs de cada nvel adjacente em sua mquina at o nvel
1 (nvel fsico, responsvel pela nica comunicao entre as estaes de fato), para depois subir atra-
vs de cada nvel adjacente na estao receptora at o nvel de destino. Esta forma de comunicao
entre nveis est ilustrada na Figura 7.9 [102].
Este mecanismo de comunicao conhecido como protocolo de nvel N, logo, o protocolo de nvel
N um conjunto de regras e formatos, atravs dos quais informaes ou dados do nvel N so trocados
entre as entidades do nvel N, localizados em sistemas distintos com o intuito de realizar as funes
que implementam os servios do nvel N.

7.4.1 O Modelo OSI da ISO

A ISO (Internation Organization for Standardization) uma organizao internacional fundada em


1946 que tem por objetivo a elaborao de padres internacionais. Existem 89 pases membros, sendo
o Brasil representado pela ABNT e os EUA pela ANSI.
O principal modelo para o desenvolvimento de padres para interconexo de sistemas o modelo
OSI (Open Systems Interconnection), que est descrito em um documento da ISO. O objetivo deste
modelo fornecer uma base comum que permita o desenvolvimento coordenado de padres para
interconexo de sistemas remotos.
O Modelo OSI possui sete nveis de protocolos, que so ilustrados na Figura 7.9 [102], e descritos
nas sees seguintes.

Figura 7.9: Nveis do Modelo OSI da ISO.


Introduo Computao 103 / 130

7.4.1.1 Nvel Fsico

O protocolo de nvel fsico dedica-se transmisso de uma cadeia de bits. Ao projetista desse pro-
tocolo cabe decidir como representar 0s e 1s, quantos microssegundos durar a transmisso de um
bit, como a transmisso ser iniciada e finalizada, bem como outros detalhes eltricos e mecnicos.

7.4.1.2 Nvel de Enlace

O objetivo deste nvel detectar e opcionalmente corrigir erros que por ventura ocorram no nvel
fsico. O nvel de enlace assim converte um canal de transmisso no confivel em um canal confivel
entre dois hospedeiros interligados por um enlace (meio fsico) para uso do nvel de rede.
Outra questo tratada pelo nvel de enlace como evitar que o transmissor envie ao receptor mais
dados do que este tem condies de processar. Esse problema evitado com um mecanismo de
controle de fluxo.

7.4.1.3 Nvel de Rede

O objetivo do nvel de rede fornecer uma independncia quanto as consideraes de chaveamento


e roteamento associados ao estabelecimento de conexes entre hospedeiros remotos na rede e a troca
de mensagens entre os hospedeiros em qualquer local dentro da rede.
Existem duas filosofias quanto ao servio fornecido neste nvel: datagramas e circuito virtual. No
servio datagrama (no orientado conexo) cada pacote (unidade de dados) no tem relao alguma
de passado ou futuro com qualquer outro pacote, devendo assim carregar de forma completa seu
endereo de destino.
No servio de circuito virtual (orientado conexo) necessrio que o transmissor primeiro envie um
pacote de estabelecimento de conexo. Cada conexo possui um identificador que ir marcar todos
os pacotes pertencentes a esta conexo.

7.4.1.4 Nvel de Transporte

No nvel de transporte a comunicao fim a fim, isto , entidade do nvel de transporte se comunica
com a entidade do nvel de transporte da mquina destino, fato que no ocorria nos outros nveis. At o
nvel de rede, o protocolo atuava em todos hospedeiros e comutadores de pacotes que se encontravam
no caminho entre a origem e o destino da mensagem.
O nvel de transporte realiza controle de fluxo da origem ao destino, podendo este fluxo passar
por diversos comutadores no caminho. Diferente do nvel de enlace que realiza o controle entre as
mquinas ligadas apenas no mesmo enlace.
Podemos ainda citar como funes o controle de sequncia de pacotes fim a fim, a deteco e recupe-
rao de erros de transmisso, a blocagem de mensagens e a multiplexao (controle do compartilha-
mento de uso) do acesso ao nvel de rede.

7.4.1.5 Nvel de Sesso

Os principais servios fornecidos pelo nvel de sesso so:


Introduo Computao 104 / 130

O gerenciamento de token
define a permisso a um dos ns onde a conexo foi estabelecida para comear a transmitir
dados, evitando assim concorrncia no dilogo.

O controle de dilogo
uma forma de interromper uma conversao por um instante de tempo qualquer e voltar este
dilogo do ponto interrompido.

O gerenciamento de atividade
pode garantir que atividades de maior prioridade executem sua atividade e no final a sesso ir
retornar a atividade interrompida do ponto em que se encontrava.

7.4.1.6 Nvel de Apresentao

Neste nvel so realizadas transformaes adequadas aos dados, por exemplo, compresso de textos,
criptografia, converso de padres de terminais e arquivos para padro de rede e vice-versa.
Este nvel precisa conhecer a representao da informao (sintaxe dos dados) no seu sistema local e
a representao no sistema de transmisso, podendo realizar as devidas converses, como, formatao
de dados e transformao de dados.

7.4.1.7 Nvel de Aplicao

Neste nvel so definidas funes de gerenciamento e mecanismos genricos que servem de suporte
construo de aplicaes distribudas. D suporte s chamadas de procedimentos remotos, ou seja,
para a aplicao que utiliza esta camada no far diferena onde o procedimento ser implementado,
o importante que a computao seja realizada e sua sada fornecida localmente.

7.4.2 Arquitetura da Internet TCP/IP

A arquitetura Internet TCP/IP d uma nfase toda especial interligao de diferentes tecnologias de
redes, pela simples constatao que no existe nenhuma tecnologia de rede que atenda s necessida-
des de todos os usurios da Internet. Esta arquitetura organizada em quatro camadas conceituais:
aplicao, transporte, inter-rede (do ingls inter-net) e interface de rede.
Introduo Computao 105 / 130

Modelo OSI Modelo TCP/IP


Aplicao
Aplicao
Apresentao
Sesso
Transporte Transporte
Rede Inter-rede

Enlace Interface de rede


Fsico

Figura 7.10: Comparao dos modelo OSI e TCP/IP

7.4.2.1 Nvel de aplicao

Neste nvel usurios utilizam aplicaes que interagem com o nvel de transporte para enviar e receber
dados. Abaixo algumas aplicaes disponveis na Internet TCP/IP:

File Transfer Protocol (FTP)


fornece o servio de transferncia de arquivos.
Hiper Text Transfer Protocol (HTTP)
fornece acesso a contedos web e recursos como arquivos de texto, fotos e etc. Protocolo
adotado pelo navegadores da WEB, rede de contedos interligados atravs de hipertextos.
Simple Mail Transfer Protocol (SMTP)
fornece um servio store-and-forward de mensagens de email.
Domain Name System
oferece um servio de mapeamento de nomes em endereos IP.

7.4.2.2 Nvel de Transporte

Permite a comunicao fim a fim entre as aplicaes. Existem dois protocolos usados neste nvel TCP
(Transport Control Protocol) e UDP (Datagram Protocol).

TCP
Se o protocolo for o TCP, os seguintes servios so fornecidos: controle de erro, controle de
fluxo, sequenciamento da entrega de pacotes e multiplexao do acesso a inter-rede, ou seja,
controle de acesso concorrente ao meio.
UDP
No UDP o servio mais simples, fornecendo apenas a multiplexao do acesso a inter-rede, ou
seja, as informaes de dois clientes que utilizam esta camada no tero seus dados misturados,
sendo responsabilidade da camada a entrega correta do dado a seu processo destinatrio dentro
do mesmo computador.
Introduo Computao 106 / 130

7.4.2.3 Nvel de Inter-Rede

Responsvel por enviar dados atravs da inter-rede desde a mquina origem at a mquina destino.
Cada pacote encapsulado em um datagrama IP (Internet Protocol) que define um endereo IP
para cada n de destino, este endereo funciona como um endereo residencial para os correios.
O protocolo IP possui ainda um algoritmo de roteamento que ser executado para determinar se o
datagrama pode ser entregue diretamente, ou se deve ser repassado a um gateway (mquina que liga
a rede atual com outras redes de diferentes tecnologias).

7.4.2.4 Nvel de Interface de Rede

A arquitetura Internet TCP/IP no faz nenhuma restrio s redes que so interligadas para formar a
inter-rede. Portanto qualquer tipo de rede pode ser ligada, bastando para isso que seja desenvolvida
uma interface que compatibilize a tecnologia especfica da rede com o protocolo IP. Essa compatibi-
lizao tarefa do nvel de interface de rede.

7.5 Contedos complementares

7.5.1 Prof. Leonard Kleinrock

Durante seu doutorado no Instituto de Tecnologia de Massachusets (MIT), o prof. Leonard Klein-
rock elaborou os princpios da comutao de pacotes, tecnologia bsica da Internet que substituiu a
comutao de circuitos, maciamente utilizada pelas empresas de telecomunicao da poca, para a
comunicao de dados digitais. Ele engenheiro eltrico, mestre e doutor em engenharia eltrica pelo
MIT.

Figura 7.11: Leonard Kleinrock diante do primeiro Interface Message Processor (IMP), precursor dos
roteadores de mensagens atuais.

No final de 1969, seu computador foi considerado o primeiro n de uma rede de computadores,
realizando um login entre a Universidade da Califrnia em Los Angeles e a Standford Research
Institute em Santa Brbara. Em entrevista, Leonard Kleinrock disse que diferente de pessoas como o
astronauta Neil Armstrong que tinha a noo histrica de seus feitos, dedicando tempo a criao de
frases de efeito, no caso de Armstrong ao pisar na lua falou Este um pequeno passo para o homem,
Introduo Computao 107 / 130

mas um grande salto para a humanidade, a primeira frase enviada entre dois computadores foi um
simples comando que fez o sistema remoto ser derrubado.
Na Figura 7.11 [106] podemos observar o prof. Leonard Kleinrock e o primeiro equipamento com-
putacional exclusivo para processar mensagens atravs da tecnologia de comutao de pacotes.

7.6 Prtica escolar

Nesta seo propomos uma prtica que pode ser utilizada em sala de aula para ensinar os conceitos
bsicos da internet.

7.6.1 Comunicao em rede na sala de aula

Proponha em sala ou com grupo de estudos uma atividade para estimular o conceito de protocolo
atravs da comunicao de mensagens. Com isto, vocs tero a oportunidade de executar as atividades
do roteador e dos hosts de origem e destino. Massificando suas funes, regras de comunicao,
problemas encontrados com o roteador, solues para problemas como ((falha na entrega)), pacotes
fora de ordem e etc.
Para esta atividade propomos a diviso da turma em grupos, que passamos a chamar de rede de
alunos. A Figura 7.12 [108] apresenta uma configurao com cinco redes cada uma contendo 5
alunos, sendo um intitulado roteador e identificado por R da sua rede e os outros quatro numerados
de 1-4 dentro da sua prpria rede. A quantidade de alunos em cada rede pode variar de acordo com o
tamanho da turma.
Como pode ser observado na Figura 7.12 [108] a comunicao entre as redes s pode ser feita entre
os alunos roteadores, pois estes devem ser os alunos que possuem o conhecimento dos outros alunos
roteadores. A regra de conhecimento dos roteadores pode ser variada: todos os roteadores conhecem
todos; apenas o roteador da rede C conhece os outros e os outros roteadores s conhecem o roteador
C, permitindo assim, complicar um pouco o esquema de criao de rotas das mensagens.
Introduo Computao 108 / 130

Figura 7.12: Redes de comunicao entre alunos.

Para trabalhar o conceito de protocolo das mensagens propomos a utilizao de cartes como o apre-
sentado na Figura 7.13 [108], trazendo no cabealho os dados a serem preenchidos pelos alunos emis-
sores de mensagens e tratados pelos alunos roteadores e receptores de mensagem. O carto proposto
traz os dados de endereo de origem e destino, numerao da mensagem e contedo da mensagem,
permitindo assim apresentar aos alunos os conceitos de criao de rotas, controle de recebimento
ordenado das mensagens e resposta da mensagem ao emissor.

Figura 7.13: Formato do pacote contendo a mensagem entre os alunos.


Introduo Computao 109 / 130

Procure variar a funo dos alunos durante a atividade, permitindo que todos tenham a chance de
realizar o papel de cada elemento nesta rede de comunicao. Proponha que os alunos resolvam os
seguintes problemas:

Roteador da rede B deixa de funcionar;

Chega um pacote ao destino com numerao superior esperada;

Chega um pacote com endereo de destino errado a um aluno no roteador;

Quero ter certeza que minha mensagem chegou.

7.7 Prticas

7.7.1 Traceroute: Investigando as rotas na internet

No Apndice C [121] h uma prtica para conhecer as rotas de pacotes trocados entre dois hosts.

7.7.2 Wireskark: Observando mensagens numa rede

No Apndice D [123] possvel encontrar uma prtica para observar as trocas de mensagens realiza-
das numa rede.

7.8 Recapitulando

Neste captulo abordamos os vrios componentes de hardware e software que compem uma rede de
computadores e em particular a Internet. Identificamos os sistemas finais da rede, suas aplicaes e
funes.
Fazendo analogias humanas, identificamos o que um protocolo e sua essencial utilidade para a
comunicao de dois computadores interligados por algum meio fsico de transmisso, ou interligados
por uma rede de computadores com diversas tecnologias distintas. Abordamos a arquitetura das redes,
descrevendo as camadas que a compem como: camada de redes, enlace, camada fsica, transporte e
etc. Examinamos a estrutura global da Internet e aprendemos que ela a rede das redes, compostas
de ISPs de nveis mais altos e mais baixos, permitindo assim sua expanso sem sobrecarga de toda a
rede.
Por fim, esperamos que voc leitor, tenha adquirido uma noo das peas que formam uma rede
de computadores e permitem que ns tenhamos informaes to ricas de tantos lugares remotos a
qualquer hora de forma to rpida.

7.9 Atividades

1. Quais os benefcios da instalao de redes de computadores na vida das pessoas?

2. Defina sistemas finais e hospedeiros.


Introduo Computao 110 / 130

3. Cite as tecnologias de acesso as redes de computador. Classifique as mesmas quanto ao acesso


residencial, corporativo e mvel.

4. Quais so as cinco camadas da pilha de protocolos da Internet? Quais as principais responsabi-


lidade de cada uma dessas camadas?

5. Sobre o uso das camadas da arquitetura TCP/IP durante o transporte de mensagem de um host
at outro host utilizando comutadores no caminho correto afirmar que:

a. Todas as camadas so processadas no host de origem, no host de destino, e no comutadores


e roteadores que esto no meio do caminho.
b. Todas as camadas so processadas no host de origem, no host de destino e nos roteadores,
as camadas de enlace so processadas em alguns comutadores no meio do caminho.
c. Todas as camadas so processadas no host de origem e no host de destino, as camadas
de enlace so processadas em alguns comutadores, e as camadas de enlace e de rede so
processadas em alguns comutadores (roteadores).
d. Todas as camadas so processadas no host de origem e no host de destino, somente as
camadas de enlace so processadas em alguns comutadores no meio do caminho.

Feedback sobre o captulo


Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Acesse https://github.com/edusantana/introducao-a-computacao-livro/issues/new para reali-
zar seu feedback. Lembre-se de incluir na mensagem a seo, captulo (cap7) e a verso do
livro (v1.1.2) alvo de sua contribuio. Voc receber notificaes sobre os encaminhamen-
tos que sero dados a partir do seu feedback. Para compreender melhor como feedbacks
funcionam consulte o guia do curso.
Introduo Computao 111 / 130

Captulo 8

Referncias

Sumrio
8.1 Referncias Bibliogrficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

8.1 Referncias Bibliogrficas

[1] BROOKSHEAR, J. Glenn. Computer Science, an Overview. Edio 10, editora Pe-
arson.

[2] BROOKSHEAR, J. Glenn. Cincia da Computao, uma viso abrangente. Edio


7, Editora Bookman.

[3] CORMEN T., LEISERSON C., RIVEST R., STEIN C., Algoritmos - Teoria e Pr-
tica, traduo da segunda edio [americana] Vandenberg D. de Souza. - Rio de
Janeiro : Elsevier, 2002

[4] KUROSE, J. F.; ROSS, K. W. Redes de Computadores e a Internet: uma nova abor-
dagem. Traduo de Arlete Simille Marques. So Paulo: Addison Wesley.

[5] SOARES, Luiz Fernando G.; SOUZA FILHO, Guido Lemos de; COLCHER, Sr-
gio. Redes de Computadores : das LANs, MANs E WANS s Redes ATM. 7. ed.,
rev. e ampl. Rio de Janeiro: Campus, 1995. 705 p. ISBN 8570019548

[6] TANENBAUM, Andrew S. Sistemas Operacionais Modernos. Editora: LTC.

[7] VELLOSO, Fernando de Castro - Informtica - Conceitos Bsicos. Editora - Cam-


pus - Rio de Janeiro
Introduo Computao 112 / 130

Apndice A

Lgica Binria e Portas Lgicas

Sumrio
A.1 Lgica Binria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
A.1.1 Operador NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
A.1.2 Operador AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
A.1.3 Operador OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
A.1.4 Portas lgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
A.2 Somador de 2 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

A.1 Lgica Binria

George Boole publicou a lgebra booleana (em 1854), sendo um sistema completo que permitia a
construo de modelos matemticos para o processamento computacional. O fascinante na lgica
booleana partir de trs operadores bsicos, que veremos a seguir, e construir Circuitos Lgicos
capazes de realizar as diversas operaes necessrias para um computador.
A seguir a descrio de cada um dos 3 operadores bsicos. A Figura A.1 [114] representa os valores da
tabela de valores (Tabela Verdade) dos operadores e a representao grfica, sendo tambm chamadas
de portas lgicas.

A.1.1 Operador NOT

O operador unrio NOT, negao binria, resulta no complemento do operando, ou seja, ser um bit 1
se o operando for 0, e ser 0 caso contrrio, conforme podemos confirmar pela tabela verdade, onde
A o bit de entrada e S a resposta, ou bit de sada.

Tabela A.1: Tabela verdade do NOT

A S = NOT A
0 1
1 0
Introduo Computao 113 / 130

A.1.2 Operador AND

O operador binrio AND, ou conjuno binria devolve um bit 1 sempre que ambos operandos sejam
1, conforme podemos confirmar pela tabela de verdade, onde A e B so bits de entrada e S o
bit-resposta, ou bit de sada.

Tabela A.2: Tabela verdade do AND

A B S = A AND B
0 0 0
0 1 0
1 0 0
1 1 1

A.1.3 Operador OR

O operador binrio OR, ou disjuno binria devolve um bit 1 sempre que pelo menos um dos ope-
randos seja 1, conforme podemos confirmar pela tabela de verdade, onde A e B so os bits de entrada
e S o bit-resposta, ou bit de sada.

Tabela A.3: Tabela verdade do OR

A B S = A OR B
0 0 0
0 1 1
1 0 1
1 1 1

A.1.4 Portas lgicas

A Figura A.1 [114] representa as operaes da lgica binria na notao grfica, de Portas Lgicas.
Introduo Computao 114 / 130

Figura A.1: Representao grfica dos operadores lgicos AND, OR e NOT, com seus valores de
entrada e sada.

A.2 Somador de 2 bits

No Captulo 3 [28], aprendemos sobre os sistemas de numerao, dando nfase ao sistema binrio,
sendo este o sistema adotado pelos computadores. Aprendemos como funciona a aritmtica binria,
soma, subtrao, representao negativa dos nmeros, entre outros. Na Seo A.1 [112] vimos a
lgica binria e seus trs comandos bsicos (AND, OR, NOT). Mas como um computador soma de
fato?
Primeiramente, precisamos abordar as portas lgicas, elas so a base para as outras operaes. A
construo de uma porta lgica, utiliza conhecimentos de circuitos eletrnicos formados por diodos,
resistncias, capacitores entre outros que so abordados em cursos avanados da Eletrnica Anal-
gica, entretanto, seu entendimento foge ao escopo deste livro.

Dica
Para melhores detalhes sobre portas lgicas visite: http://www.dcmm.puc-rio.br/cursos/-
eletronica/html/sld001.htm.

O importante agora sabermos que existem portas lgicas que seguem a lgica binria j apresentada
e que estas portas podem ser combinadas, formando os Circuitos Digitais. A Figura A.2 [115]
apresenta um Circuito Digital Somador de Dois Bits.
Introduo Computao 115 / 130

Figura A.2: Circuito Digital Somador de Dois Bits formado pelas portas lgicas bsicas (AND, OR,
NOT).

Propomos ao leitor, tentar acompanhar passo a passo o circuito digital proposto e entender como
possveis entradas binrias em A e B tero o resultado esperado nas sadas soma e carry. Em seus
testes utilize a Tabela A.4 [115], e se tiver alguma dvida sobre os valores da tabela, revisem a
operao de soma com dois bits (Seo 3.4.1 [37]), onde a sada soma representa o valor da soma na
unidade corrente e o carry representa o vai um da operao.

Tabela A.4: Tabela de valores da operao de Soma de Dois


Bits

A B soma carry (vai um)


0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Introduo Computao 116 / 130

Figura A.3: Vdeo sobre o Circuito Digital Somador de 2 Bits: http://youtu.be/E5yDNF2clQw


Introduo Computao 117 / 130

Apndice B

Usando os Softwares Bsicos

A ferramenta cc um ambiente completo para a compilao, montagem e ligao dos programas de


usurio desenvolvidos na linguagem C. Nesta prtica iremos identificar cada passo no processo de
transformar um cdigo de alto nvel (Linguagem C) em um arquivo binrio executvel.

Nota
O cc um compilador da GNU utilizado principalmente no sistem operacional Linux ou de
tipo Unix. Para execut-lo voc precisa abrir um terminal e escrever os comandos indicados
nesta prtica. Voc j deve conhec-lo da disciplina Introduo a Programao.

Nota
Lembre-se de que os cdigos fontes do livro esto disponveis para download e as intrues
de como baix-los esto em Baixando os cdigos fontes [ix].

Passo 1
Escreva em qualquer editor de texto os seguintes textos e salve com o nome sugerido para cada
arquivo:
Cdigo fonte code/tradutor/teste.h
//Soma nmeros
int soma(int op1, int op2);

//Subtrai numeros
int subtrai(int op1, int op2);

Cdigo fonte code/tradutor/teste.c


#include "teste.h"

int soma(int op1, int op2)


{
return op1 + op2;
}
Introduo Computao 118 / 130

int subtrai(int op1, int op2)


{
return op1 - op2;
}

Cdigo fonte code/tradutor/main.c


#include "teste.h"
#include <stdio.h>

int main(){
int a, b;
a = soma(2, 3);
printf("Soma = %d\n", a);
b = subtrai(4, 3);
printf("Subtrao = %d\n", b);
}

Passo 2
Usar o Compilador do cc. Ele ir processar cada arquivo .c e gerar um arquivo .s com o cdigo
Assembly respectivo.

Linguagem Fonte: Linguagem C


Linguagem Alvo: Assembly

Comando
cc -S main.c teste.c

Passo 3
Usar o montador da aplicao cc. Ele ir processar cada arquivo .s e gerar um arquivo .o com
o cdigo objeto respectivo.

Linguagem Fonte: Assembly


Linguagem Alvo: Cdigo Objeto

Comando
cc -c main.s teste.s
Os passos 2 e 3 geralmente so realizados juntos, para isso basta realizar o seguinte co-
mando: cc -c main.c teste.c . Gerando assim um arquivo com Cdigo Objeto
(.o) para cada arquivo .c, pulando o cdigo assembly (cdigo intermedirio).

Passo 4
Usar o ligador do cc. Ele ir processar todos os arquivos .o e lig-los em um nico arquivo
binrio executvel.

Linguagem Fonte: Cdigo Objeto


Linguagem Alvo: Cdigo Binrio (Executvel)

Comando
cc main.o teste.o -o exec
Introduo Computao 119 / 130

Nota
exec foi o nome dado ao arquivo executvel que ser gerado pelo ligador do cc,
logo, voc pode escolher qualquer outro nome.

Passo 5
Executar o Cdigo Executvel. No linux, para carregar um cdigo executvel e coloc-lo em
execuo basta seguir o seguinte comando:

Comando
./exec

Passo 6
Modificar o cdigo do arquivo teste.c. O propsito desta edio demonstrar o processo
de ligao (Seo 5.6 [72]).

E DITAR A IMPLEMENTAO DA FUNO SUBTRAI .


Trocar: return op1 -op2;
Por: return op1 + op2;

Nota
O contedo do arquivo teste.c ficar igual a:
#include "teste.h"

int soma(int op1, int op2)


{
return op1 + op2;
}

int subtrai(int op1, int op2)


{
return op1 + op2;
}

Passo 7
Compilar apenas o arquivo teste.c

Comando
cc -c teste.c

Passo 8
Ligar os cdigos objetos novamente.

Comando
cc main.o teste.o -o exec

Passo 9
Executar o novo Cdigo Executvel. Observar a diferena das execues.
Introduo Computao 120 / 130

Comando
./exec

Importante
Podemos observar a utilidade do software ligador, pois aps o Passo 6 no h necessi-
dade de recompilar todos os cdigos fonte, apenas o arquivo teste.c, gerando assim um
novo arquivo objeto teste.o que ser ligado ao arquivo main.o (arquivo no modificado)
formando o novo cdigo executvel exec.

Dica
Voc pode assistir esta prtica no seguinte vdeo:

Figura B.1: Prtica de softwares bsicos: http://youtu.be/dVL3XQFNY8o


Introduo Computao 121 / 130

Apndice C

Investigando a Internet

Sumrio
C.1 Usando a aplicao Traceroute . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Na ltima dcada do sculo XX, j com a Internet popularizada, surgiu o papel do hacker, um espe-
cialista em redes de computadores e suas aplicaes, permitindo ao mesmo configurar e gerenciar os
dispositivos remotamente. Este novo perfil passou a ser muito usado pelos filmes de Hollywood, como
profissionais do crime ou em defesa de causas em favor da humanidade. So inmeras as aplicaes
usadas pelos hackers, e no o objetivo deste livro apresent-los ao leitor. Entretanto, apresentaremos
uma ferramenta muito utilizada para descobrir rotas e atraso dos pacotes na rede, esta aplicao se
chama Traceroute.
O Traceroute um programa de diagnstico que pode ser executado por qualquer sistema final
da Internet. Quando o usurio especifica um nome de hospedeiro destino, o Traceroute no hos-
pedeiro origem, envia vrios pacotes especiais em direo quele destino. Cada roteador por vez
recebe este pacote especial e retorna o mesmo a origem, indicando seu nome e endereo e calculando
o tempo necessrio para alcanar o roteador.

Figura C.1: Sada da aplicao Traceroute.


Introduo Computao 122 / 130

Podemos observar a sada da aplicao Traceroute ilustrada na Figura C.1 [121]. Cada linha do
resultado tem seis colunas: a primeira coluna o nmero do roteador encontrado ao longo da rota; a
segunda coluna o nome do roteador; a terceira o endereo (formato xxx.xxx.xxx.xxx); as trs
ltimas so os atrasos de ida e volta do pacote durante trs tentativas. Ocorrendo perda de pacotes a
aplicao coloca um * no lugar do tempo de atraso.
No exemplo da Figura C.1 [121] h 17 roteadores entre a origem e o destino. Por exemplo, o rotador
3 se chama rt.jpa.bbn.ufpb.br, seu endereo ip 150.165.255.1 e os tempos de atraso
foram 7; 2 e 2 milissegundos.

C.1 Usando a aplicao Traceroute

Agora que aprendemos um pouco sobre a aplicao Traceroute, que tal tentarmos dar nossos
primeiros passos no mundo dos Hackers? Para isso, siga os passos indicados nesta prtica, analise os
resultados e responda algumas perguntas sugeridas.

Passo 1
Em um computador conectado Internet utilizando o Sistema Windows, clique em Iniciar >
executar. Digite cmd na caixa de dilogo e clique no boto OK.

Passo 2
Aparecer o prompt de comando em que voc executar o seguinte comando: tracert www.
google.com.br. Observe o que aparece na tela. (quantos saltos, quanto tempo entre os
saltos, tempo mdio total, se passou por roteadores locais, regionais, globais, etc. . . ). Para o
Sistema Operacional Linux, o nome do comando traceroute.

Passo 3
Abra uma janela do navegador e faa uma busca com o seu nome: Fulano de tal BUSCAR.
Aparecero diversos links, escolha qualquer um deles e anote o endereo a seguir: http://
________________________________________________

Agora execute o comando tracert para o endereo que voc selecionou e responda:

Quantos saltos o pacote precisa fazer at chegar no destino: ________________

Qual o tempo mdio final para o pacote chegar at o destino: _______________

possvel que existam provedores (ISP) transcontinentais na rota: _____________

Passo extra
Outra forma de testar a aplicao Traceroute atravs da pgina: http://www.traceroute.org,
que prov uma interface WEB para uma extensa lista de fontes para traar rotas. Escolha uma
fonte, fornea o nome do destino e o programa Traceroute far todo o trabalho.
Introduo Computao 123 / 130

Apndice D

Usando a aplicao Wireshark

Propomos uma maior interao com os protocolos das redes de computadores, atravs de uma inves-
tigao da sequncia de mensagens enviadas por duas entidades de protocolo, observando detalhes de
suas operaes, atravs de suas aes e consequncias.

Figura D.1: Interface do programa Wireshark.

Para isso precisamos de uma ferramenta para observar a troca de mensagens entre as entidades. A
ferramenta proposta o Wireshark, que um analisador de pacotes, que tem como funo receber
Introduo Computao 124 / 130

passivamente as mensagens enviadas por computadores em uma rede, exibindo o valor de vrios
campos dos protocolos contidos nas mensagens que captura. Esta ferramenta gratuita e pode ser
executada em sistemas operacionais como o Windows, Linux/Unix e Mac.
possvel encontrar melhores detalhes de seu funcionamento, obteno e instalao do Wireshark no
site http://www.wireshark.org.
Que tal aprendermos como utilizar mais uma ferramenta muito utilizada no mundo dos hackers?
Para isso, siga os passos indicados nesta prtica, analise os resultados e responda algumas perguntas
sugeridas.

Passo 1
Em um computador conectado Internet utilizando o navegador de sua preferncia, acesse o
site www.google.com.br. Escolha um termo qualquer _____________________ e faa a
busca.

Passo 2
Utilizando o Wireshark inicie a captura de trfego de rede da placa de rede que conecta
Internet.

Passo 3
Clique agora em um dos resultados fornecidos pela busca realizada anteriormente. Dentro do
site de destino navegue em algum link.

Passo 4
Interrompa a captura de dados no Wireshark.

a. no campo de filtragem do Wireshark digite a palavra HTTP e em seguida no boto ap-


ply. No primeiro pacote HTTP qual foi o comando utilizado na mensagem HTTP? E no
segundo pacote? Transcreva apenas os comandos HTTP dos 5 primeiros pacotes.

b. Limpe o campos de filtro e digite agora dns e em seguida apply. Verifique qual foi o
endereo pesquisado pelo comando DNS e qual foi o IP que ele retornou.

Passo 5
Inicie uma nova captura de dados no Wireshark sem salvar a anterior.

Acesse o seguinte endereo utilizando o navegador de Internet ftp://ftp.pucpr.br


Acesse o diretrio apache/ e baixe o arquivo HEADER.htm
Interrompa a captura de dados no wireshark. Filtre utilizando o protocolo FTP.

a. Transcreva os 5 primeiros comandos sucessivos nos pacotes capturados.


Introduo Computao 125 / 130

b. Limpe o campos de filtro e digite agora dns e em seguida apply. Verifique qual foi o
endereo pesquisado pelo comando DNS e qual foi o IP que ele retornou.
Introduo Computao 126 / 130

Apndice E

Respostas das atividades

Sumrio
E.1 Captulo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
E.2 Captulo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
E.3 Captulo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
E.4 Captulo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
E.5 Captulo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
E.6 Captulo 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
E.7 Captulo 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

Nesta captulo apresentamos as respostas de algumas atividades.

Nota
Voc pode contribuir para elaborao desta seo enviando suas respostas.

E.1 Captulo 1

Sem respostas.

E.2 Captulo 2

Sem respostas.

E.3 Captulo 3

1. a. 5 b. 17 c. 58 d. 43 e. 42 f. 87 g. 4039
2. a. 11012 e. 100000000002 h. 1110102 i. 11100012
Introduo Computao 127 / 130

E.4 Captulo 4

Sem respostas.

E.5 Captulo 5

Sem respostas.

E.6 Captulo 6

Sem respostas.

E.7 Captulo 7

Sem respostas.
Introduo Computao 128 / 130

Captulo 9

ndice Remissivo

_ circuitos integrados, 14, 15


baco, 3 CISC, 17, 57
Cobol, 14
A codificao binria, 21
Ada, 9 Compilao, 70
Alan Turing, 10 Compilador, 70
Algoritmos, 62 Complemento de 1, 40
anlise lxica, 71 Complemento de 2, 40
anlise semntica, 71 computador, 2
anlise sinttica, 71 Computadores Pessoais, 89
AND, 113 comutadores, 95, 96
Anel, 101 conectividade, 17
armazenamento em disco, 14 contador, 82
Arquitetura, 52 contador de instrues, 59
arquitetura plugvel, 15 controle de fluxo, 103
Arredondamento, 46
ASCII, 22 D
assembly, 14, 67 dado, 53
datagrama, 106
B
Decimal, 33
banda larga, 97
Depurao, 74
Barramento, 56
Discos rgidos, 16
barramento, 54
Barramento Linear, 100 E
barramento linear, 100 encaminhamento, 96
base binria, 33 endereo, 53
base decimal, 33 ENIAC, 12
base octal, 33 Enigma, 10
Binrio, 33 enlace, 95
bit, 20 enlaces, 96
bug, 13 Entrada & Sada, 86
byte, 20 entrada e sada, 14
Entrada/Sada, 55
C
Estrela, 100
cdigo intermedirio, 73
Calculadora, 6 F
carregador, 72 fita magntica, 14
Charles Babbage, 8 Fortran, 14
Circuitos Integrados, 88
Introduo Computao 129 / 130

G O
gerenciamento, 85 Octal, 33, 34
OR, 113
H origem ao destino, 103
hardware, 52 Ossos de Napier, 4
Hexadecimal, 33, 34 Overflow, 46
I overhead interpretativa, 73
Imagem, 23 P
instruo de mquina, 57 pacotes, 95
instrues, 56 pacotes fora de ordem, 107
instrues condicionais, 9 Paradigmas de Programao, 68
inteligncia artificial, 17 parser, 71
Interpretadores, 72 Pascal, 5
interrupes, 86 permisses de acessos, 87
pilha de execuo, 82
J
Ponto Fixo, 42
Jacquard, 7
Ponto Flutuante, 43, 44
L Portas lgicas, 113
Lgica Binria, 112 portas lgicas, 114
ligao, 70 processo, 82
ligador, 72 processo de montagem, 70
Linguagem de alto nvel, 16 protocolo, 96
Linguagem de Mquina, 56
R
linguagem de mquina, 11, 56
rede de alunos, 107
Linguagem de Programao, 66
rede sem fio, 97
linguagem de programao, 14
redes de acesso, 96
M registrador de instrues, 59
Mquina Analtica, 8 registradores, 52, 54, 82
Mquina Diferencial, 8 Representao
Msica, 24 Imagem, 23
Memria Msica, 24
gerenciamento, 85 Nmeros, 21
memria, 14 Texto, 22
Memria Principal, 52 RISC, 17, 57
Memria Virtual, 86 rota, 95
microchips, 14 roteador de borda, 96, 97
mnemnico, 67 roteadores, 95
Monoprogramao, 85
S
Montador, 70
silcio, 14
montadores, 67
Sinal, 39
Multiplicao binria, 38
Sistema binrio, 7
Multiprogramao, 85, 88
Sistema de Arquivo, 87
N Sistema de Numerao, 28, 32
Nmeros, 21 sistema em lote, 88
Negativo, 39 Sistema Operacional, 78, 79
NOT, 112 Sistemas embarcados, 82
Notao de Excesso, 43 sistemas finais, 94
sistemas operacionais, 16
Introduo Computao 130 / 130

software, 52
Soma binria, 37
somador, 114
Subtrao binria, 37
system calls, 79

T
tabela verdade, 112
TCP, 105
tempo real, 82
Texto, 22
Threads, 84
token, 101
Topologia
Anel, 101
Barramento Linear, 100
Estrela, 100
traduo, 70
tradutor, 67
tradutores, 69, 70
transistor, 13
Transistores, 88

U
UDP, 105
Underflow, 46
Unidade Central de Procedimento, 14
Unidade Central de Processamento, 54
unidade de armazenamento, 9
unidade de controle, 54
Unidade de Entrada, 55
unidade de processamento de dados, 9
Unidade de Sada, 55
unidade lgica e aritmtica, 54

V
vlvulas, 11
Introduo Computao 131 / 130

Você também pode gostar