Sistemas Operacionais:
FreeBSD e Linux
Daniel Ribeiro
Juliana Lee
História do FreeBSD



BSD, ou "Berkeley Software Distribution", surgiu
como um conjunto de ‘patches’ e ferramentas para
o Unix feitos pelo Computer Systems Research
Group (CSRG) da Universidade de Berkeley na
Califórnia.
Quando o CSRG foi extinto, grupos de seus ex
membros continuaram desenvolvendo o código.
Um desses grupos desenvolveu o 386BSD, que
rodava na plataforma Intel i386.
Em 1993, este projeto se dividiu em outros dois: o
FreeBSD e o NetBSD. Em 1996, um projeto
posterior, o OpenBSD, originou-se à partir do
NetBSD.
Diferenças entre os BSDs




O FreeBSD tem como propósito principal ter alta
performance e facilidade de uso para usuários
finais. É o BSD mais utilizado.
A principal preocupação do NetBSD é
portabilidade.
O OpenBSD tem enfoque em questões de
segurança e correção formal.
BDS não livres: Darwin (usado no Mac OS X) e
BSD/OS (é bastante similar ao FreeBSD).
História do Linux

1991 - Surgiu a 1ª versão como um clone do UNIX, com
9.300 linhas em C e 950 linhas em Assembler.

1996 - 2ª versão, com 470.000 linhas em C e 8.000
linhas em Assembler, suporte para arquiteturas de 64
bits, novos protocolos e várias outras características.

Apesar de livre, a GPL (GNU Public License) é maior
que a Licença do Windows 2000 da Microsoft e
especifica o que o usuário pode ou não fazer com o
código.
Processos




Ciclo de vida igual ao Unix.
Os processos são organizados em grupos. São
usados para controlar acesso a terminais e prover
meios de distribuição de sinais para processos
correlatos.
Jobs = processos de um mesmo grupo.
Filhos de um processo herdam o grupo do pai. Um
processo pode alterar o seu grupo, ou o de seus
descendentes, mas a alteração deve seguir
algumas regras.
Processos (cont.)

Pipe: processos envolvidos sofrem um fork
e estes são colocados num mesmo grupo.
 Grupos podem ser todos manipulados
juntos por alguns mecanismos.
 Sessões: agrupamentos de grupos de
processos
 Principais usos das sessões: criar
ambientes isolados para um daemon e seus
filhos, e coletar de uma vez o shell login e
os jobs que esta shell cria.
Processos

Processos e Threads

Executável, Dormente, Zumbi, Parado

No Linux, as propriedades de um processo são agrupadas
em:
– identidade do processo
- PID, Credenciais que definem os direitos de acesso a
ficheiros e outros recursos do sistema
– ambiente (environment)
- Composto por 2 vetores de apontadores para caracteres
– contexto
- É o estado de um programa em execução num dado instante
de tempo (muda constantemente)
Escalonamento de processos

Todo processo possui uma prioridade de
escalonamento a ele associada: quanto maior o
número, menor a prioridade. Processos fazendo I/O de
disco ou outras funções importantes possuem
prioridades menores do que “pzero” e não podem ser
mortos por sinais.
 Processos de usuários comuns possuem prioridades
positivas, e portanto são menos propensos a rodar do
que qualquer processo do sistema.
 Processos de usuário podem setar sua precedência um
sobre ou outro, através do comando nice.
 Quanto mais tempo de CPU um processo acumula,
menor (mais positiva), sua prioridade se torna.
Escalonamento de processos

Linux usa dois algoritmos de escalonamento:
– Um para processos interativos (time sharing)
– Um para processos de tempo real (real time)
- FIFO
- Round Robin

Cada processo tem o campo counter que é número de jiffies
que lhe restam para correr. É decrementado a cada tick do
relógio. Quando chega a zero, é chamado o escalonador.

O escalonador examina os descritores de todos os
processos prontos, calculando o goodness para cada um;
escolhe para correr o processo que tiver o goodness mais
alto.
Memória Virtual

Esquema de paginação simples.
 Compilação padrão seta a prepaginação (raramente
não se habilita esta opção).
 Reposição: Usa esquema FIFO 2 chance
modificado. Libera páginas marcadas livres (em
fila). Se o frame não estiver marcado livre e não
estiver em uso (ex: I/O está sendo feito), a entrada
na tabela de páginas que referencia o frame é
buscado. Se for ‘inválida’, a página é adicionada à
fila de páginas livres. Senão, a página é marcada
‘inválida’.
Memória Virtual (cont.)




Se o bit de referência existir, ele é usado ao invés
de tais marcações.
Existem verificações para garantir que o número de
páginas válidas apontadas por um processo não
fica num nível baixo.
Existe um mecanismo que um processo pode
limitar a quantidade de memória principal que ele
utiliza.
O padrão é que o segmento de dados de cada
processo seja compartilhado e somente para
leitura
Memória

Memória Real e Virtual

Swapping

Tabela de segmentos converte o endereço virtual,
composto pelo par <nº do segmento, deslocamento>,
num endereço físico.

Ponto importante: as páginas virtuais só são copiadas
para memória física quando são referenciadas.
Memória (cont.)
Páginas:

Estratégias de escolha
- Demanda

Estratégias de colocação
- first-fit / best-fit / worst-fit / random-fit

Estratégias de reposição
- Randômico, FIFO, LRU, LFU, NUR, WS
Abstract model of Virtual to Physical
address mapping
Sistemas de Arquivos





Alguns sistemas de arquivos do FreeBSD possuem dois
tamanhos de blocos para inodes sem indiretos. Todos
os blocos excepto o último possuem o mesmo
tamanho. O último bloco é um múltiplo apropriado de
um menor tamanho de fragmento (ex 1k) apropriado
para completar o arquivo.
Ex: um arquivo de 18,000 bytes teria dois blocos de 8K
e um fragmento de 2K (que não seria completo
totalmente).
Muitos arquivos pequenos – tamanho de framento
pequeno.
Tamanho de bloco / tamanho de fragmento: no máximo
8:1.
Menor tamanho de um bloco: 4K.
Sistemas de Arquivos

Muito flexível e capaz de coexistir com muitos SO, já
que suporta 15 file systems: ext, ext2, xia, minix,
umsdos, msdos, vfat, proc, smb, ncp, iso9660, sysv,
hpfs, affs and ufs, além de outros que serão
adicionados com o tempo.

1992 – Surge o 1º file system designado especialmente
para Linux, o Extended File system, ou EXT.

1993 – Surge o Second Extended File system, ou EXT2.
Cada arquivo no EXT2 file é descrito por um simples
inode e cada inode tem um único nº que o identifica.
Sistemas de Arquivos
EXT2 Inode
Sistemas de Arquivos
EXT2 Inode (cont.)

mode – dividido em 2 pedaços: o que este inode descreve e
as permissões que usuários tem para ele.

Owner Information – tipo de usuário e grupo a que os donos
deste arquivo ou diretório pertencem.

Size – o tamanho do arquivo em bytes.

Timestamps – a hora em que o inode foi criado e a útlima
hora em que foi modificado.

Datablocks – ponteiros para os blocos que contém os dados
que este inode está descrevendo.
Fim
Download

BSD, ou "Berkeley Software Distribution", surgiu como - IME-USP