Introdução aos Sistemas Abertos Carlos Gustavo A. da Rocha Introdução aos Sistemas Abertos [email protected] Introdução ● Afinal, o que é um sistema aberto? ● E pra complicar… o que significa ● Freeware? ● Shareware? ● Free software? ● ... Introdução aos Sistemas Abertos [email protected] Introdução ● Freeware ● ● ● Licenciado por uma empresa ou pessoa Código fonte é de propriedade exclusiva desta empresa ou pessoa (que o escreveu) Seu executável é distribuído de forma gratuita, ocasionalmente mediante algum tipo de registro Introdução aos Sistemas Abertos [email protected] Introdução ● Shareware ● ● Possui todas as características de um freeware, mas possui alguma limitação de recursos ou número de utilizações O usuário deve pagar para remover essa limitação Introdução aos Sistemas Abertos [email protected] Introdução ● Free Software ● ● ● Qualquer programa de computador que pode ser usado, copiado, estudado e redistribuído inclusive com seu código fonte e sem restrições Opõe­se ao conceito de software proprietário, mas não ao de software comercial Possui uma licença, só que com objetivos distintos daquelas elaboradas para softwares proprietários Introdução aos Sistemas Abertos [email protected] Introdução ● Free Software ● A licença de um software livre deve garantir irrevogavelmente – A liberdade para executá­lo, com qualquer propósito; – A liberdade de estudar seu funcionamento, e adaptá­lo às suas necessidades; – A liberdade de redistribuir cópias de modo a ajudar a comunidade; – A liberdade de modificá­lo, e liberar estas modificações, de modo que toda a comunidade se beneficie. Introdução aos Sistemas Abertos [email protected] Introdução ● Free Software ● Diversas licenças atendem essas garantias – GNU GPL (a mais conhecida) – GNU LGPL – BSD – MPL – Apache License – ... Introdução aos Sistemas Abertos [email protected] Introdução ● Free Software ● É importante destacar que nas quatro garantias fundamentais, e nas licenças delas geradas, não existe nada que proíba a venda de um software livre – ● Ou de serviços a ele associados como instalação, configuração, suporte etc. O conceito de software “open source” é bastante semelhante ao “free software”, admitindo contudo a convivência com o software proprietário Introdução aos Sistemas Abertos [email protected] Introdução ● Free Software ● Free Software Fundation (FSF) ­ www.fsf.org – Organização sem fins lucrativos, criada em 1985 por Richard Stallman – Promove o desenvolvimento e uso do software livre – Um dos seus principais projetos e o desenvolvimento do sistema operacional GNU Introdução aos Sistemas Abertos [email protected] Introdução ● Free Software ● GNU is not UNIX (GNU) – www.gnu.org – Visa o desenvolvimento e manutenção de um sistema operacional inteiramente constituído de software livre – Devido a uma série de problemas no desenvolvimento de seu kernel (GNU hurd), desde 1992 utiliza frequentemente um outro kernel, conhecido como Linux Introdução aos Sistemas Abertos [email protected] Introdução A nossa disciplina irá focar exatamente nestes sistemas, que possuem um kernel Linux e uma série de bibliotecas e aplicativos desenvolvidos, em grande parte, como projetos da GNU Introdução aos Sistemas Abertos [email protected] Introdução Linux ­ um pouco de história … Mensagem de Linus Torvalds para comp.os.minix, 05/10/1991 Do you pine for the nice days of minix­1.1, when men were men and wrote their own device drivers? Are you without a nice project and just dying to cut your teeth on a OS you can try to modify for your needs? Are you finding it frustrating when everything works on minix? No more all­nighters to get a nifty program working? Then this post might be just for you :­) Introdução aos Sistemas Abertos [email protected] Introdução Linux ­ um pouco de história … As I mentioned a month(?) ago, I'm working on a free version of a minix­lookalike for AT­386 computers. It has finally reached the stage where it's even usable (though may not be depending on what you want), and I am willing to put out the sources for wider distribution. It is just version 0.02 (+1 (very small) patch already), but I've successfully run bash/gcc/gnu­make/gnu­sed/compress etc under it. ... http://groups.google.com/group/comp.os.minix/msg/2194d253268b0a1b Introdução aos Sistemas Abertos [email protected] Introdução ● Linux x GNU/Linux ● O Linux é apenas o kernel do SO – ● ● Todo o restante (bibliotecas, programas), por definição, não fazem parte do Linux em si O Linux, mais um (grande) conjunto de outros softwares, formam uma “distribuição” ou sistema funcional – www.kernel.org Comumente chamado distribuição GNU/Linux Introdução aos Sistemas Abertos [email protected] Introdução ● Algumas distribuições Linux Introdução aos Sistemas Abertos [email protected] Características ● Algumas características do SO GNU/Linux ● Padrão POSIX – ● Multiusuário ● Multitarefa ● Proteção de software/hardware – ● Característica diretamente ligada a estabilidade Modularizado – Compatível com outros sistemas UNIX Like Inclusive no kernel Introdução aos Sistemas Abertos [email protected] Características ● Algumas características do SO GNU/Linux ● Suporte a múltiplas arquiteturas e hardwares – ● Diversos servidores de aplicações – ● Postgres, java, Maya, etc Roteador – Para LANS e Internet Diversas aplicações enterprise – ● Embedded até enterprise Roteamento estático até Internet core Introdução aos Sistemas Abertos [email protected] Características ● Algumas características do SO GNU/Linux ● Firewall – ● Diversas ferramentas para compatibilidade – Statefull Inspection Suporte a vários tipos de partições, wine, etc ● Amplamente documentado ● ... Introdução aos Sistemas Abertos [email protected] Componentes Componentes de um sistema GNU/Linux Firefox ls Shell Gnome Servidores SO Linux Hardware Introdução aos Sistemas Abertos [email protected] X.Org Componentes ● Interpretador de comandos (Shell) ● Traduz / executa comandos digitados no teclado – ● ● E através do shell que o usuário acessa o sistema em modo texto Existem várias opções de shell para o linux – Também pode executar os comandos contidos em um arquivo (script) Bash (mais usado, padrão), csh, tcsh, ash, ksh, etc Introdução aos Sistemas Abertos [email protected] Componentes ● X.org (ambiente de janelas) ● O Linux não implementa suporte ao ambiente gráfico diretamente no kernel – ● Todo o ambiente gráfico é implementado por programas externos ao SO X.org é baseado na versão 11 do X­Window que foi desenvolvido no MIT, sendo a primeira versão de 1984 Introdução aos Sistemas Abertos [email protected] Componentes ● X.org (ambiente de janelas) ● ● Implementa uma série de bibliotecas e aplicativos básicos para utilização do Linux em modo gráfico Comunica­se com o kernel para trabalhar com os dispositivos – Placa de vídeo – Placa de som – Teclado – Mouse, ... Introdução aos Sistemas Abertos [email protected] Componentes ● X.org (ambiente de janelas) ● Sobre o X.org executam gnome, kde, xfce … – ● Os ambientes gráficos propriamente ditos Gnome, KDE, ... se beneficiam desta arquitetura – Facilita a implementação, pois o X.org “resolve” os problemas de mais baixo nível Gnome Kde Xfce X.Org Introdução aos Sistemas Abertos [email protected] ... Ambientes Gráficos Gnome Introdução aos Sistemas Abertos [email protected] Ambientes Gráficos KDE Introdução aos Sistemas Abertos [email protected] Ambientes Gráficos Xfce Introdução aos Sistemas Abertos [email protected] Ambientes Gráficos Enlightenment Introdução aos Sistemas Abertos [email protected] Ambientes Gráficos Window Maker Introdução aos Sistemas Abertos [email protected] Ambientes Gráficos Black Box Introdução aos Sistemas Abertos [email protected] Sistemas de arquivo ● Forma de se guardar os dados no disco ● O sistema de arquivos padrão do Linux é chamado de “EXT” – ● Além do EXT o Linux suporta – Atualmente estão em uso as versões 3 e 4 do mesmo FAT12, FAT16, FAT32, NTFS, NetBSD, OpenBSD, FreeBSD, Solaris, etc, etc, etc... Introdução aos Sistemas Abertos [email protected] Sistemas de arquivo ● Arquivos e diretórios ● ● Nomes de arquivos – Até 255 caracteres – A rigor qualquer carácter é utilizável (não recomendável) Extensões – São de uso opcional, o tipo de um arquivo é determinado pelo seu conteúdo e não pela sua extensão ● Exemplo: Um executável precisa ter apenas a permissão de execução, e não uma extensão “.exe” Introdução aos Sistemas Abertos [email protected] Sistemas de arquivo ● Arquivos e diretórios ● Arquivos ocultos – ● Arquivos especiais – São aqueles cujo nome inicia em “.” Existem diversos arquivos especiais em um sistema GNU/Linux, sendo seu uso relacionado a acesso a dispositivos, comunicação entre programas, comunicação via rede, etc. Introdução aos Sistemas Abertos [email protected] Sistemas de arquivo ● Arquivos e diretórios ● Cada arquivo ou diretório possui permissões de – ● Leitura, escrita, execução Estas permissões podem ser aplicadas ao – Proprietário do arquivo – Grupo do qual o usuário faz parte – Outros (nem proprietário nem grupo) – Todos os usuários do sistema Introdução aos Sistemas Abertos [email protected] Sistemas de arquivo ● Árvore de diretórios / |­­ bin |­­ boot |­­ dev |­­ etc |­­ home |­­ lib |­­ lost+found |­­ media |­­ mnt |­­ opt |­­ proc |­­ root |­­ sbin |­­ selinux |­­ srv |­­ sys |­­ tmp |­­ usr |­­ var Introdução aos Sistemas Abertos [email protected]