Escolar Documentos
Profissional Documentos
Cultura Documentos
A N D E RS ON D U T R A MO U R A
cionais e destina-se aos estudantes que desejam
aprofundar seus conhecimentos sobre esse co-
adjuvante que merece todos os créditos por um
trabalho bem realizado nos nossos computadores.
IESDE BRASIL
2020
© 2020 – IESDE BRASIL S/A.
É proibida a reprodução, mesmo parcial, por qualquer processo, sem autorização por escrito do autor e do
detentor dos direitos autorais.
Projeto de capa: IESDE BRASIL S/A. Imagem da capa: spainter_vfx/ whiteMocca/Shutterstock
3 Processos e threads 76
3.1 Processos 76
3.2 Threads 88
3.3 Execução assíncrona concorrente 95
3.4 Programação concorrente 98
3.5 Deadlock e adiamento indefinido 100
3.6 Escalonamento de processador 103
Gabarito 1611
APRESENTAÇÃO
Desde sua criação, na década de 1950, a computação evoluiu e passou a
ocupar um lugar importante no cotidiano das pessoas, seja em casa, seja no
trabalho, de um modo nunca antes visto. Na forma dos grandes computadores,
utilizados pelos centros de pesquisa e grandes corporações, computadores
pessoais, notebooks, tablets e até mesmo celulares, os dispositivos estão
presentes em nossas vidas, realizando uma quantidade de tarefas além do que
foi imaginado quando os primeiros aparelhos foram concebidos. Conectados
a redes com ou sem fio, os computadores permitiram a comunicação entre
usuários e outras máquinas separadas por longas distâncias.
Desempenhando um papel coadjuvante nessa evolução, surgiu o sistema
operacional, responsável por atender às solicitações feitas pelos usuários,
controlar e se comunicar com a infinidade de dispositivos e acessórios,
que podem ser conectados aos computadores e dispositivos; garantir a
comunicação e a segurança na troca de informações com os computadores
em rede ou que acessam a Web, entre outras tarefas.
Este livro é destinado a uma melhor compreensão do papel e das atividades
desempenhadas pelo sistema operacional. Para isso, começaremos com uma
apresentação histórica dos sistemas operacionais, seus possíveis ambientes,
seus componentes e sua arquitetura. Em seguida, apresentaremos a
forma com que o sistema operacional interage com o hardware e com o
software; a execução de tarefas pelos sistemas operacionais; a conversão de
processos em threads; o armazenamento em memória real e em memória
virtual do computador; e, finalmente, trataremos da segurança em sistemas
operacionais, as possíveis formas de ataque e defesa dos sistemas e algumas
técnicas de proteção dos dados trocados pelos computadores.
Em suma, esta obra traz as informações básicas para a compreensão do
papel dos sistemas operacionais e destina-se aos estudantes que desejam
aprofundar seus conhecimentos sobre esse coadjuvante que merece todos
os créditos por um trabalho bem realizado nos nossos computadores.
Bons estudos!
1
Introdução aos sistemas
operacionais
Se formos tomar como base o conceito de sistema operacio-
nal da época em que ele foi criado, veríamos a definição de um
software que controla um hardware. Para aquele tempo, esse con-
ceito era válido. Porém, se examinarmos o hardware que temos
hoje, podemos observar que ele está interagindo com um número
cada vez maior de softwares, simultaneamente. Essa mudança na
utilização e forma de interação com o software levou à necessi-
dade da redefinição desse conceito; o novo papel desempenhado
pelo sistema operacional é o de realizar a separação entre as apli-
cações (software e hardware), criando um controle de acesso e um
conjunto de serviços e permitindo a comunicação entre eles.
Esse cenário somente foi melhorado com a criação dos cartões per-
furados, nos quais os comandos bit-a-bit foram transformados em se-
Filme
quências no papel, acelerando o processo de programação por meio
Para ter uma noção
de linguagens, como assembly, que convertiam os sinais recebidos no
da primeira e segunda
fase dos computadores, cartão e permitiam a realização de operações básicas pelo computador.
assista ao filme Estrelas
além do tempo, que Para que um programador pudesse executar um job, isto é, um pro-
conta a história de três grama ou conjunto de programas, ele deveria escrevê-lo em uma fo-
matemáticas da Nasa (Ka-
therine Johnson, Dorothy lha de papel, fazendo uso da linguagem de programação chamada de
Vaughn e Mary Jackson), Fortran ou em linguagem de montagem (assembly). Após essa etapa,
as quais se mostram
parte fundamental da ele iria transferir o programa para um cartão perfurado (Figura 1). Nes-
evolução tecnológica se momento, ele poderia utilizar um ou mais cartões para representar
durante a Guerra Fria.
o seu programa. Depois disso, os cartões seriam entregues para serem
Direção: Theodore Melfi. São Paulo:
WB Filmes, 2017. processados aos operadores do computador.
10 Sistemas Operacionais
Figura 1
Cartão perfurado
ArnoldReinhold/Wikimedia Commons
O primeiro sistema operacional surgiu no início da década de 1950,
desenvolvido pelos Laboratórios de Pesquisa da General Motors, e foi
chamado de GM-NAA I/O, para ser executado nos computadores IBM
701 (Figura 2), e comercializado a partir de 1953.
12 Sistemas Operacionais
realizava a impressão, deixando o sistema principal responsável pelo
processamento.
Uma outra inovação trazida pela IBM, na série 360, foi a utilização dos
Circuitos Integrados (CI) ou Small Scale Integration (SSI) na sua fabrica-
ção, o que trouxe um resultado de preço e performance muito superior
quando comparado com os computadores da fase anterior, construídos
com transistores individuais. O sucesso da série 360, que trouxe o con-
ceito de uma família de computadores compatíveis, fez com que os ou-
tros fabricantes adotassem, rapidamente, essa ideia.
14 Sistemas Operacionais
tes, que seguiram o seu modelo, foram bem recebidos pelos usuários,
pois introduziam novas técnicas até então não disponíveis nos sistemas
operacionais, como a multiprogramação, que permitia a execução si-
multânea de vários programas por meio do compartilhamento de acesso
à memória principal, ocupando em cada um deles um espaço reservado.
O sistema Multiplexed
Information and
Computing Service
(Multics) – desenvolvido
Compatible Time- pelo MIT, General
Electric (GE) e Bell
-Sharing System
Laboratories para
(CTTS), traduzido substituir o CTTS. Seus Control Program/
como sistema desenvolvedores foram
Conversational Monitor
compatível de tempo os primeiros a utilizar
o termo processo para System (CP/CMS)
compartilhado,
descrever um programa – programa de controle/
desenvolvido pelo Time sharing em execução no sistema sistema monitor
Massachusetts system (sistema operacional. Também conversacional –,
Institute of de tempo foi o primeiro sistema que eventualmente
Technology (MIT). compartilhado), operacional escrito com evoluiu para o sistema
desenvolvido uma linguagem de alto
operacional Virtual
nível (EPL) e não uma
pela IBM. Machine (VM) – máquina
linguagem de montagem
(assembly). virtual –, desenvolvido
pelo Cambridge Scientific
Center da IBM.
Vyacheslavikus/Shutterstock
16 Sistemas Operacionais
Tendo sido concebido e implementado, em 1969, na AT&T Bell
Laboratories, por Ken Thompson, Dennis Ritchie, Douglas McIlroy e
Joe Ossanna, o sistema operacional Unix foi lançado em 1971, todo
escrito em linguagem assembly. Sua versão original foi substituída,
em 1973, por uma nova versão, reescrita por Dennis Ritchie, com a lin-
guagem de programação C – uma linguagem de alto nível, que garan-
tiu a portabilidade do Unix para outras plataformas de computador.
18 Sistemas Operacionais
garantir certas liberdades para os usuários, como o direito de executar,
estudar e modificar o software, além de a liberdade de distribuir cópias
desse software, com ou sem alterações. O lançamento do Projeto GNU,
também criado por Stallman, representou o marco de início do mo-
vimento de software livre. O objetivo do projeto era criar um sistema
operacional, chamado GNU, com base em software livre. Esse projeto é
mantido, atualmente, pela Free Software Foundation (FSF) – Fundação
para o Software Livre – fundada por Stallman, em 1985.
20 Sistemas Operacionais
Nos anos 2000, um número cada vez maior de computadores
passou a conseguir realizar paralelismo maciço, pois possuíam uma
grande quantidade de processadores, permitindo que partes indepen-
dentes das operações pudessem ser executadas em paralelo. Esse é
um conceito drasticamente diferente da computação sequencial das
fases iniciais das máquinas.
Figura 4
Interação entre as aplicações e o sistema operacional
Espaço do núcleo
Interface de chamada ao sistema
Componentes do SO
22 Sistemas Operacionais
ticas, como: os consoles de games, as teleconferências e as aplicações
de multimídia. Todas essas aplicações, que apresentam a característica
adicional de estarem sujeitas a restrições temporais, são agrupadas no
que é usualmente identificado como sistemas de tempo real.
Camada de
hardware
Processador Memória Disco físico
24 Sistemas Operacionais
As VMs tendem a ser menos eficientes do que os computado-
res reais, pois não acessam o hardware diretamente ou simulam
o hardware que não está conectado no computador hospedeiro, o
que aumenta o número de instruções de software requeridas para
cada ação de hardware.
Escalonador de processos
Pode parecer simples, mas o ato de teclar e, depois disso, o que foi
digitado aparecer na tela exige do sistema operacional um processo de
entrada/saída pela CPU, várias vezes, dentro de um pequeno intervalo
de tempo. Esse comportamento de processo é denominado processo
orientado à E/S (In/Out bound).
Figura 6
Comportamento de processos
Tempo
(a) Processo CPU-bound ou orientado a CPU
(b) Processo I/O-bound ou orientado a E/S
Gerenciador de memória
26 Sistemas Operacionais
a memória principal (Random Access Memory), também conhecida
como memória RAM, em maior quantidade que a sua sucessora, porém
mais lenta. Por último, temos a memória de armazenamento em dis-
co (Hard Disk – HD), em uma quantidade muito maior que as anterio-
res, mas considerada lenta quando comparada às demais.
RAM
Velocidade: Baixa
Custo: Baixíssimo
Capacidade: Muito alta
Tamanho: Grande
Energizado: Não Dispositivos de
armazenamento
em massa
Fonte: Pendrive..., 2015.
liberar a tratar do
alocar a
memória, problema de
memória aos
quando um swapping, isto
processos,
processo é, quando a
quando for
ck
memória é
tersto
necessário; terminar;
insuficiente.
hut
s/S
iku
v
sla
che
Vya
28 Sistemas Operacionais
A comunicação do dispositivo de E/S com a camada do subsistema
de E/S é feita pela camada conhecida como device driver, que se respon-
sabiliza pelos aspectos técnicos dessa comunicação, como a velocidade
da operação, a unidade de transferência, a representação dos dados e
os tipos de operações a serem realizados.
Figura 8
Camadas da gerência de dispositivos
Processo
Operações de E/S
Modo usuário
Sistema de Independente
arquivos do dispositivo
Software
(a)
Subsistema de E/S
Modo kernel
Device drivers
Dependente
do dispositivo
(b)
Hardware
Controladores
Dispositivo de E/S
Device drivers
ser de responsabilidade do subsistema de E/S.
30 Sistemas Operacionais
No sistema operacional Windows, da Microsoft, os device drivers
são desenvolvidos com base em um padrão chamado Windows Driver
Model (WDM), responsável por definir um conjunto de características e
funções a serem oferecidas por um driver. Esse padrão é homologado
pela Microsoft, permitindo que o sistema operacional possa efetuar ta-
refas, como: suporte ao plug-and-play (ligar e usar), acesso a múltiplos
processadores, gerência de energia dos dispositivos e interação com os
objetos do sistema operacional (Figura 11).
Figura 11
Janela do Device Manager (gerenciador de dispositivos) do Windows
32 Sistemas Operacionais
Para realizar sua tarefa com eficiência, o IPC precisa se preocupar
com a coordenação da comunicação, realizando a sincronização do
processo, na qual o processo emissor precisa informar que um dado
foi transmitido e o processo receptor precisa saber que o dado en-
viado está disponível, informando aos dois quando podem realizar
uma nova comunicação.
Para realizar sua tarefa, o IPC pode fazer uso dos seguintes mo-
delos de comunicação.
a. Difusão (broadcast): quando o receptor envia a mesma
mensagem para um grupo de receptores, sem saber quem são
eles.
b. Produtor-consumidor: quando existe somente um emissor e
um receptor, com a comunicação unidirecional entre eles.
c. Cliente-servidor: quando o cliente, que pode ser um
computador, programa ou processo, solicita uma requisição
para um servidor, que também pode ser um computador,
programa ou processo.
d. Peer-to-Peer (P2P): quando cada um dos nós (computadores,
programas ou processos) que participam da comunicação
atuam como servidores ou clientes.
e. Caixa de correio (mailbox): quando a comunicação entre
o emissor e o receptor funciona como uma caixa de correio,
na qual o receptor não escolhe o emissor que lhe escreveu
a mensagem. Pode ser classificada em dois tipos: a escrita
não bloqueante, quando a capacidade de armazenamento da
caixa de correio é ilimitada; ou de leitura bloqueante, quando
a caixa de correio está vazia.
f. Diálogo: quando há servidores exclusivos para cada cliente,
unidos por um canal de comunicação dedicado somente a eles,
que será desligado quando a comunicação entre eles acabar.
O conteúdo desse arquivo vai influenciar a forma como ele será pro-
cessado, por exemplo:
a. um arquivo executável é composto de instruções em linguagem
de máquina, que faz com que ele seja executado pelo sistema
operacional;
b. um arquivo de dados é constituído por dados estruturados ou
não, que são lidos pelo sistema operacional;
c. um arquivo de multimídia pode possuir imagem, áudio, som,
vídeo etc., que será disponibilizado pelo sistema operacional para
o usuário.
34 Sistemas Operacionais
mas regras particulares a serem seguidas na definição do nome do
arquivo, por exemplo: o tamanho do nome, os caracteres a serem usa-
dos, a distinção ou não de caracteres maiúsculos ou minúsculos, entre
outras. A extensão é utilizada por alguns sistemas operacionais com
parte do nome do arquivo; seu papel é identificar o tipo de conteúdo
do arquivo. Para exemplificar, se pensarmos no sistema operacional
Windows, quando visualizamos um arquivo com extensão .docx, sabe-
mos que ele pertence ao Word. Por outro lado, se vemos um arquivo
com extensão .xlsx, sabemos que ele pertence ao Excel.
36 Sistemas Operacionais
1.3.2 Objetivos do sistema operacional
De acordo com a evolução dos sistemas operacionais, os usuários
passaram a considerar certas características como essenciais. Segundo
Deitel, Deitel e Choffnes (2005), os objetivos a serem alcançados pelos
sistemas operacionais são:
a. Eficiência: característica que mede a capacidade de um sistema
operacional em oferecer o máximo de serviços a diferentes
aplicações, no menor espaço de tempo.
b. Robustez: característica que permite ao sistema operacional ser
tolerante a falhas e confiável; caso ocorra um erro de aplicação
(de software ou hardware), o sistema operacional buscará
minimizar a perda do trabalho realizado, tentando evitar danos
ao hardware do computador.
c. Escalabilidade: característica que permite ao sistema operacional
fazer uso de recursos à medida que eles vão sendo acrescentados
ao computador, sendo muito útil quando falamos de sistemas
multiprocessados.
d. Extensibilidade: essa característica garante que o sistema
operacional se adapte bem ao uso de novas tecnologias, bem
como que execute tarefas diferentes daquelas para as quais
foi projetado. Dessa forma, a extensibilidade proporciona o
aumento da flexibilidade do sistema operacional. Ao possibilitar
que os usuários adaptem ou evitem o sistema operacional, os
sistemas operacionais extensíveis possibilitam, em particular,
que os usuários ajustem o comportamento do sistema para
obterem um maior desempenho em casos específicos.
e. Portabilidade: a portabilidade garante que o sistema operacional
opere em muitas configurações de hardware. A portabilidade de
aplicações também é importante, pois o desenvolvimento das
aplicações (software) custa caro; portanto, a mesma aplicação
deve ser executada em uma variedade de configurações de
hardware, reduzindo os custos de desenvolvimento.
f. Segurança: a segurança em um sistema operacional impede que
os usuários e/ou softwares acessem os serviços ou recursos sem a
devida autorização. Os mecanismos que implementam as políticas
de segurança do sistema operacional são chamados de proteção.
38 Sistemas Operacionais
A manutenção e a compreensão do código-fonte desse tipo de sis-
tema são complicadas, pois é difícil isolar a fonte de problemas e de
outros erros. Além disso, como todo o código é executado com acesso
irrestrito ao sistema, os sistemas de núcleo monolítico são particular-
mente suscetíveis a danos provocados por códigos sujeitos a erros ou
mal-intencionados.
Usuário
Espaço do núcleo
Camada 3 Gerenciamento de E/S
Aplicações
Núcleo
CEP
40 Sistemas Operacionais
São exemplos de sistemas operacionais, que fazem uso desse tipo
de arquitetura: o GNU Hurd, desenvolvido pelo Projeto GNU, Minix e
QNX e utilizado em sistemas embarcados; e o L4, desenvolvido por Jo-
chen Liedtke, cientista alemão da computação, que atuou na pesquisa
de microkernels.
Processador
Hub
Cliente
Cliente
Cliente
Cliente Cliente
Fonte: Deitel; Deitel; Choffnes, 2005.
42 Sistemas Operacionais
de adicionar novos computadores, aumentando o processamento ou
armazenamento (escalabilidade); o uso de mensagens para trocar in-
formações entre os programas e as estações de trabalho; e, por fim,
caso uma estação de trabalho pare de funcionar, não haverá compro-
metimento do serviço, pois outra estação irá assumir as funções de-
sempenhadas pela máquina que parou de funcionar.
CONSIDERAÇÕES FINAIS
Iniciamos este capítulo mostrando que a criação e o desenvolvimen-
to dos sistemas operacionais estão intimamente ligados à evolução do
computador, do desenvolvimento de software e da crescente demanda
de performance e segurança. Os diferentes tipos de aplicações fizeram
com que os sistemas operacionais tivessem de se adaptar a diferentes
ambientes, atendendo a requisições específicas de hardware e software.
Vimos, também, que o núcleo (kernel) do sistema operacional faz uso
de componentes (subsistemas) para realizar as tarefas mais importantes;
tarefas essas que cumprem as características necessárias de um sistema
operacional. Por fim, encerramos o capítulo apresentando as possíveis
arquiteturas que um sistema operacional pode usar, bem como os exem-
plos de sistemas operacionais que as utilizam.
ATIVIDADES
1. Por que os computadores da primeira fase não usavam sistemas
operacionais?
44 Sistemas Operacionais
2
Interação do sistema
operacional com
hardware e software
Além de cumprir suas tarefas, o sistema operacional precisa
se relacionar com várias outras partes. Ele atende às solicita-
ções do usuário recebendo e devolvendo dados. Ele converte
tais solicitações em tarefas, que serão executadas pelo compu-
tador, respeitando os mais diferentes projetos de arquitetura.
Ademais, o sistema operacional precisa estender esse relacio-
namento a uma infinidade de dispositivos e de diversos propósi-
tos, os quais são acoplados ao computador e auxiliam o usuário
na realização das suas operações.
Neste capítulo, abordaremos a relação dos sistemas opera-
cionais com os arquivos e diretórios, que são as estruturas mais
utilizadas pelos usuários no manuseio do computador; a evolu-
ção da programação, a qual passou de linguagem de máquina
para as linguagens de alto nível e começou a fazer uso de com-
piladores e interpretadores para aumentar a produtividade dos
desenvolvedores; o uso de firmwares e middlewares, facilitando
a comunicação dos dispositivos e programas com o sistema ope-
racional e o computador. Estudaremos, também, os hardwares,
as suas diferentes arquiteturas e como eles interagem entre si
e com o sistema operacional; o processador, o seu projeto, o
desempenho e o uso de multiprocessadores; a memória, a sua
hierarquia e as diferenças de custo e desempenho; o uso de
discos e fitas, como forma de armazenamento de baixo custo;
os barramentos, responsáveis pela comunicação entre os com-
ponentes do computador; e, finalmente, os dispositivos de E/S,
que são acoplados ao computador, fazendo com que o sistema
operacional os reconheça e se comunique com eles.
O tamanho
Alguns sistemas operacionais aceitam arquivos com nomes de até
do nome
8 caracteres e outros suportam até 255 caracteres.
O uso de
caracteres
Alguns sistemas operacionais suportam o uso de caracteres
especiais especiais, outros não.
Pure Imagination/Shutterstock
A distinção de
caracteres em Alguns sistemas operacionais, como o UNIX, suportam a distinção
letra maiúscula em letras maiúsculas, outros não, como o MS-DOS.
Sistemas
operacionais
O uso de
extensão Para muitos sistemas operacionais o uso de extensão é opcional; o
MS-DOS permitia arquivos com nomes de um a oito caracteres e a
extensão com um a três caracteres; no UNIX, a extensão é opcional,
seu tamanho é definido pelo usuário e um arquivo pode ter mais de
uma extensão, como o arquivo arquivohtml.tar.gz, o qual passou por
compactação dupla, a primeira pelo compactador TAR e a segunda pelo
compactador GZIP.
O valor da
extensão Para alguns sistemas operacionais, a extensão do arquivo possui valor, por
exemplo, um arquivo.txt, para o Windows, será reconhecido como um arquivo
de texto e será aberto por um aplicativo vinculado a essa extensão; para o
UNIX, como a extensão pode ser atribuída livremente pelo usuário, não existe
essa relação de extensão com o conteúdo do arquivo nem com aplicativo
responsável por executá-lo ou abri-lo.
46 Sistemas Operacionais
A maneira mais simples de se armazenar um arquivo em um sis-
tema operacional é considerá-lo uma sequência de bytes, na qual
o sistema operacional não se preocupa com o conteúdo do arquivo,
deixando a responsabilidade da sua identificação com o usuário. Essa
estratégia é utilizada por sistemas operacionais como UNIX e Windows.
Uma outra abordagem é transformar o arquivo em uma sequência de
registros de tamanho fixo, assim, quando uma alteração ocorre, o
sistema operacional identifica qual registro foi alterado e o reescreve.
Essa forma de armazenamento era utilizada por sistemas operacionais
no tempo das leitoras de cartão perfurado. Por fim, um arquivo pode
ser armazenado no formato de uma árvore de registros, que é or-
denada por campos-chave, contidos dentro de cada registro. Essa for-
ma de armazenamento é utilizada em computadores de grande porte,
para processamento de dados comerciais. Os três modos de armaze-
namento mencionados são apresentados na Figura 1.
Figura 1
Três tipos de arquivos: sequência de bytes (a), sequência de registros (b), árvore (c)
1 Byte 1 Registro
Diretório-raiz
A B C D E
Figura 4
Sistema hierárquico de diretórios
Diretório-raiz
Diretório
de
usuário A B C
A B B B C C
B C C
Subdiretórios de usuário
Arquivo
C C C C de
Fonte: Tanenbaum, 2015, p. 167. usuário
50 Sistemas Operacionais
c. Alocação por lista encadeada usando uma tabela na memória:
uma inovação da alocação por lista encadeada, em que os
ponteiros dos blocos são substituídos por uma tabela na memória
principal, conhecida como File Allocation Table (FAT), traduzida
como Tabela de Alocação de Arquivos. Como vantagens desse
método, o bloco fica livre para armazenar os dados, pois não
precisa mais alocar os ponteiros, e o acesso randômico aos dados
fica facilitado pelo uso da memória. A grande desvantagem é a
necessidade dessa informação estar permanentemente fazendo
uso da memória principal, a qual é considerada uma forma de
armazenamento cara para o sistema operacional.
d. I-nodes (Index-node – nó-índice): o sistema operacional vincula
cada um dos arquivos a uma estrutura de dados chamada
I-nodes, a qual armazena os atributos do arquivo, bem como
os endereços dos seus blocos no disco rígido. Essa estratégia
possui como desvantagem a dificuldade em se definir qual é o
tamanho ideal do índice a ser utilizado, já que, se utilizarmos um
valor pequeno, arquivos grandes não poderão ser armazenados,
e se utilizarmos um valor muito grande, podemos nunca
alcançar esse valor, isto é, não ter arquivos tão grandes quanto o
máximo previsto. Essa dificuldade se baseia no fato de o sistema
operacional não conseguir prever o tamanho de um arquivo a ser
gerado/utilizado por um usuário. Essa estratégia é utilizada pelo
sistema operacional UNIX.
Para compreender um
suportado por discos e partições para 256TB; a utilização de clusters
pouco mais sobre o de 512 bytes; um melhor desempenho; a possibilidade de aplicar po-
motivo da existência dos
arquivos e dos diretórios líticas de segurança; e a recuperação de falhas por meio do journal,
e como o sistema ope-
racional interage com
isto é, um arquivo de log, que grava os eventos em uma área especí-
eles, leia o livro Sistemas fica do disco rígido, para depois fazer a gravação efetiva.
operacionais: projeto e
implementação. A maioria das distribuições Linux faz uso do sistema de arquivos
TANENBAUM, A. S.; WOODHULL, A. S.
3. ed. São Paulo: Bookman, 2008. Fourth Extended Filesystem (ext4) – traduzido como Quarto Sistema
de Arquivos Estendido –, suportando discos e partições com até 1
exabyte (EB) – que equivale a 1.000.000.000.000.000.000 bytes – e
arquivos com tamanho de até 16TB.
52 Sistemas Operacionais
a. FORTRAN – desenvolvida pela IBM na década de 1950 (Figura 5),
com propósito científico e de engenharia, é considerada a primeira
linguagem de programação multiplataforma, isto é, utilizada em 2
2
diferentes arquiteturas. Sendo ainda utilizada em mainframes Mainframes são computadores
na atualidade. usados principalmente por
grandes organizações para apli-
Figura 5 cações críticas e processamento
Código FORTRAN em um cartão perfurado de dados massivos, como:
estatísticas da indústria e do
54 Sistemas Operacionais
Figura 6
Computador EDSAC em junho de 1948
Thorpe/Wikimedia Commons
Figura 7
Interface de Programação da Aplicação (API)
Aplicação
API
Espaço do usuário
Interface de chamada ao sistema
Espaço do núcleo
56 Sistemas Operacionais
3D. Sua API é utilizada na interação com a Graphics Proces- Figura 8
sing Unit (GPU) – Unidade Gráfica de Processamento – para Posição do middleware em
relação às aplicações e ao
obter uma renderização acelerada por meio do hardware. sistema operacional
Os sistemas operacionais e o middleware têm muito em
comum: são softwares utilizados para oferecer suporte a Aplicação
2.4 Processadores
Vídeo Por processador compreendemos um componente de hardware
que executa linguagem de máquina (assembly) e que pode ser encon-
trado em vários formatos dentro da máquina. Podendo se apresentar
como uma Central Processing Unit (CPU) – Unidade Central de Processa-
mento –, que executará as instruções de um programa; ou um proces-
sador gráfico ou de sinais digitais (Digital Signal Processor – DSP), que
executará instruções específicas.
58 Sistemas Operacionais
486, desenvolvidas pela Intel. Quando surgiram os processadores
CISC, boa parte dos sistemas operacionais era escrito em lingua-
gem de montagem, porém eles perderam força quando os siste-
mas operacionais passaram a ser escritos em linguagens de alto
nível, por exemplo, o uso do C e do C++ no código-fonte do sistema
operacional UNIX.
Figura 9 RISC foi o uso da técnica conhecida como desvio atrasado, a qual
Raspberry PI 4 permite que, ao receber um conjunto de instruções sequenciais,
modelo B
a sua totalidade possa ou não ser executada de acordo com
uma validação feita pelo processador. Como des-
vantagens da arquitetura de processadores
RISC, em comparação com a arquitetura de
processadores CISC, podemos destacar: as
operações que fazem uso de pontos flu-
tuantes são mais rápidas nos processadores
CISC; e a utilização de programas gráficos e cien-
tíficos apresenta melhor desempenho quando executa-
da em processadores CISC, pois esses programas fazem uso
de instruções complexas de maneira repetida.
4 Podemos citar como exemplo de utilização da arquitetura RISC,
Raspberry Pi é uma série de o processador PowerPC, desenvolvido pela IBM e que foi utilizado
pequenos computadores de- pela Apple em seus computadores. A arquitetura RISC deu origem a
senvolvida no Reino Unido pela
Raspberry Pi Foundation, para vários novos projetos de processadores, entre eles, podemos des-
promover o ensino de ciência da tacar o Advanced RISC Machine (ARM) – Máquina RISC Avançada – ,
computação básica nas escolas e desenvolvido pela Acorn Computers. Esse projeto é utilizado, am-
países em desenvolvimento. 4
plamente, em smartphones, tablets e no Raspberry PI (Figura 9).
60 Sistemas Operacionais
Figura 10
Componentes do processador
ULA
Unidade de
execução
Unidade de
Registradores
busca/decodificação
Cache de Cache de
instrução L1 dados L1
Cache L2
Interface de barramento
Figura 11
Estrutura de uma CPU
Instruções
Unidade de Controles
externos
Controle
Endereço das
Instruções
Controles internos Condições
Dados
Dados
Unidade de
Execução
Endereço dos
dados
CPU
Instruções
IR
Unidade de Controles
externos
Controle
PC
Endereço das
Instruções
Controles internos Condições
MBR Dados
Dados
MAR
Unidade de
Execução
Fonte: Elaborada pelo autor.
c. A parte principal da Unidade de Execução é a Unidade de
Lógica e Aritmética (ULA), que se assemelha muito a uma
calculadora convencional, executando operações lógicas e
aritméticas, com números inteiros ou reais. Os registradores
de propósito geral ou específicos são responsáveis por trazer
tipos de dados diferentes para a ULA. Cabe à UC decidir quais
os registradores encaminharão seus dados para a ULA e
informar qual operação (soma, multiplicação, divisão, AND, OR
etc.) será realizada. Após a execução da operação, a ULA gera
um resultado, o qual é entregue para um registrador também
definido pela UC. A ULA é, normalmente, representada por
um V nos diagramas de arquitetura.
d. A interface de barramento (Figura 13) é responsável
pela interação do processador com a memória e os outros
dispositivos do sistema. Essa interface executa três funções
distintas: o barramento de dados, cuja função é realizar o
transporte dos dados ou instruções, realizando essa operação
em sentido bidirecional; o barramento de endereços, cuja
Figura 13
Estrutura de uma CPU com barramentos
Memória principal
Controles
Instruções extremos
Barramento de endereços
Barramento de endereços
Unidade de
Barramento de controle
Barramento de dados
Barramento de dados
controle
Endereço das
instruções
Controles internos Condições
Dados
Dados Unidade de
execução
Endereço
dos dados
CPU
64 Sistemas Operacionais
2.4.3. Gerenciamento de multiprocessador
Segundo Deitel, Deitel e Choffnes (2005), o termo sistema de mul-
tiprocessamento engloba qualquer sistema que contenha mais de um
processador. Podemos citar como exemplos de sistemas multiproces-
sados os notebooks, os quais possuem dois processadores, e os servi-
5 5
dores de aplicação ou bancos de dados, hospedados em datacenters,
que possuem vários processadores. Datacenter é um ambiente
projetado para concentrar os ser-
As diferentes possibilidades de arquiteturas para se construir um pro- vidores, os equipamentos para
processamento e armazenamen-
jeto de multiprocessadores destacam mais uma característica desse tipo
to dos dados e os equipamentos
de projeto, a forma com que eles compartilham recursos dentro do sis- de redes de computadores.
tema computacional. Analisando essa característica, temos duas opções:
Artigo
https://www.researchgate.net/profile/Cesar_Zeferino/publication/266878017_Processadores_para_
Ensino_de_Conceitos_Basicos_de_Arquitetura_de_Computadores/links/5575ee1308ae75363751a4b2/
Processadores-para-Ensino-de-Conceitos-Basicos-de-Arquitetura-de-Computadores.pdf
Nível 1
Nível 2
Aumento
do tempo
de acesso
...
Nível n
Tamanho da memória
66 Sistemas Operacionais
•• A localidade espacial – observa uma tendência por parte de um
processo em realizar referências a posições na vizinhança da úl-
tima referência.
•• A localidade sequencial – observa uma tendência por parte de
um processo em fazer referência à posição seguinte a atual.
68 Sistemas Operacionais
1950 e 1960, ela era conhecida como memória de núcleos (core me-
mory), pois era fabricada com pequenos núcleos de ferrita, isto é,
um material cerâmico, composto principalmente de óxido de ferro,
com propriedades magnéticas. Nos computadores atuais, a memó-
ria principal possui centenas de megabytes (MB), sendo que cada
MB equivale a um milhão de bytes. Quando as requisições feitas
pela CPU não podem ser atendidas pela memória cache, elas são
encaminhadas para a memória principal.
Cabeça de
leitura/escrita
(uma por superfície)
Superfície 7
Superfície 6
Superfície 5
Superfície 4
Superfície 3
Direção do
Superfície 2 movimento
Superfície 1 do braço
Superfície 0
70 Sistemas Operacionais
Em seu interior, um disco rígido é constituído por um ou mais
pratos metálicos, que giram com velocidade entre 5.400 e 10.800
rpm (rotações por minuto). Os dados são lidos e escritos nesses pra-
tos metálicos por um braço mecânico. Uma região circular, lida pelo
braço, em um dos pratos metálicos é chamada de trilha. A soma de
todas as trilhas, em um movimento de leitura feito pelo braço, do
começo ao fim do prato metálico, é chamada de cilindro. Compreen-
demos como latência rotacional a lentidão no uso do disco rígido,
pela necessidade de mover o braço mecânico entre os pratos até
que os dados sejam acessados, somada ao tempo de transferência
para a memória principal, depois da leitura. Para que um programa
possa ser executado, ele é armazenado no disco rígido, transferido
para a memória principal, na qual poderá ser acessado pelo proces-
sador, e, por fim, executado.
O Barramento de Interconexão
Smial/Wikimedia Commons
72 Sistemas Operacionais
Utilizada na renderização de objetos 3D em tempo real, a Porta
Gráfica Acelerada (AGP – Accelerated Graphics Port) é responsável
por conectar placas gráficas que utilizam grandes quantidades de
memória RAM para realizarem suas atividades.
74 Sistemas Operacionais
CONSIDERAÇÕES FINAIS
Neste capítulo, aprofundamos a nossa visão sobre os arquivos e di-
retórios, que estão presentes em nossos computadores. O que para nós
parece simples, para o sistema operacional representa um conjunto de
tarefas e preocupações com a segurança.
Também adentramos no mundo dos componentes do computador,
que são parceiros do sistema operacional na sua incansável tarefa de rea-
lizar as solicitações feitas pelo usuário, além de realizar tarefas vitais, das
quais não tomamos conhecimento. O que aos nossos olhos pode levar
alguns segundos, como o ato de ligar um computador apertando um bo-
tão, internamente aciona um batalhão de componentes, liderados pelo
sistema operacional.
ATIVIDADES
1. Qual é a maneira mais simples de se armazenar um arquivo em um
sistema operacional?
REFERÊNCIAS
DEITEL, H. M.; DEITEL, P.; CHOFFNES, D. Sistemas operacionais. 3. ed. Trad. de Arlete Simille
Marques. São Paulo: Pearson, 2005.
TANENBAUM, A. Organização Estruturada de Computadores. 6. ed. São Paulo: Pearson
Universidades, 2013.
TANENBAUM, A.; BOS, H. Sistemas Operacionais Modernos. 4. ed. São Paulo: Pearson
Universidades, 2015.
3.1 Processos
Vídeo Com o decorrer do tempo, os computadores passaram a executar
várias operações ao mesmo tempo. O que era feito de uma maneira
sequencial, passou a ser realizado simultaneamente, mesmo que isso
não chame a atenção do usuário.
76 Sistemas Operacionais
dades de maneira simultânea. As operações realizadas pelo usuário, as
aplicações, os dispositivos e o próprio sistema operacional existem na
forma de processos; eles podem ser criados, destruídos, bloqueados e
ativados a todo momento.
Processos e threads 77
os processos da lista de prontos são armazenados de acordo com a sua
prioridade, da mais alta para a mais baixa. Isso garante que, quando
um processador for liberado, o próximo processo, com prioridade mais
alta, na lista de prontos, será executado. Já na lista de bloqueados, a
ordenação não é importante, pois os processos, armazenados na lista,
são liberados à medida que os eventos, que eles estão esperando, são
realizados.
78 Sistemas Operacionais
de execução para bloqueado, quando ele está em execução e necessita
realizar uma operação de E/S, por exemplo, e a resposta não chegou
antes do seu tempo de execução terminar; nesse caso, ele devolverá o
controle do processador ao sistema operacional de maneira voluntária.
Ao receber a resposta do dispositivo de E/S, o sistema operacional muda
novamente o estado do processo de bloqueado para pronto, até que ele
possa ser novamente executado.
Figura 1
Transições de estado de processo
Acordado Adormecido
Em
execução Blo 3
q
1 o
ue
h
ac
io
sp
De
dor
sg oriza
do
ota
p
2
m
Te e
Pronto Bloqueado
4
Despertar
2
Quando o quantum de execução de um processo se encerra e ele conseguiu
realizar a(s) tarefa(s) desejada(s), ele muda de execução para pronto.
Processos e threads 79
Os sistemas operacionais antigos não possuíam timer. Para con-
tornar essa ausência, os próprios processos em execução liberavam
o processador para um outro processo que estava pronto. Essa estra-
tégia é chamada de multitarefa cooperativa, que foi abandonada pelos
sistemas operacionais modernos, pois possibilitava que um processo
entrasse em loop infinito ou se recusasse a devolver o processador
para outro processo.
80 Sistemas Operacionais
j. O contexto de execução, isto é, o conteúdo dos registradores do
processador no qual o processo foi executado por último. Essa
informação é utilizada pelo sistema operacional ao retornar o
processo para o estado execução.
Figura 2
Tabela de processos e blocos de controle de processos
PID PCB
1
2
. . Bloco de controle de
. .
. . processo
n Contador de programa
Registradores
Bloco de controle de Bloco de controle de
Estado
processo processo
Prioridade
Contador de programa Contador de programa
Espaço de endereço
Registradores Registradores
Pai
Estado Estado
Filhos
Prioridade Prioridade
Arquivos abertos
Espaço de endereço Espaço de endereço
...
Pai Pai
Outras sinalizações
Filhos Filhos
Arquivos abertos Arquivos abertos
... ...
Outras sinalizações Outras sinalizações
Processos e threads 81
3.1.3.3 Operações de processo
De acordo com Deitel, Deitel e Choffnes (2005), as operações de pro-
cesso, que estão sob responsabilidade do sistema operacional, no que
se refere a processos, são: criação, destruição, suspensão, alteração,
alteração da prioridade de execução, bloqueio, despacho e permitir
que um processo se comunique com outro. Um software em execu-
ção, isto é, um processo, consegue gerar novos processos. Quando isso
Figura 3 ocorre, ele passa a ser chamado de processo-pai; e os processos que
Hierarquia na criação de são criados por ele passam a ser chamados de processos-filho, que não
processo
podem possuir mais de um processo-pai, conforme a Figura 3. Com o
A encerramento de um processo, de maneira voluntária ou pelo sistema
operacional, caso ele possua processos-filho, dependendo da situação,
B C D o sistema operacional pode destruir todos os seus descendentes ou
permitir que eles continuem existindo, mesmo depois que o processo-
E F G -pai tenha sido desfeito.
I
O init gera vários processos-filho, como:
82 Sistemas Operacionais
Figura 4
Hierarquia de processo LINUX
init
bash
vi myprog finger
Processos e threads 83
Figura 5
Transições de estado de processo com suspensão e retomada
Conclusão e E/S ou
conclusão de evento
Pronto Bloqueado
De
sp
ac
Estados
ha
ativos
E/S
(b)
Te
nto
m
de
riz (c)
po
ad
es
eve
ra
ta or
go Retomar
pe
do
Reto
Suspender
Suspender
de
Es
Em
ou
mar
execução
(a)
er
nd
pe
Sus
84 Sistemas Operacionais
Figura 6
Chaveamento de contexto
3.1.4 Interrupções
Para Deitel, Deitel e Choffnes (2005), as interrupções habilitam o
software a responder aos sinais do hardware. Para poder gerenciar
melhor as interrupções, o sistema operacional usa um conjunto de
instruções, chamado tratador de interrupção, no qual ele armazena a
resposta para cada tipo de interrupção que pode ocorrer, controlando
melhor o processador.
Processos e threads 85
Uma interrupção também pode ser iniciada por algum evento que
pode ou não estar relacionado à execução de um processo. Quando
isso ocorre, ela é considerada assíncrona, ou seja, o emissor e o recep-
tor não necessitam permanecer on-line durante toda a comunicação.
Uma interrupção assíncrona ocorre quando o usuário pressiona uma
tecla no seu teclado ou movimenta o mouse.
86 Sistemas Operacionais
ao processador que um evento ocorreu, como o término do quantum
do processo em execução, a conclusão de uma comunicação com um
dispositivo de E/S ou uma interrupção gerada por um processo; e as
exceções, que indicam a existência de possível erro, seja ele de har-
dware, seja de software. Cabe ao sistema operacional estar atento às
interrupções, identificando a sua origem e dando continuidade para a
ação que ela informa, bem como corrigindo possíveis erros reportados
pelas exceções.
3.1.5.1 Sinais
Sinais são interrupções de software que notificam ao processo que
um evento ocorreu. Eles não permitem que os processos troquem dados
entre si. Fica sob responsabilidade do sistema operacional determinar
qual processo deverá receber o sinal e como ele será respondido pelo
processo que o recebeu (DEITEL; DEITEL; CHOFFNES, 2005).
Processos e threads 87
unidirecionais, isto é, quando um processo atua como emissor e outro
como receptor da mensagem; ou bidirecional, em que cada um dos
processos pode atuar como emissor ou receptor. As mensagens po-
dem ter envios bloqueantes (comunicação síncrona) ou envios não blo-
queantes (comunicação assíncrona).
3.2 Threads
Vídeo Mesmo que os sistemas operacionais permitissem que vários pro-
gramas fossem executados simultaneamente nos computadores mais
antigos, as linguagens de programação utilizadas naquela época não
possuíam esse recurso de maneira nativa. A linguagem de programa-
ção ADA, desenvolvida pela Bull SAS para o Departamento de Defesa
dos EUA na década de 1970, foi uma das primeiras linguagens de pro-
Saiba mais
gramação a dar suporte à programação concorrente.
O nome ADA é uma homena-
gem a Ada Lovelace, matemática As linguagens de programação atuais, como Java, C#, Python etc.,
e escritora inglesa, considerada a utilizam a tecnologia multithread, que permite aos programadores de-
primeira programadora. senvolverem aplicativos que serão executados de maneira concorrente.
88 Sistemas Operacionais
mado de processo pesado (Heavyweight Process – HWP). Threads usam
um subconjunto dos recursos utilizados por um processo comum, como:
os registradores, a pilha e os Dados Específicos de Threads (Thread-Spe-
cific Data – TSD). O espaço de endereço e outras informações globais são
compartilhadas pelos threads com o processo pesado (Figura 7).
Figura 7
Relação entre thread e processo
Processo pesado
Informação global
Espaço de endereçamento
para todos os
Outros dados globais de processo
threads de um
processo
Threads
Processos e threads 89
ser executados separadamente da aplicação, fazendo uso de threads;
o desempenho, que permite às aplicações multithread fazerem uso de
um ou de vários processadores paralelamente, diminuindo significati-
vamente o tempo de execução da aplicação; e a cooperação, que per-
mite a IPC pelos threads, o que minimiza o uso de memória, pois passa
a utilizar o endereço de memória compartilhado pelo processo pesado.
Figura 8
Ciclo de vida de um thread
nascido
Iniciar
pronto
Notificar ou acordar
Conclusão de E/S
Preempção
Despacho
Concluir
90 Sistemas Operacionais
Quando precisa aguardar pela conclusão de uma requisição para
um dispositivo de E/S, o thread passa para o estado bloqueado; retor-
nando ao estado pronto somente quando a requisição tiver sido en-
cerrada. Quando precisa esperar por um evento, como o sinal de outro
thread, ele passa para o estado em espera, trocando para o estado
pronto, quando é acordado, isto é, quando recebe uma notificação de
outro thread. Quando não possuem nenhuma atividade para realizar,
logo, não necessitam utilizar o processador por um intervalo de tempo,
chamado período de sono, o thread passa para o estado adormecido,
mudando para o estado pronto somente quando o seu período de sono
termina.
Processos e threads 91
tindo portabilidade ao processo; o escalonamento de threads é feito
pelas bibliotecas do usuário, e não pelo sistema operacional; e, como
a sincronização de threads do usuário é feita fora do núcleo (core), ela
não sofre efeito do chaveamento de contexto.
Figura 9
Threads de usuário
Um processo
Espaço do
usuário
Todos os threads
de um processo
mapeiam para um
Espaço do
único contexto
núcleo
Thread
Contexto de execução
92 Sistemas Operacionais
Já como desvantagens, podemos destacar que, como o escalona-
mento e a sincronização dos threads ficam sob responsabilidade do
núcleo (core) do sistema operacional, os threads de núcleo estão su-
jeitos à sobrecarga ocasionada pelo chaveamento de contexto; além
disso, os threads de núcleo são dependentes da API para tratamento
de threads do sistema operacional, perdendo a portabilidade conquis-
tada pelos threads de usuário.
Figura 10
Threads de núcleo
Um processo
Espaço do
usuário
Thread
Contexto de execução
Processos e threads 93
Figura 11
Modelo de operação de thread híbrido
T1 T2 T3 T4 T1 T2 T3 T1 T2
Espaço do
usuário
Cada thread de
núcleo pode mapear
para um ou mais
threads de usuário
Espaço do
núcleo
Thread
Contexto de execução
94 Sistemas Operacionais
a entrega da mensagem para todos os threads do processo ou para
apenas um deles. Essa estratégia é utilizada pelo UNIX e pela especi-
ficação POSIX.
O Linux não faz distinção entre processos e threads, por isso os cha-
ma de tarefas. Ele usa a chamada fork, que cria uma tarefa-filha, que
contém todos os recursos (registradores, pilha, espaço de endereça-
mento) da tarefa-pai.
Quando uma aplicação usa uma variável compartilhada, que deve ser
atualizada, por exemplo, por threads concorrentes, o sistema operacio-
nal concede acesso restrito aos threads, isto é, enquanto um thread está
manipulando a variável, os demais precisam esperar (exclusão mútua).
Cabe ao sistema operacional organizar esse processo, limitando o aces-
so à variável para apenas um dos threads e enfileirando os demais, que
aguardam a sua vez. Esse processo é chamado de serialização.
Processos e threads 95
Também cabe ao sistema operacional garantir que o acesso à re-
gião crítica por um thread seja o mais rápido possível. Caso o thread
seja encerrado enquanto está realizando o acesso, o sistema opera-
cional deverá encerrar a exclusão mútua dessa região crítica, para que
ela possa ser acessada por outros threads, essa ação é chamada de
limpeza final.
96 Sistemas Operacionais
a sair (First In, First Out – FIFO), que possui como vantagem a simplici-
dade de ser entendido e a facilidade de ser programado.
Processos e threads 97
Figura 12
Uso de uma barreira
A A A
Processo B B B
Barreira
Barreira
Barreira
C C C
D D D
(a) Os processos se aproximam da barreira. (b) Todos os processos estão prontos e apenas um
deles está bloqueado, impedindo o avanço. (c) Quando o processo deixa de estar bloqueado,
todos eles passam pela barreira.
Fonte: Tanenbaum; Bos, 2015, p. 87.
98 Sistemas Operacionais
Para que um thread aloque recursos por meio dos monitores, ele
chama uma rotina de entrada de monitor. Caso vários threads tentem
acessar o monitor simultaneamente, o sistema operacional aplica a
exclusão mútua, permitindo que o acesso seja realizado por apenas
um thread de cada vez. Se um thread chama a rotina de entrada do
monitor e não há nenhum thread sendo executado dentro dele, ele
terá acesso ao monitor. Caso contrário, ele terá de esperar até que o
monitor seja destravado. Quando isso ocorre, o monitor cria uma fila
de espera, priorizando os que estão na fila há mais tempo.
Processos e threads 99
O buffer circular pode ser utilizado pelo sistema operacional para
gerenciar o controle de spooling, que ocorre quando um thread
(spooler) gera dados que precisam ser impressos por uma impressora,
por exemplo. O spooler escreve os dados no buffer circular, que são
lidos por outro thread (despooler), que os encaminha para a impresso-
ra. Comparando as velocidades desse processo, o spooler é muito mais
rápido do que a impressora, que por sua vez, é mais rápida do que o
despooler.
ATIVIDADES
1. Do que é formado o espaço de endereçamento do processo?
REFERÊNCIAS
COFFMAN JR., E. G.; ELPHICK, M. J.; SHOSHANI, A. System Deadlocks. ACM Computing
Surveys, v. 3, p. 67-68, 1971. Disponível em: http://www.ccs.neu.edu/home/pjd/cs7600-s10/
Tuesday_January_26_01/p67-coffman.pdf. Acesso em: 5 ago. 2020.
COURTOIS, P.J.; HEYMANS, F.; PARNAS, D. L. Concurrent control with readers and
writers. Communications of the ACM, v. 14, n. 10, p. 667–668, out. 1971. Disponível em:
https://www.academia.edu/20962701/Concurrent_control_with_readers_and_writers.
Acesso em: 5 ago. 2020.
DEITEL, H. M.; DEITEL, P.; CHOFFNES, D. Sistemas operacionais. 3. ed. Trad. de Arlete Simille
Marques. São Paulo: Pearson, 2005.
TANENBAUM, A.; BOS, H. Sistemas operacionais modernos. 4. ed. São Paulo: Pearson
Universidades, 2015.
4.1.1 Conceito
A memória real, também conhecida como memória física, memória
principal, memória primária ou, simplesmente, memória, é o único com-
ponente do computador acessado diretamente pela CPU, que lê conti-
nuamente as instruções armazenadas nela e executa-as.
4.1.2 Organização
Segundo Deitel, Deitel e Choffnes (2005), historicamente, a memória
real sempre foi considerada um recurso relativamente caro. Mesmo se
levarmos em consideração o declínio do valor de hardware e a evolução
do custo de software, que marcaram a democratização do uso de com-
putadores, mudando o cenário em que estes eram limitados a poucos,
passando para o uso de computadores pessoais, notebooks, tablets
etc., e mesmo diante da redução de custos, os sistemas operacionais
e as aplicações têm exigido volumes cada vez maiores de memória. O
Windows XP, por exemplo, desenvolvido pelo Microsoft, recomendava
256 MB de memória principal para o seu uso adequado. Sua versão
mais moderna, o Windows 10, recomenda 1 GB, para a versão 32 bits,
e 2 GB, para a versão 64 bits.
4.1.3 Gerenciamento
O sistema operacional faz uso do gerenciador de memória para
organizar e definir as estratégias de gestão de memória, que determi-
nam qual organização deverá ser utilizada, mediante diferentes cargas
de processos. Ele define a maneira com que o espaço livre é alocado
pelos processos e como atuar diante das possíveis mudanças na utili-
zação de memória dos processos.
Tempo de
acesso ao Memória
armazenamento cache
diminui Um processador pode
Velocidade acessar programas e
de acesso ao dados diretamente
armazenamento Memória primária
aumenta
Custo de
armazenamento
por bit aumenta O sistema deve primeiramente
transferir programas e dados para
Armazenamentos secundário
Capacidade de a memória principal antes que um
e terciário
armazenamento processador possa referenciá-los
diminui
Figura 2
Exemplo de sobreposição de memória
0
Sistema operacional
Programa usuário cujos requisitos de
a memória são maiores do que a porção
Parte do código e dos disponível da memória principal
dados do usuário que
deve permanecer na
memória durante a Fase de Fase de Fase de
execução inicialização processamento saída
b b b b
1
2
3
Área de
sobreposição
c
1 Carregue a fase de inicialização em b e execute.
2 Depois carregue a fase de processamento em b e execute.
3 Então carregue a fase de saída em b e execute.
Figura 3
Alocação de memória contígua em sistemas monousuário
0
Sistema operacional
Usuário
Não utilizada
Figura 4
Uso do registrador de fronteira para proteger o sistema operacional
0
Processador
Sistema operacional
a
Registrador de
fronteira
Usuário
O sistema impede o
usuário de acessar
endereços menores do
que a
b
Não utilizada
P1 P1 P1
P2 Lacuna Lacuna
Lacuna
P2 termina
e libera sua
memória
P3 P3 P3
P4 P4 Lacuna
P4 termina
e libera sua
memória
P5 P5 P5
Jeffersonsl/Wikimedia Commons
diferença entre memórias
lógica e física, a distinção
entre partições fixas e
variáveis e swapping,
leia o capítulo 6 da obra
Sistemas operacionais,
e o capítulo 4 da obra
Sistemas operacionais:
projeto e implementação.
4.2.1 Conceito
Uma solução simples para todos os esforços de organização e ge-
renciamento da memória real seria aumentar o tamanho da memória
dentro dos computadores. Porém, como mencionamos anteriormente,
a memória real é um componente caro, e o seu uso em larga escala tor-
naria o valor final do computador muito alto e proibitivo para a maioria
dos usuários.
Figura 7
Evolução da organização da memória
Real Real Virtual
Multiprogramação Paginação e
Multiprogramação Paginação Segmentação segmentação
de partição fixa de partição variável pura pura combinadas
Absoluta Realocável
4.2.2 Organização
O sistema de memória virtual utiliza dois tipos de endereço: os vir-
tuais, empregados pelos processos, e os físicos ou reais, responsáveis
por informar as localizações físicas de armazenamento na memória
principal.
Processador (es)
Memória Discos
principal e
caches
Outros tipos de
armazenamento
secundário
Figura 9
Mapeamento entre endereços virtuais e endereços reais
Memória virtual
Memória
física
Mecanismo de
mapeamento de
endereços
4.2.2.1 Paginação
1 A paginação usa o mapeamento de blocos de tamanho fixo (pá-
1
ginas) e é representada pela tupla (p, d), em que p corresponde ao
Tupla é um tipo composto de
dado. número da página na memória virtual, na qual o item está armazena-
do, e d ao deslocamento do início da página p, na qual o item está
armazenado.
4.2.2.2 Segmentação
Uma alternativa para a paginação é a segmentação da memória fí-
sica, na qual o programa é dividido em blocos de dados ou instruções,
que são nomeados segmentos, consistindo em localizações contíguas,
porém não precisam ser do mesmo tamanho ou ocupar posições ad-
jacentes entre si na memória principal. Uma das vantagens dos siste-
mas de segmentação virtual é a possibilidade de armazenar na memória
principal somente os segmentos necessários para a execução do proces-
so, deixando os demais no armazenamento secundário. O endereço de
segmentação virtual é representado pela tupla v = (s, d), em que s corres-
ponde ao número do segmento na memória virtual e d ao deslocamento
dentro do segmento s, onde está localizado o item referenciado.
4.2.3 Gerenciamento
Na seção anterior, abordamos a organização da memória virtual, o
uso de paginação e segmentação e os sistemas que combinam essas
duas técnicas. Nesta seção, analisaremos as possíveis formas de geren-
ciamento da memória virtual.
Figura 10
Relação espaço-tempo da política paginação por demanda
Alocação de memória física
Processo em
execução
Uma
moldura de
página
Espera de
Espera de página
Espera de página
Espera de página
Espera de página Tempo de
página “relógio”
F F F F F
Figura 11
Substituição de páginas FIFO
Substituição de
Referência
páginas FIFO com
de página Resultado
três páginas
A Falta A – –
B Falta B A –
C Falta C B A
A Sem falta C B A
A é substituída
D Falta D C B
B é substituída
A Falta A D C
... ...
Substituição de Substituição de
Referência
páginas FIFO com páginas FIFO com
de página Resultado quatro páginas disponíveis
três páginas disponíveis
A Falta A – – Falta A – – –
B Falta B A – Falta B A – –
C Falta C B A Falta C B A –
D Falta D C B Falta D C B A
A Falta A D C Sem falta D C B A
B Falta B A D Sem falta D C B A
E Falta E B A Falta E D C B
Figura 13
Substituição de página menos recentemente usada (MRU)
Substituição de
Referência página MRU com três
de página Resultado páginas disponíveis
A Falta A – –
B Falta B A –
C Falta C B A
B Sem falta B C A
B Sem falta B C A
A Sem falta A B C
D Falta D A B
A Sem falta A D B
B Sem falta B A D
F Falta F B A
B Sem falta B F A
Figura 14
Grafo utilizado pela estratégia de substituição de página longínqua
C D E
H
F G
P Q é escolhida para
M N O substituição
Figura 15
Espaço de endereçamento único (a) – Espaço de Programas (I) e Dados (D) separados
Espaço de
endereçamento único
Espaço I Espaço D
232 232
Página não utilizada
Dados
Dados
Programa Programa
0 0
(a) (b)
Fonte: Tanenbaum e Bos, 2015, p. 136.
A
Na criação do processo, quando o sistema operacional precisa de-
terminar o tamanho inicial do programa e realizar a criação da tabela
de páginas a ser usada por ele.
C
za a leitura dos registradores (hardware) para identificar qual endereço
virtual está gerando a falta de página, corrigindo o erro por meio do des-
carte de uma página que não está sendo utilizada e alocando uma nova
página a ser usada pelo processo que deu erro.
D
Na finalização do processo, quando o sistema operacional libera
a tabela de páginas, as páginas e o espaço em disco ocupado pelas
páginas.
Figura 16
Tratamento de falta de página no espaço do usuário
3. Solicitação de página
Memória principal
Disco
Espaço do Processo
Paginador
do usuário
usuário externo
2. Página 4. Página
necessária chega
5. Aqui está a
1. Falta página
de página Livro
Espaço do Manipulador Manipulador
de faltas de MMU
núcleo Para compreender um
6. Mapa pouco mais a implemen-
da página
tação da memória virtual
e a alocação de memória,
Fonte: Tanenbaum e Bos, 2015, p. 144. leia a seção 4.3 da obra
Sistemas operacionais: pro-
jeto e implementação.
A vantagem dessa abordagem está na modularidade e flexibilidade
que são concedidas ao código. No entanto, a principal desvantagem re- TANENBAUM, A. S.; WOODHULL,
A. S. 3. ed. Porto Alegre: Bookman,
side na sobrecarga criada pela comunicação entre o núcleo e o usuário, 2008.
em virtude da necessidade de troca de mensagens entre as partes para
executar o fluxo descrito.
CONSIDERAÇÕES FINAIS
Neste capítulo, aprofundamos a nossa visão sobre a memória do
computador, seja ela real ou virtual. Cada vez que um usuário solicita a
execução de um programa, o sistema operacional deve selecionar quais
são as páginas necessárias para que o programa seja executado. Elas de-
verão ser armazenadas na memória principal, onde estarão disponíveis
para serem utilizadas pelo processador. Caso não haja memória suficien-
te, este pode fazer uso da memória virtual para não impedir o processo.
Tudo é feito antes da execução, em um sincronismo e uma velocidade
imperceptíveis ao usuário. Esse fluxo se baseia em algoritmos e estudos
feitos pelos projetistas de hardware/software, cientistas da computação e
matemáticos, que buscam sempre identificar possíveis problemas e defi-
nir novas formas de projeto e implementação.
ATIVIDADES
1. O que determina a estratégia de busca?
REFERÊNCIAS
DEITEL, H. M.; DEITEL, P. J.; CHOFFNES, D. R. Sistemas operacionais. São Paulo: Pearson
Universidades, 2005.
TANENBAUM, A. S.; BOS, H. Sistemas Operacionais Modernos. São Paulo: Pearson
Universidades, 2015.
5.1 Criptografia
Vídeo De acordo com Deitel, Deitel e Choffnes (2005), a criptografia tra-
ta da codificação e decodificação de dados, de modo que esses pos-
sam ser interpretados apenas pelos receptores a que se destinam.
Isso ocorre devido à transformação dos dados por meio de uma cifra
Meio de
comunicação
Criptografa
(como internet)
Compre 100 ações
XY%#?42%Y
da empresa X
Texto comum Chave Texto cifrado
Emissor
simétrica
secreta Mesma chave
simétrica secreta
Figura 2
Uso de uma central de distribuição de chaves
“Quero me
1 comunicar com
o receptor” Central de distribuição
Emissor de chaves (KCD) Receptor
2
3
3
Chave de sessão (chave
secreta simétrica)
Chave de sessão Criptografa Criptografa Chave de sessão
criptografada com a criptografada com a
chave KDC do emissor chave KDC do receptor
Figura 3
Fluxo de uma mensagem fazendo uso de chave pública
Meio de comunicação
Compre 100 ações da Criptografa (como internet)
XY%#?42%Y
empresa X
Figura 4
(a) Cálculo de um bloco de assinatura. (b) Documento recebido pelo receptor
Documento
Valor resumo
reduzido a um
submetido à D
valor resumo
Documento Documento
Resumo D(resumo)
original original
Bloco de
assinatura { D(resumo)
(a) (b)
Fonte: Tanenbaum; Bos, 2015, p. 384.
5.2 Autenticação
Vídeo Uma das grandes preocupações do sistema operacional no que
se refere à segurança é identificar os usuários que o estão acessan-
do, além de definir o nível de permissão de acesso que cada usuário
possui. Conforme Tanenbaum e Bos (2015), a maioria dos métodos de
autenticação de usuários tem como base um dos três princípios gerais
da identificação:
Glossário
hacker: pessoa que busca
C Alguma coisa que o usuário é, ou seja, uma característica exclusiva
dele – impressão digital, varredura de retina, assinatura, entre outras.
Figura 5
Uso de um cartão inteligente (smart card) para autenticação
Computador
remoto
Cartão 1. Desafio enviado ao
inteligente cartão inteligente
3. A resposta
é devolvida
2. Cartão
inteligente calcula Leitor de cartão
a resposta inteligente
Fonte: Tanenbaum; Bos, 2015, p. 404.
Usuário: Usuário:
(a) (b)
Fonte: Tanenbaum; Bos, 2015, p. 407.
O usuário envia o
Caso os dados TGT decriptado ao Ao receber o
O usuário TGS e solicita um bilhete de serviço,
fornecidos sejam Se o TGT for
fornece login bilhete de serviço, o usuário o
válidos, o servidor válido, o TGS vai
e senha para que autorizará ao decripta e o utiliza
de autenticação gerar um bilhete
o servidor de usuário o acesso para acessar os
emite um bilhete de serviço que
autenticação. aos serviços da recursos da rede.
de concessão de é criptografado
entrada (Ticket- rede. fazendo uso da
-Granting Ticket chave secreta do
– TGT), que é usuário.
criptografado
fazendo uso da chave
secreta fornecida
pelo usuário.
B
Política de segurança: define para os usuários quais são os privilé-
gios que eles possuem. A política de segurança é definida pelo usuá-
rio ou administrador do sistema operacional.
Figura 7
Matriz de controle de acesso
Objeto
Domínio Arquivo1 Arquivo2 Arquivo3 Arquivo4 Arquivo5 Arquivo6 Impressora1 Plotter2
Leitura
1 Leitura
Escrita
Leitura
Leitura
2 Leitura Escrita Escrita
Escrita
Execução
Leitura
3 Escrita Escrita Escrita
Execução
Figura 8
Lista de capacidades
Processo
Processo
Espaço do
A B C usuário
ou seja, uma combinação das permissões de leitura (read – r), escrita Disponível em: https://
www.youtube.com/
(write – w) e execução (execute – x) que é atribuída a três níveis dife- watch?v=acGpu4z0azk. Acesso em:
rentes: o do usuário, em que as permissões são concedidas ao dono 3 ago. 2020.
do arquivo; o de grupo, que
concede as permissões a um
membro de um grupo; e, por
fim, o nível outros, em que as
permissões são atribuídas a
um usuário que não é o dono
do arquivo nem membro de
Figura 9
um grupo. Atributos de controle de
acesso no Linux
A Figura 9 mostra a se-
quência de controle de aces-
so para os diretórios, links
Figura 10
Firewall protegendo uma LAN com três computadores
Conexão
com a rede Rede local
Firewall de filtragem de
pacotes: examina os pacotes
que são enviados de fora da
rede, com base em regras
como a origem do pacote, do
endereço ou da porta. Uma Gateway de nível de
desvantagem nesse tipo de aplicação: busca proteger
firewall é que ele avalia somente a rede contra os dados
a origem do pacote de dados, contidos nos pacotes.
sem levar em conta os dados Caso o pacote recebido
anexados à mensagem, o que contenha um vírus, ele será
pode permitir a entrada de vírus identificado pelo gateway,
no sistema. que vai impedir o seu envio
para o destinatário.
Figura 11
Propagação por vírus polimórfico
2ª geração
Criptografia Assinatura
Carga
explosiva
Vírus polimórfico criptografada
Vírus típico 1ª geração
Código inofensivo Variável Código inofensivo
Algoritmo de Assinatura
Adicionar no-ops
Carga explosiva Assinatura polimorfismo Carga explosiva
Liberação de correções de
segurança (security patch) para as
falhas identificadas.
Emissor Criptografa
Compre 100 ações
XY%#?42%Y
da empresa X
Chave Texto cifrado
Texto comum
simétrica
secreta 3
Envelope
digital
Criptografa
2
Cada vez mais os dispositivos conectados por fio têm sido subs-
tituídos pelos dispositivos que permitem aos usuários transmitirem
dados sem fio, que, além da largura de banda e capacidade de pro-
cessamento limitados, da alta latência e das conexões instáveis, per-
mitem que os dados transmitidos sejam acessados mais facilmente
do que a transmissão com fio.
Os sistemas proprietários já vêm com uma configuração padrão Disponível em: https://
www.youtube.com/
de segurança ao serem instalados. Eles podem ser tão seguros
watch?v=eOsGqXy2vmA. Acesso
quanto os de código-fonte aberto. em: 7 ago. 2020.
CONSIDERAÇÕES FINAIS
Neste capítulo, aprofundamos nossa visão sobre a segurança do com-
putador. A evolução do hardware e do software nem sempre minimizam
as preocupações dos administradores de redes e especialistas de segu-
rança no que se refere às possíveis oportunidades para invasão, destrui-
ção e furto de dados sensíveis dos computadores.
ATIVIDADES
1. O que é um sistema de criptografia por chave secreta ou chave
simétrica?
REFERÊNCIAS
DEITEL, H. M.; DEITEL, P.; CHOFFNES, D. Sistemas operacionais. 3. ed. Trad. de Arlete Simille
Marques. São Paulo: Pearson, 2005.
TANENBAUM, A.; BOS, H. Sistemas Operacionais Modernos. 4. ed. São Paulo: Pearson
Universidades, 2015.
Gabarito 161
5. Um sistema é considerado crítico em negócios quando falha e pode
resultar em perdas econômicas significativas para a empresa que
o utiliza. Podemos citar, como exemplos, os servidores web e os
servidores de bancos de dados.
3 Processos e threads
1. O espaço de endereçamento do processo é formado por uma região
de texto que armazena o código que o processador executa; uma
região de dados que armazena as variáveis e a memória alocada
dinamicamente durante a execução do processo; e uma região de pilha
que armazena as instruções e as variáveis locais para chamadas ativas
ao procedimento, que fazem a pilha crescer quando são emitidas, e
diminuir quando o procedimento retorna às chamadas.
Gabarito 163
SI STE M AS O PE R ACION AIS
Este livro é destinado a uma melhor compreensão
do papel e das atividades desempenhadas pelo
sistema operacional. Para isso, começa com uma
apresentação histórica dos sistemas operacionais,
seus possíveis ambientes, seus componentes e sua
arquitetura. Em seguida, explica a forma com que
o sistema operacional interage com o hardware
e com o software; a execução de tarefas pelos
sistemas operacionais; a conversão de processos
em threads; o armazenamento em memória real e
em memória virtual do computador; e, finalmen-
te, trata da segurança em sistemas operacionais,
as possíveis formas de ataque e defesa dos siste-
mas e apresenta técnicas de proteção dos dados
trocados pelos computadores.
A N D E RS ON D U T R A MO U R A
cionais e destina-se aos estudantes que desejam
aprofundar seus conhecimentos sobre esse co-
adjuvante que merece todos os créditos por um
trabalho bem realizado nos nossos computadores.