Buscar

08 Arquitetura de computador software

Prévia do material em texto

115
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Capítulo 8
Arquitetura de 
computador 
– software
Anteriormente, compreendemos a arquitetura computacional foca-
da no hardware, entendemos como os dispositivos físicos funcionam e 
interagem entre si. Dando continuidade ao assunto, neste capítulo, abor-
daremos a arquitetura do computador com foco no software, ou seja, a 
parte inteligente que trabalha sobre a parte física da máquina. 
O sistema operacional (SO) é o software mais importante e responsá-
vel por fornecer aos programas do usuário um modelo de computador 
melhor, mais simples e mais limpo. Ele também é responsável por lidar 
com o gerenciamento de todos os recursos de hardware disponíveis, 
como impressora, mouse, memória RAM, entre outros (TANENBAUM; 
BOS, 2016). Além desse tema, abordaremos, também, a função dos 
aplicativos e dos utilitários.
116 Conceitos de computação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.
1 Infraestrutura 
O sistema de computação é composto por hardware e software. O 
hardware refere-se a toda a parte física, ou seja, a parte real de um sis-
tema de computação. Podemos citar alguns itens que fazem parte do 
hardware, como: CPU, memória, impressora, cabos de rede, monitor, en-
tre outros. Já o software existe para que o hardware execute o que foi 
determinado pelo usuário. Ele faz a abstração do acesso ao hardware 
para o usuário. Dessa forma, o sistema operacional faz com que o aces-
so ao hardware ocorra de maneira mais fácil, sem que o usuário precise 
de conhecimentos avançados de eletrônica ou programação para utili-
zar um recurso computacional simples, como a gravação de um arquivo 
em disco ou o acesso a uma página de internet. Alguns exemplos de 
softwares são: compiladores, editores de texto, planilhas eletrônicas, 
navegadores web, etc.
Resumindo, o que dá vida ao hardware é o software executado 
sobre ele.
Os componentes de um sistema operacional podem ser separados 
de acordo com a hierarquia apresentada na figura 1.
Figura 1 – Componentes de um sistema operacional
Programas de aplicação
(aplicativos)
Utilitários
Sistema operacional
Hardware
117Arquitetura de computador – software
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Alguns sistemas operacionais conhecidos são: Windows, Linux, 
FreeBSD e OS X. O programa com o qual os usuários interagem é co-
nhecido como shell (ou interpretador de comandos), quando é baseado 
em texto, ou GUI (graphical user interface), quando sua interface contém 
imagens como ícones.
A figura 2 apresenta, de forma simplificada, a organização dos princi-
pais componentes de um computador, onde o hardware está localizado 
na base. Ele consiste em chips, placas, discos, um teclado, um monitor 
e objetos físicos similares. Logo após o hardware, está o software. A 
maioria dos computadores tem dois modos de operação: modo núcleo 
e modo usuário. O sistema operacional, a peça mais fundamental de 
software, opera em modo núcleo ou modo supervisor (TANENBAUM; 
BOS, 2016). No modo núcleo, o SO tem acesso a todo o hardware e 
pode executar qualquer instrução recebida conforme a capacidade de 
execução da máquina. O software opera no modo usuário, no qual ape-
nas alguns subconjuntos de instruções estão disponíveis. Operações 
que façam aceso a dispositivos de entrada e saída (E/S), por exemplo, 
só podem ser executadas pelo SO, evitando, assim, que execuções erra-
das sejam realizadas, causando problemas na parte física.
Figura 2 – Organização dos principais componentes de um computador
Browser Player de vídeo Editor de texto
Programa de interface com o usuário
Sistema operacional
Hardware
Modo usuário
Software
Hardware
Modo núcleo
{{
Fonte: adaptado de Tanenbaum e Bos (2016, p. 15).
118 Conceitos de computação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.
Segundo Tanenbaum e Bos (2016), o programa de interface com o 
usuário, shell ou GUI, aparece no nível mais inferior de software de modo 
usuário e permite que ele inicie outros programas, como um navegador 
web, um player de vídeo ou um editor de texto. Esses programas também 
utilizam bastante o sistema operacional. Os sistemas operacionais não 
são diferentes dos programas de usuários, apenas com relação à sua loca-
lidade. Em particular, eles são enormes, complexos e têm vida longa. 
PARA SABER MAIS 
Quantos livros seriam necessários para conter o código de um sistema 
operacional?
O código-fonte de um SO como Linux ou Windows tem cerca de 5 milhões 
de linhas de código. Para ter ideia do tamanho, imagine imprimir 5 milhões de 
linhas em formato de livro, com 50 linhas por página e 1.000 páginas por vo-
lume. Para imprimir toda a informação, seriam necessários 100 volumes, que 
correspondem a uma estante de livros inteira. 
 
Os principais objetivos do sistema operacional são: 
 • ocultar os detalhes de hardware do usuário;
 • fornecer uma interface gráfica, orientada a arquivos, escondendo 
detalhes relacionados a interrupções, organização do disco rígido 
e demais características associadas ao hardware;
 • gerenciar os recursos de memória, processamento e armazena-
mento de um computador.
Na visão bottom-up (abstração de baixo para cima), a função do sis-
tema operacional é fornecer uma alocação ordenada e controlada do 
processador, da memória e dos dispositivos de E/S entre os vários pro-
gramas competindo por eles. Já na visão top-down (abstração de cima 
para baixo), o SO fornece abstrações para programas aplicativos.
119Arquitetura de computador – software
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Para conseguir realizar o gerenciamento de recursos de hardware, o 
sistema operacional faz uso da multiplexação (compartilhamento) de 
recursos de duas maneiras diferentes: no tempo e no espaço. 
Quando a multiplexação é feita no tempo, diferentes programas ou 
usuários se revezam usando um recurso. Primeiro, um deles usa o re-
curso, então outro, e assim por diante. Por exemplo, imagine um compu-
tador com apenas uma CPU e múltiplos programas sendo executados 
nela. O sistema operacional primeiro aloca a CPU para um programa, 
então, após acabar o tempo de execução, outro programa passa a fazer 
uso da CPU, então outro, e, finalmente, o primeiro de novo. 
Dessa forma, é papel do sistema operacional determinar como o re-
curso é multiplexado no tempo, ou seja, qual será a ordem de execução 
e por quanto tempo cada programa terá o recurso. Outro exemplo da 
multiplexação no tempo é o compartilhamento da impressora. Quando 
vários arquivos são enviados ao mesmo tempo para a mesma saída de 
impressão, eles aguardam na fila para serem impressos, e uma decisão 
tem de ser tomada sobre qual deve ser impresso em seguida.
Na multiplexação de espaço, em vezde acontecer o revezamento 
para utilização dos recursos, cada um tem direito a uma parte do re-
curso. Calculando que há memória suficiente para manter múltiplos 
programas, é mais eficiente manter vários programas na memória ao 
mesmo tempo, cada um utilizando uma parte da memória, do que dar 
a um deles toda ela, principalmente se o programa usará apenas uma 
pequena parte do total, ficando espaço ocioso. É claro que isso gera 
questões de ordem, proteção, e assim por diante, e cabe ao sistema ope-
racional solucioná-las.
Outro recurso que é multiplexado no espaço é o disco. Em muitos 
sistemas, diversos usuários podem fazer uso de um disco ao mesmo 
tempo. O sistema operacional deve alocar espaço em disco e controlar 
quem está usando cada bloco.
120 Conceitos de computação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.
1.1 Tipos de sistemas operacionais
Os sistemas operacionais existem há mais de meio século. Ao longo 
dos anos, uma grande variedade deles foi desenvolvida. Nem todos são 
conhecidos. Vamos conhecer alguns deles. 
1.1.1 Sistemas operacionais de computadores de grande porte
Os computadores de grande porte diferem dos PCs (computado-
res pessoais) em termos de capacidade de E/S. Um computador de 
grande porte com 1.000 discos e milhões de gigabytes de dados não 
é incomum; um computador pessoal com essas especificações é mui-
to raro de se encontrar. Computadores de grande porte são usados 
como servidores sofisticados de web, para sites de comércio eletrônico 
(e-commerce) em larga escala e para transações entre empresas B2B 
(business-to-business) (TANENBAUM; BOS, 2016).
Segundo Tanenbaum e Bos (2016), os sistemas operacionais para 
computadores de grande porte são dirigidos para o processamento 
de muitas tarefas ao mesmo tempo, a maioria delas exigindo quanti-
dades extraordinárias de E/S. Normalmente, eles oferecem três tipos 
de serviços: em lote (batch), processamento de transações e tempo 
compartilhado (timesharing). 
Um sistema em lote processa tarefas sem a necessidade de um 
usuá rio interativo presente. Exemplos de processo em lote podem ser 
observados, como o processamento de apólices em uma companhia 
de seguros ou relatórios de vendas para uma cadeia de lojas.
De acordo com Tanenbaum e Bos (2016), os sistemas de processa-
mento de transações lidam com grandes números de pedidos peque-
nos, por exemplo, processamento de cheques em um banco ou reser-
vas de companhias aéreas. Cada unidade de trabalho é pequena, mas 
o sistema tem de lidar com centenas ou milhares delas por segundo.
121Arquitetura de computador – software
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Já os sistemas de tempo compartilhado permitem que múltiplos 
usuários remotos executem tarefas em um computador ao mesmo 
tempo, por exemplo, a realização de consultas a um banco de dados. 
1.1.2 Sistemas operacionais de servidores
Os servidores são computadores pessoais muito grandes, e o siste-
ma operacional pode ser executado neles, ou em estações de trabalho, 
ou mesmo em computadores de grande porte. Eles atendem a múltiplos 
usuários ao mesmo tempo por meio de uma rede, permitindo que os 
usuários compartilhem recursos de hardware e software. Tipicamente, 
os servidores fornecem serviços de impressão, de arquivo ou de web. 
Eles são usados, também, para prover internet com suporte aos clientes 
e armazenam páginas de sites, atendendo às requisições que chegam. 
Segundo Tanenbaum e Bos (2016), são sistemas operacionais típi-
cos de servidores: Solaris, FreeBSD, Linux e Windows Server 201x.
1.1.3 Sistemas operacionais de multiprocessadores
Com a conexão de múltiplas CPUs a um único sistema, é possível 
obter mais potência computacional. Dependendo de como precisamen-
te eles são conectados e o que é compartilhado, esses sistemas são 
chamados de “computadores paralelos”, “multicomputadores” ou “mul-
tiprocessadores”. Os sistemas operacionais que rodam em computa-
dores com múltiplos processadores normalmente possuem aspectos 
especiais para comunicação, conectividade e consistência de dados. 
Muitos sistemas operacionais populares, incluindo Windows e Linux, 
são executados em multiprocessadores.
1.1.4 Sistemas operacionais de computadores portáteis
Os computadores portáteis, como tablets e smartphones, são co-
nhecidos como PDA (personal digital assistant – assistente pessoal 
122 Conceitos de computação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.
digital), um computador pequeno que pode ser segurado na mão duran-
te seu uso. O sistema operacional que roda nesses dispositivos pode 
ser o Android, da Google, ou o iOS, da Apple. A maioria deles conta com 
CPUs multinúcleo, GPS, câmeras e outros sensores e quantidades gran-
des de memória. São várias as opções de aplicativos (“apps”) disponí-
veis para instalação nesses dispositivos.
1.1.5 Sistemas operacionais embarcados
Sistemas operacionais embarcados não aceitam softwares insta-
lados pelo usuário, e são executados em computadores que contro-
lam dispositivos que não costumam ser vistos como computadores. 
Exemplos típicos são os fornos de micro-ondas, os aparelhos de tele-
visão, os carros, os telefones tradicionais e os MP3 players. A princi-
pal diferença dos sistemas embarcados em comparação aos sistemas 
operacionais de computadores portáteis é a impossibilidade de insta-
lação de aplicativos. Todos os softwares necessários são instalados 
de fábrica e estão na memória ROM (read-only memory – memória 
somente de leitura). Sistemas como Embedded Linux, QNX e VxWorks 
são populares nesse domínio.
1.1.6 Sistemas operacionais de tempo real (real-time operating 
systems – RTOS)
A questão “tempo” é fundamental para sistemas operacionais de 
tempo real. Como exemplo, podemos citar um sistema de controle de 
processo industrial, em que computadores em tempo real devem cole-
tar dados a respeito do processo de produção e usá-los para controlar 
máquinas na fábrica. Para isso, a coleta dos dados deve ser feita em um 
tempo exato, para que não atrase o processo de produção.
Outro exemplo seria de um carro seguindo pela linha de montagem. 
Determinadas ações têm de ocorrer em determinados instantes. Se, por 
123Arquitetura de computador – software
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
acaso, um robô soldador fizer as soldas antes do horário esperado ou 
alguns segundos depois, o carro será arruinado.
Segundo Tanenbaum e Bos (2016), para os casos nos quais a ação 
tem de ocorrer absolutamente em um determinado momento (ou dentro 
de uma dada faixa de tempo), temos um sistema de tempo real crítico.
Diferentemente do cenário apresentado, um sistema de tempo real 
não crítico é aquele em que a não realização de uma operação em um 
horário esperado, mesmo que ocasionalmente, é aceitável e não cau-
sa danos permanentes. Sistemas de multimídia ou áudio digital en-
tram nessa categoria. Smartphones também são sistemas de tempo 
real não críticos.Conforme Tanenbaum e Bos (2016), uma particularidade dos siste-
mas de tempo real e dos embarcados é que os softwares executados 
nesses dispositivos são inseridos apenas pelos projetistas do sistema, 
ou seja, o usuário não tem acesso para instalar nenhum outro software, 
fazendo com que esses sistemas sejam mais protegidos. 
Um exemplo de tipo de sistema de tempo real é o sistema operacio-
nal embarcado configurável (eCos), gratuito e open-source, destinado a 
aplicações embarcadas com requisitos de tempo real e pouca memó-
ria. O eCos pode ser customizado baseado nos requisitos da aplicação.
1.2 Processos
O processo é um conceito fundamental em SO e é basicamente um 
programa em execução. Pode ser entendido também como um con-
têiner que armazena todas as informações necessárias para executar 
um programa.
De acordo com Tanenbaum e Bos (2016), cada processo está liga-
do a um espaço de endereçamento, uma lista de posições de memória 
que vai de 0 a algum número máximo. O processo pode ler e escrever 
124 Conceitos de computação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.
nesse local. Nesse espaço endereçável, estão o programa executável, 
os dados do programa e sua pilha. Associado com cada processo, há 
um conjunto de recursos, em geral, abrangendo registradores (incluindo 
o contador de programa e o ponteiro de pilha), uma lista de arquivos 
abertos, alarmes pendentes, listas de processos relacionados e to-
das as demais informações necessárias para executar um programa 
(TANENBAUM; BOS, 2016).
Os processos são iniciados e, depois de executarem todo o seu tra-
balho, finalizados. Podemos listar quatro eventos responsáveis pela 
criação de processos, conforme apresentado na figura 3.
Figura 3 – Etapas da criação de processos
Inicialização
do sistema
Execução de uma 
chamada de 
sistema de criação 
de processo por 
um processo 
em execução
Solicitação de um
usuário para criar
um novo processo
Início de uma
tarefa em lote
Os processos, em algum momento, são finalizados, normalmente, de-
vido a determinadas condições, como saída normal de forma voluntária, 
erro fatal no processo de forma involuntária, saída por erro de forma vo-
luntária ou morto por outro processo de forma involuntária.
Tanenbaum e Bos (2016) conceituam os estados de um processo da 
seguinte forma:
 • Em execução: realmente usando a CPU naquele instante.
 • Pronto: o processo está em uma lista, pronto para ser executa-
do; em geral, apenas esperando que outro processo acabe sua 
execução.
 • Bloqueado: incapaz de ser executado até que algum evento 
externo aconteça.
125Arquitetura de computador – software
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Na figura 4, encontramos um diagrama referente aos estados de um 
processo, mostrando os três estados nos quais um processo pode se 
encontrar. Na linha 1, o processo é bloqueado, aguardando uma entra-
da. Na linha 2, o escalonador de processos seleciona outro processo 
para ser executado. Na linha 3, o escalonador atribui esse processo ao 
estado em execução. Na linha 4, o processo torna-se disponível para ser 
executado.
Figura 4 – Estados de um processo
Em execução
ProntoBloqueado
2
3
4
1
Fonte: adaptado de Tanenbaum e Bos (2016, p. 64).
Segundo Tanenbaum e Bos (2016), na maioria dos sistemas opera-
cionais, todas as informações que dizem respeito a um processo, fora 
o conteúdo do seu próprio espaço de endereçamento, ficam armaze-
nadas em uma tabela do sistema operacional, chamada de “tabela de 
processos”.
A tabela de processos nada mais é do que um arranjo de estruturas, 
uma para cada processo existente no momento. Desse modo, um pro-
cesso que está suspenso consiste em seu espaço de endereçamento, 
em geral, chamado de “imagem do núcleo”, e em sua entrada na tabela 
de processo, que armazena os conteúdos de seus registradores e mui-
tos outros itens necessários para reiniciar o processo mais tarde, quan-
do este ganhar tempo de processamento novamente.
126 Conceitos de computação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.
As principais chamadas de um sistema de gerenciamento de pro-
cessos são as que lidam com a criação e o término de processos. Para 
exemplificar, imagine que um usuário acabou de digitar um comando, 
usando um interpretador de comandos, requisitando que um programa 
seja compilado. O shell deve criar um novo processo, que vai executar 
o compilador. Quando o processo terminar a compilação, ele executa 
uma chamada de sistema para se autofinalizar.
Um processo pode criar um ou mais processos (chamados de pro-
cessos filhos), e estes também podem criar processos filhos. Assim, 
chegamos à estrutura da árvore de processos da figura 5. 
Figura 5 – Árvore de processos
A
B
D E F
C
Fonte: adaptado de Tanenbaum e Bos (2016, p. 28).
A árvore de processos mostra qual processo deu origem a um 
outro processo filho e quantos processos filhos estão associados a 
um processo.
Outro recurso muito presente nos sistemas operacionais modernos 
é o “escalonador de processos”. Esse componente tem a função de es-
colher qual dos processos concorrentes será o próximo a ganhar tem-
po de processamento da CPU. O escalonador faz uso de algoritmos de 
escalonamento para definir critérios para a seleção.
127Arquitetura de computador – software
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Para concluir, os processos estão relacionados às mais antigas e im-
portantes abstrações que os sistemas operacionais proporcionam. Eles 
dão suporte à possibilidade de haver operações (pseudo) concorrentes 
mesmo quando um computador possui apenas uma CPU disponível, 
tornando uma única CPU em múltiplas CPUs virtuais. A computação 
moderna não existiria sem a abstração de processo.
1.3 Threads
Em sistemas operacionais tradicionais, cada processo tem um es-
paço de endereçamento e uma única thread de controle. Conforme 
aumenta a utilização de subprocessos (também conhecidos como 
processos filhos), há um desperdício do tempo gasto para a criação e 
a eliminação deles. Para tentar minimizar esse problema, introduziu-
-se o conceito de threads ou linhas de controle (STALLINGS, 2002).
Um forte argumento para a existência das threads é que, como 
elas são mais leves do que os processos, são mais fáceis (isto é, 
mais rápidas) para criar e destruir do que os processos. Em muitos 
sistemas, criar uma thread pode ser até cem vezes mais rápido do 
que criar um processo. Segundo Tanenbaum e Bos (2016), a diferen-
ça mais contundente entre subprocessos e encadeamentos é que, 
enquanto os subprocessos usam espaços de memória protegidos e 
independentes, os encadeamentos compartilham o mesmo espaço 
de endereçamento que o processo.
Outra razão para a utilização de threads é o fato de o modelo de 
programação ficar mais simples por sua execução ser quase em pa-
ralelo. Assim, em vez de termos interrupções, temporizadores e cha-
veamentos de contextos, podemos pensar a respeitode processos 
em paralelo. Apenas com as threads acrescentamos um novo ele-
mento: a capacidade para as entidades em paralelo compartilharem 
um espaço de endereçamento e todos os seus dados entre si. De 
128 Conceitos de computação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.
acordo com Stallings (2002), essa capacidade é essencial para deter-
minadas aplicações, já que ter múltiplos processos com espaços de 
endereçamento separados não funciona.
Vamos exemplificar a utilização de threads para uma melhor 
compreensão. Imagine o acesso de um navegador web a um site. 
Sabemos que muitas páginas na internet são formadas de imagens e 
de outros recursos “pesados”, como streaming de vídeos, por exem-
plo. Se, para cada item, o navegador tivesse de estabelecer uma co-
nexão separada com o servidor, o procedimento seria muito demorado 
e trabalhoso. Mas, com a utilização de múltiplas threads, é possível fa-
zer a requisição de muitas imagens ao mesmo tempo, melhorando o 
desempenho e a capacidade de resposta (TANENBAUM; BOS, 2016).
Na figura 6, podemos identificar processos tradicionais, em que 
cada processo tem seu próprio espaço de endereçamento e uma única 
thread de controle. 
Figura 6 – Threads 
Processo 1 Processo 2 Processo 3
Núcleo
Thread
Espaço do usuário
Espaço do núcleo {
Fonte: adaptado de Tanenbaum e Bos (2016, p. 71).
129Arquitetura de computador – software
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Já na figura 7, temos a utilização de multithread para um processo. 
Nesse caso, todos os três processos compartilham o mesmo espaço 
de endereçamento. Quando um processo multithread é executado em 
um sistema de CPU única, as threads se revezam executando.
Figura 7 – Multithreads
Processo
Núcleo
Thread
Espaço do usuário
Espaço do núcleo {
Fonte: adaptado de Tanenbaum e Bos (2016, p. 71).
2 Aplicativos e utilitários
Segundo Tanenbaum e Bos (2016), os verdadeiros clientes dos sis-
temas operacionais são os programas de aplicações (aplicativos), por 
meio de seus programadores. Eles interagem diretamente com as abs-
trações fornecidas pela interface do usuário, que podem ser, por exem-
plo, linhas de comandos no shell ou uma interface gráfica.
Ainda que as abstrações na interface com o usuário sejam similares 
às abstrações fornecidas pelo sistema operacional, nem sempre esse 
é o caso. Para esclarecer melhor esse ponto, avalie a área de trabalho 
normal do sistema operacional Windows e o prompt de comando orien-
tado a linhas. Os dois exemplos são programas executados no sistema 
Windows e usam as abstrações que o Windows oferece, mas eles dis-
ponibilizam interfaces de usuário muito diferentes.
130 Conceitos de computação I Ma
te
ria
l p
ar
a 
us
o 
ex
cl
us
ivo
 d
e 
al
un
o 
m
at
ric
ul
ad
o 
em
 c
ur
so
 d
e 
Ed
uc
aç
ão
 a
 D
is
tâ
nc
ia
 d
a 
Re
de
 S
en
ac
 E
AD
, d
a 
di
sc
ip
lin
a 
co
rre
sp
on
de
nt
e.
 P
ro
ib
id
a 
a 
re
pr
od
uç
ão
 e
 o
 c
om
pa
rti
lh
am
en
to
 d
ig
ita
l, s
ob
 a
s 
pe
na
s 
da
 L
ei
. ©
 E
di
to
ra
 S
en
ac
 S
ão
 P
au
lo
.
Resumidamente, os aplicativos são programas que têm aplicação 
prática voltada para o usuário do sistema. São programas que auxiliam 
o usuário, por exemplo, planilhas, editores de texto e navegadores.
Os utilitários, por sua vez, podem ser qualquer programa não obri-
gatório para o funcionamento do computador, porém, considerado ex-
tremamente útil.  De forma sintetizada, podemos descrevê-los como 
programas que auxiliam o sistema operacional. Como exemplo, pode-
mos citar os compactadores de arquivos (WinRAR e WinZip), os anti-
vírus (Avast e Norton) e os desfragmentadores de disco. Eles também 
são fornecidos para ajustar manualmente o relógio do sistema e o de 
backup e para sincronizá-los.
Segundo Tanenbaum e Bos (2016), o SO é o código que executa as 
chamadas de sistema. Já os editores de texto, compiladores, monta-
dores, ligadores (linkers), programas utilitários e interpretadores de co-
mandos absolutamente não são considerados como parte do sistema 
operacional, mesmo que sejam importantes e úteis.
Considerações finais
Neste capítulo, foi possível entender um pouco mais sobre a arqui-
tetura do computador sob a visão do software. Compreendemos um 
pouco sobre a real função do SO em um computador, os processos que 
podem gerar subprocessos, ou processos filhos, e os vários tipos de 
SOs existentes para os diversos dispositivos computacionais disponí-
veis atualmente. Analisamos como os processos ganham tempo de 
CPU e como o SO consegue gerenciar todos os processos que chegam 
por meio do recurso de escalonamento. Além disso, abordamos sobre 
as threads e como elas ajudam os processos a serem mais rápidos, e 
sobre a diferença entre programas aplicativos e programas utilitários, 
cada um com uma função diferente. 
131Arquitetura de computador – software
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Referências
STALLINGS, William. Arquitetura e organização de computadores. 5. ed. São 
Paulo: Pearson, 2002.
TANENBAUM, Andrew S.; BOS, Herbert. Sistemas operacionais modernos. 4. 
ed. São Paulo: Pearson, 2016.
133
M
aterial para uso exclusivo de aluno m
atriculado em
 curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com
partilham
ento digital, sob as penas da Lei. ©
 Editora Senac São Paulo.
Sobre o autor
Maxwel Vitorino da Silva é mestre em Tecnologia pela Faculdade 
de Tecnologia da Unicamp (FT-Unicamp) (2015-2017), possui gradua-
ção em Engenharia de Telecomunicações pela FT-Unicamp (2013-2017) 
e graduação em Tecnologia em Sistemas de Telecomunicações pela 
FT-Unicamp (2010-2014). Participou do programa de estágio docente 
PED nas disciplinas de Probabilidade e Teoria da Informação (TT412) 
e Cálculo 1 (EB101) na FT-Unicamp. Seu tema de projeto defendido no 
mestrado foi “Esquemas de quantização do demodulador para comuni-
cação óptica pelo espaço livre”, e seu trabalho de conclusão da gradua-
ção do curso de Engenharia de Telecomunicações teve como tema o 
“Desenvolvimento de interfaces de código de linha para um enlace com 
painel solar receptor”. Atuou como coordenador e professor nos cur-
sos de Ciência da Computação e Engenharia de Controle e Automação 
na Faculdade Anhanguera de Limeira. Como docente, lecionou as dis-
ciplinas Matemática Instrumental, Mecânica dos Fluidos, Teoria do 
Controle Moderno I e II, Modelagem de Sistemas Dinâmicos, Análise e 
Processamento de Sinais, Robótica, entre outras. Atualmente, leciona no 
curso de Segurança da Informação na Fatec de Americana e nos cursos 
de Engenharia da Faculdade Anhanguera de Limeira.

Continue navegando