Você está na página 1de 16

Organização do código fonte

MINIX 3
Este documento toma como base uma
plataforma do tipo IBM PC, o qual inclui a
plataforma Intel de 32 bits;
O fonte Minix é codificado na linguagem C
O caminho do código fonte é /usr/src
Cada diretorio tem um arquivo Makefile
O diretorio de src, /usr/src por padrão, pode ser
mudado inteiramente ou por partes;
Include

Durante cada compilação os arquivos de


”/usr/include/” são substituidos pelos de
”/usr/src/include/”
Um #include<nomearquivo>, entre <>, em
linguagem C, busca o Header no diretório
padrão de Header;
Um #include”nomearquivo”, entre ””, em
linguagem C, busca o Header no diretório
corrente do arquivo fonte, caso não encontre,
busca no diretório padrão
Include sub-diretórios

O diretório /usr/src/include contém alguns


Headers padrões POSIX, além destes, tem-se
os subdiretórios:
sys: Headers POSIX adicionais;
minix: Headers usados no MINIX 3
ibm: Headers com definições específicas de IBM-PC
Src sub-diretórios

O diretório /usr/src, além do include, contém


outros importantes sub-diretórios:
Kernel: camada 1, contém escalonador, clock e
system tasks
Drivers: camada 2, contém os drivers do SO, por
ex: driver de discos, impressoras, etc.
Servers: camada 3, contém os servidores do SO,
entre eles, PM (process manager), FS (file
system), entre outros
Outros diretórios essenciais

/usr/src/lib/: contém os códigos fontes para


procedimentos de bibliotecas
Ex: open, read
/usr/src/tools/: contém Makefile e scripts para a
construção do MINIX 3
/usr/src/boot/: contém os códigos para o boot e
para a instalação do MINIX 3
Comodidades MINIX

Como o MINIX 3 possibilita alterações e até as


favorece e sendo um SO experimental e
educativo, ele tem um diretório de testes;
/usr/src/test: contém fontes para teste do sistema;

Programas são necessários a qualquer SO, há


uma pasta que armazena alguns fontes de
programas
/usr/src/commands: contém fontes de alguns
programas, na sua maioria de aplicações open
source;
Compilando o MINIX 3

A forma mais simples de compilar o MINIX 3 é ir


em ”/usr/src/tools” e digitar ”make hdboot”
Ao fazer isso uma cópia de /usr/src/include/ é
sobrescrita em /usr/include
Os códigos dos diretórios de /usr/src, kernel,
servers e drivers são compilados para arquivos
objeto;
Todos os arquivos de /usr/src/kernel são linkados
para formar um arquivo único, kernel
O mesmo acima se aplica para vfs(fs) e pm em /
usr/src/servers
Compilando o MINIX 3
Componentes necessários para o boot;

Fonte: Operating Systems Design and Implementation 3.ed - Andrew S. Tanenbaum


Compilando o MINIX 3

Outros programas necessários para o boot


vistos na imagem acima também são
compilados nos seus respectivos diretórios;

Demais drivers além dos citados na figura acima


podem ser adicionados, mas não são
necessários para a compilação do sistema;
Compilando o MINIX 3

Para instalar uma imagem possível de dar boot,


um programa chamado installboot
(/usr/src/boot) adiciona nomes para kernel, pm,
vfs (fs), init e outros componentes de boot e
atríbui a cada um posições de memória e os
uni em um uníco arquivo;

Esse arquivo é a imagem de boot;


Compilando o MINIX 3 - alocação
em memória do boot

Fonte: Operating Systems Design and Implementation 3.ed - Andrew S. Tanenbaum


Compilando o MINIX 3

A figura do slide anterior mostra como os


programas concatenados na etapa de geração
de imagem são carregados para a memória
O kernel é carregado para o menor valor da
memória possivel;
Todas as outras partes da imagem de boot é
carregada acima de 1 MB;
Tenta-se alocar programas de usuário para as
posições acima do kernel, caso não caiba, será
alocado posições acima do Init;
MINIX 3
MINIX 3 consiste de programas totalmente
independentes, que se comunicam por troca de
mensagens
Procedimentos de mesmo nome em servidores
diferentes, não conflitam entre si, ja que são
linkado em arquivos diferentes;
O que o sistema tem em comum são algumas
poucas rotinas de biblioteca em /usr/src/lib
A modularidade permite remover o FS e o por
em outra maquina diferente como um servidor
de arquivos, e mesmo assim funcionar,
enviando mensagens sobre a rede
Exercicios

1) iniciar o daemonizer de ftp:


No terminal digite
cat >/etc/rc.daemons
daemonize tcpd ftp in.ftpd
CTRL+D

Reinicie o sistema
reboot
Exercicios

2) alterar o banner de entrada:


ir em /usr/src/kernel
Alterar em main.c o banner
compare o arquivo com os valores que aparecem na
inicialização
Ir em /usr/src/tools
Compilar o sistema digitando: make hdboot
Reiniciar o sistema: reboot
Exercicios

3) alterar a captura de uma tecla para que algo


seja escrito quando ele for pressionada;
Ir em /usr/src/drivers/tty/
Alterar keyboard.c
Ir em /usr/src/tools
Compilar o sistema digitando: make hdboot
Reiniciar o sistema: reboot