Buscar

0.MA.Arquitetura de Computadores e SO (1)

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ARQUITETURA DE COMPUTADORES 
E SISTEMAS OPERACIONAIS 
 
Wellington Barbosa 
 
 
 
 
 
 
 
 
 
 
2 
 
 
SUMÁRIO 
 
1 INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES ............................. 3 
2 PRINCIPAIS COMPONENTES DA ARQUITETURA DE COMPUTADORES .... 20 
3 ARQUITETURAS DE COMPUTADORES BÁSICAS E AVANÇADAS .............. 34 
4 FUNDAMENTAÇÃO DOS PRINCIPAIS CONCEITOS RELATIVOS À ÁREA DE 
SISTEMAS OPERACIONAIS ........................................................................ 49 
5 ESTUDO DA ESTRUTURA DOS SISTEMAS OPERACIONAIS MAIS 
UTILIZADOS .............................................................................................. 65 
6 PESQUISA SOBRE OS PRINCIPAIS SISTEMAS OPERACIONAIS UTILIZADOS 
NOS DIAS ATUAIS ..................................................................................... 84 
 
 
 
3 
 
 
1 INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES 
Olá, aluno! 
Neste bloco, vamos compreender um pouco melhor as diferenças entre organização e 
arquitetura de computadores, passando um pouco por seus modelos físicos e lógicos. 
Além disso, vamos nos apropriar melhor dos conceitos de sistemas de computação e 
de processamento de dados, diferenciar o que é dado, informação e conhecimento, e 
como os sistemas computacionais modernos nos ajudam a obter cada um deles. 
Vamos também fazer um passeio pelo tempo e analisar o histórico das gerações de 
computadores com suas principais características e mudanças no decorrer do tempo. 
E, para concluir o bloco, vamos conhecer a relação entre arquitetura de computadores 
e os sistemas operacionais, o que irá nos apoiar na escolha de bons sistemas 
operacionais para realização das nossas tarefas corporativas de maneira adequada ao 
hardware que temos à disposição. 
1.1 Arquitetura vs. Organização de Computadores: a organização estruturada de 
computadores e a descrição dos componentes da arquitetura de computadores 
Os termos arquitetura de computadores e organização de computadores podem 
parecer um pouco redundantes e confusos a princípio, porém, ao nos familiarizarmos, 
fica fácil distingui-los. O termo arquitetura de computadores tem relação com os 
componentes mais visíveis ao programador durante o desenvolvimento de seus 
softwares, já organização de computadores é algo mais transparente, imperceptível ao 
programador e principalmente a usuários finais, muitas vezes sendo a forma de 
implementação dentro da arquitetura. 
Um sistema desenvolvido para determinada arquitetura pode não funcionar se 
implantado em uma arquitetura diferente da sua atual. Como exemplo disso, podemos 
reparar em diversos sistemas operacionais atuais a distinção entre arquitetura de 64 
bits e 32 bits para processadores. Programas feitos para arquitetura de 32 bits não irão 
 
 
4 
 
funcionar em um processador 64 bits, a menos que haja uma adaptação para realizar a 
compatibilidade entre arquiteturas. Podemos ver com esse exemplo que a troca de 
arquitetura influencia diretamente no desenvolvimento e escolha de um software. 
Quando nos referimos à organização de computadores, não irá impactar diretamente 
no processo de utilização ou escolha de um software. Algo que pode estar relacionado, 
por exemplo, é a estratégia de multiplicação para pontos flutuantes. A mesma 
arquitetura pode suportar uma estratégia em que a unidade central de 
processamento, popularmente conhecida como CPU (do inglês, Central Processing 
Unit), realiza a multiplicação direta entre dois números; ou adotar a estratégia que, em 
vez de realizar a multiplicação direta, faz a soma de maneira equivalente à 
multiplicação. Por exemplo, em vez de realizar o cálculo direto de 3 x 5, pode ser 
realizado o cálculo 5 + 5 + 5. Em ambos os casos, se a CPU tem capacidade de realizar 
instruções de multiplicação, o resultado será 15, mas cada um foi realizado com uma 
organização diferente. 
A arquitetura também pode ser alterada de acordo com a funcionalidade que o 
computador terá. É bem comum utilizar processadores com arquiteturas diferentes 
em máquinas cliente (máquinas utilizadas por usuários finais) e máquinas com a 
função de servidor (que promovem serviços para diferentes pessoas 
simultaneamente). Normalmente, um servidor terá um processador que suporta mais 
tipos de virtualização e paralelismo de tarefas, além de maior capacidade de 
recebimento de diversas instruções simultaneamente. Por sua vez, uma máquina 
cliente pode até ter maior frequência de processamento para uma tarefa exclusiva, 
porém menor capacidade em multitarefas e virtualização. 
O conhecimento nessa área se faz fundamental, principalmente para uso em 
empresas, pois a escolha de uma arquitetura de computadores errada pode 
comprometer um projeto ou levar a empresa a trocar os seus sistemas em decorrência 
da arquitetura. Outro caso que pode acontecer é a compra de uma arquitetura muito 
mais cara do que a necessária e não utilizar suas vantagens, como, por exemplo, a 
compra de computadores com processadores de servidor para utilizar em estações 
 
 
5 
 
que irão realizar tarefas únicas, sem a necessidade de distribuição do processamento 
entre diversos computadores. Nesse exemplo, haveria computadores mais caros, 
provavelmente com menor desempenho para tarefas únicas e sem utilizar as 
vantagens de uma arquitetura voltada para grandes volumes de tarefas. 
Já a alteração da organização do computador é algo que não influencia diretamente na 
escolha do software, pois um mesmo fabricante pode manter uma arquitetura por 
décadas e só melhorar a sua organização, com isso, reduzindo custos e aumentando o 
desempenho. Se isso ocorrer, os clientes não terão problemas ao migrar os seus 
sistemas de um parque antigo de máquinas para um novo parque. Como citado acima, 
se o processador aceita instruções de multiplicação, não será relevante ao 
programador se tal tarefa está sendo realizada diretamente em uma unidade lógica 
aritmética com suporte à multiplicação, ou se esse cálculo é realizado por uma 
sequência de somas e depois retornado o resultado. 
1.2 Conceituação de sistemas de computação e processamento de dados 
Para efeito de definição, iremos tratar computador como “uma máquina (conjunto de 
partes eletrônicas e eletromecânicas) capaz de sistematicamente coletar, manipular e 
fornecer os resultados da manipulação de informações para um ou mais objetivos” 
conforme Monteiro (2010) define em seu livro. Porém, essa definição em tempos 
atuais pode indicar muitas coisas. Se pararmos para analisar, temos computadores em 
todo nosso cotidiano e a todo momento. Hoje em dia, diversos aparelhos eletrônicos 
fazem coletas, manipulações e/ou fornecimento de dados para gerar informações, até 
mesmo um cartão de transporte público armazena dados que serão coletados em um 
computador ligado à catraca do ônibus. 
Antigamente, o serviço executado pelos computadores muitas vezes era conhecido 
como processamento eletrônico de dados, inclusive, em muitas empresas o que hoje é 
chamado de departamento de Tecnologia da Informação (TI), antes era conhecido 
como Centro de Processamento de Dado (CPD). Entretanto, essa mudança de 
nomenclatura ocorreu porque, atualmente, o papel desempenhado pelo 
 
 
 
6 
 
departamento vai além de exclusivamente processar dados, mas também está 
diretamente relacionado com a geração de informações que irão apoiar o negócio da 
empresa, e a produção dessa informação é através de recursos tecnológicos. 
O processamento de dados é apenas uma fase do processo de obtenção da 
informação. Após a coleta dos dados, temos a primeira fase, o processamento, quando 
os dados coletados serão manipulados de maneira sistemática e de acordo com as 
necessidades definidas, para então gerar as informações. A partir da sua análise 
gerada com auxílio do computador, será possível realizar uma análise humana e, com 
isso, obter conhecimento para apoiar as decisões da empresa e auxiliarna melhora dos 
resultados do negócio. 
 
Fonte: elaborado pelo autor. 
Figura 1.1 – Fases do processo de obtenção de informação: 
dados, processamento, informação, análise e conhecimento. 
 
7 
 
Os dados são a base dos processos, a matéria-prima antes de qualquer manipulação, 
ou seja, da forma como foi obtido da fonte de coleta. O dado puro é algo sem 
significado, não transmitindo nenhuma ideia se analisado de maneira bruta. 
Após o processamento dos dados, temos a informação, que pode ser entendida como 
dados organizados de acordo com alguma estrutura ou padrão para possibilitar a 
compreensão humana. 
Com os dados formatados de acordo com a necessidade, iremos para a fase da análise, 
para gerar o conhecimento humano e permitir tomadas de decisões mais assertivas. 
Conforme pode ser visto na figura, primeiro se coletam os dados, depois ocorre o 
processamento para gerar informações e, então, faz-se a análise que leva ao 
conhecimento. 
1.3 Evolução histórica dos computadores 
Seguindo a definição clássica de computador, podemos dizer que o primeiro 
computador digital (baseado em dígitos) foi projetado pelo matemático inglês Charles 
Babbage, que viveu entre 1792 e 1871. Ele dedicou a maior parte de sua vida ao 
desenvolvimento dessa máquina; porém, devido à falta de tecnologia da época, 
faleceu antes de vê-la funcionando. 
 
Figura 1.2 – Charles Babbage (1792-1871). 
 
8 
 
Durante o projeto do primeiro computador digital, época que ainda nem se imaginava 
a existência de sistemas operacionais, Babbage identificou a necessidade da 
construção de rotinas lógicas e estruturadas, para que sua máquina pudesse realizar as 
tarefas necessárias. Para solucionar esse problema, Babbage contratou a pessoa que 
hoje podemos chamar de a primeira programadora da história: Ada Lovelace. 
Após essa tentativa da construção da primeira máquina digital para realização de 
cálculos analíticos, levou-se um tempo para existir mais alguma pesquisa relevante 
nessa área. Quando as pesquisas voltaram a acontecer, começou a história das 
arquiteturas de computadores modernos e dos sistemas operacionais. 
Como maneira de organização, podemos categorizar nossos estudos dividindo entre as 
quatro gerações de arquiteturas de computadores (TANENBAUM, 2016). 
Com o início da Segunda Guerra Mundial, a necessidade de efetuar cálculos mais 
rápidos e mais precisos foi aumentando, a sociedade já precisava de equipamentos 
que fizessem tal tarefa para terem vantagens estratégicas sobre os inimigos. Por esse 
motivo, nessa época, a evolução dos computadores deu um grande salto, fazendo com 
que diversos pesquisadores idealizassem suas máquinas e começassem o processo de 
construção. 
A maioria das máquinas dessa geração eram baseadas em válvulas e levavam segundos 
para realizar até mesmo os cálculos mais simples. Tinham grande problema de falta de 
confiabilidade, pois usavam uma quantidade muito grande de válvulas que 
frequentemente queimavam; logo, não se podia confiar muito no equipamento. 
A utilização desses equipamentos era muito complicada, desde seu armazenamento 
(pois eram computadores enormes) até a manutenção. Isso acontecia porque era 
necessária uma equipe de profissionais com qualificação muito específica para que 
tivessem seu funcionamento da maneira adequada. 
Outro fator que complicava muito a utilização desses equipamentos era o fato de que 
a única maneira de interagir com eles, para realizar as tarefas, era por meio de painéis 
de programação. A ausência de sistemas operacionais nessa geração de computadores 
limitava seu uso a somente técnicos altamente capacitados, pois todas as instruções 
 
9 
 
deveriam ser passadas em linguagem de máquina. Nessa época, não existia nem a 
assembly, linguagem de segunda geração que faz uso de instruções semelhantes às de 
máquinas, mas com uso de algumas palavras em inglês. 
Somente no começo da década de 1950 foi inserido o cartão perfurado: o 
“programador”, podia desenvolver cartões perfurados para criar algum tipo de rotina, 
que seria executado sem a necessidade de intervenção continua no painel de 
programação. Essa difícil manipulação dos equipamentos normalmente fazia com que 
somente o próprio criador conseguisse fazer uso adequado de sua invenção. 
 
Figura 1.3 – Cartões perfurados da década de 1940. 
Na segunda geração de computadores, que teve início em meados da década de 1950, 
as condições se alteraram bastante, pois foi inserido o uso de transistores para 
substituir a utilização de válvulas. Com o uso de transistores, já era possível ter 
computadores capazes de funcionar tempo o suficiente para executar tarefas úteis 
sem a necessidade de manutenção tão frequente. Porém, nessa geração, os 
computadores ainda eram equipamentos enormes e de alto custo, onde somente 
grandes cooperações, universidades ou instituições governamentais tinham a 
possibilidade de comprá-los e mantê-los. 
Essa evolução já permitiu que os computadores da época começassem a ser 
comercializados e não mais operados somente por seus próprios fabricantes. Foi nesse 
momento da história que houve a possibilidade de separar as equipes que fariam uso 
dos computadores, sendo possível distinguir o projetista do fabricante, do 
 
10 
 
programador e do técnico de manutenção. Isso porque, a partir de então, cada um 
tinha seu próprio papel e sua função ao utilizar o equipamento. Começaram a existir 
diferentes funções e diferentes qualificações para utilização de computadores, mas 
que ainda demandava alto conhecimento técnico para sua execução. 
O processo de desenvolvimento dos programas nessa geração de computadores 
também evoluiu bastante, pois já começaram as linguagens de programação assembly 
e Fortran, sendo que a princípio havia a necessidade de cada programa ser escrito 
primeiramente no papel em uma das duas linguagens, e depois as instruções eram 
passadas para os cartões perfurados. 
Esses cartões perfurados eram entregues a um operador, que faria a inserção no 
computador e esperaria um bom tempo até ter a saída do resultado. Essa saída seria 
entregue novamente para o programador, para que conferisse o resultado e, assim, 
fizesse uso das informações processadas pela máquina. 
Esse processo consumia uma quantidade de tempo muito alta para que fosse 
operacionalizado, pois em diversos pontos havia o deslocamento de um operador 
andando entre salas para que pudesse pegar todas as instruções de entradas e todos 
os resultados já processados para levar para os programadores. Foi dessa necessidade 
que surgiram os primeiros sistemas operacionais. 
A funcionalidade dos primeiros sistemas operacionais já se assemelhava aos de hoje 
em dia, o que facilitava a utilização dos recursos de hardware pelo usuário final. Os 
primeiros sistemas operacionais serviam para fazer a leitura de diversos cartões, 
armazenar o conteúdo deles em fitas magnéticas para, só depois de uma grande 
quantidade de instruções armazenadas, começar a executá-las. Quando terminava a 
execução do processo, a saída era gravada em uma segunda fita magnética. 
Com isso, ao término de uma instrução, outra já começava automaticamente, 
podendo assim executar instruções em lote (batch), sem a necessidade de troca de 
cartões a cada instrução ou um operador para ficar andando entre sala sempre que 
precisasse começar ou terminar uma instrução. Agora o processo podia executar por 
mais tempo e com mais instruções sem intervenção humana. 
 
11 
 
No começo da década de 1960 iniciou-se a terceira geração, onde existiam 
basicamente dois tipos de computadores: os mais potentes, utilizados por grandes 
empresas e universidade, que tinham grande capacidade de processamento para 
realização de cálculos e eram orientados a palavras; e os de menor porte, que tinham 
como principal funcionalidade a ordenação e impressão de fitas, utilizados por 
companhias de seguros e bancos, orientadosa caracteres ao invés de palavras. 
Porém, essa segunda estrutura tinha um problema sério de impossibilidade de utilizar 
programas feitos para uma das arquiteturas funcionar na outra: se, por exemplo, uma 
empresa comprasse um computador de menor porte e sua demanda crescesse, não 
poderia fazer a migração dos seus programas para um computador de maior porte. 
A terceira geração de sistemas operacionais teve seu início em meados da década de 
1960, e veio junto com uma solução para o problema de diferentes arquiteturas para 
os dois tipos de computadores existentes até então. A IBM lançou a primeira geração 
de computadores baseados em circuitos integrados e não mais em transistores 
individuais. Isso permitiu que os equipamentos ficassem com um custo-benefício 
muito mais acessível, e também possibilitou que computadores de diversos portes 
executassem o mesmo sistema operacional. Esse fato permitiu que os programas 
pudessem ser desenvolvidos para funcionar em qualquer porte de equipamento. 
Em relação as suas antecessoras, essa geração tinha a vantagem de poder ser 
executada em qualquer tamanho de equipamento e para qualquer funcionalidade. 
Porém, esse também era seu maior defeito, pois um sistema operacional que funcione 
para qualquer porte de máquina precisava ser muito grande e com muitas 
funcionalidades. 
Era um sistema com milhões de linhas de código, escrita por milhares de 
programadores e, consequentemente, diversos erros durante sua programação. Eram 
necessárias atualizações constantes para correções, mas estas vinham com erros 
diferentes e novamente precisavam de atualizações. 
 
 
12 
 
Os sistemas operacionais de terceira geração, mesmo tendo suas características 
negativas, também começaram a implementar técnicas fundamentais para a evolução 
da computação como a multiprogramação. Ou seja, os computadores IO-bound (Input 
and Output-bound), equipamentos que tinham a maior utilização para tarefas com 
entrada e saída de dados, podiam executar tarefas de processamento enquanto 
executavam tarefas de escrita nas fitas ou esperavam sua reposição. 
O contrário também acontecia em computadores CPU-bound, equipamentos que 
tinham maior utilização de funcionalidades que exigiam processamento (tipo 
computadores utilizados para cálculos de previsão do tempo), também conseguiam 
realizar tarefas de entrada e saída de dados enquanto seus cálculos eram realizados. 
O que possibilitou essa técnica de multiprogramação foi o fato de a memória começar 
a ser dividida em partes (MACHADO & MAIA, 2017), podendo deixar uma parte da 
memória responsável para o sistema operacional e outras partes livres para cada uma 
armazenar uma tarefa diferente, criando essa concorrência entre processos IO-bound 
e CPU-bound de maneira a diminuir a ociosidade da máquina. 
Ainda durante o processo de evolução dos sistemas operacionais de terceira geração, 
identificou-se que, tendo os sistemas grande capacidade de processamento, 
suportando multiprogramação e atendendo necessidade de vários tipos de sistemas ao 
mesmo tempo, ainda tinham grande ociosidade, pois continuavam agindo como 
sistema de execução em lotes, ou seja, eles executavam uma série de instruções de 
maneira sequencial (Batch). Isso gerava desperdício de tempo, pois, se um 
programador errasse uma vírgula durante sua programação, teria que esperar o 
término da execução de todas as instruções de todos os outros programadores para 
que pudesse corrigir a sua. 
Para solucionar esse problema de usabilidade foi colocado um esquema de rodízio de 
utilização dos recursos computacionais fazendo a divisão por tempo, chamado time 
sharing. Esse recurso identifica quantas pessoas estão utilizando o computador e 
destina uma fração de tempo, normalmente muito inferior a um segundo para cada 
 
 
 
13 
 
usuário, de maneira que não consigam perceber que estão compartilhando o mesmo 
hardware com outros usuários, pois a fração de tempo reservado a cada um é tão 
pequena que fica completamente transparente a quem ele está dividindo o recurso. 
Na década de 1980, deu-se início a quarta geração de arquitetura de computadores e 
consequentemente houve mais uma evolução grande nos sistemas operacionais. 
Graças ao desenvolvimento de circuitos integrados em larga escala, em que se 
consegue construir chips com milhares de transistores em apenas um centímetro 
quadrado de silício, foi possível impulsionar a computação pessoal. 
A partir dessa geração, tanto o tamanho quanto o custo para a produção de 
computadores diminuíram muito, gerando a possibilidade de que as pessoas 
pudessem adquirir esses equipamentos para uso inclusive em suas residências, e não 
mais se limitando apenas à empresa ou aos profissionais com qualificação específica 
na área de computação. Nessa época se popularizou a nomenclatura 
microcomputador, pois os computadores com circuito integrados em larga escala 
tinham seu tamanho bem menor do que as antigas máquinas, que necessitavam 
muitas vezes de uma sala inteira para funcionar. 
Junto dessa geração de computadores começaram a surgir novos equipamentos, 
como, por exemplo, os discos flexíveis, dando início a uma era. Então, com uma 
computação mais portátil e mais acessível, houve a necessidade de novos sistemas 
operacionais que acompanhassem essa evolução. Com isso, algumas empresas 
começaram a surgir nessa área. Hoje podemos dizer que a empresa dessa época que 
mais se destacou com o desenvolvimento do sistema operacional foi a Microsoft, com 
o MS-DOS (Microsoft disk operating system), fundada por Bill Gates. 
Talvez a principal característica que tenha levado esse sistema operacional a fazer 
tanto sucesso e se popularizar da maneira que aconteceu tenha sido o fato da 
Microsoft atrelar a venda de seu sistema operacional ao hardware que o usuário final 
comprava. Isso fez com que os computadores de diversos modelos, vendidos pela IBM 
na época, fossem com esse sistema operacional já como padrão. 
 
14 
 
Porém, os sistemas operacionais do começo dessa geração de computadores eram 
totalmente baseados em comandos digitados pelo usuário; em pouco tempo houve a 
evolução do desenvolvimento de sistemas operacionais baseados em GUI (graphical 
user interface), ou seja, sistemas operacionais baseados em janelas, ponteiros, ícones e 
menus. Esse tipo de interface começou a tornar os computadores mais intuitivos e 
visualmente mais agradáveis para usuários finais, outro fato que ajudou a popularizar 
mais ainda a computação pessoal. 
1.4 Aplicação de sistemas numéricos e conversão entre bases: breve abordagem 
sobre aritmética de ponto flutuante 
Números são representações de um conceito abstrato, normalmente utilizado para 
representar quantidades. Devido à necessidade das sociedades modernas de 
quantificar, fazemos uso de números diversas vezes ao dia, seja para calcular um troco 
ao realizar pagamentos, quantificar idade em aniversário ou mesmo para olhar a hora. 
Todas as nossas necessidades casuais são em sistemas numéricos de base decimal, ou 
seja, temos dez números para representar a quantidade que queremos e quando esses 
dez números acabam acrescentamos mais um dígito, com isso, aumentando a ordem 
de grandeza no numeral utilizado. 
Os dez números que costumamos trabalhar são [0,1,2,3,4,5,6,7,8,9]. Reparem que 
começamos do 0 e vamos até o 9. Se quiséssemos representar com dois dígitos essa 
mesma sequência numérica, poderíamos escrever [00, 01, 02, 03, 04, 05, 06, 07, 08, 
09], que transmitiria a mesma ideia de valor, pois o 0 à esquerda de um número inteiro 
não altera em nada o seu valor. 
Porém, com essa quantidade de números isolados, é muito limitada a nossa contagem, 
então, quando é necessário representar algum valor acima de 9, juntamos mais dígitos 
para representar. Por exemplo, se seguirmos a sequência, o próximo valor é o 10, e 
depois o 11. Reparem que o número 10 é o segundo algarismo quetínhamos em nossa 
sequência numérica decimal (1) seguido pelo primeiro algarismo (0), então iremos 
alterando o último número da esquerda para aumentar o valor da nossa 
 
 
 
15 
 
representação, e se quisermos representar o próximo número, iremos utilizar o 
segundo número tanto na esquerda quanto na direita (11). Esse processo se repetirá 
até chegarmos ao 19, a partir de então iremos mudar para 20 e repetiremos o 
processo. 
Contar com uma base decimal é muito natural, pois somos ensinados com ela desde a 
infância. Por isso, muitas vezes não paramos para analisar o como é feita, só a 
assimilamos e aceitamos; porém, dentro da computação, outras bases numéricas se 
fazem necessárias, pois trabalhamos com diferentes tipos de medições. 
Uma base muito utilizada na computação é a binária, onde só temos [0,1]. Essa base 
frequentemente é utilizada, pois representa a menor unidade de medida da 
computação, o bit. O bit é utilizado para indicar se há ou não tensão, se uma porta está 
aberta ou fechada, ligado ou desligado e vários outros estados dentro de circuitos 
eletrônicos, porém, sempre situações que só podem ter duas possibilidades. Logo, o 
cálculo com bases binárias facilita o processo. 
Há momentos em que é mais interessante realizar as representações computacionais 
por meio de bytes. Um byte é um conjunto de oito bits, e normalmente essa unidade 
de medida é utilizada para quantificar armazenamento de dados. O tráfego de redes 
de computadores normalmente é medido em bits, e o tamanho do armazenamento é 
medido em bytes. Na escrita, utilizamos a letra b minúscula para representar bits ou o 
B maiúsculo para bytes; podemos contratar um link de internet com velocidade de 
100mbps (100 mega bits por segundo) ou ter uma foto com tamanho de 15mB (15 
mega bytes). 
Como normalmente trabalhamos com valores grandes, esse fato pode tornar 
a representação de dados em binário muito extensa, sendo necessário 
utilizar outras bases para facilitar a visualização. Essas bases podem ser octal 
(com oito dígitos [0,1,2,3,4,5,6,7,]) ou hexadecimal (com dezesseis dígitos 
[0,1,2,3,4,5,6,7,8,9,A,B,C,D,F]). 
 
 
16 
 
Um momento bem comum de utilizar a base hexadecimal é em padrão de cores RGB 
(Red, Green, Blue), onde se determina a cor pela mistura de uma dada quantidade de 
vermelho, verde ou azul. Uma cor de tom alaranjado no padrão RGB seria EEAD2D, 
sendo os dois primeiros dígitos a quantidade de vermelho, os dois dígitos do meio a 
quantidade de verde e os últimos dois dígitos a quantidade de azul da cor. Caso essa 
mesma cor fosse representada em binário, seria 111011101010110100101101. 
É perceptível que a representação em binário fica muito extensa, bem mais difícil de 
manusear ou mesmo memorizar, sendo a representação hexadecimal bem mais 
enxuta. Enquanto a representação binária tem vinte e quatro dígitos, a representação 
hexadecimal tem apenas 6. O mesmo valor em octal seria 73526455, já uma 
representação com 6 dígitos. 
É importante perceber que, embora existam várias bases para representação de 
valores, todas elas seguem o mesmo padrão de contagem, em acrescentar um novo 
dígito à esquerda quando o número de possibilidades se esgotou para determinada 
quantidade de dígitos, como vimos no exemplo da base decimal. Compreendendo essa 
lógica de funcionamento das bases é fácil reparar que todas elas permitem contar até 
valores que tendem ao infinito, sempre aumentando a quantidade de dígitos, ou seja, 
por maior que for um número, sempre será possível escrever um número com valor 
maior que ele. 
1.5 Relação entre a arquitetura de computadores e os sistemas operacionais 
Os sistemas operacionais evoluíram muito com o passar do tempo e com as diversas 
necessidades das diferentes arquiteturas dos computadores. Cada modelo de 
arquitetura tem uma necessidade de um sistema operacional diferente e os sistemas 
operacionais visam melhorar a usabilidade das principais funcionalidades do 
computador. Logo, um computador com uma funcionalidade específica também 
precisa de um sistema operacional específico. 
 
 
 
17 
 
O sistema operacional tem a finalidade de servir como intermediário entre o usuário e 
o hardware, de maneira que aquele não precise conhecer instruções deste, e não 
precise saber nem mesmo qual a arquitetura do computador para realizar as tarefas 
básicas com o seu computador. 
Um questionamento interessante a se fazer nesse momento: o processador do 
computador que está fazendo uso nesse momento é de 32 ou 64 bits? A grande 
maioria das pessoas não devem saber responder essa pergunta, pois o sistema 
operacional cuida de tal diferenciação. Embora um profissional precise saber 
responder isso com muita convicção, até mesmo para poder realizar a escolha de 
softwares adequados, essa é uma informação suprimível a um usuário padrão, que usa 
o computador exclusivamente como meio para realizar suas tarefas e não como 
atividade final de seu serviço. 
Mas se você trocar a placa mãe do seu computador, existe a grande possibilidade de 
ter que apagar o sistema operacional instalado no disco rígido e instalar novamente, 
pois, no momento da instalação, o sistema operacional irá identificar os componentes 
de hardware acoplados na placa mãe e tentará instalar os drivers necessários. 
Drivers são softwares responsáveis por realizar uma boa comunicação entre o sistema 
operacional e os hardwares conectados a ele. Então, se você trocar a placa mãe de um 
computador por uma placa que não seja exatamente o mesmo modelo, 
provavelmente os drivers antigos não irão funcionar por estarem preparados para 
outro tipo de arquitetura dos componentes da placa mãe. 
Se houvesse só uma atualização de todos os componentes de hardware, sem que não 
houvesse nenhuma alteração de arquitetura, mas somente de organização, todos os 
sistemas instalados teriam tendência de funcionar normalmente, inclusive o sistema 
operacional. Mas como cada fabricante adota a sua arquitetura, isso seria bem difícil. 
Então entra outra vantagem do sistema operacional em relação à utilização do 
hardware por programas desenvolvidos por terceiros: um programa pode ser 
desenvolvido para ser utilizado em um sistema operacional, onde a principal 
preocupação do programador será a utilização das chamadas do sistema operacional, 
 
18 
 
ou até mesmo de funções prontas de algum framework instalado no sistema 
operacional, deixando o programador ainda mais isento da preocupação da interação 
direta com a arquitetura do hardware. 
As versões mais recentes do sistema operacional Windows possuem até modo de 
compatibilidade para a arquitetura do processador. Se você tiver uma versão do 
Windows voltado para processadores de 64 bits e desejar instalar um programa 
(normalmente antigo) feito para arquitetura de 32 bits, o próprio sistema operacional 
irá identificar e realizar uma instalação em diretório separado, com modo de 
compatibilidade. Isso pode gerar uma pequena perda de desempenho na utilização do 
programa, porém irá funcionar de maneira adequada. 
Sistemas operacionais e arquitetura de computadores têm um histórico muito 
semelhante pois os sistemas operacionais são desenvolvidos para um usuário final tirar 
o melhor proveito possível do hardware sem ter grande conhecimento técnico sobre o 
assunto. As gerações de sistemas operacionais sempre foram ligadas às gerações de 
arquiteturas de computadores; a cada passo que as gerações de computadores deram, 
os sistemas operacionais foram adequados para atender os novos potenciais dos 
equipamentos e a nova demanda dos usuários desses computadores. 
Até nos dias atuais existem sistemas operacionais voltados para arquiteturas 
especificas como, por exemplo, temos versões de Windows voltadas para servidores, 
que podem fazer uso de recursos avançados de virtualização; tais recursos de 
virtualização não poderiam ser utilizados em versões do Windowsvoltadas ao uso 
pessoal. Também existem versões de sistemas operacionais para dispositivos móveis, 
um tipo de computador que tem necessidades específicas. Atualmente, uma das 
principais é a economia de energia, que, embora seja importante em qualquer tipo de 
computador, em um dispositivo móvel é primordial. 
 
 
 
 
19 
 
Conclusão 
Neste bloco pudemos ver as características introdutórias aos temas sistemas 
operacionais e arquitetura de computadores, passando por definições básicas de 
arquitetura e organização de computadores, tendo uma prévia da definição de 
sistemas operacionais e analisando os sistemas numéricos utilizados dentro da 
computação. Além disso, passamos pelo histórico dos computadores e pelas 
necessidades dos sistemas operacionais em cada geração de computadores. Para 
finalizar, vimos o ponto de convergência entre sistemas operacionais e arquitetura de 
computadores. 
 
REFERÊNCIAS 
MACHADO, F. B.; MAIA, L. P. Arquitetura de Sistemas Operacionais. Rio de Janeiro: 
LTC, 5. ed. 2017. 
MONTEIRO, M. Introdução à Organização de Computadores. Rio de Janeiro: LTC, 
5. ed. 2010. 
TANENBAUM, A. S. Sistemas Operacionais Modernos. São Paulo: Pearson, 4. ed. 2016. 
 
 
 
20 
 
 
2 PRINCIPAIS COMPONENTES DA ARQUITETURA DE COMPUTADORES 
Neste bloco, vamos conhecer um pouco mais a fundo alguns dos componentes de um 
computador e iremos discutir modelos de arquiteturas de algumas partes isoladas. 
Além disso, vamos nos apropriar das partes que compõem uma CPU, entender mais a 
fundo o conceito de interrupção, analisar a hierarquia de memórias e entender a 
importância de cada uma delas. Para complementar o nosso conhecimento sobre 
essas componentes, também vamos falar sobre dispositivos de entrada e saída e tipos 
de barramentos. 
2.1 Descrição do funcionamento dos processadores. Apresentação da CPU (Unidade 
de Controle, ULA, Registradores) 
Se pararmos para analisar, o computador tem certas semelhanças com o ser humano: 
enquanto este possui olhos para possibilitar a visão, ouvidos que têm parte da 
responsabilidade pela audição, e o tato para percepção de condições diversas, aquele 
conta com diversos dispositivos de entrada de informação, como teclado, microfone e 
mouse. O computador também tem dispositivos de saída como microfone e monitor, 
que são capazes de transmitir as informações após processadas; de maneira 
semelhante, os seres humanos utilizam a fala (MONTEIRO, 2010). Mais uma 
semelhança que temos entre os dois é que toda a informação que entra é processada 
por um “cérebro” – no caso do computador, pela CPU (Unidade Central de 
Processamento, sigla do nome em inglês Central Processing Unit). 
A computação atual se baseia na arquitetura de Von Neumann, que considera que um 
computador deve conter três estruturas principais: 
• Unidade lógica e aritmética: Essa parte do processador é responsável pela 
execução das operações algébricas e decisões sobre as operações booleanas (E, 
OU, NÃO etc.). Também na ALU (do inglês, Arithmetic Logic Unit) ficam os 
acumuladores, partes responsáveis por receber informações vindas dos 
dispositivos de entrada e a última parte por onde os dados passam antes de 
irem para os dispositivos de saída. 
 
21 
 
• Unidade de controle: A unidade de controle é responsável pela interpretação e 
execução das instruções passadas para o processador, e irá decidir o que fazer 
com os dados. 
• Memória: Na arquitetura de Von Neumann, é previsto que nem todas as 
instruções podem ser executadas de imediato, inclusive é o grande diferencial 
desse modelo em relação aos anteriores a ele. Logo, é necessário que haja 
memória, dividia em hierarquia, para armazenar as instruções que não estão 
sendo processadas no exato momento. 
A figura abaixo ilustra a estrutura básica de um processador previsto no conceito da 
arquitetura de Von Neumann: 
 
Fonte: elaborado pelo autor. 
Figura 2.1 – Estrutura básica de um processador: 
conceito da arquitetura de Von Neumann. 
Embora todos os processadores contenham essa divisão de componentes, e cada um 
seja responsável por suas funcionalidades, fazendo com que o processador funcione 
com troca de mensagens entre eles, os processadores modernos são fabricados de 
modo que todos os componentes necessários caibam em apenas um chip. Ao observar 
um processador, não será capaz de ver cada componente, até porque a tecnologia está 
evoluída a ponto dos processadores serem compostos por bilhões de transistores (o 
processador Intel Core i7-6950X tem 4,7 bilhões de transistores) e tudo isso em um 
espaço de poucos cm². 
 
22 
 
2.2 Conceito de interrupção 
A maioria dos sistemas operacionais modernos tem a capacidade de executar diversas 
ações simultaneamente. Hoje em dia, um usuário de computadores costuma executar 
diversas funções ao mesmo tempo. Por exemplo, ao usarmos nosso notebook, 
queremos acessar a internet, assistir vídeos e editar planilhas ou documentos de texto 
ao mesmo tempo; ou, quando utilizamos nossos celulares, também utilizamos os 
aplicativos de troca de mensagens enquanto ouvimos músicas e alternamos 
frequentemente para algum jogo ou qualquer outra funcionalidade de nosso 
dispositivo móvel. 
Os computadores da segunda geração de arquitetura de computadores só tinham a 
capacidade de executar um processo por vez, sendo que, ao acabar um programa, o 
operador tinha que ir até o equipamento e manualmente colocar outro programa para 
executar até se automatizar esse processo e possibilitar a execução de arquivos em 
lote (batches) onde era possível organizar para ao término de uma execução o início de 
outra. 
Na geração seguinte de arquitetura de computadores, os sistemas operacionais já 
conseguiram fazer uso de um novo conceito de execução de processos, que 
possibilitou a execução de diversos programas diferentes ao mesmo tempo, 
aparentemente. 
O conceito central utilizado em um sistema operacional é o de processos, afinal, a 
principal funcionalidade de um sistema operacional é facilitar a interação do usuário 
com o hardware, sendo o intermediário na hora de executar programas diversos, 
fazendo isso com o melhor aproveitamento possível do hardware. 
O processo é uma abstração do programa em execução que permite a capacidade de 
pseudoparalelismo ao executar diversas tarefas ao mesmo tempo, mesmo havendo 
apenas uma CPU. O processo a divide em diversas CPUs virtuais e consegue, assim, 
alternar entre elas, gerando concorrência de tarefas. 
 
 
23 
 
Essa característica de um ambiente permitir a execução de múltiplos processos ao 
mesmo tempo é chamada de multiprogramação. Em um ambiente multiprogramado, o 
sistema operacional chaveia (efetua a troca) do processo que está na CPU a todo 
momento, disponibilizando algumas dezenas de milissegundos de processamento a 
cada programa em execução, de maneira que nenhum processo fique sem ter sua 
necessidade atendida. 
Devido ao fato de cada processo ficar apenas alguns milissegundos na CPU e depois 
entrar outro processo, dizemos que é um pseudoparalelismo, pois não se executam 
diversos processos paralelos na CPU, mas há uma troca rápida do processo que está 
sendo executado no momento, gerando a sensação de que vários estão em execução 
simultaneamente; porém, o paralelismo real só pode ocorrer em sistemas distribuídos 
que possuam diversos processadores trabalhando em conjunto de maneira 
transparente ao usuário, sendo que cada processador ficará responsável por um 
processo por um determinado tempo. 
Em determinados momentos, pode acontecer de um evento em especial interromper 
essa distribuição justa de tempo para cada processo e ter a necessidade de ser 
executado naquele exato momento; esse tipo de situação é chamado de interrupção. 
 
Fonte: elaborado pelo autor. 
Figura 2.2 – Exemplo de interrupção. 
 
Processos A Processos B 
Interrupção 
 
24 
 
O mecanismo de interrupção é de suma importânciano modelo de processamento 
multitarefas, pois, como cada fração de tempo é dedicada a um processo, que ficam 
enfileirados, seria impossível a identificação de um evento com necessidade de 
execução imediata caso não houvesse o mecanismo de interrupção. 
Esse mecanismo é utilizado para indicar a CPU quando ocorrem eventos de grande 
importância relacionados a elementos do sistema ou periféricos (PAIXÃO, 2014). Por 
exemplo, em Linux, ao processar um shell script, é possível parar imediatamente o seu 
processamento com a combinação das teclas Ctrl+C; isso só é possível pois o 
mecanismo de interrupção captura o comando do teclado antes mesmo da conclusão 
do script, porém não seria possível, em um mesmo terminal, iniciar um novo script 
antes da conclusão do anterior, já que os processos são enfileirados e gerenciados pelo 
escalonador de processos. Porém, quando há uma interrupção, o script tem prioridade 
de execução no momento e, após a interrupção, os processos novamente seguirão a 
ordem normal definida pelo escalonador de processos. 
2.3 Memória interna 
O ideal para todo desenvolvedor de software (e embora eles não saibam, mas para os 
usuários modernos também) seria que os computadores tivessem uma quantidade 
infinita de espaço de armazenamento, com alta velocidade, de maneira não volátil e a 
um custo baixo. Porém, juntar todas essas características em apenas um tipo de 
memória é algo utópico (TANENBAUM, 2016). Para compensar essa impossibilidade de 
ideal, os sistemas operacionais gerenciam hardwares que possuem o que pode ser 
chamado de memória hierárquica, onde existem diferentes tipos de memória, sendo 
cada tipo de memória responsável por um tipo de armazenamento diferente. 
Como maneira de segmentar as memórias pertencentes a um computador atual, 
podemos dividir em memória cache, na qual cabem apenas alguns poucos megabytes 
(um processador Intel® Core™ i7-3770 de 3.9 Ghz de processamento, por exemplo, 
possui apenas 8 MB de cache), porém, é uma memória de altíssimo custo e com 
velocidade de leitura e gravação grande. Esse tipo de memória normalmente fica no 
processador, sendo a responsável por armazenar os dados que serão processados 
imediatamente. 
 
25 
 
O segundo tipo de memória que podemos citar é a memória principal. Nessa memória 
ficam armazenados os dados voláteis, ou seja, aqueles que serão apagados ao término 
da execução dos programas ou ao desligar o computador. Essa memória também pode 
ser chamada de RAM (do inglês Random Access Memory, em português seria memória 
de acesso aleatório) e, normalmente, tem alguns gigabytes de capacidade de 
armazenamento. 
Outro tipo de memória que normalmente encontramos nos computadores é a 
memória secundária, na qual atualmente chegamos a alguns terabytes de 
armazenamento. Essa memória é onde armazenamos maiores volumes de dados de 
maneira não volátil, sendo que, ao desligarmos o computador ou ao terminarmos a 
execução de algum programa, o que for armazenado nessa memória não irá sumir 
automaticamente. Essa memória depende de comandos específicos do usuário, para 
que seus dados sejam alterados ou apagados, e normalmente ela é utilizada no HD 
(hard disk) do computador. 
A memória RAM é a parte do computador que irá alocar o conteúdo que está em 
execução no momento. Essa é a memória que se comunicará com o processador. Para 
que possa acontecer o escalonamento de processos, o conteúdo e os programas que 
estejam no estado de “pronto” ou “bloqueado” serão guardados na memória principal 
(RAM). Por esse motivo, quando um computador está com lentidão ao executar os 
aplicativos, é comum recomendar que se aumente a sua memória – justamente a 
primária, pois, quanto mais memória RAM tivermos, maior a quantidade de conteúdos 
executados simultaneamente. Lembrando sempre que, nesses casos, ainda é 
necessário verificar a limitação do processador. 
Embora a memória RAM não seja tão rápida quanto a memória cache, ela é muito 
mais rápida do que a memória secundária. Em geral, a memória RAM fica próxima ao 
processador para facilitar a troca de dados entre eles. 
 
 
 
26 
 
Ao calcular o preço do byte (por exemplo, dividindo o preço total da peça pela 
quantidade de bytes que tem), o custo da memória principal é intermediário entre o 
HD e a memória cache, o que possibilita colocar uma quantidade razoável de memória 
primária no computador; a quantidade de memória cache, por seu valor, é 
pouquíssima; e a quantidade de memória secundária é grande. 
A memória principal é conhecida como memória de acesso aleatório (RAM, do inglês 
Random Access Memory), pois um programa carregado nela pode ser armazenado em 
qualquer parte, sendo possível fazer sua leitura e gravação de maneira aleatória a 
qualquer momento, não havendo a necessidade de alocação dos dados em alguma 
parte específica. 
A velocidade da memória principal é boa, mas, em geral, com baixa capacidade de 
armazenamento. Dentre outros motivos, a memória principal tem baixa capacidade de 
armazenamento pelo seu elevado custo por byte. Em uma configuração padrão de 
computadores pessoais, um equipamento possui em torno de 4 ou 8 Gigabytes de 
memória principal. Essa quantidade de memória é muito baixa, às vezes o próprio 
sistema operacional pode ocupar mais espaço de armazenamento do que isso. 
Nesse momento, nossa hierarquia de memória entra em ação, pois a memória 
principal é utilizada somente para armazenamento de dados que estão sendo usados 
no momento, onde há maior necessidade de velocidade para enviar o conteúdo ao 
processador, porém, para armazenamentos não voláteis. Ou seja, quando os dados 
precisam continuar armazenados, mesmo não sendo utilizados e guardados por tempo 
indeterminado, fazemos uso da memória secundária. 
A memória secundária mais conhecida para computadores pessoais é o HD (do inglês 
Hard Disk). Esse componente de nossos computadores é onde o sistema operacional 
irá armazenar todo o conteúdo permanente, que só será removido caso haja alguma 
instrução por parte do usuário, ou algum software faça essa solicitação. 
 
 
 
27 
 
Diferente da memória primária, o custo de um byte da secundária costuma ter um 
valor muito baixo, e sua velocidade de leitura e escrita também é muito inferior à 
velocidade da memória principal. Um computador de uso pessoal padrão hoje em dia 
costuma ter algo entre 500 GB a 2 TB de armazenamento para conteúdo não volátil. 
Para que tenhamos ideia da necessidade de espaço de armazenamento de uma 
memória secundária, para armazenarmos um filme com qualidade full HD, precisamos 
de aproximadamente 4,7 Gigabytes de espaço disponível em nossa memória, que 
estará ocupado o tempo todo, independente do filme estar sendo assistido no 
momento ou não, pois essa memória é não volátil. 
Outro fator relevante nessa memória é sua velocidade que, computacionalmente 
falando, costuma ser muito lenta. Embora hoje em dia existam Hard Disks do tipo SSD 
que dispensam a leitura mecânica dos dados, a grande maioria ainda são os HDs que 
possuem um disco com agulhas para efetuar a leitura e gravação magnética do 
conteúdo. Esse processo de movimentação do disco e movimentação da agulha é 
muito mais demorado do que o simples processo de transferência de pulsos elétricos 
dentro de um chip. 
A memória principal armazena dados voláteis e os que estão em sendo utilizados no 
momento. Logo, de uma maneira geral, temos a necessidade de armazenamentos 
menores. Porém, como essa memória tem comunicação com o processador, tem a 
necessidade de maior velocidade. Mas mesmo com a tecnologia tendo evoluído nos 
últimos anos e a capacidade de armazenamento da memória principal tendo 
aumentado bastante, os softwares cresceram mais ainda. Por esse motivo muitas 
vezes somente a memória RAM não é capaz de armazenar todo o conteúdo que está 
aberto no computador no mesmo momento. 
Para resolver o problema de haver necessidadede mais memória RAM do que o que 
tem instalado no computador, os sistemas operacionais modernos adotam um 
conceito de memória virtual. Esse conceito consiste em usar parte da memória 
secundária como memória principal. Ou seja, o conteúdo que foi iniciado, mas não 
está em uso exatamente naquele momento, pode ser guardado no HD caso a memória 
principal esteja quase toda sendo utilizada por outros processos. 
 
28 
 
Com isso, é possível manter a execução de todos os conteúdos simultâneos, porém 
com grande perda de desempenho, pois a velocidade de leitura e gravação da 
memória secundária é muito menor do que a da memória principal. Entretanto, essa 
técnica só é utilizada quando a memória principal está quase toda ocupada e, se 
acontecer com frequência, provavelmente o hardware do computador deve ser 
alterado, colocando mais memória principal. 
Como mencionado anteriormente, o ideal seria que todos os computadores 
possuíssem uma quantidade ilimitada de memória, com alta velocidade, de maneira 
não volátil e a um baixo custo. Mas isso não é possível mesmo com a tecnologia atual, 
e, para contornar esse problema e possibilitar múltiplas ações por um mesmo 
equipamento, os sistemas operacionais adotam uma hierarquia de memórias. 
Essa hierarquia permite que cada necessidade de memória tenha uma tecnologia 
diferente para que possa atendê-la. Onde é necessário ter memória mais rápida, tem-
se menos memória; onde se precisa mais memória, adota-se uma memória 
economicamente mais viável, tornando possível, com isso, ter um sistema com muita 
memória e com memórias rápidas, mas cada uma delas fazendo o seu papel. 
2.4 Interfaces de Entrada e Saída 
De acordo com a arquitetura de Von Neumann, um computador deve ter a capacidade 
de armazenar dados e instruções que serão executadas em memória, para realização 
de tarefas futuras. Esse pensamento foi proposto em 1946 para substituir o então 
modelo que só processava os dados passados no momento. Com isso, todos os dados 
são armazenados na memória e depois enviados à CPU, então o usuário irá obter os 
resultados de acordo com as instruções recebidas. Porém, todos esses dados precisam 
ser inseridos na memória de alguma forma, e todo o resultado do processamento 
também precisa ser apresentado ao usuário. Para isso, são utilizados os periféricos de 
entrada e saída. 
 
 
 
29 
 
Os periféricos de entrada e saída são interfaces para a troca de mensagens entre o 
homem e a máquina. Podemos definir interface como sendo um ponto de contato 
entre os dois, artefato que permite o ser humano transmitir dados para o computador 
de uma maneira que seja interpretável pela máquina e vice e versa. Para o 
computador, a letra “A” não é interpretada como para nós, seres humanos; enquanto 
enxergamos um desenho convencionado com o som de A, para o computador a 
mesma letra é uma sequência de pulsos elétricos que poderia ser representada em 
binário por 01000001 (letra A maiúsculo em binário). Porém, devido às nossas 
interfaces, podemos apertar uma letra no teclado, passar tal instrução para o 
computador, ele interpretar e retornar no monitor o desenho da letra que estamos 
acostumados a enxergar, por isso dizemos que tanto o teclado como o monitor são 
interfaces para troca de dados entre homem e máquina. 
Os elementos que têm a função de receber ou transmitir dados em um computador 
são chamados de dispositivos ou periféricos de entrada e saída. Esse tipo de periférico 
compõe um subsistema computacional chamada subsistema de entra e saída, que 
muitas vezes pode ser abreviado para E/S, ou do inglês I/O (Input and Output). É, 
portanto, muito comum encontrar em especificações técnicas uma unidade de medida 
chamada taxa de I/O, onde indica a capacidade de entrada e saída de dados de 
determinado periférico. Essa unidade de medida é uma das principais características a 
ser observada em um HD. 
Os periféricos de entrada e saída podem ser divididos em duas categorias, dispositivos 
de entrada e dispositivos de saída, porém existem alguns dispositivos que ficam nas 
duas categorias, simultaneamente. 
Como exemplo de dispositivos de entrada temos o teclado, que citamos 
anteriormente, em que ao apertar um botão ele transmite informações ao 
computador, permitindo-o interpretá-las. Outro exemplo de periférico de entrada é o 
microfone, onde podemos enviar informações de áudio para o computador e 
posteriormente até tratá-las. Ou seja, qualquer equipamento que tenha a capacidade 
de receber dados e os transmitir para o computador são periféricos de entrada. 
 
30 
 
Um exemplo que podemos citar de periférico de saída é o monitor, no qual o 
computador converte as instruções binárias processadas pela CPU em formas visuais 
interpretáveis pelos seres humanos e repassa ao monitor, mostrando imagens. Outro 
exemplo muito tradicional de periférico de saída seria a impressora, que através de 
tinta em um papel envia informações do computador para o ser humano. Podemos 
considerar como periférico de saída qualquer equipamento que tenha a função de 
transmitir dados do computador para os seus usuários. 
Conforme citado, também existem alguns equipamentos que são periféricos tanto de 
entrada quanto de saída, nessa categoria temos algumas unidades de armazenamento, 
como HD ou mesmo pen drive. Esses dispositivos podem receber e enviar dados ao 
computador, não se limitando apenas à entrada ou saída dos dados. Componentes 
como esse têm como principal unidade de medida a taxa de transferência de dados. 
Os dados trocados entre os periféricos de entrada e saída podem ser transmitidos de 
maneira serial ou paralela. Uma interface de comunicação serial faz o envio de cada bit 
de maneira sequencial, ou seja, envia um bit de cada vez através do canal de 
comunicação. Esse é o principal método utilizado para comunicações de longa 
distância, como nas comunicações de redes de computadores, devido ao fato de 
reduzir custos com cabeamento e menor dificuldade em relação a sincronização dos 
bits transmitidos. 
Outra característica da transmissão serial é poder ser síncrona ou assíncrona. 
A primeira acontece de maneira em que os bits são enviados de maneira contínua e 
em um intervalo de tempo fixo, não havendo espaços maiores ou menores entre o 
enviado de cada bit. Caso o emissor não tenha dados para transmitir, serão enviados 
bits especiais que serão desconsiderados no receptor, mas não irá parar enviar os 
dados em um tempo fixo. Já na assíncrona, os dados serão enviados conforme a 
demanda, tendo intervalos diferenciados para o enviado de cada bit. 
Já em uma interface paralela é possível enviar muitos bits simultaneamente, porém há 
necessidade de cabos com muitas vias e é preciso sempre manter o sincronismo para 
evitar o envio redundante de dados. 
 
31 
 
2.5 Barramentos 
Um computador é composto por diversos componentes, e de uma maneira geral há 
intercomunicação entre eles. Por exemplo, todos os dados de todas as partes de um 
computador precisam passar pelo processador. Também há casos em que a parte 
gráfica de um computador pode ser processada em uma placa de vídeo que possui 
processador próprio e entregará dados já pré-processados. Além disso, as diferentes 
memórias trocam dados constantemente para poder manter a hierarquia necessária. 
 
 
 
 
 
 
Fonte: elaborado pelo autor. 
Figura 2.3 – Esquema de comunicação dos componentes sem e com barramento. 
Mas para tantos componentes diferentes poderem transmitir informações um para o 
outro, é necessário que todos estejam interligados de alguma maneira e, para isso, 
existem os barramentos. O barramento é um conjunto de linhas de comunicação que 
permitem a interligação entre os diversos componentes do computador por meio de 
um caminho único. Em vez de ligar um componente diretamente ao outro, o que iria 
gerar um número muito grande de interconexões, todos os componentes são ligados 
ao barramentoe as mensagens trocadas por essa via. 
Componente 1 
Componente 3 
Componente 2 
Componente 4 
Se não houvesse barramento Com barramento 
Componente 1 
Componente 3 
Componente 2 
Componente 4 
 
32 
 
 
Figura 2.4 – Placa mãe. 
Ao olharmos a imagem de uma placa mãe, podemos perceber que existem alguns 
espaços para ligar mais componentes, como placas de memórias, vídeo e até a fonte 
de alimentação. Esses espaços são conhecidos por slot, os responsáveis por conectar 
os novos componentes ao barramento central da placa mãe e realizar a troca de 
informações necessárias entre cada parte. Além destes, a própria placa mãe já vem 
com muito componentes inseridos nela, chamados de onboard, e os componentes que 
são colocados posteriormente são chamados de offboard. 
Os barramentos são divididos em barramentos internos e de extensão, os barramentos 
internos são os que permitem a comunicação dos componentes onboard da placa e 
suas estruturas principais, como comunicação entre memória e processador. Já os 
barramentos de extensão são os que possibilitam a inserção de novos componentes 
por meio dos slots. 
 
 
 
33 
 
Conclusão 
Neste bloco, conhecemos os principais componentes de um computador e como eles 
trocam informações entre si. Para isso, foi apresentado o que é um processador e cada 
um dos componentes que o constituem. Também vimos que existe mais de um tipo de 
memória dentro do computador, e as vantagens e desvantagens de cada tipo de 
memória, como a velocidade de gravação e leitura e o custo para sua utilização. 
Conhecemos também os dispositivos de entrada e saída, falamos sobre os 
barramentos e como eles ajudam a comunicação interna da placa mãe de um 
computador. 
 
REFERÊNCIAS 
MONTEIRO, M. Introdução à Organização de Computadores. Rio de Janeiro: 
LTC, 5. ed. 2010. 
PAIXÃO, R. R. Arquitetura de Computadores – PCs. São Paulo: Érica, 2014. 
TANENBAUM, A. S. Sistemas Operacionais Modernos. São Paulo: Pearson, 4. ed. 2016. 
 
 
34 
 
 
3 ARQUITETURAS DE COMPUTADORES BÁSICAS E AVANÇADAS 
Neste bloco, vamos discutir os modelos avançados para processamento de 
informação. Também entenderemos as técnicas básicas de multiprocessamento e 
como elas são utilizadas no mercado de computadores atuais. Em posse desse 
conhecimento básico, vamos discutir os modelos avançados e como os 
supercomputadores atuais fazem uso dessa técnica para aumentar exponencialmente 
o seu poder de processamento. Além disso, vamos analisar as formas como 
multiprocessamento pode ser implementado e traremos algumas noções sobre 
computação distribuída. Vamos lá? 
3.1 Conceituação de multiprocessamento simétrico e assimétrico 
Ao analisarmos a história da arquitetura de computadores, podemos ver que houve 
grandes mudanças nos conceitos de utilização dos computadores e em suas 
especificações técnicas. Cálculos que eram efetuados em dias nos supercomputadores 
da década de 1950, podem ser realizados em segundos em qualquer computador 
moderno (MACHADO & MAIA, 2017). Porém, mesmo com toda essa evolução, os 
computadores atuais ainda têm suas limitações, principalmente com relação a 
processamento. 
Nos dias atuais, o processamento ainda é o maior gargalo que se tem na computação. 
É muito mais comum encontrar problemas que esbarram na falta de poder de 
processamento do que em outros aspectos, como, por exemplo, o armazenamento de 
dados. Fatores como armazenamento de dados ou até mesmo consumo de energia 
elétrica são contornáveis quando nos referimos a supercomputadores, mas o 
processamento tem algumas limitações que iremos discutir mais adiante. 
Com a evolução dos processadores, foi possível aumentar muito a velocidade de 
processamento de cada chip, porém ainda temos limitações. Um famoso processador 
da década de 1980 foi o Intel 386 – em sua versão de lançamento, tinha velocidade de 
12 MHz, o que, para a época, era uma revolução um processador comercial com 
tamanha velocidade. 
 
35 
 
Para que possamos entender um pouco melhor o tamanho da evolução e das 
limitações que ainda temos, é necessário conhecer a unidade de medida que 
utilizaremos para comparar os núcleos de processamento. Essa unidade é o Hertz (Hz), 
cuja função é medir eventos por segundo. Como as outras unidades de medida 
utilizadas na computação, essa também faz uso frequente das abreviações para indicar 
múltiplo. Então, se quisermos nos referir a 1000 Hz, podemos utilizar o múltiplo 
quilohertz, que abreviado fica KHz; em caso de 1000 Khz, temos 1 MHz; para 1000 
MHz, temos 1 GHz e assim por diante. 
Voltando ao processador Intel 386, este tinha uma arquitetura de 32 bits, o qual indica 
que cada instrução que era recebida em seu ciclo de processamento tinha o tamanho 
de 32 bits. Já um processador de 64 bits recebe uma instrução com o dobro de 
tamanho do Intel 386. 
Uma curiosidade interessante sobre essas duas diferentes arquiteturas de 
processadores: na computação pessoal, em especial no Brasil, a arquitetura de 32 bits 
foi amplamente utilizada até por volta de 2014, devido aos recursos tecnológicos e à 
necessidade de migração de vários sistemas, porém o vídeo game Nintendo 64, 
lançado em 1996, levava esse nome por seu processador ser de 64 bits e clock de 93 
MHz. Isso mostra como a migração de arquitetura de computadores é mais complexa 
para computadores que possuem sistemas utilizados por muitos usuários 
diversificados. 
Agora, comparando o processador Intel 386 a um processador mais atual, podemos 
usar como referência o Intel Core i9-10900KF, que possui velocidade máxima de 5,3 
GHz (quase 4417 vezes mais rápido que o Intel 386 da década de 1980), e arquitetura 
de 64 bits. Isso quer dizer que esse processador tem capacidade máxima de execução 
de 5.300.000.000 instruções de 64 bits por segundo em cada núcleo, sem utilizar uma 
técnica de aumento de desempenho chamada overclock. 
Em uma busca rápida pela internet, é possível encontrar diversos vídeos de pessoas 
realizando overclock em seus processadores. Essa técnica é utilizada para forçar o 
processador a trabalhar em uma frequência acima da qual ele foi projetado para 
suportar. Alguns vídeos mostram processadores indo além dos 7 GHz, porém, isso 
 
36 
 
exige um sistema de resfriamento muito avançado, normalmente à base de nitrogênio 
líquido, para que o processador não queime. Um clock muito alto em apenas um 
núcleo do processador leva a temperaturas altíssimas, o que gera um limitador de 
velocidade nos processadores modernos. 
Como forma de contornar essa limitação de velocidade dos processadores modernos, 
o que se fez para aumentar a velocidade dos processadores foi a inserção de mais 
núcleos de processamento dentro do mesmo processador. O processador Intel Core 
i9-10900KF, citado anteriormente, possui 10 núcleos de processamento, o que lhe 
permite a execução de diversas tarefas simultaneamente a uma velocidade máxima. 
Com isso, introduzimos o conceito de multiprocessamento! 
Um computador pode processar diversas tarefas simultaneamente, ou mesmo dividir 
uma tarefa maior em pequenas tarefas menores, e enviar cada uma dessas tarefas 
para um processador diferente. Dessa forma, é possível aumentar o poder de 
processamento sem ter que aumentar de maneira exagerada o clock de cada núcleo. 
Essa divisão pode acontecer em um mesmo processador com vários núcleos ou 
dividindo em vários processadores diferentes, e cada um deles com vários núcleos. 
Quando utilizamos vários processadores distintos, a conexão entre eles pode ser 
denominada como fortemente acoplada ou fracamente acoplada (Tanenbaum, 2016). 
A fortemente acoplada é quando a ligação entre os processadores é feita por meio de 
barramento; e a fracamente acoplada é quando a ligação entre os diversos 
processadores é feita por rede de computadores. 
 
Figura 3.1 – Tipos de processadores 
 
37 
 
Outra característica é se a estratégia utilizada para realizaro multiprocessamento é 
simétrico ou assimétrico. Em um sistema simétrico, todos os processadores são de 
mesma arquitetura e compartilham a memória; já em multiprocessamento 
assimétrico, cada processador tem sua própria memória e pode ser de arquiteturas 
diferentes. 
3.2 Multiprocessadores de memória compartilhada 
O multiprocessamento permite aumentar bastante a capacidade de processamento 
dos computadores. Os supercomputadores são todos feitos por meio da junção de 
diversos processadores e organizados de maneira a resolverem tarefas em conjunto. 
Existe um projeto que reúne uma lista dos 500 supercomputadores mais poderosos do 
mundo. Essa lista pode ser conferida no site TOP 500 (vide referências). Confira a lista 
abaixo com os 5 supercomputadores mais potentes do mundo em novembro de 2020. 
 
Fonte: TOP 500, 2020. 
Figura 3.2 – Os 5 supercomputadores mais potentes do mundo 
(até novembro de 2020). 
 
38 
 
Nela, são apresentadas diversas características dos supercomputadores, das quais 
podemos destacar algumas, como o nome do supercomputador, a nacionalidade, o 
modelo do processador com clock de cada núcleo e a placa de vídeo utilizada. Porém, 
o que nos é mais interessante neste momento é reparar na quantidade de “Cores” 
(traduzindo do inglês, quer dizer núcleos), que cada supercomputador possui. 
O primeiro supercomputador da lista (Supercomputer Fugaku) tem 7.630.848 núcleos, 
que trabalham em conjunto para entregar uma capacidade de 442.010,0 TFlop/s, 
podendo teoricamente chegar a 537.212,0 TFlop/s em momentos de pico; em 
contrapartida, consome 29.899 kW de energia para funcionar. A unidade de medida 
TFlop/s indica quantas operações com pontos flutuantes o equipamento consegue 
realizar por segundo. Um Flop/s (acrônimo para floating point operations per second) 
indica que pode ser realizado uma operação de pontos flutuantes por segundo. 
Portanto, se 1 KFlop/s são 1000 Flop/s, então 1 TFlop/s é 1.000.000.000.000 Flop/s. 
Para efeito de comparativo, o processador Intel Core i9-10900KF tem capacidade de 
processamento de 1,696.0 GFlop/s. 
Quando nos referimos a computadores com diversos processadores e que trabalham 
em conjunto para realizar as tarefas, estamos falando em processamento simétrico e 
assimétrico. No caso de processamento simétrico, todos os processadores devem ser 
iguais e trabalhar de maneira igualitária, não possuindo um processador mestre e 
outros escravos (normalmente encontra-se na literatura com os termos em inglês 
master = mestre e slave = escravo). 
Esse modelo de processamento exige que todos os processadores tenham acesso 
direto a mesma memória, além de todos poderem receber demandas do próprio 
Sistema Operacional. O programador que utilizar computadores com essa estratégia 
de multiprocessamento terá que tomar cuidados específicos para que seu software 
não permita que um mesmo processo vá para processadores distintos, pois nesse 
modelo isso pode ocorrer. 
Como não há nenhum processador checando o que os outros processadores estão 
recebendo, a programação para esse tipo de multiprocessamento precisa de cuidados 
especiais (MONTEIRO, 2010). Porém, tem como vantagem um melhor balanceamento 
 
39 
 
de carga entre os processadores, evitando a sobrecarga de um dos processadores 
enquanto outro fica ocioso. Com essa estratégia, também é possível adotar uma fila de 
processos comum entre todos os processadores, em que o escalonamento é feito 
direto do sistema operacional para o processador disponível no momento da 
requisição. 
Além do multiprocessamento simétrico, ou multiprocessamento de memória 
compartilhada, existe o multiprocessamento assimétrico. No multiprocessamento 
assimétrico também é possível dividir tarefas entre diversos processadores, porém 
cada processador terá sua própria memória e cada um pode ser de um modelo 
diferente, não havendo compartilhamento de memória entre eles. A principal 
característica que diferencia os processadores é o fato de possuir apenas um 
processador mestre e todos os outros processadores serem escravos; logo, o único 
que terá acesso ao sistema operacional será o processador mestre, o qual será 
responsável pela distribuição das tarefas a cada um dos processadores escravos. 
 
Figura 3.3 – Multiprocessamento Assimétrico. 
Outra diferença do multiprocessamento com compartilhamento de memória 
(simétrico) em relação ao multiprocessamento sem memória compartilhada 
(assimétrico) é que, nesse segundo modelo, os processadores não precisam trocar 
informações entre eles; a comunicação será somente entre o processador mestre e os 
escravos, da qual dois processadores escravos nunca irão precisar troca dados. 
 
40 
 
No quesito de tolerância a falhas, caso um processador mestre pare de funcionar, um 
dos processadores escravos irá assumir o lugar dele, e caso algum processador escravo 
pare de funcionar, somente irá sair da fila de escalonamento dos processos que o 
processador mestre gerencia. Outra vantagem do multiprocessamento assimétrico é a 
facilidade em desenvolvimento de sistemas para ele, pois tem um processador mestre 
gerenciando a fila do escalonador de processos. Isso fica transparente ao 
programador, não demandando nenhum controle especial por estar usando 
multiprocessamento. 
3.3 Multicomputadores de troca de mensagens 
Um sistema distribuído é uma coleção de computadores independentes entre si que se 
apresentam ao usuário como um sistema único e coerente. No sistema distribuído, 
diversos computadores independentes entre si são interligados e fornecem serviços de 
uma maneira transparente ao usuário, que não sabe qual (ou quais) dos computadores 
interligados está atendendo a sua solicitação. 
Assim, a computação distribuída consiste em adicionar o poder computacional de 
diversas máquinas interligadas por uma rede de computadores. Essa união tem como 
objetivo compartilhar a execução de tarefas, conhecida como sistema distribuído. 
Para que o sistema seja considerado distribuído, no momento em que um usuário fizer 
qualquer tipo de solicitação, ele não deve passar ou mesmo visualizar o endereço do 
computador que está realizando a tarefa. Isso implica em uma apresentação única ao 
usuário, mostrando uma real distribuição do serviço, a ponto de não ser possível 
identificar qual dos nós está sendo responsável pela requisição. 
Existem vários exemplos de sistemas distribuídos que utilizamos em nosso dia a dia. 
Talvez, entre os mais famosos, estejam os compartilhadores de arquivos do tipo P2P 
(peer to peer). Esse é um modelo famoso e que, em teoria, segue claramente os 
conceitos de sistemas distribuídos. Redes como gnutella2 e eDonkey fazem uso de 
aplicativos para compartilhamento de arquivos entre vários dispositivos distintos e 
independentes, de maneira que, se em algum momento um dos nós falhar, outros 
computadores poderão assumir o seu lugar, e o usuário nem percebe essa alteração. 
 
41 
 
Ao ingressar sua máquina em uma rede do tipo, qualquer pessoa que esteja na rede 
poderá fazer solicitação a sua máquina; igualmente, você poderá fazer solicitação a 
qualquer máquina pertencente à rede, sem necessidade alguma de passar endereços 
específicos ou mesmo saber onde está localizado o nó que está realizando as tarefas 
no momento. 
Outra característica interessante das redes P2P que fazem parte das definições de 
sistemas distribuídos é a heterogeneidade, que independe do sistema operacional 
instalado em cada um dos nós. Estes conseguem ter comunicação e troca de conteúdo 
para realização da tarefa necessária de maneira a desconsiderar o sistema operacional. 
Os nós fazem todas as trocas de mensagens por meio de uma rede de computadores, 
usando uma camada intermediária que podemos chamar de middleware. Essa parte é 
a responsável pela real distribuição das tarefas. 
A denominação de multicomputador é aplicada a sistemas distribuídos que são 
compostospor processadores com suas próprias memórias. Isso possibilita que o 
sistema distribuído seja de fácil escalabilidade. O fato de cada processador do 
multicomputador possuir memória própria faz com que nenhum processador precise 
acessar endereçamentos de memória compartilhados com outros processadores; mas, 
para garantir o sincronismo entre todos, é feita a comunicação interna do sistema por 
meio de troca de mensagens, aumentando a robustez do sistema como um todo e 
melhorando a tolerância a falhas, o que facilita uma computação de alto desempenho 
e alta disponibilidade. 
O hardware necessário para montar um multicomputador pode ser simples, 
necessitando apenas de processadores, memórias e uma interface de rede para 
realizar a conexão entre todos os equipamentos. Com isso, os custos de montagem do 
sistema são reduzidos e se permite adição de mais poder de processamento sempre 
que necessário. 
Existem diversas tecnologias para interconexão dos computadores ligados ao sistema 
de multicomputadores, como se pode conferir na figura abaixo (TANEMBAUM, 2016): 
 
42 
 
 
Fonte: TANENBAUM, 2016. 
Figura 3.4 – Tecnologias para interconexão dos computadores ligados ao sistema de 
multicomputadores. 
a) Um comutador simples: topologia em que todos os computadores do 
multicomputador se ligam a apenas um equipamento (por exemplo, um switch) 
e trocam mensagens entre eles. 
b) Um anel simples: cada computador tem dois fios conectados, um que o liga ao 
computador da esquerda e outro que o liga ao computador da direita; não 
precisa de nenhum equipamento específico para realizar a interconexão, possui 
baixa tolerância a falhas. 
c) Uma grade: também chamada de malha, tem a vantagem da distância máxima 
entre dois computadores ser a raiz quadrada da quantidade de computadores 
na rede; possui boa tolerância a falhas. 
d) Um toro duplo: uma variação da grade, sendo uma topologia bem parecida, 
porém com ligação entre as margens, o que diminui ainda mais a distância 
máxima entre os computadores e aumenta mais ainda a tolerância a falhas. 
 
43 
 
e) Um cubo: uma topologia tridimensional, com custo de implantação elevado, 
mas com alta tolerância a falhas. 
f) Um hipercubo 4D: um cubo tetradimensional constituído por dois cubos 
tridimensionais, com os nós correspondentes conectados. 
Cada uma das topologias tem suas características positivas e negativas mas, de forma 
geral, quanto maior a tolerância a falhas e maior o desempenho na troca de 
mensagens, maior o custo também. 
3.4 Introdução ao processamento paralelo 
Nos computadores modernos é possível processar diversos programas 
simultaneamente, havendo apenas um processador ou vários processadores. Porém, 
se houver apenas um processador, terão que ser adotadas estratégias especiais para 
isso dar certo, não permitindo processamento paralelo, mas somente concorrente. A 
principal estratégia para processar diversos programas simultaneamente é a divisão 
em processos. 
O processo é uma abstração do programa em execução, que permite a capacidade de 
pseudoparalelismo na execução de diversas tarefas ao mesmo tempo, ainda havendo 
apenas uma CPU. 
Essa característica de um ambiente permitir a execução de múltiplos processos ao 
mesmo tempo é chamada de multiprogramação. Em um ambiente multiprogramado, o 
sistema operacional chaveia o processo que está na CPU a todo o momento, ou seja, 
efetua a troca do processo, disponibilizando algumas dezenas de milissegundos de 
processamento a cada programa em execução, de modo que nenhum processo fique 
sem ter sua necessidade atendida. 
Devido ao fato de cada processo ficar apenas alguns milissegundos na CPU e depois 
entrar outro processo, dizemos que é um pseudoparalelismo, isto é, não se executam 
diversos processos paralelos na CPU, mas há uma troca rápida do processo que está 
sendo executado no momento, gerando a sensação de que vários processos estão em 
execução simultaneamente. No entanto, o paralelismo real só pode ocorrer em 
 
44 
 
sistemas distribuídos que possuam diversos processadores que trabalhem em 
conjunto de forma transparente para o usuário, sendo que cada processador ficará 
responsável por um processo diferente por um determinado tempo. 
O modelo de dividir uma mesma CPU entre vários processos, de maneira que cada 
processo entende ter uma CPU exclusivamente sua, mas na verdade o processador é 
dividido em diversas CPUs virtuais, é conhecido como modelo de processos 
sequenciais. Os projetistas de sistemas operacionais modernos utilizam dessa técnica 
para poderem implementar ambientes multiprogramados. 
Para que seja possível vários processos dividirem o mesmo processador, cada processo 
tem fluxo de controle de processo, ou seja, seu próprio contador de programa lógico 
independente dos outros processos. A CPU também tem um contador de programa 
físico, que será utilizado por todos os processos que passarem por ela. Então, a cada 
vez que um processo entra na CPU, ele é processado por determinado tempo; o 
processador faz sua contagem no contador de programa físico e, quando acabar o 
tempo desse processo a ser executado, ele sairá do processamento. 
Porém, seu contador de programa físico será atualizado para a posição na qual o 
contador de programa físico estava no momento da saída do processo. Por sua vez, 
quando o próximo processo entrar em execução, a CPU iniciará seu contador de 
programa físico a partir do contador de programa lógico do processo, dando 
continuidade exatamente de onde ele estava quando saiu do processamento da última 
vez, possibilitando que todos os processos possam entrar e sair do processador sem 
que haja perda ou reprocessamento de qualquer instrução a ser executada pelo 
programa. Com isso, é gerado um ambiente de processamento concorrente. 
Já em um sistema de processamento paralelo, é possível que diversos processos 
estejam em execução exatamente ao mesmo tempo, sem concorrer pelo menos 
processador. Mas, esse modelo exige a utilização de diversos processadores distintos 
para realizar a tarefa, sendo que cada processador irá ficar responsável por um ou 
mais processos; caso ele fique com mais de um, seguirá a mesma estratégia de 
processamento concorrente, porém, só para seus próprios processos, não impedindo o 
paralelismo em relação aos outros processadores. 
 
45 
 
3.5 Tendências tecnológicas no mercado de computadores 
A computação é uma área muito nova se comparada com diversas outras. Na 
administração, são utilizados conceitos que puderam amadurecer por séculos. Na 
matemática e na filosofia, são discutidos problemas que têm milhares de anos. Já na 
computação moderna, temos apenas algumas décadas de estudos, e ainda estamos 
realizando diversos experimentos para identificar quais a melhores soluções para 
determinados casos. 
Algumas soluções vêm se mostrando viáveis para tipos específicos de problemas, o 
que nos leva a crer que serão as tendências a serem seguidas nos próximos anos e, 
provavelmente, nas próximas décadas. Uma das tendências mais fortes de mercado é 
a distribuição do processamento entre vários equipamentos para aumento da 
capacidade dos processadores. Isso não só para realização de tarefas únicas, mas 
principalmente para tarefas distribuídas. 
Com o avanço das tecnologias móveis e portáteis em muitas situações, é mais fácil 
utilizar dezenas de pequenos processadores em vez de um supercomputador. Além do 
avanço dos computadores, as redes para transmissão de mensagens também 
evoluíram muito; o protocolo LTE (também conhecido como 4G), de redes móveis de 
comunicação, tem potencial para velocidade máxima de 100 Mbps. 
Considerando esses avanços na arquitetura de computadores e nas redes de 
comunicação, é possível identificar uma tendência das coisas, cada vez mais, 
começarem a ter seus próprios processadores e seu próprio acesso à internet. Esse 
modelo é chamado de internet das coisas (IoT,

Continue navegando