Prévia do material em texto
FUNDAMENTOS COMPUTACIONAIS
Stéfani Valmini
2FUNDAMENTOS COMPUTACIONAIS
UM POUCO DE HISTÓRIA 4
Evolução do Computador 5
Conceitos Básicos de Sistemas 11
Microprocessadores 20
CISC x RISC 23
SISTEMAS OPERACIONAIS 27
Estrutura de um Sistema Operacional 28
Tipos de Sistemas Operacionais 29
Sistemas Numéricos e Representação de Dados 31
Aritmética Não Decimal 36
Representação em Tamanho Fixo 38
Representação Números Negativos 38
LINGUAGENS E ORGANIZAÇÃO DA INFORMAÇÃO 42
Linguagens de Programação 43
Estrutura e Organização da Informação 47
Banco de Dados 50
PLANEJAMENTO ESTRATÉGICO DA TI 54
Engenharia de Software 55
Conectividade 62
Características dos sistemas abertos 63
Softwares Clientes 63
Softwares Servidores 64
Software de Redes 64
Arquitetura dos sistemas abertos 67
SUMÁRIO
CENTRO UNIVERSITÁRIO UNIFTEC
Rua Gustavo Ramos Sehbe n.º 107.
Caxias do Sul/ RS
REITOR
Claudino José Meneguzzi Júnior
PRÓ-REITORA ACADÊMICA
Débora Frizzo
PRÓ-REITOR ADMINISTRATIVO
Altair Ruzzarin
DIRETORA DE EDUCAÇÃO A DISTÂNCIA (NEAD)
Lígia Futterleib
Desenvolvido pelo Núcleo de Educação a
Distância (NEAD)
Designer Instrucional
Sabrina Maciel
Diagramação, Ilustração e Alteração de Imagem
Igor Zattera, Sabrina Maciel
Revisora
Carmem Maura Vaccari
3FUNDAMENTOS COMPUTACIONAIS
Introdução
A nossa disciplina de Fundamentos
Computacionais, como o nome mesmo
diz, é uma base, um alicerce para todas as
demais disciplinas. Nela estudaremos des-
de os conceitos mais básicos de hardware,
software até as linguagens de programação,
assuntos que se referem a legislação, banco
de dados entre outros.
Nosso conteúdo está dividido em
quatro grandes capítulos de estudo. O pri-
meiro refere-se a “Introdução aos sistemas
e elementos básicos”, o segundo a “Sistemas
Numéricos e Representação de Dados”, o
terceiro a área das “Linguagens de Progra-
mação e Planejamento da TI”, e, por último
a “Conectividade e Aspectos Legais”.
Ao final desta disciplina vocês serão
capazes de identificar as oportunidades
de negócios por meio da utilização dos
recursos computacionais básicos, propor
melhorias no ambiente de uso de sistemas
computacionais, além de identificar as di-
ferentes aplicações do computador dentro
da sociedade.
4FUNDAMENTOS COMPUTACIONAIS
UM POUCO DE
HISTÓRIA
Conhecendo a evolução dos computadores
O que você entende por computação? Como você clas-
sificaria os elementos de software, hardware e peopleware? Já
ouviu falar nestes termos? Mas não consegue explicar? Sabe
qual a função dos sistemas operacionais? São muitas as per-
guntas referentes a essa área. Portanto, essas, e tantas outras
perguntas iremos responder e discutir neste primeiro capítulo.
Como ponto de partida iremos voltar no tempo para
conhecer e entender todas as evoluções que já ocorreram na
computação. Serão apresentados os principais inventos que
levaram ao surgimento dos computadores que conhecemos hoje.
Em toda a história, o principal objetivo era a automação
do cálculo. Como já se sabe um sistema computacional, que, em
seu aspecto mais elementar, é apenas uma máquina que realiza
operações lógicas e aritméticas. Também serão apresentados os
principais componentes de software, hardware e peopleware
que formam um sistema computacional.
5FUNDAMENTOS COMPUTACIONAIS
Evolução do Computador
De acordo com a história tradicional,
a computação evoluiu muito e em um curto
período de tempo.
Será que, realmente, os fatos acon-
teceram de tal forma? Pensando bem, a
verdadeira história não aconteceu tão rápido
assim. Foram necessárias inúmeras e gradu-
ais invenções e evoluções para chegarmos
até as atuais tecnologias. Pense um pouco
em quais foram essas invenções para chegar
a uma conclusão plausível.
Para entender o nosso momento
tecnológico atual, precisamos conhecer a
história da computação e os fatos relevantes
que contribuíram para que chegássemos
até aqui.
Em um passado muito distante, se
contavam os objetos, os animais, etc., atra-
vés de pedras ou de riscos que, conforme
registros comprovam, eram feitos nas pare-
des das cavernas. Vejamos que desde cedo a
matemática já se fazia parte do processo, e o
calcular sempre foi uma atividade presente
na humanidade.
Evolução do Computador
Fo
nt
e:
A
ut
or
O homem sempre tentou
desenvolver meios que facilitassem o
processamento dos dados.
A aritmética, assim como
ler ou escrever, era uma
habilidade que auxiliava
o homem a interpretar
o mundo (mundo com
numeração binária fazendo
referência a esta afirmação)
6FUNDAMENTOS COMPUTACIONAIS
A ferramenta de calcular mais antiga, que se tem conhecimento é o Ábaco. Ele
foi inventado pelos chineses por volta de 2000 a.C. e lá recebeu o nome de Suanpan,
no Japão é conhecido como Soroban.
2000 a.C
É inventado o ábaco pelos chineses.
1617
Jhon Napier inventou a tabela de
logaritmos.
1621
William Oughtred inventou a
régua de cálculo.
1642/1647
O matemático francês Blaise
Pascal apresenta sua máquina de
calcular mecânica.
7FUNDAMENTOS COMPUTACIONAIS
1801
Tear automatizado com o invento de
Jacquard.
1820
Arithmometer a primeira máquina de
calcular comercial.
1822
Calculadora analítica de Babbage.
1880
Primeira máquina de
processamento de dados criada
por Hollerith.
1924
Máquina de calcular produzida
por Burroughs Company.
8FUNDAMENTOS COMPUTACIONAIS
Em 1950 John Von Neuman, Ar-
thur Burks e Herman Goldstine criam
a lógica dos circuitos digitais, conceito de
programação por números binários. Surge
em 1951 o UNIVAC I, primeiro compu-
tador comercial baseado nos conceitos de
Neumann.
John Von Neumann, matemático na-
tural da Hungria, viveu a maior parte de sua
vida nos Estados Unidos. Suas contribui-
ções forma muito significativas e perduram
até os dias atuais, sendo que a principal
delas, a construção de um computador se-
quencial binário de programa armazenado.
Podemos dizer que ele propôs os elementos
críticos de um sistema computacional, de-
nominado de Modelo de Von Neumann.
A arquitetura de computador proposta por
esse modelo é composta basicamente por
(TANENBAUM, 2007):
a. uma memória física (para armaze-
nar programas e dados – represen-
tados por 0’s e 1’s);
b. uma Unidade Aritmética e Lógica
(ULA), cuja função é executar ope-
rações indicadas pelas instruções
de um programa. Seu trabalho é
apoiado por diversos registradores
(ex.: acumulador);
c. uma Unidade de Controle (UC),
cuja função é buscar um programa
na memória, instrução por instru-
ção, e executá-lo sobre os dados de
entrada (que também se encontram
na memória);
d. equipamento de entrada e saída.
A Figura abaixo apresenta os com-
ponentes da arquitetura de Von Neumann
descritos acima:
Na década de 50, a IBM lança o IBM
701 e 650, tornando-se o maior sucesso de
vendas da década. A partir de 1959 sur-
gem os transístores, em seguida, os circui-
tos integrados que popularizou o uso dos
computadores.
Na década de 70, a Intel lança mi-
croprocessadores com arquitetura interna
1946
Nasce o ENIAC.
Arquitetura de Von Neumann
Fo
nt
e:
A
da
pt
ad
a
de
T
an
en
ba
um
(2
00
7)
9FUNDAMENTOS COMPUTACIONAIS
e barramento de 4 bits, 8 bits e de 16 bits.
Em 1982 surge o microprocessador 8083
com capacidade de endereçar a memória
até 16 MB.
Em 1985 a Intel lança seu proces-
sador 80386, com arquitetura interna e
barramento de dados de 32 bits, capaz de
endereçar até 4GB de memória. Já, em 1989
Surge o processador i486, com arquitetura
interna e barramento de dados de 32 bits
e coprocessador integrado à CPU.
Nos anos 1993 Intel lança primeiro
processador da família Pentium, cuja ca-
pacidade de processamento (MIPS) era 7
vezes maior que o i486, e, a capacidade de
endereçamento de memória 16 vezes maior
que o seu antecessor.
A Intel lança a família de micro-
processadores 80686, em 1997, a qual fica
conhecida como Pentium II, cujo poder
de processamento era de 300 MIPS. E, em
2000,é lançado o último processador desta
família, conhecido como Pentium 4, com
poder de processamento de 15000 MIPS.
No ano seguinte, nasce o Itanium,
processador da família 80786, com barra-
mento de 64 bits e poder de processamento
de 2.500 MIPS. E em 2007, a Intel lança
a família de processadores 80968, em que
o poder de processamento é de 125.000
MIPS.
Evolução do Software
Você sabe como surgiu o conceito de
software? Porque o software e o hardware
não existem sem um ao outro? Conhece a
evolução dos software?
O conceito de software surgiu em
decorrência da necessidade de se programar
o hardware, de colocar inteligência dentro
das máquinas eletrônicas que estavam evo-
luindo há décadas. Mas, o que nem todos
sabem, é que as origens dos softwares sur-
giram muito antes do conceito de compu-
tador moderno.
Vejamos na imagem a seguir, uma
breve linha do tempo que descreve esta
evolução do software.
Surge o conceito de
Álgebra Booleana.1847
O matemático John
Von Neumann introduz
o conceito de lógica
binária.
1945
Primeira geração de
linguagens de máquina.1945
Segunda geração de
linguagens de máquina:
Linguagem Assembler
ou de Montagem.
1955
10FUNDAMENTOS COMPUTACIONAIS
Surge o Fortran
(FORmula TRANslation),
3º geração de
linguagem de
máquina. Usada
no meio científico,
especialmente nas
Ciências da Computação
e Análise Numérica.
1958
Surge a linguagem
ALGOL.1960
Surge o BASIC, software
de programação
muito utilizado nos
microcomputadores.
1963
Nasce a linguagem
PASCAL.1968
Ken Thompson cria a
linguagem B, usada
para implementar o
sistema UNIX.
1970
Dennis Ritchie cria a
primeira versão da
linguagem C.
1972
Surge o sistema
operacional CP/M
(Control Program for
Microcomputers) da
Digital Research.
1975
Início das linguagens de
quarta geração 4GL.1975
Surge a linguagem
SmallTalk no centro
de pesquisas da Xerox.
Primeira linguagem
100% orientada a
objetos.
1975
Surge a linguagem Ada,
jundão entre Fortran e
Pascal.
1978
Surge o MS-DOS,
sistema operacional
para PC e compatíveis.
1980
Leslie Lamport cria a
primeira linguagem
para texto conhecida
como Latex.
1980
Surge o MS Word,
processador de textos
da Microsoft.
1982
11FUNDAMENTOS COMPUTACIONAIS
Surge o Windows, como
Sistema Operacional.1985
Unix firma-se no
mercado como sistema
multiusuário.
1990
Linus Torvalds
anunciou a primeira
versão oficial do kernel
Linux.
1991
Nos laboratórios da Sun
Microsystems nasce
a linguagem Java. A
primeira linguagem
orientada a objetos e
com a proposta de ser
totalmente portável.
1991
É lançada a linguagem
Python por Guido Van
Rossum, linguagem de
alto nível.
1991
Windows 3.1 e 3.11
com características de
integração em rede.1992
Windows NT surge e
disputa mercado com
sistemas da Novell.
1993
Surgem linguagens
visuais como Visual
Basic, Visual C++ e
Delphi Fazer um smart
art para ficar mais visual
esta evolução.
1995
Conceitos Básicos de Sistemas
A definição clássica para sistema é
uma disposição de partes ou dos elemen-
tos de um todo, coordenados entre si, e
que funcionam como estrutura organizada
realizando uma determinada tarefa. Todo
o sistema necessita de uma entrada, uma
área de processamento e gera uma saída.
Sob o ponto de vista computacional
todo o sistema possui entradas, processa-
mento e saídas. Pode-se dividir um sistema
computacional em três partes como descrito
a seguir: hardware, software e peopleware.
Hardware
Hardware, todo dispositivo físico
conectado a um sistema computacional é
responsável por organizar e movimentar as
informações para dentro do sistema, pro-
cessá-las e por exteriorizar os resultados.
As entradas e saídas em um sistema com-
putacional são feitas através de hardwares
específicos conhecidos como periféricos.
Estes dispositivos podem ser divididos em:
12FUNDAMENTOS COMPUTACIONAIS
• Periféricos de entrada: São res-
ponsáveis por introduzir dados e/
ou comandos ao processador. Mou-
ses, scanners, câmeras, teclados e
telas touchscreen são exemplos de
dispositivos de entrada.
• Periféricos de saída: São os respon-
sáveis por mostrar aos usuários os
resultados do processamento rea-
lizado pelo sistema. Exemplos:
vídeos, placas de som, impressoras
e monitor.
• Periféricos de entrada e saída: São
responsáveis por facilitar o trânsito
de informações entre diferentes par-
tes de um sistema. Placa de redes,
memórias, discos-rígidos, drivers de
CD’s e/ou DVD’s, pendrives, telas
touchscreen e impressoras multifun-
cionais são exemplos de dispositi-
vos que possibilitam tanto a entrada
quanto a saída de dados no sistema.
Estes dispositivos podem ser dividi-
dos em duas categorias, dependendo
do modo como são armazenados ou
trafegam os dados por ele.
Dispositivos de bloco, são aqueles
que armazenam as informações em blocos e
sua principal característica é a persistência
dos dados, ou seja, os dados continua-
ram presentes mesmo que o sistema esteja
desligado. Discos rígidos, Drivers de CD,
flash-memories, são dispositivos de bloco.
Dispositivos de caracteres são aque-
les cujos dados que passam por eles não são
persistentes e transmitem ou recebem os
dados de forma serial. Por exemplo: por-
tas seriais, placas de redes, placas de redes
wireless.
A Unidade Central de Processamen-
to (UCP) é o principal hardware de um
sistema computacional, o qual possui duas
funções principais que são a de controlar
os dispositivos de entrada e saídas, e o de
processar as informações e mostrar os re-
sultados de seu processamento.
A UCP é o cérebro do sistema com-
putacional e consegue processar as infor-
mações em altíssima velocidade devido a
somente operar sobre zeros e uns, ou seja, a
UCP só é capaz de somar ou comparar estes
13FUNDAMENTOS COMPUTACIONAIS
valores. Outros dispositivos são adiciona-
dos a UCP para garantir a performance
do sistema tal como é mostrado na figura.
A ULA, Unidade Lógica Aritmética,
integra a UCP e é responsável por todas
as operações aritméticas e lógicas durante
a execução do sistema. A ULA é uma
calculadora que realiza operações de soma
e operações lógicas como and, or, xor, etc...
A ULA em conjunto com os registradores e
acumuladores são os elementos responsáveis
pelo processamento.
A UC, Unidade de Controle, é a parte
da UCP responsável por enviar os sinais
necessários aos outros elementos, a fim de
tornar possível o envio e recebimento dos
dados entre eles. A UC ordena a execução
do processamento e executa o microcódigo
pertencente aquela família de processador.
A execução de uma instrução consiste em
buscá-la na memória principal, decodi-
ficá-la, processá-la e colocar o resultado,
novamente, na memória. Além disso, a
UC controla as interrupções recebidas ou
enviadas para os dispositivos de entrada e
saída.
A Memória é um dispositivo de alta
velocidade, usada para armazenar dados que
serão processados pela UCP. O controle
da memória é feito pela UCP. A memória
está dividida em duas partes, a memória
principal e a memória auxiliar.
A BIOS (Basic Input Output Sys-
tem) é uma rotina de inicialização, arma-
zenada em uma memória ROM, que per-
mite ao computador carregar seu sistema
operacional armazenado no HD para
a memória. Outras tarefas necessárias
na inicialização do computador, também,
é realizada pela BIOS, como por exemplo,
o teste de checagem de energia ou POST
(Power On Self Test).
Sem as memórias seria impossível
uma UCP executar um programa. Um pro-
grama deve estar na memória principal
para ser executado, preferencialmente em
memórias voláteis. O armazenamento do
programa em memórias não voláteis ser-
ve para garantir a persistência dos dados
quando há desligamento do sistema. A
seguir, uma breve descrição de cada tipo
de memória que compõe um computador.
Memória Principal: Nela existem
dois tipos de memória principal. Uma delas
volátil, conhecida como RAM (RandomAccess Memory) e outra não volátil, co-
nhecida como ROM, que mantém os da-
dos mesmo com o computador desligado.
Esta última é usada para fins específicos
do sistema.
Memória Auxiliar: Também conhe-
cida como memória secundária é composta
pelos dispositivos de entrada e saída como
o disco rígido.
Existem diferentes tipos de memó-
rias voláteis e não voláteis.
UCP e seus periféricos
Fonte: MONTEIRO (2001)
14FUNDAMENTOS COMPUTACIONAIS
A Hierarquia das memórias, segundo
Tanenbaum (2007):
Á medida que descemos na hierar-
quia, três parâmetros aumentam. Primeiro,
o tempo de acesso fica maior. Os registra-
dores da CPU podem ser acessados em um
nanossegundo ou menos. Memórias cache
demoram um pequeno múltiplo dos registra-
dores da CPU. Acessos a memória principal
normalmente levam 10 nanossegundos...
Acessos a fitas ou discos podem ser medidos
em segundos se a mídia tiver de ser buscada
e inserido no drive.
Nome Descrição Tipo
RAM Random Acces Memory- Memória de Acesso Randômico Volátil
DRAM Dynamic RAM - É a memória convencional Volátil
SDRAM Syncrhunous Dynamic Random Access Memory Volátil
SRAM Static RAM - Memória RAM usada para cache de alta velocidade Volátil
ROM Read Only Memory - Memória apenas para leitura Não Volátil
PROM Programmable Read Only Memory Não Volátil
EPROM Erasable Programmable Read Only Memory Não Volátil
EEPROM Electrically Erasable Programmable Read Only Memory Não Volátil
UCP e seus periféricos
Fonte: Tanem
baum
(2007)
15FUNDAMENTOS COMPUTACIONAIS
Hierarquia das memórias
16FUNDAMENTOS COMPUTACIONAIS
Software
Software é todo e qualquer programa
processado por um computador. Serve
para resolver algum problema ou automa-
tizar atividades repetitivas. Podemos citar
como exemplo os sistemas integrados de
gestão ou SIG’s, são exemplos de softwares
desenvolvidos para automatizar atividades
de uma empresa, softwares CAD’s (Com-
puter-Aided Design - Desenho auxiliado
por computador ) e CAM’s (Computer-
-Aided Manufac- turing ), que automa-
tizam tarefas mais específicas, sistemas
operacionais, editores de texto, sistemas
de gerenciamento de banco de dados ou
SGBD’s, dentre outros. Os softwares em
um computador estão dispostos em cama-
das para agrupá-los por finalidades, como
mostra na figura. Para cada tipo de software
haverá um tipo de profissional associado
a ele.
Se o hardware, ou mais especifica-
mente a UCP, é o cérebro de um sistema
computacional, o software é a inteligência,
a alma. O software é a representação da
solução ou as regras para encontrar a so-
Exemplo de como os softwares estão organizados em um computador
17FUNDAMENTOS COMPUTACIONAIS
lução de determinados problemas. Sua implementação, em geral, segue regras claras e
fazem uso de diferentes metodologias e ferramentas de programação, dependendo do
problema abordado.
Dados versus Informação
Fonte: Autor
Os softwares, em um sistema computacional, executam tarefas baseados nos
dados de entrada do sistema. Estes dados são interpretados e resultam em alguma
informação relevante ao usuário. Portanto, dado é um elemento na sua forma bruta,
que se for analisado isoladamente, não fornece nenhuma compreensão sobre um fato.
Por exemplo se olhar isoladamente o número 22, ele não nos fornece nenhuma
compreensão, porém se este número estiver num contexto por exemplo de idades das
pessoas, ou quantidades de algo, isso já será uma informação.
Outro exemplo da diferença entre dado e informação pode ser dado através
da experiência que a empresa Walmart realizou cruzando informações de vendas, de
cervejas e de fraldas descartáveis. Toda a venda é registrada no sistema da empresa e,
olhando isoladamente as vendas de cervejas e fraldas não é possível compreender alguma
relação entre elas. Como uma estratégia de vendas, a empresa Walmart queria verificar
a hipótese de que o perfil dos consumidores de cerveja e de fraldas descartáveis eram
semelhantes. Usando técnicas de Data Mining, a empresa verificou esta hipótese através
do cruzamento dos dados de vendas de cervejas e fraldas descartáveis, concluindo que
estes consumidores eram homens casados, entre 25 e 30 anos, que compravam cer-
vejas e fraldas às sextas-feiras, no caminho
do trabalho para casa. Com base nesta
informação, a Walmart decidiu organizar
as gôndolas de fraldas próximas às de cer-
veja, obtendo um aumento de vendas nas
sextas-feiras de 30%.
Portanto, em um banco de dados,
como mostra a imagem, o que está
armazenado nele são elementos brutos, sem
nenhuma relação entre si. Ao agrupá-los
de tal maneira que forneça algo relevante
a quem os observa, isto torna-se uma
INFORMAÇÃO.
Tratamento dos dados
Fonte: Autor
18FUNDAMENTOS COMPUTACIONAIS
Processar dados é o principal objetivo
de um sistema computacional. Existem
dois tipos de processamento em um sistema
de computador.
Processamento em Lote: Também
conhecido como Processamento Batch e é
caracterizado pela execução de uma série
de programas, um após o outro, sem a
intervenção do usuário. Este tipo de pro-
cessamento foi muito utilizado na década
de 50, nos centros de processamento de
dados. Hoje em dia ele não é mais utili-
zado, mais por uma questões de ambientes
de processamento, do que da sua aplicação
em si.
Processamento On-Line: É aquele
caracterizado pela interação entre usuário
e software durante a execução de suas tare-
fas. Pode ser chamado de processamento
em tempo-real, pois geralmente está orga-
nizado de tal maneira a poder executar suas
tarefas a uma velocidade igual ou superior
à velocidade com que os eventos externos
ocorrem. Um exemplo deste tipo de pro-
cessamento pode ser visto nos softwares
de gestão das empresas, onde o evento de
venda ou a produção de um determinado
produto, automaticamente atualiza o es-
toque.
Os ambientes de processamento
evoluíram juntamente com a evolução do
Hardware. O software responsável por
fornecer o tipo de ambiente adequado ao
processamento é o Sistema Operacional.
A medida que os processadores foram au-
mentando sua capacidade de processamen-
to, novas necessidades de usuários foram
surgindo e isto impulsionou os cientistas
da computação a desenvolverem novos
sistemas operacionais para atendar essas no-
vas necessidades. Ao longo da história dos
computadores quatro tipos de ambientes
de processamento surgiram: Monotarefa,
Multitarefa, Multiprogramação e Multi-
processamento.
No ambiente monotarefa, somen-
te, uma tarefa por vez pode ser executa-
da. Este ambiente é o que se aproxima do
processamento Batch, pois ao executar um
determinado programa, o usuário deveria
aguardar seu término para poder executar
outras tarefas. Um exemplo deste ambiente
é o sistema operacional DOS.
O ambiente multitarefa é caracteri-
zado pela concorrência entre processos, ou
seja, ele executa mais de uma tarefa desde
que os programas sejam escritos para esta
atividade. Por exemplo, poder enviar dois
arquivos, simultaneamente, à impressora
sem que haja impressão intercalada dos
mesmos.
No ambiente de multiprograma-
ção, diferentes programas podem ter seu
processamento realizado em um mesmo
computador, compartilhando recursos do
sistema. Desta forma, dois processos po-
dem alocar um mesmo recurso, em que
irão utilizar conforme uma determinada
priorização e ordem. A diferente entre o
ambiente anterior e o multiprogramação
é apenas teórica. Neste tipo de ambiente
surgiu o conceito de compartilhamento
de tempo ou timesharing, onde o sistema
operacional organiza a execução de cada
processo, garantindo que cada processo
use os recursos necessários, principalmente
a UCP, em um determinado momento e
com determinada duração.
19FUNDAMENTOS COMPUTACIONAIS
O ambiente multiprocessador sig-
nifica mais de uma UCP disponível para
executar os programas. Neste ambiente,
várias UCP’s executam as solicitações dos
programas, porém não basta adicionar mais
processadores para garantir um maiorpoder
computacional. É necessário que os sof-
twares estejam preparados para dividir suas
tarefas entre os processadores disponíveis.
Tanto os sistemas operacionais precisam
estar preparados para dividir suas tarefas,
quanto os softwares aplicativos, também,
precisam ser capazes de perceber a existên-
cia de mais de um processador. Essa ideia
também é aplicada à processadores com
mais de um núcleo.
Peopleware
A constante evolução do hardware e
software ocasiona um grande desconforto
aos usuários destes ambientes. Um sistema
computacional não sobrevive e nem mesmo
nasce sem a intervenção das pessoas, seja
como usuários ou como desenvolvedores e, a
estas pessoas, denominam-se de peopleware.
20FUNDAMENTOS COMPUTACIONAIS
O ambiente peopleware é tão com-
plexo quanto os softwares e hardwares exis-
tentes atualmente. Esta complexidade deve-
-se ao fato de estarem envolvidos conceitos
que não são totalmente explícitos tais como:
valores culturais e organizacionais, crenças,
políticas, aspectos comportamentais e so-
cioeconômicos, estruturas organizacionais,
dentre outros.
Para os profissionais que desenvol-
vem ou mantém os sistemas computacio-
nais é preciso conhecer os aspectos que
estão indiretamente envolvidos na sua
utilização, e estar atentos as habilidades e
competências que devem ser desenvolvidas
para se manterem sempre atualizados.
Microprocessadores
Os microprocessadores, como vimos
anteriormente, são os principais componen-
tes de um computador. São eles que con-
trolam os dispositivos, ordenam a execução
das instruções, isto é, os programas. Enfim,
tudo o que acontece em um computador é
feito pela CPU.
A companhia Intel, em 1971, lan-
çou o seu primeiro microprocessador, o
4004, cuja frequência de operação era de
0, 1 MHz, barramento de endereços de
4 bits, acomodava 2.300 transístores e era
capaz de processar 0,06 MIPS. Uma dé-
cada depois, em 1982, a Intel lançou seu
processador 80286, com poder de processa-
mento quinze vezes maior, barramento de
endereços de 16 bits, capaz de processar
0,90 MIPS. É dada, então, a largada para
a evolução dos microprocessadores, onde
outras companhias, como a AMD e Cyrix,
entram no mercado.
Outras fabricantes de micropro-
cessadores, destinados a aplicações mais
especificas também evoluíram a partir do
surgimento do CHIP, que segmentaram
os microprocessadores em duas famílias
distintas: os processadores CISC e RISC,
cujas particularidades serão vistas ao longo
deste capítulo.
A Figura ilustra como está estrutura-
da uma CPU e seu conjunto de instruções.
Uma UCP, como visto anteriormen-
te, deve executar duas tarefas: execução do
programa e controle dos periféricos. Para
cada uma destas tarefas existe um compo-
nente responsável, interno à UCP. A seguir
uma breve descrição de cada um destes
elementos.
A UCP roda em conjunto com a me-
mória, desta forma é necessário transferir
o conteúdo da memória para seus registra-
UCP e seus componentes
Fonte: M
O
N
TEIRO
(2001)
21FUNDAMENTOS COMPUTACIONAIS
dores internos e o resultado da execução deve ser transferido de seus registradores para a memória. Um programa na memória do
computador é uma combinação de instruções e dados, sendo assim o trabalho da UCP buscar a próxima instrução, decodificá-la,
obter os dados (operandos), executar a instrução e colocar o resultado novamente na memória. Isto ocorre milhões de vezes por
segundo após o ligamento da UCP. O fluxo, mostrado na figura exemplifica o ciclo da UCP após sua inicialização.
Ciclo da UCP após ligada
Fonte: M
O
N
TEIRO
(2001)
De fato, a execução de um programa
é feito pela ULA (Unidade Lógica e Arit-
mética) de uma UCP, porém, para tornar
isso possível é necessário ordenar a sequ-
ência de eventos que buscam a instrução e
operandos da memória principal e colocar
nos registradores internos da UCP. Toda
esta comunicação é feita por sinais elétricos
enviados através do barramento de controle
e controlado pela UC e, portanto, esta é a
segunda função da Unidade de Controle.
A figura mostra um diagrama de blocos
da uma UCP e os principais elementos
envolvidos no processamento dos progra-
mas armazenados na memória principal.
22FUNDAMENTOS COMPUTACIONAIS
Diagrama de blocos de uma UCP
Fonte: M
O
N
TEIRO
(2001)
A UC, para pegar a próxima instrução a ser executada, deve primeiramente
enviar o endereço da memória onde está a próxima instrução, colocando-o no REM
(Registrador de endereço de memória), em seguida, através do barramento de controle
habilitar a leitura da MP (Memória Principal). Este passo faz com que o valor da ins-
trução seja colocado no RI (Registrador de Instrução). Esta instrução é decodificada
e as microinstruções são executadas pela UCP. O resultado então é colocado no RDM
(Registrador de Dados da Memória). Todas essas são ordenadas pelo sinal do relógio.
A principal função dos registradores é armazenar temporariamente os dados
que serão ou foram processados pela UAL, ou seja, um dado para ser transferido da
Memória Principal para a UAL deverá ser armazenado, primeiramente, em um re-
gistrador. Também o resultado parcial de uma operação aritmética ou lógica deverá
ser armazenado temporariamente em um
registrador para que seja utilizado para a
conclusão da instrução.
Todas as CPUs possuem uma quan-
tidade de registradores destinados a dife-
rentes operações. Por exemplo, em um
microprocessador 8086, de 8 bits da Intel,
possui registradores acumuladores (AX),
registradores base (BX), registradores de
segmentos (para acesso a memória), regis-
tradores de dados, dentre outros. A quanti-
dade e finalidade de cada registrador pode
ser encontrado no datasheet de cada pro-
cessador, fornecido pelo fabricante.
Relógio é o gerador de pulsos que
sincroniza a execução e controle das instru-
ções dentro de uma UCP. Isto quer dizer
que a cada ciclo, um evento ocorre dentro
da CPU. Inicialmente, os microprocessa-
dores não executavam uma instrução a cada
pulso de clock. Em 1992 a Intel lançou o
80846 DX2 que foi o primeiro processador
de sua família a processar uma instrução
por ciclo de relógio. Outras arquiteturas
de processadores, com mais de um núcleo,
permitem que mais de uma instrução seja
23FUNDAMENTOS COMPUTACIONAIS
executada por ciclo de relógio.
Os registradores de endereço ser-
vem para armazenar dados provenientes
ou a serem colocados no barramento de
dados. Em geral, o RDM possui o mes-
mo tamanho do barramento de dados. Da
mesma forma, o REM é um registrador de
endereços de memória e possui um tama-
nho igual ao do barramento de endereços
da memória.
As interrupções foram uma forma
que os engenheiros de microprocessado-
res encontraram para lidar com eventos
assíncronos, isto é, o uso dos dispositivos
de entrada e saída não ocorrem de forma
ordenada, ainda mais em sistemas inte-
rativos, como os computadores atuais. As
interrupções fazem parte do barramento
de controle conectado à UC. A seguir a
alguns exemplos de controle proveniente
deste barramento.
INT - Entrada que serve para que
dispositivos externos possam interromper
o microprocessador para executar uma ta-
refa que não pode esperar o fim de um
processamento.
NMI - Sinal de interrupção especial
para ser usado em emergências e deve ser
executada imediatamente.
INTA - Este sinal de saída do micro-
processador serve para indicar ao dispositivo
que recebeu sua interrupção (Interruption
Acknowledge).
Nos microprocessadores o método
de processamento é chamado de pipeline,
ou seja, a execução das instruções são fei-
tas como em uma linha de montagem. A
execução de uma instrução é dividida em
estágios independentes, como por exemplo,
a leitura, escrita, decodificação de instrução
são etapas distintas e devem durar o mesmo
tempo para serem concluídas. Portanto, ao
iniciar a execução de um programa, cada
etapa de execução, de um microprocessador,
ocorre a cada pulso de clock, sendo execu-
tadas uma de cada vez,conforme imagem
abaixo.
Execução das instruções em pipeline.
Fonte: dosponível aqui
CISC x RISC
Pode-se classificar as microproces-
sadores quanto ao tipo de instruções que
eles possuem: CISC (Complex Instruction
Set Computer) que possuem um conjunto
complexo de instruções e o RISC (Reduced
Instruction Set Computer) que possuem
um conjunto reduzido de instruções.
Nos primórdios dos microprocessa-
dores, todos os processadores eram RISC,
o que levava os programadores a serem
obrigados a ter um conhecimento profun-
https://sites.google.com/site/unipliarquitetdecomputadores/_/rsrc/1392757022813/aulas/aula-7---arquitetura-pipeline/arquiteturadecomputadores2.png
24FUNDAMENTOS COMPUTACIONAIS
do sobre o processador, pois todos os pro-
gramas eram elaborados em linguagem de
máquina pura, ou assembler. Os projetistas
de microprocessadores, para facilitar a vida
dos programadores, resolveram embutir
no próprio processador, programas para
implementar algumas instruções mais
complexas. Esta técnica é denominada de
microprogramação.
Através desta técnica, novas funções
eram adicionadas diretamente no hardware
e, a medida que novas necessidades sur-
giam, novas instruções eram adicionadas,
levando a uma sobrecarga do microproces-
sador e tornando-os cada vez mais com-
plexos, daí o termo CISC.
A sobrecarga no processador torna-
va-o mais lento, sendo necessário buscar
meios para aumentar a velocidade através
de melhorias no hardware. Estas melhorias
logo chegariam ao limite, sendo necessá-
rio aumentar o seu tamanho. No entanto,
com base em pesquisas, descobriu-se que
85% dos programas utilizavam apenas três
instruções, atribuições, comparações (if ’s e
chamadas de procedimentos, o que torna-
va desnecessário adicionar outras funções
aos processadores que raramente iriam ser
utilizadas.
Além deste fato, dois outros fatores
levaram a indústria de microprocessadores
a voltarem à arquitetura RISC: o aumento
significativo da velocidade das memórias
e melhora das técnicas de compilação que
geravam códigos, se não melhores, com a
mesma eficiência dos microcódigos im-
plementados no hardware. No entanto, ao
se implementar funções complexas a nível
de software, exige que o processador exe-
cute mais funções na unidade de tempo,
levando a dissipar mais energia. Outra
desvantagem das máquinas RISC é que elas
não são boas para lidar com cálculos que
envolvem números em ponto flutuante.
A tabela enumera as principais ca-
racterísticas que diferem um processador
CISC de um RISC.
RISC CISC
Instruções simples que levam um ciclo de clock Instruções complexas que levam múltiplos
ciclos de clock
Apenas instruções LOAD/STORE referenciam a
memória.
Todas as instruções podem referenciar a
memória.
Altamente pipeline Não possui pipeline ou é pouco usado
Instruções executadas pelo hardware Instruções executadas pelo microcódigo
Instruções com formato fixo Instruções de diferentes formatos
Poucas instruções e modos Muitas instruções e modos
A complexidade está no compilador A complexidade está no microcódigo
Múltiplos conjuntos de registradores Conjunto único de registradores
Principais diferenças entre microprocessadores RISC e CISC
25FUNDAMENTOS COMPUTACIONAIS
A grande maioria dos microprocessa-
dores do mercado usam as mesmas técnicas
usadas desde o surgimento dos primeiros
microprocessadores, assim podendo ganhar
maior poder de processamento construindo
UCP’s com várias UAL mais lentas, divi-
dindo a execução das instruções entre elas.
Uma das principais vantagens deste tipo
de arquitetura é diminuir a dissipação de
calor, uma vez que estas unidades operam
em uma velocidade menor.
As máquinas paralelas podem ser
classificadas em três diferentes categorias,
baseadas em como os dados e instruções
trafegam dentro da UCP.
SISD Single Instruction, Single Data
Fo
nt
e:
d
os
po
ní
ve
l a
qu
i
SIMD Single Instruction, Multiple Data
Fo
nt
e:
d
os
po
ní
ve
l a
qu
i
MIMD Multiple Instruction, Multiple Data
Fo
nt
e:
d
os
po
ní
ve
l a
qu
i
https://en.wikipedia.org/wiki/SISD
https://en.wikipedia.org/wiki/SIMD
https://commons.wikimedia.org/wiki/File:MIMD.svg
QUESTÕES DO CAPÍTULO 1
1. Computadores podem funcionar sem
BIOS e sem Memória Principal? Por
quê?
2. Componentes do Processador:
Registradores, ULA, UCP, etc.
Especifique o funcionamento de cada
um dos componentes do computador
relacionando-os.
3. Pesquise quais os tipos de
Microprocessador foram usados
nos últimos anos nos videogames e
computadores pessoais. CISC ou Risc.
4. Quem são as peopleware? Como
podemos identificá-las?
5. Explique a arquitetura de Von
Neumann.
27FUNDAMENTOS COMPUTACIONAIS
SISTEMAS
OPERACIONAIS
Representação da Informação e
gerenciamento
O sistema operacional é uma camada de software que
controla os recursos do sistema e estende as funcionalidades
destes recursos para suportar diferentes tipos de programa de
usuários, tais como compiladores, banco de dados, interfaces
amigáveis, redes de comunicação, dentre outros aplicativos.
Todo o sistema operacional é desenvolvido para um hardware
específico, ou seja, um sistema operacional de um smartphone
é diferente de um sistema operacional usado por um compu-
tador pessoal.
Todo e qualquer Sistema Operacional tem como função
principal distanciar os programadores ou usuários dos detalhes
de implementação dos dispositivos físicos conectados ao com-
putador, inclusive do processador, ou seja, sempre que um usu-
ário, ou melhor um programa de usuário, necessitar de alguma
tarefa, quer do processador quer dos dispositivos de entrada e
saída, esta solicitação deverá ser feita ao Sistema Operacional
por meio de uma função denominada Chamada ao Sistema.
Esta função dispara uma rotina que irá comunicar-se com o
28FUNDAMENTOS COMPUTACIONAIS
dispositivo, executando uma série de outras
tarefas de controle daquele dispositivo.
Estrutura de um Sistema
Operacional
Um sistema operacional possui seis
componentes básicos na sua estrutura, como
mostra a figura.
Cada um destes elementos possui
uma tarefa importante para o funcionamen-
to e performance do sistema operacional.
Embora a complexidade destes elementos
esteja relacionada com o tipo de processa-
mento a que o sistema operacional foi de-
senvolvido, todos os sistemas operacionais
de uso geral terão estes elementos.
Drivers de dispositivos são progra-
mas específicos de controle dos dispositivos
de entrada ou saída, como discos rígidos,
vídeos, mouses, dentre outros. Estes pro-
gramas são necessários para que o sistema
operacional interaja com os dispositivos.
No início dos sistemas computacionais ha-
via poucas opções de hardware disponível
e, portanto, os drivers faziam parte do có-
digo do sistema operacional. Atualmente,
com a grande quantidade de diferentes
dispositivos que podem ser agregados aos
computadores, estes drivers são feitos pelos
próprios fabricantes. Ao se instalar um novo
dispositivo, é necessário registrar (instalar)
o driver no sistema operacional para que
esse seja reconhecido pelo mesmo.
O Gerenciador de Processos é res-
ponsável pela implementação da multipro-
gramação baseada no compartilhamen-
to de tempo (time-sharing) nos sistemas
operacionais modernos, permitindo que
diferentes programas sejam executados em
paralelo. A implantação do gerenciador de
processos é feita através de heurísticas que
garantem o direito de uso dos recursos, em
um determinado momento, a cada um dos
processos ativos.
O Gerenciador de Memória é res-
ponsável pela alocação e remoção dos pro-
gramas que estão sendo executados pelo
sistema operacional, sendo programas de
usuários ou programas do próprio sistema
operacional. Além disso, o gerenciador
de memória controla o espaço de endere-
çamento gerado pelo sistema operacional,
que muitas vezes é superior ao espaço físico
disponível no computador.
Com a multiprogramação fez-se a
necessidade de compartilharo uso, além
do processador, dos dispositivos conecta-
dos ao computador. O Gerenciador de
Dispositivos garante o compartilhamento
dos recursos entre os processos ativos em
um computador. Este compartilhamento,
apesar de proporcionar maior desempenho
e interatividade ao sistema operacional,
produz efeitos indesejáveis aos sistemas
operacionais, sendo um deles chamado de
deadlock que ocorre quando uma deter-
minada sequência de alocação de recur-
sos, pelos processos, leva ao travamento do
computador. A solução para este tipo de
problema, pode consumir muitos recursos
financeiros e de processamento e, portan-
Estrutura de um Sistema Operacional
29FUNDAMENTOS COMPUTACIONAIS
to, os sistemas operacionais de uso geral,
normalmente não a implementam.
Através do Gerenciador de Arqui-
vos de um sistema operacional que são
gerenciados espaços alocados, criados e
deletados arquivos executáveis, mapeados
arquivos em disco e é feita a manipulação
de arquivos e diretórios. O sistema arquivos
de um sistema operacional é uma abstração
para a armazenagem e recuperação dos
dados gerados durante a execução de um
computador. Estes dados podem ser gera-
dos ou por programas de usuários ou pelo
próprio sistema operacional. É através do
Gerenciador de Arquivos de um sistema
operacional que são gerenciados os espaços
alocados, a criação e exclusão de arquivos
executáveis, diretórios, mapeamento de
arquivos, etc.
Outra tarefa importante do gerencia-
dor de arquivos é garantir a comunicação
entre os processos ativos durante a execução
de um computador.
O Interpretador de comandos é
uma interface simples e amigável que os
sistemas operacionais disponibilizam aos
usuários para que possam interagir. O in-
terpretador de comandos é o prompt que
aparece na inicialização do sistema ope-
racional.
Tipos de Sistemas
Operacionais
• SO para Computadores de Grande
Porte
São sistemas operacionais capazes
de gerenciar grande número de entradas
e saídas, milhares de discos rígidos e com
milhares de terabytes de dados a serem
manipulados, conhecidos também como
mainframes. Estes computadores ainda
existem em grandes corporações e são
aqueles que, geralmente, ocupam espaços
de salas inteiras. As aplicações destes ti-
pos de computadores vão desde grandes
servidores Web, comércio eletrônico em
larga escala e transações eletrônicas entre
grandes empresas (business-to-business).
Este tipo de sistema operacional é
feito para suportar e executar imensas quan-
tidades de jobs simultaneamente e oferece
três tipos de processamento:
• Processamento em lote, como por
exemplo, o relatório de vendas de
cadeias de lojas;
• Processamento de transações, que
suportam uma grande quantidade
de pequenas requisições, por exem-
plo sistema de reserva de passagens
aéreas;
• Processamento por compartilha-
mento de tempo, que permite que
inúmeros usuários realizem seus
jobs, simultaneamente no sistema,
como consultas a banco de dados.
Um exemplo deste tipo de sistema
operacional é o OS/390 da IBM.
• SO para Servidores
São sistemas operacionais que rodam
em máquinas de médio porte e até mes-
mo em mainframes, cuja função é atender
múltiplos usuários de uma vez, em rede,
30FUNDAMENTOS COMPUTACIONAIS
permitindo assim o compartilhamento de
recursos de hardware e software daquele
sistema. São usados em servidores Web,
sistemas gerenciadores de banco de dados,
serviços de e-mail e compartilhamento de
arquivos. Os sistemas típicos de uso nes-
tas aplicações são Unix, Linux e Windows
Server.
• SO de Multiprocessadores
Um modo comum de incrementar
o poder computacional é conectar várias
CPUs e dividir as tarefas entre elas. Po-
dem-se dividir os sistemas multiprocessados
em duas categorias, a primeira é aquela
onde as várias CPUs estão conectadas sobre
um mesmo barramento e, para estes casos,
os sistemas operacionais devem apenas ser
capazes de identificar a presença de mais
de um processador e dividir as tarefas entre
eles, compartilhando o restante dos recursos
da máquina, como memória. Estes sistemas
também podem ser sistemas operacionais
de servidores ou de rede.
A outra maneira é conectar diferen-
tes máquinas a uma rede de comunicação
e dividir as tarefas do sistema operacional
entre elas. No entanto, este tipo de sistema
operacional deve levar em consideração
as diferentes máquinas conectadas à rede.
Um exemplo de sistema operacional mul-
tiprocessado entre diferentes máquinas é
o Sistema Corba (Common Object Request
Broker Architecture) de implementação de
middlewares (programa de computador que
faz a mediação entre software e demais
aplicações).
• SO de Computadores Pessoais
São sistemas operacionais multi-
programados que oferecem uma interface
amigável aos usuários e permitem que pro-
gramas aplicativos possam ser executados
naquele ambiente. Podem estar instalados
em uma rede de computadores, solicitando
tarefas ou informações à servidores. A estes
sistemas pode-se chamar de sistemas clien-
tes, que são versões reduzidas dos sistemas
operacionais de Servidores.
Linux, Windows, Mac e OS são exem-
plos de sistemas que operam em compu-
tadores operacionais.
• SO de Tempo Real
São sistemas operacionais que pos-
suem restrições de tempo para a execução
de determinadas tarefas. Este tipo de sis-
tema operacional é comum no controle
de processos industriais onde há coleta de
dados do processo, leitura de entradas e es-
crita nas saídas, deve ocorrer em intervalos
de tempo bastante rígidos. Estes sistemas
são denominados sistemas operacionais de
tempo real crítico, onde qualquer atraso no
processamento de uma tarefa ocasiona uma
falha no processo.
Existem outros sistema de tempo real
não crítico, onde um atraso ocasional de
uma tarefa é permitido. Sistemas de áudio
de multimídia, como o VxWorks e QNX
são exemplos conhecidos desta categoria.
• SO Embarcados
São sistemas operacionais instalados
em dispositivos que geralmente cabem no
bolso do usuário e permitem rodar uma
quantidade limitada de aplicações, como
agendas de endereços, planilhas eletrônicas
31FUNDAMENTOS COMPUTACIONAIS
dentre outras. Os computadores de bordo
automotivo são exemplos de equipamen-
tos que possuem um sistema operacional
embarcado, porém não são os únicos, te-
levisores, fornos microondas, geladeiras,
telefones celulares, videogames enfim, todos
os equipamentos microprocessados necessi-
tam de uma espécie de sistema operacional
para poderem rodar.
• SO de Cartões Inteligentes
Nasce uma nova categoria de siste-
mas operacionais cujas restrições de con-
sumo de energia e segurança são requisitos
básicos. Os cartões de bancos são exemplos
da utilização deste tipo de sistema operacio-
nal que, muitas vezes, são orientados a Java,
gravados em ROM e implementados com
multitarefa e inclusão de novos aplets ao
cartão. No entanto, estes tipos de recursos
enfraquecem a segurança do sistema.
Sistemas Numéricos e
Representação de Dados
Os algarismos, como conhecemos
hoje, surgiram no final do Século VI, porém,
durante este século não existia o zero nos
algarismos conhecidos pelo Ocidente. O
zero já era aplicado neste mesmo século pe-
los Hindus. Foi apenas em 825 d.C. que um
sábio de Bagdá, chamado al-Khowarizmi,
trabalhando na tradução de todos os livros
de matemática de seu reino, encontrou do-
cumentos hindus que apresentavam o siste-
ma numérico decimal. Al-Khowarizmi,
maravilhado com a descoberta, escreveu um
livro chamado Arte Hindu de Calcular, que
popularizou mundialmente este sistema,
conhecido como indo-arábicos. O termo
algarismo foi utilizado em homenagem a
este sábio.
A base do sistema numérico indo-
-arábico é 10, pois possui dez algarismos.
Porém, outras bases surgiram em outras
civilizações que ainda são usadas nos dias
atuais. Exemplo disto é o sistema numérico
inventado pelos babilônios, possuíam 60
algarismos e ainda hoje é utilizado para
representar ângulos e tempo.Nos sistemas
de computadores os sistemas numéricos
mais utilizados são o de base 2, conheci-
do como Binário, o de base 8, conhecido
como octal e o de base 16, conhecido como
hexadecimal.
Todo o número escrito em um de-
terminado sistema de numeração de base
b pode ser escrito através do seguinte po-
linômio:
N = anbn + an-1 bn-1 + ... + a1 b1+ a0 b0
N = número
a = algarismo
b = base
Para a < b, onde a 0 é o algarismo
menos significativo (à direita), an é o al-
garismo mais significativo do número (à
esquerda) e b é a base do número. Esta
fórmula serve para converter qualquer base,
para a base decimal.
Sistema Decimal
Um sistema decimal usa dez algaris-
mos (0 a 9). Neste sistema, cada elemento
a esquerda de um algarismo possui uma
ordem de grandeza 10 vezes maior que o
da sua direita. Portanto, considerando o
polinômio de um sistema de numeração,
32FUNDAMENTOS COMPUTACIONAIS
podemos decompor o número decimal 1325
no seguinte polinômio:
1325 = 1 . 103 + 3 . 102 + 2 . 101 + 5 . 100
Exemplo: Tomando como referência
a base 5:
(4130)5
4*53 + 1*52 + 3*51 + 0*50 =
500 + 25 + 15 + 0 = (540)10
Onde:
a3 = 4, a2 = 1, a1 = 3, a0 = 0
b = 5
Sistema Binário
O sistema binário possui apenas dois
algarismos, zero e um. Ele simplifica e agi-
liza a maneira dos computadores realizarem
operações. Outra vantagem deste sistema é
usar menos espaço de memória para arma-
zenar o dado, se comparado com o sistema
decimal. Qualquer número, representado na
base binária, deverá ser interpretado como
o seguinte polinômio, para transformá-lo
em decimal:
N = bn2n + bn−1 2n−1 + ...+ b1 21 + b0 20
Exemplo:
Nos computadores, o sistema binário,
tem a função de realizar operações lógicas,
cujo resultado é verdadeiro ou falso, e também
para cálculos matemáticos simples e com-
plexos. A representação de números inteiros,
reais, complexos, etc. É feito através da com-
binação e organização dos números binários.
Na terminologia dos computadores,
palavra é um grupo de algarismos binário
(bits) que podem ocupar uma localização
na memória, e, que podem ser processados
de uma só vez, podendo ser um número
binário que é para ser manuseado como
um dado, ou, uma instrução que diz ao
computador que operação deve ser execu-
tada. Pode ser também um caractere ASCII
representando uma letra do alfabeto, ou
ainda, um endereço que diz ao processador
onde se localiza um dado.
Desta forma temos os seguintes con-
juntos de representação de dados:
• Bit (menor informação tratada
pelo computador)
• Nibble: 4 bits (16 variações);
• Dígito: 6 bits (36 variações);
• Byte: 8 bits (256 variações);
• Meia palavra: 16 bits (65.536
variações);
• Palav r a (word): 32 bits
(4.294.967.296 variações);
• Palavra dupla (dword): 64 bits
(18.446.744.073.709.551.616
variações).
• Palavra quádrupla: 128 bits
33FUNDAMENTOS COMPUTACIONAIS
Unidades de Bytes e conversões
Em sistemas computacionais o conjunto de bytes possuem denominações espe-
cíficas conforme sua quantidade. Veja algumas delas na tabela abaixo:
Unidades de Bytes
Por exemplo: Temos 20MB e que-
remos descobrir quantos bits contém nele
basta fazer o seguinte cálculo:
1 MB = 1024 KB, logo, 20 MB * 1024 =
20480 KB.
1KB = 1024 Bytes, logo 20480 KB * 1024
= 20.971.520 Bytes.
1 Byte = 8 bits, logo 20.971.520 Bytes * 8
= 167.772.160 Bits
Sistema Octal
Um sistema Octal possui 8 algaris-
mos, 0, 1, 2, 3, 5, 6, 7, é representado pelo
seguinte polinômio:
N= bn8n + bn−1 8n−1 + ... + b1 81 + b0 80
Exemplo:
Fonte: dosponível aqui
http://robsoniguaba.blogspot.com.br/2015/12/unidade-de-medida-de-computador.html
34FUNDAMENTOS COMPUTACIONAIS
Sistema Hexadecimal
Um sistema Hexadecimal possui 16
algarismos, 0, 1, 2, 3, 5, 6, 7, 8, 9, A, B,
C, D, E, F, onde os algarismos alfabéticos
equivalem ao A = 10, B = 11, C = 12, D =
13, E = 14 e F = 15. Um número em um
sistema hexadecimal é representado pelo
seguinte polinômio:
N=bn16n+bn−116n−1+...+b1161+b0 160
Exemplo:
O sistema numérico Hexadecimal é
utilizado também nos sistemas computado-
res, porém, apenas para visualizar de forma
mais amigável. É bastante usado para a
programação em linguagem assembly, pois
cada dígito equivale a uma palavra, tor-
nando o programa um pouco mais legível.
Mudança da Base 10 para base Binária
Para mudar um número decimal
para base binária, basta dividir o número
sucessivamente por 2 até encontrar um
valor menor que 2.
Resultado: 10010112
Quanto maior a base de um sistema
de numeração, menor o número
de algarismos necessários para
representar um valor.
35FUNDAMENTOS COMPUTACIONAIS
O resultado é obtido com os restos
da divisão, e sempre da direita para a es-
querda, como indicada a seta para a leitura
do número.
Mudança da Base 10 para a Base Octal
A mudança da base decimal para a
base octal é feita por meio de divisões su-
cessivas até encontrar um valor menor
que 8. De fato, esta regra serve também
para transformar um número decimal para
qualquer outra base. Por exemplo, para
converter o número (75)10 basta dividir
o número sucessivamente como mostra a
imagem:
Resultado: (113)8
O resultado é obtido com os restos da
divisão, e sempre da direita para a esquerda,
como indicada a seta de leitura do número.
Mudança da Base 10 para a Base
Hexadecimal
Para mudar um número decimal para
hexadecimal, basta dividi-lo sucessiva-
mente por 16 até encontrar um valor me-
nor que 16. Por exemplo, para converter o
número 7510 para a base hexadecimal faça.
Resultado: B416
O resultado é obtido com os restos da
divisão, e sempre da direita para a esquerda,
como indicada a seta de leitura do número.
Nesse é importante lembrar que os números
precisam ser convertidos para Hexadecimal,
por exemplo o 11 que é representado pela
letra B na base hexadecimal.
Mudança entre bases de potência 2
A base binária é sempre intermediá-
ria, portanto deve-se converter o número na
base de origem para a base binária e desta
para a base de destino, observando sempre
a potência de 2 como agrupamento de bits,
que devem ser agrupados sempre da direita
para a esquerda.
• Da base 2 para base 8
Como 8 = 23, emprega-se agrupa-
mento de 3 em 3 bits:
(111010111)2 = (?)8
111 010 111
7 2 7
(111010111)2 = (727)8
• Da base 2 para base 16
Como 16 = 24, emprega-se agrupa-
mento de 4 em 4 bits:
36FUNDAMENTOS COMPUTACIONAIS
(1011011011)2 = (?)16
0010 1101 1011
2 13 11
(1011011011)2 = (2DB)16
• Da base 8 para base 16
É necessário usar a base binária como
intermediária. Como 8 = 23, cada dígito
octal vira 3 bits para a obtenção do valor
binário. Após, como 16 = 24, os agrupamen-
tos de 4 bits são usados para o valor final.
(2E7A)16 = (?)8
0010 1110 0111 1010
010 111 001 111 010
2 7 1 7 2
(2E7A)16 = (27172)8
Aritmética Não Decimal
Adição Binária
A soma binária é igual a soma de
números decimais, porém deve-se levar em
conta que só existem dois algarismos neste
sistema. A seguir todas as possibilidades
na soma binária.
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0, e vai 1 ou 102
1 + 1 + 1 = 1, com “vai um” ou 112
Exemplos:
Subtração Binária
Em binário, a subtração ocorre da
mesma forma que na base decimal. Ocorre
o “empréstimo” caso o resultado seja menor
que 0.
Quando o minuendo for menor que
o subtraendo, deve ocorrer o empréstimo
(borrow) no valor da base, no caso 2, do
primeiro algarismo diferente de zero à es-
querda.
37FUNDAMENTOS COMPUTACIONAIS
Exemplos:
Adição Octal
Procede-se da mesma maneira que
na base binária, respeitando o limite do
algarismo, neste caso 7. Se a soma for maior
que 7, este fica sendo 0 e adiciona-se 1 ao
algarismo posterior.
Subtração Octal
Procede-se da mesma maneira que
na base binária, observando a regra do em-
préstimo da base, neste caso 8, do primeiro
algarismo diferente de zero à esquerda.
Adição Hexadecimal
Procede-se da mesma maneira que
na base binária, respeitando o limite do
algarismo, neste caso F (15). Se a somafor
maior que 15, este fica sendo 0 e adiciona-se
1 ao algarismo posterior.
Subtração Hexadecimal
Procede-se da mesma maneira que
na base binária, observando a regra do em-
préstimo da base, neste caso 16, do primeiro
algarismo diferente de zero à esquerda.
0 - 0 = 0
1 - 0 = 1
1 - 1 = 0
0 - 1 = 1, com “empréstimo” de 2
38FUNDAMENTOS COMPUTACIONAIS
Representação em Tamanho
Fixo
Consiste na definição de um núme-
ro fixo de bits a serem empregados para
representar um número. É o que ocorre
nos computadores digitais, dependendo
da arquitetura do computador, tamanho
do barramento e registradores.
Exemplos:
O número (4)10 representado em
uma arquitetura binária de tamanho 6, é
escrito da forma: 000100
Em arquitetura de tamanho 8:
00000100
O Overflow ocorre quando não é
possível armazenar um determinado valor
na quantidade de bits definida como tama-
nho na arquitetura. Em geral, é resultado
de operações matemáticas. Na prática pode
corromper a memória por escrever em um
endereço que deve fazer parte de outro
dado.
Exemplo, para representação em 4
bits.
Representação Números
Negativos
Para representar números negativos,
convencionou-se o emprego de um bit de
sinal, o mais significativo (mais à esquerda):
0 = positivo
1= negativo
Será visto duas formas de se repre-
sentar um número, que permita a definição
de números positivos e negativos: Sinal-
-Magnitude e Complemento de 2.
Sinal-Magnitude
Uma representação de números bi-
nários em sinal-magnitude divide a infor-
mação em duas partes.
1 bit para o sinal (o mais significa-
tivo)
Demais bits para a magnitude (valor
absoluto do número)
Desta forma, o valor em binário uti-
lizado para representar o número positivo
ou negativo é o mesmo, variando apenas
o bit de sinal.
Fonte: dosponível aqui
http://s3.amazonaws.com/magoo/ABAAAABbUAI-27.jpg
39FUNDAMENTOS COMPUTACIONAIS
Se o tamanho determinado para a
representação de um número for “n”, então
será possível representar os valores de
-(2n-1 - 1) até (2n-1 - 1)
2n-1 pois reserva-se um bit para o
sinal. Subtrai-se 1 pois o primeiro valor a
ser representado é o 0.
Exemplo: Se “n” for 8, em um byte
podemos representar os valores:
-(27 - 1) até (27 - 1)
-127 até 127
256 valores diferentes
Neste caso serão duas representações
para o zero. Um inconveniente da repre-
sentação sinal-magnitude.
Complemento de 2
Em matemática, complemento de
um número é a quantidade que falta para
completar um valor. Por exemplo, o com-
plemento de um ângulo agudo é o número
de graus necessários para chegar a 90.
Em operações aritméticas, comple-
mento à base de um número N é o valor
necessário para se obter o valor máximo
representável pela base, e se obtém da se-
guinte forma:
• Subtrai-se de cada algarismo o maior
algarismo da base (complemento de
base-1)
• Soma-se 1 ao resultado (complemen-
to de base).
Representação em complemento de
base de 297
999
-297
702 1 = 703
A soma de um número com o seu
complemento sempre será o número de
valores possíveis de serem escritos na re-
presentação.
Exemplo: 297 + 703 = 1000
No caso de números binários, para
se chegar ao complemento de base, ou seja,
complemento de 2, subtrai-se cada algaris-
mo de 1 e depois soma-se um ao resultado.
Ou para simplificar basta, inverter os bits
do número e somar 1 ao resultado obtido.
Exemplo:
Representação em complemento de
2 de 10010:
1101 = 01110
A representação de números po-
sitivos em complemento não é alterada,
apenas emprega-se o bit do sinal (igual à
representação Sinal-Magnitude).
A representação de um número ne-
gativo se obtém fazendo o complemento
à base do número positivo.
40FUNDAMENTOS COMPUTACIONAIS
Tipo de
representação
Representações
para zero
Custo Velocidade
Sinal-
Magnitude
Duas Alto (componentes
separados para soma
e subtração)
Baixa (algoritmo de
verificação de sinais,
soma e subtração)
Complemento
de 2
Uma Baixo (um componente
único para soma)
Alta (algoritmo
simples e único para
soma)
Comparativo entre as duas representações
Fonte: Autor
QUESTÕES DO CAPÍTULO 2
1. Quantos bits existem em 64KB?
2. Quantas palavras existem em 1KB?
3. Quantos bits existem em 1Mb?
4. Quantos KB existem em 65536 bits?
5. Converta os valores abaixo para base
decimal
a. (1021)3 =
b. (14501)7 =
c. (387)9 =
d. (624)8 =
e. (1011101)2 =
f. (1EB)16 =
g. (23AF)16 =
h. (74D32)16 =
i. (2C3A)16 =
j. (DBAC)16 =
k. (AAA)16 =
42FUNDAMENTOS COMPUTACIONAIS
LINGUAGENS E
ORGANIZAÇÃO
DA INFORMAÇÃO
Você já ouviu falar de alguma linguagem de
programação? Sabia que elas estão presentes
em tudo que você faz no computador?
As linguagens de programação são maneiras de traduzir
uma solução ou regras para encontrar a solução de problemas
que possam ser solucionados através de sistemas computacionais.
Todo e qualquer programa, desde o sistema operacional até os
aplicativos de usuários, são desenvolvidos em uma determinada
linguagem. A escolha da linguagem determina o sucesso ou o
fracasso na construção de um aplicativo.
As linguagens de programação tem como função traduzir
para uma linguagem próxima do ser humano e para uma lin-
guagem que possa ser compreendida pelo processador, isto é,
uma linguagem de programação traduz, a prioridade, um texto,
representando um algoritmo para resolver um determinado
43FUNDAMENTOS COMPUTACIONAIS
problema, em um conjunto de instruções
de máquina de um processador.
Linguagens de Programação
Surgimentos das principais linguagens de programação
44FUNDAMENTOS COMPUTACIONAIS
A figura mostra o surgimento de al-
gumas das principais linguagens de progra-
mação existentes no mercado.
As linguagens vêm evoluindo ao
longo dos anos com o objetivo de aproxi-
mar a maneira de programar à linguagem
humana, isto é, torná-las cada vez mais
compreensíveis e menos complexas. Toda
a linguagem irá converter um arquivo texto
que contém expressões lógicas, aritméticas,
palavras reservadas à linguagem, dentre
outros objetos, em uma sequência de ins-
truções de máquinas pertencentes a um
determinado processador. Estas linguagens
podem ser compiladas ou interpretadas, ou
seja, podem gerar um arquivo que conterá
todo o código executável de uma única vez
ou podem traduzir à medida que o pro-
grama é executado, respectivamente. Esta
tarefa é feita pelos compiladores de uma
determinada linguagem porém, as tarefas
executadas por um compilador são basi-
camente as mesmas, independentemente
do tipo de linguagem. O fluxo mostra as
etapas que os compiladores executam antes
de gerarem o arquivo executável, um código
entendível para o computador.
Analisador Léxico tem como função
identificar as unidades léxicas da linguagem,
ou seja, dividir o que são palavras-reserva-
das, variáveis, números, etc. Por exemplo, o
analisador léxico identifica operandos como
IF, THEN, MinhaVariável, dentre outros.
Analisador Sintático, por sua vez
verifica se a estrutura do programa foi feita
segundo as regras gramaticais da linguagem.
O analisador sintático verifica a sequência
de um comando de repetição foi digitada
corretamente como no exemplo WHILE
MinhaVariável == 0 DO.
Analisador Semântico verifica se
as expressões do programa fazem sentido,
como por exemplo verificar se os tipos de
variáveis estão corretos com as atribuições.
O Gerador de Código Intermediário
gera uma representação intermediária entre
a linguagem de alto nível e a linguagem de
máquina do processador alvo a fim de faci-
litar esta tradução. Esta não é obrigatória
e alguns compiladores a usam e outros não.
Otimizador de Código, algumas
45FUNDAMENTOS COMPUTACIONAIS
linguagens avaliam as expressões a fim de
simplificá-las e tornar o executável mais
rápido. Um exemplo disto é verificar ex-
pressões aritméticas que envolvem multi-
plicação e divisão de números por múltiplos
de dois e substituí-las por instruções de
deslocamento evitando, assim, o uso do
processador aritmético.
É na etapado Gerador de Código
Objeto que o programa é de fato traduzido
para o código alvo, ou seja, traduzido para
o conjunto de instruções de um determi-
nado microprocessador. Após a geração do
programa objeto é necessário montá-lo e
ligá-lo a fim de gerar o arquivo executável.
As linguagens podem ser divididas
através de sua aproximação à linguagem
humana:
• Linguagens de Baixo Nível;
• Linguagens não estruturadas;
• Linguagens Procedurais;
• Linguagens Funcionais;
• Linguagens Orientadas a Objeto;
• Linguagens Específicas;
• Linguagens de Quarta Geração ou
Visuais;
Linguagens de Baixo Nível
São linguagens cujas instruções estão
mais próximas do código de máquina do
que da linguagem humana. Pode-se di-
zer que para cada processador existe uma
linguagem correspondente, ou seja, uma
linguagem que é determinada pelo set de
instruções daquele microprocessador. Estas
linguagens são conhecidas como Lingua-
gem Assembly.
Linguagens Não Estruturadas
São linguagens que não possuem
uma relação direta com as linguagens as-
sembly, ou seja, o conjunto de instruções
destas linguagens não são os mesmos do
código de máquina. É possível então de-
senvolver programas independentes do tipo
de microprocessador que irão rodar, e é só
na etapa de gerar o código que isto é deter-
minado. A não estrutura destas linguagens
dá-se pelo fato de não poder dividir de
forma coerente as diferentes tarefas de um
programa, isto é, os programas são feitos
em um único arquivo.
São exemplos as linguagens: Cobol,
Basic.
Linguagens Procedurais
As linguagens procedurais são um
subconjunto das linguagens estruturadas,
cujos controles e organização são mais efi-
cientes tornando-as mais claras sobre o
ponto de vista sintático. As linguagens
procedurais ordenam a construção dos pro-
gramas através de uma estrutura de cha-
madas de procedimentos. As mais comuns
Exemplos de Linguagens
46FUNDAMENTOS COMPUTACIONAIS
são C, Pascal, Fortran, dentre outras. Cada
uma destas linguagens possui vantagens e
desvantagens, porém são mais especialistas
que outras em determinadas tarefas.
Linguagens Funcionais
As linguagens funcionais, ao con-
trário das procedurais, não estão interes-
sadas em executar comandos, mas sim em
avaliar expressões que combinam valores
básicos (verdadeiro ou falso). Algumas
destas linguagens não possuem a solução
do problema embutida no seu código, pos-
suem às regras que permitem encontrar
a solução de um determinado problema.
Geralmente estas linguagens são utiliza-
das em softwares especialistas como por
exemplo, programas que jogam Xadrez, não
precisam ter previstas todas as jogadas em
seu código, basta ensinar os movimentos
básicos de cada peça.
São exemplos de linguagens funcio-
nais a Prolog e Lisp.
Linguagens Orientadas a Objeto
O surgimento das linguagens Orien-
tadas a Objeto está relacionada com as
novas técnicas de Engenharia de Software
que surgiram para orientar e organizar pro-
cessos, minimizar o tempo de programação
e promover a reusabilidade do código. Além
disso, não havia na década de 90 uma lin-
guagem de programação igual ao paradigma
de banco de dados relacional.
Uma das principais características
deste paradigma é que todas as informações,
dados e código, são encapsulados e trafegam
junto com o fluxo do programa. Uma vez
encapsulados em uma classe, esta define
o comportamento de todas as instâncias
daquele objeto. Outras características como
hereditariedade são implementadas neste
tipo de paradigma de programação.
Smaltalk, C++ e Java são exemplos
de linguagens orientadas a objeto.
Exemplos de Linguagens
Exemplos de Linguagens
Exemplos de Linguagens
47FUNDAMENTOS COMPUTACIONAIS
Linguagens Específicas
São linguagens desenvolvidas para
suprirem necessidades específicas como o
tratamento de banco de dados, formatação
de textos, simulação dentre outros.
Por exemplo, a linguagem SQL
(Structured Query Language) é uma lin-
guagem para consulta a bando de dados
baseada no modelo de banco de dados re-
lacional. Esta linguagem está normatizada,
e é incorporada pela maioria dos bancos de
dados disponíveis no mercado. O estudo
da linguagem SQL está relacionado com
a aritmética e lógica relacional e possui
relação direta para a sua conversão.
Outro exemplo é o Matlab, que ini-
cialmente foi criado para o ensino de teoria
matricial, álgebra linear e análise numérica,
nas Universidades de Standfor e Novo Mé-
xico, na década de 70. Atualmente este pro-
grama é fornecido pela Math Workx e está
voltada a aplicações científicas e simulação
de sistemas. Sua sintaxe é bastante fácil e
possui uma grande variedade de bibliotecas
para aplicações que vão desde a simulação
de sistemas digitais, processamento de si-
nais e sistemas complexos como dinâmica
de fluidos computacional. Sua principal
vantagem é fornecer os resultados rapida-
mente ao usuário.
Além dessas, temos a HTML, LA-
TEX, Perl, entre outras.
Linguagens de Quarta Geração ou Visuais
As linguagens de quarta geração ou
visuais surgiram em decorrência do surgi-
mento de sistemas operacionais cujas in-
terfaces são gráficas. O Windows foi um
dos responsáveis pelo surgimento destas
linguagens e na forma como são desenvol-
vidos os programas. Os usuários, através das
linguagens 4GL, podem criar seus próprios
sistemas com um mínimo de erro e tempo
de desenvolvimento.
Linguagem Visual Basic, Simulink,
Linguagem Delphi são exemplos de lin-
guagens visuais.
Estrutura e Organização da
Informação
A estrutura, de como os dados são
armazenados, é uma das partes mais impor-
tantes no projeto de um sistema computa-
cional, seja para o controle de uma empresa,
seja dentro de um dispositivo móvel. Esta
importância dá-se pelo fato de que todos
os procedimentos e funções a serem desen-
volvidas dentro do sistema dependerão da
definição destas estruturas.
Além da escolha da linguagem de
programação certa para resolver um deter-
minado problema, é a escolha da estrutura
de dados que garantirá uma melhor perfor-
mance do software construído. Para o caso
de sistemas de informação para empresas,
em geral, a estrutura de dados de um pro-
Exemplos de Linguagens
48FUNDAMENTOS COMPUTACIONAIS
grama deverá modelar os dados que repre-
sentam os processos reais daquela empresa.
As linguagens de programação forne-
cem ferramentas para fazer esta modelagem
que vão desde tipos de dados elementares,
como caracteres, inteiros, reais, etc., até mais
complexos como arquivos que são estruturas
que agrupam diferentes tipos de dados. A
seguir serão apresentadas algumas formas
de organizar os dados de um sistema.
Campo
O campo é a descrição de um atri-
buto, de uma determinada entidade. Os
campos podem ser formados por qualquer
tipo de dado elementar e está ligado a uma
determinada área de armazenamento pos-
suindo um significado lógico para o sistema.
Registro
Registro consiste de um agrupa-
mento de campos que representam uma
ocorrência de uma determinada entidade.
Em geral, cada registro é representado por
um campo de valor único dentro de uma
determinada coleção de entidades. Isto é,
cada registro terá um identificador, conhe-
cido como chave, que identificará uma e
somente uma entidade. Os registros são
comuns em arquivos de banco de dados.
A tabela mostra alguns exemplos de
coleção de registros e as chaves que re-
presentam um elemento único dentro da
coleção.
Arquivos
Os arquivos além de serem impor-
tantes para a manutenção dos sistemas
operacionais (modelagem de dispositivos,
comunicação entre processos, etc.), pos-
suem papel importante na abstração para
armazenamento de dados nos sistemas
computacionais. Um arquivo que contém
dados armazenados de forma sequencial,
isto é, um registro após o outro.
Embora todos os arquivos conte-
nham dados, a relevância desses é dada
sempre a um nível superior, ou seja, a nível
de usuário. Quando um conjunto de dados
agrupados tem significado, isto torna-se
informação.Portanto a diferença entre
dados e informações é que estas permitem a
tomada de decisão ou a execução de tarefas
de acordo com os objetivos de cada sistema
ou programa.
Entidade Atributos
Livro
Título
Categoria
Autor
Cliente
Nome
Sobrenome
CPF
Campo Registro Chave
Registro de Carros Número do Chassi
Registro de Clientes Número do CPF
Registro de Notas
Fiscais
Número da Nota
Fiscal
Registro de
Funcionários
Número da Matrícula
Registro
49FUNDAMENTOS COMPUTACIONAIS
Métodos de Acesso aos Dados
Método de acesso aos dados são os
algoritmos de busca, inserção, atualização,
dentre outros, utilizados pelo sistema de
informação e a escolha de um tipo de algo-
ritmo em detrimento de outro determinará
o grau de dificuldade daquele sistema.
• Acesso Serial
Os arquivos de acesso serial são
aqueles cujos dados são armazenados no
arquivo na ordem em que foram criados
e seus registros possuem tamanhos e se-
quência de dados iguais. O acesso deste
tipo de arquivo é feito através da procura
sequencial do registro.
A característica do acesso serial é que
um registro só é alcançado após a finaliza-
ção da leitura do anterior. Esta metodolo-
gia gera tempos de acessos extremamente
longos à medida que o arquivo cresce. A
atualização do arquivo neste método impli-
ca na criação de um arquivo auxiliar dentro
do sistema, duplicando a área ocupada no
disco.
• Acesso Sequencial
A principal característica do acesso
sequencial é que os registros são armaze-
nados por ordem de classificação de chave.
Quando armazenados em ordem crescente
de chaves, o acesso torna-se serial e facil-
mente calculado, uma vez que o tamanho
de cada registro é igual.
Uma das maneiras de garantir que o
arquivo com os dados seja mantido ordena-
do é o uso de árvores binárias para manter
os dados em memória antes de salvá-los em
disco, garantindo, assim, que a ordenação
não afete a performance do sistema.
• Acesso Sequencial Indexado
Este método consiste em manter
um arquivo de índices que aponta para
a posição do registro dentro do arquivo.
O arquivo de índices é gerado durante a
criação do arquivo ou na manutenção do
mesmo. Além disso, este arquivo de índices
Dados, Processamento e Informação
Fonte:Tanembaum, 2007
Organização dos dados em acesso serial
Fonte:Adaptado de Link.
Organização dos dados, ordenados pela chave
Fonte:Adaptado de Link.
Organização dos dados, ordenados pela chave
Fonte:Adaptado de Link.
http://www.ufpa.br/sampaio/curso_de_estdados_2/organizacao_arquivos/organizacao_arquivos.htm
http://www.ufpa.br/sampaio/curso_de_estdados_2/organizacao_arquivos/organizacao_arquivos.htm
http://www.ufpa.br/sampaio/curso_de_estdados_2/organizacao_arquivos/organizacao_arquivos.htm
50FUNDAMENTOS COMPUTACIONAIS
poderá ser mantido ordenado ou ainda usar
uma estrutura em árvore binária quando
carregado na memória. A busca neste tipo
de método é muito rápida.
• Acesso Direto
O método de acesso direto é definido
pela correspondência direta entre a chave
do registro e o endereço físico do registro
no dispositivo de armazenamento. Desta
forma, ao tentar localizar um registro, o
software estará acessando diretamente o
endereço onde aquele registro foi gravado.
Este método garante grande desempenho
no acesso aos dados.
Banco de Dados
Uma maneira simples de definir um
banco de dados é um conjunto de arqui-
vos, contendo registros, organizados para
garantir a melhor performance durante as
consultas, inserções, atualizações e criação
de dados. Ao contrário dos arquivos con-
vencionais que possuem uma diversidade
de dados que não possuem relação entre
si, um banco de dados possui uma relação
entre os dados que dão ao usuário infor-
mações relevantes. Portanto um banco de
dados possui dados elementares e também
dados secundários, provenientes das rela-
ções entre os dados. Estes dados podem
ser classificados como: Dados principais;
Dados de estrutura; Dados de índice; Dados
de controle; e Dicionário de dados.
Um Banco de Dados deve ser capaz
de representar os dados do mundo real,
isto é, o Banco de Dados deverá ser capaz
de modelar os dados principais, relações
e transações entre os mesmos. Um Banco
de Dados possui diferentes níveis de infor-
mações, relacionados a cada etapa de sua
construção. A Figura mostra a relação entre
as etapas de elaboração de um Banco de
Dados e as informações associadas a cada
uma delas.
Um modelo de banco de dados dá-se
através de duas fases e quatro etapas a fim
de manter uma organização e relação en-
tre o mundo real e os dados representados
dentro do sistema.
Organização dos dados através de índices
Fonte:Adaptado de Link.
Banco de Dados e os níveis de informação
http://www.ufpa.br/sampaio/curso_de_estdados_2/organizacao_arquivos/organizacao_arquivos.htm
51FUNDAMENTOS COMPUTACIONAIS
A primeira fase diz respeito à con-
ceituação do modelo onde são levantadas
e analisadas as informações do mundo real,
suas relações e transações entre os proces-
sos. A partir disto é formulado o modelo
conceitual do banco de dados, isto é, são
definidas as estruturas de informações e os
métodos de manipulação.
A segunda fase é quando o banco de
dados é implementado, ou seja, são defini-
dos o modelo lógico e físico dos dados, as
rotinas de consulta, atualização, inserção,
dentre outros do banco de dados.
Modelo Relacional
O modelo relacional de banco de
dados é o mais utilizado atualmente e ofe-
rece grandes vantagens sobre os demais
modelos de banco de dados e a base de sua
estrutura é a matemática relacional. Um
banco de dados relacional possui algumas
terminologias que devem ser conhecidas
para entender o modelo.
Terminologia Descrição
Domínio É um grupo de valores legais que correspondem a uma sequência
de registros válidos, encontrados em um determinado conjunto de
atributos.
Tupla É a linha de uma tabela a qual possui os valores de cada atributo.
Atributo É uma coluna da tabela onde cada coluna corresponde a um atributo.
Chave primária É um identificador único para a tabela ou para uma tupla. Este número
não pode ser repetido dentro de cada tabela.
Relações São as regras para a formação e escolhas de tuplas dentro das tabelas.
As relações podem combinar mais de um atributo para realizar a
pesquisa. As relações possuem as seguintes propriedades:
• Inexistem tuplas em duplicata;
• As tuplas não seguem ordem alguma;
• Os atributos não seguem ordem alguma;
• Todos os valores dos atributos são atômicos.
Banco de Dados e os níveis de informação
52FUNDAMENTOS COMPUTACIONAIS
Modelo Não Relacional
Cada vez mais, precisamos lidar com
enormes volumes de informações. Tem al-
guma forma eficiente de banco para resolver
este problema de maneira eficiente?
O SQL é o termo usado para des-
crever bancos de dados não relacionais de
alto desempenho. Os bancos de dados não
relacionais usam diversos modelos de dados,
incluindo documentos, gráficos, chave-va-
lor e colunares. Com este tipo de banco é
possível ter um desempenho escalonável,
alta disponibilidade, resiliência, além de ter
fácil desenvolvimento.
Todos os bancos não relacionais, têm
em comum, as key-value stores, ou seja,
salvam um conjunto de entradas formadas
por uma chave associada a um valor. O va-
lor pode ser de qualquer tipo, uma string,
numérico ou binário que está sendo salvo
sem normatização (schema-free).
O CouchDB é um dos mais famo-
sos no time dos key-value stores. Nele são
usados documentos para definir uma es-
trutura no banco, armazenando uma chave
associada ao documento. Um documento é
apresentado como JSON. Exemplo:
{
“Subject”: “Bancos não relacionais”
“Author”: “Nico Stepat”
“PostedDate”: “10/15/2009”
“Tags”: [“database”, “nosql”, “rest”]
}
QUESTÕES DO CAPÍTULO 3
1. Pesquise as diferenças entre modelos
de banco de dados relacional e
não relacional e monte uma tabela
comparativa entre os dois modelos.
2. Quais são as principais formas de
acessar os dados no banco de dados.
Expliquecada uma delas.
3. Faça uma pesquisa do ranking das
linguagens utilizadas no momento.
4. A partir do ranking selecione a
primeira e faça um breve resumo
sobre ela.
54FUNDAMENTOS COMPUTACIONAIS
PLANEJAMENTO
ESTRATÉGICO DA
TI
Por que planejamento estratégico? Qual
a finalidade? É preciso uma execução
organizada e científica, e pensar em como
alcançar os objetivos nas etapas e técnicas
realizadas.
O planejamento estratégico de qualquer projeto engloba
técnicas de condução de reuniões, de entrevistas, de análise de
requisitos, planejamento dentre outras. O planejamento de
projetos de TI não é diferente, ou seja, é necessário apropriar-se
de diferentes técnicas a fim de executar os projetos de forma
científica e organizada.
Para entender melhor como realizar um plano estraté-
gico em TI é necessário entender de forma clara quais são os
objetivos a serem alcançados e as etapas de sua execução e as
técnicas relacionadas. Primeiramente será visto um resumo sobre
55FUNDAMENTOS COMPUTACIONAIS
a engenharia de software, que compreende
as técnicas para se executar um projeto que
envolva o desenvolvimento de um programa
e, em segundo lugar, algumas técnicas para
conduzir as diferentes etapas do projeto.
Engenharia de Software
Os projetos de softwares ou TI são
relativamente recentes e as técnicas usadas
são derivadas das engenharias clássicas. O
modelo clássico mais conhecido é o Cas-
cata.
No ciclo de vida clássico de um pro-
jeto não é permitido voltar à fase anterior,
ou seja, uma vez concluída, os custos para
voltar e refazer aquela etapa tornaria o pro-
jeto inviável. Por exemplo, ao se projetar
uma ponte, levantam-se todos os requisi-
tos ou características necessárias para sua
fabricação, uma vez feito isso, é iniciada a
fabricação. Caso os requisitos mudem pode
ocorrer que todo o projeto tenha que ser
refeito e as partes fabricadas descartadas.
As fases de um ciclo de vida dos mo-
delos clássicos são:
Planejamento - É o início do proje-
to. Nesta fase são estabelecidos os objetivos
do projeto, em linhas gerais.
Requisitos - Nesta fase são especi-
ficados os requisitos técnicos do projeto.
Projeto - Nesta fase são detalhadas
as partes que compõem o projeto.
Fabricação - É onde o projeto é im-
plementado de fato.
Testes - São avaliados os requisitos
do projeto com o produto.
Manutenção - São as alterações ne-
cessárias ou o acompanhamento para que
o produto resultante do projeto permaneça
funcional.
O ciclo de vida clássico serve para
projetos de engenharias clássicas, porém
tudo é muito volátil e muda rapidamente
não seguindo e não comportando o mesmo
Ciclo de vida modelo Cascata
Fonte:PRESSMAN, 1995
56FUNDAMENTOS COMPUTACIONAIS
fluxo de etapas tradicional. Para isso, al-
guns paradigmas de engenharia podem ser
aplicados ao desenvolvimento de software.
Além do paradigma clássico, é possível clas-
sificar em mais quatro formas diferentes de
organizar os projetos de softwares:
1. Prototipação;
2. Modelo Espiral;
3. Orientação a Objeto;
4. Técnicas de quarta geração.
Prototipação
Um dos principais benefícios da pro-
totipação é o de representar algo abstrato,
em um projeto de forma concreta, per-
mitindo uma interação e questionamento
sobre o produto de forma mais direta por
parte do cliente. A prototipação poderá ser
implementada de três maneiras diferentes:
• Protótipo baseado em papel ou em
computador pessoal com a intenção
de exibir a interface a ser desenvolvi-
da e permitir a rápida identificação
dos requisitos do sistema.
• Protótipo criado para implementa-
ção de alguma rotina a fim de testar
requisitos específicos a ser agregado
ao sistema.
• Programa já existente dentro do
sistema com a possibilidade de ser
melhorado a fim de justificar o cus-
to do desenvolvimento da solução
específica.
O ciclo de vida da prototipação é
diferente de um projeto de engenharia, e
ocorre através de uma interação mais pró-
xima com o cliente, definindo de forma
imediata as especificações do sistema.
Ciclo de vida da prototipação
Fonte:PRESSMAN, 1995
57FUNDAMENTOS COMPUTACIONAIS
As principais vantagens da prototi-
pação são:
• Menor prazo para o sistema entrar
em produção;
• Acompanhamento do usuário nas
fases do desenvolvimento minimi-
zando possíveis erros;
• Maximização na qualidade do
software desenvolvido;
• Software final mais adequado às ne-
cessidades do usuário.
Modelo Espiral
O modelo de ciclo de vida espiral
baseia-se em quatro quadrantes, eles re-
presentam atividades cíclicas que andam
junto com a evolução do projeto e devem
cumprir as seguintes tarefas:
Planejamento - Nesta etapa são de-
terminados os objetivos do sistema, isto é,
o escopo de fornecimento e suas restrições.
Análise dos Riscos - São identifica-
dos os riscos, é feita sua projeção, ou seja,
quais as probabilidades de ocorrer, conse-
quências e custos envolvidos. Após é feita
a avaliação para determinar os níveis de
complexidade e efeitos, e a administração
dos riscos, isto é, elaborar planos alternati-
vos e soluções para o projeto ser concluído
com sucesso.
Engenharia– Nesta etapa é realizada
a implementação das rotinas do sistema,
refinadas a cada ciclo.
Avaliação do Cliente – É a análise e
críticas feita pelo usuário final do produto.
Modelo Espiral
Fonte:PRESSMAN, 1995
58FUNDAMENTOS COMPUTACIONAIS
Técnicas de Quarta Geração
Como visto anteriormente, as lingua-
gens de programação que possuem ferra-
mentas que permitem a rápida elaboração
de sistemas através do uso de objetos gráfi-
cos, minimizam o tempo de elaboração de
um projeto. Além disso, estas ferramen-
tas permitem configurar banco de dados,
testar a carga do sistema para determinar
o desempenho do mesmo dentre outras
facilidades.
O uso de uma ferramenta 4GL deve
estar baseada nas facilidades que esta ofe-
rece ao programador tais como:
• Velocidade de desenvolvimento grá-
fico (Bibliotecas; Drag and drop,
etc.);
• Facilidades para a criação das estru-
turas de dados;
Alteração de rotinas e compilação
individual;
Suporte a outras linguagens (SQL,
etc.).
• Facilidades na construção de funções.
Funções definidas pelo usuário;
Customização de funções existentes;
Manutenção de bibliotecas, etc.;
Ferramentas CASE
O uso de ferramentas automatiza-
das para o auxílio aos projetos não surgiu
na área da TI, elas vêm sendo utilizadas
há muito tempo nas engenharias clássicas,
como na engenharia mecânica. As ferra-
mentas CASE (Computer Aided Softwa-
re Engineering), surgiram para agilizar o
desenvolvimento de sistemas baseados em
programas e, em geral, são baseadas em
alguma metodologia de desenvolvimento
de software. Elas podem ser classificadas
em três tipos distintos:
Integrated System CASE - Abran-
ge desde a análise, projeto e até a geração
do código. Estas ferramentas suportam
diferentes metodologias existentes.
CASES de automação de uma ou
mais fases de desenvolvimento - São aque-
las que auxiliam no desenvolvimento de
uma das fases do ciclo de vida de um pro-
jeto, ou seja, pode auxiliar na coleta, análise
de requisitos ou na análise de riscos ou em
mais fases. A exemplo disso, pode-se citar
ferramentas para automatizar a estrutura
dos dados de um sistema, como Erwin,
WinRunner, dentre outras.
Ferramentas de Metodologia Espe-
cífica- São aquelas que auxiliam no desen-
volvimento de todo o ciclo de vida de um
projeto fazendo uso de uma metodologia
científica, como Rational Rose que usa o
padrão UML.
Técnicas de JAD - Joint Application Design
As metodologias de análise de enge-
nharia de software garantem uma sistemá-
tica para o desenvolvimento de sistemas,
no entanto, a condução do projeto é feito
sempre através de pessoas. Um dos fatores
que podem influenciar no sucesso de um
projeto é a comunicação eficiente. A técnica
de JAD, criada pela IBM, permite acelerar
a integração entre os envolvidos no projeto.
59FUNDAMENTOS COMPUTACIONAIS
Na técnica de JAD é importante deixarbem
claro o papel de cada integrante do projeto.
A seguir são definidos os integrantes e seus
papéis.
Condutor - É papel do condutor
direcionar os participantes para que al-
cancem os objetivos do projeto. Para isso
o condutor deverá ter as seguintes habili-
dades: Liderança; Objetividade; Comuni-
cação; Imparcialidade; Síntese; e Domínio
de técnicas de condução e metodologias.
Patrocinador - É o que tem maior
autoridade dentro do projeto por ser fun-
damental na definição dos objetivos, dos
participantes e do pagamento pelo projeto.
Patrono - É o segundo em comando,
cujo poder foi delegado a ele pelo patroci-
nador. É aquele que, em caso de impasse,
definirá o rumo do projeto.
Participantes - São aqueles que,
de alguma forma, interferem no processo
decisório do projeto, seja através do conhe-
cimento do processo ou pelo conhecimento
técnico.
Ouvintes - São pessoas convidadas,
sem direito a opinar, cujo maior interesse é
absorver informações para as fases seguintes
do projeto.
Escriba - É o responsável por regis-
trar os resultados da reunião por meio de
atas ou outras ferramentas e distribuir aos
participantes.
A técnica de JAD pode ser dividida
em três etapas distintas como segue:
• Pré-JAD: é uma reunião inicial junto
com o patrocinador e o gerente do
projeto de informática e demais inte-
grantes. É nesta fase que o condutor
recebe os objetivos do projeto e o
nome dos integrantes. Nesta eta-
pa são definidos também o escopo
do projeto e a agenda do mesmo.
O patrocinador é o responsável por
convocar à reunião.
• Sessão JAD : É a reunião propria-
mente dita, nela é que são detalha-
das as etapas de desenvolvimento do
projeto. Sua duração não deve de-
morar mais de dois dias, tendo como
consequência a perda de rendimento.
• Pós-JAD: São reuniões de acom-
panhamento nas quais são gerados
relatórios e novas definições a serem
executadas pela equipe de projeto.
Ao se reunir um grupo de pessoas
para alcançarem um objetivo comum po-
de-se ter problemas com a dinâmica deste
grupo. E papel do condutor observar o
comportamento dos participantes a fim de
intervir caso existam conflitos que possam
interferir no sucesso da reunião. A seguir
alguns dos conflitos mais comuns que po-
dem ocorrer nas reuniões:
Digressões - São discussões que sur-
gem e desviam-se do objetivo. É papel do
condutor identificar e avaliar se a discussão
poderá contribuir para o assunto em ques-
tão. No caso de não contribuir, o condutor
deverá interromper a discussão e chamar o
grupo de volta ao objetivo.
Conflitos - São discussões conflitan-
tes que podem levar algum item da agenda
60FUNDAMENTOS COMPUTACIONAIS
a um impasse. Neste caso, o impasse deve
ser levado ao grande grupo a fim de anali-
sarem outras opiniões. Caso o assunto não
gere atraso no projeto e não esteja sendo
resolvido pode-se deixá-lo como pendente
para a próxima reunião.
Discussões paralelas - Deve haver
uma e somente uma reunião acontecendo.
E condutor deverá interromper discussões
sobre assuntos paralelos.
Desgaste da equipe - É importante
manter o ambiente de discussão sempre
ativo, isto é, sem apatia. É sempre bom fazer
intervalos periódicos na reunião.
Assuntos Pendentes - Os assuntos
pendentes que porventura surgiram devem
ter uma equipe designada para propor so-
luções e apresentá-las na reunião Pós-JAD.
Existem inúmeros fatores que con-
tribuem para o sucesso de uma reunião de
JAD, no entanto, pode-se elencar alguns
deles:
Ambiente - Preferencialmente em
salas amplas, sem telefones e fora do local
de trabalho dos participantes.
Material de Apoio - Uso de mate-
riais como flip-charts, quadros, projetores,
fitas adesivas, folhas e prismas para identi-
ficação dos nomes dos participantes.
61FUNDAMENTOS COMPUTACIONAIS
Agenda - É imprescindível ter uma
agenda com os assuntos a serem abordados
na reunião. Deve ser seguida a risca pelo
condutor e estar visível a todo o momento.
Horários - O horário de início, in-
tervalos e final da reunião devem ser res-
peitados rigorosamente.
Ausência de Hierarquia - Não deve-
rá existir relação hierárquica dentro da reu-
nião, ou seja, todos poderão falar e deverão
ouvir cada um dos integrantes. Somente em
caso de impasse é que deverá ocorrer uma
intervenção pelo patrono ou patrocinador.
Código de Cooperação - Devem ser
elencados tópicos que nortearão a coope-
ração do grupo e estes devem ser seguidos
incondicionalmente. Isto deve ser feito no
início da sessão e poderão ser acrescentados
mais tópicos durante a mesma.
Comprometimento da Gerência -
O sucesso da reunião depende diretamente
do comprometimento da alta gerência, caso
contrário, será apenas uma perda de tempo.
Comprometimento dos Participan-
tes - O comprometimento dos participantes
dá-se pela presença em todo o momento
da reunião. Atrasos, saídas antecipadas
podem levar a retomada daqueles assuntos,
comprometendo assim o desempenho da
reunião.
Preparação - Toda a reunião deve
ser preparada antecipadamente, definindo
os tópicos a serem abordados bem como a
definição da necessidade de realização de
outras reuniões com equipes diferentes.
Fidelidade à Reunião - Este fator
diz respeito a documentação gerada antes
e durante a reunião. Toda e qualquer al-
teração nos tópicos devem ser registrados
e mantidos fiéis.
Jargões Técnicos - Devido a carac-
terística das reuniões de JAD serem multi-
disciplinares, é aconselhável que se reduza
o máximo os jargões técnicos das áreas en-
volvidas. Desta forma pode ser estabelecido
um ambiente com uma linguagem comum,
facilitando a compreensão de todos.
Desenvolvimento Interativo
A técnica de desenvolvimento inte-
rativo é uma extensão da Técnica de JAD
e é recomendada para todas as fases do
ciclo de vida de desenvolvimento de um
sistema de TI, ao contrário da JAD que é
efetivamente para a análise de requisitos.
Esta técnica garante alguns benefícios no
desenvolvimento de sistemas tais como:
Maior qualidade garantida por meio
da participação de especialistas de diferen-
tes áreas na especificação e revisão de cada
produto.
Maior produtividade pela eliminação
de tempos entre consulta e tomadas de
decisão;
Maior controle gerencial por defini-
ção clara de prazos e responsabilidades de
cada membro da equipe.
O desenvolvimento interativo possui
cinco fases distintas:
62FUNDAMENTOS COMPUTACIONAIS
Planejamento - nesta etapa são
definidos os assuntos a serem abordados
durante o ciclo de vida do projeto e a de-
finição dos participantes.
Preparação - é uma reunião com
os participantes para que todos saibam do
trabalho a ser realizado e detalhes dos pro-
dutos a serem avaliados durante a sessão
de especificação.
Especificação - é a reunião de fato,
e dela sairão todos os requisitos a serem al-
cançados e também uma ata registrando-os.
Desenvolvimento - é o acompa-
nhamento do cumprimento dos requisitos
da especificação e definição de produtos
complementares que serão desenvolvidos
por grupos atrelados a equipe principal.
Revisão - nesta etapa são validados
os produtos gerados ou definidas altera-
ções que deverão ser implementadas pelos
subgrupos da equipe. Cada produto a ser
elaborado passará por estas etapas do mé-
todo de desenvolvimento interativo.
Conectividade
A conectividade entre computadores
é a quarta etapa da computação e possi-
velmente o futuro da mesma. A conexão
em redes de computadores mudou a cul-
tura das organizações, usuários e permitiu
a convergência de diferentes tecnologias.
Os sistemas conectados via rede podem ser
chamadas também de sistemas abertos e
transformaram o modo de como trabalha-
mos atualmente.
A exemplo disto, os sistemas abertos
permitiram o surgimento de home offices,
minimizando o espaço das companhias,
maximizando o tempo dos colaboradores.
Além disso, pode-se dizer que este tipo de
cultura é amigável com o meio ambiente,
uma vez que minimiza o uso de meios de
transporte no deslocamento de colaborado-
res atéseus postos de trabalhos tradicionais.
Sob o ponto de vista computacional,
os sistemas abertos deram maior poder de
processamento, uma vez que este é feito em
diferentes camadas ao longo da rede. Por
outro lado, esta conectividade necessita de
63FUNDAMENTOS COMPUTACIONAIS
um gerenciamento mais complexo, tanto a
nível de sistema operacional quanto a nível
de aplicativos.
Sob o ponto de vista da segurança, o
que antes do surgimento desta tecnologia
não existia, levou as empresas a lidarem
com outros aspectos mais peculiares da
conectividade. Surgiram novas maneiras
de fraudar ou acessar informações sigilo-
sas que necessitou de novas maneiras de
proteger às informações, além de levar a
sociedade a criar leis para se adaptar a este
novo paradigma.
Características dos sistemas
abertos
Um sistema aberto é composto ba-
sicamente pela computação baseada em
sistemas do tipo cliente-servidor. Estes
sistemas possuem quatro elementos básicos:
Clientes: São programas ou compu-
tadores que solicitam serviços a programas
ou outros computadores da rede. Os clientes
possuem interfaces que rodam programas
nos computadores servidores, assim, aces-
sando-os remotamente através de uma rede
de comunicação. Podem também possuir
parte do processamento do sistema rodando
localmente, garantindo maior performance
ao sistema aberto.
Servidores: São computadores que
possuem aplicativos que permitem o com-
partilhamento de informações e de proces-
samento através de computadores remotos,
cadastrados previamente. Nos servidores
estão também os aplicativos que podem
ser usados por múltiplos clientes.
Redes: São conexões físicas e lógicas
(protocolos) entre as máquinas dos sistemas
por onde trafegam as solicitações e respos-
tas entre clientes e servidores. Existem
diferentes tipos de redes, desde as cone-
xões físicas como RS 232, RS 485, rádio
frequência, fibras ópticas, dentre outros.
Os protocolos, são regras preestabelecidas
de comunicação e podem variar conforme
a aplicação.
Softwares de gerenciamento de
rede: São programas que permitem o
controle e monitoração dos processos que
trafegam entre os computadores além de
garantir a integridade dos dados.
Softwares Clientes
São programas instalados nos com-
putadores clientes e que aparentemente
rodam localmente. Existem diferentes for-
mas de máquinas clientes. Em geral, os
computadores clientes possuem seu próprio
sistema operacional, que permite acessar os
recursos locais da máquina, e o programa
cliente. Este programa poderá ter diferentes
funcionalidades que vão desde uma simples
interface até cumprir parte do processa-
mento do sistema. A figura ilustra estas
funcionalidades:
64FUNDAMENTOS COMPUTACIONAIS
Diferentes formas de se implementar
os sistemas abertos são as linguagens de
programação que permitem uma grande
diversidade de máquinas conectadas ao sis-
tema. Linguagens como Java permitem
criar sistemas abertos independentes do
tipo de máquina conectada a rede. De fato,
a convergência entre as tecnologias como
computadores, telefones celulares, eletro-
domésticos, dentre outros, é exemplo desta
diversificação dos dispositivos conectados
em rede atualmente.
Softwares Servidores
A principal característica dos softwa-
res servidores é a capacidade de prover o
compartilhamento dos recursos (programas
e dados) entre os diversos clientes. Estes
softwares devem rodar em máquinas cujo
poder de processamento é maior do que
os disponíveis em máquinas comuns. Para
garantir a performance dos softwares ser-
vidores pode-se fazer uso de multiproces-
samento em máquinas dotadas de mais de
um processador ou em sistemas distribuí-
dos, onde várias máquinas de menor porte
garantem a mesma performance.
Os softwares servidores possuem
ferramentas que são usadas para garantir
a segurança de acesso aos dados do sistema,
além disso os softwares devem prover meca-
nismos para prover tolerância a falhas, a fim
de garantir que o sistema aberto permaneça
operando, ainda que em uma performance
menor, na ocorrência de alguma falha.
Software de Redes
São programas usados nas camadas
mais baixas do sistema aberto que permitem
a conectividade entre as diferentes má-
quinas do sistema aberto. Constituem os
softwares de rede, programas de conversão
entre protocolos, suporte a sistemas ope-
racionais e gerenciamento e controle das
redes. Existem quatro tipos de softwares
de rede, porém o cerne dos sistemas aberto
são os sistemas operacionais de rede.
Os sistemas operacionais de rede
que são sistemas operacionais com fun-
ções adicionais que tornam possíveis as
conexões entre as máquinas do sistema e
o gerenciamento da rede. Estes sistemas
Organização de softwares cliente-servidor
65FUNDAMENTOS COMPUTACIONAIS
permitem alta escalabilidade do mesmo,
podendo desenvolver a medida que cres-
cem as demandas dos clientes. Os demais
softwares de redes estão divididos entre
aplicativos de gerenciamento e dos próprios
programas dos sistemas abertos.
Protocolos de rede
Um protocolo, é uma linguagem
pré-acordada de comunicação que torna
possível que diferentes máquinas conver-
sem sem que haja falhas de interpretação.
Nele está incluído, além do dado em si,
outras informações que garante a troca de
informações de forma segura e com in-
terpretação única. Os projetistas de rede
fazem os protocolos de forma simétrica,
divididos em funções que cumprem tarefas
únicas, ou seja, na máquina do cliente e do
servidor existem programas que cumprem
a mesma função.
O protocolo mais utilizado em apli-
cações de sistemas abertos é o TCP/IP
(Transmition Control protocol) responsável
pela transmissão confiável de redes física.
O IP Internet Protocol é o nível mais baixo
do TCP/IP e tem a função de entregar os
pacotes de dados pela internet. O IP não
prevê detecção de erro.
O ICMP (Internet Control Message
Protocol) é responsável por relatar mensa-
gens em transmissões IP.
As conexões Ethernet suportam os
protocolos TCP/IP e como todo e qualquer
protocolo, inicialmente não havia padrões
de comunicação entre os fabricantes de
dispositivos de conectividade. Para garantir
uma homogeneidade entre os diferentes fa-
bricantes, a ISO, International Organization
for Standardization, e o CCITT, Comite
Consultatif Internationale de Telégraphique
et Teléphonie criaram o modelo OSI (Open
System Intercon- net ) a fim de organizar
e facilitar as comunicações dos sistemas
abertos. Os trabalhos começaram na dé-
cada de 70 e continuam sendo alterados e
melhorados constantemente à medida que
as interconectividades aumentam. A figura
abaixo mostra como o protocolo TCP/IP
está disposto através das camadas OSI.
66FUNDAMENTOS COMPUTACIONAIS
Camadas OSI entre computadores e roteadores
Fonte: Colcher (et al., 2005, p. 56)
Ferramentas de Gerenciamento de Rede
Os softwares de gerenciamento de
redes devem ser capazes de cumprir três
tarefas básicas: deve ser capaz conhecer
os equipamentos conectados a ele, o nível
de sua heterogeneidade e os programas e
dados que compõem a rede. Em redes ati-
vas, deve ser capaz de controlar quais “nós”
estão conectados ao sistema e em quais
redes estão sendo utilizadas. Além disso,
devem ser capazes de gerenciar conexões
entre estações de trabalho.
As ferramentas de gerenciamento
crescem a medida que cresce o número
de servidores e clientes conectadas à rede.
O surgimento das LAN’s, Local Area
Networks, fiz com que as ferramentas
de gerenciamento de rede coletassem
informações em cada estação conectada a
ela, com o intuito de verificar e recuperar
erros e avaliar a utilização dos recursos de
software e hardware em cada uma delas.
Outro fator importante nas ferra-
mentas de gerenciamento de rede é a se-
gurança de acesso e uso dos recursos que
67FUNDAMENTOS COMPUTACIONAIS
vão, em um nível elementar, a proteção de
acessos indevidos à rede e também a trans-
missão de programas contendo vírus entre
as máquinas.
Arquiteturados sistemas
abertos
Existem diferentes maneiras de im-
plementar um sistema aberto, que estão
ligadas intimamente com o negócio da or-
ganização ou o problema a ser resolvido. A
arquitetura de um sistema aberto envolve
hardware e softwares específicos para a sua
construção. Estes vão desde a escolha do
tipo de processador, sistema operacional e
aplicativos.
Um sistema aberto inicia, geralmen-
te, definindo a arquitetura do hardware a
ser usado e em geral os sistemas abertos
são multiprocessados, seja em um servidor,
seja através de vários computadores conec-
tados a ele. Existem diferentes modos de
organizar o hardware em um sistema mul-
tiprocessado. Pode-se classificar dois tipos
fundamentais de organização do hardware,
os chamados multiprocessadores que são
caracterizados pelo compartilhamento da
memória, ou seja, existe um único espaço
de endereçamento compartilhado por todas
as CPU’s. O segundo modo de organizar
são os chamados multicomputadores que
não compartilham memória.
Pode-se ainda dividir essas duas ca-
tegorias baseado no tipo de comunicação
entre cada CPU ou computador. As que
possuem comunicação baseada em bar-
ramento e as baseadas em chaveadores
(switch-based). As arquiteturas baseadas
em barramento são caracterizadas por ter
somente um meio físico que conecta todas
as máquinas. Como analogia pode-se citar
o exemplo da distribuição de TV a cabo. As
que são baseadas em chaveadores possuem
conexões individuais entre cada máquina
e podem ter diferentes tipos de conexões.
As mensagens trafegam ao longo das inter-
conexões por um caminho explicitamente
definido pelo switch. A figura mostra os
diferentes tipos de organização do hardware
em um sistema de processamento múltiplo.
A maioria das aplicações de sistemas
abertos utiliza a arquitetura baseada em
memória não compartilhada e comunicação
feita através de switchs.
A nível de software, os sistemas aber-
tos são assíncronos, ou seja, os serviços são
prestados a medida que os clientes neces-
sitam de processamento.
A interação se dá quando o cliente
empacota a mensagem a ser enviada ao
servidor, informando o serviço requerido
e os dados de entrada. O servidor rece-
be a mensagem, processa-a, empacota o
resultado e envia de volta ao cliente. O
atendimento das mensagens é feito através
de algoritmos que tratam o recebimento e
envio das mensagens, segurança, tolerância
a falhas, dentre outros.
68FUNDAMENTOS COMPUTACIONAIS
Diferentes organizações de processadores e memórias em um sistema distribuído
QUESTÕES DO CAPÍTULO 4
1. Quais as características de sistemas
abertos e fechados, quais suas
semelhanças e diferenças?
2. O desenvolvimento de software segue
um conjunto de etapas, como estão
relacionadas no modelo em espiral?
3. Quais são os fatores que influenciam
no adequado planejamento de TI?
4. Em uma gestão de projetos de TI
podem ocorrer alguns conflitos nas
reuniões cite pelo menos quatro
deles e diga o que você faria para
minimizar estes conflitos?
70FUNDAMENTOS COMPUTACIONAIS
REFERÊNCIAS
CARIBE, R; CARIBE, C. Introdução à Computação. Ed 3. São Paulo: FTD, 1996.
FEDELI, Ricardo Daniel; Giulio, Enrico; Polloni, Franco; Peres, Fernando Eduardo.Introdução
à Ciência da Computação. São Paulo: Thomson Pioneira, 2010.
FILHO, Edgard de Alencar. Iniciação à Lógica Matemática. 1ª Ed. São Paulo: Nobel, 2002.
GERSTING, Judith L. Fundamentos Matemáticos para a Ciência da Computação. 4a Ed.
Rio de Janeiro. FTD, 2001.
MONTEIRO, Mário A. Introdução à Organização de Computadores. 4a Ed. Rio de Janeiro.
LTC – Livros Técnicos e Científicos Editora S.A, 2001.
PETER, Norton. Introdução à Informática. Ed 2. São Paulo: MakroBooks, 1997.
TANENBAUM, Andrew S. Organização Estruturada de Computadores. 5a Ed. São Paulo.
Person Prentice Hall, 2007.
WEBBER, R.F. Fundamentos de Arquitetura de Computadores. 3a Ed Porto Alegre. Sagra
– Luzzato, 2004.
PRESSMAN, R. S. Engenharia de software. 3. Ed. Tradução José Carlos Barbosa dos Santos.
São Paulo: Makron, 1995. p. 3 -53. Cap. 1.
O que é NoSQL? Disponível em:< https://aws.amazon.com/pt/nosql/.>. Acesso em: 27 set.
2016.
Um pouco de História
Evolução do Computador
Conceitos Básicos de Sistemas
Microprocessadores
CISC x RISC
Sistemas Operacionais
Estrutura de um Sistema Operacional
Tipos de Sistemas Operacionais
Sistemas Numéricos e Representação de Dados
Aritmética Não Decimal
Representação em Tamanho Fixo
Representação Números Negativos
Linguagens e Organização da Informação
Linguagens de Programação
Estrutura e Organização da Informação
Banco de Dados
Planejamento Estratégico da TI
Engenharia de Software
Conectividade
Características dos sistemas abertos
Softwares Clientes
Softwares Servidores
Software de Redes
Arquitetura dos sistemas abertos