Pular para o conteúdo

Sistema operacional

Computadores são máquinas fantásticas, que permitem executar uma infinidade de aplicativos úteis e interagir com os mais variados dispositivos periféricos.

Como você deve imaginar, um trabalho assim exige que essas máquinas executem uma série de serviços internos de gerenciamento de recursos.

Contudo, tais programas não surgiram no mesmo dia em que Ada Lovelace ou Alan Turing nasceram. Na verdade, eles foram resultados de um melhoramento contínuo na interface entre pessoas e computadores, e entre computadores e outros computadores.

Costumamos nomear de sistemas operacionais todo esse conjunto de programas que escondem de nós a complexidade do hardware dos nossos aparelhos. Apesar de estarmos acostumados a chamar por esse novo tudo aquilo que vem instalado quando compramos um computador novo, é necessário especificar do que é formado um SO.

Nesse sentido, comecemos pelo kernel do sistema operacional, que se trata da camada de software que se comunica diretamente com o hardware do computador. É ele quem gerencia o processamento dos programas, o uso de memória, e a conexão com dispositivos periféricos.

O Linux é uma família de sistemas operacionais que usam o mesmo kernel. Ele foi criado por Linus Torvalds em 1991, inspirado por outro sistema operacional famoso: o UNIX. Desde então, muitas pessoas e organizações colaboraram no projeto, que é usado em boa parte da infraestrutura informática até hoje.

Tux, o pinguim. É um desenho de um pinguim sentado com a ponta das nadadeiras apoiadas sobre os pés.
Tux, o macote do Linux.

É comum chamar os sistemas operacionais baseados em Linux de “distros” — o que deriva de “distribuições”. Uma das mais conhecidas é o sistema Android, amplamente utilizado em dispositivos móveis, mas também em TVs, carros e laptops.

Por seu aspecto aberto, livre e customizável, sistemas Linux se consolidaram em servidores e nos computadores dos desenvolvedores de software. Nesses contextos, é comum que as distros contem com um conjunto de funcionalidades providas pelo Projeto GNU.

Logomarca do projeto GNU. É um desenho do animal gnu em preto e branco.
Logomarca do projeto GNU.

Entre o extenso conjunto de software desenvolvido pelo GNU estão as Core Utilities. Elas oferecem uma série de comandos que permitem ao usuário do computador de fato fazer coisas úteis, como criar arquivos, navegar entre pastas, gerenciar perfis de usuário, e muito mais.

Muito do que nós comumente achamos que faz parte do sistema operacional, na verdade, são apenas programas simples que rodam por cima dele. Até mesmo o programa de terminal, em que nós digitamos comandos, não faz parte do SO. Ele é simplesmente uma aplicação que faz a comunicação entre nós e o kernel.

O projeto GNU contribui tão expressivamente para o ecossistema do Linux que há quem defenda que deveríamos chamá-lo de GNU/Linux. Apesar disso, é importante fazer uma diferença entre os conceitos.

  • O kernel Linux pode ser utilizado sem os programas do GNU. Um exemplo disso é o Android, que utiliza utilitários desenvolvidos pela Google e por outros projetos.
  • Os programas do GNU podem ser utilizados juntamente a outros sistemas operacionais compatíveis. O projeto distribui suas aplicações para vários sistemas baseados no UNIX ou semelhantes a ele — o que costuma ser chamado de UNIX-like.
    • Um exemplo de SO baseado em UNIX é o macOS, que também apresenta amplo suporte para ferramentas de desenvolvimento de software.

Para que possamos abrir aplicativos coloridos em janelas animadas, é necessário rodar um conjunto de sistemas responsáveis por calcular quais pixels da tela ligar a cada instante. Mais do que isso, eles devem interpretar os locais na tela em que clicamos com o mouse ou tocamos com nossos dedos.

Convencionou-se a chamar esse conjunto de sistemas de servidor gráfico. Apesar desse nome, o tal servidor costuma rodar no mesmo computador em que abrimos os aplicativos comuns.

Em computadores compartilhados por dezenas de usuários, como mainframes e máquinas de data-centers, o nome “servidor gráfico” faz mais sentido. Ele costuma permitir que mais de um usuário execute aplicações gráficas ao mesmo tempo no mesmo computador, até mesmo por meio de conexões remotas.

No nosso contexto, não precisamos nos preocupar com isso. O servidor gráfico funciona mais como um subsistema, que roda continuamente debaixo dos panos e oferece funcionalidades para os aplicativos gráficos que queremos executar.

Sem correr o risco de nos alongarmos demais nesse assunto, basta dizer que existem dois servidores gráficos principais no ecossistema Linux. Ambos definem um protocolo de funcionalidades que o servidor deve oferecer e os aplicativos podem solicitar.

O servidor gráfico mais antigo é o X11, criado em 1984. Diferentes organizações de desenvolvedores se dedicaram a criar implementações do protocolo, mas a mais consolidada é da Fundação X.Org.

O X11 é estável, e muitos aplicativos foram criados contando com o conjunto de funcionalidades que ele oferece. Contudo, o projeto tendeu a ficar muito complexo com o surgimento de novas tecnologias de software e de hardware. Por isso, foi proposto um novo protocolo que pensasse do zero uma forma mais moderna e flexível de estruturar um servidor gráfico.

Surgiu assim o protocolo Wayland em 2008. Ele apresenta a implementação de referência Weston, mas é comum que diferentes organizações de desenvolvedores implementem as suas versões. Cada usuário pode escolher aquela que melhor atender às suas necessidades.

O Wayland tem como objetivo ser fundamentalmente mais seguro, e fornece um conjunto mais restrito de funcionalidades aos aplicativos do computador. Para acessar um serviço, o aplicativo precisa solicitar permissão para fazê-lo.

Além disso, tecnologias modernas, como HDR, escala de tela fracionada (125%, 133.33%, …), e algumas ferramentas de acessibilidade apenas puderam ser implementadas pelo Wayland.


Existem preocupações de segurança no X11. Por exemplo, todos os aplicativos conseguem ler o que você digita no teclado o tempo todo, o que pode ser perigoso caso um deles seja mal-intencionado. Existem outros cenários similares em relação a gravação e compartilhamento da tela.

O Wayland não oferece essas permissões, mas isso resulta numa complicação: alguns aplicativos que precisam delas podem não funcionar. É responsabilidade dos desenvolvedores de cada aplicativo atualizarem a implementação para solicitarem as permissões corretas para o Wayland, mas ainda existem programas que não foram aprimorados.

Em 2026, ainda estamos em uma época de transição do X11 para o Wayland. Cada distro Linux decide se oferece o X11 ou o Wayland. Muitas oferecem os dois na mesma instalação, e permitem que você troque entre um e outro na tela de log-in.

Também existe a camada de compatibilidade chamada XWayland, que permite que programas feitos para o X11 rodem em um sistema que usa o Wayland, mas ela não é 100% perfeita.

Minha recomendação é que você teste uma distro que oferece o Wayland. Caso você se depare com algum problema que ainda não foi solucionado e não há alternativa a não ser usar o X11 por enquanto, troque para o X11.

Por cima do servidor gráfico, existe mais uma camada de sistemas rodando. São as aplicações do ambiente de área de trabalho, comumente chamado de desktop environment, ou apenas DE.

É responsabilidade de um DE montar as janelas dos aplicativos que executamos, com as bordas, os títulos e os botões de fechar. Os DEs também gerenciam onde na tela as janelas aparecem, e permitem que você as mova, esconda ou feche.

Além disso, os DEs tendem a oferecer um conjunto de aplicativos gráficos pré-instalados, como o explorador de arquivos, as configurações, o mixer de áudio, o gerenciador de conexões de rede, e muitos outros.

Embora seja possível gerenciar tudo isso por comandos no terminal, é muito mais fácil acessar as interfaces gráficas. Inclusive, até o aplicativo que abre o terminal é pré-instalado pelo DE.

Outras responsabilidades comuns são gerenciar as telas de log-in e de de bloqueio, as notificações, as senhas salvas no computador, e os atalhos de teclado e de gestos. Enfim, muitas atribuições que nós achamos que são de responsabilidade do sistema operacional, na verdade, são feitas pelo ambiente de área de trabalho.

No ecossistema Linux, existe uma enorme variedade de DEs. Para não nos alongarmos, trataremos de apenas três.

O GNOME apresenta um design moderno, que segue um conjunto estrito de diretrizes de interface humana. Seu objetivo é ser simples e apto para produtividade, sem oferecer muitas opções de customização. Tende a ser bastante adaptável para telas de computadores, de celulares e de tablets, e oferece tecnologias modernas.

Captura de tela do ambiente de área de trabalho GNOME versão 50, mostrando o modo overview.
Captura de tela do GNOME.

O KDE Plasma apresenta uma disposição mais tradicional da interface, mas com funcionalidades modernas. Ele é bastante flexível, também apresentando versões para outros dispositivos, como celulares e TVs. Seu destaque é a grande quantidade de opções de customização da interface, e de temas de personalização.

Captura de tela do ambiente de área de trabalho KDE Plasma versão 6.4.5 no tema Breeze Light.
Captura de tela do KDE Plasma.

O Cinnamon é um DE desenvolvido em conjunto com a distro Linux Mint, mas disponível também para outras distros. Ele é baseado no GNOME, mas modifica a disposição de elementos para se assemelhar a um ambiente mais tradicional. Seu objetivo é ser simples de usar ao mesmo tempo em que apresenta uma experiência mais clássica.

Captura de tela do ambiente de área de trabalho Cinnamon versão 22, mostrando o aplicativo de configurações e o Mozilla Firefox aberto na página da Wikipédia.
Captura de tela do Cinnamon.

Aqui vale um pequeno apanhado de como funciona a estrutura de diretórios no Linux. Ela varia um pouco a depender da distro, mas a estrutura básica é a mesma.

  • O sistema todo é organizado dentro de uma pasta denominada /.
    • Ela não tem realmente um nome, por isso a referenciamos apenas com uma barra, e costumamos chamá-la de “raiz” ou “root”.
  • Dentro dela, existem diversas pastas, que são responsáveis por organizar o sistema. Algumas são:
    • bin: programas utilitários pré-instalados.
    • lib: bibliotecas compartilhadas pré-instaladas.
    • usr: programas, bibliotecas e arquivos úteis instalados por meio de gerenciadores de pacote (apt, dnf, …).
    • opt: programas instalados por meio de instaladores próprios.
    • etc: arquivos de configuração do sistema.
    • mnt: referências a dispositivos de armazenamento montados no computador, como pendrives, HDs, SSDs, etc.
    • home: pastas dos usuários.

Há outras pastas (chamadas comumente de diretórios) importantes, mas com o tempo você pega o jeito.

Terminal do Fedora, em que se executa o comando "ls", que exibe a estrutura de pastas do diretório raiz.
Estrutura de pastas da raiz do Fedora.

A que mais nos interessa é a pasta home. Dentro dela, o sistema cria uma pasta para cada usuário, nomeada com o username do usuário. Por exemplo, o meu usuário é gabriel, então a pasta do meu usuário é /home/gabriel.

Essa pasta é tão importante que ela tem uma variável de ambiente que a referencia, chamada de HOME. Digite no terminal o comando echo $HOME e veja o que aparece.

Além disso, existe um atalho menor ainda que aponta para essa pasta. Ele é o ~. Toda vez que você ler um caminho que começa com ~, pode saber que ele vai estar dentro da sua pasta de usuário

Terminal do Fedora, em que se executam os comando que exibem o conteúdo das variáveis "HOME" e "~".
Variáveis que apontam para a pasta de usuário.