Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

SISTEMAS 
OPERACIONAIS
PROF. MARCELO HENRIQUE
DOS SANTOS
FACULDADE CATÓLICA PAULISTA
Prof. Marcelo Henrique dos Santos
SISTEMAS 
OPERACIONAIS
Marília/SP
2023
“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
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 5
SUMÁRIO
CAPÍTULO 01
CAPÍTULO 02
CAPÍTULO 03
CAPÍTULO 04
CAPÍTULO 05
CAPÍTULO 06
CAPÍTULO 07
CAPÍTULO 08
CAPÍTULO 09
CAPÍTULO 10
CAPÍTULO 11
CAPÍTULO 12
CAPÍTULO 13
CAPÍTULO 14
CAPÍTULO 15
08
18
29
41
52
62
74
84
96
108
118
130
142
152
164
HISTÓRICO E FUNÇÕES DOS SISTEMAS 
OPERACIONAIS
TIPOS DE SISTEMAS OPERACIONAIS 
ARQUITETURA DE SISTEMAS OPERACIONAIS
PROGRAMAÇÃO CONCORRENTE
DEADLOCK 
GERENCIAMENTO DE PROCESSOS
COMUNICAÇÃO DE PROCESSOS 
GERENCIAMENTO DE MEMÓRIA
GERENCIAMENTO DE ARQUIVOS
GERENCIAMENTO DE ENTRADA/SAÍDA
GERENCIAMENTO DE SEGURANÇA E 
PROTEÇÃO
SISTEMAS OPERACIONAIS MULTIMÍDIAS
SISTEMAS OPERACIONAIS MOBILE 
VIRTUALIZAÇÃO E MÁQUINA VIRTUAL 
PROCESSOS / ESCALONAMENTO
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 6
INTRODUÇÃO
O sistema operacional serve como um link entre os usuários, hardware e o software 
aplicativo. Ele fornece uma aparência e mecanismo padrão para usuários e aplicativos 
e, ao mesmo tempo, gerencia cada recurso, como hardware, memória e CPU com 
eficiência. Ou seja, é um tipo de interface de software entre o usuário e o hardware 
do dispositivo. Ele permite que o usuário se comunique com o dispositivo e execute 
as funções desejadas.
Dentre as funções do sistema operacional são: gerenciamento de arquivos, 
gerenciamento de memória, gerenciamento de processos como multitarefa, interfaces 
de usuário, redes como TCP/IP etc., que conectam o hardware e o usuário ao operar 
o computador.
Veremos que os sistemas operacionais são usados internamente por vários 
computadores e sistemas embarcados, desde smartphones e consoles de jogos até 
supercomputadores. Pode-se dizer que a evolução das funções e operabilidade dos 
PCs e smartphones acompanhou a evolução do SO. 
O sistema operacional não deve ser considerado como sendo apenas a base do 
software que conecta hardware e software, mas também desempenha um papel 
importante na ponte entre o usuário e o computador.
A partir desse contexto, ao longo dos capítulos iremos discutir as funções do sistema 
operacional, dentre os elementos, podemos relacionar os seguintes itens: 
• Gerenciamento do calendário e progresso de tarefas: É responsável pela 
gestão do calendário e gestão do progresso das tarefas (unidades de trabalho 
do computador).
• Gerenciamento de memória: O local de trabalho é a memória. O sistema 
operacional é responsável pelo gerenciamento de memória.
• Gerenciamento de arquivos: O sistema de arquivos é uma das funções fornecidas 
pelo sistema operacional.
• Gerenciamento de dispositivos periféricos: O gerenciamento de conexões com 
dispositivos periféricos, como teclados e mouses, também é uma função do 
sistema operacional.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 7
• Fornecimento das APIs: Fornecemos APIs que servem como funções comuns 
para o desenvolvimento de aplicativos.
Veremos ainda que o sistema operacional utiliza dois componentes para gerenciar 
programas e aplicativos de computador. O kernel é o principal componente interno 
que processa dados no nível do hardware. Ele executa o gerenciamento de entrada/
saída, gerenciamento de memória e gerenciamento de processos.
Além disso, será possível refletir que um shell é a camada externa que gerencia a 
interação entre o usuário e o sistema operacional. O shell se comunica com o sistema 
operacional por meio de entrada do usuário ou por meio de scripts de shell. Um script 
de shell é uma série de comandos do sistema armazenados em um arquivo.
Ao longo da leitura do material, você vai encontrar informações que o ajudarão 
a refletir sobre o histórico, funções, tipos e arquitetura de Sistemas Operacionais, 
programação concorrente e deadlock, Comunicação e gerenciamento de processos, 
memória, arquivos, entrada/saída, segurança e proteção, sistemas operacionais 
multimídias e mobile, virtualização e máquina virtual, processos e escalonamento.
Bons estudos!
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 8
CAPÍTULO 1
HISTÓRICO E FUNÇÕES DOS 
SISTEMAS OPERACIONAIS
O Sistema Operacional (SO) se trata de um programa ou uma coleção de programas 
(software) que, ao inicializar o computador, é responsável por gerenciar os recursos 
do sistema do computador, sejam discos rígidos, memória, teclado, mouse, ou seja, 
representa uma comunicação direta entre o computador e o usuário (ANDLEIGH, 1990).
Sistemas operacionais como o MS-DOS funcionavam a partir de linhas de comando, 
hoje são muito mais intuitivos já que funcionam a partir de uma interface gráfica, 
embora também tenhamos a opção de usar o console de comando (esta opção seria 
para usuários avançados). 
De acordo com DEITEL et. al. (2005), o SO é responsável por iniciar os processos 
que nosso computador executa. Podemos definir os processos quando nosso software 
é carregado na memória. Se o programa não fosse carregado na memória, não 
funcionaria. Existem 2 tipos diferentes de processos:
• Em primeiro plano: Este tipo de processo requer execução e interação do usuário, 
um exemplo seria nosso navegador de internet, um processador de texto, um 
programa de compartilhamento de arquivos.
Título: Representação de um usuário utilizando a internet 
Fonte: https://br.freepik.com/fotos-premium/tempo-para-voce-jovem-adulta-linda-mulher-afro-americana-em-camiseta-olhando-sorrindo-para-o-smartphone-
sentado-no-sofa_15961359.htm#page=3&query=usar%20a%20internet&position=9&from_view=search&track=robertav1_2_sidr 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 9
• Em segundo plano: Não requerem nenhuma ação do usuário, pois como o próprio 
nome sugere são executados em segundo plano, geralmente não possuem 
interface gráfica, para vê-los teríamos que entrar no gerenciador de tarefas e lá 
apareceriam, um exemplo de software antivírus seria um exemplo.
Título: Representação da utilização do Windows Defender
Fonte: https://unsplash.com/pt-br/fotografias/p0vN2xCvJNg 
Os recursos que ele gerencia são tanto hardware (peças físicas, disco rígido, tela, 
teclado etc.) quanto software (programas e instruções). Por exemplo, computadores, 
laptops, tablets, celulares e servidores possuem e requerem um sistema operacional. 
Os outros programas que não são sistemas operacionais são chamados de aplicativos, 
esses programas são instalados em nosso sistema operacional, sem eles esses 
aplicativos não poderiam ser executados em nosso computador.
1.1 Funcionalidades do sistema operacional
Os sistemas operacionais usam imagens e botões para poder se comunicar 
facilmente com o computador, para poder enviar instruções ao nosso computador 
a qualquer momento sobre o que queremos fazer. O objetivo principal é fornecer as 
https://unsplash.com/pt-br/fotografias/p0vN2xCvJNg
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADECATÓLICA PAULISTA | 10
ferramentas necessárias para monitorar nosso computador e usá-lo de maneira fácil 
para o usuário final, em suma, o sistema facilita a vida do usuário (DEITEL et. al. 2005).
As funções básicas do sistema operacional são gerenciar, coordenar o hardware 
e organizar arquivos e diretórios nos dispositivos de armazenamento do nosso 
computador.
Certas coisas mais concretas que um sistema operacional pode fazer são:
• É o único software importante que executa os programas e cuida de todo o resto. 
Por exemplo, o sistema operacional controla os arquivos e outros recursos que 
esses programas podem acessar quando estiverem em execução.
• Quando temos vários programas que podem rodar ao mesmo tempo, ele 
determina quais aplicativos rodar exatamente, em que ordem e por quanto tempo.
• Gerencia o compartilhamento de armazenamento interno entre vários aplicativos.
• Ele lida com a entrada e saída de dados de e para dispositivos de hardware 
conectados, como discos rígidos, impressoras, portas de comunicação, teclados 
etc.
• Ele envia mensagens sobre o status operacional e quaisquer erros ocorridos 
para qualquer aplicativo ou usuário (ou para um operador do sistema).
• Em computadores que permitem processamento paralelo, um sistema operacional 
pode lidar com o particionamento do programa para ser executado em mais de 
um processador por vez. Por exemplo, quando um aplicativo deseja imprimir 
algo, ele envia esse trabalho para o sistema operacional.
• Envia as instruções para a impressora e usa os drivers da impressora para 
enviar os sinais corretos.
• O aplicativo que imprime não precisa se preocupar com qual impressora precisa 
imprimir ou entender como essa impressora funciona, ou seja, ele cuida de 
cada detalhe.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 11
ISTO ACONTECE NA PRÁTICA
Quando executamos um jogo em nosso computador, ele é processado a partir de 
um sistema operacional. O jogo não deve saber exatamente como funcionam os 
componentes de hardware individuais do nosso computador.
Título: Representação de um usuário jogando em um computador.
Fonte: https://unsplash.com/pt-br/fotografias/SXGVliZGS7I 
Normalmente o jogo utiliza uma variedade de recursos do sistema operacional, 
e o sistema operacional os traduz em instruções de como usar nosso hardware. 
Isso evita muitos problemas para os desenvolvedores e qualquer outro programa 
executado em um sistema operacional.
1.2 História e desenvolvimento de sistemas operacionais
Os primeiros computadores não tinham um sistema operacional. Todos os programas 
executados nesses primeiros computadores deveriam conter o código necessário para 
executar o computador inteiro, comunicar-se com o hardware conectado e realizar 
os cálculos necessários para o programa. Essa situação dificultava a gestão até dos 
programas mais simples (TANENBAUM, 2003). 
https://unsplash.com/pt-br/fotografias/SXGVliZGS7I
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 12
Respondendo a esse problema, os proprietários de computadores mainframe 
começaram a desenvolver programas de sistema que tornavam mais fácil escrever 
e executar programas no computador e, assim, nasceram os primeiros sistemas 
operacionais. 
O primeiro sistema operacional foi desenvolvido pela General Motors para executar 
um único computador IB (nesse período a IBM se tornou a primeira fabricante de 
computadores a assumir o desenvolvimento de sistemas operacionais e começou a 
fornecer sistemas operacionais que acompanhavam seus computadores). Nas décadas 
seguintes, os computadores começaram a incluir cada vez mais softwares, às vezes 
chamados de bibliotecas, que juntos formaram o início dos sistemas operacionais 
modernos. 
A primeira versão do sistema operacional Unix foi desenvolvida no final dos anos 
1960. Escrito na linguagem de programação C e disponível gratuitamente nos primeiros 
anos. O Unix adaptou-se facilmente a novos sistemas e rapidamente ganhou ampla 
aceitação. Muitos sistemas operacionais modernos, incluindo o Apple OS e todas as 
várias versões do Linux, derivam ou são baseados no sistema semelhante ao Unix. 
O Windows foi desenvolvido em resposta ao pedido da IBM para criar um sistema 
operacional para seus computadores pessoais ou de mesa. O primeiro sistema 
operacional desenvolvido pela Microsoft não foi o Windows, mas o MS-DOS, que foi 
desenvolvido em 1981, adquirindo o sistema operacional 86-DOS da Seattle Computer 
Products e adaptando-o aos requisitos da IBM. O nome Windows foi usado pela primeira 
vez, quando uma interface gráfica do usuário foi criada e combinada com o MS-DOS 
(TANENBAUM e WOODHULL, 2008).
Título: Representação da utilização do sistema operacional MS-DOS
Fonte: https://br.freepik.com/fotos-gratis/pessoa-usando-computador-retro_34134827.htm#query=MS-DOS&position=31&from_
view=search&track=robertav1_2_sidr 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 13
A Apple, OS X, Microsoft Windows e várias formas de Linux (incluindo Android) 
agora dominam a maior parte do mercado de sistemas operacionais modernos.
ISTO ESTÁ NA REDE
De acordo com Fortune Business Insights (2023), o mercado global de sistemas 
operacionais para servidores está projetado para atingir um volume de 54.748 mil 
em 2030, com um CAGR de 12,7% durante o período de previsão, 2023-2030
O volume global do mercado de sistemas operacionais para servidores foi de 21.578 
mil em 2022 e deve atingir o patamar de 54.748 mil em 2030, exibindo um CAGR de 
12,7% durante o período de previsão. Uso crescente de plataforma e infraestrutura 
em nuvem para impulsionar o mercado (FORTUNE BUSINESS INSIGHTS, 2023).
Muitas empresas líderes que operam no mercado estão envolvidas no 
desenvolvimento de sistemas operacionais inovadores baseados em servidores 
para servidores web. Os sistemas operacionais de servidor geralmente funcionam 
em uma arquitetura cliente/servidor para atender à demanda de computadores 
na rede entre os clientes. Muitos servidores, como correio, arquivo, web, banco de 
dados, impressão e aplicativo, dependem de sistemas operacionais para ajudar 
os usuários a realizar várias funções. Espera-se que esses fatores acelerem o 
crescimento do mercado de sistemas operacionais para servidores.
Para ler a matéria na íntegra, acesse o seguinte link: https://finance.yahoo.com/
news/server-operating-system-market-surpass-070500343.html. 
1.2.1 Unix: O sistema operacional que estabeleceu novos padrões
O desenvolvimento do Unix é sem dúvida um dos marcos mais importantes da 
história da computação. O sistema operacional não apenas introduziu conceitos 
rudimentares de TI, como um sistema de arquivos hierárquico com uma estrutura 
de diretório; foi também a base para o desenvolvimento de vários outros sistemas, 
como os sistemas operacionais macOS e iOS da própria Apple, ou o projeto open 
source Linux, que deu origem a diversos derivados como Ubuntu, Debian e Android 
(TANENBAUM e WOODHULL, 2008).
Em 1965, o grupo de trabalho apresentou sua ideia para um novo sistema operacional 
na conferência de informática do outono. O grupo era formado por funcionários do 
Massachusetts Institute of Technology (MIT), General Electric Company e AT&T Bell 
Laboratories (Bell Labs) (desde 2016 parte do departamento Nokia PandD). Eles 
https://finance.yahoo.com/news/server-operating-system-market-surpass-070500343.html
https://finance.yahoo.com/news/server-operating-system-market-surpass-070500343.html
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 14
chamaram o sistema operacional Multiplexed Information and Computing Service, 
ou Multics, para abreviar. Eles se esforçam para abordagens completamente novas, 
focando em particular no conceito de compartilhamento de tempo (TANENBAUM e 
WOODHULL, 2008).
O Multics deve ser um dos primeiros sistemas a permitir que vários usuáriostrabalhem 
em um computador ao mesmo tempo, compartilhando o tempo de computação do 
processador subjacente. Para o projeto, o grupo de trabalho Multics precisava de 
um computador que atendesse a uma série de requisitos específicos: por um lado, 
precisava ter um conjunto de instruções claramente estruturadas para poder usar a 
programação de alto nível PL/I da IBM linguagem destinada ao desenvolvimento. Por 
outro lado, tinha que suportar a operação multiusuário planejada e trabalhar de forma 
assíncrona para manter a perda de desempenho no gerenciamento de memória o 
mais baixo possível. 
Por esta razão, o GE-635 e posteriormente o GE-645 da General Electric foram 
escolhidos. O desenvolvimento foi realizado no já executável sistema multiusuário 
CTSS, desenvolvido pelo MIT no início dos anos 1960. O Multics foi desenvolvido no 
MIT e mais tarde vendido comercialmente em máquinas Honeywell 6180 (até 1986) 
pela empresa Honeywell International Inc. - após sua compra da General Electric. No 
entanto, o cientista da computação Ken Thompson, que na época era funcionário 
dos extintos Bell Labs, não desistiu da ideia de um sistema multiusuário: junto com 
Dennis Ritchie e uma pequena equipe das instalações da AT&T, ele começou a planejar 
seu próprio sistema baseado nos princípios do Multics. No entanto, a busca por um 
computador adequado inicialmente provou ser infrutífera - e como a Bell Labs resistiu 
em comprar uma cópia adequada, os desenvolvedores inicialmente registraram seus 
pensamentos e progresso do sistema de arquivos planejado em papel e quadro-negro 
(TANENBAUM e WOODHULL, 2008).
Finalmente, o minicomputador PDP-7 usado para o projeto proposto foi implementado 
pela Digital Equipment Corporation (DEC). Esse sistema de computador do tamanho 
de um gabinete usava o sistema operacional GECOS (General Electric Comprehensive 
Operating System), que foi a plataforma de desenvolvimento desde então. Ferramentas 
de software valiosas como a linha de comando, editor e sistema de arquivos apareceram 
rapidamente. Como o novo sistema operacional, ao contrário do Multics, permitia 
apenas dois usuários que podiam executar apenas um processo por vez, a equipe o 
chamou de Unics com base no modelo.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 15
1.2.2 Sistemas operacionais de computador
De acordo com OLIVEIRA et. al. (2004), os sistemas operacionais para computadores 
ou desktops variam muito e são muitos, mas os mais comuns são Windows, Mac e 
LINUX. A partir desse contexto, podemos observar os sistemas operacionais que são 
mais utilizados para PC:
• Linux ou Ubuntu: Como sistema operacional, foi desenvolvido para oferecer aos 
usuários de computadores pessoais uma alternativa gratuita ou muito barata. 
O Linux tem a reputação de ser um sistema muito eficiente e rápido. Existem 
muitas versões diferentes, sendo as mais populares o Ubuntu ou o Fedora. As 
versões podem ser modificadas livremente por qualquer usuário.
• Microsoft Windows: Usar o Windows é o carro-chefe do sistema operacional da 
Microsoft, o sistema padrão para computadores pessoais e empresariais. Foi 
fundada em 1985, é a grande responsável e pioneira do rápido desenvolvimento 
da informática no lar.
• Mac OS: é o sistema operacional Apple Macintosh para computadores pessoais 
e estações de trabalho. A maçã identifica esse sistema operacional porque é 
seu logotipo.
ISTO ACONTECE NA PRÁTICA
O Linux é usado para gerenciar vários serviços, incluindo agendamento de 
processos, agendamento de aplicativos, dispositivos periféricos básicos e sistemas 
de arquivos.
Os produtos baseados em Linux tiveram um grande impacto no espaço de TI e 
muitos se tornaram essenciais para um grande número de pilhas de tecnologia 
das organizações, com Kubernetes (um gerenciador de cluster de contêiner do 
Google), Docker (um programa de contêiner de software) e Open Daylight ( usado 
para acelerar a adoção de SDNs e virtualização de funções de rede), todos com uso 
generalizado. 
Além disso, os sistemas operacionais baseados em Linux são os favoritos entre 
os provedores de serviços em nuvem devido à sua natureza gratuita e de código 
aberto. 
Para ler a matéria na íntegra, acesse o seguinte link: https://builtin.com/
software-engineering-perspectives/linux. 
https://builtin.com/software-engineering-perspectives/linux
https://builtin.com/software-engineering-perspectives/linux
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 16
1.2.3 Sistemas operacionais móveis
Entre os sistemas operacionais usados em dispotivos móveis, como celulares e 
tablets, podemos citar o Android, iOS, Windows Phone (que inclusive já foi descontinuado), 
entre outros: 
• Android: Este sistema operacional foi criado pelo Linux por ser de código aberto 
e ser utilizado em dispositivos móveis e tablets. Foi criado pela Android Inc. Um 
pouco depois foi comprado pelo Google e se tornou tão popular que as vendas 
dispararam e é o sistema operacional móvel mais usado atualmente.
• IOS: É o sistema operacional da empresa Apple Inc. O primeiro lançamento foi 
em junho de 2007, a primeira versão foi lançada porque hoje já estamos na 
versão 15 desse sistema operacional. Este sistema operacional é menos usado 
que o Android, mas lendo várias análises de usuários, chegamos à conclusão 
de que o IOS é muito mais estável que o Android e mais rápido.
• Windows Phone: Foi um sistema operacional desenvolvido pela empresa 
Windows. Inicialmente teve bastante sucesso e muitos celulares e tablets foram 
vendidos com esse sistema operacional. Hoje não é mais usado, pois está 
obsoleto em comparação com os outros dois SO que mencionamos acima.
Havia também outros sistemas operacionais, como o Blackberry OS, que já existiam 
há alguns anos e estavam completamente desatualizados e agora esquecidos.
1.2.4 Sistema operacional Dependendo do PC e gênero de aplicativo
De acordo com TANENBAUM e WOODHULL (2008), deste tipo temos:
• Sistema operacional em tempo real (RTOS - Real Time Operating System): 
Os sistemas operacionais em tempo real são usados para monitorar máquinas, 
instrumentos científicos e sistemas industriais. Uma parte muito importante de 
um RTOS é direcionar os recursos do computador para que uma determinada 
operação seja executada exatamente na mesma quantidade de tempo toda vez 
que ela ocorrer.
• Único usuário, única tarefa: como o nome sugere, este sistema operacional foi 
projetado para gerenciar o computador de forma que um usuário possa fazer 
apenas uma coisa por vez.
• Único usuário, multitarefa: a maioria das pessoas usa esses tipos de sistemas 
operacionais em seus desktops e laptops. As plataformas Windows da Microsoft 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 17
e MacOS da Apple são exemplos de sistemas operacionais que permitem que 
um único usuário execute vários programas simultaneamente.
• Multiusuário: Um sistema operacional multiusuário permite que muitos usuários 
diferentes usem os recursos do computador ao mesmo tempo. Unix, VMS e 
sistemas operacionais de mainframe como MVS são exemplos de sistemas 
operacionais multiusuário.
1.2.5 As partes de um sistema operacional
Um sistema operacional consiste em vários componentes e/ou funções diferentes. 
As peculiaridades definidas como parte do sistema operacional mudam com cada 
sistema operacional. Segundo Silberschatz (2001), as três partes de um sistema 
operacional mais fáceis de definir e usar em qualquer sistema operacional são: 
• Kernel: Ele pode ser considerado o coração do seu sistema operacional, por 
isso também é chamado de kernel do sistema operacional. O kernel é carregado 
primeiro quando o sistema operacional é iniciado e fornece controle básico sobre 
todo o hardware do computador. Suas principais funções incluem ler e escrever 
dados na memória, processar comandos de execução, operar dispositivos como 
display, teclado e mouse, recebê-lose enviá-los e interpretar dados recebidos de 
redes. O kernel geralmente é executado remotamente para que outros programas 
de computador não possam corrompê-lo. O kernel do sistema operacional é 
necessário, mas é apenas uma parte do sistema operacional.
• User Interface: Este componente permite a interação com o usuário, que pode 
ser feita através de ícones gráficos e um desktop, ou através de uma linha de 
comando.
• Interfaces de Programação de Aplicativos: Este componente permite que os 
desenvolvedores de aplicativos escrevam código modular (parcial).
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 18
CAPÍTULO 2
TIPOS DE SISTEMAS 
OPERACIONAIS 
Um sistema operacional é um programa que, após ser carregado na inicialização, 
controla todos os outros aplicativos. Os programas usam o sistema operacional 
comunicando-se com ele por meio de interfaces de programação (APIs). Além disso, 
os usuários podem interagir diretamente com o sistema operacional por meio de 
uma interface de usuário, como uma linha de comando ou uma interface gráfica de 
usuário (GUI).
A partir desse contexto, de acordo com SILBERSCHATZ (2010), um sistema 
operacional pode executar os seguintes serviços:
• Em um sistema operacional multitarefa, em que vários programas podem ser 
executados simultaneamente, o sistema operacional determina quais aplicativos 
são executados, em que ordem e quanto tempo é permitido para cada aplicativo 
antes que outro seja iniciado.
• Ele gerencia o compartilhamento de armazenamento interno entre vários 
aplicativos.
• Ele processa entrada e saída de e para dispositivos de hardware conectados, 
como discos rígidos, impressoras e monitores.
• Ele envia mensagens para cada aplicativo ou usuário interativo (ou para um 
operador do sistema) sobre o status operacional e quaisquer erros ocorridos.
• Ele pode descarregar o gerenciamento de trabalhos em lote (por exemplo, 
impressão) para que o aplicativo inicial seja liberado desse trabalho.
• Em computadores que permitem processamento paralelo, um sistema operacional 
pode controlar como o programa é particionado para que seja executado em 
mais de um processador por vez.
Todas as principais plataformas de computador (hardware e software) requerem e 
incluem um sistema operacional. Os sistemas operacionais devem ser projetados com 
diferentes recursos para atender às necessidades específicas de diferentes formatos.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 19
2.1 Tipos de sistemas operacionais
Existem sistemas operacionais para diferentes finalidades. Portanto, não existem 
apenas os sistemas operacionais conhecidos para PCs e dispositivos portáteis, mas 
também aqueles para mainframes, servidores, sistemas embarcados, sensores, cartões 
inteligentes etc. Dentre esses recursos, segundo SILBERSCHATZ (2010), podemos 
observar os seguintes sistemas operacionais:
• Operação de programa único e operação de vários programas: No passado, 
no máximo um programa ou processo era executado a qualquer momento 
(tarefa única). Hoje em dia, computadores com desempenho suficiente 
normalmente funcionam em modo multitarefa. Vários processos são executados 
simultaneamente, ou pelo menos parecem ser, alternando entre os processos 
individuais em rápida sucessão. Este procedimento faz sentido, entre outras 
coisas, porque os processos geralmente esperam por eventos externos (por 
exemplo, entrada do usuário, de dispositivos periféricos ou outros processos) 
e bloqueariam o processador durante esse tempo. 
• Operação de usuário único e operação multiusuário: Mesmo o modo de 
usuário único é comum apenas com dispositivos de baixo desempenho. Em 
computadores com capacidade de computação pelo menos normal, há muito 
nos acostumamos com o modo multiusuário, no qual vários usuários estão 
ativos no computador ao mesmo tempo. Mesmo que o usuário pense que é o 
único usando o computador, uma olhada na lista de processos ativos mostra 
que há muito mais processos em execução do que ele próprio iniciou. Assim 
que for o caso, o uso dos recursos (agendamento) deve ser resolvido, bem como 
a questão das permissões de acesso. 
• Linha de comando e GUI (interface gráfica do usuário): até meados da década 
de 1970, havia apenas entrada e saída baseadas em caracteres. A primeira 
interface gráfica do usuário apareceu apenas no Apple Macintosh. Hoje, todos os 
computadores suficientemente poderosos lidam com entrada e saída de dados 
meio de interfaces gráficas do usuário. No entanto, os sistemas operacionais 
mais recentes quase sempre têm uma ou mais ferramentas de linha de comando. 
Administradores de sistema e usuários avançados gostam especialmente de 
usá-los para administração do sistema. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 20
Os dois nomes mais citados no campo dos sistemas operacionais são Windows e 
Linux. No entanto, na realidade, sistemas muito diferentes podem estar ocultos sob 
o mesmo nome. Existem cinco famílias de sistemas operacionais diferentes sob o 
nome Windows: MS-DOS, incluindo Windows 9x, Windows CE, Windows Mobile/Phone, 
Windows Server e Windows NT. Além de não fazer parte de uma grande família de 
sistemas operacionais (ou seja, aqueles derivados do UNIX, que também incluem 
macOS e iOS), o próprio Linux gerou diversas variantes próprias. Em particular, o 
sistema operacional Android mais comum (a partir de 2018) é um derivado do Linux. 
Com base nesse contexto, segundo SILBERSCHATZ (2010), podemos combinar os 
seguintes sistemas operacionais:
Fonte: O próprio autor.
ANOTE ISSO
Um sistema operacional é um software que oferece suporte e gerencia todos os 
programas e aplicativos usados por um computador ou dispositivo móvel.
Um sistema operacional usa uma interface gráfica do usuário (GUI), uma 
combinação de gráficos e texto, que permite interagir com o computador ou 
dispositivo.
Todo computador ou dispositivo inteligente precisa de pelo menos um sistema 
operacional para executar aplicativos e executar tarefas.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 21
2.1.1 Sistema operacional de compartilhamento de tempo
Os sistemas operacionais de compartilhamento de tempo permitem que as pessoas 
trabalhem simultaneamente em diferentes computadores usando o mesmo sistema 
operacional. 
 Eles compartilham o tempo de CPU e respostas. Os sistemas operacionais de 
compartilhamento de tempo podem executar tarefas únicas ou múltiplas. Os sistemas 
operacionais monotarefa podem executar apenas uma tarefa por vez, enquanto os 
sistemas multitarefa podem executar várias tarefas ao mesmo tempo.
2.1.2 Sistemas operacionais distribuídos
Esses sistemas operacionais usam várias CPUs para permitir que mais de um 
aplicativo em tempo real e mais de um usuário acessem ao mesmo tempo. 
As tarefas são distribuídas aos processadores via barramento de alta velocidade 
ou linhas terrestres. Algumas vantagens desses sistemas operacionais são que eles 
oferecem melhor usabilidade e reduzem a velocidade de processamento de dados.
Segundo SILBERSCHATZ et. al. (2000), um sistema operacional distribuído (DOS - 
Distributed Operating System) é um tipo essencial de sistema operacional. Os sistemas 
distribuídos usam muitos processadores centrais para atender a vários aplicativos e 
usuários em tempo real. Como resultado, as tarefas de processamento de dados são 
distribuídas entre os processadores.
Ele conecta vários computadores através de um único canal de comunicação. 
Além disso, cada um desses sistemas possui seu próprio processador e memória. 
Essas CPUs se comunicam por meio de barramentos de alta velocidade ou linhas 
telefônicas. Os sistemas individuais que se comunicam por meio de um único canal 
são considerados como uma única entidade. Eles também são conhecidos como 
sistemas fracamente acoplados.
Este sistema operacional consiste em vários computadores,nós e sites unidos 
por meio de linhas LAN/WAN. Ele permite a distribuição de sistemas completos em 
alguns processadores centrais e suporta muitos produtos em tempo real e usuários 
diferentes. Os sistemas operacionais distribuídos podem compartilhar seus recursos 
de computação e arquivos de E/S enquanto fornecem aos usuários a abstração da 
máquina virtual.
Existem vários exemplos de sistema operacional distribuído. Alguns deles são os 
seguintes:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 22
Fonte: o próprio autor.
2.1.3 Sistemas batch multiprogramados
Os sistemas batch multiprogramados forneciam um ambiente onde vários recursos 
do sistema eram usados de forma eficiente, mas não permitiam que o usuário interagisse 
com os sistemas de computador. O compartilhamento de tempo é uma extensão 
lógica da multiprogramação. O processador executa várias tarefas com switches com 
tanta frequência que o usuário pode interagir com cada programa enquanto ele está 
em execução. Um sistema operacional de compartilhamento de tempo permite que 
vários usuários compartilhem um computador ao mesmo tempo. Com cada operação 
ou pedido ao mesmo tempo, o sistema distribuído é reduzido para que apenas uma 
pequena quantidade de tempo de CPU seja necessária para cada usuário. Se o sistema 
mudar rapidamente de um usuário para outro, cada usuário terá a impressão de que 
todo o sistema computacional é dedicado ao seu uso, mesmo que seja compartilhado 
entre vários usuários (STALLINGS, 1998).
Um sistema operacional de compartilhamento de tempo realiza o agendamento de 
CPU e multiprogramação para dar a cada usuário uma pequena parte de um computador 
compartilhado ao mesmo tempo. Cada usuário tem pelo menos um programa específico 
na memória. Esse curto período de tempo durante o qual o usuário recebe a atenção 
da CPU é chamado de fatia de tempo, slot ou quantum. Isso geralmente é da ordem 
de 10 a 100 milissegundos. Os sistemas operacionais de compartilhamento de tempo 
são mais complexos do que os sistemas operacionais de multiprogramação. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 23
Ambos devem ter vários trabalhos na memória ao mesmo tempo, portanto o sistema 
deve ter gerenciamento e proteção de memória. Para obter um bom tempo de resposta, 
as tarefas podem precisar ser movidas para dentro e para fora do disco de memória 
principal, que agora atua como um backup da memória principal. Um método comum 
para atingir esse objetivo é a memória virtual, uma técnica que permite realizar tarefas 
que podem não estar completamente na memória (STALLINGS, 1998).
2.1.4 Batch OS
Esses sistemas operacionais são caracterizados pelo fato de que o usuário não 
pode interagir diretamente com o computador. 
As tarefas são preparadas em uma máquina off-line como se fossem cartões 
perfurados. Estes são então inseridos no computador. O sistema operacional agrupa 
as tarefas tematicamente, para que o usuário não possa definir prioridades.
2.1.5 Sistema operacional em tempo real
Os sistemas operacionais de tempo real geralmente têm intervalos curtos para 
calcular as coisas ou responder às entradas em comparação com os processadores 
online. 
Esses sistemas operacionais são frequentemente usados em aplicações como 
controle de tráfego aéreo ou máquinas de ressonância magnética. Existem limites 
de tempo fixos aqui para evitar uma falha no sistema.
Os sistemas operacionais de tempo real podem ser sistemas com limites rígidos 
de tempo real, que garantem a conclusão de uma tarefa em um determinado tempo, 
ou com limites flexíveis, nos quais uma tarefa pode ser interrompida para priorizar 
outra (OLIVEIRA et. al., 2004).
ISTO ACONTECE NA PRÁTICA
O Redhawk Linux -- um sistema operacional Linux em tempo real para sistemas 
x86 e ARM64 -- é amplamente usado em aplicativos incorporados que exigem alto 
desempenho e resposta determinística. 
O Jetson AGX Orin é um sistema em módulo de inteligência artificial (IA) baseado 
em ARM64, alimentado pela tecnologia Ampere GPU da NVIDIA com núcleos 
Tensor, permitindo alto desempenho em um fator de forma pequeno e com baixo 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 24
consumo de energia para dispositivos de ponta inteligentes, incluindo robôs, 
antenas não tripuladas (UASs) e câmeras inteligentes.
De acordo com o anúncio da empresa, o ambiente de desenvolvimento integrado 
do RedHawk Linux inclui o conjunto de ferramentas NightStar da Concurrent Real-
Time -- um conjunto de ferramentas totalmente integrado para depuração, análise e 
ajuste de aplicativos integrados sensíveis à latência -- que pode ser usado para para 
trazer aplicativos para o mercado mais rapidamente.
Para ler a matéria na íntegra, acesse o seguinte link: https://militaryembedded.
com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-
jetson-agx-orin-platform. 
2.1.6 Sistema operacional de rede
Esses sistemas operacionais fornecem ao servidor a capacidade de gerenciar 
usuários, tarefas, dados, segurança, aplicativos e outras funções de rede. O principal 
objetivo desses sistemas operacionais é que os usuários possam acessar impressoras 
e arquivos compartilhados independentemente do PC em que estejam na rede. Alguns 
desses sistemas operacionais são Microsoft Windows Server 2008, Mac OS X, BSD, 
UNIX e Linux (OLIVEIRA et. al., 2004).
Aprender mais sobre os diferentes tipos de sistemas operacionais é crucial para 
qualquer pessoa interessada em computadores e programação ou desenvolvimento de 
software, pois fornece a base perfeita para experimentar coisas novas e desenvolver 
suas próprias habilidades.
2.1.7 Sistemas Operacionais de Servidor
Quando se trata de sistemas operacionais de servidor, o foco está principalmente 
em três sistemas operacionais: “Microsoft Windows”, Unix e Linux. No entanto, é difícil 
dar uma resposta geral sobre se um ou outro é mais adequado para uma rede ou 
centro de dados. As vantagens mais importantes do Windows na operação do servidor 
são a usabilidade nativa e os aplicativos que requerem um ambiente Windows ou são 
difíceis de emular. Além disso, muitos componentes já estão integrados no sistema 
e a maioria dos requisitos de software usuais são cobertos por padrões da Microsoft 
ou de outros fornecedores.
Por outro lado, há muitas vantagens em um sistema baseado em Linux. Acima 
de tudo, isso inclui código aberto e, portanto, a capacidade de adaptá-lo e alterá-lo a 
qualquer momento, além da utilização do Linux ser gratuita. Além disso, o Linux oferece 
uma grande comunidade de código aberto com muitas inovações e atualizações de 
segurança muito rápidas.
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 25
Existem soluções de software de código aberto profissionais e gratuitas para 
quase todos os aplicativos de servidor. Muitos aplicativos Linux são mais eficientes, 
mais enxutos e mais rápidos do que os da concorrência. No entanto, o Linux requer 
significativamente mais know-how (conhecimento específico e técnico). Porque o Linux 
é estruturado de forma diferente em comparação aos servidores Windows e, portanto, 
é muito mais difícil de usar nativamente (OLIVEIRA et. al., 2004).
A partir desse contexto, segundo OLIVEIRA et. al. (2004), os sistemas operacionais 
Unix continuam a desempenhar um papel importante nos data centers. Eles são 
essencialmente caracterizados pela estabilidade técnica e confiabilidade. Unix e 
derivados do Unix, como AIX e HP-UX, provaram seuvalor aqui - e os clientes ainda 
se apegam ao antigo sistema operacional da Sun, Solaris. Os sistemas operacionais 
Unix não são tão vulneráveis e vulneráveis em comparação com o Microsoft Windows. 
Enquanto isso, sistemas de código aberto para data centers, como os da Mesosphere, 
também estão enriquecendo o mercado. Os DC/OS (Data Center Operating Systems) são 
plataformas de código aberto para o desenvolvimento, operação e dimensionamento 
de aplicativos corporativos. Além disso, eles devem facilitar muito a operação de 
contêineres e aplicativos distribuídos.
ISTO ESTÁ NA REDE
O Windows é um sistema operacional bem conhecido com uma longa história. Na 
maioria dos computadores em uso hoje, é um dos sistemas operacionais mais 
prevalentes. 
A Microsoft criou a plataforma do sistema operacional Windows Server para 
lidar com gerenciamento, aplicativos, armazenamento de dados e comunicações 
em nível empresarial. Versões anteriores do Windows Server priorizavam rede, 
estabilidade, segurança e diferentes aprimoramentos do sistema de arquivos.
A Microsoft certificou-se de incorporar sua Active Server Page como um dos 
recursos de seu produto (ASP). Leva apenas alguns cliques para usar este ASP 
para criar uma nova página ASP. Você pode começar instantaneamente a adicionar 
material ao site sem digitar uma palavra. Esta é uma vantagem significativa em 
comparação com outros sistemas operacionais que exigem codificação. Você pode 
ter certeza de que, com a ajuda desse recurso, poderá criar um site dinâmico que 
atenda às necessidades do usuário.
Para ler a matéria na íntegra, acesse o seguinte link: https://militaryembedded.
com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-
jetson-agx-orin-platform. 
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 26
2.2 Classificação dos sistemas operacionais
A primeira geração de computadores (aprox. 1945-1955) não tinha sistema 
operacional. A programação ocorria de forma direta (breadboard, fita perfurada, cartão 
perfurado).
A segunda geração (1955-1965) usou o processamento em lote. Um trabalho é 
montado de forma fechada, consistindo de um programa, dados e instruções de controle. 
O usuário só obtém os resultados após a conclusão do processamento (geralmente 
como uma impressão). O termo “processamento em lote” vem simplesmente do baralho 
de cartões perfurados que alguém escaneou (TANENBAUM e WOODHULL, 2008). As 
propriedades típicas são os seguintes elementos:
Fonte: o próprio autor.
A terceira geração (aprox. 1965-1980) domina o processamento de diálogos. O 
usuário se comunica com o computador por meio do teclado e da tela, com o qual 
pode iniciar, monitorar e influenciar programas.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 27
Fonte: o próprio autor.
A quarta geração (por volta de 1975) é um sistema de diálogo como o conhecemos 
hoje. Primeiramente, o diálogo acontecia em modo texto via teclado e tela de texto. 
Interfaces gráficas de usuário foram posteriormente desenvolvidas (GEM pela Digital 
Research, Apple OS em “Lisa” e “Macintosh”, Windows pela Microsoft e “X” no UNIX).
2.2.1 Recursos do sistema operacional
De acordo com TANENBAUM e WOODHULL (2008), podemos relacionar quatro 
funções principais de um sistema operacional, como segue a seguir:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 28
Gerenciamento de memória: À medida que os sistemas operacionais evoluem, 
o usuário pode executar várias tarefas simultaneamente. Para manter as coisas 
funcionando sem problemas e melhorar a multitarefa, o sistema operacional deve 
gerenciar a memória da maneira mais eficiente possível. 
Gerenciamento da CPU: quando um usuário deseja realizar várias tarefas ao mesmo 
tempo, é tarefa do sistema operacional gerenciar e agendar os processos e entregá-
los à CPU para processamento. 
Gerenciamento de dispositivos: O sistema operacional é responsável apenas pelo 
gerenciamento dos dispositivos de entrada/saída. Se algo não for suportado, o sistema 
operacional não o reconhecerá. O sistema operacional permite conectar ou desconectar 
facilmente qualquer dispositivo de E/S. 
Gerenciamento de documentos: O sistema operacional define a estrutura de como 
os arquivos e pastas são organizados. Quanto mais eficientemente for organizado, 
mais fácil será para o usuário acessar os arquivos e recursos armazenados.
ISTO ESTÁ NA REDE
Um exemplo de recursos do sistema em funcionamento pode ser visto quando 
você abre qualquer programa em seu computador. Quando um aplicativo é 
carregado, o sistema operacional aloca uma certa quantidade de memória e tempo 
de CPU de que o aplicativo precisa. Ele faz isso usando os recursos do sistema 
atualmente disponíveis. 
Para ler a matéria na íntegra, acesse o seguinte link: https://
militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-
time-launches-to-support-jetson-agx-orin-platform. 
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 29
CAPÍTULO 3
ARQUITETURA DE 
SISTEMAS OPERACIONAIS 
Os principais componentes de software de um sistema operacional são chamados 
coletivamente de kernel. O kernel tem acesso ilimitado a todos os recursos do sistema. 
Nos primeiros sistemas monolíticos, todos os componentes do sistema operacional 
estavam contidos no kernel, que se comunicava diretamente com todos os outros 
componentes e permitia acesso irrestrito ao sistema. Embora isso torne o sistema 
operacional muito eficiente, também significa que os erros são mais difíceis de isolar, 
aumentando o risco de corrupção por código ruim ou malicioso (ANDLEIGH, 1990).
À medida que os sistemas operacionais se tornaram maiores e mais complexos, 
essa abordagem foi amplamente abandonada em favor de uma abordagem modular 
que agrupava componentes com funcionalidade semelhante em camadas para ajudar 
os projetistas de sistemas operacionais a gerenciar a complexidade do sistema. Nesse 
tipo de arquitetura, cada camada se comunica apenas com as camadas imediatamente 
acima e abaixo dela, e as camadas de nível inferior fornecem serviços às de nível 
superior usando uma interface que oculta sua implementação.
A modularidade dos sistemas operacionais em camadas permite que a implementação 
de cada camada seja modificada sem exigir nenhuma modificação nas camadas 
adjacentes. Embora essa abordagem modular imponha estrutura e consistência ao 
sistema operacional, simplificando a depuração e a modificação, uma solicitação de 
serviço de um processo do usuário pode passar por muitas camadas do software do 
sistema antes de ser atendido e o desempenho se compara desfavoravelmente ao de 
um kernel monolítico. Além disso, como todas as camadas ainda têm acesso irrestrito 
ao sistema, o kernel ainda é suscetível a códigos errôneos ou maliciosos. Muitos dos 
sistemas operacionais atuais, incluindo Microsoft Windows e Linux, implementam 
algum nível de camadas.
De acordo com SILBERSCHATZ (2010), os sistemas operacionais são a espinha 
dorsal dos dispositivos de computação modernos, de smartphones a servidores. No 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUEDOS SANTOS
FACULDADE CATÓLICA PAULISTA | 30
entanto, nem todos são criados iguais e diferentes arquiteturas do sistema operacional 
podem afetar significativamente o desempenho, a flexibilidade e a segurança do sistema. 
Ao longo desse capítulo, exploraremos diferentes arquiteturas de sistema operacional 
e discutiremos os princípios fundamentais de design de cada arquitetura, vantagens e 
desvantagens e alguns exemplos de sistemas operacionais que usam cada abordagem.
3.1 Arquitetura monolítica
Uma arquitetura de sistema operacional monolítica inclui todas as funcionalidades 
do sistema em um único módulo, com o kernel e os drivers de dispositivo como 
componentes-chave. Nessa arquitetura, o sistema operacional como um todo está 
trabalhando no espaço do kernel. O kernel controla diretamente todo o gerenciamento 
de arquivos, memória, dispositivos e processos.
3.1.1 Vantagens da Arquitetura Monolítica
De acordo com DEITEL et. al. (2005), dentre as diversas vantagens da arquitetura 
monolítica, podemos relacionar os seguintes elementos:
Fonte: o próprio autor.
Rápido: os sistemas operacionais monolíticos são rápidos. Como tal, melhora o 
agendamento de processos, gerenciamento de memória, gerenciamento de arquivos 
e muito mais. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 31
Interação direta de componentes: todos os componentes e o kernel podem se 
comunicar diretamente. Também pode ajudar na velocidade. 
Fácil e Simples: Todos os componentes estão no mesmo espaço de endereço, 
então a estrutura é direta. 
Melhor para tarefas menores: a arquitetura monolítica é ideal para pequenas 
tarefas.
3.1.2 Desvantagens da Arquitetura Monolítica:
De acordo com TANENBAUM (2003), dentre as diversas desvantagens da arquitetura 
monolítica, podemos relacionar os seguintes elementos:
Fonte: o próprio autor.
Propenso a falhas: uma arquitetura monolítica pode introduzir erros em seu sistema. 
Isso ocorre porque os programas do usuário usam o mesmo espaço de endereço 
que o kernel. 
Difícil de atualizar: O sistema operacional contém todos os ícones do sistema 
operacional em uma grande seção. Isso torna difícil adicionar ou remover recursos 
de um sistema operacional. 
Não portátil: o código escrito em um sistema operacional é muito difícil de portar 
ou transferir para outro sistema operacional. Isso ocorre porque todo o código é 
executado em um grande bloco e tudo precisa ser movido. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 32
Finalmente, podemos dar alguns exemplos de sistemas operacionais monolíticos: 
Windows, Linux, Mac OS etc.
3.2 Arquitetura de Microkernel
A arquitetura do microkernel inclui apenas as principais funções, como memória e 
gerenciamento de processos no kernel. Nesta arquitetura, o gerenciamento de arquivos 
e o gerenciamento de entrada-saída estão incluídos no espaço do usuário. 
3.2.1 Vantagens da Arquitetura de Microkernel
De acordo com DEITEL et. al. (2005), dentre as diversas vantagens da arquitetura 
de microkernel, podemos relacionar os seguintes elementos:
Fonte: o próprio autor.
Desempenho: A arquitetura do Microkernel é compacta e isolada, pode ter um 
desempenho melhor.
Segurança: Os microkernels são seguros, pois apenas são fornecidos os componentes 
que, de outra forma, perturbariam a funcionalidade do sistema. 
Escalável: é facilmente expansível em comparação com um kernel monolítico. 
Modularidade: Os microkernels são modulares e os vários módulos podem ser 
trocados, recarregados e modificados sem afetar o Kernel.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 33
Quando comparado aos sistemas monolíticos, há menos travamentos do sistema. 
A interface do Microkernel auxilia na implementação de uma estrutura de sistema 
mais modular.
ISTO ESTÁ NA REDE
Os microkernels indiscutivelmente se enquadram entre uma arquitetura baseada 
em microsserviços e uma monolítica - um microkernel contém apenas a quantidade 
necessária de software para implementar um sistema operacional.
Uma arquitetura monolítica é fácil de construir porque todas as peças estão juntas. 
No entanto, ele deve ser testado como uma única unidade, o que torna a depuração 
e as atualizações potencialmente dolorosas. Os microsserviços são o oposto. 
Eles são fáceis de depurar, isolar e implantar, mas há muitas partes móveis para 
gerenciar. 
Com uma arquitetura de microkernel, há um núcleo e plugins. O aplicativo principal 
é centralizado, como um monólito. E a maior parte do desenvolvimento adicional é 
feito por meio de plug-ins que adicionam recursos ou modificam a funcionalidade 
existente. Geralmente, esses plug-ins não se conhecem e não se comunicam. No 
entanto, o microkernel fornece comunicação entre processos -- uma maneira de os 
processos se comunicarem. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.techtarget.
com/searchapparchitecture/tip/What-is-a-microkernel-architecture-and-
is-it-right-for-you#:~:text=A%20microkernel%20architecture%20is%20
called,can%20offer%20software%20lifecycle%20benefits. 
3.2.2 Desvantagens da arquitetura de microkernel
De acordo com OLIVEIRA et. al. (2004), dentre as diversas desvantagens da arquitetura 
de microkernel, podemos relacionar os seguintes elementos:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 34
Fonte: o próprio autor.
Sobrecarga de desempenho: A sobrecarga de desempenho ocorre devido à 
necessidade de comunicação entre processos (módulos centrais). 
Suporte de hardware limitado: a arquitetura de microkernel pode ser mais difícil 
de portar para novas plataformas de hardware. 
 Custo mais alto: Comparado a um sistema monolítico, a execução de serviços 
em um sistema Microkernel é cara. 
Finalmente, podemos listar alguns exemplos de sistemas operacionais baseados 
em microkernel:
• MINIX;
• QNX;
• GNU HurdGenericName.
 
3.3 Arquitetura Híbrida
A arquitetura híbrida é uma abordagem combinada das arquiteturas de microkernel 
e kernel monolítico. Tem um design como o kernel monolítico. É rápido, como o kernel 
monolítico. Embora herde a modularidade e a estabilidade da arquitetura do microkernel.
3.3.1 Vantagens da Arquitetura Híbrida
De acordo com SILBERSCHATZ (2010), dentre as diversas vantagens da arquitetura 
híbrida, podemos relacionar os seguintes elementos:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 35
Fonte: o próprio autor.
Flexibilidade: É flexível projetar uma arquitetura híbrida.
Melhor desempenho: a arquitetura híbrida oferece melhor desempenho, pois possui 
os recursos da arquitetura monolítica e de microkernel.
Segurança aprimorada: a arquitetura híbrida melhora a segurança do sistema 
isolando serviços críticos.
Maior suporte de hardware: A arquitetura híbrida pode fornecer maior suporte de 
hardware do que uma arquitetura de microkernel pura.
 
3.3.2 Desvantagens da arquitetura híbrida
De acordo com DEITEL et. al. (2005), dentre as diversas desvantagens da arquitetura 
híbrida, podemos relacionar os seguintes elementos:
Fonte: o próprio autor.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 36
Complexidade: A inclusão de arquitetura monolítica e de microkernel aumenta a 
complexidade.
Custo mais alto: a arquitetura híbrida pode ser mais cara de desenvolver do que uma 
arquitetura de microkernel pura devido à necessidade de mecanismos de comunicação 
entre processos mais complexos.
Exemplos de sistemas operacionais baseados em uma arquitetura híbrida são: 
• Windows NT;
• Mac OS;
• IBM AIX;
• Solaris.
3.4 Arquitetura em camadas
Uma estrutura de sistema operacional em camadas é uma maneira de organizar 
os vários componentes de um sistema operacional como camadas separadas. 
Cada camada é responsável por funções específicas e se comunica com a camada 
acima e abaixo dela. A camadamais baixa é a camada de hardware, seguida pela camada 
de kernel, a interface de chamada do sistema e a camada de shell. Essa estrutura ajuda a 
modularizar o sistema operacional e facilita a manutenção, desenvolvimento e depuração.
3.4.1 Vantagens da Arquitetura em Camadas
De acordo com TANENBAUM e WOODHULL (2008), dentre as diversas vantagens 
da arquitetura em camadas, podemos relacionar os seguintes elementos:
Fonte: o próprio autor.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 37
Modularidade: Essa arquitetura promove a modularidade porque cada camada 
cumpre apenas as funções atribuídas.
Depuração fácil: é relativamente simples depurar porque as camadas são discretas. 
Se ocorrer um erro na camada de escalonamento da CPU, o desenvolvedor pode 
apenas depurar essa camada, ao contrário de um sistema Monolítico onde todos os 
serviços estão presentes ao mesmo tempo.
Atualização fácil: uma alteração feita em uma camada não terá efeito nas outras 
camadas.
Sem acesso direto ao hardware: a camada de hardware é uma camada interna 
do projeto. Assim, ao contrário de um sistema simples onde o usuário tem acesso 
direto ao hardware, o usuário pode acessar os serviços de hardware, mas não pode 
modificar ou acessar diretamente os recursos. 
Abstração: Cada nível se concentra em suas próprias tarefas. Como resultado, as 
funções e implementações das outras camadas são abstratas.
3.4.2 Desvantagens da arquitetura em camadas
De acordo com SILBERSCHATZ et. al. (2000), dentre as diversas desvantagens da 
arquitetura em camadas, podemos relacionar os seguintes elementos:
Fonte: o próprio autor.
Implementação complexa e cuidadosa: Como uma camada pode usar os serviços 
dos níveis abaixo dela, as camadas devem ser organizadas com cuidado. A camada 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 38
de gerenciamento de memória, por exemplo, é usada pela camada de armazenamento 
de backup. Como resultado, ele deve ser colocado atrás da camada de gerenciamento 
de memória. Como resultado, a modularidade significativa leva a uma implementação 
complicada.
Mais lento na execução: Quando uma camada deseja se comunicar com outra 
camada, ela envia uma requisição que deve percorrer as camadas entre as duas 
camadas para ser atendida. Com isso, ao contrário do sistema Monolítico, que é 
mais rápido, ele aumenta o tempo de resposta. Como saída, aumentar o número de 
camadas pode resultar em um design ineficiente.
A partir desse contexto, podemos relacionar alguns exemplos de sistemas 
operacionais baseados em camadas:
• UNIX;
• THEOS;
• VMS.
3.5 Arquitetura da máquina virtual
Uma arquitetura de máquina virtual é um tipo de arquitetura de sistema operacional 
que usa vários sistemas operacionais em uma única máquina física. Essa abordagem 
oferece flexibilidade e permite o uso eficiente dos recursos de hardware, mas também 
pode introduzir custos e complexidade adicionais.
3.5.1 Vantagens da arquitetura de máquina virtual
De acordo com OLIVEIRA et. al. (2004), dentre as diversas vantagens da arquitetura 
de máquina virtual, podemos relacionar os seguintes elementos:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 39
Fonte: o próprio autor.
Utilização eficiente de recursos: a arquitetura da máquina virtual permite que vários 
sistemas operacionais sejam executados simultaneamente em uma única máquina 
física, melhorando a utilização dos recursos de hardware.
Segurança aprimorada: essa arquitetura oferece maior segurança porque cada 
máquina virtual é isolada uma da outra.
Easy Recovery: Como esta arquitetura utiliza máquinas virtuais, a recuperação do 
sistema é fácil.
 
3.5.2 Desvantagens da arquitetura da máquina virtual
De acordo com DEITEL et. al. (2005), dentre as diversas desvantagens da arquitetura 
de máquina virtual, podemos relacionar os seguintes elementos:
Fonte: o próprio autor.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 40
Sobrecarga: a arquitetura da máquina virtual apresenta sobrecarga devido à 
necessidade de camadas de software adicionais, como o hipervisor.
Carga de trabalho: dependendo da carga de trabalho, uma máquina virtual pode 
ser afetada por outras máquinas virtuais em execução.
Design Complexo: A arquitetura da máquina virtual pode ser complexa de projetar 
e manter devido à necessidade de várias camadas de software. Isso pode aumentar 
o tempo de desenvolvimento e os custos de manutenção.
 
A partir desse contexto, podemos relacionar alguns exemplos de sistemas 
operacionais baseados em máquinas virtuais:
• VMware ESXi;
• Oracle VirtualBox;
• Microsoft Hyper-V.
ISTO ACONTECE NA PRÁTICA
De acordo com NJUGUNA (2023), com o conceito de supercloud ganhando força, 
algumas pessoas acreditam que se trata de uma arquitetura que contém várias 
complexidades, enquanto outras pensam que é uma plataforma que oferece 
serviços consistentes de forma programática. No entanto, o supercloud deve ser 
considerado como um sistema operacional que abriga características arquitetônicas 
e de plataforma. 
Como as nuvens híbridas têm sua própria arquitetura, a supernuvem ajudará a 
resolver a contradição entre custo e desempenho. Portanto, o supercloud como 
sistema operacional ajudará a domar as complexidades da nuvem (NJUGUNA, 
2023).
Para ler a matéria na íntegra, acesse o seguinte link: https://siliconangle.
com/2023/01/20/supercloud-debate-platform-architecture-operating-
system-supercloud2/. 
https://siliconangle.com/2023/01/20/supercloud-debate-platform-architecture-operating-system-supercloud2/
https://siliconangle.com/2023/01/20/supercloud-debate-platform-architecture-operating-system-supercloud2/
https://siliconangle.com/2023/01/20/supercloud-debate-platform-architecture-operating-system-supercloud2/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 41
CAPÍTULO 4
PROGRAMAÇÃO CONCORRENTE
Quando você e seus colegas fazem login em terminais conectados ao mesmo 
sistema de compartilhamento de tempo, cada um de vocês trabalha separadamente, 
mas todos estão usando o mesmo computador. 
Cada um de vocês tem a sensação de que o computador está trabalhando apenas 
em sua tarefa, mas muitos de vocês estão trabalhando simultaneamente. Como esse 
aparente paradoxo é possível?
A ilusão de que você está sozinho no computador de tempo compartilhado é causada 
por uma combinação de computadores rápidos e programação inteligente. Suponha 
que você esteja usando o computador para editar um programa ou ler um e-mail. Você 
lê e digita na velocidade humana. Por exemplo, um digitador pode digitar 100 palavras 
por minuto, ou - em uma média de seis caracteres por palavra - cerca de 10 caracteres 
por segundo. No décimo de segundo entre duas teclas pressionadas, um computador 
moderno pode executar centenas de milhares de instruções de máquina. Se essas 
instruções de máquina “extras” pudessem ser usadas produtivamente, o computador 
teria muito tempo entre as teclas digitadas para atender a outros usuários humanos. 
Não é incomum um computador moderno de tempo compartilhado lidar com 100 ou 
mais usuários simultâneos, cada um trabalhando em velocidade humana.
Gerenciar todas essas instruções e usuários faz parte da responsabilidade de 
um sistema operacional moderno. Um sistema operacional é, como você já sabe, 
apenas um programa sofisticado; na verdade, é um programa concorrente, capaz de 
gerenciar muitos dispositivos e usuários humanos para dar a ilusão de simultaneidade 
(TANENBAUM, 2003).
Alguns computadores com tempo compartilhado consistem em uma única CPU; 
outros consistem em um conjunto de CPUs idênticas. Com mais de uma CPU, os 
programas podem ser executados em paralelo, ou seja, literalmente ao mesmo tempo. 
Com uma única CPU, nenhuma execução paralela real é possível, mas essa CPU pode 
ser compartilhada de tal forma que muitos programas parecemestar sendo executados 
em paralelo. A programação concorrente é a criação de programas que consistem 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 42
em segmentos com potencial para execução paralela; dependendo do número real 
de CPUs disponíveis, a execução de um programa concorrente pode ser literalmente 
paralela, totalmente compartilhada ou alguma combinação dos dois.
4.1 Conhecendo sobre a Programação Concorrente
Os fluxos de controle lógico são concorrentes se eles se sobrepõem no tempo. Este 
fenômeno, conhecido como simultaneidade, aparece em muitos níveis diferentes de 
um sistema de computador. Os manipuladores de hardware de exceção, processos 
e manipuladores de sinal Unix são exemplos familiares.
De acordo com TANENBAUM (2003), a simultaneidade pode ser vista principalmente 
como um mecanismo que o kernel do sistema operacional usa para executar vários 
programas aplicativos. Mas a simultaneidade não se limita apenas ao kernel. Pode 
desempenhar um papel importante também em programas aplicativos. Por exemplo, 
os manipuladores de sinal Unix permitem que aplicativos para responder a eventos 
assíncronos, como o usuário digitando ctrl-c ou o programa acessando uma área 
indefinida de memória virtual. 
A simultaneidade no nível do aplicativo também é útil de outras maneiras:
Acessando dispositivos de E/S lentos. Quando um aplicativo está aguardando a 
chegada de dados de um dispositivo de E/S lento como um disco, o kernel mantém 
a CPU ocupada executando outros processos. Aplicações individuais podem explorar 
a simultaneidade de maneira semelhante, sobrepondo trabalho útil com solicitações 
de E/S.
Interagir com humanos. As pessoas que interagem com computadores exigem a 
capacidade de executar várias tarefas ao mesmo tempo. Por exemplo, eles podem 
querer redimensionar uma janela enquanto imprimem um documento. Os sistemas 
de janelas modernos usam simultaneidade para fornecer esse recurso. Cada vez que 
o usuário solicita alguma ação (digamos, clicando com o mouse), um fluxo lógico 
concorrente separado é criado para executar a ação.
Reduzindo a latência ao adiar o trabalho. Às vezes, os aplicativos podem usar 
simultaneidade para reduzir a latência de certas operações, adiando outras operações 
e executando-as simultaneamente. Por exemplo, um alocador de armazenamento 
dinâmico pode reduzir a latência de operações gratuitas individuais adiando a união 
para um fluxo de “união” simultâneo que é executado em uma prioridade mais baixa, 
absorvendo o excesso de ciclos de CPU à medida que se tornam disponíveis.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 43
Atendimento a vários clientes de rede. Os servidores de rede iterativos são irreais, 
porque eles só podem atender um cliente por vez. Assim, um único cliente lento pode 
negar o serviço a todos os outros clientes. Para um servidor real que pode atender 
centenas ou milhares de clientes por segundo, não é aceitável permitir que um cliente 
lento negue serviço aos outros. Uma abordagem melhor seria construir um servidor 
simultâneo que crie um fluxo lógico separado para cada cliente. Isso permite que o 
servidor consiga atender a vários clientes simultaneamente e impede que clientes 
lentos monopolizem o servidor.
Computação em paralelo em máquinas multi-core. Muitos sistemas modernos 
são equipados com processadores multi-core que contêm várias CPUs. Os aplicativos 
que são particionados em fluxos simultâneos geralmente executam mais rápido em 
máquinas com vários núcleos do que em máquinas com um único processador porque 
os fluxos são executados em paralelo em vez de serem intercalados.
Os aplicativos que usam simultaneidade em nível de aplicativo são conhecidos 
como programas simultâneos. De acordo com TANENBAUM e WOODHULL (2008), a 
operação moderna de sistemas fornece três abordagens básicas para a construção 
de programas concorrentes:
• Processos. Com essa abordagem, cada fluxo de controle lógico é um processo 
agendado e mantido pelo kernel. Como os processos têm espaços de endereços 
virtuais separados, os fluxos que desejam se comunicar entre si devem usar 
algum tipo de mecanismo de comunicação entre processos explícitos (IPC).
• Multiplexação de E/S. Esta é uma forma de programação concorrente em que os 
aplicativos agendam explicitamente seus próprios fluxos lógicos no contexto de 
um único processo. Os fluxos lógicos são modelados como máquinas de estado 
que o programa principal transita explicitamente de estado para estado como 
resultado da chegada de dados no arquivo descritores. Como o programa é um 
processo único, todos os fluxos compartilham o mesmo espaço de endereço.
• Tópicos. Threads são fluxos lógicos executados no contexto de um único 
processo e são agendados pelo núcleo. Você pode pensar em threads como 
um processo híbrido das outras duas abordagens, agendadas pelo kernel como 
fluxos de processo e compartilhando o mesmo espaço de endereço virtual como 
fluxos de multiplexação de E/S.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 44
4.2 Programação Concorrente com Processos
A maneira mais simples de construir um programa concorrente é com processos, 
usando funções familiares como fork, exec e waitpid. Por exemplo, uma abordagem 
natural para construir um servidor concorrente é aceitar as solicitações de conexão 
no pai e, em seguida, criar um processo filho para atender a cada novo cliente.
Título: Representação da Programação Concorrente com Processos
Fonte: https://br.freepik.com/vetores-gratis/ilustracao-com-conceito-de-multitarefa_6555998.htm#query=Programa%C3%A7%C3%A3o%20Concorrente%20
sistema%20operacional&position=14&from_view=search&track=ais 
Para ver como isso pode funcionar, suponha que temos dois clientes e um servidor 
que está ouvindo a conexão e as solicitações em um descritor de escuta. Agora 
suponha que o servidor aceite uma solicitação de conexão de um dos clientes e 
retorne um descritor conectado. Depois de aceitar a solicitação de conexão, o servidor 
bifurca um filho, que obtém uma cópia completa do servidor (tabela de descritores). 
O filho fecha sua cópia do descritor de escuta e o pai fecha sua cópia do descritor 
conectado, pois eles não são mais necessários. Como os descritores conectados no 
pai e no filho possuem cada ponto para a mesma entrada da tabela de arquivos, é 
crucial que o pai feche sua cópia do descritor conectado. Caso contrário, a entrada da 
tabela de arquivos para o descritor conectado nunca será liberada e o vazamento de 
memória resultante acabará por consumir a memória disponível e travar o sistema.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 45
4.2.1 Prós e Contras dos Processos
Os processos têm um modelo limpo para compartilhar informações de estado entre 
pais e filhos: tabelas de arquivos são os espaços compartilhados e de endereço do 
usuário não são. Ter espaços de endereços separados para processos é uma vantagem 
e uma desvantagem. É impossível para um processo sobrescrever acidentalmente 
a memória virtual de outro processo, que elimina muitas falhas confusas – uma 
vantagem óbvia.
Por outro lado, espaços de endereços separados tornam mais difícil para os processos 
compartilhar as informações de estado. Para compartilhar informações, eles devem 
usar mecanismos IPC (Inter-Process Communication - Comunicações entre processos) 
explícitos. Outra desvantagem dos projetos baseados em processos é que eles tendem 
a ser mais lentos porque a sobrecarga para controle de processo e IPC é alto.
4.2.2 Programação simultânea com multiplexação de E/S
Suponha que você seja solicitado a escrever um servidor de eco que também possa 
responder a comandos interativos que o usuário, como por exemplo para os tipos de 
entrada padrão (TANENBAUM, 2003). Nesse caso, o servidor deve responder a dois 
eventos de E/S independentes: 
Fonte: o próprio autor.A partir desse cenário, podemos refletir sobre a seguinte pergunta: “Qual evento 
esperamos realizar primeiro?”
Nenhuma das opções é ideal. Se estivermos esperando uma solicitação de conexão 
em aceitar, não podemos responder a comandos de entrada. Da mesma forma, se 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 46
estivermos esperando por um comando de entrada em leitura, não podemos responder 
a nenhuma solicitação de conexão.
Uma solução para esse dilema é uma técnica chamada multiplexação de E/S. A 
ideia básica é usar a função select para pedir ao kernel que suspenda o processo, 
retornando o controle para o aplicativo somente após um ou mais eventos de E/S, 
como nos exemplos a seguir:
Fonte: o próprio autor.
ISTO ESTÁ NA REDE
A multiplexação de E/S é a capacidade de executar operações de E/S em vários 
descritores de arquivo. 
Operações de entrada como ler, aceitar e chamadas para recebimento de 
mensagens são bloqueadas quando não há dados de entrada. Portanto, se 
uma chamada de entrada for feita e ela bloqueada, podemos perder dados de 
outros descritores de arquivo. Para contornar isso, são fornecidas chamadas de 
multiplexação de E/S. 
Um processo é bloqueado em uma chamada de multiplexação de E/S. Quando essa 
chamada retorna, o processo recebe um conjunto de descritores de arquivo que 
estão prontos para E/S. E o processo pode fazer E/S nesses descritores de arquivo 
antes de ir para a próxima iteração da chamada de multiplexação de E/S. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.
softprayog.in/programming/io-multiplexing-select-poll-epoll-in-linux. 
4.2.3 Um servidor controlado por eventos simultâneos baseado em multiplexação 
de E/S
A multiplexação de E/S pode ser usada como base para programas simultâneos 
orientados a eventos, onde os fluxos progridem como resultado de certos eventos. A 
https://www.softprayog.in/programming/io-multiplexing-select-poll-epoll-in-linux
https://www.softprayog.in/programming/io-multiplexing-select-poll-epoll-in-linux
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 47
ideia geral é modelar fluxos lógicos como máquinas de estado. Informalmente, um estado 
de máquina é uma coleção de estados, eventos de entrada e transições que mapeiam 
estados e eventos de entrada para estados (TANENBAUM e WOODHULL, 2008).
Título: Representação de um servidor controlado por eventos simultâneos baseado em multiplexação de E/S
Fonte: https://br.freepik.com/vetores-gratis/ilustracao-do-conceito-abstrato-do-data-center_12290884.htm#query=servidor%20
concorrente&position=31&from_view=search&track=ais 
De acordo com TANENBAUM e WOODHULL (2008), cada transição mapeia um 
par (estado de entrada, evento de entrada) para um estado de saída. Um self-loop é 
uma transição entre o mesmo estado de entrada e saída. As máquinas de estado são 
normalmente desenhadas como gráficos direcionados, onde os nós representam os 
estados, arcos direcionados representam transições e rótulos de arco representam 
eventos de entrada. Uma máquina de estado começa com a execução em algum 
estado inicial. Cada evento de entrada aciona uma transição do estado atual para o 
próximo estado.
4.3 Programação Concorrente com Threads
Cada processo tem seu próprio espaço de endereço privado, o que dificulta o 
compartilhamento de dados pelos fluxos. Com a segunda abordagem, criamos nossos 
próprios fluxos lógicos e usamos a multiplexação de E/S para agendar explicitamente 
os fluxos.
Como há apenas um processo, os fluxos compartilham todo o espaço de endereço. 
Um thread é um fluxo lógico executado no contexto de um processo. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 48
De acordo com SILBERSCHATZ (2010), os sistemas modernos nos permitem 
escrever programas que tenham vários threads executando simultaneamente em 
um único processo. As threads são agendadas automaticamente pelo núcleo. Cada 
encadeamento tem seu próprio contexto de encadeamento, incluindo um ID de 
encadeamento inteiro exclusivo, pilha, ponteiro, contador de programa, registradores 
de uso geral e códigos de condição. Todos os threads em execução em um processo 
compartilham todo o espaço de endereço virtual desse processo.
ANOTE ISSO
Fluxos lógicos baseados em threads combinam qualidades de fluxos baseados em 
processos e multiplexação de E/S. Como processos, os encadeamentos são agendados 
automaticamente pelo kernel e são conhecidos pelo kernel por um ID inteiro.
Como os fluxos baseados na multiplexação de E/S, vários threads são executados 
no contexto de um único processo e, portanto, compartilham todo o conteúdo do 
espaço de endereço virtual do processo, incluindo seu código, dados, heap, bibliotecas 
compartilhadas e arquivos.
ISTO ACONTECE NA PRÁTICA
Pense em um único processador que está executando seu IDE. Digamos que você 
edite um de seus arquivos de código e clique em salvar. Quando você clicar em 
salvar, ele iniciará um fluxo de trabalho que fará com que os bytes sejam gravados 
no disco físico subjacente. No entanto, a E/S é uma operação cara e a CPU ficará 
ociosa enquanto os bytes estão sendo gravados no disco.
Enquanto a E/S ocorre, a CPU ociosa pode trabalhar em algo útil e é aqui que os 
encadeamentos entram - o encadeamento da E/S é trocado e o encadeamento da 
interface do usuário é agendada na CPU para que, se você clicar em outro lugar na 
tela, seu IDE ainda esteja responsivo e não parece travado ou congelado.
Os threads podem dar a ilusão de multitarefa, mesmo que em um determinado 
momento a CPU esteja executando apenas um thread. Cada thread obtém uma 
fatia de tempo na CPU e, em seguida, também é trocada. Ele inicia uma tarefa, que 
requer espera e não utiliza a CPU ou completa seu intervalo de tempo na CPU. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.educative.io/
blog/multithreading-and-concurrency-fundamentals. 
https://www.educative.io/blog/multithreading-and-concurrency-fundamentals
https://www.educative.io/blog/multithreading-and-concurrency-fundamentals
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 49
4.4 Processos simultâneos no sistema operacional
O processamento simultâneo é um modelo de computação no qual vários 
processadores executam instruções simultaneamente para um melhor desempenho. 
A simultaneidade significa, que ocorre quando algo mais acontece. As tarefas são 
divididas em subtipos, que são então atribuídos a diferentes processadores para serem 
executados simultaneamente, de forma sequencial, pois teriam que ser executados 
por um único processador. Às vezes, o processamento simultâneo é sinônimo de 
processamento paralelo (TANENBAUM e WOODHULL, 2008). O termo simultaneidade 
real e virtual no processamento simultâneo:
• Ambiente de Multiprogramação: Em um ambiente de multiprogramação, existem 
múltiplas tarefas compartilhadas por um processador. Enquanto um conceito 
virtual pode ser alcançado pelo sistema operacional, se o processador for alocado 
para cada tarefa individual, o conceito virtual é visível se cada tarefa tiver um 
processador dedicado. 
• Ambiente de Multiprocessamento: No ambiente de multiprocessamento, dois ou 
mais processadores são usados com memória compartilhada. Apenas um espaço 
de endereço virtual é usado, o que é comum para todos os processadores. Todas 
as tarefas residem na memória compartilhada. Nesse ambiente, a simultaneidade 
é suportada na forma de processadores em execução concorrente. As tarefas 
executadas em diferentes processadores são processadas entre si por meio de 
memória compartilhada. 
• Ambiente de processamento distribuído: em um ambiente de processamento 
distribuído, dois ou mais computadores são conectados entre si por uma rede de 
comunicação ou barramento de alta velocidade. Não há memória compartilhada 
entre os processadores e cada computador possui sua própria memória local.Portanto, um aplicativo distribuído que consiste em tarefas simultâneas, que 
são distribuídas pela comunicação de rede por meio de mensagens. 
4.4.1 Importância do processamento de concorrência em sistemas operacionais 
modernos
De acordo com (SILBERSCHATZ, 2001), o processamento de simultaneidade é de 
suma importância em sistemas operacionais modernos devido aos seguintes motivos:
• Melhor desempenho - Com o advento dos processadores multi-core, os 
sistemas operacionais modernos podem executar vários segmentos ou 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 50
processos simultaneamente, levando a um melhor desempenho do sistema. O 
processamento de simultaneidade permite que o sistema operacional faça uso 
otimizado dos recursos disponíveis, maximizando assim a taxa de transferência 
do sistema.
• Utilização de recursos − O processamento simultâneo permite uma melhor 
utilização dos recursos do sistema, como CPU, memória e dispositivos de E/S. 
Ao executar vários threads ou processos simultaneamente, o sistema operacional 
pode usar recursos ociosos para executar outras tarefas, levando a uma melhor 
utilização dos recursos.
• Capacidade de resposta aprimorada − O processamento de simultaneidade 
permite que o sistema operacional lide com várias solicitações de usuários 
simultaneamente, levando a uma melhor capacidade de resposta do sistema. 
Isso é particularmente importante em aplicativos que requerem processamento 
em tempo real, como jogos online ou aplicativos de transações financeiras.
• Escalabilidade - O processamento simultâneo permite que o sistema operacional 
seja dimensionado com eficiência à medida que o número de usuários ou tarefas 
aumenta. Ao executar tarefas simultaneamente, o sistema operacional pode 
lidar com uma carga de trabalho maior, levando a uma melhor escalabilidade 
do sistema.
• Flexibilidade - O processamento de simultaneidade permite que o sistema 
operacional execute tarefas de forma independente, facilitando o gerenciamento 
e a manutenção do sistema. Essa flexibilidade possibilita o desenvolvimento 
de aplicativos complexos que requerem vários segmentos ou processos sem 
comprometer o desempenho do sistema.
No geral, o processamento de simultaneidade é uma tecnologia crítica em sistemas 
operacionais modernos, permitindo que eles forneçam o desempenho, capacidade de 
resposta e escalabilidade exigidos pelo ambiente de computação atual.
4.4.2 Tipo de processamento de simultaneidade no sistema operacional
Segundo SILBERSCHATZ (2010), existem vários tipos de técnicas de processamento 
de simultaneidade usadas em sistemas operacionais, incluindo os seguintes elementos: 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 51
Escalonamento de processo - Esta é a forma mais básica de processamento de 
simultaneidade, na qual o sistema operacional executa vários processos um após o 
outro, com cada processo recebendo uma fatia de tempo para executar antes de ser 
suspenso e substituído pelo próximo processo na fila.
Multi-threading - Isso envolve o uso de threads dentro de um processo, com cada 
thread executando uma tarefa diferente simultaneamente. Os threads compartilham o 
mesmo espaço de memória dentro de um processo, permitindo que eles se comuniquem 
e se coordenem facilmente.
Processamento paralelo – envolve o uso de vários processadores ou núcleos em 
um sistema para executar várias tarefas simultaneamente. O processamento paralelo 
é normalmente usado para tarefas computacionais intensivas, como simulações 
científicas ou renderização de vídeo.
Processamento distribuído – envolve o uso de vários computadores ou nós 
conectados por uma rede para executar uma única tarefa. O processamento distribuído 
é normalmente usado para aplicativos de grande escala e uso intensivo de dados, 
como mecanismos de pesquisa ou redes sociais.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 52
CAPÍTULO 5
DEADLOCK 
Deadlocks são um estado indesejável do sistema e sua prevenção ou detecção e 
recuperação, se inevitável, é necessário. A previsão de possíveis condições de impasse 
pode ser complexo, mas existem algumas condições gerais que tornam os impasses 
inevitáveis (TANENBAUM, 2003). Ou seja, se todas as seguintes condições estão presentes:
Para os sistemas operacionais mais “pró-ativos”, algumas soluções foram propostas 
para fornecer algum tipo de mecanismo de prevenção de impasse. A prevenção pode 
ser realizada pela aplicação de um algoritmo de agendamento estrito para direcionar 
processos em aquisição de recursos em uma ordem específica. A vantagem desse 
método de prevenção de deadlock é o progresso quase garantido.
ANOTE ISSO
Os processos recebem prioridades na criação e quando precisam de um recurso 
ocupado por uma prioridade mais baixa, eles apenas o adquirem. O progresso é 
alcançado neste caso também, mas a continuidade e integridade para o processo 
de prioridade mais baixa são questionáveis. Do ponto de vista do desenvolvimento 
de software, existem algumas estruturas de dados que quando implementadas, 
podem garantir a proteção de recursos e regiões críticas.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 53
Um semáforo, por exemplo, é uma instância de um resumo de tipo de dados; 
seu propósito é “proteger” regiões críticas que já contém um processo de processos 
concorrentes que precisam entrar. Dessa forma, os semáforos fornecem exclusão ao 
mesmo tempo em que executa a sincronização, para garantir o início e o término da 
execução entre diferentes processos. A desvantagem dos semáforos é que eles podem 
ser facilmente mal utilizados, causando condições de impasse, ou causar ‘inanição’, 
um estado que leva a loops de processamento infinitos sem nenhum progresso. 
Finalmente monitores, também são tipos de dados abstratos que podem garantir que 
apenas um processo resida dentro de um monitor. Eles fornecem uma mútua prova 
completa inerente ao mecanismo de exclusão, mas não fornecem os mecanismos 
de sincronização por conta própria. Para superar esta deficiência, os monitores são 
geralmente complementados por algum tipo de implementação (TANENBAUM, 2003).
5.1 Deadlock no sistema operacional (SO)
É sabido que todo processo que está ocorrendo em um sistema precisa da ajuda de 
algum recurso para ser executado. O recurso pode estar na forma da CPU do sistema 
ou algum dispositivo conectado, como o dispositivo de entrada ou saída padrão. E 
assim que o processo termina, o recurso em uso é devidamente liberado. Mas quando 
vários processos começam a ser executados simultaneamente em um sistema, é 
provável que cada um desses processos tenha que competir por um recurso. Essa 
competição culmina no que os especialistas em tecnologia chamam de impasse no 
sistema operacional. 
A partir desse contexto, de acordo com TANENBAUM (2003), quando mais de 
um processo que ocorre em um sistema é impedido de ser executado, é chamado 
de impasse. Isso acontece quando um recurso está sendo retido ou ocupado no 
momento porque alguns outros processos estão sendo executados em segundo plano. 
Um impasse no sistema operacional faz com que ele circule pelo ralo, pois nenhum 
processo é executado.
Vamos entender melhor o que é deadlock no sistema operacional com este exemplo. 
Vamos supor que o Processo 1 e o Processo 2 sejam dois processos. Na mesma 
linha, Recurso 1 e Recurso 2 são dois recursos. Supostamente, podemos nos deparar 
com as seguintes ações: 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 54
Fonte: o próprio autor.
Posteriormente, nem o Processo 1 nem o Processo 2 são executados porque os 
recursos necessários para eles são retidos. Portanto, este foi um exemplo de impasse 
resultando em um possível impasse no sistema operacional.
ISTO ESTÁ NA REDE
Um deadlock é uma situação em que dois programas de computadorque 
compartilham o mesmo recurso estão efetivamente impedindo um ao outro de 
acessar o recurso, resultando na interrupção de ambos os programas.
Os primeiros sistemas operacionais de computador executavam apenas um 
programa por vez. Todos os recursos do sistema estavam disponíveis para este 
programa. Mais tarde, os sistemas operacionais executaram vários programas ao 
mesmo tempo, intercalando-os. 
Os programas eram obrigados a especificar com antecedência quais recursos 
precisavam para evitar conflitos com outros programas em execução ao mesmo 
tempo. Eventualmente, alguns sistemas operacionais ofereceram alocação 
dinâmica de recursos. Os programas poderiam solicitar alocações adicionais de 
recursos depois de iniciados. Isso levou ao problema do impasse. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.techtarget.com/
whatis/definition/deadlock. 
https://www.techtarget.com/whatis/definition/deadlock
https://www.techtarget.com/whatis/definition/deadlock
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 55
5.1.1 Condições Necessárias para aplicar o deadlock no Sistema Operacional
De acordo com TANENBAUM e WOODHULL (2008), não é necessário que um impasse 
aconteça sempre que mais de um processo, juntamente com mais de um recurso, 
estiver envolvido. Isso ocorre porque um impasse é marcado por quatro condições 
que devem ser cumpridas de qualquer maneira. Esses incluem 
Fonte: o próprio autor.
A partir dessa representação, podemos observar as quatro condições de impasse 
de forma detalhada:
• Exclusão Mútua: Mutuamente exclusivo significa que, para cada processo, 
existe um recurso designado que não pode ser compartilhado. Doravante, dois 
processos não podem solicitar o mesmo recurso. 
• Segure e espere: Como o nome sugere, essa condição de impasse no sistema 
operacional exige que um processo aguarde um recurso ocupado. Esta condição 
não pode ser mais verdadeira. 
• Sem preempção: Apenas um processo pode ser agendado em um ponto no tempo. 
Assim, diz-se que dois processos não podem ser executados simultaneamente. 
Isso implica que somente quando um processo for concluído, apenas o recurso 
alocado ou ocupado será devidamente liberado. 
• Espera circular: Cada conjunto de processos espera de maneira cíclica. Isso os 
mantém esperando para sempre e nunca são executados. Como resultado, os 
deadlocks são chamados de “espera circular”, pois eles travam um processo de 
maneira circular. Cada conjunto de processos espera de maneira cíclica. Isso 
os mantém esperando para sempre e nunca são executados. Como resultado, 
os impasses também são chamados de “espera circular”, uma vez que travam 
um processo de maneira circular.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 56
5.1.2 Prevenção de deadlock
É muito difícil determinar quando um sistema está prestes a atingir um estado de 
impasse, simplesmente porque é quase impossível prever qual processo irá solicitar o 
recurso antes de ser liberado por outro processo. Algumas tentativas foram feitas para 
modelar e prever possíveis estados futuros do sistema usando recursos trajetórias.
Outra tentativa foi identificar e classificar os estados do sistema em: seguro, inseguro 
e em um impasse. Quando o sistema está em um estado seguro, isso significa que 
nenhum impasse ocorreu e o sistema ainda pode atender todas as solicitações do 
processo. Quando um sistema está em um estado inseguro, isso significa que algumas 
das pendências (processos) não serão atendidos, e o perigo de atingir um estado de 
impasse é iminente. Um estado inseguro não garante uma condição de impasse no 
futuro imediato, uma vez que o sistema pode nunca ter um pedido de processo ofensivo, 
que poderia transformar o estado inseguro em impasse (SILBERSCHATZ, 2001).
ISTO ESTÁ NA REDE
A prevenção de deadlock refere-se ao conjunto de técnicas e métodos usados para 
impedir que um sistema entre em um estado de deadlock. Os impasses podem 
fazer com que um sistema congele ou trave e pode ser um problema sério em 
sistemas de computador. 
A prevenção de deadlock envolve projetar um sistema de forma a garantir que os 
deadlocks não ocorram. Podemos conseguir isso implementando técnicas como:
• Ordenação de recursos;
• Negação de alocação de recursos;
• Tempo limite;
• Evitar condições de espera e espera;
• Preempção de recursos.
Essas técnicas ajudam a garantir que os recursos sejam alocados de forma a 
evitar o surgimento de condições de espera circular, que é a principal causa dos 
impasses. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.tutorialspoint.
com/difference-between-deadlock-prevention-and-deadlock-avoidance. 
'
5.1.3 Métodos para lidar com deadlock no sistema operacional
Você está pensando em maneiras de lidar com um impasse em um sistema 
operacional? Bem, é hora de abordar sua preocupação significativa sobre como lidar 
https://www.tutorialspoint.com/difference-between-deadlock-prevention-and-deadlock-avoidance
https://www.tutorialspoint.com/difference-between-deadlock-prevention-and-deadlock-avoidance
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 57
com impasses. De acordo com TANENBAUM e WOODHULL (2008), esses incluem os 
seguintes elementos:
Fonte: o próprio autor.
Detecção e Recuperação de Deadlock: Este método envolve identificar a situação 
de impasse e seguir algumas maneiras de recuperar seu sistema de um impasse. 
Um usuário pode simplesmente abortar todos os processos que podem levar a mais 
impasses potenciais. Recomenda-se abortar um processo de cada vez, em vez de 
encerrar todos os processos simultaneamente. Continue abortando os processos 
até que o sistema volte à normalidade da situação de impasse. Outra saída poderia 
ser liberar os recursos da alocação até que o impasse desapareça. Isso é chamado 
de “preempção de recursos”. 
Prevenção de impasse: Como diz o nome, se um usuário impedir que qualquer uma 
das quatro condições para um impasse ocorra, um impasse será evitado. Sempre 
que um processo solicita a alocação de um recurso, um algoritmo é exercitado para 
examinar se essa alocação de recursos é segura para o sistema ou não. Se não for 
seguro, a solicitação será negada. 
Ignorância de impasse: UNIX, Windows e alguns outros sistemas operacionais 
geralmente ignoram os impasses e ignoram a situação de um impasse, sempre que 
surge. Essa abordagem é chamada de “algoritmo de avestruz”. Portanto, sempre que 
ocorrer um impasse, você pode simplesmente reiniciar o PC e o impasse será resolvido 
rapidamente.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 58
5.1.4 Recuperação de Deadlock
A recuperação de deadlock pode ser realizada de diversas maneiras. Uma maneira 
comum é estabelecer prioridades, ou seja, forçando um processo a desistir de um 
recurso para que os processos de solicitação possam progredir. Esta solução depende 
da complexidade do sistema e se a seleção e realocação de recursos é possível 
(TANENBAUM e WOODHULL, 2008).
Infelizmente, o problema da continuação reaparece quando o processo que 
forçosamente rendeu uma exploração (recurso), readquire-o e continua sua tarefa 
como se nada tivesse acontecido. Normalmente, a recuperação começa a partir de 
um ponto de verificação anterior e, como resultado, algum progresso estar perdido. 
Curiosamente, se um processo de prioridade mais baixo solicita o recurso que cedeu, 
entraria novamente em um estado de espera.
ANOTE ISSO
A maneira mais eficaz de recuperação de deadlock é encerrando um dos processos 
em impasse. Isso é uma maneira muito severa e deselegante de resolver impasses 
que exigem algum julgamento sensato sobre o processo que deve ser encerrado. 
A rescisão da decisão deve ser dependente da natureza do processo e as possíveis 
perdas decorrentes do seu término. Infelizmente não existe uma regra do que constitui 
uma rescisão sensata desdeo número de impasse (processos podem ser mais de 
dois). Normalmente, os processos que podem ser reexecutados e produzir o mesmo 
resultado são os melhores candidatos para rescisão.
5.1.5 Efeitos colaterais do deadloack
No mesmo grupo de sistemas indesejáveis também são fome e livelock. Ambos são 
considerados como derivados de impasses e têm o atributo comum de restringir os 
processos envolvidos de fazer progressos. A fome ocorre quando alguns algoritmos de 
agendamento determinam a aquisição e a utilização de recursos, mas há processos que 
mesmo que não estejam em um impasse, nunca adquiram seus recursos necessário, 
portanto, não estão fazendo nenhum progresso (SILBERSCHATZ, 2001).
Livelock (ou, espera ocupada) é descrito como sendo o estado onde um processo 
está ‘girando’ infinitamente esperando por uma condição que nunca será cumprida. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 59
Consequentemente, do esforço para evitar impasses e condições de fome, a noção 
de justiça está ameaçada. A imparcialidade indica que cada processo, em algum 
momento, deve ser executado e completar sua tarefa pretendida. Para realizar isso, 
é necessário utilizar a programação arbitrária, para garantir que todos os processos 
sejam executados dentro de um prazo aceitável. 
A solução para os problemas relacionados à equidade é geralmente tratado com a 
priorização de processo tratada pelo sistema operacional com um algoritmo específico.
De acordo com SILBERSCHATZ (2001), os impasses são indesejáveis. Existem 
várias condições que podem levar a impasses e, como resultado, torná-los muito 
complexos e difíceis de prevenir. Recuperar-se de impasses também tem seus próprios 
desafios, principalmente porque é difícil restabelecer o sistema, para um semelhante 
antes do impasse. Há alguns métodos formalizados por meio de trajetórias de 
recursos e diagramas de estado, que podem, até certo ponto, prever impasses. No 
entanto, restringindo completamente suas ocorrências requer um sistema operacional 
firmemente projetado juntamente com algoritmos de sincronização muito eficientes.
5.1.6 Vantagens do Método Deadlock
Como estamos bem familiarizados com o que é um impasse no sistema operacional 
agora, vamos ver as seguintes vantagens: 
Fonte: o próprio autor.
Perfeito para uma única tarefa: O método deadlock é adequado para executar 
tarefas únicas. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 60
Sem preempções: não há necessidade de impedir que um processo acesse esse 
recurso e o preempcione para algum outro processo. 
Método lucrativo: se o seu recurso pode ser armazenado e restaurado rapidamente, 
este é o método para você. 
Não são necessários cálculos: Sinceramente, graças a toda a solução de problemas 
feita no design do sistema, agora você pode dar adeus aos cálculos algorítmicos em 
tempo de execução. 
5.1.7 Desvantagens do Método Deadlock
Segundo SILBERSCHATZ (2010), embora existam os prós do método de deadlock, 
também existem os contras, como segue a seguir: 
Fonte: o próprio autor.
Início tardio: Uma das maiores falhas do método de deadlock é que ele fica lento 
no início do processo. 
Prevenir perdas: Não há dúvida de que o método de impasse tem perdas inerentes 
antecipadas. 
Preempções são encontradas com frequência: Este método não pode ser considerado 
bom, pois resulta na retirada de recursos do processo, tornando a saída buscada até 
agora totalmente inconsistente. 
Sem recursos fragmentados: o método de impasse não aprova nenhuma solicitação 
que solicite recursos graduais. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 61
Desconhecimento sobre as necessidades futuras: Normalmente, os processos 
não estão cientes de seus requisitos de recursos futuros. 
Por fim, podemos relacionar que quando mais de um processo que ocorre em um 
sistema é impedido de ser executado, é chamado de impasse. Um impasse faz com 
que o sistema circule pelo ralo, pois nenhum processo é executado. Os impasses nos 
sistemas operacionais ocorrem quando um recurso está retido ou ocupado no momento 
devido a algum outro processo em andamento. Um impasse satisfaz quatro condições 
obrigatórias do conjunto circular, espera, sem preempção e, o mais importante, os 
processos são mutuamente exclusivos. 
Os métodos para lidar com impasses envolvem detecção de impasse e recuperação 
de impasse no sistema operacional, ignorância de impasse, prevenção de impasse e, 
por último, prevenção de impasse. O método de impasse vem com uma variedade de 
vantagens. Este método é perfeito para executar uma única tarefa, sem a necessidade 
de preempções nem cálculos algorítmicos e ajuda a armazenar e restaurar um recurso 
de forma lucrativa. No entanto, devido a este método, os processos não estão cientes 
de suas necessidades futuras de recursos, eles evitam perdas e ocorrem muitas 
preempções e, além do início tardio do processo, nenhum recurso adicional é alocado.
ISTO ACONTECE NA PRÁTICA
Todos os processos em um sistema requerem alguns recursos, como unidade 
central de processamento (CPU), armazenamento de arquivos, dispositivos de 
entrada/saída etc., para executá-lo. Terminada a execução, o processo libera 
o recurso que estava segurando. No entanto, quando muitos processos são 
executados em um sistema, eles também competem por esses recursos 
necessários para a execução. Isso pode criar uma situação de impasse.
Um deadlock é uma situação em que mais de um processo é bloqueado porque 
está segurando um recurso e requer algum recurso que é adquirido por algum outro 
processo. Portanto, nenhum dos processos é executado.
Para ler a matéria na íntegra, acesse o seguinte link: https://www.scaler.
com/topics/operating-system/deadlock-in-os/. 
https://www.scaler.com/topics/operating-system/deadlock-in-os/
https://www.scaler.com/topics/operating-system/deadlock-in-os/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 62
CAPÍTULO 6
GERENCIAMENTO 
DE PROCESSOS
Um processo é um programa em execução. De acordo com DEITEL et. al. (2005), um 
processo em execução precisa de recursos como recurso de processamento, memória 
e recursos de E/S (entrada e saída de dados). As máquinas atuais permitem que vários 
processos compartilhem recursos. Na realidade, um processador é compartilhado 
entre muitos processos. A interface humano-computador fornecida por um sistema 
operacional envolve o suporte a muitos processos como relógio, ícones e uma ou 
mais janelas. 
Um sistema como um servidor de arquivos pode até mesmo oferecer processos 
de suporte de vários usuários. No entanto, o proprietário de cada processo obtém a 
ilusão de que o servidor (processador de leitura) está disponível para seu processo sem 
qualquer interrupção. Isso requer gerenciamento inteligente e alocação do processador 
como um recurso. Ao longo desse capítulo iremos discutir sobre o mecanismo básico 
de compartilhamento do processador entre os processos.
6.1 O que é um processo?
Um processo é um programa em execução. Para entender a importância desta 
definição, vamos imaginar que escrevemos um programa chamado “Testando_Um_
Processo” em C. Em execução, este programa pode ler alguns dados e produzir alguns 
dados. Note que quando um programa é escrito e um arquivo é preparado, ainda é um 
script. Não possui dinâmica própria, ou seja, não pode causar nenhum processamento 
de entrada ou saída. Depois de compilar, e ainda mais tarde, quando executamos este 
programa, as operações pretendidas ocorrem. Em outras palavras, um programa é um 
script de texto sem comportamento dinâmico. Quando um programa está em execução, 
o script é executado. Isso pode resultar no funcionamento de um processador para 
algum processamento e pode também se envolver em operações de E/S (DEITEL et. 
al. 2005).
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA| 63
É por esta razão que um processo é diferenciado de um programa. Enquanto o 
programa é um script de texto, um programa em execução é um processo. Em outras 
palavras, para começar, vamos definir o que é um “processo” e de que maneira um 
processo difere de um programa. 
De acordo com TANENBAUM (2003), um processo é uma entidade executável - é 
um programa em execução. Quando compilamos uma linguagem de programação, 
como a linguagem C, obtemos um arquivo *.out que é um arquivo executável. Quando 
procuramos executar este arquivo - vemos o programa em execução. Todo processo 
tem sua sequência de instrução. Claramente, portanto, em qualquer ponto no tempo, 
é uma instrução atual em execução.
Um contador de programa ajuda a identificar a próxima instrução na sequência. 
Então o processo deve ter um contador de programa inerente. Voltando à linguagem 
C - é um arquivo de texto. Um programa por si só é uma entidade passiva e não tem 
uma dinâmica de comportamento próprio até criarmos o processo correspondente. 
Por outro lado, um processo tem um comportamento dinâmico e é uma entidade ativa.
Os processos são criados, podem ter que ser suspensos aguardando um evento 
como a conclusão de uma determinada E/S. Um processo termina quando a tarefa 
para a qual foi definido é concluída. Durante o tempo de vida de um processo, ele pode 
buscar a memória dinamicamente. De fato, a instrução malloc em C faz exatamente 
isso. Em qualquer caso, do ponto de vista do sistema operacional, um processo deve 
ser residente na memória e, portanto, precisa ser armazenado em área específica 
dentro da memória (TANENBAUM, 2003).
Os processos durante seu tempo de vida também podem tentar usar dispositivos 
de E/S. Por exemplo, uma saída pode ter que aparecer em um monitor ou uma saída 
impressa pode ser necessária. Em outras palavras, o gerenciamento de processos 
requer não apenas tornar disponíveis os processadores para execução, mas, além disso, 
alocam memória principal, arquivos e IO. O processo componente de gerenciamento 
requer coordenação com o gerenciamento de memória principal, gerenciamento de 
memória secundária, bem como, arquivos e E/S.
A partir desse contexto, de acordo com TANENBAUM e WOODHULL (2008), os 
sistemas operam usando o programa armazenado conforme aponta o conceito de Von-
Neumann. A ideia básica é que uma sequência de instruções deve ser armazenada antes 
de ser executado. Portanto, todo arquivo executável precisa ser armazenado na memória 
principal. Além disso, notamos que os sistemas modernos suportam multiprogramação. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 64
Isso significa que mais de um processo executável pode ser armazenado na memória 
principal. Se houver vários programas residentes na memória, é imperativo que estes 
sejam atribuídos adequadamente a áreas específicas.
O sistema operacional precisa selecionar um deles para executar. Além disso, esses 
processos têm suas áreas de dados associadas a eles e podem até mesmo buscar 
dinamicamente mais áreas de dados. Em outras palavras, o sistema operacional deve 
atender alocar e desalocar a memória, bem como os dados requeridos por esses 
processos. Todos os processos precisam de arquivos para suas operações e o sistema 
operacional deve gerenciar estes também. 
ISTO ESTÁ NA REDE
Um processo encapsula todos os dados para executar o aplicativo, isso inclui o 
texto, o código do programa, uma seção de dados , que contém variáveis globais 
e dados que estão disponíveis quando o processo é inicializado pela primeira vez. 
Como o texto e os dados estão disponíveis quando o processo é inicializado, eles 
são chamados de estados estáticos e estão disponíveis quando o processo é 
carregado pela primeira vez.
Os processos podem não precisar de todo o espaço de endereço, pois pode haver 
muitos processos em execução ao mesmo tempo e podemos não ter espaço 
suficiente na memória física (ou seja, na RAM). Para lidar com essa situação, o 
sistema operacional decide dinamicamente qual parte do espaço de endereço 
estará presente na memória física. 
Múltiplos processos podem compartilhar memória física trocando temporariamente 
alguma parte de seu espaço de endereço no disco; essa parte do espaço de 
endereço será trazida de volta à memória sempre que necessário. A tabela de 
páginas mantém o mapeamento do endereço virtual para o endereço físico (RAM 
ou Disco), também valida se uma determinada solicitação de acesso à memória por 
um processo é permitida ou não.
Para ler a matéria na íntegra, acesse o seguinte link: https://medium.com/@
akhandmishra/operating-system-process-and-process-management-
108d83e8ce60. 
6.1.1 Gerenciamento de arquivos e IO
Às vezes, os processos precisam operar em arquivos. Segundo TANENBAUM e 
WOODHULL (2008), as operações de arquivo típicas são os seguintes elementos:
https://medium.com/@akhandmishra/operating-system-process-and-process-management-108d83e8ce60
https://medium.com/@akhandmishra/operating-system-process-and-process-management-108d83e8ce60
https://medium.com/@akhandmishra/operating-system-process-and-process-management-108d83e8ce60
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 65
Fonte: o próprio autor.
Criar: Para criar um arquivo no ambiente de operação
Abrir: Para abrir um arquivo existente no ambiente de operação.
Ler: Para ler os dados de um arquivo aberto.
Escrever: Para escrever em um arquivo existente ou em um arquivo recém-criado 
ou pode ser para modificar ou anexar ou gravar em um arquivo recém-criado.
Anexar: como escrever, exceto que a gravação resulta em anexar a um arquivo 
existente.
Modificar ou reescrever: Essencialmente como gravar – resulta na reescrita de 
um arquivo.
Excluir: Isso pode ser para remover ou desfazer um arquivo de uso posterior.
O sistema operacional deve suportar todas essas e muitas outras operações de 
arquivo. Por exemplo, existem outras operações de arquivo, como quais aplicativos 
ou usuários podem ter permissão para acessar os arquivos. Os arquivos podem ser 
próprios ou compartilhados. Existem operações de arquivo que permitem que um 
usuário especifique isso. Além disso, os arquivos podem ser de tipos diferentes. Por 
exemplo, podemos ter arquivos executáveis e de texto. Além disso, pode haver arquivos 
de imagem ou arquivos de áudio (TANENBAUM e WOODHULL, 2008).
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 66
6.1.2 Gerenciamento de processos: multiprogramação e compartilhamento de 
tempo
Para entender processos e gerenciamento, começamos por considerar um sistema 
simples com apenas um processador e um usuário executando apenas um programa. 
Também assumimos que o Input/Output (entrada/saída), e o processamento ocorrem 
em série. Então, quando um IO é necessário o processador espera que ele seja concluído. 
Quando inserimos um dado através de um teclado, estamos operando a uma velocidade 
quase um milhão de vezes mais lenta que a de um processador. Então o processador 
fica ocioso na maior parte do tempo. Mesmo os dispositivos IO mais rápidos são pelo 
menos 1000 vezes mais lentos do que os processadores, ou seja, um processador é 
altamente subutilizado.
Lembre-se de que a computação de Von Neumann requer que um programa resida na 
memória principal para ser executado. Claramente, ter apenas um programa resultaria 
em subutilização bruta do processador. Vamos supor que agora temos dois programas 
prontos para serem executados. Considere dois programas prog_1 e prog_2 residentes 
na memória principal. Quando prog_1 pode estar buscando o IO, disponibilizamos o 
processador para executar prog_2 ou seja, podemos agendar a operação de prog_2. 
Porque o processador é muito mais rápido em comparação com todos os outros 
dispositivos, acabaremos com o processador esperando que o IO seja concluído. Neste 
caso, temos dois programas residentes na memória principal (SILBERSCHATZ, 2001).
O sistema operacionalmultiprogramação permite e gerencia vários programas 
simultaneamente residentes na memória principal.
De acordo com SILBERSCHATZ (2001), podemos refletir sobre a utilização do 
processador. Um processador é um elemento central e chave de um sistema de 
computador. Isso ocorre porque todo o processamento de informações é feito em um 
processador. Então, em um computador a taxa de transferência depende da extensão 
da utilização de seu processador. Quanto maior a utilização do processador, maior é a 
quantidade de informação processada. O processador agora processa dois programas 
sem a necessidade de sacrificar significativamente o seu tempo. Note que podemos 
ter uma pequena sobrecarga na mudança do contexto de uso de um processador. 
No entanto, a multiprogramação resulta na melhoria da utilização dos recursos do 
computador. 
A partir desse exemplo, observamos que com vários programas residindo na 
memória, aumentamos a utilização da memória. Quando investimos em um sistema 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 67
de computador, investimos em todos os seus componentes. Portanto, se qualquer 
parte do sistema estiver ocioso, é um desperdício de recursos. Idealmente, podemos 
obter o máximo através de um sistema quando todos os componentes do sistema 
estão ocupados o tempo todo. Isso então é a meta. O suporte à multiprogramação é 
essencial para atingir esse objetivo, porque somente aqueles programas residentes 
na memória podem envolver dispositivos dentro de um sistema.
6.1.3 Tempo de resposta
Até agora, argumentamos que o uso de multiprogramação aumenta a utilização 
do processador e outros elementos dentro de um sistema de computador. Portanto, 
devemos tentar maximizar o número de programas prontos para execução dentro 
de um sistema. De fato, se esses programas pertencem a diferentes usuários, então 
alcançamos o compartilhamento dos recursos do sistema de computador entre 
muitos usuários. Esse sistema é chamado de sistema de compartilhamento de tempo 
(SILBERSCHATZ, 2010).
ANOTE ISSO
Uma das principais áreas de pesquisa em sistemas operacionais é a avaliação de 
desempenho. Na avaliação de desempenho, estudar a porcentagem de utilização do 
tempo do processador, capacidade de utilização da memória, tempo de resposta e, 
claro, a taxa de transferência de todo o sistema de computador.
De acordo com SILBERSCHATZ (2010), podemos ter alguns valores intermediários 
armazenados nos registros no momento da suspensão. Esses valores podem ser 
críticos para as instruções subsequentes. Todas essas informações também devem 
ser armazenadas com segurança em algum lugar no momento da suspensão (ou 
seja, antes que o contexto de uso seja trocado). Quando retomamos uma suspensão 
(programa), devemos recarregar todas essas informações (antes que possamos 
realmente continuar). Em essência, um switch no contexto de uso tem sua sobrecarga. 
Quando o número de usuários residentes nos programas está competindo pelos 
mesmos recursos, observamos um aumento da frequência de armazenamento e 
nos períodos de espera. Se as despesas gerais forem altas ou a troca de contexto 
for muito frequente, os usuários terão que esperar mais tempo para executar seus 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 68
programas. Em outras palavras, o tempo de resposta do sistema será mais longo. 
Geralmente, o tempo de resposta de um sistema é definido como o intervalo de tempo 
que abrange o tempo desde a entrada do último caractere ao primeiro caractere da 
saída. É importante que quando projetamos um sistema de tempo compartilhado 
mantemos o tempo de resposta em algum nível aceitável. Caso contrário, a vantagem 
de fornecer acesso e compartilhamento do recurso seriam perdidos. Um sistema que 
usamos para acessar as informações de um livro em uma biblioteca é um sistema 
de tempo compartilhado. 
Claramente, o tempo de resposta deve ser de modo que seja aceitável, digamos 
alguns segundos. Um sistema de biblioteca também é um sistema online. Em um 
sistema online, os dispositivos são continuamente monitorados (observados) pelo 
sistema de computador. Se em um sistema online o tempo de resposta também está 
dentro de alguns limites aceitáveis, então dizemos que é um sistema em tempo real. 
Por exemplo, as companhias aéreas ou o escritório de reservas ferroviárias geralmente 
têm um serviço on-line em tempo real. 
Título: Representação de um sistema de reserva online. 
Fonte: https://br.freepik.com/vetores-gratis/telas-de-aplicativos-integradas-para-conjunto-de-servicos-de-viagem_6744096.htm#query=reserva%20
passagens%20aereas&position=27&from_view=search&track=ais 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 69
6.1.4 Estados do Processo
No exemplo anterior, vimos algumas possibilidades com relação aos cenários 
operacionais. Por exemplo, dizemos que um processo está em estado (ou modo) 
de execução quando está envolvendo o processador. Está em estado de espera (ou 
modo) quando está esperando por um IO para ser concluído. Pode até estar em modo 
de espera quando estiver pronto para executar, mas o processador pode não ser livre, 
pois está atualmente envolvido por algum outro processo.
Cada um desses estados identificáveis descreve as condições operacionais atuais 
de um processo. O estudo dos estados do processo ajuda a modelar o comportamento 
para estudos analíticos. Por exemplo, em um modelo simplista, podemos pensar em 
um modelo de cinco estados.
De acordo com SILBERSCHATZ et. al. (2000), os cinco estados podem ser definidos 
a partir dos seguintes elementos:
Fonte: o próprio autor.
O novo processo ainda não foi listado por um sistema operacional para ser um 
processo ativo que pode ser agendado. Ele entra no estado pronto para execução 
quando é identificado para o agendamento futuro. Somente após esse processo ele 
pode ser executado. Uma vez que um processador esteja disponível, um dos processos 
prontos para executar pode ser escolhido para correr. Passa para o estado em execução 
(running). Durante esta execução, pode ser expirado ou pode ter que esperar que um 
IO seja concluído. 
Se ele passar para o estado de espera por IO, então ele se move para o estado 
pronto para executar quando o IO é concluído. Quando um processo termina sua 
operação ele se move para sair do estado. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 70
Diante desse contexto, de acordo com SILBERSCHATZ (2010), quando um processo 
é criado, o sistema operacional atribui a ele um id e também cria uma estrutura de 
dados para registrar seu progresso. Em algum momento, o sistema operacional torna 
esse processo recém-criado pronto para ser executado. Esta é uma mudança no estado 
deste novo processo. Com a multiprogramação existem muitos processos prontos para 
serem executados na memória principal. A estrutura de dados do processo registra 
o estado de um processo à medida que ele evolui. 
Um processo marcado como pronto para execução pode ser agendado para 
execução. O sistema operacional possui um módulo despachante que escolhe um 
dos processos prontos para executar e atribui para o processador.
O sistema operacional aloca um intervalo de tempo para executar esse processo. 
O Sistema Operacional monitora o progresso de cada processo durante seu tempo de 
vida. Um processo pode, ou não, ser executado para a duração total de seu intervalo 
de tempo alocado. Pode terminar bem antes do tempo alocado decorrido ou pode 
buscar um IO. Algumas vezes, um processo pode não ser capaz de prosseguir até 
que algum evento ocorre. Tal evento é detectado como um sinal de sincronização. Tal 
sinal pode até ser recebido de algum outro processo. Quando espera que um IO seja 
concluído, ou algum sinal chegar, diz-se que o processo está bloqueado. O sistema 
operacional deve realocar o processador agora (SILBERSCHATZ et. al., 2000).
O Sistema Operacionalmarca este processo como bloqueado para IO. O SO deve 
monitorar toda a atividade de IO para poder detectar a conclusão de algum IO ou 
ocorrência de algum evento. Quando isso acontece, o sistema operacional modifica a 
estrutura de dados do processo para um dos processos bloqueados e o marca como 
pronto para ser executado (correr). Assim, vemos que o SO mantém algumas estruturas 
de dados para gerenciamento de processos. Isto modifica essas estruturas de dados. 
Na verdade, o SO gerencia todas as migrações entre o processo e o(s) estado(s).
6.2 Gestão de Processos na Prática
O gerenciamento de processos envolve o gerenciamento de vários processos e 
permite que eles se comuniquem uns com os outros de forma eficiente. A comunicação 
entre processos é um mecanismo que permite que os processos se comuniquem e 
compartilhem recursos entre si em um sistema operacional. 
Por exemplo, o Windows utiliza o Gerenciador de Tarefas para gerenciar processos. 
O Gerenciador de Tarefas fornece uma grande quantidade de informações sobre cada 
processo, incluindo seu uso de CPU e memória, status e prioridade. Você também 
pode usar o Gerenciador de Tarefas para encerrar ou reiniciar processos, alterar sua 
prioridade e definir a afinidade (SILBERSCHATZ et. al., 2000).
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 71
Já o Linux usa uma variedade de ferramentas para gerenciamento de processos, 
como ps, top e htop. Essas ferramentas fornecem informações sobre processos em 
execução, seu status e uso de recursos. Você também pode usar o comando kill para 
interromper um processo ou enviar sinais para ele, como para alterar sua prioridade.
Por fim, podemos relacionar que o macOS usa o Activity Monitor para gerenciar 
processos. O Activity Monitor fornece informações sobre os processos em execução 
no seu sistema, incluindo o uso de CPU e memória, status e prioridade. Você também 
pode usar o Activity Monitor para encerrar ou reiniciar processos, alterar sua prioridade 
e definir a afinidade.
A partir desse contexto, de acordo com OLIVEIRA et. al. (2004), podemos observar 
alguns exemplos de Gerenciamento de Processos de Comandos e Ferramentas 
comumente usados para gerenciar processos:
Fonte: o próprio autor.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 72
ISTO ACONTECE NA PRÁTICA
Antes da execução de um processo, seu código fonte deve ser compilado. A 
compilação do código resulta na conversão do código de alto nível para instruções 
binárias, é mantido um registrador na CPU que indica o endereço da próxima 
instrução a ser executada para este processo.
Existem alguns outros registradores na CPU que armazenam outras informações 
do processo, como endereços para dados ou algumas informações de status. Há 
também um ponteiro de pilha que aponta para o topo da pilha usada pelo processo. 
Para manter todo esse processo para cada processo único, um sistema operacional 
mantém um bloco de controle de processo.
Para ler a matéria na íntegra, acesse o seguinte link: https://medium.com/@
akhandmishra/operating-system-process-and-process-management-
108d83e8ce60. 
6.2.1 Melhores práticas para gerenciar processos em um sistema operacional
De acordo com OLIVEIRA et. al. (2004), seguem algumas práticas recomendadas 
para gerenciamento de processos:
• Monitore regularmente o sistema quanto ao uso e desempenho de recursos.
• Identifique e encerre quaisquer processos desnecessários ou não utilizados 
para liberar recursos do sistema.
• Seja cauteloso ao encerrar um processo, pois isso pode ter consequências não 
intencionais.
• Priorize processos importantes ou críticos para garantir que eles recebam os 
recursos de que precisam.
• Use algoritmos de agendamento apropriados para otimizar o uso dos recursos 
do sistema.
• Use mecanismos IPC apropriados para permitir que os processos se comuniquem 
de forma eficaz e evitem conflitos.
Em resumo, o gerenciamento de processos é um aspecto crucial de qualquer sistema 
operacional moderno. É responsável por alocar recursos do sistema e garantir que os 
processos sejam executados com eficiência. 
A partir desse contexto, segundo OLIVEIRA et. al. (2004), é evidente que o gerenciamento 
de processos desempenha um papel vital para garantir o bom funcionamento de um 
sistema operacional. Para tanto, é fundamental que desenvolvedores e administradores 
https://medium.com/@akhandmishra/operating-system-process-and-process-management-108d83e8ce60
https://medium.com/@akhandmishra/operating-system-process-and-process-management-108d83e8ce60
https://medium.com/@akhandmishra/operating-system-process-and-process-management-108d83e8ce60
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 73
de sistemas tenham um conhecimento sólido sobre gerenciamento de processos e 
suas aplicações.
À medida que a tecnologia continua a evoluir, o gerenciamento de processos se 
tornará ainda mais crítico para garantir a eficiência e a confiabilidade dos sistemas 
de computador. Portanto, incentivamos os leitores a continuar aprendendo sobre o 
sistema de gerenciamento de processos e suas diversas aplicações.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 74
CAPÍTULO 7
COMUNICAÇÃO DE PROCESSOS 
Os processos no sistema operacional precisam se comunicar uns com os outros. 
Isso é chamado de comunicação entre processos.
De acordo com DEITEL et. al. (2005), a IPC (Inter Process Communication) é um 
dos principais mecanismos usados pelos sistemas operacionais para atingir esses 
objetivos. O IPC ajuda os processos a se comunicarem entre si sem a necessidade 
de passar por rotinas ou interfaces no nível do usuário. 
Ele permite que diferentes partes de um programa acessem dados e arquivos 
compartilhados sem causar conflitos entre eles. Na IPC, as mensagens são trocadas 
entre os processos que podem estar no mesmo computador ou em computadores 
diferentes. 
Ao longo desse capítulo será possível discutir sobre a comunicação de processos 
e sua necessidade, além de observar sobre algumas diferentes abordagens para fazer 
o IPC.
7.1 Compreendendo os princípios da IPC
A IPC é uma dinâmica que possibilita que diferentes processos de um sistema de 
computador compartilhem informações. Esse recurso permite que diferentes programas 
sejam executados em paralelo, compartilhem dados e se comuniquem. É importante 
por dois motivos: primeiro, acelera a execução das tarefas e, segundo, garante que 
as tarefas sejam executadas corretamente e na ordem em que foram executadas.
Se um programa (procedimento) é executado sob o controle de um sistema 
operacional (mais precisamente sob o controle de um kernel do sistema operacional), 
essa sequência é chamada de processo (tarefa). Essa maneira de ver isso torna possível 
que vários programas sejam executados simultaneamente como processos em paralelo 
em um sistema de computador que funciona sequencialmente (independentemente 
do número real de processadores). 
Um caso especial é a execução de vários processos em um processador. A execução 
de processos cria dados que são gerenciados pelo kernel do sistema operacional. Isso 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 75
é chamado de informação de status e depende do sistema, por exemplo: Registrar 
Conteúdo.
ISTO ESTÁ NA REDE
A comunicação entre processos (IPC) é um mecanismo que permite a troca de 
dados entre processos. Ele permite o compartilhamento de recursos e dados entre 
os processos sem interferência. Os processos que executam simultaneamente 
no sistema operacional podem ser processos independentes ou processos 
cooperativos.
Um processo é independente e pode ou não ser afetado por outros processos em 
execução no sistema. Qualquer processo que não compartilhe dados com nenhum 
outro processo é independente.
Para ler a matéria na íntegra, acesse o seguinte link: https://www.tutorialspoint.com/what-is-inter-process-communication. 
De acordo com DEITEL et. al. (2005), o IPC possibilita que diferentes programas 
sejam executados em paralelo, compartilhem dados e se comuniquem. É importante 
por dois motivos:
O IPC é essencial para a operação eficiente de um sistema operacional. Segundo 
OLIVEIRA et. al. (2004), os sistemas operacionais usam IPC para trocar dados com 
ferramentas e componentes que o sistema usa para interagir com o usuário, como 
o teclado, o mouse e a interface gráfica do usuário (GUI). O IPC também permite 
que o sistema execute vários programas ao mesmo tempo. Por exemplo, o sistema 
https://www.tutorialspoint.com/what-is-inter-process-communication
https://www.tutorialspoint.com/what-is-inter-process-communication
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 76
pode usar o IPC para fornecer informações ao sistema de janelas sobre o status de 
uma janela na tela. Por exemplo, quando você está usando um sistema baseado em 
equipes, é necessário se comunicar com todas as equipes da empresa. Alguns deles 
são a equipe de vendas de produtos e outros são as equipes técnicas. A comunicação 
entre eles acelerará o trabalho e a eficiência geral também aumentará. 
Título: Representação de uma empresa formada por diversas equipes e áreas. 
Fonte: https://br.freepik.com/vetores-gratis/diversidade-homem-e-mulher-de-negocios_5685571.htm#page=2&query=empresa%20e%20diversas%20
equipes&position=47&from_view=search&track=ais 
O IPC pode ser definido como um mecanismo fornecido pelo sistema operacional 
para processos de gerenciamento de dados compartilhados. Em geral, as aplicações 
que utilizam IPC são classificadas como clientes e servidores, onde os dados solicitados 
pelo cliente e servidor respondem ao pedido do cliente. A maioria das aplicações são 
clientes e servidores comumente observados em computação distribuída (DEITEL et. 
al. 2005).
No IPC, os diferentes tipos de processos em execução no sistema operacional podem 
se conectar a diferentes tipos de operações no sistema operacional. É usado entre 
diferentes tipos de operações envolvendo computadores e sistemas operacionais. Os 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 77
processos executados ao mesmo tempo no sistema operacional podem ser processos 
independentes ou processos compartilhados. 
ISTO ESTÁ NA REDE
O mecanismo usado para fornecer comunicação entre os processos é chamado de 
comunicação entre processos (IPC) e é fornecido pelo sistema operacional. 
 Esse tipo de comunicação é útil para trocar informações entre vários threads de 
um ou mais programas ou processos em execução em um ou mais computadores 
em rede. 
O IPC se trata de uma interface de usuário de software que permite aos 
desenvolvedores coordenar suas funções no processo de programação para 
diferentes sistemas operacionais.
Para ler a matéria na íntegra, acesse o seguinte link: https://www.elprocus.
com/inter-process-communication/. 
7.1.1 Vantagens da comunicação entre processos
A IPC possibilita que um aplicativo gerencie outro e faça o compartilhamento de 
dados sem falhas. 
A IPC ajuda a enviar mensagens de forma eficiente entre os processos.
O programa é fácil de manter e depurar porque é dividido em diferentes seções de 
código que funcionam separadamente.
 Os programadores podem realizar uma variedade de outras tarefas ao mesmo 
tempo, incluindo edição, ouvir música, compilar etc. 
Os dados podem ser compartilhados entre diferentes programas ao mesmo tempo. 
As tarefas podem ser subdivididas e executadas em tipos especiais de processadores. 
Você pode então trocar dados via IPC. 
https://www.elprocus.com/inter-process-communication/
https://www.elprocus.com/inter-process-communication/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 78
ISTO ESTÁ NA REDE
Quando vários processos são executados ao mesmo tempo, eles frequentemente 
precisam se comunicar uns com os outros por diferentes motivos. 
Para que um processo se comunique entre si, é necessário um conjunto de 
regras que é chamado de protocolo. Um processo em um microprocessador é 
uma entidade ativa que inclui vários componentes extras além do código-fonte do 
programa. Esta entidade inclui uma pilha de processos que armazena os dados 
temporários como variáveis locais, parâmetros de função etc. 
Existem dois tipos de processos dentro de um sistema de computador, eles são 
independentes e cooperativos. Os processos independentes não compartilham 
nenhum com outros processos, enquanto o processo cooperativo compartilha 
dados com outros processos que precisam de uma comunicação entre processos 
ou IPC. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.elprocus.
com/inter-process-communication/. 
7.1.2 Desvantagem da comunicação entre processos
O programa não pode gravar em locais semelhantes.
Os processos que usam o IPC devem certificar-se de que não estão gravando em 
locais de memória semelhantes.
O modelo de armazenamento compartilhado pode causar problemas como 
sincronização e proteção de armazenamento que precisam ser resolvidos. 
É mais lento que uma chamada de função direta. 
7.1.3 Como funciona o IPC em sistemas de computador?
O IPC ocorre quando um programa envia uma mensagem para o processo do 
sistema operacional. O sistema operacional envia a mensagem para um mecanismo 
IPC específico, que processa a mensagem e retorna uma resposta ao aplicativo. 
O mecanismo IPC reside no kernel ou no espaço do usuário do sistema operacional. 
Segundo Tanenbaum (2003), o IPC é um processo essencial na operação de sistemas 
computacionais. Isso permite que diferentes programas sejam executados em paralelo, 
troquem dados e se comuniquem entre si. O IPC é crítico para a operação eficiente 
do sistema operacional, garantindo que as tarefas sejam executadas corretamente 
na ordem em que são executadas.
https://www.elprocus.com/inter-process-communication/
https://www.elprocus.com/inter-process-communication/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 79
ISTO ACONTECE NA PRÁTICA
O IPC em um sistema operacional é realizado a partir de vários processos que 
se comunicam entre si. Um sistema pode ter dois tipos de processos: Processo 
Independente e Processo de cooperação.
Observe que os processos cooperativos afetam uns aos outros e podem 
compartilhar dados e informações entre si. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.scaler.com/
topics/operating-system/inter-process-communication-in-os/. 
7.1.3.1 Passagem de mensagem
A passagem de mensagens é uma importante forma de comunicação entre os 
processos. Quando dois ou mais processos estão envolvidos na comunicação, cada 
processo envia mensagens para outros processos centrais. 
Segundo Tanenbaum e Woodhull (2008), este é um método de comunicação para 
sincronização e comunicação entre processos. O uso de chamadas de sistema de 
memória compartilhada é lento e simples de implementar. Os processos podem trocar 
dados entre si sem compartilhar recursos ou variáveis. Na passagem de mensagens, 
a comunicação entre os processos ocorre por meio de um link de comunicação.
As ações dos processos são enviar uma mensagem e receber uma mensagem. Já 
que a mensagem pode ser do tipo variável ou fixo.
Suponha que o processo 1 e o processo 2 se comuniquem estabelecendo o link de 
comunicação. Depois disso, eles trocam a mensagem por meio de operações de envio e 
recebimento. A mensagem é transferida no estilo First In First Out (FIFO). A mensagem 
padrão trocada pelos processos contém 2 partes. Como segue a representação a seguir: 
https://www.scaler.com/topics/operating-system/inter-process-communication-in-os/
https://www.scaler.com/topics/operating-system/inter-process-communication-in-os/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 80
A partirdesse contexto, de acordo com SILBERSCHATZ (2001), o link de comunicação 
pode ser estabelecido em diferentes tipos, como por exemplo: 
• Comunicação direta;
• Comunicação indireta;
• Passagem síncrona de mensagens;
• Passagem de mensagem assíncrona etc.
7.1.3.2 Memória compartilhada
A memória compartilhada é um recurso onde a memória deve ser compartilhada 
entre todos os processos estabelecidos. Esse tipo de memória deve proteger uns aos 
outros sincronizando o acesso entre todos os processos. Ambos os processos, como 
A e B, podem configurar um segmento e trocar dados por meio dessa área. De acordo 
com SILBERSCHATZ (2010), a memória compartilhada é importante por esses motivos:
A memória compartilhada permite que dois ou mais processos compartilhem a 
mesma cópia dos dados.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 81
ISTO ACONTECE NA PRÁTICA
A memória compartilhada permite que vários processos compartilhem espaço de 
memória virtual. Para comunicação entre processos, esse método é o mais rápido e 
otimizado, mas não necessariamente o mais fácil. 
O processo de compilação redefine a memória compartilhada conforme necessário. 
Uma vez criados e acessados, outros processos podem acessar e alocar a memória 
compartilhada em seu próprio espaço de dados. As informações são enviadas por 
meio do espaço de informações do processo compartilhado. É a maneira mais 
rápida de se comunicar entre os processos. A memória compartilhada permite que 
os processos participantes tenham acesso aleatório aos segmentos de memória 
compartilhada.
Para ler a matéria na íntegra, acesse o seguinte link: https://www.ibm.com/
support/pages/interprocess-communication-ipc-overview#:~:text=Official%20
definition%3A,common%20methods%20of%20interprocess%20communication. 
Suponha que o processo A queira se comunicar com o processo B e precise anexar seu 
espaço de endereço a esse segmento de memória compartilhada. O processo A escreverá 
uma mensagem na memória compartilhada e o processo B lerá essa mensagem da memória 
compartilhada. Portanto, os processos são responsáveis por garantir a sincronização para 
que ambos os processos não gravem no mesmo local ao mesmo tempo.
Nesse método, vários processos podem se comunicar entre si simultaneamente 
acessando ou compartilhando a memória. Os vários processos podem trocar os dados 
usando leitura/gravação na memória compartilhada porque o sistema operacional 
cria uma memória comum na RAM para compartilhamento. Requer proteção pela 
sincronização de acesso de todos os múltiplos processos na comunicação.
ANOTE ISSO
Vantagens: 
• O processo de comunicação é muito rápido e bidirecional.
• Vários processos podem usar a memória compartilhada.
• Os recursos são salvos.
Desvantagens
• Controle de simultaneidade necessário.
• Sem proteção de dados.
• Inconsistência de dados ocorreu quando as atualizações foram perdidas.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 82
7.1.4 Tubulações
As tubulações ou pipes são um tipo de canal de dados comumente usado para 
comunicação unidirecional entre dois processos. Como essa é uma técnica half-
duplex, o processo primário se comunica com o processo secundário. No entanto, 
são necessárias linhas adicionais para obter um full duplex. 
Os dois pipes criam um canal de dados bidirecional entre os dois processos. Mas 
um pipe cria um canal de dados unidirecional. Pipes são usados principalmente em 
sistemas operacionais Windows. 
De acordo com SILBERSCHATZ et. al. (2000), é uma comunicação unidirecional ou 
modo de comunicação half-duplex no IPC. É o IPC mais utilizado para a comunicação 
entre os dois processos. Se um processo gravar/enviar os dados, o outro processo 
os receberá ou lerá. Para facilitar a compreensão, podemos imaginar por exemplo, o 
processo de encher a água em um balde com uma torneira. Os pipes são usados no 
Posix e em várias versões do sistema operacional Windows.
Título: Representação do processo de encher um balde a partir de uma torneira. 
Fonte: https://br.freepik.com/vetores-gratis/salve-o-conceito-de-agua-com-agua-caindo-da-torneira_15555799.htm#query=encher%20balde%20
torneira&position=13&from_view=search&track=ais 
7.1.5 Sinal
Os sinais são ferramentas que permitem a comunicação entre os processos. Um 
sinal é uma maneira de dizer a um processo que ele deve fazer algo. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 83
 Um processo pode enviar um sinal para outro. Além disso, eles permitem que um 
processo interrompa outro processo. Sinais são uma forma de comunicação entre 
processos.
7.2 Aplicações de comunicação entre processos
De acordo com SILBERSCHATZ et. al. (2000), os aplicativos de comunicação entre 
processos estão listados abaixo.
É usado em interfaces de chamada de procedimento remoto, como RMI (inovação 
de método remoto) de Java, ONC RPC, JSON RPC, barramento de mensagem, XML 
RPC, RPC, etc.
Usado em mensagens de pilha de comunicação de plataforma e sistemas de dados, 
como protocolo de comunicação de desktop do KDE, D-bus, API de comunicação 
multicore, SIMPL (mensagens síncronas entre processos no Linux), Openwrt, ICE 
(mecanismo de comunicação pela Internet), Thrift, MQ, middleware Enduro/X, 
Enlightenment_software, etc.
Usado em modelos de projetos distribuídos como PHP, Distributed Rubey, Electron’s 
síncrono, C++ e CORBA (common object request broker architecture).
Usado em pilhas de comunicação do sistema operacional, como comunicações 
entre aplicativos para computadores Apple, portas ARexx, portas Mach no kernel 
Mach, DSP e processadores de uso geral, Microsoft servidor de transações, OLE 
(object linking and embedding), chamadas de procedimentos locais, mailslots, base 
de comunicação do Windows, pipes anônimos e nomeados, Posix, filas de mensagens, 
memória compartilhada, semáforos, RISC, TIPC (IPC transparente de Linux, fichário 
aberto) etc.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 84
CAPÍTULO 8
GERENCIAMENTO DE MEMÓRIA
Uma das tarefas mais importantes de um sistema operacional é gerenciar a memória 
principal, que quase sempre é muito pequena. Praticamente todos os sistemas operacionais 
atuais usam um real endereçamento de memória virtual em que os endereços de memória 
endereçados pelos programas não precisam ser idênticos aos endereços de hardware 
da memória RAM. 
Assim como os drivers de dispositivo e o gerenciamento de processos, o gerenciamento 
de memória alivia o programador de uma tarefa bastante frustrante de alocar memória 
para processos ou programas individuais. Uma vez que um gerenciamento de memória 
funcionando corretamente dá a cada programa a ilusão de que tem toda a memória de 
trabalho à sua disposição, você não precisa mais se preocupar muito se tem memória 
de trabalho suficiente ao programar (DEITEL et. al. 2005).
ANOTE ISSO
O termo memória pode ser definido como uma coleção de dados em um formato 
específico. É usado para armazenar instruções e processar dados. A memória 
compreende uma grande matriz ou grupo de palavras ou bytes, cada um com sua 
própria localização. O motivo principal de um sistema de computador é executar 
programas. Esses programas, juntamente com as informações que acessam, 
devem estar na memória principal durante a execução. A CPU busca instruções na 
memória de acordo com o valor do contador de programa. 
Para atingir um grau de multiprogramação e utilização adequada da memória, o 
gerenciamento de memória é importante. Existem muitos métodos de gerenciamento de 
memória, refletindo várias abordagens, e a eficácia de cada algoritmo depende da situação.
De acordo com DEITEL et. al. (2005), a memória de trabalho é um recurso sem o qual 
nenhum programa pode ser executado. Uma tarefa central de todo sistema operacional 
é, portanto, o gerenciamento de memória. Ele organiza a alocação da memória principal 
para trabalhosou tarefas do usuário, tanto a memória de programa quanto a memória de 
dados. Ele deve manter um registro de quais áreas de memória estão livres e ocupadas. 
Desde o início da “história do computador” até os dias atuais, pode-se observar o fenômeno 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 85
de que a necessidade de memória de trabalho é sempre maior do que a memória física 
disponível. A memória disponível é quase sempre muito pequena para gravar um programa 
grande ou vários programas ao mesmo tempo. Várias soluções para esse problema foram 
desenvolvidas ao longo das várias gerações de computadores.
Os métodos mais modernos baseiam-se no fato de que apenas alguns locais de 
memória são realmente acessados em um determinado momento, enquanto os outros 
estão disponíveis apenas para acesso posterior (o que pode nunca acontecer). A ideia 
básica é, portanto, uma expansão da capacidade de armazenamento com a ajuda do 
armazenamento externo em massa, a partir do qual as informações necessárias são 
carregadas na memória principal quando necessário.
Figura 1 - Gerenciamento de memória
Fonte: o próprio autor (2023)
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 86
De acordo com DEITEL et. al. (2005), na multiprogramação e multitarefa, em 
particular, uma variedade de tarefas surge para o gerenciamento de memória, pois 
deve haver vários programas independentes na memória principal, que podem muitas 
vezes precisam ser removidos e armazenados. As tarefas de gerenciamento de memória 
também incluem o fornecimento de mecanismos para proteção contra acesso não 
autorizado à memória de outros programas. 
Ao longo desse capítulo iremos observar uma lista de princípios de gerenciamento 
de memória – abordando os mais antigos e apontando os métodos de gerenciamento 
de memória comumente usados hoje em computadores de uso geral.
8.1 Endereçamento Direto
Sistemas operacionais simples e universais para operação de programa único 
geralmente gerenciam toda a memória como um bloco que consiste em uma área de 
sistema para o sistema operacional e uma área de usuário. O programa atual ocupa 
uma parte contígua da área do usuário. 
A partir desse contexto, de acordo com TANENBAUM (2003), podemos relacionar 
os sistemas dedicados e os sistemas universais, como segue a seguir:
• Sistemas dedicados: Como o início da área do usuário é fixo em tal sistema, 
os programas podem ser escritos, compilados e vinculados de forma que 
possam ser executados exatamente nesses endereços de memória. Isso torna 
as ferramentas necessárias muito simples. Este era o procedimento usual 
no início das aplicações de microprocessador e ainda hoje é suficiente para 
problemas simples.
• Sistemas universais: Os componentes mais importantes de tais sistemas 
operacionais simples são um chamado “monitor de trabalhos” que gerencia 
uma fila de trabalhos e um “carregador” que carrega o programa do usuário a ser 
iniciado, se necessário junto com (partes de) uma biblioteca de programas de 
uma memória de fundo. Como todos os endereços dos programas carregados 
(ou partes do programa) já estão presentes no código do objeto como endereços 
absolutos, esse carregador também é chamado de “carregador absoluto”.
Segundo TANENBAUM e WOODHULL (2008), na operação de programa único, há 
apenas um processo na memória, ele pode usar toda a memória. Este método não é 
mais comum hoje. Mesmo na operação de programa único, o sistema operacional e o 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 87
processo do usuário compartilham a memória. Apenas os controles do microprocessador 
são uma exceção. Já na multitarefa, vários processos são carregados na memória e 
atribuídos à CPU por meio do escalonador.
8.1.1 Problema com operação multiprograma
Um processo nunca deve afetar o espaço de memória de outros processos. Para isso, 
são necessárias medidas de hardware e software (proteção da memória). A multitarefa 
também aumenta a utilização da CPU. Quando um processo está aguardando o fim 
de uma operação de E/S, a CPU fica ociosa no modo de programa único. No modo 
multiprograma, outros processos podem calcular durante esse tempo.
A forma mais simples é dividi-lo em partes fixas (partições), que não precisam 
necessariamente ser do mesmo tamanho. Além do particionamento, são necessárias 
medidas para realocar (mover) os programas durante o carregamento e para proteger 
a memória.
Os processos só podem acessar áreas dentro da partição, caso contrário, outros 
processos podem ser influenciados de maneira inaceitável. A unidade de gerenciamento 
de memória deve, portanto, ter funções de proteção apropriadas e relatar acesso 
a áreas “proibidas” para o núcleo do sistema operacional. Uma solução consiste, 
por exemplo, em dois registradores adicionais do processador, registradores de base 
e registradores de limite. O registrador base contém o endereço inicial da partição 
atribuída ao processo ativo e o registrador limite contém seu comprimento. Todas as 
operações de endereçamento no programa são relativas ao registrador base. Os dois 
registradores são alterados pelo escalonador (TANENBAUM, 2003).
ISTO ESTÁ NA REDE
Graças ao sistema operacional multiusuário, muitos usuários podem compartilhar 
seu tempo de processamento entre diferentes terminais em um poderoso 
computador central. 
O sistema operacional faz isso alternando rapidamente entre os terminais, cada 
um recebendo uma quantidade limitada de tempo de CPU do computador host. Os 
sistemas operacionais mudam entre os terminais tão rapidamente que cada usuário 
parece ter acesso constante ao mainframe. Se houver vários usuários em tal sistema, o 
tempo de resposta do computador principal pode se tornar mais aparente. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.geeksforgeeks.
org/multiprogramming-in-operating-system/. 
https://www.geeksforgeeks.org/multiprogramming-in-operating-system/
https://www.geeksforgeeks.org/multiprogramming-in-operating-system/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 88
8.2 Realocação
Com a alocação individual conectada surge um problema de endereçamento para 
quaisquer rotinas de biblioteca que também podem ter que ser carregadas se os 
programas de usuário tiverem comprimentos diferentes, porque então esses programas 
de biblioteca estão localizados em endereços diferentes. Uma solução possível é 
ter uma área fixa separada para essas rotinas, mas isso resulta na fragmentação 
da memória, criando uma quantidade desnecessariamente grande de memória não 
utilizada (TANENBAUM e WOODHULL, 2008).
ANOTE ISSO
A solução mais flexível é preparar as rotinas da biblioteca de forma que a 
determinação dos locais de armazenamento que elas requerem possa ser adiada 
até o momento do carregamento. 
Os programas são preparados identificando as partes do endereço das instruções 
da máquina como endereços absolutos ou relativos. A tarefa do carregador de 
deslocamento é, portanto, adicionar um deslocamento constante às informações de 
endereço relativo (o endereço inicial de carregamento do programa) e agora salvar essas 
informações de endereço absoluto; O pré-requisito é, obviamente, que os programas 
sejam escritos como se fossem armazenados na memória começando no endereço 
zero. No momento do carregamento, cada endereço relativo é convertido em absoluto, o 
que significa que o processo de carregamento é mais demorado. O programa carregado 
não pode mais ser movido uma vez que esteja na memória principal (TANENBAUM 
e WOODHULL, 2008).
Um aumento adicional na flexibilidade é fornecido se a conversão em endereços 
efetivos não for realizada no momento do carregamento, mas apenas imediatamente 
quando o comando for executado. O pré-requisito para isso é um processador que 
permita os tipos de endereçamento correspondentes dos comandos. Para isso, uma 
unidadearitmética de endereço deve estar presente no processador, que adiciona o 
conteúdo de um registrador de endereço base ou o conteúdo do contador de programa. 
As especificações de endereço para os comandos, portanto, não são mais modificadas 
pelo carregador e o processo de carregamento é muito mais rápido. O programa ainda 
pode ser movido após o carregamento.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 89
8.3 Overlay-Technik
Para poder executar um programa que não pode ser acomodado na memória, 
incluindo seus dados, ele pode ser dividido em partes que não precisam estar presentes 
na memória o tempo todo. 
As peças que não estão na memória principal são recarregadas assim que são 
necessárias. Como a decisão de recarregar é feita dinamicamente no tempo de 
execução, isso é chamado de carregamento dinâmico. Uma parte do programa 
que estava anteriormente na memória deve ser sobrescrita (sobreposta), por isso 
esse método também é conhecido como “técnica de sobreposição” (TANENBAUM e 
WOODHULL, 2008).
O programador deve dividir um programa em partes (segmentos), que não precisam 
estar na memória principal ao mesmo tempo, porque não há possibilidade prática de 
o compilador e o vinculador fazerem isso automaticamente. Somente o programador 
pode prever a combinação em que diferentes partes do programa funcionarão juntas 
e, então, considerar uma estrutura de sobreposição apropriada. Uma estrutura 
desfavorável levará a muitos processos de carregamento lentos desnecessários. De 
acordo com (SILBERSCHATZ, 2001), uma estrutura de sobreposição consiste nos 
seguintes elementos:
• uma parte do programa residente na memória (programa raiz),
• vários subprogramas que se sobrepõem,
• dados compartilhados (comuns), que devem ser preservados de chamada para 
chamada.
A parte da memória destinada à sobreposição das seções do programa é chamada 
de área transiente. Uma técnica semelhante, que não possui um programa principal 
comum, é chamada de “encadeamento”. Módulos de programa independentes chamam 
uns aos outros e são completamente sobrepostos por eles (típico para BASIC). Se, 
devido a uma relação muito desfavorável entre o tamanho do programa e o tamanho 
da memória de trabalho, múltiplas sobreposições aninhadas se tornarem necessárias 
- dentro de um segmento de sobreposição, a sobreposição ocorre novamente, etc. - 
então a quantidade de trabalho envolvida na criação de uma estrutura de sobreposição 
eficiente pode se tornar considerável.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 90
8.4 Troca de banco de memória (troca de banco)
Com chamadas frequentes para segmentos de sobreposição, a técnica de 
sobreposição torna-se lenta. Por esta razão, o método de expansão de espaço de 
endereço simples de comutação de banco de memória é frequentemente usado, 
especialmente em sistemas menores e dedicados com microcomputadores de 8 bits.
Vários bancos de memória de até 64 Kbytes são implementados no computador. 
A qualquer momento, apenas um banco de memória é liberado e, portanto, acessível 
para programa e dados. A comutação para outro banco de memória ocorre através de 
um seletor de banco de memória (implementado como um módulo de saída paralela), 
que, por exemplo, pode ser endereçado com a ajuda de um comando de saída. Para 
fins de comunicação, uma área de memória pode ser atribuída a todos os bancos de 
memória juntos (SILBERSCHATZ, 2010).
Em sistemas multitarefa, os espaços de endereço de tarefa podem ser gerenciados 
independentemente se cada tarefa tiver seu próprio banco de memória atribuído. Ao 
mesmo tempo, porém, o número de tarefas possíveis é limitado pelos bancos de 
memória existentes. 
8.5 Gerenciamento de Memória Virtual
Fala-se de tecnologia de memória virtual quando o espaço de endereçamento da 
memória, ao qual se referem as instruções do processador, é separado do espaço de 
endereçamento real da memória principal, na qual o programa está localizado quando 
está sendo processado. O espaço de endereço ao qual as instruções do programa 
se referem é o espaço de endereço lógico. O espaço de endereço da memória real é 
o espaço de endereço físico. 
De acordo com SILBERSCHATZ et. al. (2000), os programas podem ser escritos 
independentemente do espaço de endereço físico. O espaço de endereço lógico descreve 
uma memória de trabalho imaginária que na verdade não existe, que é chamada de 
memória virtual. Esse conceito pode ser observado na representação da figura a seguir:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 91
Normalmente, o espaço de endereço lógico é maior que o espaço de endereço físico 
(geralmente muito maior). A memória virtual é mapeada para o disco. Para executar, 
um programa deve ser carregado na memória. Devido ao processamento sequencial, 
nem todas as partes do programa e, analogamente, nem toda a área de dados do 
programa são necessárias dentro de um determinado intervalo de tempo.
Portanto, é suficiente manter apenas as partes necessárias do programa e da área de 
dados na memória principal. Os programas e dados são divididos em seções individuais, 
que são carregadas na memória apenas quando necessário (quando exigido pela CPU).
O comprimento dos programas e áreas de dados não é limitado pelo tamanho real 
da memória principal. Vários programas podem ser executados ao mesmo tempo, cujo 
comprimento total excede o tamanho da memória de trabalho. Uma transformação 
(mapeamento) dos endereços lógicos em endereços físicos é necessária para processar 
os comandos individuais do programa (SILBERSCHATZ et. al., 2000).
O endereço lógico nos comandos permanece inalterado mesmo após o carregamento 
na memória de trabalho. A transformação só ocorre quando o comando é executado --> 
transformação de endereço dinâmico (DAT). Se um endereço estiver em um programa 
ou seção de dados que não esteja na memória principal, a seção correspondente será 
recarregada.
ANOTE ISSO
Uma combinação de hardware e software deve ser usada para implementar o 
gerenciamento de armazenamento virtual. Um sistema operacional especialmente 
projetado cuida de recarregar as seções de programa e dados. O pré-requisito 
básico para a implementação é a capacidade da CPU de interromper um comando 
em execução (ao recarregar) e, após o recarregamento, iniciar o comando 
novamente e executá-lo completamente. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 92
A tecnologia de memória virtual é completamente transparente para o usuário. 
Tanto o recarregamento das seções de programa e dados quanto a conversão de 
endereço ocorrem automaticamente e não precisam ser levados em consideração 
ao programar o aplicativo. A memória pode ser dividida nos seguintes elementos:
O espaço de endereço lógico é dividido em seções de tamanho variável de acordo 
com as unidades lógicas do programa (subprogramas, áreas de dados, etc.). As seções 
são chamadas de segmentos. O tamanho mínimo/máximo do segmento depende do 
respectivo sistema (normalmente: 256 bytes a 64 KB).
Segundo SILBERSCHATZ et. al. (2000), o endereço lógico consiste em 2 partes:
• Número do segmento (parte mais significativa)
• Endereço da palavra (offset, deslocamento; parte de ordem inferior; endereço 
relativo ao início do segmento).
O respectivo endereço inicial real do segmento (endereço base do segmento) é 
registrado em uma tabela de segmentos para os segmentos carregados na memória 
principal. Na operação de multiprogramação, geralmente são fornecidas tabelas 
separadas para os vários “trabalhos” para que não haja confusão com os números de 
segmentos de diferentes trabalhos. O conteúdo de um registro de tabela de segmento 
específico do trabalho deve, portanto, ser adicionado ao número do segmento antes 
que a tabela de segmentos possa ser acessada. O registro da tabela de segmentos 
deve, portanto, também ser recarregado toda vez queas tarefas são trocadas (por 
exemplo, porque uma tarefa é “deslocada” no final do intervalo de tempo). Em geral, a 
tabela de segmentos também contém informações sobre o tamanho dos segmentos 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 93
(especificação do último endereço físico do segmento ou o tamanho do segmento 
diretamente).
Além disso, informações de status e acesso são atribuídas a cada segmento na 
tabela de segmentos (detecção de segmentos não carregados, prevenção de acesso 
não autorizado). O segmento é a menor unidade de troca. Se não houver mais espaço 
de memória disponível para recarregar, um segmento existente que não é necessário 
no momento deve ser removido (“troca de segmento de demanda”). Por fim, de acordo 
com SILBERSCHATZ et. al. (2000), podemos observar alguns problemas (ao mesmo 
tempo desvantagens da segmentação):
• Fragmentação de memória (“fracionamento externo”): Existem lacunas 
desocupadas entre os segmentos na memória principal, que surgem quando um 
segmento é trocado por um segmento menor ou removido. Pode haver casos em 
que o espaço de memória contíguo disponível não seja grande o suficiente para 
acomodar um segmento a ser recarregado, mesmo que haja espaço de memória 
livre suficiente em geral. Torna-se necessária a reorganização da alocação da 
memória de trabalho pelo sistema operacional (combinando os segmentos).
• Algoritmo de substituição complicado: O próprio programa de sistema associado 
ocupa muita memória, tempo adicional necessário para execução.
ISTO ACONTECE NA PRÁTICA
O tamanho do armazenamento virtual é limitado pelo esquema de endereçamento 
do sistema do computador e a quantidade de memória secundária disponível não 
pelo número real dos locais de armazenamento principal. 
É uma técnica implementada usando hardware e software. Ele mapeia endereços 
de memória usados por um programa, chamados de endereços virtuais, em 
endereços físicos na memória do computador. 
Todas as referências de memória dentro de um processo são endereços lógicos 
que são convertidos dinamicamente em endereços físicos em tempo de execução. 
Isso significa que um processo pode ser trocado para dentro e para fora da 
memória principal de forma que ocupe lugares diferentes na memória principal em 
momentos diferentes durante a execução.
Um processo pode ser dividido em várias partes e essas partes não precisam estar 
continuamente localizadas na memória principal durante a execução. A combinação 
de conversão dinâmica de endereço em tempo de execução e uso de tabela de 
página ou segmento permite isso.
Para ler a matéria na íntegra, acesse o seguinte link: https://www.geeksforgeeks.
org/virtual-memory-in-operating-system/. 
https://www.geeksforgeeks.org/virtual-memory-in-operating-system/
https://www.geeksforgeeks.org/virtual-memory-in-operating-system/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 94
8.6 Endereçamento de página (paginação)
O espaço de endereço lógico e físico é dividido em seções de igual comprimento 
chamadas páginas. Uma página representa a unidade de troca.
Uma página é carregada ou recarregada quando necessário, ou seja, quando um 
endereço nesta página é referenciado; “paginação de demanda”. Se as páginas físicas 
ainda estiverem livres, a próxima página física livre será atribuída a uma página lógica 
a ser recarregada. Se todas as páginas físicas já estiverem ocupadas, uma página 
lógica deve ser trocada. 
Um programa pode ser fragmentado página por página na memória principal, ou 
seja, dividido nos limites da página sem considerar quaisquer limites lógicos.
Segundo OLIVEIRA et. al. (2004), a palavra endereço é o endereço relativo ao topo 
da página. Ele pode ser transferido inalterado para o endereço físico. O endereço físico 
também consiste em duas partes:
• número da página física (endereço da página);
• endereço da palavra (parte do valor inferior).
Devido ao tamanho fixo da página, o limite entre o endereço da palavra e o número da 
página está sempre no mesmo ponto. O número da página física deve ser determinado 
a partir do número da página lógica por meio da transformação de endereço.
ANOTE ISSO
A transformação de endereços só ocorre quando um comando é executado, por 
isso é chamada de tradução dinâmica de endereços. Isso geralmente é feito usando 
uma tabela de tradução de endereços (memória de tradução de endereços, buffer 
de tradução) que contém os pares de alocação (número de página lógica, número 
de página física) para as páginas na memória principal.
De acordo com SILBERSCHATZ et. al. (2000), as chamadas memórias associativas 
(CAM - Content Addressable Memory) são particularmente vantajosas para este 
propósito e são acessadas não através de um endereço, mas através do conteúdo 
da célula. Uma palavra de pesquisa (chave) é criada em vez do endereço e o resultado 
é uma exibição de ocorrência, possivelmente nenhuma ocorrência. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 95
A partir desse contexto, podemos apontar diversas vantagens do método de 
paginação (em comparação com a segmentação):
• sem fragmentação de memória, qualquer página física livre pode conter qualquer 
página lógica.
• não há necessidade de procurar um espaço correspondente na memória para 
carregar uma nova página. 
• torna o software fácil de executar a paginação.
• significativamente menos tempo gasto na transferência entre o armazenamento 
secundário e a memória principal.
• geralmente pode haver mais programas ativos na memória principal ao mesmo 
tempo. (A memória de trabalho não é ocupada por seções do programa que 
raramente são usadas ou não são usadas).
8.6.1 Algoritmos de paginação (comutação de segmento)
Uma característica da tecnologia de memória virtual é o carregamento ou 
recarregamento de seções do programa (páginas ou segmentos) conforme necessário 
durante a execução do programa. 
O pré-requisito básico para sua implementação é, portanto, a capacidade da CPU 
de interromper um comando em execução (se uma página ou segmento precisar ser 
recarregado) e, após o recarregamento, iniciar o comando novamente e executá-lo 
por completo. Existem várias estratégias para selecionar a página (ou segmento) que 
deve ser removida da memória principal ao mudar de página.
A estratégia mais comum é selecionar a página (ou segmento) que não é acessada 
há mais tempo: “Least Recent Used” (LRU). Aqui assume-se que a página que não foi 
usada por mais tempo provavelmente também não será necessária no futuro.
Páginas ou segmentos que não foram gravados, ou seja, cujo conteúdo não foi 
alterado, não precisam ser salvos de volta no armazenamento secundário, mas podem 
ser substituídos imediatamente pela nova página. Isso resulta em um encurtamento 
do tempo de mudança de página.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 96
CAPÍTULO 9
GERENCIAMENTO DE ARQUIVOS
Parece óbvio hoje em dia, mas tanto os programas aplicativos quanto os dados de 
documentos são armazenados como arquivos em dispositivos de armazenamento, como 
discos rígidos, e podem ser abertos, lidos e gravados conforme necessário. Uma das 
funções fornecidas pelo sistema operacional é o sistema de arquivos, como determinar o 
formato de salvamento de arquivos e armazenar arquivos em uma estrutura hierárquica. 
Os arquivos não podem receber o mesmo nome na mesma pasta ao salvar. O sistema 
de arquivos determina como esses arquivos são gerenciados. Além de armazenar 
arquivos, o sistema de arquivos também gerencia a criptografia e as permissões de 
leitura/gravação (TANENBAUM, 2003).
ANOTE ISSO
Os sistemas de arquivos têm padrões diferentes para cada sistema operacional, 
como Windows, Mac, UNIX etc. Padrões diferentes têm limites diferentes de 
unidades e tamanhos de arquivo que podem ser manipulados, e o gerenciamento 
de arquivos também é uma função do sistema operacional.Muitos arquivos são armazenados em discos magnéticos. Por exemplo, aprenderemos 
como gerenciar a localização física de um arquivo chamado index.html em um disco 
magnético (usado para todos os dispositivos). Restringir o acesso aos arquivos também 
é uma função importante do SO na perspectiva de prevenir operações errôneas e 
fraudes. Você também aprenderá sobre suas configurações.
Ao longo desse capítulo iremos discutir sobre os princípios do gerenciamento de 
arquivos.
9.1 O que é gerenciamento de arquivos?
O gerenciamento de arquivos é uma das principais funções que o SO se encarrega 
e tem as seguintes funções. Um sistema de gerenciamento de arquivos implementa 
essas funções como software (DEITEL et. al. 2005).
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 97
Um sistema de arquivos é a funcionalidade necessária para gerenciar e manipular 
dados armazenados em um dispositivo de armazenamento. É uma das funções 
fornecidas pelo sistema operacional, e a maioria dos sistemas operacionais gerencia 
arquivos usando o sistema de arquivos. Um arquivo é uma informação armazenada 
em um dispositivo de armazenamento. Os arquivos incluem software e dados criados 
pelo usuário, programas de TV gravados em gravadores HDD e filmes gravados em 
DVD. Normalmente, quando você grava ou reproduz programas de TV em um gravador 
HDD, está usando o sistema de arquivos sem perceber (DEITEL et. al. 2005).
ANOTE ISSO
Um sistema de arquivos também fornece uma interface para trabalhar com 
arquivos. Armazene arquivos em uma hierarquia e rotule-os para que estejam 
disponíveis quando você precisar deles. Sem um sistema de arquivos, os dados não 
podem ser salvos corretamente ou o local onde eles são salvos é perdido.
Cada sistema operacional usa um sistema de arquivos diferente, mas a maioria dos 
sistemas operacionais tem um sistema de arquivos, exceto para sistemas operacionais 
específicos.
A partir desse contexto, de acordo com OLIVEIRA et. al. (2004)., um arquivo (file) 
é um bloco de dados e programas, e seu conteúdo varia, como frases criadas com 
um processador de texto, programas e imagens tiradas com uma câmera. É comum 
salvar em um dispositivo de armazenamento auxiliar, como um disco rígido disco. 
Não há restrições rígidas sobre como nomear arquivos, mas para arquivos usados na 
Internet, é mais seguro usar apenas caracteres alfanuméricos de meia largura. Uma 
extensão é uma string específica que descreve a natureza do arquivo, por exemplo:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 98
Ao salvar arquivos em um disco rígido, você pode salvá-los como estão, mas se salvar 
um grande número de arquivos, será difícil encontrar o arquivo desejado posteriormente. 
Um disco rígido é uma caixa muito grande. Você pode imaginar o que acontecerá se 
você jogar arquivos nele um após o outro. 
ISTO ACONTECE NA PRÁTICA
O gerenciamento de arquivos é um dos recursos básicos e importantes do sistema 
operacional. O sistema operacional é usado para gerenciar arquivos do sistema do 
computador. Todos os arquivos com extensões diferentes são gerenciados pelo 
sistema operacional.
Um arquivo é uma coleção de informações específicas armazenadas na memória 
do sistema do computador. O gerenciamento de arquivos é definido como o 
processo de manipulação de arquivos no sistema de computador. Esse recurso 
inclui o processo de criação, modificação e exclusão de arquivos.
Para ler a matéria na íntegra, acesse o seguinte link: https://
princeabhishek410.medium.com/understanding-file-management-system-
in-operating-system-4c7fbfc306f2. 
https://princeabhishek410.medium.com/understanding-file-management-system-in-operating-system-4c7fbfc306f2
https://princeabhishek410.medium.com/understanding-file-management-system-in-operating-system-4c7fbfc306f2
https://princeabhishek410.medium.com/understanding-file-management-system-in-operating-system-4c7fbfc306f2
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 99
De acordo com SILBERSCHATZ (2010), uma das funções do sistema de arquivos 
é a formatação (inicialização). Formatar (formatação lógica) significa dividir a área 
de armazenamento de acordo com o sistema de arquivos do sistema operacional 
que você está usando e definir números, não apagar os dados. A formatação torna 
o dispositivo de armazenamento reconhecido e utilizável. As divisões criadas pelo 
formato são chamadas de clusters. Um cluster é a menor unidade para armazenar 
arquivos e, quanto menor o tamanho do cluster, menos espaço é desperdiçado.
ANOTE ISSO
Em sistemas legados, o sistema operacional tinha funções de gerenciamento de 
registros (também conhecido como gerenciamento de dados), mas nos sistemas 
abertos convencionais de hoje, o sistema operacional gerencia até o sistema de 
arquivos. Uma extensão de arquivo como txt ou jpeg indica o aplicativo.
A partir desse contexto, de acordo com DEITEL et. al. (2005), podemos relacionar 
os seguintes recursos do sistema de arquivos:
A função básica de um sistema de arquivos é o gerenciamento de arquivos, mas 
outros sistemas de arquivos gerais também possuem as seguintes funções.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 100
9.1.1 Designação lógica de arquivos
O disco contém muitos arquivos como index.html e logo.gif. Você precisa gerenciar 
onde esses arquivos estão fisicamente localizados no disco. As informações no arquivo 
mudam dependendo de operações como criação, atualização e descarte de arquivo. 
O gerenciamento de arquivos o gerencia.
Embora a explicação aqui seja para discos, o gerenciamento de arquivos é aplicado 
a todos os dispositivos de armazenamento externo, como SSDs e memória USB. Se 
você conectar seu smartphone, câmera etc. ao seu computador, poderá operar esses 
arquivos do seu computador, que também é função do sistema de gerenciamento de 
arquivos (TANENBAUM, 2003).
9.1.2 Gerenciamento de armazenamento físico
Realiza divisão de partições e gerenciamento de setores em discos magnéticos, 
que são mídias de armazenamento de arquivos. Ele também tem a capacidade de 
compactar e armazenar arquivos.
Os direitos de acesso (leitura, gravação, execução) a um arquivo podem ser 
especificados para o proprietário, grupo e terceiros do arquivo (TANENBAUM, 2003).
9.1.3 Manutenção/recuperação de arquivos
Esta é uma função para recuperar o status do arquivo salvo anteriormente quando 
o arquivo é destruído ou a atualização falha. Esse recurso é especialmente importante 
para bancos de dados, mas é mais um recurso de sistema de gerenciamento de banco 
de dados do que um sistema operacional.
9.1.4 Cluster: local de armazenamento de arquivos físicos
Um disco registra, lê e grava dados em unidades de setores nos quais trilhas 
concêntricas são divididas em comprimentos fixos. No entanto, como a capacidade de 
um setor é de 512 bytes e o tamanho do arquivo é muito maior que isso, é inadequado 
gerenciar arquivos em unidades de setores. Portanto, vários setores são agrupados 
em clusters e os clusters e arquivos são relacionados.
9.1.5 Relacionamento entre clusters e arquivos
Um cluster é a menor unidade lógica de disco que pode ser alocada para arquivos. 
Um arquivo pode ser atribuído a um cluster ou a vários clusters, e vários arquivos não 
podem ser atribuídos a um cluster (TANENBAUM, 2003).
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 101
9.1.6 Relação entre clusters e setores
Quanto à relação entre clusters e setores, os clusters são tratados logicamente 
como se fossem setores consecutivos, mas fisicamente não são necessariamente 
setores consecutivos (porém a velocidade de acesso é melhor se forem consecutivos).
Como um arquivo ocupa pelo menos um cluster, reduzir ao máximo o tamanho 
do cluster (número de setores) permite o uso eficaz da capacidade. Por outro lado, 
quanto menor o número de clusters quecompõem um arquivo, menor a sobrecarga 
de gerenciamento e mais rápida a velocidade de processamento (TANENBAUM, 2003).
Os acessos ao disco, como paginação no método de memória virtual, geralmente 
usam unidades de 4 kB, mas, nesse caso, 1 cluster é de 8 setores (8 [setores] x 512 
[bytes/setor] = 4 kB).
9.1.7 Configurando direitos de acesso a arquivos e pastas
Os direitos de acesso referem-se a quais arquivos (pastas e diretórios) têm permissão 
para ter que tipo de acesso a quem. As configurações são ligeiramente diferentes 
dependendo do sistema operacional.
Segundo TANENBAUM (2003), existem três direitos de acesso:
• r: Leitura.
• w: Gravação.
• x: Execução (eXecute) - pode executar programas, mas não pode ler ou escrever.
Descrito na ordem de r→w→x, - indica que nenhuma autoridade é dada.
ANOTE ISSO
rwx: concede todos os privilégios.
rx: pode ler e executar, mas não pode escrever (atualizar).
rw-: pode ler e escrever (x é irrelevante se não for um programa).
--x: não pode ler e escrever, mas é um programa pode apenas executar.
---: não pode ser acessado.
9.2 Pastas e arquivos
Os programas que compõem o software e os dados criados pelos processadores 
de texto são salvos como arquivos, lidos e gravados conforme necessário. Gerenciar 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 102
isso também é um grande trabalho do sistema operacional (TANENBAUM, 2003). Por 
exemplo, em um computador pessoal, os arquivos são distinguidos pelo nome e o local 
para salvá-los é designado por uma pasta (diretório). Arquivos com o mesmo nome 
não podem ser criados na mesma pasta. No sistema operacional baseado em UNIX, 
a pasta superior é chamada raiz, representada por /, e todas as pastas e arquivos 
estão contidos nela. No Windows, cada hardware, como um disco rígido ou memória 
USB, recebe um número de unidade de um caractere alfabético, como A:, B:, C:, D:, 
E:, ... e uma raiz é criada para cada um. O símbolo raiz também usa “\” em vez de “/”.
Pastas diferentes podem ter arquivos com o mesmo nome, portanto, a maneira 
mais confiável de especificar um arquivo é seguir o nome da pasta desde a raiz para 
indicar onde ele está localizado, como segue o exemplo a seguir: 
A parte antes do nome do arquivo às vezes é chamada de caminho, nome do 
caminho e assim por diante (a etimologia é caminho). Um nome de arquivo no qual 
todos os nomes de pastas são especificados da raiz dessa maneira é chamado de 
nome de caminho completo.
O Windows usa “\” em vez de “/” como delimitador.
9.3 Sistema de gerenciamento de arquivos
Infelizmente, sistemas operacionais diferentes têm sistemas de gerenciamento de 
arquivos diferentes. No Windows, é usado um sistema de gerenciamento de arquivos 
chamado FAT (File Allocation Table) e NTFS (NT File System), que é um sistema 
avançado (DEITEL et. al. 2005).
Existem HFS+ para Mac, FFS para UNIX e VTOC para computadores de uso geral. 
Este tópico trará informações básicas sobre a relação entre nomes de arquivos e 
localizações físicas no disco (números de setor onde eles são armazenados).
9.3.1 Estrutura FAT
No FAT, as informações são armazenadas no disco. Ao acessar este disco, o SO 
obtém essas informações, lê e grava arquivos. E quando o arquivo é criado ou excluído, 
essas informações são reescritas.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 103
De acordo com TANENBAUM (2003), o FAT (File Allocation Table) foi desenvolvido 
pela Microsoft e é um sistema de arquivos adotado do MS-DOS antes do Windows. 
Ele literalmente registra as informações de posição de um arquivo e foi originalmente 
planejado para lidar com pequenos arquivos de cerca de 500 KB.
Depois disso, conforme o tamanho do arquivo aumentou, as funções foram 
expandidas e evoluíram para “FAT12”, “FAT16” e “FAT32”. Quanto maior o número, 
maiores os limites de tamanho de unidade e arquivo. Atualmente, FAT16 e FAT32 
são usados principalmente. O FAT16 pode ser usado do MS-DOS para Windows 3.1, 
Windows 95, Windows NT, etc.
FAT32 pode ser usado pelos seguintes sistemas operacionais: Windows98, 
WindowsMe, Windows2000, WindowsXP, WindowsVista, Windows7, MacOS, etc. 
Também pode ser acessado no MacOS, portanto, também é usado como um disco 
para armazenar arquivos compartilhados.
9.3.1.1 MBR (Master Boot Recode - Registro Mestre de Inicialização)
O MBR é armazenado no setor 0 do disco. Um disco pode ser dividido em várias 
partições, como C: e D:. 
O MBR armazena informações como o número do primeiro setor e o número de 
setores de cada partição.
9.3.1.2 DPB (Device Parameter Block - Bloco de parâmetros do dispositivo)
Também chamado de setor de inicialização. As informações sobre a partição 
correspondente são armazenadas.
Como uma partição é tratada como uma unidade, as especificações do disco, 
como o número de setores em uma trilha, o número de bytes em um setor, o número 
de cabeçotes e o número de setores em um cluster são armazenados. Ele também 
armazena o número da unidade física e o nome do sistema de gerenciamento, como 
“FAT16”, que são específicos da partição (TANENBAUM e WOODHULL, 2008).
9.3.1.3 Diretório raiz
Para cada arquivo registrado nesta partição, os atributos do arquivo (arquivo do 
sistema, somente leitura, identificador etc.) e o histórico (data de criação, data de 
atualização etc.) são armazenados. Ele também armazena o primeiro número de cluster 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 104
onde o arquivo existe, que associa o nome do arquivo à posição de gravação no disco 
(SILBERSCHATZ, 2001).
O diretório raiz fornece o primeiro número de cluster no qual o arquivo é armazenado, 
mas se o arquivo não couber em um cluster, ele será manipulado logicamente 
armazenando o próximo número de cluster.
9.3.2 NTFS
O FAT foi desenvolvido pela Microsoft e evoluiu de FAT12 (primeiro MS-DOS) para 
FAT16 (MS-DOS 3.x) para FAT32 (Windows95). O NTFS (NT File System) foi desenvolvido 
para o sistema operacional Windows NT e agora é o sistema padrão do Windows. O 
NTFS tem as seguintes vantagens sobre o FAT.
De acordo com SILBERSCHATZ (2001), no FAT16, o tamanho de uma partição era 
limitado a um máximo de 2 GB’, mas no FAT32, o número máximo de clusters é 2 32 
= cerca de 43, para que partições de até 2 TB possam ser gerenciadas. Além disso, 
a função de compactação agora pode ser aplicada a arquivos e pastas individuais, 
aumentando a capacidade aparente do disco.
Os direitos de acesso podem ser definidos e criptografados para cada arquivo ou 
pasta individual. A desvantagem do NTFS é que ele é incompatível com sistemas 
operacionais diferentes do Windows. O FAT é um produto da Microsoft, mas os arquivos 
no formato FAT podem basicamente ser manipulados por sistemas de gerenciamento 
de arquivos em sistemas operacionais diferentes do Windows, como MacOS e UNIX. 
Você precisa fazer algum trabalho pesado e, mesmo assim, às vezes não é possível.
De acordo com SILBERSCHATZ (2010), o NTFS (NT File System) possui uma função 
de registro no diário que salva informações como o histórico de modificação de arquivos 
e é um sistema mais sofisticado e robusto que o FAT. Ele também possui uma função 
de compactação e uma função de criptografia arquivo por arquivo. FAT e NTFS são 
únicos, pois a letra da unidade é visível para o usuário. Você pode ver no Explorer que 
o disco rígido tem um nome como unidade C e pode ver rapidamente qual unidade 
possui qual arquivo.
9.3.3 HFS+
Foi introduzido no Mac OS 8.1 a partir de 1998 como uma versão estendida do 
HFS (Hierarchical File System) usado desde 1985. A capacidade que pode ser tratada 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 105
como um arquivo é de 8EB (exabyte) e suporta arquivos grandes (observe que 1 EB 
é 1 milhão de TB).
É um sistema robusto que adiciona uma função de journaling ao HFS com uma 
estrutura de diretórios, além de ser possívelcriptografar cada arquivo. No entanto, ele 
suporta apenas MacOS, portanto, mesmo Macs de inicialização dupla não podem ser 
acessados a partir do Windows.
De acordo com SILBERSCHATZ et. al. (2000), o HFS+, também conhecido como 
HFS plus, Mac OS Extended ou HFS Extended, é o principal sistema de arquivos com 
registro em diário da série Mac OS X desde o lançamento do Mac OS 8.1 em 1998. 
Quando a Apple lançou o macOS High Sierra em 2017, eles substituíram o HFS+ pelo 
APFS (Apple File System), um formato de disco otimizado para SSDs. No entanto, o 
HFS+ continua sendo um formato de disco Mac popular devido à sua compatibilidade. 
Segundo OLIVEIRA et. al. (2004), seguem as características de suporte do HFS+ para 
alguns sistemas operacionais:
• Todos os sistemas operacionais Mac desde Mac OS 8.1 (suporte de leitura e 
gravação).
• Linux (somente leitura).
• Windows (não suportado).
Você não pode ler ou gravar em um disco rígido externo formatado para Mac em 
um PC Windows porque sua unidade Mac geralmente é formatada com HFS+ ou 
APFS, que é incompatível com o Windows.
9.3.4 APFS
APFS (Apple File System) é um novo sistema de arquivos anunciado pela Apple 
em 2016. MacOS, iOS, sistema operacional de relógio e outros sistemas operacionais 
desenvolvidos pela Apple estão programados para mudar para APFS no futuro.
O APFS é otimizado para SSD, memória flash etc., e a velocidade de cópia do 
arquivo é (aparentemente) mais rápida. Ele também apresenta instantâneos e recursos 
avançados de criptografia (TANENBAUM, 2003).
9.3.5 XFS
De acordo com Wong (2017), o XFS é um sistema de arquivos com journaling de 64 
bits inicialmente desenvolvido pela Silicon Graphics. Ele foi projetado para E/S paralela 
com base em grupos de alocação. Isso permite que um sistema seja dimensionado 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 106
com base no número de threads de E/S e na largura de banda do sistema de arquivos. 
Ele foi projetado para abranger vários dispositivos de armazenamento. O XFS inclui 
seu próprio gerenciador de volume (SILBERSCHATZ et. al., 2000).
O XFS é um sistema de arquivos com registro em diário de 64 bits que começou a 
ser desenvolvido em 1993 e é usado principalmente no Linux. Os sistemas de arquivos 
UNIX são caracterizados por armazenar arquivos em uma estrutura hierárquica, e 
esse método também foi introduzido no Windows FAT e NTFS. 
Entre eles, o XFS é estável porque é um formato bastante antigo, mesmo no UNIX. 
Ele suporta um sistema de registro no diário, por isso é altamente robusto, mas uma 
vez excluídos os arquivos não podem ser restaurados.
ANOTE ISSO
O sistema de arquivos é particionado em grupos de alocação que possuem sua 
própria alocação e gerenciamento de espaço livre. Os arquivos são alocados em 
extensões usadas que usam blocos contíguos quando possível. O número de 
extensões geralmente aumenta à medida que o tamanho do arquivo aumenta. O 
XFS pode lidar com tamanhos de bloco variáveis, arquivos esparsos e instantâneos.
O XFS usa um sistema de registro para rastrear atualizações. Esse processo pode 
ser síncrono ou assíncrono em relação às atualizações de arquivo. O primeiro é mais 
ou menos sujeito a problemas quando ocorrem erros, mas o último é mais rápido e 
eficiente quando várias tarefas e arquivos estão envolvidos. O log pode ser armazenado 
em um dispositivo separado para melhorar ainda mais a confiabilidade. O XFS possui 
API de migração de dados (DMAPI) que pode aproveitar os serviços de gerenciamento 
de armazenamento hierárquico (WONG, 2017).
Um recurso notável do XFS é o Guaranteed Rate I/O (GRIO). Isso permite que 
os aplicativos reservem largura de banda. Isso pode ser muito útil em aplicativos 
embarcados. O sistema de arquivos calcula o desempenho disponível e ajusta sua 
operação de acordo com as reservas existentes (WONG, 2017).
9.3.6 BTRFS
O sistema de arquivos BTRFS é baseado em uma árvore B copy-on-write (COW). De 
acordo com WONG (2017), um dos objetivos da criação do BTRFS é permitir que o Linux 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 107
dimensionasse para o armazenamento que estará disponível. O dimensionamento não 
é apenas abordar o armazenamento, mas também significa ser capaz de administrá-lo 
e gerenciá-lo com uma interface limpa que permite que as pessoas vejam o que está 
sendo usado e o torne mais confiável.
O BTRFS também é um sistema de armazenamento baseado em extensão como 
o XFS. É eficiente em termos de espaço para arquivos pequenos. Ele lida com vários 
dispositivos de armazenamento e fornece suporte para RAID striping, mirroring e 
striping+mirroring. O BTRFS também reconhece a unidade flash com suporte direto 
para as operações TRIM/descarte. O sistema oferece suporte a instantâneos de 
compactação, graváveis e somente leitura, juntamente com backup incremental 
eficiente. O sistema de subvolume permite raízes separadas do sistema de arquivos 
interno, bem como implementações do sistema de cotas. A desduplicação fora de 
banda é suportada. Esses recursos podem ser muito úteis em sistemas embarcados 
de alta disponibilidade.
O BTRFS possui informações mínimas armazenadas em locais fixos. Esta é uma 
vantagem para a migração ext2/3/4, pois a conversão no local é possível, desde que haja 
espaço livre suficiente disponível. Além disso, o BTRFS é o sistema de armazenamento 
subjacente do Ceph, um sistema de arquivos em cluster de código aberto.
ISTO ESTÁ NA REDE
O macOS usa o Apple File System (APFS), que substituiu um sistema de arquivos 
herdado do clássico mac antigo chamado HFS Plus (HFS+). A Apple também usa o 
termo “Mac OS Extended” para HFS+. 
O HFS Plus é um sistema de arquivos rico em metadados e que preserva 
maiúsculas e minúsculas, mas (geralmente) não diferencia maiúsculas de 
minúsculas. Devido às raízes Unix do macOS, as permissões Unix foram 
adicionadas ao HFS Plus. As versões posteriores do HFS Plus adicionaram o 
registro no diário para evitar a corrupção da estrutura do sistema de arquivos e 
introduziram várias otimizações nos algoritmos de alocação em uma tentativa 
de desfragmentar os arquivos automaticamente sem a necessidade de um 
desfragmentador externo.
Para ler a matéria na íntegra, acesse o seguinte link: https://
princeabhishek410.medium.com/understanding-file-management-system-
in-operating-system-4c7fbfc306f2. 
https://princeabhishek410.medium.com/understanding-file-management-system-in-operating-system-4c7fbfc306f2
https://princeabhishek410.medium.com/understanding-file-management-system-in-operating-system-4c7fbfc306f2
https://princeabhishek410.medium.com/understanding-file-management-system-in-operating-system-4c7fbfc306f2
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 108
CAPÍTULO 10
GERENCIAMENTO 
DE ENTRADA/SAÍDA
A entrada/saída para os dispositivos de entrada/saída é muito lenta em comparação 
com a velocidade de processamento da CPU e o processamento é muito complicado. 
Uma das razões para desenvolver um sistema operacional era evitar colocar uma carga 
excessiva sobre os programadores que desenvolvem software aplicativo. Inicialmente, 
o controle de entrada/saída era realizado pela CPU, mas para reduzir a carga sobre 
a CPU, o método foi alterado para confiar o controle de entrada/saída ao dispositivo 
de controle de entrada/saída. Além disso, foi adotado o método de acesso direto à 
memória (DMA - Direct Memory Access), no qual a unidade de controle de entrada/
saída realiza a leitura e a escrita dos dados na memória principal (SILBERSCHATZ, 
2010).
Um computador possui canal de entrada/saída (simplesmente chamado de canal) 
e controla o dispositivo de controle de entrada/saída por deste recurso. O programa 
do sistema operacional que controla a entrada/saída está localizado entre o programa 
aplicativo e o dispositivo de entrada/saída e consiste em uma parte que não depende 
do dispositivo de entrada/saída e umaparte específica do dispositivo de entrada/saída.
Para executar a entrada/saída de forma eficiente, vários dispositivos foram 
concebidos. Um deles é o buffer. Por exemplo, quando um programa aplicativo emite 
uma solicitação de saída, o sistema operacional grava os dados em um buffer e deixa 
a saída real para o dispositivo de saída para o controlador de E/S, de modo que a 
execução do programa aplicativo seja paralela à saída para o dispositivo de saída. 
Além disso, a entrada/saída para o dispositivo de armazenamento externo é realizada 
por meio de uma memória intermediária de alta velocidade (cache, que é diferente do 
cache do dispositivo de armazenamento principal), permitindo um processamento de 
entrada/saída mais rápido. Por exemplo, se os dados de I/O anteriores forem deixados 
no cache e as solicitações de I/O subsequentes forem atendidas com os dados no 
cache, o processamento de I/O será muito rápido (SILBERSCHATZ, 2010).
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 109
ANOTE ISSO
Uma função para controlar a entrada/saída de dados para dispositivos de entrada, 
como teclados e mouses, e dispositivos de saída, como impressoras e monitores. O 
sistema operacional gerencia os dispositivos de E/S para que funcionem de maneira 
correta e eficiente. Além disso, quando a operação de entrada/saída é concluída, 
uma interrupção de entrada/saída é gerada.
O gerenciamento de dispositivos de entrada/saída refere-se ao gerenciamento de 
entrada/saída entre o computador e os dispositivos de entrada/saída. De acordo com 
SILBERSCHATZ (2001), o método de entrada/saída inclui os seguintes elementos:
A partir desse contexto, podemos relacionar que o gerenciamento de entrada/saída 
é o gerenciamento de entrada/saída entre o computador e os dispositivos de entrada/
saída. Características incluem:
• Ele faz a mediação dos métodos de E/S padrão entre os sistemas operacionais 
e o processamento específico do dispositivo. Um driver de dispositivo é um 
programa que serve como um adaptador para processamento exclusivo de 
cada dispositivo.
• Ao passar os dados por um buffer em vez de inserir/sair dados diretamente, 
o processamento paralelo do corpo principal do computador e do dispositivo 
de entrada/saída é executado para melhorar o desempenho. Um buffer é um 
local onde os dados são armazenados temporariamente, e a área para o buffer 
é chamada de buffer pool.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 110
• Melhorar o desempenho passando dados de entrada/saída de um dispositivo 
de baixa velocidade, como uma impressora, por meio de um dispositivo de 
armazenamento externo de alta velocidade. Este método é chamado de spooling.
SILBERSCHATZ et. al. (2000), apresenta que o gerenciamento de entrada/saída 
(gerenciamento de E/S) é uma função do sistema operacional que gerencia a entrada/
saída entre o computador e os dispositivos de entrada/saída. Como a operação do 
dispositivo de entrada/saída é muito lenta em comparação com a velocidade de 
processamento da CPU, quando ocorre um comando de entrada/saída, a informação 
é passada para o controlador de entrada/saída e enquanto o controlador de entrada/
saída está executando a entrada/saída, a CPU pode, a eficiência geral é melhorada. 
Isso é feito com gerenciamento de tarefas em um ambiente multitarefa.
Enquanto o gerenciamento de tarefas visa a CPU, o gerenciamento de entrada/
saída se concentra no processamento de entrada/saída.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 111
10.1 Buffering
O buffer é um método de melhorar o desempenho, permitindo que o computador 
e os dispositivos de entrada/saída processem em paralelo, passando por um buffer. 
Um buffer (área de armazenamento) é uma área alocada na memória para entrada/
saída (SILBERSCHATZ, 2010).
Nos sistemas operacionais, o buffer é uma técnica usada para melhorar o desempenho 
das operações de E/S do sistema. Basicamente, o buffer no sistema operacional é um 
método de armazenar dados em um buffer ou cache temporariamente, esses dados em 
buffer podem ser acessados mais rapidamente em comparação com a fonte original 
dos dados. Em um sistema de computador, os dados são armazenados em vários 
dispositivos, como discos rígidos, fitas magnéticas, discos ópticos e dispositivos de 
rede. No caso, quando um processo requer a leitura ou gravação de dados de um desses 
dispositivos de armazenamento, ele deve aguardar enquanto o dispositivo recupera ou 
armazena os dados. Este tempo de espera pode ser muito alto, especialmente para 
dispositivos lentos ou com alta latência.
Esse problema pode ser resolvido pelo buffer. O buffer fornece uma área de 
armazenamento temporário, que pode armazenar dados antes de serem enviados 
ou recuperados do dispositivo de armazenamento. Quando o buffer está totalmente 
ocupado, os dados são enviados para o dispositivo de armazenamento em lote, o que 
reduz o número de operações de acesso necessárias e, portanto, melhora o desempenho 
do sistema.
ISTO ESTÁ NA REDE
O principal objetivo do buffer é realizar a modelagem de tráfego, para organizar um 
grande número de E/S de pequena escala em um pequeno número estável de E/S 
de grande escala, de modo a reduzir o número de respostas. 
Em outras palavras, o buffer é usado para equilibrar a velocidade de processamento 
em ambas as extremidades do sistema. Por exemplo, você não pode gravar o disco 
rígido com um pouco de dados, mas acumular uma certa quantidade de dados e 
escrevê-los juntos em um bloco. 
Para ler a matéria na íntegra, acesse o seguinte link: https://interviewnoodle.
com/the-fundamental-knowledge-of-system-design-6-ff53c28d917. 
https://interviewnoodle.com/the-fundamental-knowledge-of-system-design-6-ff53c28d917
https://interviewnoodle.com/the-fundamental-knowledge-of-system-design-6-ff53c28d917
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 112
A partir desse contexto, de acordo com SILBERSCHATZ et. al. (2000), podemos 
relacionar alguns motivos para a aplicação do buffering em sistemas operacionais, 
como segue a seguir:
Segundo SILBERSCHATZ et. al. (2000), nos sistemas operacionais, existem os três 
tipos de técnicas de buffering: 
• Buffer único
• Buffer duplo
• Buffer Circular
O buffer único é o buffer mais simples que o sistema operacional pode suportar. 
No caso de buffer único, quando um processo emite uma solicitação de I/O, o sistema 
operacional atribui um buffer (ou cache) na poção do sistema da memória principal 
para a operação. Em seguida, as transferências de entrada são feitas para o buffer e 
movidas para o espaço do usuário quando necessário.
O buffer duplo é uma variante estendida do buffer único. Nesse tipo de buffer, um 
processo pode transferir dados de ou para um buffer enquanto o sistema operacional 
remove ou preenche o outro. Portanto, o buffer duplo tem dois buffers de sistema 
em vez de um.
Já o buffer circular é usado para resolver os problemas associados à técnica de 
buffer duplo. Às vezes, o buffer duplo torna-se insuficiente, quando o processo executa 
rajadas rápidas de E/S. No buffer circular, cada buffer individual atua como uma unidade. 
Ou seja, quando mais de dois buffers são usados, é chamado de buffer circular. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 113
SILBERSCHATZ (2001), apresenta algumas vantagens da utilização do Buffer:
Por fim, de acordo com OLIVEIRA et. al. (2004), podemos relacionar algumas 
limitações do Buffer, como segue na representação a seguir:
10.2 Spooling
O Spooling é um mecanismo que permite que os dispositivos de entrada/saída 
operem em paralelo independentemente da unidade de processamento (CPU). Ou seja, 
se trata de um método para melhorar o desempenho passando dados de entrada/
saída de um dispositivo de baixa velocidade, como uma impressora, por meio de um 
dispositivo de armazenamentoexterno de alta velocidade.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 114
O spooling aumenta o desempenho geral do sistema transferindo dados entre 
o armazenamento principal e os dispositivos de E/S mais lentos por meio do 
armazenamento auxiliar. Por exemplo, em vez de enviar diretamente os resultados do 
processamento do trabalho para uma impressora lenta, é possível enviar o resultado 
para um disco magnético de alta velocidade ou outra memória auxiliar e, em seguida, 
enviá-lo posteriormente usando um programa de serviço de saída dedicado. anel. O 
spooling, que salva temporariamente a saída da impressora no dispositivo de disco 
magnético, é útil para melhorar o rendimento (DEITEL et. al. 2005).
A partir desse contexto, de acordo com TANENBAUM (2003), o spooling é o 
armazenamento temporário de dados para uso e execução por um dispositivo, 
programa ou sistema. Os dados são transmitidos e mantidos na memória ou outro 
armazenamento volátil até que o software ou o computador solicite sua execução. 
Na maioria dos casos, o spool é mantido na memória física, buffers ou interrupções 
específicas do dispositivo de E/S no computador.
O spool é processado em ordem crescente, usando um algoritmo FIFO (primeiro 
a entrar, primeiro a sair). 
ANOTE ISSO
Spooling é o processo de armazenamento de dados de várias tarefas de E/S em 
um buffer. Esse buffer é uma memória específica ou seção do disco rígido que os 
dispositivos de E/S podem acessar.
Um sistema operacional executa as seguintes tarefas em um ambiente distribuído:
• Controla o spool de dados para dispositivos de entrada/saída com diferentes 
velocidades de acesso a dados.
• Mantém o buffer de spooling, que atua como um espaço de armazenamento 
de dados enquanto o dispositivo mais lento os recupera.
• O procedimento de spool preserva a computação paralela, pois um computador 
pode executar entrada/saída em sequência paralela.
10.3 Taxa de transferência
A taxa de transferência é a quantidade de trabalho que um sistema de computador 
processa em um determinado período de tempo. É a quantidade de trabalho por unidade 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 115
de tempo e é um dos índices de avaliação que medem o poder de processamento 
de um sistema de computador do ponto de vista do usuário. A taxa de transferência 
pode ser melhorada por multiprogramação etc. (TANENBAUM, 2003).
10.4 Método de controle de entrada/saída
O método de controle de entrada/saída refere-se a um método para controlar a 
transferência de dados entre o “dispositivo de entrada/saída” e a “CPU, memória 
principal”. Existem três tipos:
O Método de controle direto, também chamado de método de controle de programa, 
a CPU controla diretamente a operação dos dispositivos de entrada/saída. Isso não é 
adequado para multiprogramação. A razão para isso é que o processador transfere dados 
entre a memória principal e o dispositivo de entrada/saída por meio de registradores 
sempre que ocorre uma solicitação de entrada/saída. A CPU estará ocupada até que 
a entrada/saída seja finalizada.
O sistema DMA (acesso direto à memória), se trata de um circuito dedicado chamado 
controlador DMA que é colocado na CPU e o dispositivo de entrada/saída controla a 
operação do dispositivo de entrada/saída em vez da CPU. Isso permite a operação 
paralela da CPU e dos dispositivos de entrada/saída (TANENBAUM, 2003).
Como a CPU não é sobrecarregada durante a transferência de dados, a velocidade 
de execução de todo o sistema é aprimorada. Quando a quantidade de dados é grande, 
o barramento do computador é retirado do controle da CPU e temporariamente 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 116
ocupado por outros dispositivos para aumentar a eficiência. Neste caso, os dados 
são transferidos diretamente entre o dispositivo externo e a memória sem passar 
pela CPU, de modo que grandes quantidades de dados podem ser transferidas como 
blocos em alta velocidade.
Mesmo assim, a UCP controla a entrada/saída até que a transferência de dados 
seja realizada, mas quando há uma instrução de entrada/saída da UCP, a UCP envia 
as informações para um chip dedicado ao controle de entrada/saída chamado de 
controlador DMA.
O controlador DMA então controla a E/S. No entanto, a CPU é forçada a esperar até 
que as transferências de dados de E/S comecem e se ocorrer contenção no barramento 
durante as operações de E/S (TANENBAUM e WOODHULL, 2008).
Por fim, o método do canal de entrada/saída é um dos métodos de controle DMA, 
no qual a CPU emite apenas um programa de canal que consiste em instruções de 
execução de entrada/saída para o canal e transfere o controle para o canal.
ISTO ACONTECE NA PRÁTICA
Você provavelmente já se perguntou o que aconteceria se o laptop da empresa 
fosse perdido ou roubado. Alguém seria capaz de extrair dados confidenciais do seu 
laptop mesmo se o dispositivo estiver criptografado ou bloqueado?
Existem várias maneiras de comprometer um laptop com acesso físico, e uma 
delas é por meio de um ataque de acesso direto à memória (DMA).
Um ataque DMA é um tipo de ataque cibernético que permite que um invasor 
obtenha acesso direto à memória de um computador. Os ataques DMA aproveitam 
um recurso dos computadores modernos que permite que determinados 
dispositivos, como discos rígidos externos, placas gráficas ou placas de rede, 
acessem a memória do computador diretamente, sem a participação do 
processador. Isso pode ser útil para melhorar o desempenho, mas também cria 
uma possível vulnerabilidade de segurança. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.kroll.com/en/
insights/publications/cyber/what-is-dma-attack-understanding-mitigating-threat. 
A CPU é assim liberada das operações de entrada/saída até que ocorra uma 
interrupção de conclusão de entrada/saída. É possível aumentar o grau de paralelismo 
mais do que o método DMA. No entanto, não é usado no PC.
https://www.kroll.com/en/insights/publications/cyber/what-is-dma-attack-understanding-mitigating-threat
https://www.kroll.com/en/insights/publications/cyber/what-is-dma-attack-understanding-mitigating-threat
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 117
O canal decodifica e executa o programa de canal, instrui a unidade de controle de 
entrada/saída para operar e transfere dados entre a memória principal e a unidade 
de controle de entrada/saída.
ANOTE ISSO
Interrupção de E/S: Um tipo de interrupção externa que ocorre quando a entrada/
saída é concluída ou quando ocorre um erro na entrada/saída. A simultaneidade 
pode melhorar o desempenho porque a CPU pode lidar com outras tarefas até que 
ocorra uma interrupção de E/S.
A partir desse contexto, de acordo com TANENBAUM e WOODHULL (2008), o método 
de controle de entrada/saída é um método para operar com eficiência vários dispositivos 
de entrada/saída. Comparado ao gerenciamento de dados e gerenciamento de entrada/
saída, é um controle detalhado do lado do hardware. Os métodos de controle de E/S 
incluem:
Por fim, podemos relacionar que um canal é algo que controla o fluxo de dados que 
entram e saem de um computador ao mesmo tempo sem interromper o trabalho do 
computador. Geralmente, é chamado de controlador dedicado de entrada/saída. Um 
programa de canal é um software que consiste em um grupo de instruções a serem 
passadas para um canal.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 118
CAPÍTULO 11
GERENCIAMENTO DE 
SEGURANÇA E PROTEÇÃO
A proteção é especialmente importante em um ambiente multiusuário quando vários 
usuários usam recursos do computador, como CPU, memória etc. É responsabilidade 
do sistema operacional oferecer um mecanismo que proteja cada processo. Em um 
ambiente multiusuário, todos os ativos que requerem proteção são classificados como 
objetos, e aquelesque desejam acessar esses objetos são referidos como sujeitos. 
O sistema operacional concede diferentes ‘direitos de acesso’ a diferentes sujeitos.
De acordo com TANENBAUM (2003), um mecanismo que controla o acesso 
de programas, processos ou usuários aos recursos definidos por um sistema de 
computador é referido como proteção. Você pode utilizar a proteção como uma 
ferramenta para sistemas operacionais de multiprogramação, permitindo que vários 
usuários compartilhem com segurança um namespace lógico comum, incluindo um 
diretório ou arquivos.
Ele precisa da proteção dos recursos do computador, como software, memória, 
processador, etc. Os usuários devem tomar medidas de proteção como um auxiliar para 
a multiprogramação do sistema operacional, para que vários usuários possam usar com 
segurança um namespace lógico comum, como um diretório ou dados. A proteção pode 
ser alcançada mantendo a confidencialidade, honestidade e disponibilidade no sistema 
operacional. É fundamental proteger o dispositivo contra acesso não autorizado, vírus, 
worms e outros malwares.
Segundo TANENBAUM e WOODHULL (2008), podemos relacionar várias necessidades 
de proteção no sistema operacional, dentre elas, destacam-se as seguintes:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 119
Segundo SILBERSCHATZ (2010), vulnerabilidades nem sempre são exploráveis no 
momento do lançamento do software, e comportamentos que não eram considerados 
vulnerabilidades no passado podem vir a ser reconhecidos como vulnerabilidades 
devido a mudanças nos tempos. Portanto, enquanto o software continuar operando, 
ele deve se proteger contra vários vetores de ataque e proteger o sistema de ataques 
externos.
Como os sistemas operacionais (SO) contêm uma ampla variedade de componentes 
de software, os pesquisadores de segurança geralmente estudam vulnerabilidades 
em tais softwares, e vulnerabilidades recém-descobertas podem ter um impacto 
generalizado e severo. 
ANOTE ISSO
A proteção é um componente de segurança que regula o acesso ao sistema, 
restringindo os tipos de acesso aos arquivos permitidos aos usuários. A segurança 
de um sistema deve garantir a permissão de processos ou usuários. Como 
resultado, usuários ou processos autorizados podem acessar a CPU, regiões de 
memória e outros recursos. A técnica de proteção deve incluir uma forma de 
identificar e fazer cumprir os controles que serão aplicados.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 120
A proteção foi considerada um recurso útil para um SO de multiprogramação. Ela 
impede que usuários não confiáveis compartilhem um namespace lógico e físico, 
incluindo um diretório de arquivos e memória. A proteção é necessária para interceptar 
a violação intencional e maliciosa de uma restrição de acesso de um usuário. No 
entanto, é vital garantir que cada componente de programa ativo em um sistema use 
apenas os recursos do sistema nas formas definidas nas políticas. Ele protege os 
dados e aplicativos do usuário contra interceptação por outros usuários do sistema.
A partir desse contexto, de acordo com TANENBAUM e WOODHULL (2008), podemos 
apontar que existem várias diferenças importantes entre segurança e proteção no 
sistema operacional. Algumas diferenças importantes entre segurança e proteção 
são as seguintes:
• Segurança é uma técnica usada em sistemas operacionais para lidar com 
ameaças de fora do sistema para manter o funcionamento adequado do sistema. 
Por outro lado, a proteção é uma técnica utilizada em sistemas operacionais 
para controlar perigos e manter o bom funcionamento do sistema.
• A técnica de segurança especifica se um usuário específico tem ou não permissão 
para acessar o sistema. Em contraste, a técnica de proteção descreve quais 
usuários têm permissão para acessar um determinado recurso.
• As técnicas de segurança incluem adicionar, excluir usuários, determinar se um 
usuário está ou não autorizado, empregar software antimalware etc. Por outro 
lado, a proteção inclui técnicas como modificar as informações de proteção de 
um recurso e determinar se um usuário pode acessá-lo.
• Segurança é uma frase ampla que lida com consultas mais complicadas. Por outro 
lado, a proteção vem com segurança e abrange consultas menos complexas.
• As técnicas de segurança se concentram principalmente em ameaças externas 
ao sistema. Por outro lado, as técnicas de proteção focam principalmente em 
ameaças internas ao sistema.
• A segurança oferece uma técnica para proteger os recursos do sistema e do 
usuário contra acesso não autorizado. Por outro lado, a proteção controla o 
acesso a processos, programas e recursos do usuário.
Ao longo deste capítulo iremos refletir a partir de exemplos de vulnerabilidades 
descobertas e discutiremos a necessidade de atualizações contínuas do sistema 
operacional e dos componentes principais. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 121
11.1 Proteção e Segurança
Quando um sistema de computador possui vários usuários e processos em execução 
ao mesmo tempo, é necessário controlar o acesso aos dados. Para isso, existem 
mecanismos para garantir que apenas processos com permissões apropriadas do 
sistema operacional possam contribuir com arquivos, segmentos de memória, CPU e 
outros recursos (SILBERSCHATZ, 2010). Por exemplo, o endereçamento de memória 
de hardware garante que um processo possa ser executado apenas em seu próprio 
espaço de endereço. 
Um timer garante que um processo não possa obter o controle da CPU sem 
eventualmente abrir mão do controle. Os registradores de controle do dispositivo 
são inacessíveis ao usuário, protegendo assim a integridade de vários dispositivos 
periféricos. A proteção, portanto, é um mecanismo para controlar o acesso de processos 
ou usuários a recursos definidos por um sistema de computador (SILBERSCHATZ et. 
al., 2000).
Este mecanismo deve fornecer um meio de especificar os controles a serem 
impostos e um meio de aplicá-los. As proteções podem melhorar a confiabilidade 
detectando possíveis falhas nas interfaces entre os subsistemas de componentes. 
A detecção precoce de erros de interface geralmente pode impedir que um 
subsistema livre de erros seja envenenado por outro subsistema defeituoso. 
Recursos desprotegidos não podem ser protegidos contra uso (ou abuso) por 
usuários não autorizados. 
De acordo com SILBERSCHATZ et. al. (2000), um sistema orientado para a proteção 
oferece a possibilidade de distinguir entre usos autorizados e não autorizados. Mesmo 
sistemas bem protegidos são propensos a falhas e o acesso inapropriado pode ser 
concedido. Imagine que as credenciais de autenticação de um usuário (o meio pelo 
qual ele se identifica no sistema) foram roubadas. Você pode copiar ou excluir os 
dados mesmo se a proteção de arquivo e memória estiver funcionando. É um recurso 
de segurança que protege o sistema contra os ataques externos e internos. Esses 
ataques são generalizados e incluem vírus e worms, ataques de negação de serviço 
(que consomem todos os recursos do sistema e impedem que usuários legítimos 
acessem o sistema), roubo de identidade e roubo de serviço (uso não autorizado). 
permitido pelo sistema).
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 122
ANOTE ISSO
A prevenção de alguns desses ataques é considerada um recurso do sistema 
operacional em alguns sistemas, enquanto outros dependem de software ou 
políticas adicionais para evitar ataques. Devido ao aumento alarmante de incidentes 
de segurança, a área de pesquisa e implementação de recursos de segurança do 
sistema operacional está crescendo rapidamente.
A prevenção de alguns desses ataques é considerada um recurso do sistema 
operacional em alguns sistemas, enquanto outros dependem de software ou políticas 
adicionais para evitar ataques. Com o aumento alarmante de incidentes de segurança, o 
campode pesquisa e implementação de recursos de segurança do sistema operacional 
está crescendo rapidamente. 
De acordo com SILBERSCHATZ et. al. (2000), este é o ID de segurança na terminologia 
do Windows NT. Esses IDs numéricos são exclusivos para cada usuário. Quando um 
usuário efetua login no sistema, a fase de autenticação determina o ID de usuário 
adequado do usuário. Esse ID está associado a todos os processos e encadeamentos 
do usuário. Se o ID precisar ser legível por humanos, o ID será convertido em um nome 
de usuário por meio da lista de nomes de usuário. Em determinadas situações, você 
pode querer distinguir grupos de usuários em vez de usuários individuais. Por exemplo, 
em sistemas UNIX, o proprietário de um arquivo pode ter permissão para executar 
todas as operações nesse arquivo, enquanto um grupo selecionado de usuários pode 
ter permissão apenas para ler o arquivo. 
Para conseguir isso, precisamos definir um nome de grupo e os grupos de usuários 
que pertencem a esse grupo. Uma função de grupo pode ser implementada como uma 
lista de nomes de grupo e identificadores de grupo em todo o sistema. Um usuário 
pode pertencer a um ou mais grupos, dependendo das decisões de design do sistema 
operacional. O ID do grupo do usuário também é adicionado a todos os processos e 
encadeamentos associados. O ID do usuário e o ID do grupo são suficientes para o 
uso normal do sistema. No entanto, em alguns casos, os usuários precisam elevar 
seus privilégios para obter privilégios adicionais nas atividades. (SILBERSCHATZ et. 
al., 2000). Por exemplo, um usuário pode precisar de acesso a um dispositivo restrito. 
O sistema operacional fornece vários métodos para permitir a elevação de privilégio. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 123
ISTO ACONTECE NA PRÁTICA
De acordo com Help Net Security (2023), duas vulnerabilidades que afetam vários 
sistemas operacionais da QNAP (CVE-2022-27597 e CVE-2022-27598) foram 
descobertas pela Sternum. Essas vulnerabilidades permitem que usuários remotos 
autenticados acessem valores secretos, exigindo que os proprietários tomem 
medidas imediatas atualizando seus sistemas operacionais.
Os alertas sinalizados no sistema revelaram várias leituras e gravações fora do 
limite por várias funções no firmware do dispositivo. Essas violações de acesso 
à memória acabariam levando a problemas de estabilidade e comportamento 
imprevisível do código original, o que poderia levar à execução arbitrária do código 
se explorado por um agente mal-intencionado.
Para ler a matéria na íntegra, acesse o seguinte link: https://www.helpnetsecurity.
com/2023/04/04/cve-2022-27597-cve-2022-27598/. 
11.2 Por que as vulnerabilidades de segurança do sistema operacional podem 
ser graves
O sistema operacional possui uma função de proteção de informações com uma 
estrutura hierárquica chamada proteção de anel. Aplicativos normais têm os privilégios 
mais baixos no modo CPU, anel 3, e softwares que operam em camadas inferiores, 
como o kernel, têm os privilégios mais altos. Por outro lado, vulnerabilidades graves 
no próprio kernel podem levar a ataques difíceis de proteger devido a seus vários 
vetores, alta execução privilegiada e capacidade de burlar suas próprias proteções 
de segurança. 
As funções de proteção de segurança *1 também existem para aplicativos em 
execução no Anel 3 (também chamado de espaço do usuário), protegendo o sistema 
contra os ataques maliciosos. No entanto, todos os dias são descobertas novas 
técnicas de ataque que, por vezes, contornam as restrições impostas pelas proteções 
de segurança.
11.3 Como posso proteger meu sistema contra os ataques direcionados a 
vulnerabilidades?
A melhor maneira é atualizar seu sistema operacional diariamente e evitar ataques 
com vulnerabilidades conhecidas (incluindo aquelas que não sejam as amplamente 
conhecidas mencionadas acima). Se você não pode atualizar rapidamente, pode optar 
por usar a defesa em profundidade para evitar ataques e ter tempo para atualizar. 
https://www.helpnetsecurity.com/2023/04/04/cve-2022-27597-cve-2022-27598/
https://www.helpnetsecurity.com/2023/04/04/cve-2022-27597-cve-2022-27598/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 124
A pior prática de gestão é sair do sistema sem planejar nada. Agendar atualizações 
contínuas do sistema operacional é um bom plano para proteger seu sistema.
ANOTE ISSO
Para tomar contramedidas contra vulnerabilidades, é importante entender as 
informações de vulnerabilidade que são descobertas diariamente e lidar com o 
gerenciamento de vulnerabilidade do software em uso. 
De acordo com SILBERSCHATZ et. al. (2000), a segurança do sistema operacional 
abrange muitas técnicas e métodos diferentes que garantem a segurança contra 
ameaças e ataques. A segurança do sistema operacional permite que diferentes 
aplicativos e programas executem as tarefas necessárias e interrompam a interferência 
não autorizada. Esse recurso pode ser abordado de várias maneiras, incluindo a adesão 
ao seguinte:
11.4 O que é endurecimento do sistema?
A proteção do sistema permite que os administradores de TI identifiquem e resolvam 
as vulnerabilidades de segurança em seu ambiente de TI. Reduz a superfície de ataque 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 125
potencial. Isso reduz a chance de hackers explorarem seu sistema. Um componente-
chave dessa estratégia é a fortificação do PC.
Um aspirante a hacker deve encontrar uma maneira de entrar na infraestrutura de 
TI lançando vários ataques. Eles podem tentar injetar código malicioso no sistema 
operacional, enganando os usuários para obter acesso. Ou podem ter como alvo 
hardware, firmware ou software. Um invasor bem-sucedido pode injetar elementos 
maliciosos para assumir o controle do sistema (OLIVEIRA et. al., 2004).
Quando a injeção de código mal-intencionado é difícil, um invasor habilidoso pode 
usar dados remanescentes de aplicativos confiáveis para criar dispositivos que 
subvertem até mesmo a mais recente tecnologia de segurança. Mesmo que todas 
essas tentativas sejam malsucedidas, os invasores podem obter acesso facilmente se 
um laptop ou outro dispositivo for roubado. Eles podem tentar contornar a segurança 
tradicional do sistema operacional explorando fisicamente as vulnerabilidades do 
driver do dispositivo, como ataques de DMA do kernel. No entanto, uma vez que um 
hacker tenha comprometido um sistema, ele pode não apenas espionar usuários e 
roubar dados, mas também impedir a autorização de acesso e desativar máquinas.
Proteger um sistema significa fazer todo o possível para encontrar e corrigir 
vulnerabilidades de segurança em hardware, firmware, software, aplicativos, senhas, 
processos e muito mais.
11.4.1 Benefícios do endurecimento do sistema
O principal objetivo do fortalecimento do sistema é melhorar a segurança geral 
de TI. Isso reduz o risco de violação de dados, acesso não autorizado e invasões de 
malware. 
Evitar ataques também evita o tempo de inatividade não planejado associado à 
recuperação. A proteção do sistema também ajuda a simplificar a conformidade com 
regulamentações internas e externas.
11.4.2 Tipos de endurecimento do sistema
A proteção do sistema deve ser feita em cada camada de sua infraestrutura de TI. O 
escopo se estende de servidores a redes e terminais. Os administradores de sistemas 
de TI geralmente se concentram em fortalecer os servidores em seus datacenters, o 
que é tão importante quanto ajudar a proteger seus clientes (OLIVEIRA et. al., 2004).
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 126
De acordo com OLIVEIRA et. al. (2004), os PCs são a principal superfície de ataque. 
No entanto, muitos administradores de TI não sabem que o anti-malware não é mais 
suficiente para garantir a proteção. Ataques a hardware e firmware sempre foram 
possíveis, mas sãodifíceis de implementar. Com kits e ferramentas disponíveis on-
line hoje em dia, os hackers são muito mais sofisticados do que costumavam ser, 
atacando PCs mais baixos na pilha do que o sistema operacional. 
A partir desse contexto, segundo OLIVEIRA et. al. (2004), proteger o PC concentra-se 
em fechar possíveis vetores de ataque e atualizar regularmente o sistema para evitar 
que ele seja explorado. Os ataques incluem os seguintes elementos:
11.5 Exemplos de vulnerabilidades dos Sistemas Operacionais
O CVE-2014-0160 é uma vulnerabilidade descoberta em 2014 em uma biblioteca 
SSL/TLS chamada OpenSSL. Além do OpenSSL, existem outras implementações de 
bibliotecas SSL/TLS, como GnuTLS e wolfSSL, mas o OpenSSL é mais amplamente 
utilizado do que outras bibliotecas e, se uma vulnerabilidade for descoberta, ela afetará 
um grande número de aplicativos. Também conhecido como Heartbleed, é um bug 
na implementação da extensão Heartbeat do protocolo TLS que permite vazamentos 
remotos de informações na memória por meio do envio de pacotes especialmente 
criados . Este bug foi reconhecido como uma vulnerabilidade mais grave porque 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 127
OpenSSL era uma biblioteca relacionada à criptografia, informações com alto grau 
de segurança poderiam vazar. Como resultado dessa vulnerabilidade se tornar um 
problema público, o projeto OpenBSD iniciou um projeto bifurcado chamado LibreSSL 
, e o Google iniciou um projeto bifurcado chamado BoringSSL (SILBERSCHATZ, 2010).
O CVE-2021-4034 é uma vulnerabilidade encontrada em um software chamado polkit, 
uma ferramenta que permite que aplicativos não privilegiados executem comandos 
como outro usuário de acordo com as definições da política. Mecanicamente, o polkit 
é executado com privilégios de root, e o CVE-2021-4034 permitiu escalonamento de 
privilégio facilmente explorável em um componente dentro do polkit chamado pkgexec. 
Em outras palavras, em sistemas nos quais essa vulnerabilidade não foi corrigida, 
os processos que podiam iniciar o pkgexec estavam em um estado em que podiam 
executar comandos arbitrários com privilégios de root. Embora essa vulnerabilidade 
sozinha não permita ataques remotos, ela pode ser usada em combinação com outras 
vulnerabilidades para causar ataques sérios (SILBERSCHATZ, 2010).
Por fim, podemos relacionar que a CVE-2016-5195 é uma vulnerabilidade que 
explora um bug de condição de corrida na implementação COW (Copy-On-Write) da 
memória descoberta no kernel do Linux em 2016 que permite a escalação de privilégios 
corrompendo a memória. A vulnerabilidade recebeu atenção especial porque está 
presente desde o lançamento do kernel Linux 2.6.22 em 2007, e o fato de não ter 
sido corrigida em nove anos significa que muitos sistemas estão vulneráveis a esta 
vulnerabilidade (SILBERSCHATZ, 2010).
11.6 Medidas de segurança do sistema operacional
Existem várias medidas de segurança do sistema operacional que os usuários 
podem tomar. Algumas delas são os seguintes:
• A rede usada para transferências de arquivos deve ser segura o tempo todo. 
Durante a transferência, nenhum software deve conseguir coletar informações 
da rede. É conhecido como sniffing de rede e pode ser evitado implementando 
rotas de transferência de dados criptografados. Além disso, o sistema operacional 
deve ser capaz de resistir a violações forçadas ou mesmo acidentais.
• As senhas são um bom método de autenticação, mas são as mais comuns e 
vulneráveis. É muito fácil quebrar senhas.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 128
• Medidas de segurança em vários níveis são implementadas para evitar práticas 
ilícitas, como não permitir a entrada de ninguém nas instalações ou o acesso 
aos sistemas.
• As melhores técnicas de autenticação incluem uma combinação de nome de 
usuário e senha, varredura de retina, impressão digital ou até mesmo cartões 
de usuário para acessar o sistema.
ISTO ESTÁ NA REDE
A segurança é um dos principais fatores que os usuários consideram ao escolher 
um sistema operacional. Os recursos de segurança do sistema operacional podem 
protegê-lo de vários tipos de ameaças cibernéticas, como malware, ransomware e 
ataques de phishing. 
Os sistemas operacionais Apple e Windows possuem recursos de segurança 
robustos que protegem os usuários contra ameaças cibernéticas. 
O macOS da Apple possui recursos de segurança integrados, como o Gatekeeper, 
que impedem que os usuários instalem software malicioso. Além disso, o macOS 
possui um recurso chamado FileVault que criptografa os dados do usuário, 
dificultando o acesso dos hackers. Os sistemas operacionais Windows, por outro 
lado, possuem recursos de segurança integrados, como o Windows Defender, que 
fornece proteção em tempo real contra vírus e malware. O sistema operacional 
Windows também possui um recurso chamado BitLocker que criptografa os dados 
do usuário. 
Para ler a matéria na íntegra, acesse o seguinte link: https://smartcarting.com/the-
security-features-of-apple-and-windows-operating-systems/. 
11.7 Proteção e Segurança no Sistema Operacional
Uma ameaça é um programa de natureza maliciosa e que causa efeitos prejudiciais 
ao sistema. Algumas das ameaças comuns que ocorrem em um sistema são:
https://smartcarting.com/the-security-features-of-apple-and-windows-operating-systems/
https://smartcarting.com/the-security-features-of-apple-and-windows-operating-systems/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 129
Por fim, podemos relacionar que a proteção e segurança requerem que os recursos 
do computador, como CPU, softwares, memória, etc., sejam protegidos. Isso se estende 
ao sistema operacional, bem como aos dados no sistema. Isso pode ser feito garantindo 
integridade, confidencialidade e disponibilidade no sistema operacional. O sistema 
deve ser protegido contra acesso não autorizado, vírus, worms, etc.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 130
CAPÍTULO 12
SISTEMAS OPERACIONAIS 
MULTIMÍDIAS
O sistema operacional é o escudo do hardware do computador contra todos os 
componentes de software. Proporciona um ambiente confortável para a execução de 
programas, e garante a utilização eficaz do hardware do computador. O funcionamento 
do sistema oferece diversos serviços relacionados aos recursos essenciais de um 
computador: CPU, memória principal, armazenamento e todos os dispositivos de 
entrada e saída. Para o processamento de áudio e vídeo, a aplicação multimídia exige 
que os humanos percebam essas mídias de maneira natural e livre de erros. Esses 
dados de mídia contínua originam-se em fontes como microfones, câmeras e arquivos 
(STEINMETZ e NAHRSTEDT, 2004).
A partir dessas fontes, os dados são transferidos para destinos como alto-falantes, 
janelas de vídeo e arquivos localizados no mesmo computador ou em uma estação 
remota. No caminho da fonte para o coletor, os dados digitais são processados por 
pelo menos algum tipo de operação de movimento, cópia ou transmissão. 
Nestes processos de manipulação de dados há sempre muitos recursos que estão 
sob o controle do sistema operacional. A integração de dados multimídia discretos e 
contínuos exigem serviços adicionais de muitos componentes do sistema operacional. 
O aspecto principal neste contexto é o processamento em tempo real de dados de mídia 
contínua. O gerenciamento de processos deve levar em consideração os requisitos de 
tempo impostos pela manipulação de dados multimídia. Métodos de agendamento 
apropriados devem ser aplicados. Em contraste com os sistemas operacionais 
tradicionais em tempo real, os sistemas operacionais multimídia também têm que 
considerar tarefas sem restrições de tempo - para obedecer aos requisitos de tempo, 
os componentes individuais são concebidos como recursos que são reservados antes 
da execução. Este conceito de reserva de recursosdeve abranger todos os recursos 
em um caminho de dados, ou seja, todos os recursos que lidam com mídia contínua. 
Também pode afetar partes do aplicativo que processam dados de mídia contínua. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 131
Em sistemas distribuídos, por exemplo, o gerenciamento de recursos também 
compreende capacidade de rede. A comunicação e a sincronização entre processos 
individuais devem atender às restrições de requisitos de tempo real e relações de 
tempo entre diferentes mídias. A memória principal está disponível como um recurso 
compartilhado para processos individuais. Em sistemas multimídia, o gerenciamento 
de memória e o gerenciamento de buffer correspondente devem fornecer acesso aos 
dados com um atraso de tempo garantido e dados eficientes. Por exemplo, operações 
físicas de cópia de dados devem ser evitadas devido ao seu impacto negativo no 
desempenho; operações de gerenciamento de buffer (como são conhecidos dos 
sistemas de comunicação) devem ser usados (STEINMETZ e NAHRSTEDT, 2004).
O gerenciamento de banco de dados é um componente importante em sistemas 
multimídia. No entanto, o gerenciamento de banco de dados abstrai os detalhes de 
armazenamento de dados em mídia secundária. Portanto, o gerenciamento de banco de 
dados deve contar com serviços de gerenciamento de arquivos fornecidos pelo sistema 
operacional multimídia para acessar arquivos individuais e sistemas de arquivos. Por 
exemplo, a incorporação de um sistema de arquivos CD-ROM XA como parte integrante 
de um sistema de arquivos multimídia permite a recuperação contínua transparente 
e garantida de áudio e dados de vídeo para qualquer aplicativo usando o sistema de 
arquivos (TANENBAUM, 2003).
ANOTE ISSO
Como o sistema operacional protege os dispositivos dos programas aplicativos, ele 
deve também fornecer serviços para o gerenciamento de dispositivos. Em sistemas 
multimídia, o principal problema é a integração de dispositivos de áudio e vídeo 
de forma semelhante a qualquer outra entrada. O endereçamento de uma câmera 
pode ser realizado de forma semelhante ao endereçamento de um teclado no 
mesmo sistema, embora a maioria dos sistemas atuais não aplique essa técnica.
A partir desse contexto, podemos relacionar na figura a seguir os princípios centrais 
dos sistemas operacionais multimídia.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 132
12.1 Características dos sistemas operacionais de multimídia
O vídeo sob demanda requer servidores enormes. O sistema deve ser capaz de 
acessar, digamos, 1000 discos e distribuir sinais para a rede de distribuição em alta 
velocidade em tempo real.
O padrão NTSC (National Television Standards Commission) especifica 30 quadros 
por segundo, ou um quadro a cada 33,3 ms. Se cada quadro tiver 640 por 480 bytes, 
uma imagem bruta terá 307.200 bytes por quadro. A 30 quadros por segundo, o 
servidor precisa enviar 9.216.000 bytes por segundo ou 55.296.000 bytes por minuto 
para cada filme. Isso significa que os arquivos multimídia são enormes. 
Um filme de 640 x 480 sem compactação de duas horas requer quase 200 GB de 
espaço em disco. Mas o formato 640x480 está sendo substituído pela televisão de 
alta definição (HDTV). Um filme HDTV não compactado de duas horas requer 570 GB. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 133
Isso significa que um servidor de vídeo com 1.000 filmes precisa de 570 TB de disco. 
A única maneira de um sistema operacional fazer isso é reservar largura de banda, 
CPU, memória etc. com antecedência. Portanto, o servidor possui um algoritmo de 
controle de admissão; ele não pode aceitar uma nova solicitação a menos que esteja 
razoavelmente confiante de que será capaz de satisfazê-la.
Filmes não compactados são grandes demais para serem transmitidos. Assim, 
o sistema precisa de um algoritmo de compressão (codificação) e um algoritmo de 
descompressão (decodificação). A primeira pode ser lenta e/ou cara, pois é feita 
apenas uma vez, mas a segunda tem que ser rápida. Ao contrário de um algoritmo 
de compactação de arquivo regular, um algoritmo de compactação de imagem pode 
apresentar perdas. Isso significa que alguns dados podem ser perdidos.
ANOTE ISSO
O algoritmo de compressão padrão para imagens é JPEG, já o algoritmo de 
compressão de vídeo padrão é o MPEG. 
Uma tendência recente em tecnologia é a inclusão de dados multimídia em sistemas 
de computador. O tipo de dados multimídia consiste em mídia contínua na forma 
de dados de arquivos (áudio ou vídeo), bem como arquivos convencionais a serem 
executados. Dados de mídia contínua variam de dados convencionais como aqueles 
em que arquivos de mídia contínuos — como quadros de vídeo ou imagens ou arquivos 
de áudio — devem ser entregues de acordo com certas restrições de tempo.
A palavra multimídia descreve uma grande variedade de aplicativos que estão em 
uso popular hoje em dia. Este termo abrange uma grande categoria que inclui arquivos 
de áudio e vídeo, como arquivos de áudio, filmes, videoclipes curtos e arquivos flash/
animação de prévias de filmes ou notícias que estão sendo baixadas pela Internet.
O conceito de multimídia também inclui webcasting ao vivo (ou seja, transmissão pela 
World Wide Web) de vários eventos ou esportes. Os dados multimídia são armazenados 
no sistema de arquivos como qualquer outro dado. A principal diferença entre um 
arquivo comum e um arquivo multimídia é que os arquivos multimídia necessitam 
serem acessados em uma taxa exata, mas o acesso a um arquivo comum não requer 
um tempo específico. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 134
O vídeo é geralmente representado por uma sequência de imagens conhecidas 
como quadros que são usadas para exibição em rápida sucessão. Quanto mais rápido 
os quadros forem exibidos para os usuários, mais suave será a aparência do vídeo. 
Principalmente, uma taxa de 24 a 30 quadros por segundo deve ser necessária para 
que o vídeo pareça suave aos olhos humanos.
Quando quaisquer dados são entregues do sistema de arquivos local, você pode 
se referir a essa entrega como ‘reprodução local’. Os arquivos de multimídia também 
podem ser armazenados em um servidor remoto e entregues a um cliente através 
de uma rede com uma técnica chamada streaming. De acordo com (TANENBAUM, 
2003), existem dois tipos de técnicas de streaming:
• download progressivo;
• streaming em tempo real;
Com um download progressivo, qualquer arquivo de mídia com áudio e vídeo pode 
ser baixado e armazenado no sistema de arquivos local dos usuários. O streaming em 
tempo real varia de download progressivo em que o arquivo de mídia é transmitido 
para o cliente, mas só pode ser reproduzido - e não armazenado/baixado - pelo cliente.
Como o arquivo de mídia não é armazenado no sistema do cliente, a transmissão 
em tempo real é utilizada em detrimento ao download progressivo de arquivos de 
mídia que podem ser muito grandes para serem armazenados no sistema, como 
vídeos longos e transmissões de rádio ou TV na Internet.
As demandas dos sistemas multimídia não são nada parecidas com as demandas 
dos aplicativos convencionais. Principalmente, os sistemas multimídia podem ter as 
características abaixo mencionadas:
Os arquivos de multimídia podem ser relativamente grandes. Vamos dar um exemplo; 
um arquivo de vídeo MPEG-1 de 100 minutos usa aproximadamente 1,125 GB de 
armazenamento, 100 minutos de televisão de alta definição precisa de aproximadamente 
15 GB de armazenamento.
A mídia contínua pode precisar de taxas de dados muito altas. Pense em um vídeo 
digital, em que um quadro de vídeo colorido é exibido com uma resolução de 800 x 
600. Os aplicativos multimídia são bastante sensíveis a atrasos de tempo em algum 
ponto da reprodução.
A partir desse contexto, de acordo com TANENBAUM e WOODHULL (2008), sobre 
os requisitos de temporeal de sistemas multimídia, podemos relacionar os seguintes 
aspectos: 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 135
ISTO ESTÁ NA REDE#
Um sistema multimídia é responsável por desenvolver uma aplicação multimídia. 
Um aplicativo multimídia é um conjunto de diferentes tipos de dados. Um sistema 
de computador multimídia é aquele que pode criar, integrar, armazenar, recuperar 
e excluir dois ou mais tipos de materiais de mídia em formato digital, como áudio, 
imagem, vídeo e informações de texto.
Dados multimídia consistem em uma variedade de formatos de mídia ou 
representação de arquivo, incluindo: JPEG, MPEG, AVI, MID, WAV, DOC, GIF, PNG etc. 
Arquivos AVI podem conter dados de áudio e vídeo em um contêiner de arquivo que 
permite áudio síncrono com reprodução de vídeo. Como o formato de vídeo em 
DVD, os arquivos AVI suportam vários fluxos de áudio e vídeo. Devido a restrições na 
conversão de um formato para outro, o uso dos dados em um formato específico 
também foi limitado.
Em aplicações multimídia, a entrada e a saída devem ser contínuas e rápidas. A 
gravação em tempo real, bem como a reprodução de dados, é comum na maioria 
dos aplicativos multimídia que precisam de E/S eficiente. 
Para ler a matéria na íntegra, acesse o seguinte link: https://finance.yahoo.com/
news/server-operating-system-market-surpass-070500343.html. 
https://finance.yahoo.com/news/server-operating-system-market-surpass-070500343.html
https://finance.yahoo.com/news/server-operating-system-market-surpass-070500343.html
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 136
12.1.1 Multimídia e suas aplicações
Multimídia é o campo preocupado com a integração controlada por computador de 
texto, gráficos, desenhos animados, imagens estáticas e em movimento (ou vídeo), 
animação, áudio e qualquer outra mídia onde todo tipo de informação pode ser 
representado, armazenado, transmitido e processado digitalmente.
Um aplicativo multimídia é um aplicativo que usa uma coleção de várias fontes de 
mídia, como texto, gráficos, imagens, som/áudio, animação e/ou vídeo. A hipermídia 
pode ser considerada como uma das aplicações multimídia.
De acordo com SILBERSCHATZ (2010), seguem alguns dos componentes de 
multimídia que podemos utilizar: 
Texto: Todas as produções multimídia contêm uma certa quantidade de texto. O 
texto pode ter vários tipos de fontes e tamanhos para se adequar à apresentação 
profissional do software multimídia.
Título: Representação da utilização de texto na composição do vídeo
Fonte: https://br.freepik.com/vetores-gratis/fundo-de-realidade-aumentada-com-dispositivo_2317099.htm#query=texto%20em%20
v%C3%ADdeo&position=12&from_view=search&track=ais 
https://br.freepik.com/vetores-gratis/fundo-de-realidade-aumentada-com-dispositivo_2317099.htm#query=texto%20em%20v%C3%ADdeo&position=12&from_view=search&track=ais
https://br.freepik.com/vetores-gratis/fundo-de-realidade-aumentada-com-dispositivo_2317099.htm#query=texto%20em%20v%C3%ADdeo&position=12&from_view=search&track=ais
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 137
Gráficos: Os gráficos tornam o aplicativo multimídia atraente. Em muitos casos, 
as pessoas não gostam de ler grandes quantidades de texto na tela. Portanto, os 
gráficos são usados com mais frequência do que o texto para explicar um conceito, 
apresentar informações básicas e muito mais.
Título: Representação da utilização de gráficos na composição de vídeos.
Fonte: https://br.freepik.com/vetores-gratis/conexoes-do-mundo-e-infografico-de-negocios_5141352.htm#query=gr%C3%A1ficos%20
v%C3%ADdeo&position=0&from_view=search&track=ais 
Áudio: um aplicativo multimídia pode exigir o uso de fala, música e efeitos sonoros. 
Estes são chamados de elementos de áudio ou som de multimídia. A fala também 
é uma maneira perfeita de ensinar. O áudio é do tipo analógico e digital. Áudio ou 
som analógico refere-se ao sinal de som original. O computador armazena o som em 
formato digital. Portanto, o som utilizado na aplicação multimídia é o áudio digital.
https://br.freepik.com/vetores-gratis/conexoes-do-mundo-e-infografico-de-negocios_5141352.htm#query=gr%C3%A1ficos%20v%C3%ADdeo&position=0&from_view=search&track=ais
https://br.freepik.com/vetores-gratis/conexoes-do-mundo-e-infografico-de-negocios_5141352.htm#query=gr%C3%A1ficos%20v%C3%ADdeo&position=0&from_view=search&track=ais
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 138
Título: Representação da reprodução de um áudio.
Fonte: https://br.freepik.com/vetores-gratis/ilustracao-de-ipod_2606082.htm#query=mp3&position=0&from_view=search&track=sph 
Vídeo: O termo vídeo refere-se à imagem em movimento, concomitante de som, 
como uma imagem na televisão. O elemento de vídeo do aplicativo multimídia fornece 
muitas informações em um curto período de tempo. O vídeo digital é um aplicativo 
multimídia útil para mostrar objetos da vida real. O vídeo tem maior demanda de 
desempenho na memória do computador e na largura de banda se colocada na internet. 
Os arquivos de vídeo digital podem ser armazenados como qualquer outro arquivo 
no computador e a qualidade do vídeo ainda pode ser mantida. Os arquivos de vídeo 
digital podem ser transferidos dentro de uma rede de computadores. Os videoclipes 
digitais podem ser editados facilmente.
Título: Representação da produção de um vídeo.
Fonte: https://br.freepik.com/vetores-gratis/limpe-o-modelo-do-player-de-video-com-botoes-simples_10016463.htm#query=v%C3%ADdeo&position=1&from_
view=search&track=sph 
https://br.freepik.com/vetores-gratis/ilustracao-de-ipod_2606082.htm#query=mp3&position=0&from_view=search&track=sph
https://br.freepik.com/vetores-gratis/limpe-o-modelo-do-player-de-video-com-botoes-simples_10016463.htm#query=v%C3%ADdeo&position=1&from_view=search&track=sph
https://br.freepik.com/vetores-gratis/limpe-o-modelo-do-player-de-video-com-botoes-simples_10016463.htm#query=v%C3%ADdeo&position=1&from_view=search&track=sph
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 139
Animação: A animação é um processo de fazer uma imagem estática parecer 
que está em movimento. Uma animação é apenas uma série contínua de imagens 
estáticas que são exibidas em uma sequência. A animação pode ser usada de forma 
eficaz para atrair atenção. A animação também torna a apresentação leve e atraente. 
A animação é um aplicativo multimídia muito popular.
Título: Representação da criação de animações na criação de produtos digitais.
Fonte: https://br.freepik.com/vetores-gratis/personagem-feminina-coloca-colecao-de-ilustracao_6969086.
htm#query=anima%C3%A7%C3%A3o&position=18&from_view=search&track=sph 
12.2 Agendamento de processos multimídia
Um sistema operacional cujo trabalho principal é exibir vídeos seria diferente de 
um sistema operacional tradicional de três maneiras: 
• agendamento de processos
• o sistema de arquivos
• agendamento de disco
Se tudo o que o sistema estiver fazendo for servir vídeos e se todos os vídeos 
tiverem a mesma taxa de quadros, resolução de vídeo etc., o agendamento do processo 
será muito simples. Cada vídeo possui um thread que lê um quadro por vez e o 
envia ao usuário. Round Robin é um algoritmo de escalonamento perfeito para isso 
(SILBERSCHATZ, 2010).
Mas você precisa de um mecanismo de temporização para garantir que cada 
processo seja executado na frequência correta. Execute um relógio com 30 tiques por 
https://br.freepik.com/vetores-gratis/personagem-feminina-coloca-colecao-de-ilustracao_6969086.htm#query=anima%C3%A7%C3%A3o&position=18&from_view=search&track=sph
https://br.freepik.com/vetores-gratis/personagem-feminina-coloca-colecao-de-ilustracao_6969086.htm#query=anima%C3%A7%C3%A3o&position=18&from_view=search&track=sph
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 140
segundo. A cada tick, todosos threads são executados sequencialmente na mesma 
ordem, quando um thread é concluído, ele emite uma chamada de sistema suspensa 
que libera a CPU. Esse algoritmo funciona perfeitamente, desde que o número de 
threads seja pequeno o suficiente.
Mas há um problema. Os tamanhos de quadro para MPEG diferem em tamanho e os 
processos vêm e vão. Portanto, isso nos leva a uma discussão sobre escalonamento 
geral de processos em tempo real.
ISTO ACONTECE NA PRÁTICA
Os sistemas multimídia, exigem agendamento rígido em tempo real para garantir 
que uma tarefa crítica seja atendida dentro de um período de tempo garantido. 
Os algoritmos de agendamento que atribuem prioridades dinâmicas permitem que 
as prioridades mudem ao longo do tempo. A maioria dos sistemas operacionais usa 
prioridades dinâmicas ao agendar tarefas não em tempo real com a intenção de 
dar maior prioridade aos processos interativos. No entanto, ao agendar tarefas em 
tempo real, a maioria dos sistemas atribui prioridades estáticas, pois o design do 
agendador é menos complexo. 
Para ler a matéria na íntegra, acesse o seguinte link: https://padakuu.com/how-is-
cpu-scheduling-done-in-multimedia-systems-155-article. 
12.3 Agendamento de processos em tempo real
Do ponto de vista do escalonamento, a definição de tempo real significa que pelo 
menos alguns dos processos têm prazos rígidos que devem ser cumpridos. 
O agendamento em tempo real pode ser periódico, no qual os prazos ocorrem em 
intervalos regulares, ou aperiódico, no qual os prazos ocorrem de forma imprevisível. 
O vídeo é o exemplo clássico de programação periódica em tempo real. De acordo 
com SILBERSCHATZ et. al. (2000), existem três parâmetros:
https://padakuu.com/how-is-cpu-scheduling-done-in-multimedia-systems-155-article
https://padakuu.com/how-is-cpu-scheduling-done-in-multimedia-systems-155-article
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 141
A partir desse princípio, vamos refletir sobre um exemplo de utilização. Suponha 
que haja três processos em execução.
• A tem uma frequência de 33,3 ciclos por segundo (um período de 30 ms) e cada 
vez que é executado, ele precisa de 10 ms de tempo de CPU.
• B tem uma frequência de 25 ciclos por segundo (um período de 40 ms) e requer 
15 ms de tempo de CPU por ciclo
• C tem uma frequência de 20 ciclos por segundo (um período de 50 ms) e requer 
5 ms de tempo de CPU por ciclo.
A questão é como agendar esses três processos para que todos os três cumpram 
todos os seus prazos.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 142
CAPÍTULO 13
SISTEMAS 
OPERACIONAIS MOBILE 
Um dispositivo móvel é um dispositivo semelhante a um computador que pode 
ser facilmente transportado. Os smartphones modernos estão mais próximos dos 
computadores de mão que nos permitem enviar e-mails, jogar, assistir ao noticiário 
e fazer videochamadas com amigos e familiares. E muito mais além disso.
Assim como os computadores de mesa ou laptops, os smartphones também 
precisam de um sistema operacional (SO) para tornar o hardware integrado utilizável. 
No que diz respeito ao sistema operacional, os smartphones também têm condições 
de partida diferentes dos computadores clássicos: um celular está vinculado ao sistema 
com o qual foi entregue. Qualquer pessoa que decida por um modelo específico, 
portanto, geralmente tem que conviver com o respectivo sistema operacional. Além 
disso, o usuário depende do fabricante do celular para atualizações. Somente se este 
último estiver disposto a adaptar uma nova versão do sistema operacional para um 
modelo específico de celular, ele também estará disponível para o usuário. 
De acordo com DEITEL et. al. (2005), os sistemas operacionais são os softwares 
que executam nossos computadores desktop e laptops e gerenciam seus recursos 
e memória quando estão sendo usados para multitarefa. Os smartphones possuem 
seus próprios sistemas operacionais, também conhecidos como mobile OS, e é esse 
desenvolvimento que trouxe funções avançadas para os celulares que antes só estavam 
disponíveis em nossos computadores.
É também uma plataforma que os desenvolvedores podem usar para criar aplicativos 
(programas de software desenvolvidos para smartphones que podem realizar funções 
específicas).
Existem alguns sistemas operacionais principais de dispositivos móveis nos quais 
a maioria dos smartphones é executada, incluindo Apple iOS, Google Android e o 
sistema operacional Windows Phone da Microsoft.
Ao longo desse capítulo, iremos discutir sobre os princípios e características dos 
Sistemas operacionais mobile.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 143
13.1 Tipos de sistemas operacionais mobile
Mobile OS é um termo geral para sistemas operacionais instalados em terminais 
móveis. Muitas vezes referido como plataforma móvel. O nome do sistema operacional 
móvel é usado independentemente da classificação de dispositivos como telefones 
celulares (feature phones), smartphones, PDAs e terminais de tablet. Pode-se dizer 
que as características comuns de muitos sistemas operacionais móveis são sistemas 
operacionais integrados e suporte a tamanhos de tela que diferem significativamente 
dependendo do modelo (DEITEL et. al. 2005).
Como os sistemas operacionais do smartphone são tão integrados à aparência, 
ao toque e à função de um telefone celular, muitas pessoas baseiam sua escolha de 
dispositivo no sistema operacional que ele usa. Alguns sistemas operacionais móveis 
são software de código aberto, o que significa que não há restrições sobre o que você 
pode baixar ou quem pode desenvolver seu software (geralmente há uma comunidade 
de desenvolvedores).
Os sistemas operacionais de código aberto são totalmente personalizáveis, enquanto 
outros são restritos nos tipos de software permitidos para execução no dispositivo.
13.1.1 Android
O sistema operacional Android iniciado pelo Google tornou-se líder de mercado 
entre os sistemas de telefonia móvel. O Android também é usado em tablets e outros 
dispositivos. O sistema do Google é em grande parte uma solução de código aberto 
com poucas partes proprietárias, usada por vários fabricantes de smartphones. 
De acordo com OLIVEIRA et. al. (2004), o sistema operacional Android é o líder geral 
de mercado entre os sistemas operacionais móveis. Se trata de um sistema aberto 
que outros fabricantes também podem usar em seus dispositivos ou adaptar para 
eles. Além de smartphones e tablets, o Android também funciona em smartwatches 
(Android Wear), televisores (Android TV) e em veículos (Android Auto). 
A versão 1.0 com o nome simples “Base” está disponível desde 2008. O sistema 
operacional Android é alimentado pelo kernel do Linux, que pode ser encontrado em 
uma ampla variedade de dispositivos. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 144
Título: Reprodução de um dispositivo Android.
Fonte: https://br.freepik.com/fotos-premium/logotipo-do-sistema-operacional-android-com-smartphone-3d_16172133.htm#query=android&position=35&from_
view=search&track=sph 
Segundo DEITEL et. al. (2005), o Android é um sistema operacional de código aberto 
que permite aos desenvolvedores acessar hardware desbloqueado e desenvolver novos 
programas. Isso significa que ele permite acesso ilimitado a qualquer pessoa que queira 
desenvolver aplicativos e impõe poucas restrições ao seu licenciamento, para que os 
usuários se beneficiem de uma grande quantidade de conteúdo gratuito. Atualmente, 
o Android é a plataforma de smartphone dominante devido à sua tremenda tração 
com um amplo espectro de usuários. 
ANOTE ISSO
Alguns dos melhores recursos do Android incluem a capacidade de personalizar 
várias telas iniciais com widgets e aplicativos úteis que fornecem acesso mais 
rápido e fácil ao conteúdo e às funções que mais lhe interessam. Ele também 
possui uma excelente capacidade de multitarefa,com a possibilidade de fechar 
programas simplesmente deslizando-os.
Finalmente, a Google Play Store, que é o equivalente Android da Apple App Store, 
abriga milhões de aplicativos, muitos dos quais são totalmente gratuitos. A partir desse 
contexto, segue abaixo o Quadro 1 que apresenta as vantagens e desvantagens do 
sistema operacional Android.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 145
Vantagens • Maior seleção de dispositivos de diferentes fabricantes e em todas as faixas 
de preço
• Sistema operacional de código aberto e interface de usuário personalizável
• Grande variedade de aplicativos na Google Play Store
Desvantagens • Atualizações de segurança pelos fabricantes apenas dois a um máximo de 
três anos
• Maior risco de vulnerabilidades de segurança
• Requisitos de segurança mais baixos para aplicativos
ISTO ESTÁ NA REDE
Cerca de 60.000 aplicativos Android modificados espalham adware secretamente 
nos dispositivos em que estão instalados, gerando receita para as operadoras. 
De acordo com Gonçalves (2023), o arquivo malicioso projetado para exibir 
anúncios estava oculto em vários aplicativos distribuídos fora da Google Play Store. 
VPN grátis, versões supostamente desbloqueadas do Netflix e YouTube, jogos 
crackeados, antivírus e utilitários falsos são alguns deles. 
Quando o usuário tenta executar o APK, recebe uma mensagem de erro com a 
opção de desinstalá-lo, mas não funciona - ele começa a rodar em segundo plano e 
exibe anúncios por toda a tela e no navegador. Além de dificultar o uso do aparelho, 
a prática gera lucro para os cibercriminosos ao forçar a exibição de anúncios.
Para ler a matéria na íntegra, acesse o seguinte link: https://www.tecmundo.com.
br/seguranca/264951-criminosos-distribuem-virus-anuncio-60-mil-apps-android.
htm. 
13.1.2 Apple iOS e iPadOS
Com o iOS, a Apple tem no mercado um sistema operacional que só é comercializado 
em seus próprios aparelhos e, portanto, pode ser visto definitivamente como um 
sistema fechado. Agora não apenas os sistemas operacionais de smartphones, como 
os iPhones, funcionam com ele, mas também os iPads, o Apple Watch (watchOS), os 
iPods, a Apple TV e o sistema da Apple para carros, chamado CarPlay (SILBERSCHATZ, 
2010).
Com o iOS 1.0, a primeira versão para o iPhone foi lançada em 2007 e o 
desenvolvimento agora chegou ao iOS 10.1. A App Store atualmente inclui cerca de 
2 milhões de aplicativos para iPhone e iPad. O iOS não é o sistema operacional com 
maior spread, mas a Apple é claramente o fabricante com maior penetração no mercado.
https://www.tecmundo.com.br/seguranca/264951-criminosos-distribuem-virus-anuncio-60-mil-apps-android.htm
https://www.tecmundo.com.br/seguranca/264951-criminosos-distribuem-virus-anuncio-60-mil-apps-android.htm
https://www.tecmundo.com.br/seguranca/264951-criminosos-distribuem-virus-anuncio-60-mil-apps-android.htm
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 146
Título: Reprodução de um dispositivo Apple.
Fonte: https://br.freepik.com/vetores-gratis/smartphone-realista-com-aplicativos-diferentes_6208001.htm#query=ios%20iphone%2014&position=7&from_
view=search&track=ais 
De acordo com TANENBAUM e WOODHULL (2008), como a maioria dos sistemas 
operacionais, o iOS responde ao toque do usuário - permitindo que você toque na tela para 
abrir um programa, junte os dedos para minimizar ou ampliar uma imagem ou deslize o 
dedo pela tela para mudar de página. O Apple iOS não pode ser usado em sistemas de 
terceiros, portanto você só poderá usá-lo em produtos fabricados pela Apple. Ele vem com 
o navegador Safari para uso na Internet, o aplicativo Apple Music para reproduzir música 
e o Mail da Apple para gerenciar seus e-mails, todos pré-instalados.
A partir desse contexto, de acordo com OLIVEIRA et. al. (2004), podemos relacionar 
como sendo uma vantagem da Apple é que como o software e o hardware vêm de uma 
empresa, ele é considerado de alto desempenho. Outra característica é o fechamento 
do sistema, que contribui para a segurança, mas limita significativamente as opções do 
usuário em relação a alguns concorrentes. É possível realizar download de milhões de 
aplicativos que estão disponíveis na App Store diretamente para qualquer dispositivo 
com iOS, seja em um iPhone ou iPad. A partir desse contexto, segue abaixo o Quadro 
1 que apresenta as vantagens e desvantagens do sistema operacional iOS.
Vantagens • Fornecimento automático de atualizações por quatro a cinco anos
• Hardware e software de uma única fonte e com operação intuitiva
• Aplicativos aprovados para segurança
Desvantagens • iOS disponível apenas em dispositivos Apple
• O sistema operacional não pode ser alterado
• Seleção reduzida de aplicativos gratuitos
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 147
13.1.3 Harmony-OS
Além dos sistemas operacionais estabelecidos para smartphones, como iOS e 
Android, a Huawei também possui seu próprio sistema operacional baseado em código 
aberto. 
Além das smart TVs, agora também fornece smartphones, tablets e wearables. A 
abertura e a diversidade do sistema são semelhantes à filosofia do Android. Embora 
o Honor não pertença mais à Huawei, o Harmony OS pode ser encontrado como um 
sistema alternativo em dispositivos Honor, como as séries Honor 20 e Honor 30. 
13.1.4 KaiOS 
TANENBAUM e WOODHULL (2008), o KaiOS é um sistema operacional móvel 
baseado no Firefox OS projetado principalmente para feature phones. 
O que todos os dispositivos móveis com KaiOS têm em comum é que eles vêm 
sem tela sensível ao toque. Com os feature phones, o foco está particularmente no 
fácil manuseio, armazenamento e economia de energia. 
13.1.5 Pure OS
Desenvolvido pela Purism, o PureOS é um sistema operacional móvel de código 
aberto, gratuito e baseado em Debian com foco em segurança e privacidade.
Está disponível como um sistema operacional pré-instalado para smartphones e 
laptops da série Librem. Além dos aplicativos padrão, os aplicativos instalados também 
incluem software típico do Linux, como o LibreOffice, o navegador da Web GNOME e 
um emulador de terminal. 
13.1.6 Microsoft Windows Phone
Mesmo sendo um dos maiores sistemas operacionais de computador, os Windows 
phones da Microsoft não estão mais sendo produzidos (a empresa descontinuou as 
atualizações em 2019). O Window Phone é reconhecível por sua interface baseada em 
blocos, que apresenta seções quadradas removíveis e intercambiáveis na tela inicial, 
cada uma com seu próprio propósito e função.
Ele também possui agregadores chamados ‘hubs’, que agrupam todas as fotos de 
todos os aplicativos ou todas as músicas em uma biblioteca, o que significa que suas 
fotos do Facebook podem ser encontradas com as fotos da câmera e seus documentos 
de diferentes fontes agrupados em um, fácil de acessar localização.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 148
Título: Representação de um dispositivo com o sistema operacional Windows Phone
Fonte: https://br.freepik.com/icones-gratis/smartphone_15522357.htm#query=Microsoft%20Windows%20Phone&position=1&from_view=search&track=ais 
13.1.6.1 Windows 10 
O Windows 10 Mobile foi o sucessor do Windows Phone 8.1 - durante a padronização 
das plataformas, a Microsoft decidiu abandonar o nome Windows Phone. Além disso, o 
Windows 10 Mobile não era usado apenas em smartphones, mas também em tablets 
menores com diagonal de tela inferior a 8 polegadas. 
O Windows 10 Mobile suportava os chamados Aplicativos Universais, que 
funcionavam tanto na versão móvel quanto na versão para PC do Windows 10. Também 
deve ser possível portar aplicativos iOS e Android para o Windows 10 de uma maneira 
(comparativamente) fácil. Os dispositivos Windows 10 Mobile também devem ser 
fáceis de conectar a um monitor externo e oferecer suporte para mouse e teclado. 
Muitos telefones com Windows 8.1 podem ser atualizados parao Windows 10 Mobile. 
No entanto, devido ao escasso sucesso, a Microsoft interrompeu o desenvolvimento. 
O Windows não oferece mais atualizações de software ou segurança, o que põe em 
questão o uso contínuo de tal sistema operacional.
13.1.6.2 Windows phone 8
O Windows Phone 8 ou 8.1 era uma grande esperança para a Microsoft no mercado 
de smartphones. Em contraste com o Windows Phone 7, no entanto, muitos fabricantes 
de celulares conhecidos não lançaram mais um modelo com Windows Phone 8 ou 8.1. 
A maioria dos telefones com Windows pertencia à série Lumia, que a própria 
Microsoft lançou após adquirir a divisão de smartphones da Nokia. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 149
13.1.8 Black berry OS 10 / Black berry OS
Em 2013, o fabricante canadense de Blackberry mudou seu nome de RIM (Research 
in Motion) para Blackberry e substituiu seu tradicional sistema operacional Blackberry 
pelo mais contemporâneo Blackberry OS 10. 
No entanto, a empresa tentou em vão entrar no mercado de smartphones com tela 
sensível ao toque - e, portanto, também mudou para o sistema operacional Android. 
O BlackBerry pode ser encontrado principalmente no ambiente corporativo ou em 
ambientes com maiores requisitos de segurança. O BlackBerry 10 está no mercado 
desde 2011 (atualmente na versão 10.3) e é o sucessor do BlackBerry OS, que foi 
lançado na versão 1.0 em 1999 e foi desenvolvido até a versão 7.1 em 2012. 
Assim como o iOS, o BlackBerry OS está disponível apenas para os dispositivos do 
fabricante. A loja de aplicativos BlackBerry World oferece cerca de 130.000 aplicativos, 
e os aplicativos Android da Amazon Appstore (cerca de 600.000 aplicativos) também 
podem ser instalados nos dispositivos mais novos com BlackBerry 10. 
13.1.9 Firefox OS
Como o Android, o Firefox OS foi baseado em um núcleo Linux e foi desenvolvido 
pela Mozilla Corporation. O sistema operacional dependia fortemente do novo padrão 
web HTML5. 
Os primeiros smartphones com Firefox OS chegaram ao mercado em 2013 - no 
entanto, o desenvolvimento do sistema foi interrompido em maio de 2016. No entanto, 
o sistema operacional está indiretamente disponível no mercado, porque o referido 
“KaiOS” é considerado o sucessor do “Firefox OS”. 
ISTO ACONTECE NA PRÁTICA
O Firefox OS diferia dos sistemas operacionais tradicionais, onde os aplicativos são 
desenvolvidos especificamente para uma plataforma específica, como Android ou 
iOS, levando em consideração as especificidades de seu design e operação. Ele 
tinha uma abordagem mais aberta. 
De acordo com Drullis (2023), cada aplicativo de sistema operacional usou 
tecnologias da Web, como HTML, CSS e Javascript, para diminuir a curva de 
dificuldade associada à interoperabilidade de aplicativos de plataforma cruzada. 
Como outros sistemas operacionais móveis lançados na década de 2010, o Firefox 
OS enfrentou uma situação competitiva. 
Depois que a Apple começou com o lançamento do iPhone em 2007, iOS e Android 
se firmaram como as principais plataformas do mercado global. Ambos foram 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 150
apoiados por um ecossistema onde inovações apareciam todos os anos, por outro 
lado, o Firefox OS não conseguiu acompanhar esse ritmo. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.mobiletime.com.
br/museu-movel/17/02/2023/tecnologias-do-passado-firefox-os/. 
13.1.10 Sistema operacional Sailfish
O Sailfish OS também é um sistema operacional baseado em Linux e usa alguns 
componentes do Meego, que são mantidos pela comunidade de código aberto como 
o projeto Mer. 
A empresa Jolla, fundada por ex-desenvolvedores e designers do projeto Meego da 
Nokia, é responsável pelo desenvolvimento do Sailfish. O primeiro “Jolla Phone” com 
Sailfish OS foi lançado no final de 2013. 
13.1.11 Tizen
Tizen nasceu da fusão de Maemo e Limo. Deve ser usado em smartphones, tablets 
e outras classes de dispositivos. Os primeiros fabricantes trouxeram tablets com Tizen 
para o mercado asiático já no final de 2013. 
Mesmo que não haja muitos dispositivos móveis com Tizen disponíveis: ele é usado 
em smartwatches e smart TVs da Samsung. Pode muito bem se tornar um verdadeiro 
concorrente do Android. Tecnicamente, o Tizen depende cada vez mais do HTML 5 
e de outros padrões da web. Você pode aprender mais sobre o sistema operacional 
em nossa página do Tizen.
De acordo com TANENBAUM e WOODHULL (2008), com exceção dos dispositivos 
da série Samsung Z, o Tizen interno atualmente roda mais em todos os outros tipos 
de dispositivos do que em smartphones. O Tizen é a base de muitos produtos, desde 
TVs a câmeras, passando pela série Gear smartwatch e, até agora, só foi encontrado 
em produtos Samsung. O Tizen se baseia tecnologicamente e conceitualmente em 
vários predecessores que se fundiram e fundiram: Bada (Samsung), MeeGo, Maemo, 
Moblin e LiMo.
13.1.12 Ubuntu Touch
O Ubuntu Touch é uma alternativa Android gratuita e de código aberto baseada 
em Linux, desenvolvida e mantida pela comunidade UBports. Os telefones Ubuntu 
disponíveis ainda estão escassamente disponíveis. 
https://www.mobiletime.com.br/museu-movel/17/02/2023/tecnologias-do-passado-firefox-os/
https://www.mobiletime.com.br/museu-movel/17/02/2023/tecnologias-do-passado-firefox-os/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 151
Dispositivos bem conhecidos são o Volla Phone, Fairphone 2, Google Nexus 5 e 
Pinephone. Também pode ser instalado no OnePlus One. Os modelos devem até ser 
capazes de atuar como um substituto de PC de mesa com um monitor externo e 
teclado (convergência). 
Segundo TANENBAUM e WOODHULL (2008), a Canonical, fabricante do que 
provavelmente é agora a mais conhecida distribuição Linux Ubuntu, iniciou seus próprios 
esforços para ganhar uma posição em tablets e smartphones com o Ubuntu Touch 
(anteriormente Ubuntu Phone). A última versão foi apresentada no início de 2014 e 
roda em alguns dispositivos disponíveis comercialmente.
ISTO ACONTECE NA PRÁTICA
A empresa alemã Hallo Welt Systeme lançou o seu smartphone Volla Phone X23 
com dois sistemas operacionais sem os mais usados no mundo. 
 Quem quiser comprar este aparelho terá que escolher entre duas opções. Um tem 
o Volla OS e o outro tem o Ubuntu Touch nativamente. O fabricante pretendia entrar 
em plataformas de código aberto para fornecer aos usuários um melhor controle 
sobre o dispositivo. 
Para ler a matéria na íntegra, acesse o seguinte link: https://www.tudocelular.
com/novos-produtos/noticias/n204454/conheca-primeiro-celular-lancado-dois-
sistemas.html. 
13.1.13 webOS
A Palm desenvolveu o chamado webOS depois do Palm OS - mas mesmo esse 
novo começo não conseguiu salvar o pioneiro do PDA. A HP assumiu a Palm, mas 
depois se despediu da produção de smartphones e tablets. 
Depois que a HP lançou o código-fonte do sistema sob uma licença de código aberto 
em 2012, a empresa vendeu os direitos do sistema para a LG. Em 2014, surgiram as 
primeiras TVs inteligentes da empresa usando webOS. Até o momento, o webOS está 
presente em muitas Smart TVs LG. 
13.1.14 Symbian / Nokia Belle
O Symbian já foi o líder indiscutível do mercado entre os sistemas de smartphones 
e foi usado por vários fabricantes, principalmente a Nokia. Porém o projeto não foi 
continuado. O 808 Pureview foi o último modelo Symbian lançado pela Nokia. 
https://www.tudocelular.com/novos-produtos/noticias/n204454/conheca-primeiro-celular-lancado-dois-sistemas.html
https://www.tudocelular.com/novos-produtos/noticias/n204454/conheca-primeiro-celular-lancado-dois-sistemas.html
https://www.tudocelular.com/novos-produtos/noticias/n204454/conheca-primeiro-celular-lancado-dois-sistemas.html
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 152
CAPÍTULO 14
VIRTUALIZAÇÃO E 
MÁQUINA VIRTUAL 
A IBM desenvolveu pela primeira vez o princípio de máquinasvirtuais na década de 
1960 para fornecer acesso interativo a computadores mainframe. Cada máquina virtual 
é uma cópia da máquina física, fornecendo aos usuários a ilusão de trabalhar de forma 
direta na máquina física. As máquinas virtuais também fornecem benefícios como 
isolamento, compartilhamento de recursos e a possibilidade de executar diferentes 
tipos e configurações de sistemas operacionais usando diferentes pilhas de tecnologia 
e software de configuração.
A partir desse contexto, sobre a virtualização podemos relacionar os seguintes 
elementos:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 153
De acordo com ALI e MEGHANATHAN (2011), embora a indústria use diversos 
termos para descrever essas técnicas, elas são geralmente conhecidas como emulação, 
virtualização completa, virtualização e virtualização no nível do sistema operacional 
(SO). Algumas das ferramentas de virtualização utilizadas são as seguintes: 
• VNUML (Virtual Network User Mode Linux): é um código aberto de uso geral que 
permite que os sistemas Linux virtuais sejam executados como aplicativos em um 
sistema Linux normal (conhecido como host). Como cada hóspede é apenas um 
aplicativo normal em execução como um processo no espaço do usuário, essa 
abordagem fornece ao usuário uma maneira de executar várias máquinas Linux 
virtuais em uma única peça de hardware, oferecendo uma excelente segurança e 
proteção sem afetar a configuração do ambiente host ou estabilidade.
• VMware Server: é um produto de virtualização gratuito para Sistemas operacionais 
Windows e Linux que implementam virtualização completa. Ele permite que um 
computador físico consiga hospedar algumas máquinas virtuais, com diversos 
sistemas operacionais convidados.
• Virtual Box: se trata de um software de virtualização x86 para implantar máquinas 
virtuais, destinadas a computadores desktop e servidores corporativos, que 
também implementam virtualização completa. Permite ser executado em um 
sistema operacional sem modificação.
• Qemu: é um emulador genérico de código aberto que atinge uma velocidade 
de emulação aceitável - usando a tradução dinâmica. Ele executa máquinas 
virtuais em Linux ou Windows. Possui vários comandos muito úteis para gerenciar 
máquinas virtuais.
• Xen: é uma ferramenta de virtualização de código aberto, baseada na técnica 
de para virtualização.
Ao longo desse capítulo será possível refletir sobre os princípios e aplicação do 
processo de Virtualização e máquina virtual.
14.1 Como funcionam as máquinas virtuais
Uma máquina virtual é um sistema executado em um sistema host. Os recursos de 
hardware físico do sistema host são alocados para o chamado hypervisor. Segundo 
DEITEL et al (2005), esse recurso permite o uso paralelo de sistemas convidados em 
um computador físico independente do sistema operacional hospedeiro. As máquinas 
virtuais operam independentemente umas das outras e não afetam umas às outras.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 154
Os recursos de hardware são gerenciados por um chamado hypervisor. Do ponto 
de vista da máquina virtual, apenas o poder de computação reservado, a memória 
central, o espaço no disco rígido e as conexões de rede estão disponíveis. 
ANOTE ISSO
As máquinas virtuais são executadas em um host – ou seja, um ambiente de 
computação. Ele simula as arquiteturas de hardware, que não necessariamente 
precisam existir.
Do ponto de vista do aplicativo, parece que o sistema operacional instalado em uma 
máquina virtual é instalado diretamente no local físico (máquina local). Aplicativos e 
sistemas operacionais não sabem que estão sendo processados em um ambiente virtual. 
A virtualização geralmente prejudica o desempenho das máquinas virtuais porque 
o próprio middleware de virtualização consome muitos recursos. 
Segundo DEITEL et al. (2005), os recursos do sistema são compartilhados entre 
diferentes máquinas virtuais. Ao armazenar o estado completo do sistema em alguns 
arquivos, você pode mover uma máquina virtual para outro sistema simplesmente 
copiando dados para ele. As máquinas virtuais podem ser executadas em qualquer 
sistema host físico compatível com seu ambiente de virtualização. 
Dependendo da implementação técnica e da arquitetura, podemos distinguir entre 
hipervisores Tipo 1 e Tipo 2. Os hipervisores Tipo 1 (hipervisores nativos) interagem 
diretamente com o hardware por meio de seus drivers. Por outro lado, os hipervisores 
tipo 2 são instalados no sistema operacional host e usam drivers de dispositivo para 
gerenciar recursos de hardware.
ANOTE ISSO
As máquinas virtuais baseadas em processo executam programas de computador 
em um ambiente independente de plataforma. As informações sobre o hardware 
ou sistema operacional subjacente estão ocultas. As máquinas virtuais baseadas 
em sistema suportam o compartilhamento de recursos de host físico entre várias 
máquinas virtuais.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 155
Nesse contexto, de acordo com ALI e MEGHANATHAN (2011), o VMware é uma 
plataforma de máquina virtual que permite que sistemas operacionais não modificados 
sejam usados como aplicativos em nível de usuário. Os sistemas operacionais em 
execução no VMware podem ser reiniciados, suspensos, modificados e reinstalados 
sem afetar a integridade de outros aplicativos em execução no computador. Um monitor 
de máquina virtual é uma camada de software adicional entre o hardware e o sistema 
operacional que virtualiza todo o hardware (recursos da máquina). 
É possível executar várias máquinas virtuais simultaneamente e separar cada 
máquina virtual do hardware real e de outras funções subjacentes do sistema. Ele 
cria a ilusão de hardware de um computador comum em uma máquina virtual. O 
VMware permite que você execute vários sistemas operacionais na mesma máquina 
ao mesmo tempo, cada sistema operacional em sua própria VM. 
Segundo ALI e MEGHANATHAN (2011), o sistema operacional original executado 
diretamente no hardware real é chamado de “sistema operacional host”. O nível 
de VMware é baixo o suficiente para que o sistema operacional convidado aceite 
interrupções de hardware (como um timer) e se comporte como se fosse o único 
sistema operacional da máquina. Ao mesmo tempo, fornece isolamento para que os 
erros em um sistema operacional convidado não afetem outros sistemas operacionais 
convidados ou plataformas. Por exemplo, se o sistema operacional convidado falhar, 
o sistema host não falhará. Ao contrário dos emuladores de software, a maior parte 
do código executado em uma máquina virtual é executada diretamente no hardware 
sem explicação.
Sistemas operacionais atualmente suportados no VMware incluem Windows 
95/98/2000/NT, FreeBSD, Solaris, Novell Netware, DOS e Linux, todos executados 
sem modificações. Teoricamente, qualquer SO que possa ser executado em uma 
arquitetura x86 pode ser executado como um sistema operacional convidado, pois 
verá um ambiente virtualizado completo. Para sistemas operacionais host, o VMware 
atualmente é executado e tem suporte no Windows Vista, XP, 2000/NT e Linux.
Os dispositivos de software são desenvolvidos por fornecedores independentes de 
software e fornecidos para que os aplicativos de software sejam pré-instalados e pré-
configurados. Um dispositivo de software geralmente inclui um sistema operacional 
personalizado e otimizado e o aplicativo de software empacotado dentro dele. Um 
dispositivo virtual é definido como uma imagem mínima de máquina virtual que contém 
o dispositivo de software projetado para ser executado em um ambiente virtualizado. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 156
Além disso, podemos construir dispositivos personalizados ou pacotes para ensino, 
experimentação de software, bem como análise de desempenho e rede.
A partir desse contexto, sobre os benefíciosda virtualização, podemos relacionar 
os seguintes elementos:
Uma grande vantagem das máquinas virtuais é que elas são independentes do 
sistema operacional do seu PC principal. Estando em uma chamada “sandbox” (área 
isolada), o usuário pode utilizar a VM como uma espécie de ambiente de teste, para 
experimentar novos programas, por exemplo. Além disso, você pode acessar sistemas 
e dados infectados por vírus por meio de máquinas virtuais sem espalhar malware 
em seu computador principal.
Segundo OLIVEIRA et. al. (2004), uma máquina virtual é basicamente um computador 
virtual. Isso significa que ele oferece as mesmas funções de um computador físico, 
mas na verdade é “apenas” uma coleção de arquivos de computador executados em 
um computador físico.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 157
Por fim, podemos observar o Quadro 1 que apresenta alguns possíveis usos de 
máquinas virtuais.
Possíveis usos de máquinas virtuais.
Teste de 
software, sistema 
operacional e 
aplicativos
Os desenvolvedores de software precisam testar seus aplicativos em diferentes 
ambientes, mas não são os únicos. Toda organização deve testar uma atualização 
crítica em uma instância de VM para identificar possíveis incompatibilidades 
antes de implantá-la em toda a empresa. 
A execução desses testes em VMs é mais fácil e econômica do que em várias 
máquinas físicas individuais.
Execução de 
software legado
Algumas organizações têm aplicativos personalizados ou especializados que 
não podem ser executados em um sistema operacional moderno, mas com os 
quais ainda precisam trabalhar. 
Os usuários que precisam desses aplicativos podem executá-los em um sistema 
operacional herdado em uma VM.
Executar software 
projetado para 
outro sistema 
operacional
Alguns aplicativos estão disponíveis apenas para uma plataforma específica. 
Além disso, alguns usuários com necessidades específicas podem ter hardware 
diferente do restante da empresa, mas ainda assim precisam acessar os 
aplicativos padrão da empresa. 
Nesses casos, uma VM pode ser usada para executar software projetado para um 
sistema operacional diferente do sistema operacional nativo do computador host.
Executando 
aplicativos SaaS 
(Software-as-a-
Service)
É um modelo em que o software é entregue aos usuários na nuvem. Os usuários 
de SaaS «inscrevem-se» em um aplicativo que acessam pela Internet, em vez 
de comprá-lo uma vez e instalá-lo em seus computadores. 
As VMs na nuvem são normalmente usadas para fornecer o poder de computação 
para os aplicativos SaaS e para fornecer os próprios aplicativos aos usuários.
Armazenamento e 
backup de dados
Os serviços de VM baseados em nuvem são populares para armazenar arquivos 
porque os dados podem ser acessados de qualquer local na Internet. Além disso, 
as VMs em nuvem geralmente têm melhor redundância, menor manutenção e 
escalabilidade mais fácil do que os servidores locais.
Serviços 
Hospedados
Serviços como Serviços como gerenciamento de acesso e e-mail geralmente 
podem ser hospedados com mais rapidez e economia em VMs na nuvem do 
que em um data center local. Além disso, ao executar esses serviços em VMs 
em nuvem, o provedor de nuvem é responsável pela manutenção e segurança.
Quadro 1 - Possíveis usos de máquinas virtuais.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 158
ISTO ESTÁ NA REDE
As Máquinas Virtuais do Microsoft Azure são um dos serviços de computação em 
nuvem mais populares que permitem aos usuários criar e executar os recursos 
sob demanda. O Azure oferece várias opções para diferentes cargas de trabalho, 
incluindo sistemas operacionais Windows e Linux, vários tamanhos e configurações 
e recursos de alta disponibilidade e escalabilidade.
Os usuários também podem se beneficiar da integração com outros serviços do 
Azure, como armazenamento, rede, segurança e gerenciamento. As Máquinas 
Virtuais do Azure oferecem aos usuários mais controle e flexibilidade sobre sua 
infraestrutura de nuvem, reduzindo custos e complexidade.
Para ler a matéria na íntegra, acesse o seguinte link: https://www.serverwatch.
com/virtualization/virtual-machines/. 
14.2 Tipos de Virtualização
Em termos gerais, existem dois tipos de máquinas virtuais: VMs de processo e 
VMs de sistema. Uma VM de processo, também conhecida como VM de aplicativo ou 
Managed Runtime Environment (MRE), é uma plataforma virtual de processo único 
que é executada como um aplicativo em uma máquina host. Assim que o processo 
terminar, a VM será excluída (SILBERSCHATZ, 2010).
Uma VM de sistema fornece um sistema completo e funciona como um sistema 
bare metal. Cada VM do sistema pode executar seu próprio sistema operacional e 
vários aplicativos nesse sistema operacional. Esse tipo de sistema requer o uso de 
um hipervisor para acessar os recursos de hardware da máquina host.
A partir desse contexto, de acordo com ALI e MEGHANATHAN (2011), podemos 
relacionar os seguintes tipos de virtualização: 
https://www.serverwatch.com/virtualization/virtual-machines/
https://www.serverwatch.com/virtualization/virtual-machines/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 159
A virtualização de aplicativos permite que os usuários acessem remotamente 
aplicativos em servidores. O servidor armazena todas as suas informações pessoais 
e outros recursos do aplicativo, mas você também pode executar o aplicativo em sua 
estação de trabalho local pela Internet. Um exemplo disso seria um usuário que precisa 
executar duas versões diferentes do mesmo programa. As tecnologias que usam a 
virtualização de aplicativos incluem aplicativos hospedados e modelos em cluster. 
A virtualização de rede é a capacidade de executar várias redes virtuais. Isso pode ser 
administrado pelas partes, que podem manter o segredo uma da outra. A virtualização 
de rede cria e implanta redes virtuais, switches, roteadores, firewalls, balanceadores 
de carga, VPNs e cargas de trabalho são concluídos em dias ou até semanas.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 160
Título: Representação da rede privada virtual (VPN)
Fonte: https://br.freepik.com/vetores-gratis/rede-com-quatro-laptops-conexao-com-a-internet-armazenamento-de-dados-em-nuvem-sala-de-
servidores_3629653.htm#page=2&query=m%C3%A1quina%20virtual%20servidor&position=0&from_view=search&track=ais 
A virtualização de desktop torna possível armazenar remotamente os sistemas 
operacionais dos usuários em um servidor central. Isso permite que os usuários 
acessem seus desktops de praticamente qualquer lugar em suas máquinas. Áreas de 
trabalho virtuais são necessárias para usuários que precisam de sistemas operacionais 
específicos além do Windows Server. 
Os principais benefícios da virtualização de desktop são a mobilidade do usuário, 
portabilidade e gerenciamento mais fácil de instalações de software, atualizações e 
patches. A virtualização de armazenamento é um conjunto de servidores gerenciados 
por um sistema de armazenamento virtual. O servidor não sabe exatamente onde os 
dados estão armazenados. Em vez disso, o gerenciamento de armazenamento pode 
ser mantido como um único repositório e usado de várias fontes.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 161
Título: Representação da virtualização de armazenamento
Fonte: https://br.freepik.com/vetores-gratis/rede-com-quatro-laptops-conexao-com-a-internet-armazenamento-de-dados-em-nuvem-sala-de-
servidores_3629653.htm#page=2&query=m%C3%A1quina%20virtual%20servidor&position=0&from_view=search&track=ais 
Já a virtualização de Servidores é um tipo de virtualização em que ocorre o 
mascaramento dos recursos do servidor. Aqui, o servidor central (servidor físico) é 
dividido em vários servidores virtuais diferentes, alterando a identidade e processadores. 
Assim, cada sistema pode operar seus próprios sistemasoperacionais de forma isolada. 
Onde cada subservidor conhece a identidade do servidor central. Provoca um aumento 
no desempenho e reduz o custo operacional pela implantação dos recursos do servidor 
principal em um recurso do subservidor. Isso é benéfico na migração virtual, reduz o 
consumo de energia, reduz os custos de infraestrutura, etc.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 162
ISTO ACONTECE NA PRÁTICA
A virtualização de servidor é o processo de particionar um único servidor físico em 
vários servidores virtuais exclusivos e isolados, cada um capaz de executar seu 
sistema operacional e aplicativos. As empresas o utilizam para maximizar o uso 
de hardware, melhorando drasticamente a escalabilidade do sistema e diminuindo 
significativamente os custos.
De acordo com Joshi (2023), podemos relacionar algumas vantagens da 
virtualização do servidor: 
• A virtualização de servidores é o maior segmento no mercado de virtualização.
• As empresas de TI observaram uma redução de 40% nos custos de hardware e 
manutenção após a virtualização.
• As máquinas virtuais levam de 50 a 90% menos tempo em tarefas únicas de 
gerenciamento de servidor. 
• 50% dos custos de hardware e manutenção podem ser economizados com a 
consolidação de vários aplicativos em um único servidor.
Para ler a matéria na íntegra, acesse o seguinte link: https://learn.g2.com/
virtualization-statistics. 
Por fim, a virtualização de dados é o tipo de virtualização em que os dados são 
coletados de várias fontes e gerenciados em um único local sem saber mais sobre 
as informações técnicas, a maneira como os dados são coletados, armazenado e 
formatado, em seguida, organiza esses dados logicamente para que sua visualização 
virtual possa ser acessada pelas pessoas e partes interessadas e usuários através 
dos vários serviços em nuvem. Diversas empresas estão fornecendo seus serviços 
como Oracle, IBM, At scale, Cdata etc.
14.3 Comparação de desktops virtuais e máquinas virtuais
Existem duas maneiras diferentes pelas quais as empresas podem aproveitar a 
virtualização. As empresas também podem combinar as duas opções em sua rede, 
dependendo de suas necessidades. 
A primeira opção são os desktops virtuais. Essa tecnologia cria uma estação de 
trabalho virtual que fornece uma experiência de usuário padronizada e comum em 
todos os desktops virtuais em uma rede central. Os usuários podem acessar facilmente 
sua área de trabalho virtual pela Internet e trabalhar com uma interface de usuário 
consistente, independentemente do dispositivo que usam para acessá-la. A interface 
da área de trabalho é limitada e os usuários só têm acesso a determinados aplicativos. 
https://learn.g2.com/virtualization-statistics
https://learn.g2.com/virtualization-statistics
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 163
Essas estações de trabalho não usam nenhum recurso de hardware virtual, como 
CPUs, memória ou armazenamento, e não ficam mais ativas quando o usuário faz 
logoff (SILBERSCHATZ, 2010).
As máquinas virtuais, por outro lado, oferecem uma experiência de PC virtual 
personalizável que fornece ao usuário recursos de hardware específicos. Uma gama 
mais ampla de aplicativos está disponível em VMs do que em desktops virtuais. As 
VMs são isoladas de todas as outras VMs na rede e permanecem no sistema mesmo 
após o logoff do usuário. Eles basicamente oferecem a mesma experiência de usuário 
de um PC de mesa, mas sem necessidade de manutenção de hardware.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 164
CAPÍTULO 15
PROCESSOS / ESCALONAMENTO 
Os sistemas operacionais modernos foram projetados com um foco principal em 
mente: o uso interativo de vários aplicativos e serviços executados ao mesmo tempo. 
Esta é uma escolha sensata para qualquer configuração de área de trabalho em que você 
ouvirá música enquanto escreve um documento e precisa realizar pesquisas em um 
navegador em segundo plano; o próprio sistema operacional já executa constantemente 
inúmeras tarefas em segundo plano para limpar a memória, verificar o status do 
dispositivo, fornece mecanismos de notificação, exibir conteúdo na tela etc. ou memória 
disponível) realmente não corresponde a essa especificação, levando a problemas no 
uso de recursos, respectivamente na configuração (DEITEL et. al. 2005).
Iremos observar que um programa de computador é uma coleção de instruções 
que executa uma tarefa específica quando executada por um computador. Quando 
comparamos um programa com um processo, podemos concluir que um processo é 
uma instância dinâmica de um programa de computador. Uma parte de um programa 
de computador que executa uma tarefa bem definida é conhecida como algoritmo. Uma 
coleção de programas de computador, bibliotecas e dados relacionados é chamada 
de software.
Quando um processo é executado, ele passa por diferentes estados. Esses estágios 
podem diferir em diferentes sistemas operacionais e os nomes desses estados também 
não são padronizados.
A partir desse contexto, discutiremos sobre os princípios dos processos e 
escalonamento dos sistemas operacionais.
15.1 Princípios da escalabilidade
De acordo com DEITEL et. al. (2005), em TI, o termo escalabilidade é usado para 
duas áreas:
• É a capacidade de um aplicativo ou produto de computador (hardware e software) 
continuar a funcionar quando modificado em tamanho ou volume para atender 
às necessidades de um usuário. Ele normalmente é dimensionado para um 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 165
tamanho ou volume maior. A escala pode ser realizada no próprio produto (por 
exemplo, a memória principal ou armazenamento em sistemas de computador) 
ou em um novo contexto (por exemplo, um novo sistema operacional).
• Escalabilidade é a capacidade não apenas de funcionar na situação recém-
dimensionada, mas também de aproveitá-la. Por exemplo, um aplicativo é 
escalável se você movê-lo de um sistema operacional menor para um maior 
e pode tirar vantagem do sistema operacional maior. Além do desempenho 
(tempo de resposta), isso também significa um número maior de usuários com 
os quais o aplicativo pode trabalhar.
Como regra, é mais fácil ter escalabilidade para cima do que para baixo, já que 
os desenvolvedores geralmente precisam usar todos os recursos de um sistema ao 
programar (por exemplo, o armazenamento completo). Por exemplo, a redução pode ser 
usada para testar se você pode obter os mesmos resultados em um ambiente menor. 
ANOTE ISSO
A escalabilidade é a capacidade de uma instalação ou sistema de TI de se adaptar 
aos requisitos de desempenho crescentes ou reduzidos no nível de hardware e 
software. Na prática, porém, essa escala significa crescimento. 
Em TI, os processos são considerados escaláveis se puderem crescer ou reverter 
com as tarefas atribuídas. Um ativo ou sistema de TI que foi dimensionado com 
sucesso continuará a funcionar mesmo que tenha sido redimensionado para 
atender aos novos requisitos de um operador. No entanto, escalabilidade não 
significa apenas que o sistema ou aplicativo recém-dimensionado funciona, mas 
também que suas vantagens podem ser usadas. Por exemplo, um aplicativo é 
considerado escalável se puder ser transferido de um sistema operacional menor 
para um maior para aproveitar um sistema operacional maior na forma de tempos 
de resposta mais rápidos ou um número maior de usuários.
Basicamente, aumentar a escala é mais fácil do que reduzir. Isso se deve ao fato 
de que muitas vezes os desenvolvedores precisam usar todos os recursos de um 
sistema para isso. Uma redução mostra, entre outras coisas, se um desempenho 
semelhante também pode ser realizado em um ambiente “menor”.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 166
15.1.1 Dimensionamento vertical versus horizontal
O desempenho de um sistemapode ser aumentado de duas maneiras diferentes:
Sobre o dimensionamento vertical (escala vertical), observamos que se os recursos 
forem adicionados dentro de uma unidade lógica, haverá escalabilidade vertical (scale 
up). Ou seja, o aumento de desempenho vem da adição de recursos a um nó/máquina 
dentro do sistema. Exemplos disso seriam: aumentar o espaço de armazenamento, 
adicionar uma CPU, atualizar a memória, instalar uma placa gráfica mais potente ou 
substituir componentes menos potentes. Para a computação em nuvem, por exemplo, 
isso significa que as máquinas virtuais (VM) estão sendo expandidas (TANENBAUM, 
2003).
Ao aumentar, o software é muito fácil de personalizar ou, às vezes, não requer 
nenhuma personalização. Na maioria das vezes, você não precisa alterar uma linha 
de código para obter um aumento de desempenho com a expansão. No entanto, mais 
cedo ou mais tarde, você atingirá um limite em que um computador não poderá ser 
atualizado porque o melhor hardware já está sendo usado.
A partir desse princípio, podemos observar as diferenças do dimensionamento 
horizontal (dimensionar). Do ponto de vista do hardware, não há limites para o 
dimensionamento horizontal (scale out) em contraste com o dimensionamento vertical. 
Porque aqui se entende o aumento no desempenho de um sistema adicionando 
computadores/nós adicionais. Por outro lado, a eficiência desse escalonamento 
depende muito da implementação do software, pois nem todos os softwares podem 
ser paralelizados igualmente (TANENBAUM, 2003).
Em outras palavras, pode-se dizer que o dimensionamento horizontal ocorre quando 
outras instâncias são adicionadas para que a carga de trabalho crescente possa 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 167
ser processada com o mesmo nível de desempenho. Em um datacenter, as tarefas 
pendentes são então distribuídas por vários computadores ou servidores. Na prática, 
isso é resolvido fazendo com que um computador atue como distribuidor das cargas 
de trabalho dos outros.
A coordenação como um balanceador de carga é sempre necessária quando 
muitas unidades de recursos devem trabalhar juntas em escala horizontal. Portanto, 
o chamado fator de escalabilidade (proporção de desempenho adicional para 
recursos adicionais usados) geralmente é menor com a escalabilidade horizontal. O 
dimensionamento horizontal geralmente é mais barato do que o dimensionamento 
vertical. O dimensionamento vertical costuma ser muito mais eficiente em termos de 
sobrecarga do que o dimensionamento horizontal.
De acordo com SILBERSCHATZ (2010), um sistema escalável é aquele que pode 
lidar com mudanças rápidas nas cargas de trabalho e nas demandas dos usuários. 
A escalabilidade é a medida de quão bem esse sistema responde às mudanças 
adicionando ou removendo recursos para atender às demandas. A arquitetura é o 
hardware, software, tecnologia e práticas recomendadas usadas para construir as 
redes, aplicativos, processos e serviços que compõem todo o seu sistema. Seu sistema, 
que inclui arquitetura, serviços, produtos e tudo que define sua marca, é considerado 
escalável quando:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 168
Por exemplo, um site escalável e bem projetado funcionará tão bem se um ou 
milhares de usuários o acessarem simultaneamente. Não deve haver nenhuma 
diminuição perceptível na funcionalidade à medida que mais usuários fazem login.
ISTO ESTÁ NA REDE
Entre as principais metas, missões e objetivos do departamento de TI está a 
necessidade de criar um canal claro para permitir o escalonamento de aplicativos, 
repositórios de dados, serviços de TI e todos os tipos de mecanismos e funções do 
sistema interno. 
Escalabilidade em si é um termo aplicado a um aplicativo, um processo de sistema 
de TI, um modelo algorítmico, uma porção de dados (ou banco de dados inteiro), 
um componente de tecnologia (como uma interface de programação de aplicativo 
(API), um agente do sistema ou uma função de orquestrador de algum tipo), um 
mecanismo de software (como uma máquina de IA ou um serviço de análise de big 
data) ou, de fato, uma tecnologia produtizada não necessariamente definida como 
um aplicativo ou serviço.
Para ler a matéria na íntegra, acesse o seguinte link: https://www.forbes.
com/sites/adrianbridgwater/2022/07/04/what-does-it-scalability-actually-
mean/?sh=1934c6453429. 
15.1.2 O que é um padrão de escalabilidade?
Os padrões arquitetônicos no desenvolvimento de computação são um conjunto 
de técnicas de desenvolvimento e programação que comprovadamente resolvem 
problemas comuns no desenvolvimento de sistemas de computador. Esses padrões 
têm boas estruturas de design, têm propriedades bem definidas e resolveram problemas 
com sucesso no passado. 
Mas isso não significa que todo padrão de escalabilidade funcionará para você. 
Seu desafio é selecionar padrões apropriados e adaptá-los para resolver problemas 
exclusivos de seu sistema. Os padrões de escalabilidade economizam seu tempo 
porque muito do trabalho foi feito para você.
15.2 Gerenciamento e programação de processos
Notavelmente, quando um processo é interrompido por uma interrupção e deve continuar 
em um ponto posterior, seu status precisa ser (temporariamente) armazenado. Isso significa 
que todas as informações relevantes do processo - em particular os estados do registro, 
https://www.forbes.com/sites/adrianbridgwater/2022/07/04/what-does-it-scalability-actually-mean/?sh=1934c6453429
https://www.forbes.com/sites/adrianbridgwater/2022/07/04/what-does-it-scalability-actually-mean/?sh=1934c6453429
https://www.forbes.com/sites/adrianbridgwater/2022/07/04/what-does-it-scalability-actually-mean/?sh=1934c6453429
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 169
como o contador de programa atual, etc. - precisam ser extraídas do processador e salvas 
no chamado “bloco de controle de processo”. Este PCB é mantido em uma região de 
memória dedicada pelo sistema operacional e pode, obviamente, hospedar entradas de 
vários processos, pois apenas um pode estar ativo no momento. Quando um processo 
deve ser continuado, esta informação de estado precisa ser recuperada e a CPU precisa 
obter as informações correspondentes de volta em seus registradores para continuar 
processando a partir da última posição do contador de programa (TANENBAUM, 2003).
É tarefa do escalonador cuidar da sequência de execução, ou seja, quando e como 
alternar entre os processos da aplicação e como (re)armazenar seu estado de execução. 
Existem diferentes mecanismos de escalonamento, que não iremos detalhar aqui, mas 
a ideia geral é sempre garantir a disponibilidade interativa de todos os processos em 
execução (com maior ou menor prioridade). 
Cada processo será interrompido porque está aguardando uma entrada (ou o 
resultado de uma chamada do sistema), excedeu seu time-slot disponível ou está 
sendo interrompido devido a eventos de maior prioridade.
15.2.1 Memória virtual
Até agora, presumimos indiretamente que os processos apenas preenchem o espaço 
de memória consecutivamente, mas isso levaria a vários problemas: em primeiro 
lugar, os processos teriam que usar apenas o endereçamento relativo para qualquer 
chamada, ou teriam que lidar com um deslocamento dinâmico. Em segundo lugar, 
no entanto, sempre que a memória é liberada com um novo processo iniciado, a 
memória geral torna-se fragmentada. Para evitar espaço não utilizado, a memória 
deve ser constantemente reorganizada (“desfragmentação”) ou o processo terá que 
se espalhar por vários segmentos. 
Para garantir que uma aplicação continue a funcionar sem problemas, 
independentemente da sua distribuição e localização na memória, mas também para 
evitar potenciais conflitos entre várias aplicações, o espaço da memória é “virtualizado”. 
Isso significa que cada processo obtém seu próprio espaço de endereço que mapeia 
para uma(s) região(ões) de memóriadiscreta(s) na memória física — em outras palavras, 
nenhum processo conhece ou pode acessar os dados de qualquer outro aplicativo - 
com exceção do sistema operacional. O sistema operacional precisa manter essas 
regiões de memória e garantir que as demandas por mais memória ou liberação de 
espaço sejam atendidas em tempo hábil.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 170
15.3 O que é um processo no sistema operacional e quais são os diferentes 
estados de um processo?
No Sistema Operacional, um Processo é algo que está em execução no momento. 
Assim, um programa ativo pode ser chamado de Processo. Por exemplo, quando você 
deseja pesquisar algo na web, inicia um navegador. Então, isso pode ser um processo. 
Outro exemplo de processo pode ser iniciar seu reprodutor de música para ouvir uma 
música legal de sua escolha.
Um processo tem vários atributos associados a ele. Alguns dos atributos de um 
Processo são:
ANOTE ISSO
De acordo com TANENBAUM e WOODHULL (2008), um processo está executando 
ativamente um software ou um código de computador. Qualquer procedimento 
deve ser realizado em uma ordem precisa. Uma entidade que ajuda a descrever a 
unidade de trabalho fundamental que deve ser implementada em qualquer sistema 
é chamada de processo. Em outras palavras, criamos programas de computador 
como arquivos de texto que, ao serem executados, criam processos que executam 
todas as tarefas listadas no programa. Quando um programa é carregado na 
memória, ele pode ser dividido em quatro componentes pilha, heap, texto e dados 
para formar um processo.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 171
15.3.1 Gerenciamento de processos 
Um processo é um programa em execução. Por exemplo, quando escrevemos um 
programa em C ou C++ e o compilamos, o compilador cria um código binário. O código 
original e o código binário são ambos programas. Quando realmente executamos o 
código binário, ele se torna um processo. 
Um processo é uma entidade ‘ativa’ em vez de um programa, que é considerado 
uma entidade ‘passiva’. Um único programa pode criar muitos processos quando 
executado várias vezes; por exemplo, quando abrimos um arquivo *.exe ou binário 
várias vezes, várias instâncias começam (vários processos são criados). 
A partir desse contexto, segundo TANENBAUM e WOODHULL (2008), podemos 
observar as características do estado do processo a partir da representação da figura 
a seguir:
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 172
O gerenciamento de processos refere-se às técnicas e estratégias usadas pelas 
organizações para projetar, monitorar e controlar seus processos de negócios para atingir 
seus objetivos de forma eficiente e eficaz. Envolve identificar as etapas envolvidas na 
conclusão de uma tarefa, avaliar os recursos necessários para cada etapa e determinar 
a melhor maneira de executar a tarefa.
O gerenciamento de processos pode ajudar as organizações a melhorar sua eficiência 
operacional, reduzir custos, aumentar a satisfação do cliente e manter a conformidade com 
os requisitos regulamentares. Envolve analisar o desempenho dos processos existentes, 
identificar gargalos e fazer alterações para otimizar o fluxo do processo.
O gerenciamento de processos inclui várias ferramentas e técnicas, como mapeamento 
de processos, análise de processos, melhoria de processos, automação de processos e 
controle de processos. Ao aplicar essas ferramentas e técnicas, as organizações podem 
agilizar seus processos, eliminar o desperdício e melhorar a produtividade.
No geral, o gerenciamento de processos é um aspecto crítico das operações de 
negócios modernas e pode ajudar as organizações a atingirem suas metas e se manterem 
competitivas no mercado atual em rápida mudança. Se o sistema operacional oferece 
suporte a vários usuários, os serviços são muito importantes. Nesse sentido, os sistemas 
operacionais devem acompanhar todos os processos concluídos, programá-los e despachá-
los um após o outro. Mas o usuário deve sentir que tem o controle total da CPU.
De acordo com OLIVEIRA et. al. (2004), algumas das chamadas de sistema nesta 
categoria são as seguintes.
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 173
15.3.2 Características de um programa
De acordo com SILBERSCHATZ (2010), programa é um conjunto de instruções que 
são executadas quando uma determinada tarefa tem permissão para concluir essa 
determinada tarefa. Os programas geralmente são escritos em uma Linguagem de 
Programação como C, C++, Python, Java, R, C# (C sharp), etc. Ou seja, um programa de 
computador é um conjunto de instruções que, quando executadas por um computador, 
realizam uma determinada tarefa
A partir desse contexto, é possível observar os dados do Quadro 1 que apresenta 
as diferenças entre processo e programa
Processo Programa
Um processo está executando ativamente um 
software ou um código de computador. Qualquer 
procedimento deve ser realizado em uma ordem 
precisa. Uma entidade que ajuda a descrever a 
unidade de trabalho fundamental que deve ser 
implementada em qualquer sistema é chamada 
de processo.
Programa é um conjunto de instruções que são 
executadas quando uma determinada tarefa tem 
permissão para concluir essa determinada tarefa.
O processo é dinâmico por natureza. O programa é estático por natureza.
O processo é um ativo na natureza O programa é de natureza passiva.
O processo é criado durante a execução e é 
carregado diretamente na memória principal.
O programa já existe na memória e está presente 
na memória secundária.
Processo tem seu próprio sistema de controle 
conhecido como Bloco de Controle de Processo.
O programa não possui nenhum sistema de controle. 
Ele é chamado apenas quando especificado e 
executa todo o programa quando chamado.
O processo muda de tempos em tempos por si só.
O programa não pode ser alterado sozinho. Deve 
ser alterado pelo programador.
Um processo precisa de dados extras além 
dos dados do programa necessários para 
gerenciamento e execução.
O programa é basicamente dividido em duas 
partes. Uma é a parte do código e a outra parte é 
a parte dos dados.
Quadro 1 - Diferenças entre processo e programa
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 174
ISTO ACONTECE NA PRÁTICA
A escalabilidade do aplicativo refere-se à capacidade de um aplicativo para lidar com 
o crescimento, especialmente ao lidar com mais usuários e evoluir simultaneamente 
com suas necessidades de negócios. Especificamente, a escalabilidade está 
relacionada ao back-end e ao banco de dados do aplicativo e aos servidores nos 
quais eles estão hospedados (FANCHI, 2022).
Existem muitas abordagens para maximizar a escalabilidade, tanto do ponto de 
vista do desenvolvimento de aplicativos (uso de funções em nível de banco de 
dados, por exemplo) quanto do ponto de vista da infraestrutura (multi-threading, por 
exemplo).
De acordo com FANCHI (2022), desenvolvedores de qualidade, arquitetos de 
servidores e provedores de serviços de infraestrutura implementarão várias 
estratégias para atingir escalabilidade máxima. O benefício é que você pode 
adicionar com segurança mais recursos a aplicativos escaláveis sem se preocupar 
com impactos no desempenho do aplicativo. O objetivo fundamental de qualquer 
aplicativo é fornecer consistentemente altos níveis de funcionalidade e desempenho, 
quer você tenha 10 usuários ou 10 milhões.
Um back-end de aplicativo mal projetado ou configurado não pode atingir esse 
objetivo. A configuração pode ser corrigida com relativa facilidade na hora, mas um 
design ruim geralmente significa uma reconstrução completa do seu back-end - 
com despesas significativas.
Quando a escalabilidade não é priorizada desde o início, a popularidade inicial do 
aplicativo se tornará insustentável à medida que o número de usuáriosaumenta. 
Poucas coisas perseguem os usuários de um aplicativo mais rápido do que baixo 
desempenho, tempos de carregamento lentos e travamentos. 
Para ler a matéria na íntegra, acesse o seguinte link: https://backendless.com/
what-is-app-scaling-and-why-it-matters/#:~:text=Application%20scalability%20
refers%20to%20the,concurrently%20with%20your%20business%20needs. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 175
CONCLUSÃO
Ao longo desse capítulo discutimos que o sistema operacional é um dos sistemas 
muito importantes que servem de base para os usuários operarem seus computadores, 
smartphone e demais dispositivos.
Uma vez que está equipado com um mecanismo que permite utilizar o software 
descarregado para o seu computador ou smartphone, pode dizer-se que um SO é 
essencial para o funcionamento do dispositivo. Em outras palavras, os equipamentos 
não podem funcionar sem software. Por exemplo, se você deseja jogar em seu 
computador, precisará de vários softwares, como processadores de texto e software 
de jogos.
Vimos que uma as funções básicas do sistema operacional, podem ser relacionadas 
entre os seguintes itens: 
• Inicialização: gerencia a inicialização do dispositivo.
• Gerenciamento de memória: coordena os aplicativos do computador e aloca 
espaço para os vários programas instalados no computador.
• Segurança de dados: protege os dados do usuário contra os diversos ataques 
cibernéticos.
• Carregamento e execução: inicia e executa programas.
• Drive e Disk Management: gerencia unidades de computador e particiona discos.
• Controle de dispositivo: pode conceder ou negar acesso ao dispositivo.
• Interface do usuário: também chamada de interface do usuário, que permite 
aos usuários inserir e receber informações.
• Gerenciamento de processos: aloca espaço para permitir que o computador 
faça coisas, como armazenar e compartilhar informações.
A partir desse contexto, compreendemos que os sistemas operacionais são divididos 
em vários tipos diferentes, de acordo com os tipos de dispositivos em que operam e suas 
finalidades. O mais comum é um sistema operacional de uso geral para computadores, 
como computadores pessoais e servidores. Além do sistema operacional de uso geral, há 
também um sistema operacional incorporado especializado em controlar computadores 
dedicados para fins específicos incorporados em eletrodomésticos digitais e máquinas 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 176
industriais para fins de controle. Dentre eles, o SO projetado especificamente para a 
execução de programas de controle com altas características de tempo real, como o 
controle de unidades de acionamento de veículos.
Por fim, observamos que os sistemas operacionais amplamente utilizados para 
computadores pessoais incluem a série “ Windows “ da Microsoft e a série macOS 
(anteriormente Mac OS X) da Apple. Sistemas operacionais para servidores bem 
conhecidos incluem os chamados sistemas operacionais baseados em UNIX, como 
Linux e a série Windows Server, que é o Windows para servidores. Em termos de 
dispositivos móveis como smartphones e tablets, o Android da Google e o iOS da 
Apple (iPad OS/watchOS) dividem o mercado.
Foi bom compartilhar todo esse conhecimento com você!
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 177
ELEMENTOS COMPLEMENTARES 
LIVRO
Título: Fundamentos de Sistemas Operacionais (2015)
Autor: Greg Gagne, Peter Baer Galvin e Abraham 
Silberschatz 
Editora: LTC
Sinopse: A obra sobre os princípios e fundamentos 
dos Sistemas Operacionais. Ao longo da leitura, será 
possível observar que o sistema operacional é parte 
integrante de qualquer sistema computacional. Será 
abordada uma visão detalhada dos sistemas Linux e 
Windows que alguns usuários ainda têm dúvidas, além 
de apontar que o sistema operacional dos smartphones 
é o ponto forte da indústria atual, portanto devem ser 
analisados com atenção.
FILME
Título: Her 
Ano: 2014
Sinopse: O filme apresenta uma história de amor de 
ficção científica entre um homem melancólico e seu 
sistema operacional. O filme apresenta uma possível 
realidade que a humanidade poderia enfrentar se a 
dependência da tecnologia contemporânea avançasse 
demais. Muitas pessoas hoje sentem o que Theodore 
sentiu: que a realidade virtual oferece distrações 
sedutoras do desconforto de emoções como solidão 
e tédio. 
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 178
A gratificação instantânea e a confiabilidade 24 horas por dia das ferramentas digitais 
atraem os impulsos humanos que outros humanos nem sempre podem satisfazer, 
porém esse contexto apresenta que a hiperconexão leva a uma desconexão dos 
aspectos mais cruciais da realidade.
WEB
Título: Uso de Ferramentas de Análise Estática para Identificar Vulnerabilidades em 
Sistemas Operacionais em C/C++ para Dispositivos IoT
Descrição: O artigo apresenta os resultados de uma análise estática do código-fonte 
de um sistema operacional de dispositivo de Internet das Coisas (IoT). Para essa 
pesquisa, foram observados seis sistemas operacionais: RIOT, Contiki, FreeRTOS, 
AmazonFreeRTOS, Particle e Zephyr para compilar uma lista de bugs e possíveis 
vulnerabilidades nesses sistemas. 
Ao final da pesquisa, será possível observar o número total de erros encontrados em 
diferentes versões do sistema operacional.
Disponível em: https://sol.sbc.org.br/journals/index.php/reic/article/view/2853. Acesso 
em: 09 Jun. 2023.
https://sol.sbc.org.br/journals/index.php/reic/article/view/2853
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 179
REFERÊNCIAS
ALI, I.; MEGHANATHAN, N. Virtual Machines And Networks – Installation, 
Performance, Study, Advantages And Virtualization Options. International Journal of 
Network Security & Its Applications (IJNSA), Vol.3, No.1, 2011. Disponível em: https://
arxiv.org/ftp/arxiv/papers/1105/1105.0061.pdf. Acesso em: 02 Jun. 2023.
ANDLEIGH, P. K. UNIX system architecture. Englewood Cliffs: Prentice-Hall, 1990.
BACH, M. J. The Design of the UNIX Operating System. Prentice-Hall, 1987.
BRIDGWATER, A. What Does IT Scalability Actually Mean?. 2022. Disponível 
em: https://www.forbes.com/sites/adrianbridgwater/2022/07/04/what-does-it-
scalability-actually-mean/?sh=1934c6453429. Acesso em: 03 Jun. 2023.
DAIGLE, L. Linux RTOS from Concurrent Real-Time launches to support Jetson 
AGX Orin platform. 2023. Disponível em: https://militaryembedded.com/avionics/
software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-
platform. Acesso em: 03 Jun. 2023.
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais, 3ª. Edição, 
Editora Prentice-Hall, 2005.
DRULLIS, G. Tecnologias do passado: Firefox OS. 2023. Disponível em: https://
www.mobiletime.com.br/museu-movel/17/02/2023/tecnologias-do-passado-firefox-
os/. Acesso em: 08 Jun. 2023.
FANCHI, C. What Is App Scaling and Why It Matters. 2022. Disponível em: https://
backendless.com/what-is-app-scaling-and-why-it-matters/#:~:text=Application%20
scalability%20refers%20to%20the,concurrently%20with%20your%20business%20
needs. Aceso em: 03 Jun. 2023.
FORTUNE BUSINESS INSIGHTS. Server Operating System Market to Surpass Volume 
of 54,748 thousand by 2030, exhibiting a CAGR of 12.7%. 2023. Disponível em: https://
https://arxiv.org/ftp/arxiv/papers/1105/1105.0061.pdf
https://arxiv.org/ftp/arxiv/papers/1105/1105.0061.pdf
https://www.forbes.com/sites/adrianbridgwater/2022/07/04/what-does-it-scalability-actually-mean/?sh=1934c6453429
https://www.forbes.com/sites/adrianbridgwater/2022/07/04/what-does-it-scalability-actually-mean/?sh=1934c6453429
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
https://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platformhttps://militaryembedded.com/avionics/software/linux-rtos-from-concurrent-real-time-launches-to-support-jetson-agx-orin-platform
https://www.mobiletime.com.br/museu-movel/17/02/2023/tecnologias-do-passado-firefox-os/
https://www.mobiletime.com.br/museu-movel/17/02/2023/tecnologias-do-passado-firefox-os/
https://www.mobiletime.com.br/museu-movel/17/02/2023/tecnologias-do-passado-firefox-os/
https://finance.yahoo.com/news/server-operating-system-market-surpass-070500343.html
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 180
finance.yahoo.com/news/server-operating-system-market-surpass-070500343.html. 
Acesso em: 03 Jun. 2023.
GONÇALVES, A. L. D. Criminosos distribuem ‘vírus do anúncio’ em 60 mil apps para 
Android. 2023. Disponível em: https://www.tecmundo.com.br/seguranca/264951-
criminosos-distribuem-virus-anuncio-60-mil-apps-android.htm. Acesso em: 08 Jun. 
2023.
HELP NET SECURITY. Vulnerabilities impacting multiple QNAP operating 
systems (CVE-2022-27597, CVE-2022-27598). 2023. Disponível em: https://www.
helpnetsecurity.com/2023/04/04/cve-2022-27597-cve-2022-27598/. Acesso em: 08 
Jun. 2023.
JOSHI, S. Unveiling the Future: 32 Virtualization Statistics and Trends. 2023. 
Disponível em: https://learn.g2.com/virtualization-statistics. Acesso em: 07 Jun. 2023.
NJUGUNA, B. The supercloud debate: A platform, architecture or operating system?. 
2023. Disponível em: https://siliconangle.com/2023/01/20/supercloud-debate-
platform-architecture-operating-system-supercloud2/. Acesso em: 03 Jun. 2023.
OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas Operacionais, 3ª Edição 
(série didática da UFRGS), Editora Sagra-Luzzato, 2004.
SILBERSCHATZ, A. Sistemas operacionais: Conceitos e Aplicações. Rio de Janeiro: 
Campus, 2001.
SILBERSCHATZ, A; GALVIN, P e GAGNE, G.; Sistemas Operacionais: Conceitos e 
Aplicações. Rio de Janeiro: Editora Campus, 2000.
SILBERSCHATZ, P. B. G.; GAGNE, G. Fundamentos de Sistemas Operacionais. Editora 
LTC, 2010.
STALLINGS, W. Operating Systems: Internals and Design Principles – Third Edition. 
Prentice Hall, 1998.
STEINMETZ, R., NAHRSTEDT, K. Multimedia Operating Systems. In: Multimedia 
Systems. X.media.publishing. Springer, Berlin, Heidelberg. 2004. Disponível em: https://
https://finance.yahoo.com/news/server-operating-system-market-surpass-070500343.html
https://www.tecmundo.com.br/seguranca/264951-criminosos-distribuem-virus-anuncio-60-mil-apps-android.htm
https://www.tecmundo.com.br/seguranca/264951-criminosos-distribuem-virus-anuncio-60-mil-apps-android.htm
https://www.helpnetsecurity.com/2023/04/04/cve-2022-27597-cve-2022-27598/
https://www.helpnetsecurity.com/2023/04/04/cve-2022-27597-cve-2022-27598/
https://learn.g2.com/virtualization-statistics
https://siliconangle.com/2023/01/20/supercloud-debate-platform-architecture-operating-system-supercloud2/
https://siliconangle.com/2023/01/20/supercloud-debate-platform-architecture-operating-system-supercloud2/
SISTEMAS OPERACIONAIS
PROF. MARCELO HENRIQUE DOS SANTOS
FACULDADE CATÓLICA PAULISTA | 181
link.springer.com/chapter/10.1007/978-3-662-08878-4_3#citeas. Acesso em: 02 Jun. 
2023.
TANENBAUM, A. S. Sistemas Operacionais Modernos, 2ª. Edição, São Paulo: Prentice 
Hall, 2003.
TANENBAUM, A.S.; WOODHULL, A. S. Sistemas Operacionais: projeto e 
implementação. 3a. Edição, Editora Bookman, 2008.
WONG, W. G. What’s the Difference Between Linux EXT, XFS, and BTRFS 
Filesystems?. 2017. Disponível em: https://www.electronicdesign.com/markets/
automation/article/21804944/whats-the-difference-between-linux-ext-xfs-and-btrfs-
filesystems. Acesso em: 01 Jun. 2023.
https://www.electronicdesign.com/markets/automation/article/21804944/whats-the-difference-between-linux-ext-xfs-and-btrfs-filesystems
https://www.electronicdesign.com/markets/automation/article/21804944/whats-the-difference-between-linux-ext-xfs-and-btrfs-filesystems
https://www.electronicdesign.com/markets/automation/article/21804944/whats-the-difference-between-linux-ext-xfs-and-btrfs-filesystems
	_3rdcrjn
	_Hlk136696443
	_1t3h5sf
	_2et92p0
	_gjdgxs
	_30j0zll
	_1t3h5sf
	_4d34og8
	_35nkun2
	_2et92p0
	_1t3h5sf
	_tyjcwt
	_1t3h5sf
	_1fob9te
	_tyjcwt
	_1t3h5sf
	_30j0zll
	_2et92p0
	_2et92p0
	_heading=h.gjdgxs
	_heading=h.30j0zll
	_heading=h.1fob9te
	_heading=h.gjdgxs
	_heading=h.30j0zll
	_1t3h5sf
	_3rdcrjn
	_2et92p0
	_gjdgxs
	_30j0zll
	_1t3h5sf
	_30j0zll
	_1fob9te
	_gjdgxs
	_gjdgxs
	Histórico e funções dos sistemas operacionais
	Tipos de sistemas operacionais 
	Arquitetura de Sistemas Operacionais 
	Programação concorrente
	Deadlock 
	Gerenciamento de processos
	Comunicação de Processos 
	Gerenciamento de memória
	Gerenciamento de arquivos
	Gerenciamento de entrada/saída
	Gerenciamento de segurança e proteção
	Sistemas operacionais multimídias
	Sistemas operacionais mobile 
	Virtualização e máquina virtual 
	Processos / Escalonamento

Mais conteúdos dessa disciplina