Buscar

Livro de Sistemas Operacionais (1)

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 1
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
“A Faculdade Católica Paulista tem por missão exercer uma ação integrada de suas atividades educacionais, visando à 
geração, sistematização e disseminação do conhecimento, 
para formar profissionais empreendedores que promovam 
a transformação e o desenvolvimento social, econômico e 
cultural da comunidade em que está inserida.
Missão da Faculdade Católica Paulista
 Av. Cristo Rei, 305 - Banzato, CEP 17515-200 Marília - São Paulo.
 www.uca.edu.br
Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma 
sem autorização. Todos os gráficos, tabelas e elementos são creditados à autoria, 
salvo quando indicada a referência, sendo de inteira responsabilidade da autoria a 
emissão de conceitos.
Diretor Geral | Valdir Carrenho Junior
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 3
SUMÁRIO
AULA 01
AULA 02
AULA 03
AULA 04
AULA 05
AULA 06
AULA 07
AULA 08
AULA 09
AULA 10
AULA 11
AULA 12
AULA 13
AULA 14
AULA 15
AULA 16
 05
13
19
24
32
37
43
49
55
60
66
73
79
85
91
97
CONCEITOS, FUNÇÕES E HISTÓRICO DOS 
SISTEMAS OPERACIONAIS
TIPOS DE SISTEMAS OPERACIONAIS
GERENCIAMENTO DE PROCESSOS
GERENCIAMENTO DE MEMÓRIA
GERENCIAMENTO DE ARQUIVOS
GERENCIAMENTO DE ENTRADA E SAÍDA
GERENCIAMENTO DE PROTEÇÃO E SEGURANÇA
THREADS
UTILIZANDO THREADS
SISTEMAS OPERACIONAL COM VÁRIOS 
PROCESSADORES
ESCALONADOR DA CPU
ALGORITMOS AVANÇADOS DE ESCALONAMENTO
INTRODUÇÃO A DEADLOCKS
VIRTUALIZAÇÃO E MÁQUINAS VIRTUAIS
SISTEMAS OPERACIONAIS MULTIMÍDIA
SISTEMAS OPERACIONAIS PARA DISPOSITIVOS 
MÓVEIS
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 4
INTRODUÇÃO
Antes de ter acesso às casas de milhões de pessoas, os computadores passaram 
por considerável evolução e por muitas adaptações: de artefatos enormes, lentos e 
pouco confiáveis para dispositivos leves, rápidos e absolutamente precisos; de má-
quinas em trabalho isolado a componentes ativos de uma enorme rede mundial e, 
por fim, de executores de tarefas simples a sofisticadas plataformas científicas e de 
multimídia. Fica difícil imaginar o que os computadores não sejam capazes de fazer 
em nossos dias e essa variedade de funções contribuiu para que todos nós desenvol-
vêssemos a necessidade de ter um deles por perto.
Embora sejam muito importantes, as transformações visíveis e palpáveis não fo-
ram as únicas que nos impulsionaram até aqui. A evolução do software contribuiu de 
forma decisiva para tornar simples a utilização da máquina e, neste contexto, o papel 
mais importante cabe aos Sistemas Operacionais. Afinal, são eles que gerenciam 
todos os recursos de um sistema computacional e que constituem a ponte entre o 
hardware e o usuário comum, possibilitando que a experiência de uso de um compu-
tador seja agradável e produtiva.
Foi justamente para esclarecer os meios pelos quais um Sistema Operacional atua 
que criamos este material. Com um viés objetivo e de fácil compreensão, os encon-
tros se iniciam com a abordagem histórica do nosso tema principal, avança na direção 
dos seus tipos e chega até o conceito de processos, elemento essencial na constru-
ção de um Sistema Operacional e que será recorrente em nossas abordagens. Nosso 
conteúdo segue tratando das formas de gerenciamento que um SO exerce sobre os 
recursos do computador e é finalizado com threads, multiprogramação, virtualização 
e Sistemas Operacionais multimídia e mobile.
Esperamos que esta aventura pelos caminhos dos Sistemas Operacionais seja 
muito proveitosa a você e que o conteúdo que por aqui será conhecido seja decisivo 
no restante da sua vida acadêmica, além de te credenciar a uma jornada profissional 
de muito sucesso.
Seja muito bem-vinda e seja muito bem-vindo!
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 5
AULA 1
CONCEITOS, FUNÇÕES E 
HISTÓRICO DOS SISTEMAS 
OPERACIONAIS
De todos os recursos que um sistema de computação possui, o Sistema Operacional 
talvez seja aquele que ofereça as funções mais desconhecidas para o usuário comum. 
Ainda que sua interface gráfica seja a porta de entrada para o uso de qualquer aplicação, 
a utilidade de um Sistema Operacional vai muito além da conveniência dos ícones, das 
teclas de atalho e uso do mouse. Embora silenciosas e independentes de alguma 
ação do usuário, são essas “funções desconhecidas” que viabilizam interações que, 
de outra forma, seriam extremamente trabalhosas e comprometeriam seriamente a 
experiência de uso de um computador.
Para que nosso conhecimento sobre Sistemas Operacionais comece a ser 
construído pela base e de forma bem gradativa, trataremos neste nosso encontro 
dos conceitos introdutórios e das suas principais funções, sem nos esquecermos do 
necessário resgate histórico dos fatos e das circunstâncias que contribuíram para 
que nosso objeto de estudo alcançasse o atual estado da arte em que se encontra, e 
o habilitaram à franca evolução nos anos que se seguirão. Sigamos em frente e bom 
estudo! 
1.1 Conceitos e principais funções dos Sistemas Operacionais
Definitivamente, um Sistema Operacional não é um programa comum. Em um 
ambiente complexo e formado por dispositivos com diversas funções é dele a missão 
de exercer a coordenação entre esses elementos e de viabilizar a criação de outras 
aplicações para o computador. Sem o Sistema Operacional, um desenvolvedor 
deveria, por exemplo, criar mecanismos de gerenciamento de todos os periféricos e 
outros dispositivos que a sua aplicação utilizaria, antes de aventurar-se a efetivamente 
desenvolvê-la. Inviável, para dizer o mínimo.
O Sistema Operacional é um programa que gerencia o hardware de um 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 6
computador. Ele também fornece uma base para os programas aplicativos e atua 
como intermediário entre o usuário e o hardware do computador. Considerando que 
um sistema computacional pode ser mais facilmente entendido através da separação 
entre componentes, o Sistema Operacional exerce o papel de intermediário entre 
aplicativos de usuário e o hardware da máquina, possibilitando a comunicação entre 
estas partes e viabilizado o trabalho do desenvolvedor, conforme já mencionado 
(SILBERSCHATZ, GALVIN, GAGNE, 2015). A figura 1 nos oferece visão de um sistema 
computacional típico que inclui usuários fazendo uso de aplicativos, que se conectam 
ao hardware por meio do Sistema Operacional.
Figura 1: Visão de um sistema computacional
Fonte: (SILBERSCHATZ; GALVIN; GAGNE, 2015)
Embora pareça simples na figura, a atuação de um Sistema Operacional é bastante 
complexa e inclui funções não exatamente afins, conforme logo examinaremos. Essa 
multiplicidade de funções acaba, inclusive, dificultando sua própria conceituação. 
Tanenbaum e Bos (2016) afirmam ser difícil dizer com absoluta precisão o que é 
um Sistema operacional, em parte por realizarem duas funções essencialmente não 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 7
relacionadas: (i) fornecer aos programadores de aplicativos (e aos próprios aplicativos, 
naturalmente) um conjunto de recursos claros e fáceis de serem utilizados, ao invés 
de recursos confusos de hardware, e (ii) gerenciar esses recursos de hardware. Este 
cenário nos impele a observar os Sistemas Operacionais considerando duas grandes 
funções (TANENBAUM; BOS, 2016): 
• Sistema Operacional como uma máquina estendida: neste contexto, o Sistema 
Operacional é tido como um fornecedor de abstrações que viabilizará a utilização da 
máquina para fins de desenvolvimento de aplicações. As abstrações criadas tornam 
tarefas extremamente complexas em atividades viáveis para o desenvolvedor e, por 
consequência, para o usuário comum. Uma interface gráfica de usuário é um exemplo 
clássico dessasabstrações. 
• Sistema Operacional como um gerenciador de recursos: é neste item que um 
Sistema Operacional assume o papel de gerenciador de todos os recursos de um 
sistema computacional, incluindo a memória da máquina. Conforme investigaremos 
em aulas seguintes, o controle da memória permitirá que vários programas a ocupem 
simultaneamente, e que o usuário tenha a sensação de que estão sendo executados 
também ao mesmo tempo.
Feitas essas considerações, avançamos agora para a abordagem histórica dos 
Sistemas Operacionais.
1.2 Histórico dos Sistemas Operacionais
Ao fazermos o resgate histórico de um tema é comum que uma consideração 
importante deva ser feita antes: a divisão das fases resultantes da evolução de um 
objeto de estudo são quase sempre produto de análise posterior dos fatos e nunca 
resultado de um registro ou apontamento feito no calor dos acontecimentos. Em 
outras palavras, a organização dos períodos evolutivos é fruto de convenções de datas 
criadas por observadores que podem sequer ter participado do evento que motivou a 
virada de fase do objeto de estudo.
Bons exemplos para ilustrar essa realidade não faltam. Em 1789, a Revolução 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 8
Francesa inaugurou um novo período histórico, que hoje chamamos Idade 
Contemporânea. No entanto, não é difícil de imaginar que essa divisão tenha sido 
convencionada anos depois, e não quando o fato ocorria. Quando se trata de datas, 
sempre devemos considerar certa imprecisão e eventuais sobreposições de fatos, o 
que não exclui a importância do estudo histórico.
Em nosso contexto é muito comum que a evolução dos Sistemas Operacionais 
esteja relacionada diretamente à evolução do próprio hardware dos computadores, 
tamanho o grau de interdependência entre ambos. Autores diferentes costumam expor 
esta evolução de formas diferentes, mas alguns valem mais a menção. Tanenbaum e 
Bos (2016) usam o histórico de evolução dos computadores para explicarem a própria 
evolução dos Sistemas Operacionais e dividem a trajetória de ambos em gerações, 
como segue:
• Primeira Geração (1945 a 1955): na década de 1940 os computadores operavam 
sem Sistemas Operacionais e se caracterizavam pelo seu funcionamento com válvulas. 
Foi a Segunda Guerra Mundial (1939 a 1945) que deu motivos para a evolução dos 
computadores, justamente pela necessidade de criar um artefato que pudesse fazer 
cálculos balísticos com maior precisão e decifrar o código usado nas transmissões 
feitas entre os alemães. Contam os autores que, no começo da década de 1940, o 
professor John Atanasoff e seu aluno de graduação, Clifford Berry, construíram o que 
hoje é tido como o primeiro computador digital funcional do mundo. Pouco tempo 
depois, outras criações se sucederam, todas muito rudimentares e que não usavam 
linguagem de programação, pois elas simplesmente não existiam. Como você pode 
imaginar, os Sistemas Operacionais também era algo de que nunca se tinha ouvido 
falar. 
ISTO ESTÁ NA REDE
O filme chamado O Jogo da Imitação (2015) retrata parte da história de Alan Turing 
e sua busca por construir uma máquina que pudesse decifrar o código nazista 
usado para comunicação durante a Segunda Guerra Mundial. Esta máquina foi a 
base para o que hoje conhecemos como computador. O trailer oficial do filme está 
disponível em: https://www.youtube.com/watch?v=YIkKbMcJL_4. Acesso em: 1 de 
jun. de 2021.
https://www.youtube.com/watch?v=YIkKbMcJL_4
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 9
• Segunda Geração (1955 a 1965): esta geração é caracterizada pelo uso de 
transistores na construção dos computadores e pelo processamento em lotes (ou 
batch). Além disso, foi nesta época que os computadores se tornaram confiáveis 
o suficiente para serem fabricados e vendidos a clientes com muitos recursos 
financeiros e com uma equipe técnica altamente capacitada para operar a máquina. 
Um procedimento comum de entrada de dados nestes computadores incluía a 
presença de um cartão perfurado que continha o tempo máximo de processamento 
para aquela tarefa e o nome do programador. Após a leitura destes dados iniciais, 
um outro cartão perfurado transmitia ao computador o comando para carregar 
o compilador FORTRAN a partir da fita magnética do sistema, e o programa a ser 
compilado era também carregado para o computador. Por fim, um cartão com o 
comando de execução do programa era carregado e só então a tarefa terminava.
Por primitivo que possa parecer, este procedimento realizado por cartões foi o 
precursor das linguagens de controle de tarefas e dos interpretadores de comando 
modernos, bases para os nossos Sistemas Operacionais. Completam Tanenbaum e 
Bos (2016) que os grandes computadores de segunda geração eram usados na maior 
parte para cálculos científicos e comumente programados FORTRAN. Os Sistemas 
Operacionais mais comuns eram o FMS (Fortran Monitor System) e o IBSYS, da IBM.
Terceira Geração (1965 a 1980): a possibilidade de se implementar a 
multiprogramação foi uma das características mais importantes desta geração. Foi 
nessa época também que os fabricantes resolveram criar famílias de computadores 
compatíveis com o trabalho científico e com processamento de dados e rotinas 
comerciais. Antes dessa tendência, os fabricantes costumavam manter linhas 
distintas e quase sempre incompatíveis entre sim. Com a intenção de permitir 
o funcionamento de programas de múltiplas naturezas, a IBM lançou um Sistema 
Operacional que deveria funcionar em toda as suas famílias de computadores, tanto 
os de pequeno porte quanto os de grande porte. Há que se registrar que, naquela 
época, essa premissa fez surgir um Sistema Operacional extremamente grande, 
complexo e cheio de bugs, batizado de OS/360.
Apesar do tamanho enorme e dos problemas, o OS/360 e os Sistemas Operacionais 
de terceira geração similares proporcionaram um grau de satisfação relativamente 
bom para a maioria de seus clientes. Eles também popularizaram várias técnicas-chave 
ausentes nos sistemas operacionais de segunda geração. Talvez a mais importante 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 10
dessas técnicas tenha sido a multiprogramação (TANENBAUM, BOS, 2016). Foi pela 
multiprogramação que os projetistas da época conseguiram minimizar o tempo de 
espera ociosa entre os procedimentos de entrada e de processamento próprios de um 
programa. A implementação desta solução veio com a divisão da memória em várias 
partes, cada uma responsável por armazenar uma tarefa distinta, conforme exibido 
na figura 2. 
Figura 2: Um sistema de multiprogramação com três tarefas na memória
Fonte: (TANENBAUM; BOS, 2016, p.8)
Enquanto uma tarefa aguardava pela finalização do processo de entrada ou saída, 
outra tarefa poderia fazer uso da CPU o que tornava sua ocupação muito mais 
otimizada. Outra evolução importante foi a possibilidade de se transferir tarefas 
contidas em cartões perfurados para discos rígidos, o que, por sua vez, facilitada a 
transferência da tarefa para a partição de memória disponível. Oliveira (2010) contribui 
com essa discussão ao afirmar que o surgimento dos discos magnéticos foi, de fato, 
muito importante para a viabilização do conceito da multiprogramação. Segundo o 
autor, a velocidade de resposta do meio magnético favoreceu a diminuição do tempo 
para a realização de operações de entrada e saída, diminuindo assim o tempo ocioso 
dos processadores. 
Como consequência natural da evolução dos meios de fabricação dos computadores, 
era natural esperar que eles também tivessem seu tamanho e complexidade estrutura 
diminuídos. Foi assim que a família PDP, formadas por minicomputadores, tornou-se 
um absoluto sucesso de vendas desta terceira geração.
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 11
ANOTE ISSO
Foi em um computador PDP-7 que o Cientista da Computação Ken Thompson 
desenvolveuuma versão do Sistema Operacional MULTICS para um único usuário. 
Mais tarde, essa versão foi aprimorada e então batizada como UNIX. 
Quarta Geração (1980 a 1990): esta geração é marcada pelo surgimento dos 
computadores pessoais, em grande parte impulsionado pelo extraordinário progresso 
obtido nos processos de miniaturização dos circuitos integrados. A possibilidade de 
que um usuário comum pudesse ter um computador em casa era algo impensável em 
gerações anteriores. Antes, porém, que os computadores pessoais invadissem a casa 
das pessoas, muita criação e evolução foram aplicadas nos Sistemas Operacionais.
O lançamento do processador 8080, da Intel, deu oportunidade para que o primeiro 
microcomputador com um disco fosse produzido. Neste cenário, era natural que 
um novo Sistema Operacional tivesse que ser criado e assim surgiu o CP/M (Control 
Program for Microcomputers ou programa de controle para microcomputadores). O 
contexto de negócios que se originou da criação do CP/M foi bastante curioso, para 
dizer o mínimo, e é assim contada por Tanenbaum e Bos (2016): no início da década de 
1980, a IBM projetou o IBM PC e, por causa da necessidade de encontrar um software 
para ser executado nele, seu pessoal contatou Bill Gates, na esperança de que ele 
pudesse indicar um sistema operacional para ser executado no PC. 
Gates, então, sugeriu que a IBM contatasse a Digital Research, então a empresa de 
Sistemas Operacionais dominante e proprietária do CP/M. Ocorre que os dirigentes da 
Digital Research se recusaram a receber a IBM, e novamente Bill Gates foi acionado. 
Quando a IBM voltou Gates lembrou-se que um fabricante de computadores local, 
a Seattle Computer Products tinha um Sistema Operacional adequado, o DOS (Disk 
Operating System ou Sistema Operacional de Disco). Ele os procurou e pediu para 
comprar o DOS e, por US$ 75.000, iniciou a história de maior sucesso da Computação.
Quinta Geração (1990 até o presente): esta geração incorpora toda a evolução das 
anteriores e é fortemente caracterizada pelos dispositivos móveis. A incorporação de 
um Sistema Operacional nestes dispositivos (junto com os aplicativos adequados) 
foi o que possibilitou que usássemos nosso telefone para enviar e receber e-mails e 
mensagens instantâneas, além de encontrarmos o melhor caminho entre dois pontos 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 12
e, claro, acessarmos nossas redes sociais. Empresas como a Apple, Samsung e 
Windows (este último por um período curto) desenvolveram ou aprimoraram Sistemas 
Operacionais para seus dispositivos e os tornaram um absoluto sucesso de vendas. 
Bem, este foi o conteúdo que queríamos compartilhar com você neste nosso 
primeiro encontro. Desejamos que este tenha sido um bom início em sua caminhada 
para se tornar uma verdadeira referência em Sistemas Operacionais. Não se esqueça 
de aprimorar seus conhecimentos com leituras de fontes diversas em com o zelo nas 
atividades que se seguirão. Obrigado e até a próxima!
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 13
AULA 2
TIPOS DE SISTEMAS
OPERACIONAIS
Olá! Seja bem-vinda e seja bem-vindo ao nosso segundo encontro!
Conforme abordamos na primeira aula, Sistemas Operacionais são artefatos 
sofisticados de software construídos para exercer gerenciamento do hardware e 
estabelecer uma conexão amigável entre ele e os programas criados para os usuários 
finais. Dada a variedade de tipos e perfis de aplicações com as quais um Sistema 
Operacional lida é natural imaginarmos que existam também tipos distintos destes 
sistemas, a fim de que sejam contempladas as mais diversas finalidades de uso.
Por isso, nesta segunda aula trataremos dos tipos de Sistemas Operacionais, 
considerando as mais diversas plataformas de hardware e a variedade de aplicações 
que deles se utilizarão. O Sistema Operacional que gerencia um servidor, por exemplo, 
deve oferecer ao administrador recursos diferentes daqueles disponíveis em um 
sistema de computador pessoal. Da mesma forma, um Sistema Operacional sendo 
executado em um televisor moderno será diferente daquele que se presta a gerenciar 
um sistema de tempo real.
Sigamos adiante e bons estudos!
2.1 Classificação dos Sistemas Operacionais
O principal objetivo a ser alcançado neste estudo é a familiarização com os diversos 
tipos de Sistemas Operacionais, com suas especificidades e com os aspectos 
diferenciais entre eles. Nossa primeira abordagem investigará as características 
dos Sistemas Operacionais para computadores de grande porte, situado no topo da 
hierarquia da capacidade de processamento entre todas as máquinas que aqui serão 
mencionadas.
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 14
2.1.1 Sistemas Operacionais para Computadores de Grande Porte
Imagine uma instituição bancária com 100 milhões de clientes. Agora imagine o 
aparato computacional que este banco deve possuir para fornecer serviços de qualidade 
a todos eles! Tanto no caso dos bancos, como no caso de uma operadora de telefonia 
celular ou de um órgão federal, os computadores que dão suporte às operações destas 
instituições devem ser de grande porte e com recursos extraordinários de entrada e 
saída. Certamente o Sistema Operacional que suporta tais máquinas deve ser capaz 
de controlar o processamento simultâneo de muitas tarefas e de dar conta da alta 
carga de transações de entrada e de saída de dados.
Segundo Tanenbaum e Bos (2016), estes sistemas oferecem geralmente três tipos 
de serviços: em lote (batch), processamento de transações e tempo compartilhado 
(timesharing). Embora o detalhamento destes serviços não seja parte do nosso 
objetivo aqui, vale uma rápida apresentação de cada um. O suporte ao processamento 
em lote ocupa-se das tarefas rotineiras sem qualquer interação de usuário e seu 
funcionamento se baseia no enfileiramento de tarefas dispostas em lotes (daí o termo 
batch), que serão executadas uma após outra. Um exemplo típico de uso do batch 
está relacionado ao processamento das transações bancárias.
Ainda conforme a lição de Tanenbaum e Bos (2016), os sistemas de processamento 
de transações lidam com grandes números operações comerciais ou que envolvem 
baixa complexidade computacional, por exemplo, de forma muito rápida e eficiente. Já 
o sistema de tempo compartilhado permite que múltiplos usuários remotos executem 
tarefas no computador ao mesmo tempo, como na realização de consultas a um 
grande banco de dados. Os Sistemas Operacionais que atendem a computadores de 
grande porte atuais são capazes de executar todos estes tipos de processamentos 
de forma eficiente. Um exemplo de sistema operacional de computadores de grande 
porte é o OS/390, uma derivação do OS/360.
2.1.2 Sistemas Operacionais para Servidores
Antes de tratarmos especificamente deste tipo de Sistema Operacional, vale 
o resgate dos conceitos relacionados a servidores: trata-se de um computador 
dotado de hardware com alto poder de processamento e adequado para centralizar o 
armazenamento de dados e de aplicações, de modo que possa distribui-los aos seus 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 15
clientes da rede. O conceito de servidor pode se estender também para serviços de 
impressão: por meio de uma aplicação específica sendo executada em um hardware 
servidor é possível controlar todas as tarefas de impressão originadas das estações 
da rede. Além disso, servidores podem fornecer serviços de arquivo ou de acesso à 
internet.
Um Sistema Operacional projetado para servidores tem a capacidade de servir a 
múltiplos usuários ao mesmo tempo, possibilitando, inclusive, que estes usuários 
compartilhem recursos de hardware e de software. Sistemas operacionais típicos de 
servidores são Solaris, FreeBSD, Linux e Windows Server 201x (TANENBAUM; BOS, 
2016). E quais seriam os Sistemas Operacionais próprios para servidores maisutilizados em todo o mundo? O site statista.com, uma grande plataforma de dados de 
negócios, nos oferece levantamento que responde a esta questão. Ao apresentar três 
conjuntos de dados, a figura 3 exibe o market share (ou a fatia de mercado) de cada um 
dos mais importantes Sistemas Operacionais entre os anos de 2018 e 2019.
Figura 3: Divisão de mercado de Sistemas Operacionais para servidores.
 Fonte: https://www.statista.com/statistics/915085/global-server-share-by-os/
Como se pode observar, o Windows detém larga vantagem na liderança, seguido 
de longe pelo Linux. O OS/390, classificado como um Sistema Operacional para 
computadores de grande porte, também aparece na lista, com uma fatia em torno de 
2%.
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 16
2.1.3 Sistemas Operacionais para multiprocessadores
Em certo dia, um projetista de hardware pensou: “E se colocássemos para trabalhar 
em conjunto dois ou mais processadores?”. Uma vez viabilizada a ideia, surgiram 
os computadores com várias unidades de processamento em um único hardware. 
Com isso, seria natural que o Sistema Operacional tivesse que ser adaptado para 
esta nova realidade. Segundo Tanenbaum e Bos (2016), computadores com vários 
processadores precisam de Sistemas Operacionais especiais. No entanto, muitas 
vezes eles são variações dos Sistemas Operacionais de servidores, com aspectos 
especiais para comunicação, conectividade e consistência.
Embora os efeitos benéficos da presença de múltiplos processadores tenham 
sido mais perceptíveis de início nos servidores, logo a tendência se espalhou para 
computadores pessoais e os Sistemas Operacionais destas máquinas também 
passaram a dar suporte a essa tecnologia. No momento em que lê este texto em seu 
computador é possível que você esteja também escutando uma música ou, quem 
sabe, aguardando a chegada de uma mensagem importante por e-mail. A execução 
simultânea de várias tarefas é possível graças também ao Sistema Operacional do 
seu computador, seja ele Windows, Linux ou MacOs.
Parece bem lógico que dois ou mais processadores são capazes de obter um 
desempenho melhor do que apenas um, consideradas as similaridades técnicas entre 
eles. No entanto, a lista de benefícios vai além: sistemas multiprocessados tendem a 
ser mais confiáveis, já que a falha em um dos processadores não levaria o sistema todo 
ao colapso. Como consequência desta característica, será perceptível o aumento da 
disponibilidade. Por fim, sempre haverá a possibilidade de se aumentar a quantidade 
de processadores no caso de se desejar aumentar o desempenho do sistema. Com 
isso, evita-se a troca de um equipamento por outro de maior desempenho.
2.1.4 Sistemas Operacionais embarcados
Não é de hoje que dispositivos que guardamos na cozinha, na sala ou na garagem 
de nossas casas são dotados de capacidade de processamento. E se o seu forno 
de micro-ondas, sua TV e seu carro são capazes de processar dados, isso se dá 
em boa medida por causa do Sistema Operacional que dá suporte a eles. Neste 
cenário, algumas características devem ser mencionadas. Em primeiro lugar, estes 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 17
dispositivos citados não costumam aceitar programas instalados pelo usuário. 
Ensinam Tanenbaum e Bos (2016) que a principal propriedade que distingue sistemas 
embarcados dos portáteis é a certeza de que nenhum software não confiável vá 
ser executado nele um dia. Não é possível para um usuário comum, por exemplo, 
atualizar o aplicativo do forno de micro-ondas, pois todo o software está na ROM 
(Read-Only Memory). Essa característica leva à simplificação do projeto, já que não há 
necessidade de se prever mecanismos de proteção para o software. 
2.1.5 Sistemas Operacionais de nós sensores (sensor-node)
Este tipo de Sistema Operacional reúne características de sistemas embarcados 
e sistemas de uso geral e os dispositivos por eles servidos são geralmente são 
pequenos computadores que se comunicam entre si e com uma estação-base usando 
comunicação sem fio. Por causa da sua utilização em locais possivelmente sem 
alimentação elétrica e com condições climáticas adversas, esses dispositivos devem 
usar pouca energia e serem resistentes às condições ambientais. De acordo com 
Tanenbaum e Bos (2016), redes de sensores são usadas para proteger os perímetros 
de prédios, guardar fronteiras nacionais, detectar incêndios em florestas, medir a 
temperatura e a precipitação para a previsão de tempo e muito mais.
Um dos Sistemas Operacionais mais utilizados para dispositivos que requerem 
baixo consumo de energia e se comunicam sem a utilização de fios (incluídos os 
nós sensores) é o TinyOS. Segundo Han et. al. (2005), no TinyOS os componentes 
reutilizáveis implementam serviços comuns, mas cada nó executa uma única imagem 
de sistema vinculada estaticamente, tornando difícil executar vários aplicativos ou 
atualizar aplicativos de forma incremental. Este Sistema Operacional foi escrito 
usando em NesC, uma linguagem orientada a eventos. 
Bem, o critério de separação de tipos de Sistemas Operacionais que acabamos 
utilizar está relacionado a algumas variedades de plataformas de hardware em que 
esses sistemas são executados. No entanto, há outro tipo de classificação muito 
comum, e que leva em consideração a quantidade de atendimentos simultâneos 
a usuários e a tarefas, mais do que o ambiente de hardware em que o sistema é 
executado. Neste tipo de classificação é comum que os Sistemas Operacionais 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 18
em Batch apareçam como o primeiro tipo, seguido pelos Sistemas que suportam 
multiprogramação. Depois, a classificação apresenta os sistemas multitarefa, os 
sistemas multiprocessados e, por fim, os Sistemas Operacionais de tempo real.
Como observação final vale pontuar que, ao procurar por tipos de sistemas na web, 
você poderá encontrar uma terceira classificação, com menção aos seus respectivos 
desenvolvedores, como Windows, Linux, Unix, Android e Apple, entre outros. De 
qualquer maneira, o conhecimento de todas essas classificações ajudará você tomar a 
decisão correta quando for chamado a escolher por um tipo ou por um desenvolvedor, 
com base nas características e funcionalidade de cada um.
Este, portanto, era o conteúdo que queríamos compartilhar com você. Bom estudo 
e até a próxima.
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 19
AULA 3
GERENCIAMENTO
DE PROCESSOS
Uma abordagem adequada de Sistemas Operacionais deve resgatar conceitos 
elementares sempre que precisar introduzir um novo tema que a eles esteja relacionado. 
Neste nosso encontro trataremos do gerenciamento de processos e, antes de nos 
aprofundarmos neste assunto, vale a pena voltarmos nosso foco novamente para 
o que estudamos em nossa primeira aula. Com isso, estaremos preparados para 
trilharmos novos caminhos rumo à excelência em Sistemas Operacionais. Sigamos 
adiante, pois!
3.1 Processos
De maneira didática e objetiva, Flynn e Mchoes (2002) nos ensinam que o 
sistema operacional é uma espécie de gerente executivo que administra todos os 
componentes de hardware e software de um sistema de computador. Usando termos 
mais específicos, ele controla cada arquivo, dispositivo, seção de memória principal 
e tempo de processamento. O sistema operacional controla quem pode utilizar o 
sistema e de que maneira. Resumindo, ele é o chefe!
Já Deitel et al. (2005), usando abordagem mais técnica, conceituam Sistema 
Operacional como um software que habilita as aplicações a interagir com o hardware 
de um computador. Em alto nível de abstração, os autores descrevem assim seu 
funcionamento: um usuário requisita ao computador que realize uma ação (imprimir 
um documento ou tocar uma música, por exemplo), e o sistema operacional gerencia 
o software e o hardware necessários para que o resultadodesejado seja produzido.
Os sistemas operacionais são compostos por partes distintas e, por ora, seus 
componentes centrais são objetos de nosso interesse. De acordo com Deitel (2005), 
alguns dos componentes centrais de um sistema operacional incluem:
• Gerenciador de entrada e saída: componente que atende às solicitações de 
E/S de e para os dispositivos de hardware.
• Gerenciador de memória: ele determina quando e como a memória será 
alocada aos processos.
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 20
• Escalonador de processo: componente que determina quando e por quanto 
tempo um processo será executado no processador da máquina.
Pois bem, são justamente os processos os objetos do nosso interesse agora. O que 
são? Como são criados? Eles duram para sempre? Que estados podem assumir? 
Antes de respondermos a estas questões, vale investirmos alguns parágrafos na 
definição de thread, como parte integrante do conteúdo aqui desenvolvido.
De fato, os processos são fundamentais para que a concorrência seja possível 
nas aplicações. De acordo com MACHADO e MAIA (2013), os sistemas operacionais 
utilizam três maneiras diferentes para implementá-la: processos independentes, 
subprocessos e threads. Embora importantes, as duas últimas maneiras não serão 
tratadas aqui, mas faremos uma breve menção aos threads. Da mesma forma que 
os processos, eles também assumem estados diferentes entre seu ciclo de vida e 
são essenciais para a execução paralela de rotinas em aplicações de usuários. Além 
disso, eles se distinguem dos processos tradicionais pelo modo como os espaços 
de endereçamento são alocados. Em encontros futuros trataremos dos threads com 
maior detalhamento. Feitas essas considerações, passamos da criação, finalização e 
estados de um processo.
3.1.1 Criação e finalização de um processo
É provável que você já tenha se deparado com algumas expressões que fizeram 
menção ao conceito de processo. “Controle de um programa em execução” e “atividade 
assíncrona” talvez tenham sido as mais comuns. Embora não estejam incorretas, 
estas definições carecem de um complemento, de um “algo a mais” para se tornarem 
compreensíveis em si. A primeira definição que Deitel et al. (2005) dão para processo 
é a de uma entidade que possui seu próprio espaço de endereço, que normalmente 
consiste em uma porção de texto, uma de dados e outra de pilha. A porção de texto 
armazena o código que o processador executa. A porção dos dados armazena 
variáveis que o processo usa durante a execução. A porção de pilha – completam os 
autores – armazena instruções e variáveis locais a para chamadas ao procedimento. 
A segunda é a de um programa em execução.
Uma das principais funções do sistema operacional é fazer a gerência dos processos 
(MACHADO; MAIA, 2013) e parte fundamental dessa tarefa é controlar o ciclo de 
execução de um processo. Ele começa quando o processador busca a instrução 
que está na memória para ser executada, armazena-a no registrador de instruções, 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 21
decodifica seus bits e, enfim, executa a instrução. No entanto, o ciclo de execução 
das instruções não distingue de qual programa ela se origina, fato que gera duas 
situações: (i) como normalmente haverá mais de um programa para ser executado, 
o acesso de suas instruções ao processador causará concorrência entre elas e (ii) o 
sistema operacional será o responsável por controlar a alternância da execução das 
instruções no processador.
Assim, conforme sustentam Machado e Maia (2013), o conceito de processo torna-
se essencial para que os sistemas multiprogramáveis implementem a concorrência 
provocada por diversos programas. Segundo os autores, um processo é formado por 
três partes: software, hardware e endereçamento. A figura 4 ilustra a ideia.
Figura 4: estrutura de um processo
Fonte: adaptado de (MACHADO; MAIA, 2013)
ISTO ESTÁ NA REDE
Um bom vídeo relacionado ao assunto de processos pode ser encontrado em 
https://www.youtube.com/watch?v=JmNxFf_96xY (Acesso em: 19 jun. 2021). Nele 
o autor trata do conceito de processo e simula a alternância entre quatro processos 
sequenciais, com abordagem do que ocorre na memória e na CPU.
Como já conhecemos o conceito de processos, além do tratamento que o sistema 
operacional deve dispensar a ele e dos contextos em que são inseridos, devemos 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 22
tratar agora pontualmente de sua criação e finalização. De acordo com Machado e 
Maia (2013), um processo é criado a partir da inclusão de um novo bloco de controle 
do processo (Process Control Block – PCB) em sua própria estrutura e da alocação 
de espaço de endereçamento de memória. Neste instante, o sistema operacional 
já reconhece o processo e pode gerenciá-lo. Depois que assume vários estados 
(trataremos deles na sequência) e passa pela execução, um processo é finalizado. A 
finalização se dá quando todos os recursos associados ao processo são desalocados 
e o PCB é eliminado pelo Sistema Operacional.
3.1.2 Estados de um processo
Conforme citado, um processo passa por diferentes estados ao longo do seu 
processamento (MACHADO; MAIA, 2013). Quando chega a vez de um processo ser 
remetido à CPU, diz-se que ele fez uma transição de estado, passando de pronto para 
o estado de execução. O terceiro estado que um processo pode assumir é o de espera, 
que se efetiva quando o prosseguimento do processamento depende de algum evento 
externo ou da disponibilização de algum recurso. As mudanças de estado de um 
processo são mostradas na figura 5.
Figura 5: mudanças de estado de um processo.
Fonte: adaptado de (MACHADO; MAIA, 2013)
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 23
A melhor maneira de entendermos os processos é colocando-os em perspectiva 
prática e inserindo-os no contexto da multiprogramação. Imagine-se como um usuário 
que escolhe um programa para converter em outro formato um vídeo longo e gravado 
em alta definição. Enquanto este programa é executado, você resolve navegar na web 
e, em algum momento, seu programa de e-mail desperta um processo em segundo 
plano verificar a chegada de mensagens na caixa de entrada. Assim, podemos 
identificar três processos em atividade: o editor de vídeo, o navegador e o programa 
de e-mail.
Os Sistemas Operacionais que usamos em computadores pessoais e/ou servidores 
mantêm as informações sobre processos em uma tabela mantida pelo próprio 
sistema. Nesta tabela – chamada Tabela de Processos – fica armazenado, entre 
outros dados, o conteúdo do espaço de endereçamento do processo. Tanenbaum 
e Bos (2016) ensinam que as principais chamadas de sistema de gerenciamento de 
processos são as que lidam com a criação e o término de processos. Por exemplo, o 
processo do shell (ou interpretador de comandos) do sistema recebe uma requisição 
do usuário para que um programa seja compilado. Ele (o shell) cria um processo para 
executar o compilador e, ao término da compilação, ele próprio executa uma chamada 
de sistema para finalizar a si próprio. 
Este foi o conteúdo que queríamos compartilhar com você. Para que a abordagem 
deste tema não pare por aqui, não deixe de ler nas referências bibliográficas indicadas 
o conteúdo que abordamos no texto. Bom estudo!
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 24
AULA 4
GERENCIAMENTO DE MEMÓRIA
Olá! Aqui estamos para mais uma aula de Sistemas Operacionais. Em nosso último 
encontro tratamos dos processos e os posicionamos como uma parte elementar 
de um programa em execução. Descobrimos também que o Sistema Operacional 
mantém informações de espaço de endereço, dados do programa e o estado em que 
se encontra o processo guardadas em uma tabela de processo. Como cada processo 
concorre com outro processo para execução, é necessário que seja implementadoum eficiente gerenciamento da memória ocupada pelos processos, a fim de que 
o máximo desempenho seja alcançado com a máxima segurança. É por isso que 
neste encontro estudaremos juntos os meios usados pelo Sistema Operacional para 
gerenciar a memória principal da máquina. Vamos nessa? 
4.1 Introdução
O gerenciamento de memória é a funcionalidade de um sistema operacional que 
manipula ou gerencia a memória primária e move os processos entre a memória 
principal e o disco durante a execução de um programa. O gerenciamento de memória 
mantém o controle de cada local de memória, independentemente de estar alocado 
para algum processo ou de estar livre. Ele verifica quanta memória deve ser alocada 
aos processos e decide qual processo obterá memória em que momento. Além disso, 
o gerenciamento de memória é capaz de identificar quando uma parte da memória é 
liberada ou não está alocada e, instantaneamente, atualiza o status daquela porção de 
memória. Na sequência, trataremos de elementos que compõem esse gerenciamento.
4.2 Espaço de Endereçamento
O tema que abordaremos nesta seção está relacionado à organização dos 
processos na memória do computador. Um sistema computacional usa sua RAM 
(Random Access Memory) para armazenar, de forma temporária, os programas em 
execução na máquina. Considerando que vários programas estarão em execução de 
forma simultânea, algum tipo de organização desses programas na memória deve 
ser implementado. Usando termos mais próximos da realidade dos processos, este 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 25
mecanismo está relacionado ao gerenciamento de espaços de endereçamento dos 
processos. 
Conforme Tanenbaum e Bos (2016), cada processo tem geralmente algum conjunto 
de endereços que ele pode usar, tipicamente indo de 0 até algum máximo previamente 
definido. Quando um processo precisa ocupar a memória, algumas situações podem 
ocorrer. Na situação mais simples, a quantidade máxima de espaço de endereços 
que um processo tem é menor do que o espaço disponível na memória da máquina. 
Quando isso acontece, o processo poderá ocupar todo o espaço que necessita e não 
será necessária nova alocação.
No entanto, nos computadores atuais os endereços são de 32 ou de 64 bits, o que 
implica em um espaço de endereçamento de 232 e 264, respectivamente. Com este 
cenário, uma pergunta em especial se coloca na frente das outras: qual a providência 
tomada pelo Sistema Operacional para resolver o caso de um processo que tem mais 
espaço de endereçamento do que o computador tem de memória principal? A resposta, 
dada por Tanenbaum e Bos (2016), inclui o conceito de memória virtual, técnica por 
meio da qual o sistema operacional mantém parte do espaço de endereçamento na 
memória principal e parte no disco, enviando trechos entre um e outro conforme a 
necessidade. Para implementar essa técnica, o Sistema Operacional cria a abstração 
de um espaço de endereçamento como o conjunto de endereços ao qual um processo 
pode se referir. O espaço de endereçamento é desacoplado da memória física da 
máquina e pode ser maior ou menor do que a memória física.
O sistema operacional se encarrega de mapear os endereços lógicos para endereços 
físicos no momento da alocação de memória para o programa. Existem três tipos de 
endereços usados em um programa antes e depois de a memória ser alocada. A 
Tabela 1 dá nome e sintetiza estes tipos de endereços.
Nome Descrição
Endereços simbólicos Trata-se dos endereços usados em um código-fonte. Os nomes 
de variáveis, constantes e rótulos de instrução são os elemen-
tos básicos do espaço de endereço simbólico.
Endereços relativos Em tempo de compilação, o compilador converte endereços 
simbólicos em endereços relativos. 
Endereços físicos O processo de carregamento gera estes endereços quando um 
programa é carregado na memória principal da máquina. 
Tabela 1 – Tipos de endereços de memória e suas descrições
Fonte: Tutorials Point (s.a.)
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 26
Os endereços virtuais e físicos são os mesmos em esquemas de vinculação de 
endereços em tempo de compilação e tempo de carregamento. Os endereços virtuais 
e físicos diferem no esquema de vinculação de endereço em tempo de execução. O 
conjunto de todos os endereços lógicos gerados por um programa é conhecido como 
espaço de endereço lógico. O conjunto de todos os endereços físicos correspondentes 
a esses endereços lógicos é conhecido como espaço de endereço físico. 
 O mapeamento de tempo de execução do endereço virtual para o físico é feito 
pela unidade de gerenciamento de memória (MMU), que é um dispositivo de hardware. 
A MMU usa o seguinte mecanismo para converter o endereço virtual em endereço 
físico. O valor no registro base é adicionado a cada endereço gerado por um processo 
do usuário, que é tratado como deslocamento quando é enviado para a memória. Por 
exemplo, se o valor do registro base for 10000, uma tentativa do usuário de usar a 
localização de endereço 100 será realocada dinamicamente para a localização 10100. 
O programa do usuário lida com endereços virtuais; ele nunca vê os endereços físicos 
reais (TUTORIALS POINT, s. a.).
4.3 Carregamento estático e dinâmico
A escolha entre Carregamento Estático ou Dinâmico deve ser feita no momento do 
desenvolvimento do programa de computador. Se você tiver que carregar seu programa 
estaticamente, então, no momento da compilação, os programas completos serão 
compilados e vinculados sem deixar nenhum programa externo ou dependência de 
módulo. O vinculador combina o programa de objeto com outros módulos de objeto 
necessários em um programa absoluto, que também inclui endereços lógicos.
Se você estiver escrevendo um programa carregado dinamicamente, então seu 
compilador irá compilar o programa e para todos os módulos que você deseja incluir 
dinamicamente, apenas referências serão fornecidas e o resto do trabalho será feito no 
momento da execução. No momento do carregamento, com o carregamento estático, 
o programa absoluto (e os dados) são carregados na memória para que a execução 
comece. Se você estiver usando o carregamento dinâmico, as rotinas dinâmicas 
da biblioteca serão armazenadas em um disco de forma realocável e carregadas na 
memória apenas quando forem necessárias para o programa.
4.4 Swapping
O swapping – cuja tradução deve ser entendida como troca - é um mecanismo 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 27
no qual um processo pode ser movido temporariamente da memória principal para 
o armazenamento secundário (disco) e disponibilizar essa memória para outros 
processos. Mais tarde, o sistema volta o processo do armazenamento secundário para 
a memória principal. Embora o desempenho geralmente seja afetado pelo processo 
de swapping, ele ajuda a executar quantidades maiores de processos em paralelo e 
essa é a razão pela qual este mecanismo também é conhecido como uma técnica de 
compactação de memória. A figura 6 ilustra a ideia.
Figura 6: Exemplo de aplicação da técnica de Swapping
Fonte: adaptado de Tutorials Point (s. a.).
O tempo total gasto pelo processo de swapping inclui o tempo que leva para mover 
todo o processo para a memória secundária e, em seguida, para copiar o processo de 
volta para a memória principal. Vamos supor que o processo do usuário tenha 2048 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 28
KB e um disco rígido padrão onde a troca ocorrerá tenha uma taxa de transferência 
de dados em torno de 1 MB por segundo. A transferência real do processo de 1000K 
para ou da memória levará:
2048 KB / 1024 KB por segundo
= 2 segundos
= 2.000 milissegundos
Assim, considerando o tempo de entrada e saída serão necessários 4.000 
milissegundos completos para a conclusão da operação.
4.5 Alocação de Memória
A memória principal geralmente tem duas partições: 
Memória baixa (LowMemory): o Sistema Operacional reside nesta memória.
Memória alta (High Memory): os processos do usuário são mantidos nesta 
partição.
O sistema operacional usa o seguinte mecanismo de alocação de memória.
Alocação de partição única: neste tipo de alocação, o esquema de registro de 
relocação é usado para proteger os processos do usuário uns dos outros e de alterar o 
código e os dados do sistema operacional. O registro de relocação contém o valor do 
menor endereço físico, enquanto o registro de limite contém o intervalo de endereços 
lógicos. Cada endereço lógico deve ser menor que o registro de limite.
Alocação de múltiplas partições: neste tipo de alocação, a memória principal é 
dividida em várias partições de tamanho fixo, onde cada partição deve conter apenas 
um processo. Quando uma partição está livre, um processo é selecionado da fila de 
entrada e carregado na partição livre. Quando o processo termina, a partição fica 
disponível para outro processo.
4.6 Fragmentação
Conforme os processos são carregados e removidos da memória, o espaço livre da 
memória é dividido em pequenos pedaços. Às vezes acontece que os processos não 
podem ser alocados aos blocos de memória, considerando seu pequeno tamanho, 
e os blocos de memória permanecem sem uso. Esse problema é conhecido como 
fragmentação. A fragmentação ocorre de duas maneiras:
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 29
Fragmentação externa: o espaço total da memória é suficiente para satisfazer 
uma solicitação ou para residir um processo nela, mas não é contíguo, portanto, não 
pode ser usado.
Fragmentação interna: o bloco de memória atribuído ao processo é maior. 
Parte da memória é deixada sem uso, pois não pode ser usada por outro processo.
As figuras 7a e 7b ilustram como a fragmentação pode causar desperdício de 
memória e uma técnica de compactação pode ser usada para criar mais memória 
livre a partir da memória fragmentada.
Figura 7a: Memória fragmentada antes da compactação
Fonte: adaptado de Tutorials Point (s. a.)
Figura 7b: Aspecto da memória após a compactação
Fonte: adaptado de Tutorials Point (s. a.)
A fragmentação externa pode ser reduzida pela compactação do conteúdo da 
memória para colocar toda a memória livre em um grande bloco. Para viabilizar a 
compactação, a realocação deve ser dinâmica. Já a fragmentação interna pode ser 
reduzida atribuindo efetivamente a menor partição, mas grande o suficiente para o 
processo.
4.6 Paginação de Memória
Um computador pode endereçar mais memória do que a quantidade fisicamente 
instalada no sistema. Essa memória extra é, na verdade, chamada de memória virtual e 
é uma seção de um disco rígido que é configurado para emular a RAM do computador. 
A técnica de paginação desempenha um papel importante na implementação da 
memória virtual. 
Paginação é uma técnica de gerenciamento de memória na qual o espaço de 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 30
endereço do processo é dividido em blocos do mesmo tamanho chamados de páginas 
(o tamanho é a potência de 2, entre 512 bytes e 8192 bytes). O tamanho do processo é 
medido pelo número de páginas. Da mesma forma, a memória principal é dividida em 
pequenos blocos de memória (física) de tamanho fixo chamados frames e o tamanho 
de um frame é mantido igual ao de uma página para ter uma utilização ótima da 
memória principal e evitar fragmentação externa.
Quando o sistema aloca um quadro para qualquer página, ele traduz esse endereço 
lógico em um endereço físico e cria uma entrada na tabela de páginas para ser usada 
durante a execução do programa. Quando um processo deve ser executado, suas 
páginas correspondentes são carregadas em qualquer quadro de memória disponível. 
Suponha que você tenha um programa de 8KB, mas sua memória possa acomodar 
apenas 5 KB em um determinado momento, então o conceito de paginação aparecerá. 
Quando um computador fica sem RAM, o Sistema Operacional move páginas ociosas 
ou indesejadas de memória para a memória secundária para liberar RAM para outros 
processos e trazê-los de volta quando necessário para o programa. Este processo 
continua durante toda a execução do programa: o Sistema Operacional continua 
removendo páginas ociosas da memória principal e as grava na memória secundária 
e as traz de volta quando exigido pelo programa.
A paginação reduz a fragmentação externa, mas ainda sofre de fragmentação 
interna. Além disso, a paginação é simples de implementar e considerada uma técnica 
de gerenciamento de memória eficiente. Devido ao tamanho igual das páginas e 
frames, a troca torna-se muito fácil. Por fim, a tabela de páginas requer espaço de 
memória extra, portanto pode não ser boa para um sistema com pouca RAM.
4.7 Segmentação de Memória
A segmentação é uma técnica de gerenciamento de memória na qual cada trabalho 
é dividido em vários segmentos de tamanhos diferentes, um para cada módulo que 
contém peças que executam funções relacionadas. Cada segmento é, na verdade, 
um espaço de endereço lógico diferente do programa. Quando um processo deve ser 
executado, sua segmentação correspondente é carregada na memória não contígua, 
embora cada segmento seja carregado em um bloco contíguo de memória disponível.
O gerenciamento de memória de segmentação funciona de forma muito semelhante 
à paginação, mas aqui os segmentos são de comprimento variável, enquanto na 
paginação as páginas são de tamanho fixo. Um segmento de programa contém a 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 31
função principal do programa, funções de utilidade, estruturas de dados e assim por 
diante. O sistema operacional mantém uma tabela de mapa de segmento para cada 
processo e uma lista de blocos de memória livres junto com números de segmento, 
seu tamanho e localizações de memória correspondentes na memória principal. Para 
cada segmento, a tabela armazena o endereço inicial do segmento e o comprimento 
do segmento. Uma referência a um local de memória inclui um valor que identifica um 
segmento e um deslocamento.
Este foi o conteúdo que queríamos compartilhar com você. Bons estudos e até a 
próxima!
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 32
AULA 5
GERENCIAMENTO DE ARQUIVOS
Seja-bem-vinda e seja bem-vindo a mais um encontro de Sistemas Operacionais! 
Iniciamos aqui nossa quinta aula e, neste ponto, vale pena voltarmos brevemente nossa 
atenção para o que já foi abordado em nossos encontros anteriores. A aula 1 abordou 
conceitos fundamentais do tema e posicionou os Sistemas Operacionais como uma 
espécie de “gerente” de um sistema computacional. Na segunda aula foram colocados 
os tipos mais comuns de Sistemas Operacionais, utilizando o critério de classificação 
de hardware em que eles atuavam. Na sequência, os processos foram conceituados 
e seus estados foram apresentados. Por fim, tratamos de gerenciamento de memória 
e seus mecanismos em nosso último encontro.
5.1 Arquivos
O tema que agora se apresenta está relacionado aos meios pelos quais um Sistema 
Operacional gerencia os arquivos e torna transparentes aos usuários as complexas 
operações que a eles se aplicam. Conforme pontuam Tanenbaum e Bos (2016), uma 
função importante do sistema operacional é esconder as peculiaridades dos discos e 
outros dispositivos de E/S e apresentar ao programador um modelo agradável e claro 
de arquivos que sejam independentes dos dispositivos. 
Um arquivo é uma coleção nomeada de informações relacionadas que são 
gravadas no armazenamento secundário, como os discos rígidos ou os SSD (Solid- 
State Drive ou Unidade de Estado Sólido). Em geral, um arquivo é uma sequência de 
bits, bytes, linhas ou registros cujo significado é definido pelo criador e usuário do 
arquivo (TUTORIALSPOINT, S. A.).
A estrutura de arquivo deve estar de acordo com um formato necessário que o 
sistema operacional possa entender. Neste sentido,alguns pontos merecem destaque: 
um arquivo possui uma determinada estrutura definida de acordo com seu tipo.
5.2 Tipos de arquivos
Neste sentido, é possível destacar três tipos de arquivos:
• Um arquivo de texto é uma sequência de caracteres organizados em linhas.
• Um arquivo-fonte é uma sequência de procedimentos e funções.
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 33
• Um arquivo-objeto é uma sequência de bytes organizados em blocos que são 
compreensíveis pela máquina.
O tipo de arquivo refere-se à capacidade do sistema operacional de distinguir 
diferentes tipos de arquivo, como arquivos de texto, arquivos-fonte e arquivos binários, 
por exemplo. Muitos sistemas operacionais suportam muitos tipos de arquivos. 
Sistemas operacionais como MS-DOS e UNIX possuem os seguintes tipos de arquivos:
Arquivos comuns: estes são os arquivos que contêm informações do usuário. 
Podem conter texto, bases de dados ou programa executável. O usuário pode aplicar 
várias operações em tais arquivos, como adicionar, modificar ou até mesmo remover 
o arquivo inteiro.
Arquivos de diretório: estes arquivos contêm uma lista de nomes de arquivos e 
outras informações relacionadas a esses arquivos.
Arquivos especiais: estes arquivos também são conhecidos como arquivos 
de dispositivo. Eles oferecem configuração a dispositivos físicos como discos, 
impressoras, redes e unidade de backup, entre outros.
5.3 Mecanismos de acesso a arquivos
O mecanismo de acesso a arquivos refere-se à maneira como os registros de 
um arquivo podem ser acessados. Existem várias maneiras de acessar arquivos e 
algumas serão abordadas na sequência:
Acesso sequencial: o acesso sequencial é aquele em que os registros são 
acessados em alguma sequência, ou seja, as informações do arquivo são processadas 
em ordem, um registro após o outro. Este método de acesso é o mais primitivo. 
Compiladores geralmente acessam arquivos desta maneira.
Acesso direto ou aleatório: a organização dos arquivos em disco deve ser 
adequada para fornecer acesso aleatório, ou seja, com acesso direto ao registro 
desejado. Cada registro tem seu próprio endereço no arquivo, o que possibilita ser 
acessado diretamente para leitura ou escrita. Os registros não precisam estar em 
nenhuma sequência dentro do arquivo e não precisam estar em locais adjacentes na 
mídia de armazenamento.
Acesso sequencial indexado: este mecanismo é construído com base no 
acesso sequencial e um índice é criado para cada arquivo que contém ponteiros para 
vários blocos. O índice é pesquisado sequencialmente e seu ponteiro é usado para 
acessar o arquivo diretamente.
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 34
5.4 Alocação de espaço
Outra forma de enxergarmos os arquivos é na forma de espaços em disco alocados 
pelo Sistema Operacional. Eles (os Sistemas Operacionais) implementam três 
maneiras principais de alocar espaço em disco para arquivos:
Alocação Contígua: neste tipo de alocação, cada arquivo ocupa um espaço 
de endereço contíguo no disco. O endereço de disco atribuído está em ordem linear 
e, embora sua implementação seja pouco complexa, a fragmentação externa é um 
grande problema com esse tipo de técnica de alocação.
Alocação vinculada (linked allocation): neste caso, cada arquivo carrega uma 
lista de links para blocos de disco e um diretório guarda o link (ou ponteiro) para o 
primeiro bloco de um arquivo. Apenas de não provocar fragmentação externa, essa 
modalidade de alocação apresenta-se ineficiente em caso de arquivo de acesso direto.
Alocação Indexada: o terceiro modo de alocação fornece soluções para 
problemas de alocação contígua e vinculada, por meio da utilização de um bloco de 
índices que contêm todos os ponteiros para arquivos. Cada arquivo tem seu próprio 
bloco de índice que armazena os endereços do espaço em disco ocupado pelo arquivo 
e o diretório contém os endereços dos blocos de índice de arquivos.
5.4 Diretório
O principal elemento – e possivelmente o mais conhecido entre os usuários – do 
gerenciamento de arquivos executado pelo Sistema Operacional é a organização de 
arquivos em diretórios. Para organizar e localizar arquivos de forma rápida e eficiente, 
sistemas de arquivos usam diretórios, que são arquivos que contém os nomes e as 
localizações de outros arquivos do sistema de arquivos. Diferentemente de outros 
arquivos, um diretório não armazena dados de usuários.
ISTO ESTÁ NA REDE
Neste vídeo de pouco mais de 23 minutos é possível ter contato com uma 
abordagem interessante de sistemas de arquivos mantidos pelos Sistemas 
Operacionais. Assista ao vídeo disponível em: https://www.youtube.com/
watch?v=PKox6AlVTT8. Acesso em: 23 jun. 2021.
De acordo com Deitel (2005), a organização mais simples de sistemas de arquivo 
consiste em uma estrutura de diretório de um único nível, o que faz com que todos os 
https://www.youtube.com/watch?v=PKox6AlVTT8
https://www.youtube.com/watch?v=PKox6AlVTT8
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 35
arquivos sejam armazenados em um único diretório. Esta característica torna essa 
estruturação bastante incomum, já que dois arquivos não poderiam ter o mesmo nome 
e a organização dos arquivos seria bastante precária. Um sistema de arquivo mais 
apropriado é aquele hierarquicamente organizado e que se inicia com um diretório-
raiz e dele se estendem diversos outros subdiretórios. 
Um bom meio de abordar uma possível organização de diretório é fornecer exemplo 
relacionado ao meio acadêmico, conforme ilustrado na figura 8. Todo arquivo dentro 
de uma hierarquia de diretório pode ser identificado e encontrado por meio do seu 
nome de caminho a partir do topo da hierarquia do diretório, que é o diretório-raiz. 
Os nomes de caminho absolutos efetivam-se pela lista de diretórios que precisam 
ser percorridos a partir do diretório-raiz para se chegar ao arquivo, com uma barra 
separando cada elemento da hierarquia. A primeira barra indica que o caminho é 
absoluto, isto é, começando no diretório-raiz. Como nota, no Windows, o caractere 
barra invertida (\) é usado como o separador em vez do caractere da barra (/) por 
razões históricas, então o caminho do arquivo acima seria escrito como \Professores\
Prof.Brown\Cursos\CS101.
Figura 8: Um sistema de arquivos para um departamento universitário
Fonte: Tanenbaum e Bos (2016).
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 36
Conforme podemos observar na figura 8, as entradas de diretório podem ser de 
arquivos ou de outros diretórios, e a organização de arquivos e diretórios é baseada 
em uma estrutura hierárquica, conforme já mencionamos. Apenas para fins de 
comparação os processos também assumem uma organização hierárquica, mas 
a estrutura formada dificilmente apresenta mais do que três níveis e a hierarquia 
sempre tem um ciclo muito curto, de alguns poucos minutos, no máximo. Por sua 
vez, hierarquias de diretório podem existir por anos e apresentam condições ideais 
para a composição em muitos níveis.
O entendimento de como um Sistema Operacional organiza os arquivos e a 
necessidade de tornar essa organização semelhante a uma árvore hierárquica é 
essencial para a compreensão dos nossos próximos assuntos, especialmente o 
gerenciamento de Entrada e Saída feito por um Sistema Operacional. Bons estudos 
e até a próxima!
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 37
AULA 6
GERENCIAMENTO
DE ENTRADA E SAÍDA
Ao mencionarmos entrada e saída no contexto dos Sistemas Operacionais, a 
expressão poderia se tornar vaga se não houvesse a devida especificação dos 
seus tipos. A fim de permitir que os usuários possam interagir com o sistema, os 
computadores implementam meios para que sejam informadas entradas e obtidas 
saídas através de dispositivos apropriados, incluindo teclados, monitores, impressoras 
e alguns outros. Como o gerenciamento destesdispositivos é de responsabilidade 
do Sistema Operacional, tornou-se necessária a implementação de um subsistema 
de E/S, que contêm softwares de uso geral entre vários dispositivos e outros que 
gerenciam dispositivos específicos. Sigamos adiante!
6.1 Software de Entrada e Saída
O software de E/S é usado para interação com dispositivos de como mouse, 
teclado, dispositivos USB e impressoras, entre outros. Sua organização é feita como 
segue (TUTORIALSPOINT, s.a.): 
Bibliotecas de nível de usuário: fornecem uma interface simples para que o 
programa de usuário execute entradas e saídas. Se você estudou (ou está estudando) 
a linguagem C, sabe que a biblioteca stdio fornece recursos para entradas e saídas 
nesta linguagem e constitui, portanto, exemplo de biblioteca utilizada pelo usuário.
Módulos de nível de kernel: fornece drivers de dispositivo para interagir com 
o controlador de dispositivo e módulos de E/S, independentes de dispositivo usados 
pelos drivers de dispositivo.
Hardware: esta camada inclui hardware real e controlador de hardware que 
interage com os drivers de dispositivo e promove a possibilidade de interação com o 
hardware.
Um conceito bastante importante no projeto de software de E/S é que ele deve 
ser independente do dispositivo, o que torna possível escrever programas que podem 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 38
acessar qualquer dispositivo de entrada e saída sem ter que especificar o dispositivo 
com antecedência. Por exemplo, um programa que lê um arquivo como entrada deve 
ser capaz de ler um arquivo em um disco rígido convencional ou em um SSD (Solid-
State Drive ou Drive de Estado Sólido), sem que seja necessário modificar o programa 
para cada dispositivo diferente. A representação da organização do software de 
Entrada e Saída é ilustrada na figura 9.
Figura 9: Representação da organização de um software de E/S
Fonte: TUTORIALSPOINT (s. a.).
Ainda no contexto dos elementos da figura 9, três deles devem ser detalhados, 
como segue: 
6.1.1 Device Driver (Driver de dispositivo)
Device Drivers (ou Drivers de Dispositivo) são módulos de software que podem ser 
conectados a um sistema operacional para lidar com um dispositivo específico. O 
sistema operacional recebe ajuda de drivers de dispositivo para lidar com todos os 
dispositivos de E/S. Os drivers de dispositivo encapsulam o código dependente do 
dispositivo e implementam uma interface padrão de tal forma que o código contém 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 39
leituras / gravações de registro específicas do dispositivo. O driver do dispositivo é 
geralmente escrito pelo fabricante do dispositivo e entregue junto com o dispositivo 
em um CD-ROM.
Tipicamente, um device driver interage com o controlador do dispositivo para 
viabilizar entradas e saídas via dispositivo e para realizar o adequado tratamento de 
erros. Além disso, ele lida com requisições do dispositivo e o faz da seguinte maneira: 
suponha que uma solicitação venha a ler um bloco N. Se o driver estiver ocioso 
quando uma solicitação chega, ele começa a executá-la imediatamente. Caso o driver 
já estiver ocupado com alguma outra solicitação, ele coloca a nova solicitação na fila 
de solicitações pendentes.
6.1.2 Software independente de dispositivo
A função básica do software independente de dispositivo é realizar as funções de 
entrada e saída que são comuns a todos os dispositivos e fornecer uma interface 
uniforme para o software em nível de usuário. Embora seja difícil escrever um software 
totalmente independente do dispositivo, podemos escrever alguns módulos que são 
comuns a todos eles. TutorialsPoint (s.a.) fornece uma lista de funções de software de 
E/S independente de dispositivo:
- Estabelecimento de uma interface uniforme para drivers de dispositivo.
- Padronização de nomenclatura de dispositivos por meio do estabelecimento 
de nomes mnemônicos mapeados para números de dispositivos principais e 
secundários.
- Disponibilização de proteção ao dispositivo.
- Fornecimento de um tamanho de bloco independente de dispositivo.
- Oferecimento de uma memória temporária para os dispositivos (também 
chamada buffer), já que os dados que saem de um dispositivo não podem ser 
armazenados no destino.
- Alocação de armazenamento em dispositivos de bloco.
- Oferecimento de relatório comum de erros.
6.1.3 Bibliotecas de Usuário de Entrada e Saída
Estas são as bibliotecas que fornecem uma interface mais rica, simplificada 
e interativa para acesso às funcionalidades dos drivers de dispositivo. A maior parte 
dos softwares de E/S de nível de usuário consiste em procedimentos de biblioteca, 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 40
com algumas exceções, como sistema de spool, que é uma maneira de lidar com 
dispositivos de E / S dedicados em um sistema de multiprogramação. 
Bibliotecas de entrada e saída (por exemplo, stdio) estão no espaço do usuário 
para fornecer uma interface para o software de E/S, independentemente de dispositivo. 
Por exemplo, putchar(), getchar(), printf() e scanf() são exemplos de biblioteca de E/S 
de nível de usuário stdio disponível em programação C e que não estão vinculadas a 
nenhuma marca ou configuração de periférico.
6.2 Hardware de entrada e saída
Uma das tarefas mais importantes de um Sistema Operacional é a de gerenciar 
vários dispositivos de E/S, incluindo mouse, teclado, unidades de disco, adaptadores 
de vídeo, impressoras e dispositivos USB, entre outros.
Um sistema de E/S é necessário para receber solicitações do aplicativo e enviá-la 
ao dispositivo físico. Em seguida, ele deve capturar qualquer resposta que vier do 
dispositivo e enviá-la para o aplicativo. Os dispositivos de entrada e saída podem ser 
divididos em duas categorias:
Dispositivos de bloco: um dispositivo de bloco é aquele com o qual o driver se 
comunica enviando blocos inteiros de dados. Por exemplo, discos rígidos, câmeras e 
USB, entre outros.
Dispositivos de caracteres: um dispositivo de caracteres é aquele com o qual 
o driver se comunica enviando e recebendo caracteres únicos (bytes, octetos). Por 
exemplo, portas seriais, portas paralelas, placas de som etc.
6.2.1 Controladores de dispositivo
Controladores de dispositivo são módulos de software que podem ser conectados a 
um Sistema Operacional para lidar com um dispositivo específico. O sistema operacional 
recebe ajuda de drivers de dispositivo para lidar com todos os dispositivos de E/S. O 
Controlador de dispositivo funciona como uma interface entre um dispositivo e um 
driver de dispositivo. As unidades de E/S (teclado, mouse, impressora, por exemplo) 
geralmente consistem em um componente mecânico e um componente eletrônico, 
onde o componente eletrônico é chamado de controlador de dispositivo.
Sempre há um controlador de dispositivo e um driver de dispositivo para cada 
dispositivo para se comunicar com os Sistemas Operacionais. Um controlador de 
dispositivo pode ser capaz de lidar com vários dispositivos. Como interface, sua 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 41
principal tarefa é converter o fluxo de bits serial em bloco de bytes, realizar a correção 
de erros conforme necessário. Qualquer dispositivo conectado ao computador é 
conectado por um plugue e soquete, e o soquete é conectado a um controlador de 
dispositivo. A figura 10 ilustra um modelo para conectar a CPU, memória, controladores 
e dispositivos de entrada e saída.
Figura 10: Conexão entre dispositivos e seus controladores
Fonte: TUTORIALSPOINT (s. a.)
Embora a ilustração nos faça imaginar que a comunicação da CPU com os 
dispositivos seja simples, há alguma diversidade de abordagens que precisaram ser 
implementadas e que serão abordadas na sequência. O ponto central aqui é que a 
CPU deve ter uma maneira de passar informações para um dispositivo de entrada e 
saída.
Instrução especial:esta abordagem usa instruções de CPU que são feitas 
especificamente para controlar dispositivos de entrada e saída. Essas instruções 
normalmente permitem que os dados sejam enviados a um dispositivo de E/S ou 
lidos de um dispositivo de E/S.
Entrada e saída mapeada em memória: a abordagem de E/S mapeada em 
memória, o mesmo espaço de endereço é compartilhado entre a memória e os 
dispositivos de entrada e saída. O dispositivo é conectado diretamente a determinados 
locais da memória principal para que seja possível a ele transferir blocos de dados a 
partir da memória (ou para ela) sem passar pela CPU.
Ao usar esta técnica, o sistema operacional aloca o buffer na memória e informa o 
dispositivo de entrada e saída para usá-lo ao enviar dados à CPU. O dispositivo de E/S 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 42
opera de forma assíncrona com a CPU, ocorrerá uma interrupção na CPU quando o 
processo estiver concluído. A vantagem desse método é que cada instrução que pode 
acessar a memória pode ser usada para manipular um dispositivo de entrada e saída, 
o que viabiliza seu uso na maioria dos dispositivos de alta velocidade, como discos e 
interfaces de comunicação.
Direct Access Memory (DMA ou Acesso Direto à Memória): dispositivos lentos 
(como teclados, por exemplo) irão gerar uma interrupção na CPU após cada byte 
ser transferido. Se um dispositivo rápido, como um disco, gerasse uma interrupção 
para cada byte, o Sistema Operacional gastaria a maior parte do tempo tratando 
dessas interrupções. Portanto, um computador típico usa hardware de acesso direto à 
memória (DMA) para reduzir essa sobrecarga.
O mecanismo de acesso direto à memória (DMA) implica que a CPU concede 
autoridade ao módulo de E/S para ler ou gravar na memória sem que ela (a CPU) 
participe do processo. O próprio módulo DMA controla a troca de dados entre a 
memória principal e o dispositivo. A CPU está envolvida apenas no início e no final da 
transferência e é interrompida apenas após a transferência do bloco inteiro.
O acesso direto à memória precisa de um hardware especial denominado 
controlador DMA (DMAC) que gerencia as transferências de dados e controla o 
acesso ao barramento do sistema. Os controladores são programados com ponteiros 
de origem e de destino, ou seja, que apontam onde ler e onde gravar os dados, mais 
os contadores para rastrear o número de bytes transferidos.
Este foi, portanto, o conteúdo a ser compartilhado. Mantenha-se firme nos estudos 
e até a próxima!
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 43
AULA 7
GERENCIAMENTO DE
PROTEÇÃO E SEGURANÇA
Vai longe o tempo em que desenvolver e implantar medidas de segurança aos 
computadores e seus dispositivos periféricos eram providências secundárias e restritas 
a atuação de alguns poucos profissionais. Com a crescente valorização de um ativo 
chamado informação, intensificaram-se os esforços para o aumento da segurança da 
CPU, memória principal, disco e programas. Como não poderia deixar de ser, o Sistema 
Operacional exerce importante função neste contexto. Seja bem-vinda e seja bem-vindo 
a este encontro em que trataremos dos meios e dos objetivos de segurança e proteção 
aplicados aos Sistemas Operacionais e das principais ameaças que podem comprometer 
a segurança de todo um sistema computacional.
7.1 Proteção
Embora a necessidade de proteção direcionada a um sistema de computação possa 
parecer óbvia é conveniente investirmos tempo para investigarmos com mais detalhes 
algumas razões. A primeira – e mais imediata – é que preciso impedir a violação maldosa 
e intencional de uma restrição de acesso por um usuário. Como sabemos, nem todos os 
usuários atendidos por um Sistema Operacional podem ter acesso irrestrito aos recursos 
por ele oferecidos e uma violação dos limites impostos pode comprometer seriamente o 
sistema. 
Ocorre que a questão da proteção envolve um objetivo mais genérico, de elevada 
importância e que deve ser perseguido pelos projetistas: a garantia de que os programas 
executados no computador usem os recursos do sistema em estrito acordo com as 
políticas estabelecidas e este requisito é fundamental para um sistema confiável e, ainda 
neste sentido, medidas adequadas de proteção irão aumentar a confiabilidade geral do 
sistema ao detectarem eventuais erros nas interfaces dos subsistemas que também 
interagem neste contexto.
Conforme nos ensinam Silberschatz, Baer e Gagne (2015), um recurso desprotegido 
não pode se defender contra a sua incorreta utilização por um usuário não autorizado. 
De forma oposta, um sistema orientado à proteção está preparado para diferenciar o 
uso autorizado do não autorizado e, neste contexto, vale diferenciarmos mecanismos de 
proteção de políticas de proteção: o papel da proteção em um sistema de computação é 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 44
fornecer um mecanismo para a imposição das políticas que governam o uso de recurso 
e que podem ser estabelecidas durante o projeto do sistema, ou pelos próprios usuários 
individuais, a fim de protegerem seus arquivos e programas.
Completam os autores que a proteção não é uma preocupação apenas do projetista de 
um sistema operacional. O programador de aplicações também precisa usar mecanismos 
de proteção para proteger os recursos criados e suportados por um subsistema de 
aplicação contra a má utilização. As políticas podem (e devem) ser alteradas com o 
tempo e em função de determinadas situações e elas se diferem dos mecanismos de 
segurança nos seguintes termos: os mecanismos determinam como algo será feito; as 
políticas decidem o que será feito. 
Para que o entendimento do conceito de proteção e do seu alcance seja mais 
abrangente, podemos posicionar os elementos de um sistema de computação como uma 
coleção de processos e de objetos. Blocos de memória, periféricos, discos, programas, 
drivers de dispositivo e tudo mais que se puder identificar no contexto podem fazer parte 
desta coleção e cada um deles possui um nome que o diferencia dos demais. Feita essa 
separação é possível então estabelecer de forma rigorosa as operações que se aplicam 
a cada objeto. Alguns exemplos nos ajudam a esclarecer a prática: em uma CPU pode-
se apenas executar programas; em trechos da memória principal pode-se ler dou gravar 
dados e arquivos podem ser criados, abertos, lidos, gravados, fechados e excluídos. 
Ainda no contexto do domínio de uma política de proteção, um processo deve ter 
permissão para acessar os recursos computacionais para os quais lhe foi dada a 
permissão de acesso. No mesmo sentido, um processo deve ter acesso aos recursos de 
que necessita para executar sua tarefa e a nenhum mais. A este princípio dá-se o nome 
de “conhecer-o-necessário” e seu objetivo é o de limitar eventuais danos que um processo 
incorreto pode ocasionar.
ISTO ACONTECE NA PRÁTICA
Silberschatz, Baer e Gagne (2015) nos dão o seguinte exemplo prático da limitação 
de acesso de recursos: quando o processo p invoca o procedimento A(), o 
procedimento deve ser autorizado a acessar somente suas próprias variáveis e 
os parâmetros formais passados a ele. Assim, ele não deve ser capaz de acessar 
todas as variáveis do processo p. Da mesma forma, considere o caso em que 
o processo p invoca um compilador para compilar um arquivo específico. O 
compilador não deve ser capaz de acessar arquivos arbitrariamente, mas deve ter 
acesso apenas a um subconjunto bem definido de arquivos (tais como o arquivo-
fonte, o arquivo de listagem, e assim por diante) relacionado com o arquivo a ser 
compilado. Inversamente, o compilador pode ter arquivos privados usados para fins 
de contabilização ou otimização que o processo p não deve ser capaz de acessar. 
SISTEMA OPERACIONAL
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 45
Como o próprio título desta nossa aula sugere, o conceito e as práticas de proteção 
estão profundamente

Continue navegando