Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

06/12/2023, 19:26 Livro
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/index.html 1/2
Arquitetura de
Arquitetura de
Computadores
Computadores
AUTORIA
Andre Abdala Noel
06/12/2023, 19:26 Livro
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/index.html 2/2
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 1/17
História da Computação
AUTORIA
Andre Abdala Noel
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 2/17
Você já parou pra pensar qual é a sua memória mais antiga a respeito de
computadores? É engraçado parar para pensar que não foi um passado tão distante
assim, mas são os computadores que evoluem numa velocidade muito alta.
Computadores de 20 anos atrás são “trambolhos”, “carroças” ou outros apelidos
carinhosos que denotam uma ideia de pré-históricos.
Mas você sabe quando foi que os computadores surgiram? Tem ideia de como eles
eram no início? Entender de onde os computadores vieram e como eles foram
evoluindo nos ajuda muito a entender por que os computadores de hoje têm essa
arquitetura e para onde estamos indo.
As Gerações da Computação
Os computadores eletrônicos são “recentes” – não faz nem 100 anos ainda do primeiro
computador movido à eletricidade! É uma história curta quando comparamos a
outras áreas do conhecimento, como matemática e �loso�a, que possuem milhares
de anos de história.
Para facilitar o estudo, a história da computação é dividida em gerações, que são
períodos de tempos marcados por alguma tecnologia em destaque. A mudança das
gerações é marcada por algum avanço especí�co na tecnologia, mas saiba que não
há um consenso na literatura sobre quais são os anos exatamente de cada geração.
Depende um pouco do enfoque de cada autor. Aqui, vou apresentar as gerações da
forma que eu entendo que apresenta uma divisão melhor, com um pouco da mistura
de literaturas diferentes.
Ainda, não há também um consenso sobre a quantidade de gerações. Alguns autores
dizem que estamos na quarta geração, alguns na quinta e alguns defendem até que
estamos na sexta geração. Na verdade, o que vivemos hoje só vai ser bem de�nido no
futuro, quando alguém olhar para trás com uma distância maior e outra perspectiva.
Aqui, vou apresentar a divisão em cinco gerações, com um bônus da Geração Zero,
que conta um pouco do que precedeu a criação dos computadores digitais.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 3/17
Geração Zero: A Pré-história da
Computação
Como mencionado acima, a matemática é uma ciência muito antiga e tem ajudado a
humanidade nas mais diferentes aplicações. Porém, também há muito tempo os
homens têm o desejo de automatizar as suas tarefas, encontrando meio de facilitar o
trabalho e também os cálculos.
O mais antigo precursor do computador foi o ábaco, o primeiro equipamento
utilizado para facilitar os cálculos. Segundo Aragão (2009, p. 138) “A máquina de
calcular mais antiga foi o ábaco que apareceu pela primeira vez no vale dos rios Tigre
e Eufrates, há cerca de 5.000 anos. Basicamente consistia em contas en�adas em �os
de arame e constituía uma ajuda na contagem.” Com o passar dos anos, o ábaco
ganhou diferentes versões e sempre estiveram presentes em algumas culturas.
Porém, a ideia de automatizar os cálculos nunca foi deixada.
Depois disso, em 1671, Leibniz criou uma máquina similar, mas com multiplicação e
divisão. Em 1801, Joseph Jacquard criou uma máquina de tecelagem que era
controlada por cartões perfurados. Até que em 1833, Charles Babbage desenvolveu a
primeira máquina programável, a “máquina analítica”, que realizava cálculos e que era
controlada por cartões perfurados (NOEL, 2019), e então vê-se que as ideias anteriores
foram aproveitadas e uni�cadas.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 4/17
Junto com ele, temos a matemática Ada Lovelace (ou Ada Byron), que foi a primeira
pessoa a criar um programa de computador na história (SCHWARTZ, 2006), ainda
que a máquina analítica fosse um “computador” mecânico.
Figura 1 - Máquina Analítica (ou Engenho Analítico) de Babbage, exposto no
Science Museum, em Londres
Fonte: wikimedia.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 5/17
Em 1854, temos a publicação das ideias da álgebra booleana, que ganhou esse nome
graças ao seu inventor, o matemático George Boole. A lógica booleana e a álgebra
booleana são grandes responsáveis pelo computador digital, que é baseado em 0 e 1.
No �nal do século XIX, temos a invenção de Hermann Hollerith, que utilizou cartões
perfurados para armazenamento de dados (NOEL, 2019).
Figura 2 - Ada Lovelace (1815 - 1852)
Fonte: wikimedia.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 6/17
No início do século XX houve um grande avanço nessa área, onde houve interrupções
e também novas pesquisas impulsionadas pelas duas grandes guerras, o que nos
permite introduzir a criação dos computadores eletrônicos e a primeira geração de
computadores.
Primeira Geração (1946-1955)
Durante a Segunda Guerra Mundial, tivemos alguns avanços importantes na área da
computação, com destaque para os trabalhos de Konrad Züse, cientista alemão que
criou um computador que já usava o sistema binário e criou também uma linguagem
de programação. Sua máquina de mais destaque foi o Z3, construído em 1941, mas
destruído nos bombardeios da guerra (NOEL, 2019).
Também precisamos destacar o trabalho de Alan Turing, um dos pais da computação
e a sua máquina (a bomba eletromecânica) que era capaz de decifrar os códigos
alemães. Seu trabalho �cou em segredo por muitos anos, mas foi retratado
recentemente no �lme “O Jogo da Imitação”.
Figura 3 - A máquina perfuradora de Hollerith
Fonte: wikimedia.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 7/17
E ainda houve o “Mark I”, desenvolvido por Howard Aiken, em 1944, que seguia a linha
da máquina analítica de Babbage, usando o sistema numérico decimal (MONTEIRO,
2007).
Porém, o marco para o início da Primeira Geração foi o lançamento do que �cou
conhecido como o primeiro computador eletrônico da história, o ENIAC, que era uma
máquina que funcionava com quase 18 mil válvulas (TANENBAUM, 2013).
O ENIAC começou a ser desenvolvido em 1943, para ser utilizado na guerra, mas �cou
pronto apenas após o término dos combates. Com isso, passou a ser utilizado para
propósitos matemáticos em geral.
Figura 4 - Memorial Alan Turing em Sackville Park, Manchestes, Inglaterra
Fonte: wikimedia.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 8/17
Durante a primeira geração foram desenvolvidos outros computadores baseados em
válvulas, mas uma das contribuições mais importantes foi o modelo de arquitetura
de von Neumann, que de�niu a estrutura de um computador em 5 partes diferentes:
a Unidade Lógica e Aritmética, a Unidade de Controle, a memória e os equipamentos
de entrada e saída (TANENBAUM, 2013).
Figura 5 - Duas programadoras operando o ENIAC, 1945
Fonte: wikimedia.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 9/17
Figura 6 - Modelo de arquitetura de von Neumann
Fonte: NOEL, 2019.medida em
Hertz diz quantos ciclos o processador executa em 1 segundo. Portanto, se um
processador executar na frequência de 2,2GHz, signi�ca que ele executa 2,2 × 109Hz,
ou seja, 2,2 bilhões de ciclos por segundo.
Certo, um processador executa tantos ciclos por segundo, mas o que ele faz a cada
ciclo? Basicamente o que o processador faz é uma repetição de busca-
decodi�cação-execução (TANENBAUM, 2013). Então, a cada ciclo pode ser
executada uma instrução.
Já vimos que a Unidade de Controle é responsável por buscar as informações na
memória, por decodi�car para entregar para a ULA e depois devolver o resultado
para a memória. Já a ULA é responsável pela etapa de execução. Podemos separar as
etapas em ciclo de busca e ciclo de execução, como visto na Figura 3.
Figura 3 – Representação do ciclo de busca e do ciclo de execução
Fonte: NOEL, 2019.
Barramentos
06/12/2023, 19:30 Processador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processador.html 5/6
Dentro de um computador a comunicação entre o processador, a memória e os
demais dispositivos é feita via barramentos. Os barramentos são �os que servem
como linhas de comunicação entre os dispositivos, geralmente em paralelo, para
conduzir a informação entre os subsistemas (NULL, 2011).
Para haver a comunicação entre o processador e a memória, existem três tipos de
barramentos diferentes: o barramento de dados, o barramento de endereços e o
barramento de controle.
Barramento de dados
O barramento de dados é o barramento por onde os dados trafegam entre o
processador e a memória principal, de forma bidirecional.
Barramento de endereços
O barramento de endereços é unidirecional e trafega os bits com o endereço de
memória que a CPU deseja acessar. O tamanho do barramento de endereços é a
quantidade de bits necessária para endereçar a memória.
Barramento de controle
Figura 4 - Placa de circuito com destaque para os barramentos de comunicação
Fonte: pixabay.
06/12/2023, 19:30 Processador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processador.html 6/6
O barramento de controle é bidirecional e é por onde trafegam os sinais de
controle, onde a CPU pode enviar para a memória instruções de leitura ou escrita,
enquanto a memória pode retornar sinais de espera (MONTEIRO, 2007).
13:03
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:31 Memória
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/memoria.html 1/8
Memória
AUTORIA
Andre Abdala Noel
06/12/2023, 19:31 Memória
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/memoria.html 2/8
Tudo o que fazemos em computação tem a ver com dados e esses dados precisam
ser armazenados e processados. Quando falamos em armazenamento, seja
permanente ou temporário, estamos falando de memória: circuitos ou dispositivos
capazes de “lembrar” de uma informação.
Já vimos que a informação no computador é toda representada em binário (0 ou 1).
Portanto, para armazenar a informação ela precisa ser convertida para binário, para
ser lida ela é convertida de volta ao formato original. Mas não conversamos ainda
sobre onde essa informação é armazenada.
SAIBA MAIS
Há um tipo de circuito digital conhecido como �ip-�op, que é um
circuito sequencial, que consegue guardar a saída de dados de um
estado para o outro. As memórias de computador surgiram de �ip-�ops
tipo D, que também é conhecido como �ip-�op de dados, porque
consegue armazenar um bit de dados, ou seja, consegue atrasar um 0
ou 1 em um ciclo de clock.
Fonte: Stallings, 2017.
Memória Volátil ou Não Volátil
Existem diferentes tipos de memória e também diferentes �nalidades para elas.
Podemos separar as memórias em memórias voláteis, aquelas onde a informação
não �ca armazenada de forma permanente, e memórias não voláteis, onde as
informações permanecem armazenadas, mesmo após o desligamento do sistema.
Em qualquer tipo de memória, existem duas operações principais: leitura (read) e
escrita (write), que são operações que custam um determinado tempo. Tendo como
referência a frequência do processador, que já estudamos, ler ou escrever em uma
memória como um disco rígido é algo muito lento.
Para resolver, ou pelo menos amenizar o tempo de recuperação de informações,
temos alguns tipos de memória mais rápidos, que são voláteis e que servem como
um armazenamento temporário, para que a informação necessária não seja, toda
vez, lida ou escrita a partir de uma memória mais lenta.
06/12/2023, 19:31 Memória
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/memoria.html 3/8
Essas memórias temporárias armazenam os dados através do armazenamento de
energia. Portanto, ao desligar o equipamento toda informação é perdida. O objetivo
é que toda informação que precisa ser utilizada �que, de forma temporária, em uma
memória mais rápida, para melhorar o tempo de resposta. Quando não for mais
necessária (ou sempre que necessário), a informação pode ser gravada de volta na
memória permanente.
Por isso, temos, no computador, o que chamamos de memória principal (que é a
memória RAM, volátil e de onde os programas são executados) e a memória
secundária (o famoso disco rígido ou discos em estado sólido, de armazenamento
permanente).
Hierarquia de Memória
Certo, você já sabe que existem diferentes tipos de memória e já viu que os discos
rígidos também são memória, mesmo que a gente só chame de "memória" a
memória principal. Mas por que tantos tipos de memória e qual é a diferença entre
eles?
A Figura 1 nos dá uma ideia de comparação, no que chamamos de hierarquia de
memória, na qual podemos observar no topo da pirâmide as memórias menores,
porém mais rápidas, enquanto a base é formada por memórias mais lentas e
maiores.
06/12/2023, 19:31 Memória
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/memoria.html 4/8
Figura 1 – Hierarquia de memória
Fonte: Adaptado de Stallings (2017).
Percebemos, também, que o custo por bit das memórias mais ao topo é muito
maior, por isso o nosso disco rígido costuma ter um tamanho bem maior do que
discos SSD de preços similares, ao mesmo tempo em que discos SSD ainda possuem
uma capacidade bem maior do que a memória principal. Veremos, a seguir, alguns
dos tipos de memórias.
Registradores
Ocupando o topo da pirâmide, temos os registradores, que são unidades de
memória muito pequenas localizadas na Unidade Central de Processamento (CPU).
Servem para armazenar dados temporários que serão utilizados durante o
processamento.
Você se lembra do processo seguido pelo processador para executar instruções?
Quando dizemos que o processador recebe da memória os dados e a instrução que
será executada, esses dados e a instrução são copiados para registradores, a partir
06/12/2023, 19:31 Memória
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/memoria.html 5/8
dos registradores que a ULA obtém os dados para executar a instrução, copiando o
resultado de volta para um registrador.
A quantidade de registradores e a função deles podem variar de acordo com a
arquitetura. Também nos registradores podem ser armazenadas instruções que
estão sendo executadas, que precisam entrar em espera para executar uma
instrução mais imediata. Portanto, é necessário salvar o estado da instrução em
registradores para depois retomá-la.
Memória Cache
A memória cache é muito importante para reduzir a transferência de dados entre
processador e memória, mantendo cópias de dados que são utilizados com uma
certa frequência.
Os processadores modernos trabalham com 3 ou 4 níveis de memória cache, sendo
que as cache de níveis mais baixos são menores e mais rápidas que as memórias de
níveis mais altos.
NA PRÁTICA
Existem diversos registradores em um processador. Dentre eles, existem
os registradores em nível ISA (Instruction SetArchitecture), que são
visíveis aos programas de usuário e que podem ser acessados via
algumas linguagens, como a linguagem Assembly, por exemplo.
A principal característica do nível ISA é o seu conjunto de
instruções de máquina, que controla o que a máquina
pode fazer. Há sempre instruções LOAD e STORE (de uma
forma ou de outra) para mover dados entre a memória e
registradores e instruções MOVE para copiar dados entre
os registradores. Instruções aritméticas estão sempre
presentes, assim como instruções booleanas e aquelas
para comparar itens de dados e desviar conforme os
resultados. (TANEMBAUM, 2013, p. 276).
06/12/2023, 19:31 Memória
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/memoria.html 6/8
Figura 2 – Organização da cache em três níveis
Fonte: Stallings (2017).
As con�gurações avançadas de BIOS dos computadores costumam permitir
desabilitar a cache L1 ou L2 (ou ambas). Para �ns de experimento, pode-se até
desabilitar para veri�car como o computador �ca mais lento sem o uso de memória
cache, porém sua máquina pode até mesmo travar antes de inicializar, então só faça
o teste se souber reverter a con�guração depois.
Memória Principal
Como o nome diz, a principal memória de nosso computador, aquela que
chamamos apenas de "memória" ou "memória RAM", é uma memória rápida, volátil,
que depende de energia para manter os dados.
Por ser mais rápida do que a memória secundária (que veremos à frente), todos os
programas precisam ser copiados para a memória principal para serem executados
de lá. Portanto, quando você instala um programa, ele é copiado para a memória
secundária, mas quando você o executa, uma cópia é feita em memória principal
(pelo menos as partes que estarão em uso), para que o tempo de resposta seja viável.
Dentre as memórias RAM, existe a SRAM (Static RAM – RAM estática), que é
construída com circuitos similares ao �ip-�op D, mantendo dados enquanto há
energia. Há também as memórias dinâmicas DRAM (Dinamic RAM – RAM
dinâmica), utilizando células baseadas em transistor e capacitor ao invés de �ip-�ops,
o que diminui a complexidade dos circuitos e aumenta a capacidade da memória
(STALLINGS, 2017).
Memória Não Volátil
Passemos a estudar as memórias permanentes, ou não voláteis, iniciando pela
memória ROM (Read-Only Memory), uma memória somente-leitura, que é gravada
apenas uma vez, de fábrica, com equipamentos apropriados (NULL, 2011). Uma
06/12/2023, 19:31 Memória
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/memoria.html 7/8
variação importante é a memória PROM (Programmable ROM), que pode ser
programada e escrita apenas uma vez e não pode ser apagada.
Depois surgiu a memória EPROM (Erasable PROM), que funciona como a memória
ROM, mas pode ser apagada e reescrita utilizando luz ultravioleta. Também temos o
EEPROM (Electrically Erasable PROM), que pode ser apagada e reescrita com
eletricidade (NULL, 2011).
A partir da memória EEPROM temos a Memória Flash, que é a base para pen drives
e cartões de memória. Ela funciona como a EEPROM, mas pode ser escrita ou
apagada por blocos ao invés de bit a bit, o que a torna ainda mais rápida.
Discos
Apesar de trazerem a palavra “disco” no nome, o SSD, ou “Disco em Estado Sólido"
(Solid-State Disks), não possui o formato de disco e está mais para uma memória não
volátil do que para um disco. Porém, pela sua alta capacidade, é tratado como um
disco no sentido de ser usado para complementar ou substituir HDs (Hard Drives -
Discos Rígidos), que são discos magnéticos para armazenamento secundário.
Os discos rígidos possuem uma estrutura em formato de um disco (ou vários discos),
onde a informação é armazenada em trilhas circulares separadas por setores. A
informação é lida por um braço magnético e tem um custo alto de leitura ou escrita
de informação, que é impactado por: tempo de busca (seek) - que é o tempo para o
braço magnético se movimentar até o lugar certo; latência rotacional - que é o
tempo que o disco leva para girar até o lugar certo; e o tempo de transferência de
dados - que é o tempo para ler ou escrever uma informação.
Ainda há os discos óticos, como CDs, DVDs e blu-rays, que trabalham de forma
relativamente similar aos HDs, mas armazenando e recuperando informação através
da luz (lasers). Possuem os dados gravados em espiral, ao invés de trilhas circulares.
Podemos, então, imaginar que essa espiral poderia ser esticada em uma grande
linha reta de informações.
Portanto, existem diversas formas de armazenar a informação de forma temporária
ou não, cada uma tendo suas vantagens e desvantagens. Entender a diferença entre
os tipos de memória nos ajuda a utilizar melhor e a programar melhor as nossas
soluções.
06/12/2023, 19:31 Memória
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/memoria.html 8/8
14:49
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:31 Entrada e Saída
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/entrada-e-saida.html 1/6
Entrada e Saída
AUTORIA
Andre Abdala Noel
06/12/2023, 19:31 Entrada e Saída
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/entrada-e-saida.html 2/6
Na prática, os computadores só se tornam interessantes para o uso graças ao
sistema de entrada e saída. Principalmente os computadores atuais (pode incluir os
smartphones em seu pensamento), que trabalham muito bem a parte da interação
com o usuário.
Vamos fazer um exercício de imaginação aqui, juntos. Um computador processa
informações e retorna resultados, mas precisa receber essas informações de alguma
forma e retornar de alguma outra forma. Imagine que o seu computador tem o
poder computacional dos computadores de hoje, mas as interfaces de entrada e
saída da primeira geração de computadores, sem monitores, sem teclado e mouse,
sem tela touch.
Acho que já estraguei a sua diversão, você não acha? Agora, imagine a saída sendo
feita por cartões perfurados, ou por luzes que acendem e apagam. A entrada de
dados via cartões perfurados ou troca de posições de cabos. Como seria a
experiência?
Sistema de Entrada e Saída
Vimos, na aula 2, a representação de um computador como algo na forma entrada-
processamento-saída. As partes de entrada e saída (E/S) em um computador são
muito importantes para a interação e para computar os dados. De forma geral,
entendemos como entrada todo dado passado para o computador, e como saída os
dados que são retornados do computador.
Já o sistema de entrada e saída compreende os vários componentes que tornam a
entrada e a saída de dados possível. Dentre os diferentes componentes, podemos
destacar os seguintes (NOEL, 2019):
06/12/2023, 19:31 Entrada e Saída
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/entrada-e-saida.html 3/6
• Periféricos: dispositivos externos conectados ao computador para
trocar dados.
  ○ Periféricos de entrada: Dispositivos que transferem dados ao
computador, como mouse, teclado, joystick, leitor ótico, etc.
 ○ Periféricos de saída: Dispositivos que exibem dados originados pelo
computador, como monitor, impressora, placa de som, etc.
 ○ Periféricos de entrada e saída: Dispositivos que trafegam dados nas
duas direções, como pen drives, cartões de memória, etc.
  ○ Periféricos de comunicação: Dispositivos que possibilitam a
comunicação com outros equipamentos, como modem, placa de rede,
etc.
• Interface: componente de hardware que �ca entre o processador e o
periférico, para de�nir como os dados são transferidos.
• Controlador: parte da interface que controla os dados.
• Driver: componente de software que contém as funções de acesso ao
dispositivo de entrada e saída para o sistema operacional.
• Porta de E/S: endereços de comunicação para o computador se
comunicar com cada interface.
• Barramento: Linhas de comunicação que trafegam dados de E/Spara
os dispositivos.
Processamento de Entrada e
Saída
Agora você já sabe como o computador processa informações e também sabe que
existem vários dispositivos para entrada e saída de dados. Mas como é que o
processador lida com os dados trafegados por essas interfaces?
Pense, primeiro, em algum exemplo de entrada e saída que temos. Vou usar um
exemplo que está muito próximo de mim agora: a digitação através do teclado.
Estou apertando várias teclas aqui, repetidamente, para escrever esse material. O
que acontece toda vez que eu aperto uma tecla?
Resposta curta: aparece uma letra na tela. Resposta um pouco mais longa: quando
eu aperto uma tecla, o circuito do teclado identi�ca qual tecla foi apertada e
transmite o código equivalente àquela tecla para o computador. O código chega ao
computador, que deve processar esse código para ver o que signi�ca e o que deve
fazer.
Como estou em um editor de textos, quando aperto uma letra, a letra
correspondente deve aparecer na tela. Mas se for um atalho ou tecla de função, uma
outra ação será tomada. Foi um pouco mais longa a resposta, mas ainda foi
super�cial. Como a nossa entrada (ou saída) de dados se comunica com o
processador para ser processada?
06/12/2023, 19:31 Entrada e Saída
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/entrada-e-saida.html 4/6
Interrupções
Uma forma de tratar as entradas e saídas é através de interrupções, que são
comandos ao processador para avisá-lo que algo merece a atenção do processador.
Como assim? Pense comigo, em qual momento o usuário (eu ou você) vai digitar
uma tecla? Não tem como prever. Eu posso dar uma parada aqui para olhar a TV ou
atender a um �lho que pulou em mim e o computador não pode �car veri�cando o
tempo todo se estou digitando ou não.
Lembra que o processador está em looping (busca-decodi�cação-execução)? Se o
computador usar todo o ciclo para veri�car se algo está sendo digitado, vai perder
muito tempo de processamento, porque a maior parte do tempo não estamos
digitando nada (bom, depende do seu trabalho).
Um outro problema é que uma tecla digitada deve ter uma resposta imediata. O
movimento do mouse deve ter uma resposta imediata e precisa. Atrasos na resposta
podem levar a erros e também a muita irritação.
Então, sempre que uma tecla é digitada, uma interrupção é disparada. O
processador grava o estado da instrução que está executando no momento em
algum (ou alguns) registrador, processa o que chegar na entrada/saída e depois
retoma a instrução que estava executando antes.
Polling
Como os processadores não precisam �car o tempo todo em função da entrada e
saída, desperdiça menos tempo de processamento e as instruções resolvem o
problema. Mas e se você precisasse que o processador �casse veri�cando a entrada e
saída constantemente?
Você deve estar se perguntando: “Ahn?”
Suponha que você tem muitos dados para serem trafegados pela entrada ou saída e
seria mais interessante que o processador �casse meio que dedicado a isso, sem ter
que �car enviando interrupções a todo o tempo. Como um envio grande de
impressão, um streaming de vídeo, algo assim.
Existe uma estratégia chamada polling, que é basicamente o contrário do
funcionamento das interrupções. Você pode colocar o processador em estado de
polling para que ele �que atento à entrada ou saída, de forma que a cada ciclo ele
continue tratando os dados de E/S.
Sim, o processo de polling é custoso para o processador, como já comentamos
acima. Por isso, é um estado que pode ser ativado e desativado, sendo que a maior
parte do tempo o tratamento de entrada e saída se dá por meio de interrupções.
06/12/2023, 19:31 Entrada e Saída
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/entrada-e-saida.html 5/6
Acesso Direto à Memória (DMA)
Como a maior parte das transferências de dados de E/S tem como destino a
memória do computador, o processador muitas vezes trata apenas de
processamento de cópias de dados da entrada para a memória ou da memória para
a saída.
Para aliviar o trabalho do processador, os computadores possuem um componente
de hardware chamado DMA (Direct Memory Access – Acesso Direto à Memória), que
pode cuidar desse tratamento de dados entre E/S e memória, sem passar pelo
processador.
De forma prática, quando um dado deve ser trafegado diretamente entre E/S e
memória (em qualquer sentido), o módulo de DMA envia um aviso ao processador, o
processador retorna, liberando a transação e o DMA cuida de toda a transferência de
dados, processando essa transferência, evitando que o processador faça esse
trabalho, o que alivia a carga para todo o computador.
NA PRÁTICA
O DMA é um módulo adicional que utiliza também o barramento de
sistema. Esse módulo faz o papel do processador, imitando o
processador e assumindo as suas funções no tratamento de entrada e
saída. Por isso, o DMA só pode utilizar o barramento enquanto o
processador não precisa utilizar, ou então, ele força o processador a
interromper o uso de forma temporária.
Quando o processador é interrompido para ceder o recurso a outro
módulo, isso é conhecido como “roubo de ciclo” (cycle stealing), porque
um ciclo de execução é roubado para a utilização do barramento.
Enquanto o processador passa a operação para a DMA, ele pode se
dedicar a outro trabalho no computador.
Fonte: Stallings, 2017.
Interfaces de Entrada e Saída
06/12/2023, 19:31 Entrada e Saída
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/entrada-e-saida.html 6/6
Iniciamos a aula com uma imagem de uma placa-mãe, com diversos conectores
onde podem ser ligados dispositivos de entrada e saída para interação com o
computador. Em termos gerais, costumamos chamar apenas de interfaces e
veremos aqui algumas diferenças entre elas.
A comunicação entre os periféricos pode ser feita de forma serial ou de forma
paralela. Em uma interface serial, os dados são serializados, ou seja, os bits são
separados e trafegados um a um. Quando os dados chegam ao destino, a
informação é remontada. Já em uma interface paralela, há várias linhas de
comunicação para que os bits sejam trafegados em blocos, ao mesmo tempo, de
forma paralela (STALLINGS, 2017).
Em 1993, foi desenvolvida uma interface de conexão, por uma associação de várias
grandes empresas, para que se tornasse um padrão de conexão, substituindo várias
outras. Conhecemos muito bem essa interface como USB (Universal Serial Bus –
Barramento Serial Universal). Como o nome diz, é um barramento serial, então, os
dados são serializados, mas o padrão possui uma boa velocidade de transferência,
substituindo as antigas interfaces seriais e paralelas.
Dentre as vantagens propostas pelo padrão, podemos destacar a facilidade de usar
um mesmo tipo de interface para vários dispositivos, a possibilidade de usar o
mesmo cabo e as mesmas entradas para dispositivos diferentes, o fornecimento de
energia oferecido pela entrada USB, a facilidade de dispositivos plug-and-play, que
você pode conectar e sair usando, além do fato de que cada porta USB permite a
conexão (através de hubs) de até 127 dispositivos diferentes.
O padrão USB tem evoluído com o tempo e estamos usando, atualmente, a versão
3.0 (que você identi�ca pela cor azul na entrada USB), que possibilita transferência
de dados em uma velocidade até 5Gbps (5 gigabits por segundo).
15:55
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:31 Sistemas Operacionais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-operacionais.html 1/10
Sistemas Operacionais
AUTORIA
Andre Abdala Noel
06/12/2023, 19:31 Sistemas Operacionais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-operacionais.html 2/10
Mais uma vez, eu quero usar a sua imaginação e retomar um pouco a história da
computação. Não sei se hoje você tem algum conhecimento de programaçãoou
não, mas imagine que você está vivendo na primeira ou segunda geração de
computadores e precisa criar um programa qualquer para um motivo especí�co.
Como exemplo, imagine que você vai criar um programa que calcula a trajetória de
foguetes. Não é muito diferente do que �zeram no Angry Birds: você tem inclinação,
distância, poder de fogo, etc. E aí, como você faz para escrever os programas?
Esqueça um pouco que não tem teclado ou monitor como os computadores de
hoje, quero focar na questão de que os primeiros computadores precisavam ser
programados a partir das instruções que seus processadores entendiam. Portanto,
você teria que estudar o conjunto de instruções e era só o que você tinha disponível
para programar. E, se você precisasse fazer a mesma coisa em outro computador,
precisaria reescrever tudo de acordo com as instruções no novo computador.
Os sistemas operacionais são uma camada de software, ou seja, também são
programas de computador, que servem como um intermediário entre os programas
em geral e o hardware. Eles servem como um intermediário para que você não
precise criar programas usando as instruções do processador, você escreve um
programa para o sistema operacional e ele “traduz” as instruções para o processador.
Funções do Sistema Operacional
Se você parar para pensar, ninguém compra um computador ou smartphone para
usar o sistema operacional, não é esse o objetivo. Você sempre se preocupa em usar
um programa, seja ele um jogo, uma rede social, um app de fotos, o que for. O
sistema operacional é quem possibilita o funcionamento dos programas, mas ele
mesmo não deve aparecer muito.
06/12/2023, 19:31 Sistemas Operacionais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-operacionais.html 3/10
Figura 1 - O funcionamento de um sistema operacional representado em um
hambúrguer
Fonte: Adaptada de Noel, 2019.
Na Figura 1, vemos uma demonstração livre de como o sistema operacional é uma
camada entre o hardware e os aplicativos. Os aplicativos são desenvolvidos de
acordo com ferramentas e bibliotecas que são executados no sistema operacional e
o sistema operacional é quem se preocupa em chamar as instruções de hardware
de acordo com cada arquitetura. Dessa forma, o sistema operacional é quem se
preocupa em entender os diferentes hardwares, como diferentes processadores, por
exemplo.
De forma geral, o sistema operacional desempenha três funções básicas em um
computador (WEBER, 2000):
Controlar os recursos dos sistemas de computação;
Executar os programas do computador; e
Gerenciar dados.
06/12/2023, 19:31 Sistemas Operacionais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-operacionais.html 4/10
Portanto, o sistema operacional gerencia os recursos de hardware, deixando os
equipamentos prontos para uso, como sistema de som, vídeo, entrada e saída e
demais recursos. É o responsável pela execução dos programas de computador
fazendo a tradução de instruções, como já dissemos, e também gerenciar os
processos, que são os programas em execução, controlando os acessos dos
programas aos recursos, ordem de execução e demais operações. Além do
gerenciamento de dados, como a organização do sistema de arquivos.
NA PRÁTICA
Dentre as funções do sistema operacional está o gerenciamento de
recursos do computador, por isso é que somos apresentados ao sistema
operacional, quando iniciamos o contato com o programador, como se
ele fosse uma extensão do próprio hardware. Na prática, o sistema
operacional é constituído por um núcleo e por diversos programas
aplicativos que servem para esse gerenciamento de recursos.
Há, no sistema operacional, programas para gerenciar os componentes
de hardware, como discos, memórias, etc. Há programas para o
gerenciamento de arquivos, para manutenção de partições,
gerenciamento de som, vídeo, etc. Geralmente, podemos acessar esses
diferentes aplicativos através da área de con�guração de nosso sistema
operacional.
Exemplos de Sistemas
Operacionais
Existem diferentes sistemas operacionais, muitos deles não conhecemos, mas vale a
pena trazer como exemplos alguns dos mais conhecidos.
Windows
No começo da década de 1980, a IBM entrou no mercado de computadores pessoais
e precisava de um sistema operacional. Então, compraram um sistema chamado 86-
DOS de uma empresa chamada Microsoft (Micro-Soft, na época), fundada por Bill
06/12/2023, 19:31 Sistemas Operacionais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-operacionais.html 5/10
Gates e Paul Allen. Eles compraram o 86-DOS de outra empresa e conseguiram
licenciá-lo para a IBM, que passou a distribuir com o nome IBM-DOS, enquanto a
Microsoft o rebatizou como MS-DOS (NOEL, 2019).
Pouco após o lançamento do Macintosh, em 1984, a Microsoft lançou sua primeira
versão do Windows, que era uma interface grá�ca baseada em janelas, que rodava
por cima do MS-DOS. Funcionou sobre o MS-DOS até a versão 3.1, que �cou muito
popular.
Em 1995, a Microsoft lançou o Windows 95, a primeira versão que não dependia do
MS-DOS, investindo na multitarefa e multiusuários a partir daí. Em 2000 lançou a
versão Windows XP, que �cou extremamente popular e �cou como versão o�cial
durante 7 anos. Teve algumas versões mais e outras menos populares, e atualmente
está na versão 10 do sistema.
Fonte: wikimedia.
Fonte: wikimedia.
06/12/2023, 19:31 Sistemas Operacionais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-operacionais.html 6/10
Segundo Tanenbaum (2013), uma grande diferença entre sistemas Windows e UNIX
está no fato de que a Microsoft não encoraja chamadas diretas ao sistema a partir
dos programas, mas chamadas a bibliotecas do sistema, através de seus
procedimentos. Ainda, aponta que a �loso�a da API da Microsoft é completamente
diferente da �loso�a de sistemas UNIX.
UNIX e Linux
O sistema operacional UNIX foi desenvolvido na década de 1970, por Ken Thompson
e Dennis Ritchie. Ele �cou popular em servidores e na área acadêmica nos Estados
Unidos (TANENBAUM, 2013). É um sistema operacional bastante con�ável para
serviços de rede e gerenciamento de servidores, também é um sistema com licença
proprietária, não podendo ter seu código estudado ou modi�cado sem autorização.
Para �ns acadêmicos, o professor Andrew Tanenbaum criou, em 1987, uma versão
simpli�cada do UNIX, chamada MINIX. Tanenbaum é muito conhecido por seus
livros sobre sistemas operacionais e sobre arquitetura de computadores.
Passado um tempo, em 1991, Linus Torvalds, que era um dos alunos do Tanenbaum,
resolveu criar a sua própria versão de sistema baseado em UNIX e daí surgiu o Linux
(TANENBAUM, 2013), que tem uma licença livre e toda uma comunidade de software
livre ao redor de seu desenvolvimento.
A ideia do Linus Torvalds foi de criar o núcleo do sistema operacional e então
aproveitar uma série de programas necessários para o sistema operacional que
tinham sido criados pelo projeto GNU, que é um projeto de software livre, que
CONECTE-SE
A partir do Windows 10, a Microsoft disponibilizou o WSL – Windows
Subsystem for Linux – que é uma forma de executar o kernel Linux
dentro do Windows para ter acesso a uma gama de recursos e
programas Linux dentro do Windows. É voltado, principalmente, a
programadores.
https://go.eadstock.com.br/bjk
https://go.eadstock.com.br/bjk
06/12/2023, 19:31 Sistemas Operacionais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-operacionais.html 7/10
começou com a ideia de criar uma versão de UNIX livre, mas começaram pelos
programas acessórios, escrevendo programas em software livre que eram
compatíveis com o UNIX.
Hoje, o sistema Linux já é bastante popular; é fácil de instalar no computador e até
mesmo com opções de Linux já instalados em computadores das principais marcas
do mercado. É um sistema também bastante conhecidopela estabilidade e
segurança. Porém, como trabalham com estruturas diferentes, os programas
escritos para Windows nem sempre possuem versões para Linux e vice-versa.
Por ser um projeto livre e de possíveis modi�cações, o Linux conta com inúmeras
distribuições, que são versões diferentes do sistema com diferentes personalizações.
Dentre as mais populares temos, por exemplo, Ubuntu, Debian, Arch Linux, RedHat,
OpenSuse, LinuxMint e Manjaro.
Mac OS X
A Apple começou no mercado com o Apple I e o Apple II, como já vimos na primeira
aula. Em 1984, lançaram o Macintosh, que revolucionou a parte de usabilidade com
os recursos visuais. Depois, os sistemas foram evoluindo até o sistema operacional
MacOS. Porém, a Apple não seguia a linha de arquitetura dos IBM PCs e utilizava um
processador PowerPC e o sistema operacional também era diferente dos demais.
NA PRÁTICA
O POSIX (que signi�ca Portable Operating System Interface) representa
um conjunto de padrões implementados, principalmente para sistemas
operacionais baseados no UNIX. Embora sistemas Windows também
possam executar certos programas POSIX, em geral, POSIX enfoca
sistemas UNIX e Linux.
O Linux, o Solaris e o Mac OS X são exemplos de sistemas compatíveis
com o POSIX.
Fonte: Silberschatz, 2015.
06/12/2023, 19:31 Sistemas Operacionais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-operacionais.html 8/10
Em 2001, a Apple lançou o sistema operacional Mac OS X, que foi reescrito desde a
última versão do MacOS, passando a ser um sistema operacional Unix-like, ou seja,
também baseado em UNIX. Em 2006, uma outra mudança nos sistemas da Apple,
que passaram a usar processadores Intel, como a linha de PCs.
Até hoje a �loso�a da Apple está baseada em vender hardware e software
combinados, por isso eles possuem poucos problemas de compatibilidade, por não
prestarem suporte a diferentes fabricantes de hardware, mas acabam limitando as
escolhas do usuário, para que tenham compatibilidade apenas com produtos Apple.
Também são conhecidos pela estabilidade, por limitarem esses problemas de
compatibilidade. Por isso, são sistemas muito usados por pro�ssionais que precisam
trabalhar com processamento de imagens e vídeos, além de pro�ssionais de design
grá�co em geral. Apesar de ser um sistema para computadores (e laptops), todos os
produtos da Apple ganharam um novo impulso após o lançamento do iPhone.
iOS e Android
Após o lançamento do iPhone, em 2007, os smartphones evoluíram muito e
dominaram o mundo em todas as áreas de nossas vidas. Toda a nossa comunicação
foi impactada, assim nós pedimos comida, pedimos carona ou algum outro serviço
que não existia há alguns anos e hoje não vivemos sem.
Para dar conta dos smartphones, existem sistemas operacionais especí�cos para
eles, preparados para lidar com suas limitações e particularidades. Na prática,
smartphones são computadores e são contemplados por tudo o que já discutimos
aqui, mas possuem processamento, memória e recursos limitados, possuem uma
interação diferente (através do toque ao invés de teclado e mouse), portanto, os
sistemas operacionais também são preparados para essas particularidades.
06/12/2023, 19:31 Sistemas Operacionais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-operacionais.html 9/10
Na linha da Apple temos o iPhone e o iPad, que rodam o sistema operacional iOS. É
um sistema operacional proprietário e segue a mesma linha que vimos no Mac OS X,
de trabalhar apenas com hardware da Apple para diminuir problemas de
compatibilidade e também trabalhar com a venda de hardware e software juntos.
Pouco depois do lançamento do iPhone, a Google lançou o sistema operacional
Android. Seguindo uma linha parecida com o que a IBM fez com o PC, o sistema
Android permite a utilização em equipamentos dos mais diferentes fabricantes,
aberto a personalizações de suas versões.
O Android é um sistema operacional licenciado como software livre, usando a
licença Apache 2.0, e tem como núcleo o kernel Linux. Possui suporte a diferentes
tipos de hardwares e possibilita a criação de smartphones dos mais simples até os
mais avançados em hardware.
06/12/2023, 19:31 Sistemas Operacionais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-operacionais.html 10/10
12:35
https://vimeo.com/user82076795
06/12/2023, 19:32 Linguagens e Ferramentas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/linguagens-e-ferramentas.html 1/8
Linguagens e Ferramentas
AUTORIA
Andre Abdala Noel
06/12/2023, 19:32 Linguagens e Ferramentas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/linguagens-e-ferramentas.html 2/8
Qual é a atividade que você mais gosta de fazer em seu computador ou em seu
smartphone? Você passa muito tempo com seus dispositivos?
Como já conversamos na aula anterior, você não usa um computador pelo sistema
operacional, mas pelos programas que existem nele. Também já vimos que uma das
tarefas do sistema operacional é possibilitar o funcionamento dos programas,
traduzindo as instruções e gerenciando a execução. Mas você já parou para pensar
em como os programas são feitos?
Como um Programa é Criado
Mais uma vez, quero lembrar você de que o computador nada mais é do que uma
máquina de calcular muito rápida. Além disso, os computadores não são
inteligentes, eles fazem apenas aquilo que alguém mandou que façam. Ilustrando
isso, um professor meu disse uma vez: “Os computadores nunca erram. Quem erra é
sempre o ser humano: ou o que está usando o computador ou o que o programou”.
Programas de computador são instruções que dizem ao computador o que fazer.
Essas instruções podem variar em níveis de detalhamento, mas é basicamente isso,
quando você cria um programa de computador está dando uma série de instruções
para o programador seguir.
No princípio, os programadores precisavam entender as instruções do processador
para escrever uma sequência de instruções (operações) que o computador iria
desenvolver para que o objetivo fosse alcançado. Depois, surgiram linguagens de
programação de propósito geral, que simpli�cavam as instruções e que poderiam
ser utilizadas para diferentes arquiteturas. A linguagem é “traduzida” para as
instruções de máquina a partir de um compilador ou interpretador, que veremos
adiante.
Com a utilização dos sistemas operacionais, esses �cam responsáveis por entender a
arquitetura da máquina e podem fazer a tradução das linguagens para as instruções
de cada arquitetura. Isso simpli�cou ainda mais o processo.
Assim, um programa de computador pode ser resumido como uma sequência de
instruções em uma determinada linguagem de programação, compilado como um
programa executável para uma determinada arquitetura. Não é uma de�nição
formal, mas nos permite entender como é.
Então, o que eu preciso para programar? Basicamente, de um editor de textos e um
compilador ou interpretador. Atenção, quando digo editor de textos, é algo como o
bloco de notas, para textos simples, não formatados. Não pense em algo como o
Word, que cria textos em formatos especí�cos. Na prática, é sempre melhor usar um
editor especí�co para programação, porque eles possuem uma série de recursos
muito úteis para o desenvolvimento.
06/12/2023, 19:32 Linguagens e Ferramentas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/linguagens-e-ferramentas.html 3/8
Linguagens de Programação
Quando nós aprendemos um novo idioma, nos tornamos aptos a conversar com
pessoas que também sabem esse outro idioma. Quando aprendemos uma
linguagem de programação, nos tornamos aptos a conversar com o nosso
computador. Podemos ensiná-lo a realizar as tarefas do nosso trabalho, a calcular
impostos em geral, a praticar jogos e se tornar nosso oponente, entre outras coisas.
O�cialmente, o computador só conversa em linguagem demáquina, mas as
linguagens funcionam como um segundo idioma para eles. E por que as linguagens
de programação têm esse nome?
Em vários aspectos, uma linguagem de programação se assemelha a uma
linguagem que as pessoas utilizam. Você se lembra das aulas de português quando
estudaram sobre emissor, receptor, código, mensagem, etc.? Esses elementos
também estão presentes em linguagens de programação, assim como regras
ortográ�cas e gramaticais que são de�nidas para cada linguagem.
Como temos vários objetivos diferentes para o computador, também há várias
linguagens, que se adéquam melhor ou pior a determinados tipos de problemas.
Existem linguagens mais voltadas a cálculos matemáticos e estatísticos, outras
voltadas à programação web, outras voltadas a processamento de dados. Por isso,
não há uma linguagem de programação que seja melhor às demais, a linguagem a
ser utilizada deve ser escolhida de acordo com o problema a ser solucionado.
CONECTE-SE
É impossível saber ao certo quantas linguagens de programação
existem atualmente. A Wikipedia lista cerca de 700 linguagens,
enquanto a O’Reilly cataloga cerca de 2500 e o HOPL fez um
levantamento (e árvore genealógica) de 8945 linguagens de
programação. Algumas fontes estimam que podem chegar a 25000.
Apesar disso, temos cerca de 50 como as mais populares.
https://go.eadstock.com.br/bjl
https://go.eadstock.com.br/bjl
06/12/2023, 19:32 Linguagens e Ferramentas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/linguagens-e-ferramentas.html 4/8
Nesse momento, bate um certo desespero em quem está começando a estudar:
“Mas como é que eu vou aprender todas as linguagens de programação? É muita
coisa!” A resposta é bem simples: Você não vai. É impossível aprender todas as
linguagens e também não há necessidade para isso. Em sua carreira, você deve se
tornar especialista em uma ou duas, e aprender bem mais umas duas ou três,
opinião minha. Sabendo bem a programação e tendo uma noção de outras
linguagens, quando precisar trabalhar com uma linguagem nova �ca mais fácil de
migrar.
Para entender melhor as linguagens, podemos separá-las em categorias. Podemos
separar por: como trabalham os tipos de dados (Figura 1), se são fortemente tipadas
(os tipos de dados importam e não são combinados em operações) ou fracamente
tipadas (os tipos se misturam). Podemos separar em dinamicamente tipadas
(variáveis não precisam ser declaradas) ou estaticamente tipadas (variáveis devem
ser declaradas).
Figura 1 – Linguagens de programação em relação à tipagem de dados
Fonte: O autor.
Podemos classi�car as linguagens pelo paradigma de programação, se é
estruturada, orientada a objetos, funcional, etc. É uma separação bem interessante,
mas ainda não vamos cobrir nesta disciplina. Ou podemos classi�cá-las de acordo
com os níveis em relação à complexidade.
06/12/2023, 19:32 Linguagens e Ferramentas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/linguagens-e-ferramentas.html 5/8
Linguagens de baixo nível são linguagens mais próximas à linguagem de máquina,
com instruções mais restritas e mais próximas às instruções do processador.
Linguagens de alto nível são linguagens mais próximas ao usuário, ou seja, se
assemelham mais à linguagem falada e abstraem muito mais os dados.
NA PRÁTICA
Cada linguagem de programação possui seu compilador ou
interpretador, que costuma ser acompanhado com um pacote de
utilitários para a linguagem. Porém, existem plataformas online para
programação, que funcionam para aprendizagem de linguagens e até
mesmo para o desenvolvimento de aplicações em equipe.
O site repl.it possui suporte a diversas linguagens de programação para
que você conheça ou programe nessas linguagens direto da
plataforma. REPL é uma abreviatura utilizada para interpretadores
interativos de linguagens de programação que signi�ca "read-eval-
print-loop", em tradução livre, "leia, avalie, imprima e repita”. Portanto, o
site apresenta interpretadores para diversas linguagens, até mesmo
para linguagens tradicionalmente compiladas.
Processo de Compilação
Após a escrita do código-fonte em uma linguagem de programação, ainda não
temos um programa de computador. O código escrito precisa ser compilado ou
interpretado para se tornar um programa executável.
Um compilador recebe o código-fonte, o analisa para veri�car se não há erros
(detectáveis) no programa e cria um arquivo executável que é o programa que pode
ser executado em um computador (aquele arquivo.exe, por exemplo). Após esse
processo, o programa pode ser executado diretamente a partir desse arquivo e o
código-fonte não será mais utilizado. Mas atenção: toda alteração no programa deve
ser feita a partir do código-fonte e um novo processo de compilação deve ser feito
para que o executável tenha as atualizações.
Quando a linguagem é interpretada, um interpretador faz um processo de análise,
como o compilador, gera um executável e executa o programa, mas o programa
executável não é permanente, ele só existe durante a execução. Sendo assim, toda
06/12/2023, 19:32 Linguagens e Ferramentas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/linguagens-e-ferramentas.html 6/8
execução é feita a partir do código-fonte, que é interpretado toda vez que se precise
usar o programa. Portanto, não há um arquivo executável para ser distribuído, o
programa é distribuído diretamente como código-fonte, como o código JavaScript
existente em inúmeros sites da web que é interpretado pelos navegadores.
Durante o processo de compilação (Figura 2), o trabalho do programador está
apenas na primeira etapa, que é a escrita do código-fonte. Quando a escrita está
terminada, o programa é compilado, passa por análises e otimizações até o
programa executável �nal ser criado.
Figura 2 – Processo de compilação
Fonte: Noel, 2019.
O primeiro passo, após a criação do código, é o analisador léxico, que veri�ca se
alguma palavra reservada ou símbolo da linguagem está escrito errado. É o
equivalente a uma veri�cação ortográ�ca na língua portuguesa. Se houver algum
erro, interrompe o processo e exibe uma mensagem de erro para o usuário,
indicando onde o erro foi encontrado.
Se não houver erros léxicos, o código passa para o analisador sintático, que faz uma
veri�cação gramatical, veri�cando se não há erros nas regras da gramática, como
comandos ou símbolos em ordem errada, operadores ou operandos faltando, etc. Se
houver erros, também interrompe o processo e informa o usuário.
Não havendo erros sintáticos, o código passa por um analisador semântico, que
tenta encontrar erros na lógica do programa. Como o compilador não tem como
saber o que se passa pela cabeça do programador, são os erros mais difíceis de se
identi�car. São erros que, apesar de respeitarem a ortogra�a e a gramática, afetam a
lógica de funcionamento do programa. Por exemplo, um sinal de soma onde seria
subtração em uma expressão matemática não seria identi�cado como um erro. Por
isso, esse analisador veri�ca coisas como variáveis não declaradas ou não
inicializadas no código, por exemplo.
06/12/2023, 19:32 Linguagens e Ferramentas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/linguagens-e-ferramentas.html 7/8
Ao passar pelos três analisadores sem erro, um código intermediário é criado, que
seria o esqueleto do programa, já teoricamente funcional. A partir daí, o código
passa por um otimizador de código, que busca melhorar a escrita do programa,
substituindo trechos por outros trechos que fazem a mesma coisa, mas de forma
otimizada.
Então, chegamos ao código objeto, que já é quase o programa �nal, já otimizado.
Esse código objeto passa pelo ligador (linker) que junta ao código trechos de
bibliotecas utilizadas pelo código, para criar o programa objeto, que é o nosso
programa �nal executável.
Como já foi comentado, um programa interpretado passa por um processo parecido,mas não cria um programa executável permanente, repetindo as etapas a cada
execução.
06/12/2023, 19:32 Linguagens e Ferramentas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/linguagens-e-ferramentas.html 8/8
14:14
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:32 Organização de Arquivos
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/organizacao-de-arquivos.html 1/7
Organização de Arquivos
AUTORIA
Andre Abdala Noel
06/12/2023, 19:32 Organização de Arquivos
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/organizacao-de-arquivos.html 2/7
Você é uma pessoa organizada? Ninguém está vendo sua resposta, pode ser sincero.
Você organiza suas coisas ou você é daqueles que mantêm tudo bagunçado, mas
sabe exatamente onde encontrar o que precisa?
Quando falamos sobre o sistema operacional, falamos que uma das funções do
sistema operacional é fornecer uma forma de organizar os arquivos do computador.
Mas o que isso signi�ca, na prática?
Bom, primeiro precisamos entender o que é um arquivo, para depois entender como
os arquivos são organizados. Então, podemos entender também quais são as opções
de organizações de arquivos que temos.
Arquivos
Toda informação armazenada em nosso computador de forma permanente vai para
a memória secundária. Para simpli�car, vamos tratar aqui apenas como “disco”, seja
magnético, SSD ou outro. E essa informação é armazenada, como já vimos, em
representação binária. É fácil perceber que buscar essa informação diretamente no
disco seria algo difícil.
Para isso existe a noção de arquivos, que, segundo Tanenbaum (2016, p. 211), "é um
mecanismo de abstração. Ele fornece uma maneira para armazenar informações
sobre o disco e lê-las depois. Isso deve ser feito de tal modo que isole o usuário dos
detalhes de como e onde as informações estão armazenadas, e como os discos
realmente funcionam”.
Dessa forma, arquivos são como rótulos que temos sobre um agrupamento de
dados e esse agrupamento pode signi�car um documento de texto, uma música,
um desenho ou diversos outros tipos de informação que podem ser tratados por
diferentes programas.
Dentre os arquivos de dados em geral (ignorando arquivos especiais para o sistema
de arquivos), podemos separar dois tipos distintos: os arquivos de texto e os arquivos
binários.
Arquivos de texto são arquivos em que todos os bytes do mesmo representam
caracteres (na aula 3, falamos um pouco sobre a representação de caracteres). Então,
a conversão dos bytes para caracteres é direta e você consegue ler os dados em
qualquer editor de textos, como o bloco de notas, por exemplo.
Em programação, os arquivos de texto podem ser lidos e escritos diretamente
armazenando ou recuperando cadeias de caracteres diretamente, em sequência.
06/12/2023, 19:32 Organização de Arquivos
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/organizacao-de-arquivos.html 3/7
Já os arquivos binários são arquivos cujos bytes podem representar quaisquer tipos
de dados, não apenas texto. Por isso, a leitura desses arquivos não é tão trivial, você
precisa conhecer o padrão de dados do tipo do arquivo para identi�car se um bloco
de dados signi�ca um texto, um número inteiro, um número real ou outra
informação.
Para entender diferentes tipos de arquivos, os programas possuem “CODECs”
(“CODi�cador-DECodi�cador”), que são instruções de como os tipos de dados devem
ser lidos. Cada arquivo possui um cabeçalho, que identi�ca qual é o tipo do arquivo
para o sistema operacional saber qual codec utilizar.
Sistemas de Arquivos
Bom, os arquivos são coleções de dados que têm algo em comum. Mas, ao mesmo
tempo, são todos convertidos em binário para serem salvos no disco. Assim, o disco
tem bilhões (ou trilhões) de zeros e uns. Como é que eu acho a minha foto na praia
no meio de tudo isso?
Os sistemas operacionais são responsáveis por estabelecer e gerenciar os sistemas
de arquivos, que são estruturas hierárquicas que estabelecem uma organização
lógica entre os arquivos. Com isso, você consegue separar e nomear seus arquivos,
enquanto o sistema de arquivos guarda informações sobre a localização física desses
arquivos no disco.
Apesar de existirem diferentes tipos de sistemas de arquivos, que veremos adiante,
em geral eles trabalham com a estrutura de diretórios, que são arquivos especiais
que servem para organização, agrupando arquivos em diretórios (também
chamados de "pastas"). Assim, os diretórios possuem informações sobre os arquivos
que estão adicionados a ele, sendo que esses arquivos ainda podem ser outros
diretórios, formando uma estrutura em forma de árvore.
Por possuir essa estrutura hierárquica em forma de árvore, há o diretório raiz, que é
um diretório principal de onde todos os demais estão ligados direta ou
indiretamente. No sistema Windows, há um diretório raiz para cada unidade (ou
partição) ligado a uma letra, como “C:” ou “D:”. Nos sistemas baseados no UNIX, há
um único diretório raiz, identi�cado apenas por uma barra (“/”). Os demais arquivos e
diretórios estão todos abaixo do diretório raiz, mesmo que sejam partições diferentes
ou dispositivos externos.
06/12/2023, 19:32 Organização de Arquivos
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/organizacao-de-arquivos.html 4/7
Uma outra diferença entre sistemas Windows e UNIX em relação a diretórios está no
caminho de arquivos na estrutura, em que a hierarquia de diretórios é identi�cada
por barras (“/”) no UNIX e barra invertida (“\”) em sistemas Windows. É apenas um
detalhe de implementação, mas é um detalhe que precisa ser observado em
programação.
NA PRÁTICA
Como no UNIX, o espaço de nomes do NTFS é organizado como uma
hierarquia de diretórios. Cada diretório usa uma estrutura de dados
chamada árvore B+ para armazenar um índice dos nomes de arquivos
nesse diretório. Em uma árvore B+, o tamanho de cada caminho, da raiz
da árvore a uma folha, é o mesmo, e o custo de reorganização da árvore
é eliminado.
A raiz índice de um diretório contém o nível de topo da árvore B+. Em
um diretório grande, esse nível de topo contém ponteiros para
extensões de disco que mantêm o resto da árvore. Cada entrada no
diretório contém o nome e a referência de arquivo do arquivo, assim
como uma cópia do marcador de tempo de atualizações e do tamanho
do arquivo, extraídos dos atributos do arquivo residentes na MFT.
Fonte: Silberschatz, 2015.
Operações com Arquivos
Além de organizar os arquivos, o sistema de arquivos deve administrar os atributos
do arquivo, que são metadados com informações a respeito de detalhes como data
de criação, data de modi�cação e a que usuário o arquivo pertence. Também deve
cuidar da segurança, implementando permissões de acesso aos arquivos,
identi�cando quem pode ou não pode acessar ou modi�car os arquivos.
Segundo Tanenbaum (2016), existem diversas operações que podem ser realizadas
com arquivos, o que também é papel do sistema operacional gerenciar. Listamos
elas aqui em forma de tabela para simpli�car o estudo.
06/12/2023, 19:32 Organização de Arquivos
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/organizacao-de-arquivos.html 5/7
Tabela 1 – Operações com arquivos
Operação Descrição
Criar Criação de um arquivo. De�ne um arquivo novo e seus atributos.
Apagar Apaga o arquivo liberando o espaço dele em disco.
Abrir
Busca os atributos e endereços do arquivo em disco, tornando-o disponível para um
processo, mantendo-o em memória principal.
Fechar Libera o arquivo aberto da memória principal.
Ler Lê uma quantidade de bytes do arquivo.
Escrever Grava dados no arquivo na posição onde estiver o ponteiro de gravação.
Append Grava dados no arquivo, mas a partir da posição �nal.
Seek Move o ponteiro de leitura ou escrita para uma determinada posição.
Ler atributos Forma de ler os atributosde um arquivo.
Escrever
atributos
Uma forma de alterar os atributos de um arquivo.
Renomear
Muda o nome de um arquivo para outro nome. Funciona como se fosse feita uma cópia
do arquivo e apagada a versão original. É utilizada também para mover arquivos.
Fonte: Tanenbaum, 2016.
Tipos de Sistemas de Arquivos
Tendo a noção de como funcionam os arquivos e os sistemas de arquivos, a
implementação parece bem simples, não? Como você faria para implementar um
sistema de arquivos identi�cando arquivos no disco? Assim, é um amontoado de
bits que representam arquivos, como fazer isso funcionar?
Basicamente, o sistema de arquivos precisa identi�car a posição do arquivo no disco,
o tamanho do arquivo e pronto. Simples! Ou será que não?
Na prática, é um pouco mais complicado que isso. Imagine que em um disco de 10
GB você grava 7 arquivos de 1 GB cada, então você simplesmente os coloca em
sequência, você agora tem 7 GB ocupados e 3 GB livres. Então, você apaga o terceiro
e o quinto arquivos, você passa a ter 5 GB livres. Em seguida, você resolve salvar um
vídeo que gravou em sua câmera em 4K e esse vídeo �cou com 4 GB. Tem espaço
para gravar esse arquivo?
06/12/2023, 19:32 Organização de Arquivos
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/organizacao-de-arquivos.html 6/7
Teoricamente, sobraram 5 GB, mas esse espaço não é sequencial, você �cou com
dois blocos de 1 GB e 1 bloco de 3 GB. Como gravar o arquivo de 4 GB? Você pode
separar ele em partes? Sim, você pode. E como fazer isso é algo que o seu sistema de
arquivos decide para você.
Por causa de decisões como essa (entre outras), existem diferentes abordagens para
gravar e recuperar arquivos, assim, existem também diferentes sistemas de arquivos.
Um exemplo é o sistema FAT, que se popularizou com o MS-DOS e continuou sendo
utilizado em sistemas Windows, mas é um sistema bastante simples, uma
implementação direta de conceitos de sistemas de arquivos sem muita otimização.
Por isso, a Microsoft lançou, muitos anos depois, o sistema de arquivos NTFS, um
sistema mais evoluído e mais con�ável para otimização na organização de arquivos.
Enquanto o Windows trabalha apenas com duas opções de sistemas de arquivos
(FAT e NTFS), sistemas Linux possuem uma variedade de opções que podem ser
escolhidas pelo usuário. Um dos sistemas de arquivos mais populares em Linux é o
ext2, que evoluiu para o ext3 e depois o ext4, sendo o primeiro sem journaling e os
outros dois com journaling.
Journaling é uma forma de registro (journal) que permite gravar alterações nos
arquivos a ponto de conseguir se recuperar automaticamente de falhas, como em
desligamento inesperado ou quedas de energia.
Além disso, existem outros tipos de sistemas de arquivos, que estruturam os
arquivos em disco, de forma a conseguir ganhos de performance ou velocidade, de
acordo com o tipo de uso que será realizado naquela partição. Para entender
melhor, vejamos como trabalham alguns desses sistemas, com a nomenclatura
usada em sistemas Linux (TDLP, 2020):
06/12/2023, 19:32 Organização de Arquivos
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/organizacao-de-arquivos.html 7/7
• minix: o sistema de arquivos mais antigo, limitado em recursos.
Permite nomes de arquivos de apenas 30 caracteres e máximo de
64MB por sistema de arquivos.
• ext2: o sistema de arquivos nativo em Linux com mais recursos,
projetado para ser compatível com novas versões.
• ext3: possui todos os recursos do sistema ext2, com a adição do
journaling. Tem a performance melhorada e recuperação em queda.
• reiserfs: um sistema robusto, com journaling. Permite que o sistema
se reconstrua após danos.
• jfs: um sistema com journaling projetado pela IBM para trabalhar em
ambientes de alta performance.
• xfs: projetado pela Silicon Graphics para trabalhar com sistemas 64-
bits com journaling. Projetado para manter alta performance com
arquivos e sistemas de arquivos grandes.
• msdos: compatibilidade com sistemas FAT.
• vfat: FAT extendida, conhecida como FAT32, com suporte a discos
maiores.
• ntfs: o sistema de arquivos mais avançado da Microsoft, possuindo
journaling.
• iso9660: O sistema de arquivos padrão em CD-ROM.
• nfs: sistema de arquivos para redes de computadores, permitindo
compartilhamento de sistemas de arquivos entre computadores
diferentes.
• smbfs: sistema de arquivos para rede compatível com protocolo de
compartilhamento do Windows.
• hpfs: sistema de arquivos do OS/2.
Portanto, os sistemas de arquivos podem funcionar de formas diferentes, utilizando
diferentes estratégias para armazenar e recuperar arquivos. A escolha do sistema de
arquivos a ser utilizada depende do suporte fornecido pelo sistema operacional que
vamos utilizar e da utilidade que teremos para a partição.
https://vimeo.com/user82076795
06/12/2023, 19:32 Banco de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/banco-de-dados.html 1/8
Banco de Dados
AUTORIA
Andre Abdala Noel
06/12/2023, 19:32 Banco de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/banco-de-dados.html 2/8
Não vou cometer a indelicadeza de perguntar se você é uma pessoa organizada,
mas os seus dados são organizados? Você é a pessoa responsável por organizar suas
fotos ou seus arquivos de estudos?
Para começar bem, vamos de�nir o que seria um dado e também o que vem a ser
uma informação. Segundo Monteiro (2007, p. 1, grifos do autor),
os termos dado e informação podem ser tratados como sinônimos ou
como termos distintos; dado pode ser de�nido como a matéria-prima
originalmente obtida de uma ou mais fontes (etapa de coleta), e
informação como o resultado do processamento, isto é, o dado
processado ou ‘acabado’.
Resumindo, os sistemas, em geral, trabalham com dados de entrada, realizam um
processamento sobre esses dados para, então, produzirem uma informação que
contenha valor.
Podemos dizer, sem medo de errar, que os dados são a parte mais importante de
um programa. Se você for vender um programa, o seu usuário não vai se importar
com a sua linguagem de programação, mas vai observar se o sistema trata bem os
dados da sua empresa, se não perde informações e se tem uma resposta rápida na
recuperação de dados.
De uma forma um pouco mais elegante, Eric Raymond escreveu em seu livro “A
Catedral e o Bazar” o seguinte: “Mostre-me seu código e esconda suas estruturas de
dados, e eu poderei continuar misti�cado. Mostre-me as suas estruturas de dados, e
eu provavelmente não necessitarei do seu código; ele será óbvio" (RAYMOND, 1998).
Sistemas de Banco de Dados
Sabendo da importância dos dados em si, é importante saber representar,
armazenar e recuperar dados de forma e�ciente. Já conversamos aqui sobre a
representação de dados, sobre arquivos para armazenar e recuperar dados, agora
daremos um passo adiante para tratar de banco de dados.
Como você já deve saber (ou imaginar), banco de dados é algo que pode ser
utilizado para guardar dados, certo? Mas eu quero enfatizar melhor uma questão,
fazendo um exercício de imaginação. Imagine a sua casa ou seu quarto, você tem
vários lugares onde guarda coisas especí�cas. As roupas vão no guarda-roupas, os
livros �cam na prateleira, o pijama �ca em cima da cama (já que daqui a pouco vai
usá-lo de novo).
06/12/2023, 19:32 Banco de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/banco-de-dados.html 3/8
Mas todo mundo tem a famosa gaveta da bagunça, ainda que não seja uma gaveta.
Você sempre tem um lugar onde acumula tudo o que vai sobrando pelo caminho,
para que a casa não �que desorganizada e para que você não perca as suas coisas. A
vantagem é que você não perderá as suas coisas que estão ali, a desvantagem é que
provavelmente você não vai encontrar mais o que está lá, pelo menos não
encontrará rápido no momento em que precisa.
Então, um sistema debanco de dados é uma forma de guardar os dados de uma
forma que você também possa recuperá-los rapidamente, sempre que necessário.
Assim como você vai até a gaveta de camisetas quando quer uma camiseta, um
banco de dados facilita encontrar os dados que você precisa, quando precisa.
Colocando melhor, Elmasri (2011, p. 3) diz que “banco de dados é uma coleção de
dados relacionados” (grifo do autor). Portanto, entendemos que quando reunimos
dados que possuem alguma relação entre si, estamos montando um banco de
dados. Dessa forma, até aquela sua planilha que guarda os dados de clientes e seus
e-mails é um banco de dados.
Para não �car muito genérico e permitir que se entenda tudo como banco de dados,
em geral observam-se algumas propriedades em banco de dados (ELMASRI, 2011):
A representação de parte do mundo real, podendo ser chamado de
“minimundo”.
Uma coleção de dados que tenha coerência e signi�cado.
Uma �nalidade especí�ca para o banco de dados.
Assim, um banco de dados é uma coleção de dados que representa algo relativo ao
mundo real, se a informação no mundo real for alterada, isso deve ser re�etido no
banco. Além disso, os dados devem ter relação entre si e devem ter um signi�cado
implícito. Esses dados não podem ser contraditórios. Por �m, o banco de dados tem
algum objetivo, os dados são reunidos para que alguma atividade seja realizada com
eles.
Sistemas Gerenciadores de Banco
de Dados (SGBD)
A partir da de�nição de banco de dados que vimos acima, percebemos que
podemos cuidar de nossos dados de formas diferentes, já que um banco de dados é
uma coleção de dados relacionados. Podemos salvar em planilhas, em arquivos de
texto, em cartões de papel, etc.
06/12/2023, 19:32 Banco de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/banco-de-dados.html 4/8
Porém, como nosso objetivo é trabalhar com banco de dados de forma otimizada e,
principalmente, ter uma resposta imediata ao requisitar informações do banco,
veremos uma forma mais bem-de�nida de gerenciar os nossos dados. O Sistema
Gerenciador de Banco de Dados (SGBD) é uma coleção de programas desenvolvida
para manipular banco de dados de uma forma consistente e facilitada (ELMASRI,
2011).
Figura 1 – Diagrama simpli�cado de um ambiente de sistema de banco de dados.
Fonte: Elmasri, 2011.
06/12/2023, 19:32 Banco de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/banco-de-dados.html 5/8
Portanto, o SGBD fornece uma forma de de�nir, construir, manipular e compartilhar
banco de dados entre programas e usuários diferentes. Como se vê na Figura 1, o
SGBD não permite que os programas tenham acesso direto aos dados, como uma
forma de organizar e proteger os dados. Toda operação é realizada através das
funções fornecidas pelo SGBD para manter a consistência e a disponibilidade do
banco de dados.
Assim, os dados são armazenados ou recuperados através de consultas (queries),
que são processadas pelo SGBD. A partir do processamento, o SGBD lê ou escreve
no banco de dados e retorna o resultado para o programa que o chamou. Dentre os
principais SGBDs comerciais, podemos destacar: Oracle, MySQL, MariaDB, SQL
Server, PostgreSQL e DB2.
SQL – Structured Query
Language
Os principais SGBDs utilizados comercialmente seguem um modelo de dados
relacional e utilizam para suas consultas a linguagem SQL, que é uma linguagem de
consultas a banco de dados muito popular e com sintaxe uni�cada entre diferentes
modelos de SGBDs, contando com apenas algumas poucas variações.
06/12/2023, 19:32 Banco de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/banco-de-dados.html 6/8
A linguagem SQL faz tanto a parte de DDL (Linguagem de De�nição de Dados)
quanto DML (Linguagem de Manipulação de Dados), ou seja, através da linguagem
SQL é possível criar toda a estrutura do banco de dados, quanto acessar os dados
armazenados pelo banco.
SQL é uma linguagem de alto nível, sendo fácil de ser utilizada e um tanto intuitiva,
possui também uma sintaxe simples. Veremos aqui alguns dos principais comandos
da linguagem.
Para de�nição de dados (DDL):
CREATE
Comando utilizado para criar esquemas/banco de dados, tabelas e domínios.
ALTER
NA PRÁTICA
Um banco de dados não relacional é um banco de dados que não usa o
esquema de tabela de linhas e colunas encontrado na maioria dos
sistemas de banco de dados tradicionais. Em vez disso, os bancos de
dados não relacionais usam um modelo de armazenamento otimizado
para os requisitos especí�cos do tipo de dados que está sendo
armazenado. Por exemplo, os dados podem ser armazenados como
pares chave/valor simples, como documentos JSON ou como um
grá�co que consiste em bordas e vértices.
O termo NoSQL refere-se a armazenamentos de dados que não usam o
SQL para consultas, mas usam outras linguagens de programação e
constructos para consultar os dados. Na prática, “NoSQL” signi�ca
“banco de dados não relacionais”, mesmo que muitos desses bancos de
dados deem suporte a consultas compatíveis com SQL. No entanto, a
estratégia de execução de consulta subjacente é geralmente muito
diferente da maneira como um RDBMS (SGBD Relacional) tradicional
executa a mesma consulta SQL.
https://go.eadstock.com.br/bjn
https://go.eadstock.com.br/bjn
06/12/2023, 19:32 Banco de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/banco-de-dados.html 7/8
Comando para alterar elementos criados com CREATE.
DROP
Comando utilizado para remover elementos criados pelo CREATE.
Para manipulação de dados (DML):
SELECT
Comando para selecionar um conjunto de dados de uma ou mais tabelas ou visões.
INSERT
Comando usado para inserir dados.
UPDATE
Comando usado para alterar dados existentes no banco de dados.
DELETE
Comando usado para apagar dados no banco de dados. Apenas dados, não apaga a
estrutura.
Como exemplo, podemos ver como �caria a criação de uma tabela de alunos e a
inserção de alguns dados:
06/12/2023, 19:32 Banco de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/banco-de-dados.html 8/8
CREATE TABLE 'aluno' (
 'ra' int(11) NOT NULL AUTO_INCREMENT,
 'nome' varchar(100) NOT NULL,
 PRIMARY KEY ('ra')
);
INSERT INTO 'aluno' ('ra', 'nome') VALUES
(2341, 'João Antunes Testivaldo da Silva'),
(3123, 'Emerson Teste Soares'),
(3131, 'Márcia de Testes'),
(3455, 'Testiano Domingos'),
(3456, 'José dos Testes');
Temos, então, uma tabela simples, apenas com nome e RA dos alunos, na qual
primeiro criamos a tabela e depois podemos inserir os dados.
13:56
https://vimeo.com/user82076795
06/12/2023, 19:33 Arquiteturas Avançadas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/arquiteturas-avancadas.html 1/9
Arquiteturas Avançadas
AUTORIA
Andre Abdala Noel
06/12/2023, 19:33 Arquiteturas Avançadas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/arquiteturas-avancadas.html 2/9
Os computadores tiveram um grande avanço com a adoção de transistores. Com a
criação de circuitos integrados foi possível colocar muitos circuitos dentro de um
único chip e, assim, os computadores puderam ser reduzidos, com um aumento de
capacidade. Sim, estou me repetindo, mas isso é importante para entender o que
vem pela frente.
O aumento da capacidade dos computadores, mais especi�camente dos
processadores, segue um padrão conhecido como Lei de Moore. Gordon Moore, que
foi cofundador da Intel, percebeu em 1965 que a quantidade de transístores dentro
de um chip dobrava a cada ano. Esse ritmo se manteve nos anos seguintes, até que
na década de 1970, o ritmo diminuiu para dobrar a cada 18 meses e se manteve
assim (STALLINGS, 2017).
Com o tempo, os processadores evoluíram muito basicamente aumentando a
velocidade do clock e a densidade lógica dos chips. Porém, chegou a um ponto em
que começaram a aparecer obstáculos. Umdeles foi o aumento da densidade de
potência, que gera um aquecimento difícil de dissipar. Além disso, aumentando-se a
capacidade, utilizam-se �os mais �nos e mais próximos, o que aumenta,
respectivamente, a resistência e a capacitância, gerando um atraso na
movimentação dos elétrons (STALLINGS, 2017).
Portanto, outras estratégias começaram a ser abordadas, como o uso de multicore
(múltiplos núcleos) ou GPUs (Unidades de Processamento Grá�co), que veremos
mais à frente.
06/12/2023, 19:33 Arquiteturas Avançadas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/arquiteturas-avancadas.html 3/9
Quando falamos sobre os processadores, na aula 7, vimos que há o chamado ciclo de
execução, no qual uma instrução ocupa um ciclo de execução (ou ciclo de clock) do
processador. Agora, veremos algumas arquiteturas que permitem mais de uma
instrução por ciclo de execução, o que chamamos de paralelismo.
NA PRÁTICA
Inicialmente, os processadores seguiam a abordagem CISC (Complex
Instruction Set Computer), na qual as instruções eram mais complexas,
podiam englobar mais operações em uma instrução a �m de que os
programas �cassem menores e o trabalho do programador fosse
facilitado. Os programas �nais, porém, não �cavam tão pequenos e veio
a proposta dos computadores RISC (Reduced Instruction Set
Computer), que teria um conjunto de instruções reduzidas e mais
simples, em que cada uma das execuções pudesse ser executada em
apenas um ciclo do processador.
No começo da década de 1980, a linha da Intel estava utilizando a
abordagem CISC, enquanto PowerPC utilizava a abordagem RISC. Logo,
os dois lados perceberam duas coisas: primeiro, o RISC pode se
bene�ciar de alguns recursos CISC; segundo, o CISC pode se bene�ciar
de alguns recursos RISC. Assim, o PowerPC passou a não ser mais um
“RISC puro” e os Pentium, da Intel, passaram a incorporar algumas
características RISC.
Fonte: Noel, 2019 (adaptado).
Paralelismo em Nível de
Instrução
Podemos obter a execução de mais de uma instrução por ciclo controlada por
software ou por hardware. Chamamos de paralelismo em nível de instrução o
paralelismo controlado por software, por meio de pipelines.
Pipelining
06/12/2023, 19:33 Arquiteturas Avançadas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/arquiteturas-avancadas.html 4/9
Basicamente, a estratégia de pipelining consiste em dividir o ciclo de instrução em
partes menores, em que cada parte é tratada por subsistemas diferentes de
hardware, então executar em paralelo essas partes.
Cada parte do ciclo de execução chamamos de estágio. Quanto mais estágios, mais
aceleração teremos na execução de instruções. Vejamos um exemplo de pipeline de
6 estágios apresentado por STALLINGS (2017).
Estudamos que o ciclo de execução pode ser resumido em busca-decodi�cação-
execução. Sendo mais detalhistas, vamos dividir esse ciclo em seis partes:
Buscar a instrução (FI) - que é a etapa de ler a próxima instrução a ser
executada.
Decodi�car a instrução (DI) - que determina quem são os operandos e qual é a
operação.
Calcular os operandos (CO) - identi�cando o endereço efetivo de cada
operando.
Buscar os operandos (FO) - onde os operandos são lidos da memória se já não
estiverem nos registradores.
Executar a instrução (EI) - onde a ULA efetua a instrução e salva a resposta no
registrador do operando indicado.
Escrever operando (WO) - onde o resultado é armazenado na memória.
Cada estágio tem um tempo de execução aproximadamente igual.
06/12/2023, 19:33 Arquiteturas Avançadas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/arquiteturas-avancadas.html 5/9
Figura 1 – Representação de pipeline de 6 estágios
Fonte: Stallings, 2017.
Analisando a Figura 1, podemos ver 14 unidades de tempo onde cada estágio ocupa
uma unidade de tempo para ser executada. A primeira instrução executa seu
primeiro estágio no tempo 1. Quando passa para o segundo estágio, a instrução 2 já
começa a executar seu primeiro estágio e assim por diante.
Se as 9 instruções fossem executadas em sequência, como cada uma possui 6
estágios de 1 unidade de tempo cada, seria necessário utilizar 54 unidades de tempo
para processar as instruções. Com o pipeline esse tempo foi reduzido de 54 para 14,
uma redução bastante considerável.
Arquiteturas Superescalares
Para melhorar o desempenho de processamento paralelo, o processador
superescalar foi desenvolvido com unidades de hardware que possibilitam múltiplas
pipelines independentes, aumentando as unidades funcionais (TANENBAUM, 2013).
06/12/2023, 19:33 Arquiteturas Avançadas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/arquiteturas-avancadas.html 6/9
Figura 2 – Processador superescalar com 5 unidades funcionais
Fonte: Tanenbaum, 2013.
A Figura 2 apresenta um processador superescalar com 5 unidades funcionais, com
um funcionamento parecido com a linha Core da Intel (TANENBAUM, 2013).
Arquiteturas VLIW (Very Long Instruction
Word)
A estratégia de paralelismo utilizando Palavra de Instrução Muito Longa (VLIW),
consiste em utilizar paralelismo em nível de instrução com a ajuda dos
compiladores.
Uma palavra de instrução muito longa (VLIW) é criada pelo compilador, colocando
em uma única palavra (já falamos sobre o conceito de palavra para o processador)
operações que podem ser executadas em paralelo. Com isso, a instrução comum
executa mais de uma instrução de forma simultânea (STALLINGS, 2017).
Paralelismo em Nível de Threads
06/12/2023, 19:33 Arquiteturas Avançadas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/arquiteturas-avancadas.html 7/9
“Um processador multithread deve permitir no mínimo um contador de programa
separado para cada thread de execução a ser executado concorrentemente”
(STALLINGS, 2017, p. 536). Veremos aqui as principais técnicas, que são
multithreading simultâneo (SMT) e chip multiprocessador.
Multithreading Simultâneo (SMT)
Para entender o que seria o trabalho com threads simultâneas, precisamos de�nir
que um thread é:
uma unidade de trabalho dentro de um processo que pode ser
despachada. Ela inclui um contexto de processador (o qual inclui o
contador de programa e o ponteiro de pilha) e sua própria área de
dados para uma pilha (para possibilitar desvio de sub-rotinas). Um
thread é executado sequencialmente e pode ser interrompido para que
o processador possa se dedicar a outro thread (STALLINGS, 2017, p. 535).
Quando é utilizado o multithreading simultâneo (SMT), signi�ca que instruções são
enviadas ao processador a partir de múltiplos threads. Assim, isso implica que o
hardware necessita da habilidade de enviar instruções superescalares, assim como a
capacidade de manter múltiplos contextos de threads (STALLINGS, 2017).
Portanto, para possibilitar a execução de threads simultâneas, é preciso que os
recursos sejam duplicados. Os processadores Intel Core i7, por exemplo, possuem
múltiplos cores com SMT, conseguindo executar mais instruções paralelas do que só
a quantidade de núcleos.
Chip Multiprocessador
06/12/2023, 19:33 Arquiteturas Avançadas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/arquiteturas-avancadas.html 8/9
Há uma busca constante por otimizar o que há dentro do chip conhecido como
processador. Você se lembra que já estudamos a evolução dos chips e também
como funciona um processador (pelo menos, espero que se lembre).
Uma das alternativas mais interessantes para romper a barreira da miniaturização
(falamos há pouco sobre a resistência e a capacitância) está na utilização de
processadores com múltiplos núcleos (cores). Funciona como se eu tivesse mais
processadores dentro de um único processador.
Dentro de um único chip, podemos ter vários núcleos independentes que podem
partilhar de uma mesma memória ou podem ter módulos de memória
independentes. Para exempli�car,Esse modelo proposto por von Neumann serviu de base para o desenvolvimento dos
computadores e permanece sendo o modelo utilizado até os dias de hoje.
Segunda Geração (1955-1964)
Os computadores da primeira geração eram muito grandes, dependiam de muitas
válvulas (que pareciam nossas lâmpadas incandescentes), as válvulas esquentavam
demais e queimavam com facilidade.
Por isso, o grande marco da segunda geração foi a substituição das válvulas por
transistores, que são componentes eletrônicos semicondutores, geralmente feitos de
silício, que fazem a função das válvulas. São muito menores, mais baratos, não
esquentam tanto e não queimam com tanta facilidade (STALLINGS, 2017). Não é de se
espantar que vários autores apresentem os transistores como a maior invenção do
século XX, pois possibilitaram o barateamento e a redução do tamanho das máquinas,
que antes ocupavam salas inteiras.
A criação do transistor foi em 1947, mas o primeiro computador a utilizá-los foi o TX-0,
desenvolvido no MIT, em 1955. Pouco depois surgiu a fabricante DEC, que �cou por
um bom tempo sendo a principal concorrente da IBM, que já fabricava computadores
desde a primeira geração (NOEL, 2019).
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 10/17
Em 1962, a IBM lançou o IBM-7094, que tinha ciclos de dois microssegundos
(equivalente a 500Hz) e funcionava mais para a área cientí�ca, também o IBM-1401
para a área comercial (MONTEIRO, 2007). Enquanto isso, a DEC investia em sua linha
PDP, que tinha menos desempenho, mas era bem mais barata do que a linha da IBM
(TANEMBAUM, 2013).
Terceira Geração (1964-1977)
Os computadores tiveram um grande avanço, além de redução de custo e de
tamanho com a adoção dos transistores. Porém, em 1958, começaram a colocar vários
circuitos em uma mesma peça de silício ou germânio, criando assim os circuitos
integrados (CI). Esses circuitos começaram a ser utilizados na grandeza de dezenas
de transistores em uma única peça, que logo passou para centenas e recebeu o nome
de LSI (Large Scale Integration – integração em grande escala) (MONTEIRO, 2007).
Figura 7 - O IBM-7094
Fonte: wikimedia.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 11/17
Esses circuitos LSI foram o marco da terceira geração de computadores, mais
especi�camente em 1964, com o lançamento da família System/360, da IBM. Ao invés
de trabalhar com duas linhas diferentes, como na segunda geração, a IBM criou uma
única linha, mas lançou computadores com 5 con�gurações diferentes, na mesma
arquitetura (MONTEIRO, 2007) para atender a necessidades e valores diferentes. Com
isso, a IBM dominou o mercado de computadores na terceira geração.
Com a família System/360, a IBM introduziu a multiprogramação (que a gente chama,
muitas vezes, de multitarefa), processadores com palavras de 32 bits, 16 MB de
memória e o sistema operacional OS/360 (MONTEIRO, 2007). Nessa época a DEC
lançou seu PDP-11, que era o concorrente mais próximo (TANEMBAUM, 2013).
Quarta Geração (1977-1991)
A evolução dos computadores levou sempre a uma redução do tamanho, junto com
uma redução de custos, o que foi trazendo o computador mais próximo às pessoas
comuns. Por isso, o grande marco da quarta geração foi a criação dos computadores
pessoais, ou simplesmente PC (Personal Computer). O grande divisor de águas foi o
Apple II, lançado em 1977, mas vale a pena a gente voltar um pouquinho na história.
Figura 8 - Um IBM 360/20
Fonte: wikipédia.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 12/17
Os circuitos integrados, que possibilitavam centenas de transistores dentro de um
único componente na terceira geração, passaram a suportar dezenas de milhares de
transistores, passando para a linha VLSI (Very Large Scale Integration – integração em
escala muito grande).
Com a utilização e a evolução dos circuitos integrados, em 1971 a Intel, que foi uma
empresa criada para fabricar componentes eletrônicos, conseguiu colocar uma
Unidade Central de Processamento (CPU) toda em um único circuito integrado, que
foi o primeiro processador em CI, o Intel 4004 (MONTEIRO, 2007). Vejamos o que Noel
nos explica:
Enquanto o 4004 possuía palavra de 4 bits e cerca de 2300 transistores
na pastilha, logo foi lançado o 8008, com palavra de 8 bits e cerca de
3500 transistores, mas o primeiro microprocessador para uso geral foi
lançado em 1973, o Intel 8080, com cerca de 5000 transistores, palavras
de 8 bits, endereços de memória de 16 bits, permitindo o uso de
64Kbytes de memória, e um conjunto de 78 instruções (NOEL, 2019, p.
30).
O�cialmente, o Altair 8800 foi o primeiro PC desenvolvido, o que se deu em 1975 e
contava com um processador Intel 8080. No ano seguinte, 1976, uma empresa de
garagem chamada Apple lançou seu primeiro PC, o Apple I, mas quem ganhou
destaque mesmo foi seu sucessor, o Apple II, lançado em 1977. Uma das grandes
diferenças é que o primeiro modelo era vendido em partes, para o usuário montar o
computador, enquanto o segundo já era vendido “pronto”, todo montado. Foi neste
momento que popularizaram com computadores com monitor.
CONCEITUANDO
Com o Altair 8800, veio algo importante para a história dos
computadores. O PC havia sido criado pela empresa MITS, que comprou
um interpretador da linguagem BASIC para distribuir com o
computador. Esse interpretador foi criado por Bill Gates e Paul Allen,
possibilitando a fundação da Microsoft.
Fonte: MONTEIRO, 2007.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 13/17
Nos anos seguintes, surgiram diversos modelos diferentes de PCs e várias fabricantes,
algumas que �caram até mais famosas pela linha de videogames. Surgiram PCs da
Comodore, da Atari e da Amiga (NOEL, 2019), por exemplo.
Não demorou até que a IBM entrasse com força na linha dos computadores pessoais,
criando o IBM-PC, em 1981, com processador 8088, da Intel (NOEL, 2019). Mais uma
vez, a IBM dominou o mercado de computadores, agora com os computadores
pessoais, e se popularizou muito por manter um projeto aberto, possibilitando que
diversos fabricantes criassem computadores e componentes compatíveis, o que não
ocorreu com a Apple, por exemplo. Isso barateou e popularizou a linha (TANEMBAUM,
2013).
Adiante, em 1984, a Apple lançou a linha Macintosh, que inovou muito por incluir o
conceito de interface em janelas e o uso do mouse. Um fato muito interessante nessa
história é que essa tecnologia havia sido inventada pela Xerox, em 1973, mas a
diretoria achou que ninguém se interessaria por aquilo. A Apple conseguiu comprar o
projeto quase de graça.
Figura 9 - Um PC Commodore 20-III e um PC Amiga 1000
Fonte: wikimedia.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 14/17
Quinta Geração (1991 até os dias atuais)
É um tanto difícil falar a respeito da quinta geração de computadores. Primeiro,
porque estamos vivendo ela, então muitos fatos históricos para a área estão
acontecendo e sendo escritos de forma dinâmica. Segundo, porque muita inovação já
aconteceu de 1991 para cá e alguns defendem até que já estamos na sexta geração, o
que vou falar mais a frente.
Uma marca da quinta geração são os circuitos integrados ULSI (Ultra Large Scale
Integration – integração em escala ultragrande), possibilitando a criação de chips com
mais de um milhão de circuitos.
Figura 10 - Um Apple Macintosh, com mouse e teclado
Fonte: wikimedia.
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.htmla Figura 3 apresenta um esquema de arquitetura
do processador Intel Core i7.
Figura 3 – Arquitetura do multiprocessador em um único chip do Core i7
Fonte: Tanenbaum, 2013.
Podemos observar que cada núcleo possui uma cache L1 e uma cache L2, mas eles
compartilham de uma mesma cache L3, através de uma comunicação que funciona
em uma topologia de anel.
Concluindo, existem diversas abordagens para aumentar o poder de processamento
dos processadores e muitas vezes eles trabalham de forma híbrida, implementando
mais de uma dessas abordagens. Na próxima aula, veremos como aproveitar o
poder do paralelismo em nossos programas de computador.
06/12/2023, 19:33 Arquiteturas Avançadas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/arquiteturas-avancadas.html 9/9
13:47
https://vimeo.com/user82076795
06/12/2023, 19:33 Processamento Paralelo
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processamento-paralelo.html 1/9
Processamento Paralelo
AUTORIA
Andre Abdala Noel
06/12/2023, 19:33 Processamento Paralelo
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processamento-paralelo.html 2/9
Por acaso, você já viu alguém comprar um computador “top de linha”, daqueles
mais caros, para usar apenas com coisas simples, como navegar na internet ou
editar planilhas? Dá uma dor no coração, não dá? É muito poder de processamento
sendo desprezado e subutilizado.
Mas talvez você esteja fazendo a mesma coisa, mas com um computador não
necessariamente “top de linha”. Os computadores de hoje estão muito bem
preparados para executar instruções em paralelo, mas vários programas não
aproveitam tão bem esse recurso, mesmo tendo ações que podem ser executadas
em paralelo.
Na aula passada, vimos como os computadores podem executar instruções em
paralelo, ou seja, mais de uma instrução por ciclo. Nesta aula, veremos como isso
impacta os programas e como isso pode ser utilizado de forma intencional na
programação.
Processos e Threads
Espero que tenha aproveitado bem as aulas anteriores, porque sempre estamos
retomando o conteúdo. Você se lembra de quando falamos sobre sistemas
operacionais e que uma das funções deles é gerenciar a execução de programas?
Bom, um programa em execução é um processo, que é gerenciado pelo sistema
operacional. Cada processo possui informações sobre o programa em execução
como um endereço de armazenamento, registradores associados ao processo, entre
outros.
Em sistemas operacionais com suporte à multiprogramação (ou multitarefa), os
processos compartilham a CPU e o S.O. é responsável por esse gerenciamento,
intercalando os programas de acordo com a necessidade.
Cada processo possui uma ou mais linhas de execução, que são chamadas de
threads. Esses threads compartilham os recursos que foram alocados para o
processo, como espaço de memória, por exemplo.
Em tempo de execução, ou seja, enquanto o programa está sendo executado (ou
"rodando"), o processo pode fazer chamadas de sistema para criar novos processos
do mesmo programa, ou ainda, novos threads. Mas qual é a diferença? Quando um
processo cria um novo processo, cada processo é uma execução do programa
diferente no sistema operacional, com seus espaços de memória separados e
funcionando de forma independente. Quando o processo cria novas threads, o
mesmo processo terá diferentes linhas de execução, que compartilham recursos
entre si dentro de um mesmo processo.
06/12/2023, 19:33 Processamento Paralelo
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processamento-paralelo.html 3/9
A princípio é um pouco diferente pensar em programação assim, porque
aprendemos a programar como uma sequência de instruções que são executadas
apenas quando a anterior terminou. Mas a possibilidade de criar novos threads nos
permite colocar partes diferentes do programa para serem executadas de forma
simultânea (é claro que uma parte não pode depender do término do
processamento da outra para acontecer, senão elas devem continuar em sequência).
Criando Novos Processos
Podemos instruir o nosso programa de computador a fazer uso de diversos threads
para aproveitar melhor o processamento paralelo do computador e,
consequentemente, funcionar mais rápido.
Vejamos um exemplo de programa, em linguagem C, que demonstra a utilização de
processos de maneira relativamente simples. Se você ainda não viu nada de
programação e não entende a linguagem C, não tem problema, vou tentar explicar
de forma bem simples.
06/12/2023, 19:33 Processamento Paralelo
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processamento-paralelo.html 4/9
1 #include
2 #include//biblioteca do fork
3 int main(){
4   int pid_self,pid;
5
6   pid=fork();
7
8   pid_self=getpid();
9
10   if (pid==0){
11     for (int i = 0; iainda
não tinha iniciado a contagem. Depois, o processo “pai” começa e eles seguem
intercalados, até que o processo “�lho” termine e só sobre o processo “pai”. Se o
programa for executado novamente, essa ordem deve mudar, porque é afetada pelo
momento do processador.
Filho: 23 Filho: 36 Pai: 25 Pai: 49
Programação Usando Threads
A criação de novos processos é feita através de chamadas de sistema, como a função
“fork”, que vimos acima. Para criar threads, precisamos fazer uma chamada à
biblioteca de threads, como a biblioteca pthread.h, por exemplo.
Como já vimos, podemos ter vários threads em um mesmo processo,
compartilhando espaço de memória, facilitando a troca de informações entre os
threads. Nesta parte, ao invés de tratar de um código-fonte em uma linguagem que
você, possivelmente, ainda não domina, vamos tratar um problema mais conceitual.
No estudo da programação, aprendemos a importância da estratégia de “dividir para
conquistar”, popularizada pelo imperador romano Júlio César (que não sabia
escrever uma linha de código). Você verá isso aplicado, principalmente, a sub-rotinas.
Porém, ao resolver problemas grandes, é comum quebrá-los em partes menores
para resolver problemas menores e depois combinar as soluções. Ainda mais se
temos à disposição múltiplos processadores que podem ser usados em paralelo.
Existem vários problemas que se enquadram nessa categoria, mas vou analisar um
problema tão simples que, na prática, não justi�caria o uso de threads.
Veja a equação matemática na Figura 1. Em nossa cabeça, nós já quebramos a
equação para resolver. Porém, ao invés de apenas quebrar e resolver, vamos utilizar
threads para isso.
06/12/2023, 19:33 Processamento Paralelo
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processamento-paralelo.html 8/9
Figura 1 – Exemplo de utilização de threads
Fonte: O autor.
Note que a execução dos threads é simultânea, mas o tempo de término
geralmente não é o mesmo. A divisão em threads deve permitir que os threads
ocorram em qualquer ordem, pois não há como garantir uma sequência, ou seja, o
processamento de dados dos threads deve ser independente.
Considerando nosso exemplo com 4 threads, caso cada 1 leve exatamente 1 unidade
de tempo, o processamento sequencial levaria 4 unidades de tempo no total. Se
utilizarmos 4 núcleos do processador, por exemplo, teremos o mesmo
processamento em 1 unidade de tempo.
06/12/2023, 19:33 Processamento Paralelo
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processamento-paralelo.html 9/9
12:27
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:33 Teleprocessamento e Redes
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/teleprocessamento-e-redes.html 1/9
Teleprocessamento e Redes
AUTORIA
Andre Abdala Noel
06/12/2023, 19:33 Teleprocessamento e Redes
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/teleprocessamento-e-redes.html 2/9
Estamos chegando ao �m de nossos estudos.
Começamos com um histórico desde tempos antigos, falando sobre as tentativas de
automatizar os cálculos, passamos pelas diversas partes de um computador, tanto
físicas quanto lógicas, e aprendemos um pouquinho de várias faces da computação.
Chegamos a um bom lugar para terminar os nossos estudos que, na verdade, só
amplia muito a noção de computação e nos lembra que nunca se acaba o conteúdo a
se estudar em nossa área.
Pense em tudo o que a gente estudou até aqui. A possibilidade de se conectar com
outras máquinas ou de se conectar com o mundo amplia as possibilidades em todos
os sentidos. Se o seu computador tem pouco espaço de armazenamento, você pode
usar armazenamento na nuvem. Se tem pouco poder de processamento, você pode
usar um servidor remoto para processar ou uma computação distribuída.
Em resumo, toda a computação (e a nossa vida por completo) foi muito impactada
nos últimos anos pelas possibilidades de conexão e de redes de computadores. Há
muito o que se poderia tratar aqui, mas vamos focar apenas em alguns pontos,
deixando para vocês estudarem mais a respeito de redes e telecomunicações no
futuro.
Topologias de Rede
Se você prestou atenção nas aulas anteriores, já sabe que o computador é uma das
melhores coisas já inventadas e que mudou a vida de todo mundo. Mas essa
capacidade e as possibilidades tornam-se praticamente in�nitas quando começamos
a juntar os computadores em rede, possibilitando a troca de informações e o
compartilhamento de recursos.
As redes de computadores surgiram da necessidade da troca de
informações, onde é possível ter acesso a um dado que está �sicamente
localizado distante de você, como no exemplo do caixa eletrônico, onde
você pode estar tendo acesso aos dados de sua conta corrente que estão
armazenados em um computador a centenas ou milhares de
quilômetros de distância. Na Internet, então, essa troca de informações
armazenadas remotamente é levada ao extremo: acessamos dados
armazenados nos locais mais remotos e, na maioria das vezes, o local
onde os dados estão �sicamente armazenados não tem a menor
importância (TORRES, 2001, p. 5).
Assim, podemos entender como redes de computadores dispositivos que trocam
informações conectados entre si. Ainda que demais dispositivos façam parte da rede
(modems, roteadores, dispositivos de IoT), chamamos de redes de computadores.
Também não importa se cabeada ou sem �o, o que importa é a conexão entre eles e a
possibilidade de trocas de dados.
06/12/2023, 19:33 Teleprocessamento e Redes
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/teleprocessamento-e-redes.html 3/9
Veremos, de forma sucinta, algumas formas diferentes de redes em relação a como os
dispositivos são conectados. Esses tipos de infraestrutura de conexão são conhecidos
como topologias de rede.
Rede Ponto a Ponto
A forma mais simples de se conectar duas máquinas é através de uma rede ponto a
ponto, popularmente também é chamada de rede crossover, por causa do tipo de
cabo utilizado.
Para conectar dois computadores diretamente (ponto a ponto), você precisa apenas
de um cabo de rede comum (par trançado, de 8 �os) e dois conectores RJ-45. Porém,
em uma das pontas, a combinação dos 8 �os no conector tem 2 pares de �os
“invertidos”, daí o nome “crossover”. Após ligar os computadores com esse cabo, eles
estarão aptos a trocar informações.
Topologia em Anel
Na topologia em anel, os computadores são ligados entre si, um ao outro, formando
uma sequência de conexões como um anel. Neste caso, todos os computadores estão
interligados, mas para um computador enviar a informação ao outro, ela deve passar
por todos os computadores que estiverem no caminho.
Figura 1 – Conexão RJ-45 em um cabo crossover
Fonte: wikimedia.
06/12/2023, 19:33 Teleprocessamento e Redes
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/teleprocessamento-e-redes.html 4/9
Figura 2 – Topologia de rede em anel
Fonte: wikimedia.
Topologia Estrela
Uma forma bem comum de topologia de rede é a topologia em estrela, onde há um
dispositivo central por onde a informação passa. Todos os dispositivos que querem se
conectar à rede se conectam a esse dispositivo, que deve ser o responsável por
distribuir os dados.
06/12/2023, 19:33 Teleprocessamento e Redes
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/teleprocessamento-e-redes.html 5/9
Figura 3 – Topologia de rede em estrela
Fonte: wikimedia.
É a forma mais utilizada em residências e empresas (as famosas intranets), em que
todas as conexões são centralizadas em um roteador, que é o responsável por
conectar todos e gerenciar os endereços da rede.
Topologia em Barramento
Nessa topologia há um barramento de redes por onde as informações passam e
quem quer se conectar à rede se conecta ao barramento. As informações são
trafegadaspelo barramento e a parte interessada “captura” a informação desejada.
06/12/2023, 19:33 Teleprocessamento e Redes
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/teleprocessamento-e-redes.html 6/9
Figura 4 – Topologia de rede em barramento
Fonte: wikimedia.
A Internet funciona como uma topologia de barramento. É como se toda a Internet
fosse um grande barramento (ou vários barramentos) onde os computadores (ou as
sub-redes) se conectam à Internet e estão prontos para trocar informações com
qualquer ponto do barramento.
A Internet
Não faz sentido falar de redes de computadores sem falar de Internet, mas também é
algo que há muito para se falar a respeito, existem muitos e muitos livros a respeito
dela. Hoje em dia, principalmente para quem nasceu nas últimas duas décadas, é
como se a Internet fosse uma força mística que está por aí e que une todas as
pessoas.
Mas ela surgiu pequena, na década de 1960, e tinha apenas quatro nós no �nal de
1969, e foi batizada como ARPAnet. Foi apresentada ao público em 1972, contendo 15
nós (KUROSE, 2013).
A ARPAnet foi crescendo, sendo utilizada para interconectar universidades e também
instalações militares, se juntou também com outras redes independentes, como a
ALOHAnet. Em 1974, um trabalho de interconexão de redes patrocinado pela DARPA
06/12/2023, 19:33 Teleprocessamento e Redes
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/teleprocessamento-e-redes.html 7/9
(Agência de Projetos de Pesquisa Avançada de Defesa) criou a ideia de montar uma
“rede de redes”, de onde saiu o termo internetting (KUROSE, 2013).
Avançando muito rápido em uma história cheia de detalhes interessantes, a Internet
foi crescendo muito, principalmente entre as universidades, mas teve uma explosão
de acesso com o surgimento da Web, no início da década de 1990. Nesse momento
em que a Internet se popularizou e chegou às empresas e às casas das pessoas.
É comum usar “web” e “Internet” como sinônimos, mas o termo “web” vem de World
Wide Web (WWW) que é, basicamente, um novo protocolo para troca de informações
que roda sobre a Internet. Foi nesse momento em que surgiram as páginas da web
(HTML) que são documentos de hipertexto (texto + mídia + links), de onde há uma
grande rede de dados interconectados.
Sobre esse protocolo de transferência de hipertexto (http) vimos a criação de
inúmeras possibilidades, muitas delas você já deve estar bem acostumado hoje, como
e-commerces, redes sociais, aplicativos móveis, e muito, muito mais...
A cada dia a nossa dependência da Internet aumenta mais e muitas novas
possibilidades surgem. Vale muito a pena você tirar um tempo depois para se
aprofundar nesse tema.
A Nuvem
Junto com a Internet, temos outro termo quase místico que faz parte das nossas
vidas, que é a “nuvem”, ou Cloud Computing (computação em nuvem). Quem nunca
subiu fotos para a nuvem, editou documentos em nuvem ou baixou informações da
nuvem?
Mas o que é a nuvem?
Quando estudamos as topologias de rede, vocês viram algumas imagens mostrando
os computadores conectados. É comum usar essa forma de representação. Porém,
quando dois computadores estão conectados por uma estrutura complexa demais
para desenhar ou mesmo quando não importa saber como é que dois computadores
estão conectados, apenas interessa saber que estão conectados, é comum ver uma
representação como da Figura 5.
06/12/2023, 19:33 Teleprocessamento e Redes
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/teleprocessamento-e-redes.html 8/9
Figura 5 – Dois computadores conectados por uma estrutura não conhecida
Fonte: O autor.
Basicamente, este desenho resume toda a ideia de nuvem que temos hoje. Quando
dizemos que algo “está na nuvem”, basicamente é como dizer: “está na Internet, mas
eu não me importo onde �sicamente ele está, o importante é que está acessível”.
“Mas então, você está dizendo que o termo ‘nuvem’ é apenas uma enganação e que
não serve para nada”?
Não. Apesar de ser um termo com muito marketing envolvido, a computação em
nuvem é muito importante e traz recursos muito úteis às empresas em geral.
Basicamente, serviços em nuvem nos fornecem uma forma de ampliar os recursos de
nossa empresa sem a necessidade de comprar equipamentos. Nós “alugamos” os
serviços de grandes servidores online que podem nos equipar com aquilo de que
precisamos, sem desperdício de recursos.
Dentre os serviços em nuvem, vale a pena destacar:
Software as a Service (SaaS)
Software como serviço - você pode utilizar um serviço online ao invés de instalar um
software em seu computador. Exemplos: Google Apps, Of�ce 365, Net�ix, Dropbox.
Infrastructure as a Service (IaaS)
Infraestrutura como serviço - você pode terceirizar sua infraestrutura para servidores
online. Exemplos: Amazon Web Services (AWS), Microsoft Azure, Cisco Metapod,
Google Compute Engine (GCE).
Platform as a Service (PaaS)
06/12/2023, 19:33 Teleprocessamento e Redes
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/teleprocessamento-e-redes.html 9/9
Plataforma como serviço - uma plataforma de desenvolvimento pronta para ser
usada online, como um meio-termo entre IaaS e SaaS. Exemplos: RedHat OpenShift,
SalesForce, Heruko, Azure.
Para resumir bem, a nuvem tem como capacidade e limite o mesmo que a Internet,
portanto, podemos vislumbrar algo com possibilidades in�nitas. A área só tem
crescido e novos serviços aparecendo dia após dia.
16:04
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:34 Material Complementar e Referências
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/material-complementar-e-referencias.html 1/6
Chegamos ao �m de nossos estudos nesta disciplina, mas saiba que não é o �m,
porque em nossa área tudo o que estudamos se torna um novo começo para novos
estudos e um novo aprendizado.
Como eu havia prometido no início, passamos por diversos assuntos interessantes e
que merecem aprofundamento maior para uma melhor compreensão. Mas eu
também me lembro de ter dito a você para ir “um passo de cada vez”. Quando
pegamos muitas coisas para estudar de uma vez, nos sobrecarregamos e a tendência
é desistir. A minha dica é: nunca pare de estudar e estude sempre na medida em que
a curiosidade ou a necessidade chamar.
Tivemos 16 aulas, cada uma delas com muito conteúdo extra que pode ser estudado.
Abaixo, há uma lista de referências onde há vários livros que serviriam como livros de
cabeceira (ou então, como livros que estão sempre à mão, abaixo do seu monitor).
Não todos, mas vários deles trago comigo desde a graduação, cada vez aprendendo
mais com eles e com suas atualizações de versões.
Portanto, você já viu nas aulas, tudo o que o computador faz e as imensas
oportunidades que ele nos abre. Mas algo legal em nossa área é que temos uma fonte
muito presente de conhecimento disponível que é o próprio conhecimento das
pessoas que criaram a nossa história. Um amigo me chamou a atenção para isso e
nunca mais esqueci, ele disse: “Você já percebeu como boa parte das grandes
personalidades da história da computação estão vivas e você pode trocar ideias com
eles pelo Twitter, assistir a palestras deles pelo Youtube, participar de eventos com
eles? O pessoal da matemática não tem a mesma sorte”.
Realmente, você pode aprender muito sobre a web com Tim Berners-Lee, você pode
assistir a várias entrevistas e palestras do Bill Gates, você pode escrever código para o
kernel do Linux junto com o Linus Torvalds. Sem contar a imensidão de notáveis
escrevendo a história da computação todos os dias, os grupos de usuários e as
comunidades locais.
Conclusão
06/12/2023, 19:34 Material Complementar e Referências
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/material-complementar-e-referencias.html 2/6
Apenas mais um conselho meu: em T.I., tudo o que a gente vêé muito bonito e faz
muito sentido, mas a gente só aprende bem colocando a mão na massa. Não deixe de
questionar, experimentar, testar e aplicar. Assim, o conhecimento �ca permanente
em você.
Espero que este livro tenha acendido uma pequena chama de curiosidade, pelo
menos em algum dos assuntos tratados e que você busque sempre o conhecimento.
Engraçado, acabei de perceber que comecei o livro citando o Yoda e terminei citando
o ET Bilu.
Uma ótima caminhada para você, e sucesso!
Livro
06/12/2023, 19:34 Material Complementar e Referências
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/material-complementar-e-referencias.html 3/6
Filme
Filme
06/12/2023, 19:34 Material Complementar e Referências
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/material-complementar-e-referencias.html 4/6
Filme
Web
Web
https://go.eadstock.com.br/bjp
https://go.eadstock.com.br/bjp
https://go.eadstock.com.br/bjq
https://go.eadstock.com.br/bjq
06/12/2023, 19:34 Material Complementar e Referências
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/material-complementar-e-referencias.html 5/6
Web
Web
https://go.eadstock.com.br/bjr
https://go.eadstock.com.br/bjr
https://go.eadstock.com.br/bjs
https://go.eadstock.com.br/bjs
06/12/2023, 19:34 Material Complementar e Referências
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/material-complementar-e-referencias.html 6/615/17
Temos também, a partir de 1991, a criação da web (WWW – World Wide Web), que
nem precisamos dizer como ela é uma parte importante na nossa vida atual. Não
confunda aqui a web com a internet, que foi criada na década de 1960. A web consiste
na interligação de documentos, páginas que possibilitaram unir as informações
espalhadas pelo mundo, assim como sistemas web que utilizamos todos os dias.
Outra marca importante desta geração está na mobilidade, começando com laptops
e palmtops, passando por netbooks, chegando a tablets, smartphones e a
computação vestível.
Houve imensa evolução no hardware e no software nesta geração, onde poderíamos
falar a respeito em um livro exclusivamente para isso, mas vale destacar o avanço nas
telecomunicações, em conexões de alta velocidade, conexões sem �o e disponíveis
em todos os lugares, assim como a Internet das Coisas, trazendo comunicação aos
mais diferentes equipamentos.
Um grande marco no meio desta geração e que até poderia ser uma linha divisória
para uma sexta geração (o futuro de�nirá isso), foi o lançamento do iPhone, pela
Apple, em 2007. A partir daí, entramos na era dos dispositivos móveis, aplicativos
móveis (ou simplesmente “apps”) e diversas mudanças em nossas vidas, como a
forma que nos comunicamos por mensagem ao invés de voz, a forma de pedir
comida, de nos locomovermos, entre muitas outras.
Além disso, está chegando ao horizonte a computação quântica. Vinte anos atrás,
quando entrei na faculdade, falava-se que a computação quântica seria a sexta
geração dos computadores. Ainda não chegou, de fato, apesar de que já existem
alguns computadores quânticos em funcionamento e em fase de testes.
O que isso implica para nós? Aquilo que falamos sobre os computadores seguirem
uma mesma arquitetura, o modelo de von Neumann, vale até agora, enquanto os
computadores são baseados em um sistema binário, em bits que podem representar
verdadeiro ou falso. O modelo do computador quântico é baseado na física quântica
e, para exempli�car a diferença, um qubit (que é um bit quântico), pode ser
verdadeiro, falso ou ambos ao mesmo tempo.
E por que eles ainda não estão em funcionamento? Os computadores quânticos são
muito instáveis, e é muito difícil manter as propriedades necessárias. O resfriamento
de um computador desses precisa chegar próximo a 0 grau Kelvin (ou -273°C).
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 16/17
Portanto, não sabemos bem o que o futuro nos traz, mas essa talvez seja a maior
ameaça de ruptura no que conhecemos sobre a arquitetura de computadores. Hoje,
já existem vários cursos online disponíveis sobre computação quântica fornecidos
pelas grandes fabricantes para preparar futuros pro�ssionais da área. Vale a pena dar
uma olhada!
NA PRÁTICA
No dia 23 de outubro de 2019, a Google a�rmou ter atingido a
“supremacia quântica”, dominando o processo da computação quântica
em um experimento que realizou. “O computador quântico do Google,
batizado Sycamore, conseguiu escrever os prováveis resultados de um
código criado por um gerador de números aleatórios em apenas 200
segundos (3 minutos e 20 segundos) – o que levaria 10 mil anos em um
computador comum. A proeza não tem aplicação prática, mas é
grandiosa porque nenhuma máquina quântica havia superado uma
clássica até então.”
Logo depois, a IBM, que é concorrente direta na área, se manifestou para
dizer que o feito da Google não era tão importante no desenvolvimento
da computação quântica. “A IBM, outra empresa famosa por desenvolver
tecnologia na área quântica, a�rmou em um estudo publicado na última
segunda-feira (21) que o problema proposto pelo Google não demoraria
10 mil anos para ser resolvido em uma máquina comum, mas apenas
dois dias e meio se uma técnica diferente fosse utilizada.”
https://go.eadstock.com.br/bji
https://go.eadstock.com.br/bji
06/12/2023, 19:27 História da Computação
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/historia-da-computacao.html 17/17
18:20
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:28 Funcionamento do Computador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/funcionamento-do-computador.html 1/7
Funcionamento do
Computador
AUTORIA
Andre Abdala Noel
06/12/2023, 19:28 Funcionamento do Computador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/funcionamento-do-computador.html 2/7
Você já parou para pensar em como o computador funciona? Pois você já se
acostumou com ele: você o liga, entra com o seu usuário e pronto! Tudo o que você
quer está lá!
Na aula passada, falamos sobre como os computadores evoluíram a partir de
máquinas de calcular. Mas qual é a relação? Bom, eu sei que no meu computador eu
posso abrir uma calculadora e fazer contas, mas e o resto? Parece tudo muito
diferente, não?
Basicamente, as máquinas de calcular recebem um ou dois operandos, aplicam sobre
eles alguma operação (ou instrução) e retornam uma determinada resposta. E isso
também é exatamente o que os computadores modernos realizam hoje em dia,
porém com milhões dessas operações por segundo.
Segundo Mokarzel(2008), “computadores são equipamentos eletrônicos digitais
destinados ao processamento de informações dos mais variados tipos, em altíssima
velocidade” (grifos meu). Portanto, o funcionamento do computador e até mesmo
dos programas de computador podem ser escritos como: entrada, processamento e
saída, como aparece na �gura a seguir:
Figura 1 – Funcionamento básico de um computador
Fonte: O autor.
Aqui, você pode se lembrar um pouco de funções matemáticas (a�nal, todo mundo
gosta de matemática) para entender melhor. Uma função matemática pode ser
escrita como f(x) = y, o que signi�ca que a função f recebe um valor x, que é o valor de
entrada, e produz um valor y, que é o valor de saída. Como a função faz uma entrada x
produzir uma saída y? Ela segue algumas operações para isso, o mesmo que os
computadores (e cada programa do computador) faz o tempo todo.
Ou seja, o tempo todo o computador está realizando instruções em dados que
chegam como entrada e produzindo uma saída. Isso tudo a partir de um conjunto de
instruções, que entenderemos melhor quando estudarmos os processadores. Isso
06/12/2023, 19:28 Funcionamento do Computador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/funcionamento-do-computador.html 3/7
signi�ca que tudo o que fazemos é uma grande sucessão ou composição de funções
(esticando bem a metáfora).
Componentes do Computador
O computador é dividido em partes diferentes, como já vimos na primeira aula, no
modelo de arquitetura de von Neumann (Figura 7). Nós podemos fazer uma
separação entre os componentes de entrada e saída da CPU (Central Processing Unit
– Unidade Central de Processamento) e da memória.
Mais adiante, iremos dedicar aulas exclusivas para cada uma dessas partes, mas
vejamos como essas partes interagem e qual é a sua importância em um
computador.
Segundo Monteiro (2007), o modelo de arquitetura de von Neumann é baseado em
três conceitos principais:
Assim, temos a Unidade Central de Processamento (CPU), conectada à memória e aos
módulos de entrada e saída. As conexões são realizadas através de barramentos, que
são linhas de comunicação, geralmente paralelas, que permitem a transferência de
informações.
Dados e instruções são armazenados em uma única memória de
leitura e escrita.
O conteúdo dessa memória é endereçável por local, sem considerar o
tipo de dados neles contido.
A execução ocorre em um padrão sequencial (a menos que
modi�cado explicitamente) de uma instrução para a seguinte.
06/12/2023, 19:28 Funcionamento do Computador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/funcionamento-do-computador.html 4/7
A CPUpode ser dividida, basicamente, em Unidade de Controle (UC), Unidade Lógica
e Aritmética (ULA) e os registradores, que são unidades de memória bem pequenas,
porém muito velozes, que servem para armazenar dados de forma temporária.
O funcionamento básico de um processador está em receber e executar instruções.
De forma bastante prática, todo programa em execução é copiado para a memória
para ser executado, então suas instruções são passadas ao processador, cuja unidade
de controle de�ne qual instrução será executada e quais são os dados, passa para a
unidade lógica e aritmética executar, depois recebe o resultado e encaminha de volta
para a memória. Esse processo é feito durante todo o tempo de funcionamento do
computador.
Sistemas de Computação
Apenas começamos nossos estudos, mas já deu para perceber que o computador é
algo complexo, não? Um computador não é apenas uma máquina que permite que
eu jogue meus jogos e não é apenas um gerenciador de planilhas. O conjunto todo
que possibilita a computação funcionar pode ser chamado de sistema de
computação.
Aqui, é importante de�nir as diferenças entre hardware e software. Em nossa
primeira aula sobre a evolução dos computadores, o foco acabou �cando mais na
parte de hardware, na parte física, mas é preciso ressaltar que um não existe sem o
outro, assim como um não evolui sem o outro. A evolução do hardware demanda que
o software o acompanhe, assim como a evolução do software precisa que o hardware
também evolua.
Hardware e Software
Computadores (e demais dispositivos eletrônicos) sempre envolvem a noção de
hardware e software, mas qual é a diferença entre eles? De forma extremamente
simples, podemos propor um experimento prático: desligue toda alimentação de
energia de seu equipamento. Pronto, o que "sobrou" é o hardware.
Então, hardware diz respeito aos equipamentos, à parte física, as peças, aquilo que
podemos tocar. Enquanto o software são os programas do computador, a parte
lógica, aquilo que dita quais são as instruções que o hardware deve executar, mas
que só está “presente” (ou em execução) com a máquina em funcionamento. Ainda
que o seu dispositivo não seja complexo, não tenha um sistema operacional, que seja
aquilo que chamamos de “dispositivo embarcado”, ele possui um software, que é a
parte de programação que indica a lógica de funcionamento.
Utilizando uma piadinha velha e muitoinfeliz, mas que ajuda a você não esquecer
nunca mais o que é o hardwaree o que é o software: “O software é o que você xinga e
o hardwareé o que você chuta!”
06/12/2023, 19:28 Funcionamento do Computador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/funcionamento-do-computador.html 5/7
É interessante ver, na história da computação, como no princípio o que tinha valor era
apenas o hardware, sendo que a parte de programação era apenas um "mal
necessário". O software não tinha valor e não era reconhecido, sendo mais
reconhecido o trabalho dos engenheiros que criavam o hardware.
NA PRÁTICA
O ENIAC �cou famoso por ser o primeiro computador eletrônico da
história. Nos anos 1980, uma estudante de Harvard se sentia isolada por
haver poucas mulheres na ciência da computação e decidiu fazer uma
pesquisa. Encontrou uma foto do ENIAC onde apareciam dois homens e
algumas mulheres, mas apenas os homens eram identi�cados na foto.
Perguntando para várias pessoas, disseram que deviam ser apenas
mulheres atuando como modelos para deixar a foto mais bonita, como
fazem quando vão vender produtos. Ela seguiu com a pesquisa até
descobrir que aqueles dois homens foram os engenheiros que
construíram o computador, mas que toda a programação foi realizada
por uma equipe de seis mulheres, que acabaram �cando esquecidas na
história.
Todas as seis programadoras tiveram ótimos currículos e houve um
trabalho interessante de resgatar a história dessas mulheres na
programação, que rendeu um documentário chamado “The Computers”,
em referência às mulheres que eram conhecidas como “As
Computadoras”.
Fonte: BITTENCOURT, 2016.
06/12/2023, 19:28 Funcionamento do Computador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/funcionamento-do-computador.html 6/7
Assim, no início os computadores eram vendidos pelo hardware e o software apenas
o acompanhava. Nas décadas de 1970 e 80, já havia empresas com foco em
desenvolvimento de software, mas passaram a ganhar muito mais importância a
partir do trabalho de um jovem chamado Bill Gates, que viu o potencial de venda dos
programas e das licenças de software. A partir daí, o software começou a ser visto
como algo de valor e todo o processo de programação passou a ser mais convidativo,
além do fato de surgirem linguagens de mais alto nível, mas fáceis de programar. A
importância do software cresceu muito, como pudemos ver recentemente na venda
do WhatsApp por 16 bilhões para o Facebook (G1, 2014).
Figura 2 - O jovem Bill Gates, em 1977
Fonte: wikimedia.
06/12/2023, 19:28 Funcionamento do Computador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/funcionamento-do-computador.html 7/7
12:33
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:28 Sistemas de Numeração e Representação de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-de-numeracao-e-representacao-de-dados.html 1/7
Sistemas de Numeração e
Representação de Dados
AUTORIA
Andre Abdala Noel
06/12/2023, 19:28 Sistemas de Numeração e Representação de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-de-numeracao-e-representacao-de-dados.html 2/7
Pense em uma situação que ocorre todos os dias: você vai pegar um ônibus e vê
escrito "512". Ou procura a casa de um amigo na rua e percebe que na placa dele
está escrito "153". Ou pode ser que você esteja em seu trabalho, em uma sexta-feira, e
encontra algo mágico escrito: “17:59”.
Provavelmente você leu esses números já pensando no signi�cado deles, como
"quinhentos e doze”, porque isso já é algo natural para você. Mas você se lembra de
como era no começo, nos seus primeiros anos de escola, onde aprendeu que se
juntar o “cinco”, o “um” e o “dois”, forma o número “quinhentos e doze”? Sim, é
importante que você não tenha matado aquela aula, porque isso vai ser importante
para nós agora.
Representação Numérica
Podemos continuar usando nosso amigo 512 como nosso exemplo? Como foi que
você aprendeu a ler esse número? Provavelmente aprendeu que há unidades,
dezenas e centenas, que cada algarismo tem um “peso” e deve ter visto algo como
aparece na Figura 1.
Figura 1 - Como funciona a representação numérica do número 512
Fonte: O autor.
Então, você aprendeu a ler que o número 2 vale duas unidades, o número 1 vale 1
dezena, portanto 10 unidades, e o número 5 vale 5 centenas, ou seja, 5 vezes 100, ou
apenas 500. Sim, você aprendeu todo esse passo a passo, mas �cou bem mais rápido
nisso, seu cérebro nem percebe mais os passos.
06/12/2023, 19:28 Sistemas de Numeração e Representação de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-de-numeracao-e-representacao-de-dados.html 3/7
Para representar números em um computador fazemos exatamente a mesma coisa,
porém com uma diferença importante: Não usamos "dezenas” e “centenas”. Você
aprendeu sobre elas porque usamos uma base numérica decimal, ou seja, usamos
10 algarismos (de 0 até 9) para representar todos os números. Já os computadores
utilizam o sistema binário, que possui apenas dois algarismos, 0 e 1.
Por isso, você não faz apenas uma multiplicação por dezenas ou centenas, você
multiplica pela sua base numérica, como veremos a seguir.
Notação Posicional
De modo geral, o que usamos para representar os números segue as mesmas
regras, independentemente do sistema numérico utilizado, porque usamos algo
chamado de notação posicional.
NAPRÁTICA
Há um registro que indica a utilização da notação posicional mais
antiga conhecida em 594 d.C., porém, ela pode ter sido usada pelos
indianos já no século I. No princípio, a notação posicional utilizava-se de
apenas 9 dígitos: os números de 1 até 9. A falta do zero deixava a
notação ambígua, pois um número como o 25, poderia signi�car 25,
205, 250 ou 2005, por exemplo.
A inclusão do número zero demorou a ser feita, pois havia uma questão
�losó�ca a se resolver: como é que pode existir um número para
simbolizar o zero se um número signi�ca, justamente, a quantidade de
elementos?
Antes disso, em cerca de 400 a.C., os babilônios criaram um símbolo
que denotava uma posição ausente. Essa ideia �cou perdida, até ser
redescoberta pelos hindus, que chegaram a usar um ponto forte (•) para
a posição, ou usar um conceito de zero. Mas o primeiro uso do zero que
se tem certeza foi em 876 d.C., numa tabuleta de pedra em Gwalior.
Fonte: Stewart, 2014.
06/12/2023, 19:28 Sistemas de Numeração e Representação de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-de-numeracao-e-representacao-de-dados.html 4/7
Funciona da forma que você aprendeu na escola, porém, não precisamos dos nomes
"unidade", “dezena” e “centena”. Nós identi�camos a posição do algarismo no
número e fazemos um cálculo da seguinte forma:
Sendo assim, para identi�carmos o valor de um número, pegamos algarismo por
algarismo, multiplicamos pela base elevada à posição do mesmo que, da direita para
a esquerda, inicia em zero. Ficou um tanto confuso? Veja a imagem a seguir, que
resume o processo de leitura de um número.
Figura 2 - Como funciona a notação posicional
Fonte: O autor.
Seguindo a ideia que apresentamos acima, você pode escrever qualquer número
em qualquer base numérica. Para efeitos práticos, vamos ignorar números reais e
suas casas decimais, vamos demonstrar apenas números inteiros.
Você deve ter percebido que, apesar de escrever em termos de posição e base, não é
nada novo, você já sabe fazer o processo. Mas o que tem a ver isso com os
computadores?
Internamente, os computadores trabalham apenas com números binários, portanto,
todo número e toda informação precisam ser representados em binário. A
representação de um número binário segue a mesma ideia, porém, usando a base 2.
ALGARISMO×BASE
POSIÇÃO
06/12/2023, 19:28 Sistemas de Numeração e Representação de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-de-numeracao-e-representacao-de-dados.html 5/7
Representação de Informações
Computadores são máquinas digitais, ou seja, trabalham com a informação em
apenas dois estados, que podem ser descritos como: falso ou verdadeiro, zero ou um,
tensão baixa ou tensão alta, etc. E qual é a vantagem de utilizar essa notação?
Na primeira geração de computadores, as máquinas ainda utilizavam o sistema
decimal, tendo que variar as representações em faixas numéricas de 0 a 9, o que
facilita a ocorrência de interferências ou passagem errada de dados. O padrão digital
de�ne apenas dois estados para trabalhar os dados de forma mais precisa. Você não
precisa ter uma variação grande de tensão, porque a própria energia não chega de
forma precisa.
Com isso, um dispositivo pode convencionar um valor como 3V, por exemplo, para
considerar que tudo que chegar acima de 3V signi�ca 1 e o que chegar abaixo de 1V
signi�ca 0, mantendo ainda uma faixa entre 1V e 3V que é desconsiderada.
Utilizando apenas dois valores possíveis para representar a informação, chegamos à
de�nição do bit, que é a menor unidade de informação em um computador. Um bit
só pode assumir o valor 0 ou o valor 1. A partir do bit, temos o byte, que é uma
unidade que indica o agrupamento de 8 bits em sequência. Portanto, a informação
armazenada no computador nada mais é do que agrupamentos de bits que, juntos,
possuem um signi�cado.
E é por isso que os números binários são tão importantes para a computação, pois
juntando sequências de bits estamos fazendo nada mais do que números binários,
que acabam por representar todo o tipo de informações.
Segue abaixo uma tabela indicando as unidades de medida para o tamanho das
informações a partir do agrupamento de bytes.
06/12/2023, 19:28 Sistemas de Numeração e Representação de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-de-numeracao-e-representacao-de-dados.html 6/7
No �m, toda informação em um computador é um conjunto de números. Esses
números, combinados, têm o seu signi�cado de acordo com o tipo de dados e com
o que é utilizado para sua "tradução". As letras que você está vendo, por exemplo,
segue uma tabela numérica em que cada caractere tem um número diferente e
esse número é que é armazenado. O código de cada caractere foi padronizado na
tabela ASCII (American Standard Code for Information Interchange), cujo formato
original usava 7 bits por caractere, possibilitando 128 caracteres diferentes. Depois foi
expandido para o padrão Unicode que a maioria dos sistemas atuais utiliza e
possibilita a representação, em 2 bytes, para até 65.536 caracteres (TANENBAUM,
2013).
Tabela 1 – Unidades de armazenamento e equivalências
Valor Valor em bytes Unidade
1KB 1.024 bytes kilobyte
1MB 1.024 KB = 1.048.576 bytes megabyte
1GB 1.024 MB = 1.073.741.824 bytes gigabyte
1TB 1.024 GB = 1,099511628×10 bytes terabyte
1PB 1.024 TB = 1,125899907×10 bytes petabyte
1EB 1.024 PB = 1,152921505×10 bytes exabyte
1ZB 1.024 EB = 1,180591621×10 bytes zettabyte
1YB 1.024 ZB = 1,20892582×10 bytes yottabyte
Fonte: Noel (2019, p. 56).
12
15
18
21
24
06/12/2023, 19:28 Sistemas de Numeração e Representação de Dados
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/sistemas-de-numeracao-e-representacao-de-dados.html 7/7
Figura 3 - Modelo de tabela ASCII
ASCII Code Chart
0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
2
3
4
5
6
7
NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
! " # $ % & ' ( ) * + , - . /
0 1 2 3 4 5 6 7 8 9 : ; ?
@ A B C D E F G H I J K L M N O
P Q R S T U V W X Y Z [ \ ] ^ _
` a b c d e f g h i j k l m n o
p q r s t u v w x y z { | } ~ DEL
Fonte: wikimedia.
14:07
https://vimeo.com/user82076795
06/12/2023, 19:28 Conversões entre Bases Numéricas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/conversoes-entre-bases-numericas.html 1/9
Conversões entre Bases
Numéricas
AUTORIA
Andre Abdala Noel
06/12/2023, 19:28 Conversões entre Bases Numéricas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/conversoes-entre-bases-numericas.html 2/9
Olá a todos!
Vamos começar nossa aula com uma charge:
Fonte: NOEL, 2019.
Já vimos que os computadores utilizam uma base binária para armazenar as
informações. O que isso signi�ca? Quando a gente aprende a programar precisa
aprender a converter números decimais para binário para armazenar dados? Não,
isso é feito pelo próprio computador, que realiza conversões entre bases o tempo
todo. Porém, ainda que ele faça isso por você, entender como os números são
armazenados nos ajuda a entender as limitações de representação e a programar
melhor.
Números Binários
“Certo, já entendi que números binários são importantes, mas como eles são? Com o
que se parecem? De que se alimentam?”
Resumindo a história, números binários são os mesmos números que costumamos
escrever na base decimal, só que escritos com apenas duas possibilidades de
algarismos: 0 e 1. Você vai perceber que quanto menos algarismos eu tenho
disponíveis em uma base numérica, maior �ca a representação do número. Veja a
Figura 1, que mostra o processo de leitura de um número binário.
06/12/2023, 19:28 Conversões entre Bases Numéricas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/conversoes-entre-bases-numericas.html3/9
Figura 1 - Notação posicional para número binário
Fonte: O autor.
Como você pode ver na imagem, o número acima está escrito como 1001, que a sua
cabeça já deve ter lido como "mil e um". Mas não: esse número acima representa,
simplesmente, o número 9.
Repare que cada algarismo tem a sua posição, como vimos antes com números
decimais, mas não vamos mais multiplicá-los por 1, 10, 100 e 1000. Vamos multiplicá-
los por potências de 2: 1, 2, 4 e 8. A soma total deu nove, que é o número equivalente
em decimal.
Pergunta importante que você está me fazendo neste exato momento: “Mas como é
que eu vou saber se um número 1001 signi�ca mil e um ou nove?” Bom, por
de�nição, apenas os números na base decimal não precisam carregar com eles a
indicação da base, por serem os números que utilizamos no dia a dia. Números em
demais bases precisam da base indicada ao lado, subscrita. Nosso exemplo, então,
�caria como 1001₂.
06/12/2023, 19:28 Conversões entre Bases Numéricas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/conversoes-entre-bases-numericas.html 4/9
Por isso é importante reforçar que os números são os mesmos, a representação
apenas é que muda, dependendo da base numérica utilizada.
SAIBA MAIS
Quando programamos, não utilizamos texto subscrito, há outra forma
de representar as bases numéricas. A base decimal não precisa de
indicação.
Números binários iniciam com “0b”, como 0b1001. Números em octal
iniciam com um zero à esquerda, como 0743. Hexadecimais iniciam
com “0x”, como 0x4B.
Conversão Entre as Bases
Decimal e Binária
A partir do tópico anterior, já foi possível entender o que é um número na base
binária e também, de presente, você já aprendeu a converter um número binário
para decimal, que é apenas aquele processo de multiplicar o algarismo pela base
elevada pela posição.
Agora vamos fazer o processo inverso, vamos aprender a converter números
decimais para a base binária. Para isso, vamos utilizar um processo de sucessivas
divisões por 2, por ser a base que desejamos.
A Imagem a seguir ilustra o processo todo. Primeiro, pegamos um número que está
na base decimal e o dividimos por 2. É importante que você faça uma divisão inteira,
ou seja, você não vai chegar a usar vírgulas no seu resultado. Quando não for mais
possível continuar, você guarda o resultado e também o resto da divisão, o resto é
muito importante.
06/12/2023, 19:28 Conversões entre Bases Numéricas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/conversoes-entre-bases-numericas.html 5/9
Figura 2 - Conversão de um número decimal para binário
Fonte: O autor.
O resultado da divisão você divide por 2 novamente, seguindo o mesmo processo,
até que você chegue em 0 como resultado. Nesse momento você vai ter diversas
divisões sucessivas e cada uma delas vai ter um resto, que será 0 ou 1,
obrigatoriamente. Basta juntar todos os restos das divisões, da última divisão para a
primeira, e você tem o seu número binário.
Se você quiser veri�car o resultado, você pode escrever as posições do número
binário, que serão potências de 2, e realizar a conversão inversa, que vimos antes.
Na prática, você pode converter de decimal para qualquer base e de qualquer base
para decimal utilizando esses dois métodos vistos, porém é um processo um tanto
trabalhoso. Existem duas outras bases muito utilizadas em computação, as bases
octal (base 8) e hexadecimal (base 16), em que vale mais a pena converter primeiro
para binário antes de converter para decimal, e vice-versa. Nós veremos a seguir.
Conversão Entre as Bases Binária
e Octal
Como foi dito, a conversão de octal ou hexadecimal para binário é uma conversão
mais simples. Isso ocorre, basicamente, porque 8 e 16 são potências de 2 (que é a
base do binário). Você ainda pode extrapolar esses exemplos para outras bases que
06/12/2023, 19:28 Conversões entre Bases Numéricas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/conversoes-entre-bases-numericas.html 6/9
sejam potências de 2. A base octal é a base 8, ou seja, possui apenas 8 algarismos
disponíveis para escrever os números, que são 0, 1, 2, 3, 4, 5, 6 e 7.
Em binário, você consegue escrever os números de 0 a 7 utilizando apenas 3
algarismos, onde o 000₂ equivale ao 0₈ e o 111₂ equivale ao 7₈. Isso torna a conversão
interessante, porque você pode pegar qualquer número binário, separar os dígitos
de 3 em 3 e converter cada grupinho de 3 dígitos, ao invés de converter o número
completo. Veja como isso é feito na imagem a seguir:
Figura 3 - Conversão de um número binário para octal
Fonte: O autor.
Suponha, então, que você tem o mesmo número binário do nosso último exemplo, o
número 1100010101₂. Para realizar a conversão, iniciamos separando os algarismos de
3 em 3. Importante: comece a separação de trás para frente. Se o primeiro grupo
�car com menos de 3 dígitos, não tem problema, você pode considerar que ele tem
zeros à esquerda.
1100010101    -->    1  100   010   101
Com os grupos montados, você converte cada grupo, individualmente, de binário
para decimal. Sim, é o mesmo processo de conversão para decimal, porque o maior
número possível com três dígitos binários será 7.
Sendo assim, temos:
1º grupo: 1, convertendo: 1
2º grupo: 100, convertendo: 4
3º grupo: 010, convertendo: 2
4º grupo: 101, convertendo: 5
Juntando os números, temos que o equivalente em octal para o número
apresentado é 1425₈.
06/12/2023, 19:28 Conversões entre Bases Numéricas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/conversoes-entre-bases-numericas.html 7/9
A conversão inversa ocorre de forma similar. A partir de um número octal, separam-
se os algarismos, converte cada algarismo para binários de três dígitos (complete
com zero à esquerda, se tiver menos de três dígitos), depois é só juntar os números,
como acontece na imagem a seguir.
Figura 4 - Conversão de um número octal para binário
Fonte: O autor.
Vejamos o número 243₈, como exemplo. Algarismo por algarismo, convertemos para
binários de 3 dígitos:
2 -> 10, colocando zero à esquerda: 010
4 -> 100
3 -> 11, colocando zero à esquerda: 011
O número binário �nal é a junção dos números obtidos: 010100011. Agora podemos
desprezar o zero à esquerda, �cando apenas: 10100011.
Conversão Entre as Bases Binária
e Hexadecimal
A conversão para hexadecimal ocorre exatamente do mesmo jeito que a conversão
para octal, mudando apenas os grupos de 3 para 4 algarismos, o que simpli�ca
bastante a nossa explicação.
06/12/2023, 19:28 Conversões entre Bases Numéricas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/conversoes-entre-bases-numericas.html 8/9
No entanto, é preciso notar que a base hexadecimal utiliza 16 algarismos diferentes
para representar os números e nós possuímos símbolos para apenas 10 deles. Por
isso, essa base usa algumas letras emprestadas de A a F do alfabeto. Assim, os
algarismos disponíveis em hexadecimal são: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Perceba que as letras valem, literalmente, o número da posição na sequência. Ou
seja, A vale 10, B vale 11, e assim por diante. Como o processo de conversão é o
mesmo que já vimos para octal, porém com grupos de 4 dígitos, a Imagem a seguir
traz os dois processos.
Figura 5 - Conversão de um número binário para hexadecimal e de hexadecimal
para binário
Fonte: O autor.
NA PRÁTICA
Na prática, os sistemas octal e hexadecimal têm muita utilidade na
computação. Em geral, como a conversão entre binário e essas bases é
praticamente direta, elas servem para "abreviar" números binários e até
mesmo deixar mais legível.
O sistema octal é usado em sistemas Linux para abreviar as permissões
de arquivos em programas como o chmod. O sistema hexadecimal é
utilizado no endereçamento IPv6, em endereços MAC de placas de
rede, em representações de cores RGB e até mesmo para exibir o
conteúdode arquivos binários, nos editores de hexadecimal, muitas
vezes utilizados em engenharia reversa de programas de computador.
06/12/2023, 19:28 Conversões entre Bases Numéricas
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/conversoes-entre-bases-numericas.html 9/9
Repare que a principal diferença acontece quando o número obtido é maior do que
9. Neste caso, precisamos apenas substituir o número pela letra (ou o contrário).
15:31
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:29 Introdução à Lógica Digital
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/introducao-a-logica-digital.html 1/10
Introdução à Lógica Digital
AUTORIA
Andre Abdala Noel
06/12/2023, 19:29 Introdução à Lógica Digital
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/introducao-a-logica-digital.html 2/10
Quando conversamos a respeito da história da computação, na primeira aula, foi
mencionada a importância do trabalho de George Boole, que descreveu o que viria a
ser conhecido como “Lógica Booleana" em sua homenagem. Boole escreveu "As leis
do pensamento” em 1854, um bom tempo antes dos computadores eletrônicos.
Segundo Null (2011), somente 85 anos depois seu estudo foi aplicado à computação.
Em seu estudo, Boole descreveu as relações lógicas entre as sentenças que podem
aceitar apenas os valores “verdadeiro” ou “falso”. Com isso, temos as operações
lógicas e as manipulações algébricas, da chamada "Álgebra de Boole”, que veremos
nesta aula.
Já vimos, também, que quando falamos em equipamentos digitais, estamos falando
sobre equipamentos que usam essa lógica binária em seu funcionamento, toda a
computação desses equipamentos é feita em termos de 0 ou 1, verdadeiro ou falso.
Portanto, não nos preocuparemos aqui com componentes eletrônicos e detalhes de
implementação, mas apenas da parte lógica.
Sentenças Lógicas
A lógica digital (ou lógica booleana) é baseada em sentenças (ou a�rmações) que
podem ser verdadeiras ou falsas. Essas sentenças podem ser a respeito de diferentes
contextos, como a sentença “hoje é sábado", que só pode ter duas conclusões
possíveis: a sentença é verdadeira ou a sentença é falsa.
Também podemos combinar as sentenças, como "eu vou ao cinema ou eu vou ao
mercado”, em que eu tenho duas sentenças, que podem ser verdadeiras ou falsas
(em qualquer combinação), ligadas por um conectivo “ou”, o que permite dizer se a
sentença toda é verdadeira ou falsa. Neste caso, se eu não for ao cinema nem ao
mercado, a sentença completa seria falsa.
Para realizar as operações lógicas, não precisamos saber exatamente o que
signi�cam as sentenças, por isso podemos representá-las apenas com letras ou
variáveis, que indicarão apenas que são sentenças que podem ser verdadeiras ou
falsas. No caso, uma sentença A pode assumir o valor “verdadeiro” ou “falso”, que
podemos usar como 0 para falso e 1 para verdadeiro, para simpli�car.
06/12/2023, 19:29 Introdução à Lógica Digital
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/introducao-a-logica-digital.html 3/10
Operadores Lógicos
As sentenças lógicas podem ser combinadas através de operadores lógicos, onde
uma ou duas sentenças são os operandos, que vão produzir uma saída lógica, ou
seja, 0 ou 1.
Temos, basicamente, três operações lógicas primitivas (E, OU e NÃO) e outras
operações que podem ser derivadas (NÃO-E, NÃO-OU e OU EXCLUSIVO). Vamos
estudar esses operadores para entender melhor o seu funcionamento.
Operador E (A • B)
Duas sentenças A e B podem ser combinadas através de um operador E, que é uma
conjunção lógica representada pelo símbolo (•), que indica que a sentença completa
“A E B” é verdadeira somente se ambas forem verdadeiras. Se uma das duas for falsa,
a sentença toda é falsa. A operação E ainda pode ser representada por um símbolo
similar ao acento circun�exo (∧) ou um ponto-�nal (.), dependendo da literatura.
Podemos entender melhor utilizando uma tabela-verdade, que é uma tabela com
todas as possíveis combinações das sentenças de entrada (A e B), indicando qual é o
resultado para a operação para cada combinação das entradas.
A tabela-verdade para a operação A • B pode ser escrita como aparece na Tabela 1.
06/12/2023, 19:29 Introdução à Lógica Digital
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/introducao-a-logica-digital.html 4/10
Pela Tabela 1, percebemos que só há uma combinação possível onde A • B seja
verdadeira, que acontece quando A é verdadeira e B também é verdadeira.
Operador OU (A + B)
A operação OU é uma disjunção lógica, ou seja, a sentença A + B é verdadeira se,
pelo menos, uma das sentenças A ou B forem verdadeiras. Note que podem ser
ambas verdadeiras, uma não exclui a outra. A operação OU utiliza o sinal (+) ou ainda
pode ser representada por um símbolo que parece a letra V (∨), dependendo da
literatura.
A tabela-verdade para a operação A + B pode ser escrita como aparece na Tabela 2.
Note que o único caso onde a sentença é falsa ocorre quando ambas as sentenças A
e B são falsas.
Tabela 1 – Tabela-verdade para a operação A • B
A B A • B
0 0 0
0 1 0
1 0 0
1 1 1
Fonte: O autor.
Tabela 2 – Tabela-verdade para a operação A + B
A B A + B
0 0 0
0 1 1
1 0 1
1 1 1
Fonte: O autor.
06/12/2023, 19:29 Introdução à Lógica Digital
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/introducao-a-logica-digital.html 5/10
Operador NÃO (~A)
A operação NÃO é uma negação lógica, ou seja, ela inverte o valor lógico do
operando, se era verdadeiro se torna falso e se era falso se torna verdadeiro. É um
operador unário, que é aplicado a apenas um operando (que pode também ser uma
expressão, como veremos a frente). Usamos o símbolo (~) para simbolizar a negação
lógica, mas você também pode encontrar a operação representada com o símbolo
(¬) ou ainda com uma linha superior, da seguinte forma: A.
A tabela-verdade para a operação ~A pode ser escrita como aparece na Tabela 3.
Operador NÃO-E ~(A • B)
Para realizar a operação NÃO-E basta realizar a operação E entre as sentenças e
depois aplicar a negação, necessariamente nesta ordem. Por isso que o símbolo é
uma combinação das operações, sendo representado como ~(A • B). Por ser um tipo
de operação muito comum, é colocado como um operador lógico mesmo sendo
uma combinação de operadores. Ele funciona como uma operação só em portas
lógicas, que veremos na próxima aula.
A tabela-verdade para a operação ~(A • B) pode ser escrita como aparece na Tabela 4.
Tabela 3 – Tabela-verdade para a operação ~A
A ~A
0 1
1 0
Fonte: O autor.
06/12/2023, 19:29 Introdução à Lógica Digital
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/introducao-a-logica-digital.html 6/10
Se você retornar acima e comparar esta tabela-verdade com a tabela da operação E,
você verá que a última coluna está exatamente invertida, porque é realizada a
operação E e depois os valores são invertidos. Vale ressaltar, também, que a
operação OU não é o inverso da operação E, como pode ser visto comparando esta
tabela com a tabela da operação OU.
Operador NÃO-OU ~(A + B)
De forma semelhante ao que vimos acima, a operação NÃO-OU é efetuada
realizando a operação OU entre as sentenças e depois, inverte-se os valores lógicos.
A operação NÃO-OU é representada como ~(A + B).
A tabela-verdade para a operação ~(A + B) pode ser escrita como aparece na Tabela
5.
Compare esta tabela com a Tabela 2, da operação OU e você verá como a última
coluna foi invertida.
Tabela 4 – Tabela-verdade para a operação ~(A • B)
A B ~(A • B)
0 0 1
0 1 1
1 0 1
1 1 0
Fonte: O autor.
Tabela 5 – Tabela-verdade para a operação ~(A + B)
A B ~(A + B)
0 0 1
0 1 0
1 0 0
1 1 0
Fonte: O autor.
06/12/2023, 19:29 Introdução à Lógica Digital
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/introducao-a-logica-digital.html7/10
Operador OU-EXCLUSIVO (A ⊕ B)
Nós já vimos que a operação OU é verdadeira se uma das duas sentenças (ou
ambas) for verdadeira. A operação OU-EXCLUSIVO é similar, mas se refere às
situações onde uma das sentenças tem que ser verdadeira, mas não ambas.
Podemos resumir dizendo que apenas uma sentença deve ser verdadeira para a
operação ser verdadeira.
A tabela-verdade para a operação A ⊕ B pode ser escrita como aparece na Tabela 6.
Portanto, lembre-se de que se A e B forem verdadeiras, a operação OU-EXCLUSIVO
resulta em falso.
Tabela 6 – Tabela-verdade para a operação A ⊕ B.
A B A ⊕ B
0 0 0
0 1 1
1 0 1
1 1 0
Fonte: O autor.
Expressões Lógicas
Assim como ocorre com expressões aritméticas, podemos combinar os operadores
lógicos e as sentenças no que chamamos de expressões lógicas, que representam
uma sequência de operações a ser efetuada.
Veja a expressão abaixo:
S = (A + ~B) • ~(C + D)
Note que os parênteses também são utilizados como uma forma de forçar a
precedência entre as operações. Para resolver essa expressão, começamos de dentro
para fora, resolvendo ~B, em seguida (A + ~B), depois C + D, então ~(C + D), para
�nalmente resolver a operação E que junta as duas partes.
06/12/2023, 19:29 Introdução à Lógica Digital
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/introducao-a-logica-digital.html 8/10
Também usamos tabelas-verdade para resolver expressões, porém ela receberá mais
colunas, onde teremos as soluções de cada parte que separamos, também ela terá
mais linhas, pois estamos trabalhando com 4 variáveis. Lembrando das aulas de
matemática da escola, se temos 4 variáveis, onde cada uma pode assumir dois
valores possíveis (0 ou 1), temos 2⁴ combinações possíveis, ou seja, teremos 16 linhas
de combinações.
SAIBA MAIS
As expressões lógicas são muito importantes não apenas para os
circuitos, mas estão presentes em toda a programação. Todo programa
de computador que tenha alguma relevância precisa realizar desvios
condicionais ou repetições que dependerão de uma expressão que
retorne apenas VERDADEIRO ou FALSO.
06/12/2023, 19:29 Introdução à Lógica Digital
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/introducao-a-logica-digital.html 9/10
Como faz para criar uma tabela-verdade complexa como essa? Comece pelas
variáveis envolvidas, em nosso caso são A, B, C e D. As colunas delas são preenchidas
com todas as possibilidades de combinações. Repare que seguem um padrão e é
sempre assim.
Em seguida crie colunas para as partes da expressão que você pode separar. Como o
processo vai ser similar para todos, vamos focar na operação ~B. As linhas da coluna
de ~B serão preenchidas tendo como base as linhas da coluna de B. Para cada linha,
olhe o valor em B, se for 0 preencha ~B com 1, se for 1 preencha ~B com 0, porque é
isso que a operação faz.
Tabela 7 – Tabela-verdade para a expressão S = (A + ~B) • ~(C + D)
A B C D ~B A + ~B C + D ~(C + D) S
0 0 0 0 1 1 0 1 1
0 0 0 1 1 1 1 0 0
0 0 1 0 1 1 1 0 0
0 0 1 1 1 1 1 0 0
0 1 0 0 0 0 0 1 0
0 1 0 1 0 0 1 0 0
0 1 1 0 0 0 1 0 0
0 1 1 1 0 0 1 0 0
1 0 0 0 1 1 0 1 1
1 0 0 1 1 1 1 0 0
1 0 1 0 1 1 1 0 0
1 0 1 1 1 1 1 0 0
1 1 0 0 0 1 0 1 1
1 1 0 1 0 1 1 0 0
1 1 1 0 0 1 1 0 0
1 1 1 1 0 1 1 0 0
Fonte: O autor.
06/12/2023, 19:29 Introdução à Lógica Digital
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/introducao-a-logica-digital.html 10/10
As próximas colunas seguem o mesmo processo, analisando o resultado das
operações de acordo com os valores nas colunas dos operandos. Por exemplo, para
preencher a coluna de A + ~B, você deve olhar os valores da coluna A, da coluna ~B e
veri�car como funciona a operação OU (+). Por isso que as tabelas-verdade dos
operadores são importantes.
Por �m, a coluna S é o resultado de toda a expressão, que, em nosso caso, é uma
operação E sobre os valores da coluna A + ~B e da coluna ~(C + D).
15:53
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:30 Circuitos Digitais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/circuitos-digitais.html 1/7
Circuitos Digitais
AUTORIA
Andre Abdala Noel
06/12/2023, 19:30 Circuitos Digitais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/circuitos-digitais.html 2/7
Olá!
Apesar de serem relacionados, não estudaremos, nesta disciplina, os componentes e
circuitos eletrônicos. Aqui estudaremos a parte lógica dos circuitos, ou seja, o
comportamento esperado para que produzam alguma determinada saída. Essa
saída pode compreender o acendimento de um LED, um texto em um painel digital,
o acionamento de um dispositivo, depende da implementação que for realizada.
Circuitos digitais são circuitos que trabalham apenas com dois níveis de sinal, não há
uma variação de tensão, não há faixas de valores possíveis, os únicos valores
admitidos são 0 e 1. Já vimos que na prática há uma variação, mas conseguimos
estabelecer faixas de tensão para 0 ou para 1.
Mesmo os computadores são conhecidos como "computadores digitais" porque
trabalham dessa forma. Conforme Monteiro, “Como na prática não há máquinas
digitais não binárias, como, por exemplo, máquinas digitais decimais, é mais usual
simpli�car-se o termo, usando apenas computador digital (a palavra binário �ca
implícita)” (2007, p. 445).
CONECTE-SE
Nos últimos anos, a Internet das Coisas (IoT) tem crescido e ganhado
cada vez mais espaço no mercado e nas inovações. Já temos casas
inteligentes, carros autônomos e cada vez mais dispositivos conectados,
o que demanda conhecimento em circuitos e comunicação para criar
tais dispositivos.
Portas Lógicas
Esse estudo de circuitos digitais depende muito dos conhecimentos a respeito de
lógica digital vistos na Aula 5. Se você pulou aquela aula, recomendo que volte lá,
antes de continuar essa aula.
https://go.eadstock.com.br/bjj
https://go.eadstock.com.br/bjj
06/12/2023, 19:30 Circuitos Digitais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/circuitos-digitais.html 3/7
Todo o conceito de circuitos digitais envolve a entrada de sinais, que podem ser 0 ou
1, a manipulação ou combinação desses sinais e uma saída, que também será 0 ou 1.
Para realizar as operações lógicas que estudamos, os circuitos utilizam componentes
chamados de portas (ou gates). “Essas portas formam a base do hardware sobre a
qual todos os computadores digitais são construídos” (TANENBAUM, 2013, p. 116).
Para esquematizar um circuito digital precisamos conhecer as portas lógicas e como
podemos interligar essas portas. As portas lógicas funcionam da mesma forma que
os operadores que estudamos anteriormente.
A Tabela 1 traz a representação grá�ca de cada tipo de porta lógica.
Portanto, usamos essas representações para montar os circuitos digitais,
combinando as operações, assim como �zemos as expressões lógicas.
Tabela 1 – Portas lógicas e suas representações
Porta Expressão Representação grá�ca
E (AND) A • B
OU (OR) A + B
NÃO (NOT) ~A
NÃO-E (NAND) ~(A • B)
NÃO-OU (NOR) ~(A + B)
OU-EXCLUSIVO (XNOR) A ⊕ B
Fonte: O autor.
Construindo um Circuito Digital
06/12/2023, 19:30 Circuitos Digitais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/circuitos-digitais.html 4/7
Um circuito digital é uma combinação de entradas lógicas, através de portas lógicas.
Assim, um circuito digital pode também ser escrito como uma expressão lógica
equivalente ao circuito.
Vejamos uma expressão lógica simples, como exemplo:
S = ~A + (B • C)
Para desenhar o circuito, podemos separar a expressão em partes, como �zemos na
hora de montar a tabela-verdade do circuito. Podemos resolver primeiro a operação
~A, depois B • C, depois a operação OU que junta as duas partes. Não podemos
esquecer, também, de desenhar as três entradas A, B e C.
Figura 1 - Circuito lógico equivalente à expressãoS = ~A + (B • C)
Fonte: O autor.
Também podemos fazer o caminho reverso, extraindo uma expressão equivalente a
partir de um circuito lógico desenhado. Podemos fazer por etapas, como �zemos
também na imagem anterior. Para fazer um passo a passo, veja o circuito da
imagem a seguir. Separamos algumas partes como subcircuitos. Ao �nal, retiramos
a expressão por substituição.
06/12/2023, 19:30 Circuitos Digitais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/circuitos-digitais.html 5/7
Figura 2 – Circuito lógico com expressão ainda não conhecida
Fonte: O autor.
Observe, na Imagem anterior, que destacamos S1 e S2, que funcionam como
subcircuitos, depois o circuito �nal pode ser obtido pela saída da porta NÃO-E, ou
seja, S = ~(S1 • S2).
Conhecendo a representação das portas lógicas (Tabela 9), podemos identi�car o
que são S1 e S2. Sendo assim, temos:
S1 = A + B
S2 = ~C
Finalizando, basta passar pela porta NÃO-E para �nalizar a equação, em que
podemos substituir S1 e S2 na expressão de S.
S = ~(S1 • S2)
S = ~((A + B) • ~C)
Com isso temos a expressão equivalente ao circuito.
Montando Circuitos a Partir de
Problemas
Suponha que você foi chamado para construir um equipamento eletrônico para um
reality show de músicas. Neste programa, os candidatos se apresentam, e o três
jurados possuem um botão para aprovar ou não os candidatos. Se o jurado apertar o
botão, signi�ca que ele aprovou o candidato. Se não apertar, não aprovou. Porém, o
candidato só passa para a próxima fase se ele tiver a aprovação de, pelo menos, dois
jurados. O seu equipamento deve veri�car isso e ativar uma luz especial caso o
candidato passe para a próxima fase.
06/12/2023, 19:30 Circuitos Digitais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/circuitos-digitais.html 6/7
E aí, você está pronto para montar um circuito para resolver esse problema?
Sim, você está! Eu acredito em você! Vamos só pensar por partes no problema e
tentar enxergar ele como os circuitos que vimos antes.
Primeiro, temos três jurados que podem apertar o botão (1) ou não apertar (0). Esses
jurados serão as nossas entradas A, B e C. A saída �nal é acender uma luz especial (1)
ou não acender (0), o que será a nossa saída S.
Então, precisamos pensar apenas em quando é que a saída estará acesa, quais são
os casos em que isso acontece? Podemos montar uma tabela verdade para isso.
A tabela 2 expressa o nosso problema. A, B e C são os jurados. Quando apertam o
botão o valor da célula é 1, quando não apertam o valor é 0. Fazemos todas as
combinações possíveis entre os jurados.
Para preencher a coluna S, veri�camos quais são os casos onde o candidato passaria
para a próxima fase, que são os casos onde duas ou três entradas estão como 1.
Agora que temos a tabela pronta, basta separar todas as linhas onde S vale 1. Para
estas linhas, vemos qual é a con�guração das entradas. Por exemplo, temos que S é 1
quando A não aperta, B aperta e C aperta. Portanto podemos dizer que S é 1 quando
~A • B • C. Fazendo o mesmo para as outras linhas, vemos que S é 1 quando acontece
uma combinação de jurados ou outra combinação ou uma outra... Sendo assim,
juntamos todas as possibilidades com operações OU.
Tabela 2 – Tabela-verdade para o problema do reality show
A B C S
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
Fonte: O autor.
06/12/2023, 19:30 Circuitos Digitais
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/circuitos-digitais.html 7/7
S = (~A • B • C) + (A • ~B • C) + (A • B • ~C) + (A • B • C)
Essa é a nossa expressão �nal para o problema. A partir dela, já podemos desenhar
nosso circuito. Perceba que essa expressão não é a expressão mais simpli�cada para
este circuito, ainda é possível deixar mais simples mantendo a equivalência lógica.
Porém, para isso precisaríamos utilizar algumas regras da Álgebra de Boole para a
simpli�cação de equações lógicas, que não veremos neste material.
12:52
https://unicv.edu.br/
https://vimeo.com/user82076795
06/12/2023, 19:30 Processador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processador.html 1/6
Processador
AUTORIA
Andre Abdala Noel
06/12/2023, 19:30 Processador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processador.html 2/6
Começamos, agora, a passear por dentro do computador. Não sei se você já teve a
experiência de abrir um computador e mexer em suas peças, é algo muito bom para
o aprendizado. Se não fez, tudo bem, aqui vamos ver mais como se dá o
funcionamento dessas partes do que da montagem em si.
Já falamos rapidamente sobre processadores na primeira aula, mas é muito
importante que você entenda o funcionamento dele. Isso ajuda a entender melhor o
computador como um todo e te dá uma noção melhor de como otimizar códigos e
execuções.
O processador é comparado com o cérebro de uma pessoa. Como o nome já diz, ele
é o responsável por processar as informações e devolver uma resposta. Vamos
entender melhor o funcionamento entendendo as suas partes internas.
A Organização do Processador
Vimos que os processadores que seguem a Arquitetura de von Neumann (os
processadores que usamos hoje em dia, por exemplo) podem ser divididos em:
Unidade de Controle (UC), Unidade Lógica e Aritmética (ULA) e os registradores, que
são vários.
Figura 1 - A organização de um computador simples com uma CPU e dois
dispositivos de E/S
Fonte: Tanenbaum, 2013.
06/12/2023, 19:30 Processador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processador.html 3/6
Os Registradores são unidades de memória muito pequenas, geralmente do
tamanho da palavra de bytes utilizada pelo processador. Servem para
armazenamento temporário de informações que estavam na memória e que serão
utilizadas na execução de instruções.
A Unidade de Controle, como o nome diz, é a parte responsável por controlar a
execução. Ela identi�ca na memória as instruções que devem ser executadas, as
decodi�ca e encaminha para a execução, mas não as executa. Depois recebe o
resultado e encaminha de volta para a memória.
A Unidade Lógica e Aritmética é a parte responsável pela execução das instruções.
A UC indica o que deve ser executado e quais são os registradores que possuem as
informações para a ULA executar.
Você se lembra de quando dissemos que os computadores são como máquinas de
calcular, só que muito evoluídos e muito rápidos? A ULA é quem melhor exempli�ca
isso.
Figura 2 - Representação da Unidade Lógica e Aritmética de um processador.
Fonte: NOEL, 2019.
A �gura anterior nos mostra como funciona a Unidade Lógica e Aritmética de um
processador. Repare como ela se parece um pouco com uma porta lógica. Uma
diferença é que a operação que vai ser efetuada pode ser escolhida e outra diferença
é que não trabalha com valores de apenas 1 bit, mas trabalha com valores do
tamanho da palavra de bytes do processador, ou seja, operandos e saída em 64 bits
para processadores que trabalham numa arquitetura de 64 bits.
06/12/2023, 19:30 Processador
https://moodle.ead.unifcv.edu.br/pluginfile.php/994077/mod_resource/content/2/book/processador.html 4/6
Segundo Monteiro (2007), as operações que a ULA executa são: soma, subtração,
multiplicação, divisão, AND, OR, NOT, XOR, deslocamento de bits à direita,
deslocamento de bits à esquerda, incremento de 1 e decremento de 1.
O Funcionamento do Processador
Alguma vez alguém já te perguntou qual é a velocidade do processador do seu
computador (ou do smartphone)? Bom, não medimos o desempenho do
processador em velocidade, mas em frequência. Para simpli�car, vamos deixar de
lado a ideia de múltiplos núcleos por enquanto, isso será tratado em uma aula mais
à frente.
Os processadores possuem sua frequência medida em Hertz (Hz), hoje temos
processadores na faixa de GigaHertz (GHz). Mas o que vem a ser 1 Hz? A

Mais conteúdos dessa disciplina