CONCEITOS BÁSICOS UNIX/LINUX agosto/2014 Conceitos básicos em sistemas operacionais e arquitetura de computador. 1 - UNIX: DEFINIÇÃO O Unix teve origem no projeto MULTICS 1, que por ser complexo demais nunca saiu do ambiente acadêmico. O termo UNICS vem, inicialmente, pela simplificação do MULTICS num UNICS [de Uniplexed e não Multiplexed]. Como a palavra Unics é uma paródia [e também uma brincadeira], logo o nome evoluiu para Unix. No início, por volta de 1969, Unix era um sistema operacional desenvolvido por um grupo de funcionários da AT&T 2 no Bell Labs 3. Entre esses funcionários estavam Ken Thompson, Dennis Ritchie e Douglas Mcllroy. A primeira versão do Unix veio em 1971, e rodava em máquinas DEC 4 e Mainframes. A popularidade veio com a versão V6, de 1975, a primeira disponibilizada fora dos domínios da Bell Laboratories. Nessa época, a Universidade de Berkeley havia comprado o código fonte do Unix. Em 1973 o Unix foi reescrito em C, linguagem essa criada especificamente para reescrever o código fonte do Unix. Em 1979 foi portado para máquinas VAX da DEC. Atualmente, o termo Unix é uma marca registrada do The Open Group 5, e os sistemas Unix se dividem em vários ramos de sistemas criados e suportados por diversos vendedores. Inicialmente o Unix era um sistema aberto, apropriado ao ambiente acadêmico, daí a sua popularidade. Posteriormente diversas empresas surgiram, cada uma suportando o seu Unix. E para garantir a não fragmentação da arquitetura Unix em diversos sistemas operacionais incompatíveis entre si, foi criado o padrão ou comitê POSIX. O POSIX, Portable Operating System Interface for Unix, de 1988, é um conjunto de definições e convenções que padroniza a interface [linha de comando], o conjunto de bibliotecas dos sistemas Unix e as suas chamadas de sistema [system calls]. A partir do POSIX, é mais correto classificar os sistemas Unix como membros de uma família, isto é, família Unix. 1 MULTICS: Multiplexed Information and Computing Service foi um computador bastante avançado para a sua época. O projeto teve início em 1964. 2 AT&T: American Telephone & Telegraph. 3 Bell Labs: Também conhecido como AT&T Bell Laboratories e Bell Telephone Laboratories. 4 DEC: Digital Equipment Corporation, posteriormente adquirida pela Compaq, que foi comprada pela HP. 5 The Open Group: É um consórcio da indústria de software para prover padrões abertos e neutros para a infraestrutura de informática. CONCEITOS BÁSICOS UNIX/LINUX www.jairo.pro.br 1/8
Posteriormente o padrão POSIX foi extendido pelo The Open Group, pela publicação da Single Unix Specification, que é uma família de padrões para sistemas operacionais qualificados para o nome Unix. Os sistemas não qualificados em acordo com a Single Unix Specification são chamados de Unix-like. Por exemplo, os sistemas AIX, HP-UX e Mac OS X são sistemas Unix registrados, já Linux e FreeBSD são Unix-like. Em 1992 os sistemas Unix foram adaptados para a arquitetura RISC 6. 2 - FAMÍLIA UNIX Após o POSIX, tecnicamente o Unix passa a ser tratado como uma família de sistemas operacionais. Essa família é composta tanto por membros proprietários quanto membros de código fonte aberto. Os principais membros dessa grande família são: Sistema Operacional Fabricante Arquitetura do computador Solaris [SunOS] Sun 7 Microsystems [proprietário] RISC - processador Sparc AIX IBM [proprietário] RISC - processador PowerPC HP-UX HP [proprietário] RISC - processador PA-RISC Linux Código fonte aberto [open source] todas FreeBSD Código fonte aberto [open source] todas Mac OS X Apple [proprietário]. Porém, o kernel XNU é open source Atual: x86 8. Anterior: RISC PowerPC Da tabela acima, a arquitetura do computador vem da época da adaptação do Unix para a arquitetura RISC, porém atualmente temos também Solaris rodando em CISC [x86] e HP-UX em EPIC [Itanium]. Linux foi portado para as seguintes arquiteturas de computador: Intel x86 [CISC], Alpha [DEC], Sparc, Motorola 68000, Power, MIPS [MIPS Technologies], PA-RISC, EPIC, AMD X86-64 e ARM. Apesar da definição de Unix como família de sistemas, no ambiente corporativo costuma-se ainda usar o termo "Unix" para os membros proprietários e Linux/FreeBSD para os de código fonte aberto. 6 RISC: Reduced Instruction Set Computer. 7 Em 2010 a Sun Microsystems foi comprada pela Oracle. 8 x86: é a linha de processadores da Intel, que é de arquitetura CISC. CONCEITOS BÁSICOS UNIX/LINUX www.jairo.pro.br 2/8
Mais recentemente, novos sistemas operacionais surgiram baseados nos sistemas Unix-like de código fonte aberto. É o caso do ios e Android. Sistema Operacional Fabricante Arquitetura do computador ios [iphone OS] Apple [proprietário]. Porém, o kernel XNU 9 é open source ARM 10 Android Open Handset Alliance 11 [open source] ARM, x86 O ios é baseado no Mac OS X. O kernel [núcleo do sistema operacional] do Mac OS X é XNU, que é um híbrido entre kernel FreeBSD e kernel Mach. Darwin também é considerado kernel, porém trata-se do kernel XNU acrescido de outras porções do sistema. Tanto FreeBSD quanto Mach são Unix-like, já o Mac OS X é um sistema Unix registrado. Por sua vez, o ios é Unix-like. O Android usa o kernel Linux, com algumas modificações. No entanto, Android não é Unixlike, mas pode-se dizer que é baseado no Linux. Tanto ios quanto Android são sistemas desenvolvidos para equipamentos portáteis como celulares, tablets e ultrabooks 12. Em julho de 2014, o Android já vendeu um bilhão de smartphones e tem uma fatia de 80% no mundo. Atualmente, já são vendidos mais smartphones do que celulares comuns, e esse percentual está aumentando rapidamente. O crescimento do segmento portátil tem sido muito rápido nos últimos anos. Entre outras funções, os portáteis podem ser usados para navegar na internet. No início de 2012, os portáteis representavam 9% do tráfego na web global [9% de browser market share], no final de 2013 representavam 26%. Em 2014, nos Estados Unidos, já representam mais de 50% do tráfego na web. A persistir esse crescimento, dentro de poucos anos irá desaparecer a figura do desktop usado quase que exclusivamente para acessar a internet. No mundo inteiro, no final de 2012 havia cerca de 1,1 bilhão de smartphones, e estima-se que em 2018 já serão cerca de 3,5 bilhões (atualmente a população do mundo é de 7 bilhões). Voltando ao Unix e considerando a popularidade dos novos sistemas derivados e baseados nele, é fácil concluir que essa família continua bem atual, embora tenha mais de 40 anos de idade. 3 - LINUX O nome Linux vem em homenagem a Linus Torvalds, o estudante de Ciência da 9 XNU: é um acrônimo e significa X is Not Unix. 10 ARM: significa Advanced RISC Machine e pertence à empresa ARM Holdings. Difere do RISC tradicional por ter apenas 32 bits e consumir pouca energia. É uma arquitetura específica para equipamentos portáteis. 98% dos celulares do mundo usam processador ARM. 11 Open Handset Alliance: Google, HTC, Dell, Intel, Motorola, Qualcomm, Texas Instruments, LG, Samsung, T- Mobile e Nvidia. 12 Ultrabook é um conceito de notebook/netbook mais fino, leve, de baixo consumo de energia e armazenamento de dados em memória flash. CONCEITOS BÁSICOS UNIX/LINUX www.jairo.pro.br 3/8
Computação da Universidade de Helsinki na Finlândia que criou esse sistema em 1991. Na verdade, Linus partiu do Minix 13 e tentou "melhorá-lo". A idéia era ter um Unix-like completo no PC, uma máquina bastante acessível já nessa época. O mesmo não podia ser dito dos RISC onde rodavam os Unix. No entanto, Linus teve problemas para conseguir finalizar o seu intento, então disponibilizou o projeto na internet e convidou algumas pessoas a ajudá-lo. Esse fato trouxe um grande número de colaboradores e soluções, além de uma massa de usuários ao redor do globo. Esses fatores reunidos permitiram rapidamente tornar o Linux um sistema enxuto, rápido, moderno e eficiente. Posteriormente obteve relativa popularização e uso. A licença de uso do Linux é GNU General Public License. Linus criou o Linux a partir do Minix, um sistema operacional também de código fonte aberto criado pelo professor Andrew S. Tanenbaum em 1987. A proposta do Minix era ser um clone aberto do Unix. O Linux é aderente ao padrão ou comitê POSIX [Portable Operating System Interface for Unix, de 1988]. Todo sistema aderente ao POSIX é dito membro da família Unix. Sabemos hoje que o maior mérito de Linus Torvalds não foi a criação do Linux, mas principalmente o modelo aberto e colaborativo que ele inaugurou pela internet para conseguir resolver os problemas do sistema. Esse modelo colaborativo foi posteriormente copiado por outros grupos de desenvolvimento. Tecnicamente, Linux é apenas um kernel [núcleo do sistema operacional]. O código fonte está disponível, sem custo, em http://www.kernel.org. Compilar um kernel para determinada arquitetura de computador não é tarefa trivial. Por isso, as distribuições Linux vieram para simplificar a vida do usuário, e também para facilitar a tarefa de divulgação do Linux 14. 13 Minix: é o sistema operacional Unix-like criado pelo professor Tanenbaum em 1987, com propósitos educacionais. O Minix roda em PCs, ao contrário dos Unix proprietários que rodam na arquitetura RISC. 14 O que nem sempre é verdade, pois algumas distribuições são tão amadoras que denigrem a imagem do pinguim. CONCEITOS BÁSICOS UNIX/LINUX www.jairo.pro.br 4/8
4 - DISTRIBUIÇÃO LINUX Sendo Linux apenas um kernel, não tem como um leigo baixar o código fonte, compilar, instalar e usar na sua máquina. Desse modo, surgiram empresas e projetos comunitários com a intenção de facilitar essa tarefa de instalar e usar Linux. Numa definição, distribuição Linux é o conjunto formado pelo kernel Linux, software aplicativo, utilitários mais um instalador. Esse conjunto é criado e mantido por organizações comerciais ou mesmo projetos comunitários. De um modo geral, as distribuições comerciais tem por intenção vender licença de uso ou suporte ao sistema. Partem de um produto com custo zero [open source] e o que puderem vender será lucro. Mas as distribuições Linux também desenvolvem software, em acordo com as suas necessidades [por exemplo, suporte a harware], e desse modo contribuem com www.kernel.org. E também contribuem com suporte financeiro para www.kernel.org continuar mantendo as suas atualizações no kernel. O desenvolvimento do Linux atualmente continua sendo colaborativo [como no início em 1991], porém agora o desenvolvedor é basicamente um profissional pago por alguma empresa. Isso mostra que a filosofia open source não é incompatível com o mundo dos negócios. Numa visão de mercado, distribuição Linux é uma empresa que junta o kernel Linux, aplicações, utilitários e um instalador amigável num pacote. O objetivo comercial é vender tanto licenças de uso de software (isto é, o sistema 15 ) quanto contrato de suporte. Nesse pacote, geralmente é incluído apenas software de código fonte livre, porém em algumas distribuições encontramos inclusive software proprietário. Exemplos de distribuições Linux: Red Hat [www.redhat.com], é voltada para o segmento servidor. A versão para desktop é o Fedora. CentOS [www.centos.org], é mantido basicamente pelo "reempacotamento" do código disponibilizado pela Red Hat. A lógica dessa distribuição é não cobrar licença de uso, ao contrário do que faz a Red Hat. Suse [www.novell.com/linux], é voltada para o segmento servidor. Para entrar nesse segmento, a Novell comprou a distribuição Suse. Mandriva [www.mandriva.com] é voltada para o segmento desktop. Essa distribuição surgiu da fusão da Mandrake [França] com a Conectiva [Brasil]. Debian [www.debian.org] voltada para o segmento desktop. Tem a tradição de não incluir software proprietário. Slackware [www.slackware.com] voltada para o segmento desktop. Tem a tradição de usar muito a linha de comando. 15 As distribuições Red Hat e Suse [Novell] cobram licença de uso. CONCEITOS BÁSICOS UNIX/LINUX www.jairo.pro.br 5/8
Ubuntu [www.ubuntu.com] voltada para o segmento desktop. Existem centenas de distribuições Linux. A maior parte delas é baseada em alguma citada acima. Para manter todas as distribuições Linux compatíveis entre si foi criado o LSB [Linux Standard Base]. LSB padroniza a estrutura interna da distribuição. De certo modo, LSB é uma extensão do POSIX que é aplicada especificamente ao Linux. O objetivo da LSB é promover um conjunto de padrões que aumentarão a compatibilidade entre as distribuições Linux, permitindo que uma mesma aplicação para Linux seja instalada e rode em qualquer distribuição. A LSB especifica bibliotecas padrão, comandos, utilitários, hierarquia do sistema de arquivo e níveis de execução, entre outros. NOTA: Não são apenas as distribuições Linux que contribuem com www.kernel.org. Por exemplo a Google, no processo de porte [adaptação] do Linux para um celular, precisou desenvolver soluções, que poderão ser incorporadas ao código do kernel Linux. É essa lógica de economia no desenvolvimento que efetivamente garante um rápido crescimento em uso dos sistemas de código fonte aberto. 5 - ARQUIVOS EM UNIX Em Unix, os arquivos são classificados como regulares, diretórios e especiais. Os arquivos que guardam conteúdo são os regulares, e podem ser binários ou texto. Por exemplo, o arquivo /etc/passwd é um arquivo de texto, já o arquivo /bin/ls é binário. Os arquivos que tratam da organização dos dados no sistema de arquivo são os diretórios. Por exemplo, /etc. Já os arquivos do tipo especial são os que associam dispositivos de hardware ao sistema hierárquico de arquivo. No Unix não existe, por exemplo, unidade de disco, portanto o dispositivo físico está associado a um arquivo do tipo especial. No diretório /dev é onde estão os arquivos especiais, por exemplo /dev/sda1. Desse modo, no Unix tudo passa a ser tratado como arquivo, por exemplo, acessar a um dispositivo é acessar a um arquivo do tipo especial. CONCEITOS BÁSICOS UNIX/LINUX www.jairo.pro.br 6/8
6 - CARACTERÍSTICAS DOS SISTEMAS UNIX As características do Unix são: multiusuário, multitarefa, portável e sistema de arquivo hierárquivo e montável. Multiusuário é a capacidade de permitir a mais de um usuário acessar ao sistema simultaneamente. Multitarefa é a capacidade de executar mais de uma tarefa simultaneamente. Portável pois foi escrito na lingugam C, linguagem essa criada para (re)escrever o código do Unix. Desse modo, para portar o Unix para outra arquitetura de computador, o pré-requisito básico é que nessa máquina tenha um compilador C. Numa visão simplificadora, basta compilar o código do sistema Unix nessa máquina que ele terá sido portado. Sistema de arquivo hierárquico e montável diz respeito à estrutura hierárquica do sistema de arquivo, com seus diretórios e sub-diretórios associados aos dispositivos [devices] com sistema de arquivo, os quais são montados [anexados] a determinados pontos no sistema hierárquico. A figura abaixo mostra o sistema hierárquico de arquivo associado [montado] em dois pontos de montagem: dispositivo /dev/sda1 no / [barra] e /dev/sda2 no /home. Os principais diretórios básicos são: /etc/, /bin, /usr, /lib, /tmp, /sbin, /home e /dev. De um modo geral, esses diretórios básicos [além de outros] aparecem em todos os sistemas da família Unix. No /etc é onde estão as configurações do sistema, na forma de centenas de arquivos de texto. No /bin é onde estão os executáveis básicos do sistema. Esses executáveis são os comandos Unix. No /usr é onde estão os recursos, o nome vem de unix system resources. No /var é onde são guardados dados que variam à medida que o sistema roda. Nesse diretório estão, entre outros, os arquivos de log do sistema. Dispositivo de armazenamento de dados /dev/sda1 Dispositivo de armazenamento de dados /dev/sda2 / /bin /etc /usr /var /lib /tmp /sbin /home /dev/sda1 No /lib é onde estão as bibliotecas do sistema. O /tmp é um diretório público, onde todo usuário tem permissão de escrita. No /sbin estão executáveis do sistema, que normalmente não são executados pelos usuários CONCEITOS BÁSICOS UNIX/LINUX www.jairo.pro.br 7/8
e sim pelo root [administrador do sistema]. No /home estão os diretórios homes dos usuários, por exemplo /home/aluno. No /dev é onde estão os arquivos do tipo especiais. Os arquivos especiais relacionam os dispositivos [hardware] ao sistema hierárquico de arquivos. CONCEITOS BÁSICOS UNIX/LINUX www.jairo.pro.br 8/8