Buscar

Livro de Sistemas Operacionais

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

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.

Continue navegando