Introdução
No uso popular, “Linux” muitas vezes se refere a um grupo de distribuições de sistemas operacionais construídas em torno do kernel do Linux. No sentido mais estrito, porém, Linux refere-se apenas à presença do próprio kernel. Para construir um sistema operacional completo, as distribuições Linux frequentemente incluem ferramentas e bibliotecas do projeto GNU e de outras fontes. Mais desenvolvedores têm utilizado o Linux recentemente para construir e executar aplicativos móveis; ele também desempenhou um papel fundamental no desenvolvimento de dispositivos acessíveis, como Chromebooks, que executam sistemas operacionais no kernel. Dentro da computação em nuvem e ambientes de servidor em geral, o Linux é uma escolha popular por algumas razões práticas:
- Suas distribuições permanecem atuais e são suportadas por comunidades de outros desenvolvedores.
- Pode ser executado em uma ampla gama de hardware e será instalado ao lado de sistemas pré-existentes (um traço útil em ambientes de desenvolvimento local).
- Suporta instalação de software centralizado a partir de repositórios pré-existentes.
- Seus requisitos de recursos são baixos.
- É frequentemente lembrado quando os desenvolvedores estão construindo ecossistemas de aplicativos e ferramentas para servidores, levando a altos níveis de compatibilidade.
- Sustenta modificações necessárias nos comportamentos do sistema operacional.
O Linux também traça suas origens para o movimento de software livre e de código aberto, e como consequência alguns desenvolvedores o escolhem por uma combinação de razões éticas e práticas:
- Para alguns desenvolvedores, usar o Linux representa um compromisso com a acessibilidade e a liberdade de expressão.
- A comunidade Linux também é um atrativo para alguns desenvolvedores: quando têm dúvidas, podem consultar os recursos produzidos por esta comunidade ou entrar diretamente em contato com um dos muitos mantenedores ativos.
Para entender o papel do Linux dentro da comunidade de desenvolvedores (e além), este artigo irá delinear brevemente a história do Linux através do Unix e discutir algumas distribuições Linux populares.
Raízes no Unix
O Linux tem suas raízes no Unix e no Multics, dois projetos que compartilhavam o objetivo de desenvolver um sistema operacional robusto multiusuário.
Os Primórdios do Unix
O Unix surgiu do projeto Multics no Laboratório de Pesquisa de Ciências da Computação da Bell Labs. Os desenvolvedores envolvidos no Multics na Bell Labs e em outros lugares estavam interessados em construir um sistema operacional multiusuário com armazenamento em um único nível, vinculação dinâmica (onde um processo em execução pode solicitar que outro segmento seja adicionado ao seu espaço de endereço, permitindo que execute o código desse segmento) e um sistema de arquivos hierárquico.
Bell Labs parou de financiar o projeto Multics em 1969, mas um grupo de pesquisadores, incluindo Ken Thompson e Dennis Ritchie, continuaram a trabalhar com os princípios fundamentais do projeto. Em 1972-3, eles decidiram reescrever o sistema em C, o que tornou o Unix única e portável: ao contrário de outros sistemas operacionais contemporâneos, ele poderia se mover e sobreviver ao hardware.
A pesquisa e desenvolvimento no Bell Labs (mais tarde AT&T) continuaram, com os Laboratórios de Sistema Unix desenvolvendo versões do Unix, em parceria com a Sun Microsystems, que seriam amplamente adotadas por fornecedores comerciais de Unix. Enquanto isso, a pesquisa continuou nos círculos acadêmicos, mais notavelmente no Grupo de Pesquisa em Sistemas de Computação da Universidade da Califórnia, Berkeley. Este grupo produziu a Distribuição de Software Berkeley (BSD), que inspirou uma variedade de sistemas operacionais, muitos dos quais ainda estão em uso hoje. Duas distribuições BSD de nota histórica são o NeXTStep, o sistema operacional pioneiro pela NeXT, que se tornou a base para o macOS, entre outros produtos, e o MINIX, um sistema operacional educacional que serviu de base comparativa para Linus Torvalds enquanto ele desenvolvia o Linux.
Principais Características do Unix
O Unix é orientado em torno de princípios de clareza, portabilidade e simultaneidade.
- Clareza: O design modular do Unix permite que as funções sejam executadas de forma limitada e definida. Seu sistema de arquivos é unificado e hierárquico, o que simplifica a manipulação de dados. Ao contrário de alguns de seus predecessores, o Unix implementa centenas (em vez de milhares) de chamadas de sistema, cada uma projetada para ser direta e clara em seu objetivo.
- Portabilidade: Ao escrever o Unix em C, o grupo da Bell Labs posicionou o Unix para uso e adoção em larga escala. C foi projetada para ter acesso de baixo nível à memória, suporte mínimo em tempo de execução e uma relação eficiente entre linguagem e instruções de máquina. Uma base em C significa que o Unix é adaptável e fácil de executar em uma variedade de hardware.
- Simultaneidade: O kernel do Unix é adaptado para o objetivo (compartilhado pelo projeto Multics) de sustentar múltiplos usuários e fluxos de trabalho. O espaço do kernel permanece distinto do espaço do usuário no Unix, o que permite que múltiplos aplicativos sejam executados ao mesmo tempo.
A Evolução do Linux
O Unix levantou questões importantes para os desenvolvedores, mas também permaneceu proprietário em suas primeiras iterações. O próximo capítulo de sua história é, portanto, a história de como os desenvolvedores trabalharam dentro e contra ele para criar alternativas livres e de código aberto.
Experimentos de Código Aberto
Richard Stallman foi uma figura central entre os desenvolvedores que foram inspirados a criar alternativas não proprietárias para o Unix. Enquanto trabalhava no Laboratório de Inteligência Artificial do MIT, ele iniciou o trabalho no projeto GNU (recursivo para “GNU’s not Unix!”), eventualmente deixando o Laboratório em 1984 para poder distribuir os componentes do GNU como software livre. O núcleo GNU, conhecido como GNU HURD, tornou-se o foco da Free Software Foundation (FSF), fundada em 1985 e atualmente liderada por Stallman.
Enquanto isso, outro desenvolvedor trabalhava em uma alternativa gratuita para o Unix: o estudante finlandês Linus Torvalds. Depois de ficar frustrado com a licença do MINIX, Torvalds anunciou a um grupo de usuários do MINIX em 25 de agosto de 1991 que estava desenvolvendo seu próprio sistema operacional, que se assemelhava ao MINIX. Embora inicialmente desenvolvido no MINIX usando o compilador GNU C, o núcleo do Linux rapidamente se tornou um projeto único com um núcleo de desenvolvedores que lançaram a versão 1.0 do núcleo com Torvalds em 1994.
Torvalds estava usando código GNU, incluindo o Compilador GNU C, com seu kernel, e continua sendo verdade que muitas distribuições Linux se baseiam em componentes GNU. Stallman fez lobby para expandir o termo “Linux” para “GNU/Linux”, argumentando que isso capturaria tanto o papel do projeto GNU no desenvolvimento do Linux quanto os ideais subjacentes que fomentaram o projeto GNU e o kernel Linux. Hoje, “Linux” é frequentemente usado para indicar tanto a presença do kernel Linux quanto elementos GNU. Ao mesmo tempo, sistemas embarcados em muitos dispositivos portáteis e smartphones frequentemente usam o kernel Linux com poucos ou nenhum componente GNU.
Principais Características do Linux
Embora o kernel Linux tenha herdado muitos objetivos e propriedades do Unix, difere do sistema anterior nas seguintes maneiras:
- Seu componente central é o kernel, que é desenvolvido independentemente de outros componentes do sistema operacional. Isso significa que o Linux utiliza elementos de várias fontes (como o GNU) para compor um sistema operacional completo.
- É gratuito e de código aberto. Mantido por uma comunidade de desenvolvedores, o kernel é licenciado sob a Licença Pública Geral GNU (um desdobramento do trabalho da FSF no Projeto GNU) e está disponível para download e modificação. A GPL estipula que trabalhos derivados devem manter os termos de licenciamento do software original.
- Tem um kernel monolítico, semelhante ao Unix, mas pode carregar e descarregar dinamicamente o código do kernel conforme necessário.
- Tem suporte a multiprocessamento simétrico (SMP), ao contrário das implementações tradicionais do Unix. Isso significa que um único sistema operacional pode ter acesso a vários processadores, que compartilham uma memória principal e têm acesso a todos os dispositivos de entrada/saída.
- O seu kernel é preemptivo, outra diferença em relação ao Unix. Isso significa que o escalonador pode forçar uma troca de contexto em um driver ou outra parte do kernel enquanto está sendo executado.
- O kernel não faz diferenciação entre threads e processos normais.
- Inclui uma Interface de Linha de Comando (CLI) e também pode incluir uma Interface Gráfica do Usuário (GUI).
Distribuições Linux Populares
Os desenvolvedores mantêm muitas distribuições Linux populares hoje. Uma das mais antigas é o Debian, uma distribuição gratuita e de código aberto que possui 50.000 pacotes de software. O Debian inspirou outra distribuição popular, o Ubuntu, financiado pela Canonical Ltd. O Ubuntu utiliza o formato de pacote deb e as ferramentas de gerenciamento de pacotes do Debian, e os desenvolvedores do Ubuntu contribuem com alterações de volta para o Debian.
A similar relationship exists between Red Hat, Fedora, and CentOS. Red Hat created a Linux distribution in 1993, and ten years later split its efforts into Red Hat Enterprise Linux and Fedora, a community-based operating system that utilizes the Linux kernel and elements from the GNU Project. Red Hat also has a relationship with the CentOS Project, another popular Linux distribution for web servers. This relationship does not include paid maintenance, however. Like Debian, CentOS is maintained by a community of developers.
Conclusão
Neste artigo, abordamos as raízes do Linux no Unix e algumas de suas características definidoras. Se você estiver interessado em aprender mais sobre a história do Linux e variações do Unix (incluindo o FreeBSD), um bom passo pode ser nossa série sobre o FreeBSD. Outra opção pode ser considerar nossa série introdutória sobre como começar com o Linux. Você também pode conferir esta introdução à estrutura do sistema de arquivos no Linux, esta discussão sobre como usar find
e locate
para buscar arquivos em um VPS Linux, ou esta introdução a expressões regulares na linha de comando.
Source:
https://www.digitalocean.com/community/tutorials/brief-history-of-linux