Introdução a Informática e Sistemas
Operacionais
Professor: Alexssandro Cardoso Antunes
Software Livre
O que é um Sistema
Operacional ?
Um computador moderno consiste em:
Um ou mais processadores;
Memória principal;
Discos;
Impressoras;
Diversos dispositivos de entrada e saída.
Para gerenciar todos esses componentes é necessária uma camada de
software (sistema operacional).
Sistema OperacionalControla todos os recursos do computador e
forma a base sobre a qual os programas
aplicativos são escritos.
Esconde a complexidade do hardware,
facilitando a vida do usuário (final).
Histórico dos
Sistemas Operacionais
Década de 60
O primeiro sistema a apresentar o conceito de “multitarefa” foi o CTSS
(Compatible Time-Sharing System), desenvolvido pelo MIT.
MIT (Massachussets Institute of Technology), Bell Labs (uma subsidiária
da AT&T) e a General Electric (GE) se uniram para desenvolver o MULTICS
(MULTIplexed Information and Computing Service), sucessor do CTTS.
Ken Thompson (pesquisador da Bell Labs), com base no MULTICS
desenvolveu a sua própria versão do sistema operacional, o UNICS (Uniplexed
Information and Computing Service), posteriormente Unix (linguagem
assembly) para um minicomputador PDP7 (Digital).
Década de 70
Thompson e Dennis Ritchie (também da Bell Labs) reescreveram o
sistema para uma linguagem chamada B, modificada deu origem a linguagem
C, reescrito e portado para um minicomputador PDP11.
A AT&T, onde ambos trabalhavam, licenciou o novo sistema para várias
Universidades (receberam o código fonte) uma vez que não podia
comercializá-lo na época devido às leis americanas antimonopólio.
Histórico dos
Sistemas Operacionais
Década de 70
Da universidade de Berkeley surgiu o BSD (Berkeley Software
Distribution) em 1978, levando a outra vertente de sistemas padrão UNIX.
Ainda havia o compartilhamento do código entre Unix da AT&T e o BSD.
Década de 80
O rompimento do compartilhamento do código ocorreu quando a AT&T
(1983) foi autorizada pelo governo americano a comercializar o sistema que
havia desenvolvido.
O BSD se reestruturou (o código era pertencente a AT&T)
através de contribuições públicas (código fonte) recebidas
pela Internet.
Década de 90
O BSD (início desta década) foi portado para a plataforma Intel 386,
gerando o 386/BSD, primeiro sistema Unix para um computador pessoal a ser
distribuído pela Internet. Consolida-se o que viria a ser chamada licença BSD.
Nascimento da primeira versão do Linux (1994) por Linus Torvalds tendo
como base o MINIX desenvolvido pelo professor Andrew Tanenbaum na
década de 80.
Linus Torvalds
Linus Torvalds
Criador do Linux (núcleo).
Engenheiro de Software.
Empregado da Fundação Linux.
Desenvolve, protege e padroniza o
Linux.
http://www.linuxfoundation.org/
Página familiar (blog).
torvalds-family.blogspot.com
cs.helsinki.fi/u/torvalds
Jon A. Hall
Jon A. Hall
(maddog)
Diretor Executivo da Linux
Internacional.
Associação sem fins lucrativos
(empresas renomeadas de TI).
Ajuda de forma econômica os
programadores bem como o
Linux através de divulgação
(feiras, fóruns, ...).
http://www.li.org/
Figura respeitada no movimento de
Software Livre.
Richard M. Stallman
Richard M. Stallman
Criador da Fundação e Movimento
Software Livre.
http://www.fsf.org/
Criador (idealizador) do Projeto
(sistema operacional) GNU.
http://www.gnu.org/
Autor da GNU (General Public License),
GNU GPL ou GPL.
Página pessoal (blog).
http://www.stallman.org/
http://www.fsf.org/blogs/rms/
Código Aberto versus
Software Livre
Código Aberto
O produto de código aberto é aquele em que existe, à
disposição do usuário, o código do produto em
linguagem de programação, de forma gratuita ou a
custos razoáveis.
Software Livre
É um tipo de software de código aberto.
Na prática, é um movimento, um tipo de software
produzido sob a licença GPL e derivadas.
Portanto, as abordagens não são sinônimas...
Produção do Software
de Código Aberto
O software de código aberto é um modo de produção que tem
seu foco na colaboração entre pessoas.
Com o advento da Internet, impulsionou a produção
(colaboração) e divulgação do software de código aberto.
Os códigos são armazenados em servidores juntamente com a
documentação, arquivos de configuração e versões.
A WIKI (http://www.wikipedia.org/) é um exemplo de
ferramenta de colaboração, onde é possível contribuir através
de informações (textos, figuras, links, índices, etc...).
A maioria dos desenvolvedores de software de código aberto
são profissionais de TI (tecnologia da Informação) que doam
seus trabalhos (códigos) de forma voluntária aos projetos
emocionalmente envolvidos.
Kernel
Aplicativos
Comando de linha GUI
Kernel
UCP DispositivosMemória
Para que os aplicativos
tenham acesso a outras
partes da máquina, como
memória, teclado, discos,
CPU, etc, precisam de
uma camada (kernel) que
coordene estes, de modo
que todos os aplicativos
e sistemas funcionem ao
mesmo tempo.
Kernel, trata-se da
camada mais próxima ao
hardware.
Software
Proprietário
Modelo de negócio
Possui como pré-requisito a geração de lucros.
Quanto menor a divulgação do seu meio de produção,
maior será vantagem competitiva (comercial).
A proteção do código fonte é uma característica essencial.
O Código fonte são linhas de código que, interpretadas ou
compiladas, dão origem ao programa executável ou código
binário. É escrito em uma linguagem de programação, como por
exemplo, Pascal, C, C++, Java.
Existem investimentos em ações de marketing, mão de
obra especializada (analistas, projetistas, programadores,
suporte, ...) bem como infraestrutura (instalações físicas,
servidores, estações de trabalho, links, ...)
Software
Proprietário
Possíveis desconfortos:
Custo de software (licenças) e de hardware (renovação
da infra-estrutura a cada nova versão);
Alienação (engessamento) por parte da empresa
(pública e/ou privada) ao fabricante do software
proprietário;
Prejuízo social, pois não estará incentivando a
liberdade de expressão e o compartilhamento de
conhecimento;
Em caso de migrações, poderá ocorrer a perda de dados
(conversão).
Software Gratuito
Existem programas que são distribuídos de forma gratuita, mas
que não incluem o código fonte.
Exemplos: freeware e shareware.
O freeware tem seu código executável distribuído gratuitamente e
não contém restrições de uso, mas pode ser uma versão menos
completa de um produto comercial.
O shareware geralmente funciona por um tempo, mas requer um
pagamento, na maioria das vezes simbólico, para continuar
funcionando ou eliminar propagandas que surgem no meio de
sua operação (execução).
Modificações ou aprimoramentos dependem do autor, portanto,
não há garantias de que será continuado bem como estará
disponível em futuras versões.
Licença BSD
Usualmente, pode ser feito quase tudo com o código, até mesmo
incluir em um software proprietário e vendê-lo.
Toda a redistribuição do código fonte deve conter a nota
(indicação de que foi criado na universidade de Berkeley) e
deixar inteira a mesma sobre a propriedade do código fonte.
Toda a redistribuição em forma binária deve ser acompanhada
da nota em sua documentação ou outros materiais que
acompanham o produto.
Não podem ser usados nem o nome da universidade nem de seus
colaboradores em propaganda de promoção de produtos
contendo código sob esta licença, exceto em caso de permissão
escrita.
http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5
http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6
Licença GPL
Originalmente idealizada por Richard M. Stallman.
Uma vez usado o código, este contamina o produto final e
o transforma em código aberto (cláusula viral).
Disponibilidade do código fonte.
Não é permitido distribuir um produto, seja de forma
gratuita ou não, e impedir que outros tenham acesso ao
código fonte.
São do tipo copyleft, exigem que toda cópia, modificação e
inclusão do produto em outro sejam passadas adiante com
os mesmos direitos (trabalhos derivados).
http://www.gnu.org/licenses/gpl.html
Licença GPL
A intenção no GPL é que “free” tenha o sentido de liberdade, ou
seja, a liberdade de estudar e modificar o código fonte.
Não há na licença a intenção de que o software seja gratuito.
Liberdades fundamentais defendidas pela Licença GNU GLP:
A liberdade de executar o programa, para qualquer propósito
(liberdade número 0);
A liberdade de estudar como o programa funciona, e adaptá-
lo para as suas necessidades (liberdade número 1). Acesso ao
código-fonte é um pré-requisito para esta liberdade;
A liberdade de redistribuir cópias de modo que você possa
ajudar seu próximo (liberdade número 2);
A liberdade de aperfeiçoar o programa e liberar os seus
aperfeiçoamentos, de modo que toda a comunidade se beneficie
(liberdade número 3). Acesso ao código-fonte é um pré-requisito
para esta liberdade.
Licença OSI
A iniciativa da OSI (Open Source Initiative) é indicar licenças
que permitem o uso híbrido (software proprietário e
software de código aberto).
A cláusula viral (GPL) influenciou a criação desta iniciativa,
uma vez que restringe as empresas a participarem de
projetos de software de código aberto.
Influenciou na propagação/desenvolvimento do GNU/Linux
através da utilização do X11 (distribuições Linux).
Outras licenças compatíveis (requisitos OSI)
http://opensource.org/licenses/alphabetical
Lista de licenças (compatíveis ou incompatíveis GPL)
http://www.gnu.org/licenses/license-list.html
Sustentabilidade em
Software de Código Aberto
Vendas de CDs e DVDs
http://linuxcentral.com/_v3/
Instalação e Manutenção
Primeiras distribuições (difíceis de usar, modo texto).
Suporte e Consultoria
Processos de Missão Crítica (empresas - 24x7).
Outros modelos de negócio
Isca (fornecem gratuitamente um produto e vendem produtos
adicionais que se integram a ele, como consultoria e módulos
adicionais).
Acessórios (vendem um acessório físico que torna o produto
mais atraente ou mais fácil de usar, como livros e manuais).
Extensão (visando a sua comercialização, estendem um produto
de software de código aberto, como versões embarcadas de linux
para execução em hardwares específicos).
Seleção de Software
de Código Aberto
Os itens (aspectos relevantes) durante o processo de
avaliação de sistemas (software de código aberto e
proprietário) deverão contemplar:
Identificação;
Soluções utilizando Código Aberto.
http://freshmeat.net/
Repositório de Projetos de Software de Código Aberto.
http://sourceforge.net/
Listas de Discussão.
http://listas.softwarelivre.org/
Avaliação e Comparação de produtos;
Utilizar revistas (versões eletrônicas) bem como
consultar profissionais de TI (cases).
Dica (utilizar soluções comprovadas em sistemas
operacionais, serviços de rede, aplicações para desktops,
banco de dados e ambientes de desenvolvimento).
Seleção de Software
de Código Aberto
Análise de atributos.
Utilizar a página oficial do projeto, usualmente, o
mesmo contempla informações detalhadas (descrição,
objetivos, funcionalidades, faqs e documentação).
Verifique outros atributos, como a força da comunidade
livre, suporte, confiabilidade, possibilidade de
personalização do software as necessidades suas ou da
empresa, treinamento, instalação, atualização,
manutenção e por fim, possíveis custos na adoção da
solução (processo de migração de software proprietário
para software de código aberto).
Custos
Divergências entre produtos proprietários e de códigos abertos
Depende do ambiente em que é empregado bem como a
disponibilidade de mão de obra especializada.
Custos básicos (licenças, hardware, suporte e manutenção) são
fáceis de calcular. Quantificar os custos de mão de obra, consultoria,
treinamento, etc... é difícil de estimar.
Custo total de propriedade (Total Cost of Ownership - TCO)
Custo de aquisição e implantação de um sistema de informação.
Possíveis Etapas:
Prospecção (custo envolvido no levantamento de soluções possíveis);
Instalação e Configuração (passos a serem realizados por um
programa instalador, participação de consultorias especializadas);
Integração (avaliação cuidadosa poderá evitar problemas sérios);
Operação e Manutenção (são praticamente idênticos);
Migração (se os formatos dos dados são conhecidos, mais facilmente
a transição ocorre).
Exemplos de SL
Propósito Geral
Pacote de Escritório (OpenOffice)
http://www.libreoffice.org.br/
Navegador Web (Firefox)
http://br.mozdev.org/
Leitor de E-mail (Thunderbird e Evolution)
http://br.mozdev.org/thunderbird/
http://projects.gnome.org/evolution/
Manipulação Digital (GIMP)
http://www.gimp.org/
Antivírus (Clamwin)
http://www.clamwin.com/
Exemplos de SL
Ambientes (Sistemas) para
Desenvolvimento
GCC
http://gcc.gnu.org/
Eclipse
http://eclipse.org/
Netbeans
http://netbeans.org/
Diagramação de propósito geral (Dia)
http://live.gnome.org/Dia
Editor de páginas WEB (NVU)
http://www.nvu.com/
Diagramação Universal (ArgoUML)
http://argouml.tigris.org/
Exemplos de SL
Sistemas Operacionais
SuSe
http://www.opensuse.org/pt-br/
RedHat
http://www.redhat.com/
Fedora
http://fedoraproject.org/
Mandriva
http://www.mandriva.com/
Debian
http://www.debian.org/
Slackware
http://www.slackware.com/
Ubuntu
http://www.ubuntu-br.org/
Exemplos de SL
Sistemas Operacionais
OpenBSD
http://www.openbsd.org/
FreeBSD
http://www.freebsd.org/
NetBSD
http://www.netbsd.org/
Lista de Distribuições Linux
http://www.icewalkers.com/Linux/Distributions/
Exemplos de SL
Serviços de Rede e Gerenciadores de BD
Samba
http://www.samba.org/
Gerenciador de Banco de Dados (MySQL
e Postgresql)
http://www.mysql.com/
http://www.postgresql.org/
Servidor WEB APACHE
http://www.apache.org
Filtro de E-mail
http://spamassassin.apache.org/
Gerenciador de Banco de Dados MySQL
(PhpMyAdmin)
http://www.phpmyadmin.net/
Referência Básica
TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3 ed. São
Paulo: Pearson Prentice Hall, 2009.