Artigo: Linux – Estudo de Caso

0

I. INTRODUÇÃO

A seguir trataremos um pouco mais a fundo o funcionamento do Linux, mostrando o seu Sistema de processos, o gerenciamento de memória, o sistema de entra e saída e o sistema de arquivos, o artigo tem por objetivo mostrar de forma fácil e geral as funções do sistema operacional Linux.

 

II. PROCESSOS

Cada processo executa um único programa e inicialmente tem um único thread de controle. Um daemon típico no sistema Linux é o cron, ele acorda uma vez por minuto para verificar se existe alguma tarefa para fazer. Funciona como agendador de tarefas.

Chamadas de sistemas relacionadas a processos:
 Fork;
 Getpid;
 Waitpid;
 Exec;
 Sigaction;
 Alarm.

A. COMUNICAÇÃO ENTRE PROCESSOS
Os processos podem comunicar entre si utilizando um tipo de câmbio de mensagens criando um canal entre dois
processos no qual um deles pode escrever um fluxo de bytes para o outro ler. Este método é chamado pipe, ao tentar ler
uma entrada do pipe, o processo é bloqueado até que o dado esteja disponível. A comunicação também pode ser feita
através de interrupções de software. Um processo pode enviar um sinal para outro processo e dizer ao sistema o que eles
querem que ocorra quando um sinal é recebido.

B. IMPLEMENTAÇÃO DE UM PROCESSO
A representação é por meio de um descritor do tipo task_struct, o qual contém todas as informações do processo. Para manter a compatibilidade com outros sistemas UNIX, o SO identifica os processos por meio do pid. O núcleo organiza todos os processos em uma lista duplamente encadeada de estruturas de tarefas.

C. ESCALONAMENTO
Fila de execução que mantém dois vetores:
 Ativo;
 Expirado;

Quando o vetor de ativos está vazio, uma varredura é feita no vetor de expirados para que as threads passem a fazer parte do vetor de ativos e vice-versa.

 

III. GERENCIAMENTO DE MEMÓRIA

Há no espaço de endereçamento três segmentos:

 Código;
 Dados;
 Pilha;

Quando dois usuários usam o mesmo programa, manter duas cópias do código é ineficiente por este motivo há o segmento de código compartilhado. Além de alocar mais memória o SO consegue acessar dados por meio de arquivos mapeados em memória, o onde o mesmo pode ser lido e escrito.

A. CHAMADAS DE SISTEMA RELACIONADAS
Existe as chamadas munmap que remove um arquivo mapeado e mmap mapeia um bloco para a memória e possui 5 parâmetros:
 addr;
 len;
 prot;
 flags;
 fd;

B. IMPLEMENTAÇÃO DO GERENCIADOR
Para permitir que múltiplos processos usem a mesma memória física, é alocada mais memória conforme a necessidade dos processos do usuários ou de componentes do kernel, otimizando os recursos da plataforma.

C. GERENCIADOR DE MEMORIA FÍSICA
Por conta de alguma idiossincrasia de hardware nem todos tipos de memória física pode ter a mesma entrada, no que diz respeito a E/S e memória virtual. O SO distingue as zonas de memória de três formas:
 ZONE_DMA;
 ZONE_NORMAL;
 ZONE HIGHMEM;

A memória principal é formada por três partes:
 Núcleo;
 Mapa de Memória;
 Molduras de páginas.

D. MECANISMO DE ALOCAÇÃO DE MEMÓRIA
O mecanismo usado para alocar memória é o alocador de páginas. A ideia básica para alocar um bloco de memória é simples e consiste em uma divisão única e contígua com 64 páginas.

O SO gerencia a memória usando o algoritmo companheiro, o qual gera uma fragmentação interna, e para melhor uso separa e gerencia unidades fatiadas. Um terceiro alocador também é usado quando a memória em questão precisa ser contígua no espaço virtual.
O espaço de endereçamento se encontra dividido em áreas homogêneas contíguas e alinhadas em página.

E. PAGINAÇÃO NO LINUX
A ideia básica da paginação é simples. O processo não precisa estar inteiro na memória para executar, é necessário apenas a estrutura de usuário e tabelas de paginação. Uma parte da paginação é implementada pelo núcleo e outra parte por um processo chamado daemon de paginação. O Linux trabalha por demanda, sem pré-paginação e sem conceito de conjunto de trabalho. E cada dispositivo sabe quais páginas estão livres.

F. PFRA
O responsável por manter o reabastecimento de páginas livres a serem usadas é o PFRA (page frame reclaiming algorithm).

O Linux faz distinção entre quatro tipos de páginas:
 Não recuperáveis;
 Trocável;
 Sincronizável;
 Descartável;

A cada vez que o PFRA entra em execução ele tenta recuperar as páginas mais fáceis e depois as mais difíceis. Durante o PFRA as páginas ficam ativas ou inativas. As inativas referenciadas são as candidatas mais fortes a sofrerem despejo.

Por fim há os threads pdflush, que acordam periodicamente para escrever no disco. Quando entra no modo laptop, para que seja conservada a vida da bateria, sempre que as threads pdflush acordam, páginas sujas são escritas em disco.

 

IV. ENTRADA/SAÍDA

O SO faz um tratamento especial para acessar cada dispositivo, ele os chama de arquivos especiais, em geral utiliza-se a forma /dev, e podem ser acessados normalmente sem nenhuma chamada especial. Esses arquivos são divididos em duas categorias:

 Blocos;
 Caracteres;

Cada dispositivo tem um número associado, para serem identificados, principal ou secundário.
No sistema permissivo, é possível adaptar funções do teclado e comando de tela ao gosto do usuário, isto é, flexibilidade.

A. TRASNMISSÃO DE REDE
Implementada em soquetes. Estes são os tipos mais comuns:
1) Fluxo confiável de bytes orientado a conexão;
2) Fluxo confiável de pacotes orientado à conexão;
3) Transmissão não confiável de pacotes;

O protocolos mais usados são: TCP (protocolo de controle de transmissão) e para transmissão não confiável de pacotes o UDP (protocolo de datagrama do usuário) e ambos executados no topo do IP. Não há protocolo comum para fluxo confiável de pacotes.

B. CHAMADA DE SISTEMA PARA E/S
Apesar de cada dispositivo ter um arquivo especial associado a ele, não necessita sempre de chamadas especiais para ser acessado.

C. IMPLEMENTAÇÃO E/S
Feita por um conjuntos de drivers e cada dispositivo tem seu próprio. Sua função é interfacear o dispositivo e o núcleo.

Quando um usuário acessa um arquivo especial o sistema determina o número do dispositivo principal e secundário e se ele é bloco ou caractere. A inclusão de um dispositivo faz com que o SO peça uma nova entrada na tabela de dispositivos.

O sistema de E/S é divido em dois componentes principais, manipulador de blocos e manipulador de caractere. O objetivo da parte que manipula bloco é minimizar o número de transferência que devem ser feitas. E por fim os dispositivos de caracteres, produzem ou consomem caracteres ou bytes de dados, não há acesso aleatório.

A interação com o dispositivo de rede é diferente, por serem assíncronos não tem a mesma fácil integração de interface que os outros dispositivos.

D. MÓDULOS
Módulos são trechos de códigos que podem ser carregados enquanto o sistema está em execução. Para ser executado é preciso alocá-lo dinamicamente, e em seguida obter recursos, logo todos os vetores de interrupção devem ser ajustados e após isto atualizar a tabela para haver o tratamento do novo tipo de dispositivo.

 

V. SISTEMA DE ARQUIVOS

É utilizada uma camada VFS (sistema de arquivos virtual). Quando o SO é ligado, define-se quais sistemas de arquivos serão compilados com o núcleo e, caso necessário, outros sistemas são carregados como módulos.

Os arquivos são simples, zero ou mais bytes, não há distinção entre os tipos. Os arquivos podem ser agrupados em diretórios por questões de conveniência, e estes são armazenados como arquivos. Eles podem ser hierárquicos. O diretório-raiz é chamado / e geralmente contém vários subdiretórios, e também é usado para separar nomes de diretórios.

Existem diversas chamadas de sistema relacionadas a arquivos e ao sistemas de arquivos. As mais utilizadas são as chamadas de sistemas para a criação, leitura e escrita de arquivos.

A. IMPLEMENTAÇÃO DO SISTEMA DE ARQUIVOS
. O VFS define um conjunto de abstrações básicas do sistema de arquivos e as operações que são permitidas nessas abstrações. As quatro principais estruturas de sistemas de arquivos suportadas são:
 Superbloco;
 Estrutura;
 I-node;
 Sistema de arquivos real.

B. I-NODES
É a descrição do arquivo tendo como estrutura básica: permissões do arquivo, tipo, identificação do grupo relativo e do dono, tempos (último acesso, última alteração do i-node, última alteração do arquivo, etc.), contador de referências (quando uma referência do arquivo é apagada o contador de referências é decrementado, quando esse contador chega a zero, o i-node e os blocos alocados para o arquivo são liberados), tamanho em bytes e endereço dos blocos alocados para o arquivo.

C. EXT2
Consiste na melhoria do sistema de arquivos EXT1 (modificação do sistema de arquivos original do MINIX para aceitar arquivos maiores e nomes de arquivos com até 255 caracteres). A partição é dividida em grupos de blocos, sem que exista preocupação com a localização das fronteiras de cilindros do disco. O terceiro bloco é o superbloco. Ele contém informações sobre a organização do sistema de arquivos, incluindo o número de i-nodes, de blocos do disco e o início da lista de blocos livres. O EXT2 tenta espalhar de forma equilibrada os diretórios no disco. Dois mapas de bits controlam os blocos e i-nodes livres, respectivamente.

D. EXT3
Para melhorar a robustez dos sistemas de arquivos, o Linux implementa um sistema de arquivos com diário (Journaling).

E. SISTEMA DE ARQUIVOS /proc.
O conceito básico deste sistema de arquivos, visa criar, para cada processo no sistema, um diretório no /proc., o nome do diretório é o pid do processo escrito como um número decimal. Nesse diretório estão os arquivos que contém informações sobre o processo, como sua linha de comando, variáveis de ambiente e máscaras de sinais.

F. NFS
A ideia básica do NFS é permitir que um conjunto qualquer de clientes e servidores compartilhe um sistema de arquivos comum, formando assim um diretório virtual.

BIBLIOGRAFIA
CARRIER, Brian. File system forensic analysis. Upper Saddle River: Addison-Wesley, 2005.
TANENBAUM, Andrew S. – Sistemas Operacionais Modernos – Tradução Ronaldo A. L. Gonçalves, Luís A. Consularo, Luciana do Amaral Teixeira – Revisão técnica Raphael Y. de Camargo – São Paulo: Pearson Prentice Hall, 2009. 3. ed.

Share.

About Author

Leave A Reply