Um momento
Todos os artigos
Programação 14 min de leitura

O Que É o Sistema Operacional Unix? Um Guia Simples da Ideia Dentro do Seu Celular e da Internet

Um guia simples e sem jargões sobre o Unix, o sistema operacional de 1969 cujas ideias rodam hoje em iPhones, celulares Android, boa parte da internet e todos os supercomputadores mais rápidos. Entenda o kernel, o shell, os pipes e o relógio do Unix.

nbkhope
Nesta página

Você provavelmente nunca digitou a palavra "Unix", mas usa o Unix todos os dias. Se você tem um iPhone ou um Mac, ele roda um sistema Unix certificado. Se tem um celular Android, ele roda o Linux, um primo próximo do Unix. Os sites que você visita, a nuvem que guarda as suas fotos e todos os 500 supercomputadores mais rápidos do mundo rodam sobre a mesma família de ideias.

Essas ideias nasceram em 1969, num laboratório em Nova Jersey, nos Estados Unidos, num computador que a maioria das pessoas hoje nem reconheceria. Este artigo explica, em linguagem simples, o que é o Unix, o que o torna especial e como um pequeno projeto de pesquisa acabou movendo boa parte do mundo.

Nascido no Bell Labs

Nos anos 1960, o Bell Labs, o braço de pesquisa da companhia telefônica americana AT&T, trabalhava num sistema operacional ambicioso chamado Multics, junto com o MIT e a General Electric. Ele era poderoso, mas enorme e lento para avançar, e em 1969 o Bell Labs saiu do projeto.

Dois pesquisadores do Bell Labs, Ken Thompson e Dennis Ritchie, sentiam falta de um sistema confortável para trabalhar. Thompson encontrou um minicomputador sem uso, um PDP-7, em parte para continuar rodando um jogo espacial que ele tinha escrito, e começou a construir um pequeno sistema operacional próprio. Um colega, Brian Kernighan, o apelidou de brincadeira de "Unics", um trocadilho com Multics, e o nome virou Unix.

Duas decisões tornaram o Unix especial:

  • Em 1973, Ritchie e Thompson reescreveram o Unix em C, a linguagem que Ritchie tinha acabado de criar (veja O Que É a Linguagem de Programação C?). Os sistemas operacionais normalmente eram escritos na linguagem de máquina específica de um computador. Escrito em C, o Unix podia ser levado, ou portado, para novos tipos de computador com um esforço modesto.
  • A AT&T não podia vender produtos de computação, por causa de um acordo judicial de 1956 com o governo americano. Então ela licenciou o Unix para universidades por um valor pequeno, com o código-fonte incluído. Uma geração inteira de estudantes aprendeu computação lendo e melhorando o Unix.

Em 1983, Thompson e Ritchie receberam o Prêmio Turing, muitas vezes chamado de Nobel da computação, pelo trabalho com o Unix.

As camadas de um sistema Unix

As camadas de um sistema Unix, de cima para baixo. Você: digita comandos, ou clica e toca nos apps. Programas: ferramentas pequenas como ls, grep e sort, além de apps grandes. Shell: lê os seus comandos e inicia os programas certos. Kernel, o núcleo: o coração, que divide o processador, a memória e os arquivos. Hardware: processador, memória, disco, tela, teclado e rede. Cada camada só conversa com as vizinhas. Os programas nunca mexem no hardware diretamente: eles pedem ao kernel, que impede que um atrapalhe o outro
  • O kernel (núcleo) é o coração do sistema. Ele decide qual programa usa o processador a cada momento, distribui a memória, lê e grava arquivos e conversa com o hardware. Os programas nunca mexem no hardware diretamente; eles pedem ao kernel.
  • O shell (casca) é o programa que lê os comandos que você digita e inicia outros programas para você. Tem esse nome porque é a "casca" em volta do núcleo.
  • Os programas são todo o resto: de ferramentas pequeninas a navegadores.

O Unix também foi feito desde o primeiro dia para muitas pessoas dividirem um computador e muitos programas rodarem ao mesmo tempo. Isso é normal hoje, mas era uma grande novidade em 1969, e é por isso que os sistemas Unix são tão bons em servidores que atendem milhares de usuários.

A filosofia do Unix: ferramentas pequenas que trabalham juntas

Em vez de construir programas gigantes que fazem tudo, o Unix incentiva muitas ferramentas pequenas, cada uma fazendo bem uma única tarefa:

  • ls lista os arquivos de uma pasta.
  • grep encontra as linhas que contêm um texto.
  • sort coloca as linhas em ordem.
  • wc conta linhas e palavras.

A mágica está em como elas se combinam. Em 1973, o Unix ganhou os pipes (canos), inventados por Doug McIlroy: o símbolo | manda a saída de um programa direto para o próximo, como mangueiras de jardim conectadas. McIlroy resumiu a filosofia assim (em inglês): "Write programs that do one thing and do it well." Ou seja: escreva programas que façam uma coisa só, e bem feita.

Veja um exemplo real. Escrevemos uma historinha de três linhas e perguntamos ao Unix quais palavras aparecem mais:

Um pipeline do Unix: ferramentas pequenas ligadas com o símbolo pipe. A entrada é historia.txt: "O gato sentou no tapete. O cachorro sentou no tronco...". Passo 1, tr: coloca cada palavra numa linha. Passo 2, tr: deixa todas as letras minúsculas. Passo 3, sort: põe as palavras em ordem. Passo 4, uniq -c: conta cada palavra repetida. Passo 5, sort -rn: maiores contagens primeiro. Passo 6, head -5: fica com as 5 primeiras. A saída real: "o" 8 vezes, "gato" 4, "cachorro" 4, "árvore" 2, "viu" 2. Seis programas pequeninos, nenhum dos quais sabe "achar as palavras mais comuns", respondem juntos à pergunta numa linha só. O símbolo pipe manda a saída de um programa para o próximo
1$ tr -s ' .,' '\n' < historia.txt | tr 'A-Z' 'a-z' | sort | uniq -c | sort -rn | head -5
2      8 o
3      4 gato
4      4 cachorro
5      2 árvore
6      2 viu

Nenhum desses seis programas sabe "achar as palavras mais comuns". Encadeados com pipes, eles respondem à pergunta numa única linha. Troque uma peça, e você responde a outra pergunta: essa flexibilidade é o motivo de os programadores ainda usarem essas ferramentas todos os dias, mais de 50 anos depois.

Tudo é um arquivo

O Unix tem outra ideia simples e poderosa: na medida do possível, tudo parece um arquivo. Os seus documentos são arquivos, mas também os aparelhos e até as informações sobre o próprio sistema. Por exemplo, num sistema Linux dá para ler detalhes do processador como se fosse um arquivo de texto:

$ grep -m1 "model name" /proc/cpuinfo
model name	: 12th Gen Intel(R) Core(TM) i7-12700H

Existe até um arquivo especial chamado /dev/null, apelidado de "buraco negro": tudo o que é escrito nele simplesmente desaparece. Como tudo é um arquivo, as mesmas ferramentas pequenas (ler, buscar, copiar, contar) funcionam em quase tudo.

Quem pode fazer o quê: permissões

Como muitas pessoas podiam dividir um computador Unix, cada arquivo registra quem pode lê-lo, mudá-lo ou executá-lo. O comando ls -l mostra isso como uma sequência de letras:

Quem pode fazer o quê: as permissões de arquivos do Unix. Saída real do ls -l para três itens. backup.sh tem -rwxr-xr-x; fotos tem drwxr-xr-x; notas.txt tem -rw-------. O primeiro caractere é o tipo: um traço para arquivo, d para pasta. Depois vêm três grupos de três letras: para o dono do arquivo, para o grupo do dono e para todos os outros. r quer dizer ler, w quer dizer escrever ou mudar, x quer dizer executar ou entrar na pasta, e um traço quer dizer proibido. backup.sh: o dono pode ler, mudar e executar; todos os outros podem ler e executar. notas.txt: só o dono pode ler e mudar. Ninguém mais consegue nem abrir. O Unix foi feito para muitas pessoas dividirem um computador, então cada arquivo registra quem pode ler, mudar ou executá-lo

Leia as letras em grupos de três: o dono, o grupo do dono (uma equipe de usuários) e todos os outros. r quer dizer ler (read), w quer dizer escrever ou mudar (write), x quer dizer executar, e - quer dizer proibido. Então -rw------- em notas.txt quer dizer que só o dono pode ler ou mudar o arquivo.

O seu celular usa a mesma ideia nos bastidores: no Android, cada app roda como um "usuário" separado, então um app não consegue bisbilhotar os arquivos de outro.

O relógio do Unix

Um detalhe curioso do Unix afeta quase todo computador: o Unix mede o tempo como o número de segundos desde a meia-noite UTC de 1º de janeiro de 1970, um momento que os programadores chamam de "a época" (epoch).

O relógio do Unix: contando segundos desde 1º de janeiro de 1970. 0 segundo: 1º de janeiro de 1970, o relógio começa. 1.000.000.000: 9 de setembro de 2001, um bilhão. 1.234.567.890: 13 de fevereiro de 2009, quando fãs fizeram festas. 1.785.556.800: 1º de agosto de 2026, o momento em que este artigo foi publicado. 2.147.483.647: 19 de janeiro de 2038, o maior número de 32 bits. O problema do ano 2038: um segundo depois, um contador antigo de 32 bits dá a volta para -2.147.483.648, que o computador lê como 13 de dezembro de 1901. Os sistemas modernos usam contadores de 64 bits, que só vão se esgotar daqui a cerca de 292 bilhões de anos. O risco são aparelhos e arquivos antigos que ainda usam 32 bits

No momento em que este artigo foi publicado, o relógio do Unix marcava 1.785.556.800. Os programadores chegaram a fazer festas quando ele chegou a 1.234.567.890, em 2009.

O relógio tem um limite famoso. Sistemas mais antigos guardam a contagem num número de 32 bits, que não passa de 2.147.483.647, um momento que chega em 19 de janeiro de 2038. Um segundo depois, o número "dá a volta" para um valor negativo enorme, e o computador de repente acha que é 13 de dezembro de 1901. Conferimos isso com o comando date. É o chamado problema do ano 2038, um primo do bug do milênio. Os sistemas modernos já usam contadores de 64 bits, que só vão se esgotar daqui a uns 292 bilhões de anos, mas aparelhos e formatos de arquivo antigos ainda precisam de conserto.

A árvore genealógica do Unix

Como universidades e empresas podiam obter o código-fonte do Unix, ele cresceu até virar uma família inteira:

A árvore genealógica do Unix, simplificada. O Unix, do Bell Labs em 1969, deu origem ao BSD, da UC Berkeley em 1977, ao System V, da AT&T em 1983, e inspirou o Linux, um sistema parecido com Unix de 1991. O BSD levou ao macOS e ao iOS, pela Apple e pela NeXT, e ao FreeBSD, usado no PlayStation 4 e 5. O System V levou ao Solaris, ao AIX e ao HP-UX, usados em servidores de empresas. O Linux levou ao Android, em bilhões de celulares, e aos servidores, que movem boa parte da internet. Linhas cheias: feitos a partir do código do Unix. Linha tracejada: escrito do zero para funcionar como o Unix. O Linux é "parecido com Unix": ele copiou o projeto do Unix, não o código. O macOS da Apple é oficialmente certificado como um sistema Unix
  • BSD: estudantes e pesquisadores da Universidade da Califórnia em Berkeley construíram o seu próprio Unix melhorado, chamado BSD, a partir de 1977. Ele acrescentou o código de redes que ajudou a construir a internet. Entre os descendentes estão o FreeBSD e, passando pelos computadores NeXT de Steve Jobs, o macOS e o iOS da Apple (veja O Que É a Linguagem de Programação Objective-C? para a história da NeXT).
  • System V: o Unix comercial da própria AT&T, que levou a sistemas de grandes empresas como Solaris, AIX e HP-UX.
  • Linux: em 1991, um estudante finlandês chamado Linus Torvalds escreveu do zero um novo kernel que funcionava como o Unix. Junto com ferramentas livres do projeto GNU, de Richard Stallman (iniciado em 1983 para construir um sistema livre parecido com o Unix), ele virou o Linux. O Linux não contém código do Unix, então é chamado de parecido com Unix (Unix-like), mas segue o mesmo projeto.

Para manter essa família compatível, um padrão comum chamado POSIX foi publicado em 1988. É por isso que os mesmos comandos, como o pipeline acima, funcionam num Mac, no Linux e em muitos outros sistemas.

Onde a família Unix vive hoje

Onde a família Unix vive hoje. iPhone e Mac: o macOS é um Unix certificado, e o iOS divide o mesmo núcleo. Android: bilhões de celulares rodam sobre o kernel Linux. A internet: a maioria dos servidores web roda Linux ou outro sistema parecido com Unix. Supercomputadores: todos os 500 mais rápidos do mundo rodam Linux. Videogames: o PlayStation 4 e o 5 são baseados no FreeBSD. Aparelhos: roteadores, smart TVs e carros muitas vezes rodam Linux. O Windows é a principal exceção: ele tem uma história própria e separada. Mesmo assim, hoje o Windows consegue rodar Linux dentro dele
  • Celulares: os iPhones rodam o iOS, construído sobre o mesmo núcleo baseado em Unix do macOS, e o Android roda sobre o kernel Linux. Juntos, são bilhões de aparelhos.
  • A internet: a maioria dos servidores web e dos computadores da nuvem roda Linux ou outro sistema parecido com Unix.
  • Supercomputadores: desde 2017, absolutamente todos os 500 supercomputadores mais rápidos do mundo rodam Linux.
  • Videogames e aparelhos: o PlayStation 4 e o 5, da Sony, são baseados no FreeBSD, e roteadores Wi-Fi, smart TVs e painéis de carros muitas vezes rodam Linux por dentro.

A grande exceção é o Windows, que cresceu numa árvore genealógica separada. Mas até o Windows consegue rodar Linux dentro dele hoje: os exemplos deste artigo foram rodados num pequeno sistema Linux num notebook com Windows.

Uma breve história

Uma breve história do Unix, numa linha do tempo. 1969: Ken Thompson e Dennis Ritchie começam o Unix no Bell Labs. 1973: o Unix é reescrito em C, e chegam os pipes. 1977: Berkeley começa o BSD. 1983: Thompson e Ritchie ganham o Prêmio Turing, e o projeto GNU é anunciado. 1988: o padrão POSIX para sistemas tipo Unix. 1991: Linus Torvalds lança o Linux. 2001: o Mac OS X leva o Unix ao Mac. 2008: Android e apps de iPhone decolam

Para saber mais sobre as pessoas e as linguagens em volta dessa história, veja A História da Programação de Computadores. E se o nome de Ken Thompson parecer familiar, ele depois ajudou a criar a linguagem Go no Google (veja O Que É a Linguagem de Programação Go?).

Experimente você mesmo

Talvez você já tenha uma linha de comando no estilo Unix ao seu alcance:

  • Mac: abra o app Terminal. Você está conversando com um sistema Unix certificado.
  • Linux: abra o terminal pelo menu de apps.
  • Windows: instale o Subsistema do Windows para Linux (WSL), gratuito, da Microsoft, que roda um sistema Linux de verdade dentro do Windows.

Depois experimente alguns comandos seguros: ls para listar os arquivos, pwd para ver em que pasta você está, date para ver a hora e date +%s para ver o relógio do Unix andando.

Um pequeno glossário

  • Sistema operacional: o programa-mestre que comanda um computador e o divide entre os apps.
  • Unix: um sistema operacional criado no Bell Labs em 1969, e a família de sistemas que veio depois dele.
  • Kernel (núcleo): o coração do sistema operacional, que cuida do processador, da memória, dos arquivos e do hardware.
  • Shell: o programa que lê os comandos que você digita e executa outros programas.
  • Linha de comando / terminal: uma janela de texto onde você digita comandos em vez de clicar.
  • Pipe ( | ): uma conexão que manda a saída de um programa para outro programa.
  • Permissões: as regras de quem pode ler, mudar ou executar cada arquivo.
  • Tempo Unix: o número de segundos desde a meia-noite UTC de 1º de janeiro de 1970.
  • Problema do ano 2038: o momento em que os relógios Unix antigos de 32 bits ficam sem números.
  • BSD: a versão de Berkeley do Unix, antepassada do FreeBSD e parte do macOS.
  • Linux: um sistema operacional livre e parecido com Unix, iniciado por Linus Torvalds em 1991.
  • Parecido com Unix (Unix-like): um sistema que funciona como o Unix sem conter o código original dele.
  • POSIX: o padrão que mantém os sistemas parecidos com Unix compatíveis entre si.

Conclusão

O Unix começou como o projeto paralelo de dois pesquisadores que queriam um sistema agradável para trabalhar, e virou um dos softwares mais influentes já escritos. As ideias dele, ferramentas pequenas ligadas por pipes, tudo como arquivo, muitos usuários com permissões claras e um relógio contando segundos desde 1970, continuam em ação até hoje.

Então, da próxima vez que você desbloquear o celular, abrir um site ou ouvir falar de um supercomputador, há uma ótima chance de um descendente daquele experimento de 1969 estar fazendo o trabalho em silêncio.

Obrigado pela leitura!

Conhece alguém que vai gostar? Mande para essa pessoa.

Mais artigos

Read next

Comentários

Be kind and specific. Comments with links from new accounts appear after a moderator reviews them.