Trabalho apresentado na Universidade Tiradentes para passar uma introdução sobre sistemas operacionais baseados no FreeBSD, passando sobre seu histórico, seu objetivo e seu funcionamento interno.
2. Roteiro
❏ História do FreeBSD e porque utilizá-lo como S.O
❏ Design e Implementação
❏ Kernel
❏ Processos
❏ Gerenciamento de Memória
❏ Sistema de Arquivos
❏ Gerenciamento de pacotes
❏ Derivados
❏ Demonstração
3. Histórico
❏ Descendente do UNIX em 1993
❏ Desenvolvido inicialmente pela Universidade de
Berkeley
❏ Licença BSD
❏ Desenvolvido e mantido por uma equipe pequena
❏ Versões do sistema:
❏ CURRENT(desenvolvimento)
❏ RELEASE(versão fechada de tempos em tempos)
❏ STABLE(versão fechada com correções de bugs)
4. Porque usar...
❏ Melhor que windows(como sistema operacional)!
❏ Descende do mesmo ancestral que o linux, porém,
muitas vezes possui um desempenho melhor
❏ Bastante estável uma vez que sua implementação não
busca suportar todos os dispositivos possíveis(como o
linux)
❏ Mantido completamente pelos commiters
❏ http://www.ocf.berkeley.edu/~reinholz/freebsd/3reasons
.html
5. Design e Imple. - Kernel
❏ No geral, utilizam kernel monolítico(*BSD)
❏ *Visto como problemático por alguns autores
❏ Kernel modular e customizável
❏ Níveis de segurança customizáveis(-1 a 3)
❏ -1 = segurança a padrão unix
❏ 0 = modo seguro utilizado no 1º boot
❏ 1 = sem carregamento a quente, sem escrita direta
❏ 2 = sem escrita
❏ 3 = impossível de modificar regras de firewall
7. Design e Impl. - Processos
❏ Ambiente multitarefa
❏ Cada tarefa/thread é representado por um processo
❏ PID
❏ Sockets ou arquivos para comunicação > single byte
❏ Segue o parâmetro de prioridade para execução
❏ Conceito de “Process Group” e “Sessions”
8. Design e Impl. - Memória
❏ Cada processo possui seu espaço de memória
❏ Espaço dividido em texto, dados e pilha
❏ Texto - instruções de máquina do programa
❏ Dados - variáveis inicializadas e não inicializadas
❏ Um processo pode expandir ou reduzir sua área de
dados
9. Design e Impl. - Memória
❏ No início não existia memória compartilhada
❏ Criação do esquema de memória virtual que poderia
ser compartilhada resolvendo o problema do
compartilhamento de arquivos grandes entre processos
10. Design e Impl. - Sist. Arq.
❏ UFS - Unix File System ou FFS
❏ Evolução das implementações iniciais do UNIX
❏ UFS2 - Unix File System 2
❏ Versão melhorada do UFS, novos atributos,
tamanho extendido, snapshots
❏ ZFS - “Z” File System
❏ Incluso a partir da versão 9, foco na garantia da
escrita, criação de pools com várias partições,
facilidade para arranjos RAID
11. Gerenciamento de pacotes
❏ Sistema de ports
❏ pkgng (similar ao apt-get do debian) para
instalação de binários
12. Derivados
❏ Mac OS X - Sistema operacional proprietário utilizado
no Mac*
❏ NetBSD - Livre, compacto e portável
❏ OpenBSD - Segurança em primeiro lugar
❏ PC-BSD - FreeBSD criado com foco para usuários
finais
❏ DragonFlyBSD
❏ Outros *BSD
Saudação, explicação do slogan
Apesar de sua grande utilização ser na área dos servidores, o freeBSD visto como um sistema operacional é muito mais completo e estável que outras opções disponíveis no mercado, realmente, talvez o usuário que vá utilizá-lo precise de um conhecimento a mais, ou talvez uma “vontade maior”, porém uma vez depois que foi feito isso, o usuário pode desfrutar de um SO estável, seguro e extremamente rápido.
A nível de servidores, a notícia mais recente que tenho é a whatsapp que utiliza o freebsd em sua arquitetura para entrega de mensagens
No roteira da apresentação, inicialmente vamos falar um pouco da história do FreeBSD, porque utilizá-lo como SO
Logo após, falar da implementação básica de algumas partes do SO, tais como, Kernel, Processos, Gerenciamento de Memória e Sistemas de Arquivos
Depois falar um pouco do gerenciamento de pacotes, alguns derivados do FreeBSD e mostrar uma demo do funcionamento do SO e sua instalação básica
No histórico do BSD temos sua criação em 1993, o mesmo foi desenvolvido na universidade de Berkeley. Inicialmente era chamado de 386BSD só que estava com seu desenvolvimento parado porque tinha apenas um mantenedor, foi quando três caras pegaram o projeto e colocaram o SO para andar, sobre a licença do SO, o mesmo é baseado na BSD que permite a alteração e a utilização comercial do software sem restrições, porém garante que nenhuma parte poderá ser responsabilizada.
Atualmente a sua comunicadade está organizada em contribuidores e commiters, onde os contribuidores, participam dos testes, e da documentação do projeto e apenas os commiters tem a possibilidade de fazer alterações e no geral eles quem decidem o rumo do projeto
Sobre as versões, geralmente são lançadas 3 versões anuais ditas estáveis, temos a linha de desenvolvimento, chamada de CURRENT, de tempos em tempos eles lançam uma release e após um tempo de lançamento de uma release, com a correções de possíveis bugs que possam aparecer eles vão chegando a uma versão estável do produto.
- De fato, inicialmente como sistema operacional o mesmo é superior ao windows em quesitos de segurança e estabilidade do sistema operacional, o que também é o foco dele.
- Em relação ao linux, o mesmo descende da mesma raiz e é unix-like porém muitas vezes apresenta um melhor desempenho em condições similares de hardware, óbvio que quando o mesmo é compatível.
- No geral, utilizam kernel monolítico, porém alguns de seus descendentes como o Mac* e o DragonFly-BSD utilizam kernel híbrido
- Kernel modular e customizável, devido ao primeiro motivo, podemos adicionar e remover módulos do kernel e com isso ganhar performance e/ou automatizar o carregamento de módulos no boot do sistema
- Visto como problemático por alguns autores devido a existência de um único ponto de falha o que pode derrubar o sistema como um todo(assim como alguns concorrentes, Linux, Windows, Solaris)
- Níveis de segurança customizáveis, o freebsd por padrão vem com o nível de segurança -1 o que pode ser mudado para 3(mais seguro), em algumas distribuições filhas vem com 3 com o intuito de ser mais seguro por padrão
-1 = sem segurança
0 = utilizando no primeiro boot
1 = sem carregamento de módulos à quente, só recompilando o mesmo. Nenhum programa escreve diretamente na memória, discos que não foram montados não podem ser escritos diretamente nem é possível formatação ou cópia com dd. Gerenciadores do X não podem ser carregados, devido a não ter a possibilidade de escrever diretamente na memória
2 = todas do nível 1 com a impossibilidade de escrever em discos montados ou não, e a hora só pode ser alterada de 1 em 1 segundo
3 = todas do nível 2 com a impossível modificar regras de firewall
- Rodando o FreeBSD podemos rodar binários do linux e do unix
- Assim como demais sistemas operacionais concorrentes, o FreeBSD é multitarefa
- Em sua implementação cada tarefa/thread é representada por um processo, o mesmo vai possuir um PID como nos demais sistemas operacionais
- A comunuicação entre os processos é realizada via sockets quando a mesma precisa enviar mais de um byte
- Assim como outros sistemas operacionais, os processos vão possuir um parâmetro com a sua prioridade.
- No contexto dos processos temos o conceito de grupo e sessões, onde grupos seriam um relacionamento de processos interdepentes e sequencias, podemos citar um exemplo a execução de um comando que passa a sua saída como entrada para um outro, os dois programas estariam no mesmo grupo e sendo esses comandos executados em um terminal ou emulador de terminal, o grupo estaria associado a esse terminal. A utilização de grupos e terminais seria para isolamento de ações no ambiente.
- Derivado da versão inicial do UNIX, os sistemas BSD utilizavam o UFS, porém devido as suas limitações no tamanho de espaço de endereçamento(o projeto inicial era ideal para pequenos discos), foram realizadas mudanças e o mesmo passou a ser chamado de FFS, com a criação de grupos e blocos de discos e dessa maneira, cada um desses já tinha sua própria tabela de alocação permitindo dessa forma gerenciar um maior espaço
- Já sua evolução, o mesmo já suporta um maior tamanhos de discos(até 8 zetabytes), também foi incluído pelo pessoal do FreeBSD a capacidade de tirar snapshots, tanto para UFS/FFS quanto para o UFS2