Gerência de Processos

Um processo é um programa em execução. Para cada processo é atribuído um valor único chamado de Identificador de Processo (PID). Este valor é usado pelo kernel do sistema. O kernel notifica o usuário quando o status do processo é alterado.

 

São providos recursos para garantir a consistência para acessar dados que estão compartilhados entre os processos. Cada tarefa ou thread em execução é um processo. No contexto do FreeBSD processo consiste em um estado de baixo-nível incluindo espaço de endereçamento e ambiente de execução. No kernel, cada processo inclui parâmetros de escalonamento, recursos de controle e informação para identificação.

 

O kernel controla a provisão de serviço para o processo. Usuários podem criar processos, controlar os processos em execução, e receber notificações quando os processos em execução sofrem mudanças.

 

O kernel cria um processo pela duplicação do contexto de outro processo. O novo processo é denominado um processo filho do processo pai original.

 

O processo pode criar um novo processo que é uma cópia do processo original usado pelo sistema de bifurcação de chamada.

O sistema de duplicação de chamada retorna duas coisas: uma o pai do processo, onde o valor de retorno é identificador do processo filho, e outra é o processo filho, onde o valor de retorno é zero.

A relação pai-filho provoca uma estrutura hierárquica na formação dos processos no sistema. O novo processo compartilha todos os recursos de seu pai.

 

Um processo pode terminar pela execução de um sistema de saída. Um processo pode suspender a execução qualquer processo filho usando sistema de espera, que retorna o PID e retorna o status de processo terminado.

 

O sistema operacional FreeBSD suporta multiprogramação, ou seja, a ilusão de execução simultânea de múltiplos processos ou programas.

Gerência de Memória

O FreeBSD utilizada a técnica de swapping, ou seja, caso existam mais processos que memória principal disponível para acomodá-los, alguns processos são selecionados e retirados da memória para serem armazenados em disco, dando assim espaço para novos processos.

 

Atualmente implementa gerência de memória virtual com paginação por demanda, além do swapping.

Nesse esquema, páginas do processo são trazidas do disco para memória apenas quando são referenciadas.

 

Parte de segmentos de texto não precisam ir para o swapping, isso resulta em menos tráfico de arquivos de swap e reduz a quantidade de memória principal requerida por múltiplos processos usando o mesmo segmento de texto.

 

O escalonador de processos decide qual processo vai para o swap ou sai de lá, considerando o tempo de ociosidade, tempo fora da memória principal, tamanho, etc.

 

No FreeBSD o espaço alocado para memória swap é uma potência de dois, e é limitado pelo tamanho pelo espaço de swap determinado na partição do disco.

Entrada e Saída (I/O)

 

O modelo básico do sistema de I/O é uma seqüência de bytes que podem ser acessados randomicamente ou seqüencialmente. Não há métodos de acesso e controle de blocos.

FreeBSD usa descritor; descritores representam objetos básicos suportados pelo kernel, e são criados pelo sistema de chamada especificamente pelo tipo de objeto.

No FreeBSD três tipos de objetos podem ser representados por descritores:

 

O kernel mantém para cada processo uma tabela de descritores (o descritor é meramente um índice nesta tabela).

 

A maioria dos processos espera por três tipos de descritores de arquivo para serem abertos quando eles iniciam:

standard input, standard output, and standard error

 

O bootloader do FreeBSD pode carregar drivers binários no momento do boot. Isso faz com que os fabricantes de hardware se interessem em fazer drivers para esse sistema operacional. Em virtude da natureza aberta do FreeBSD é possível também criar drivers para novos periféricos, contudo a maioria dos drivers lançada é para Windows de modo que ás vezes é necessário esperar vários meses até que se faça um driver para BSD.

 

Sistema de Arquivos

O FreeBSD usa o UFS (Unix File System), que é um pouco mais complexo do que o ext2 do Linux. Ele oferece um meio melhor para garantir a integridade dos dados. Com a opção "soft updates", o sistema diminui o I/O síncrono e aumenta o assíncrono, porque o UFS não é sincronizado com setores do disco e sim com a estrutura do sistema de arquivos. Isso faz com que o FS esteja sempre coerente entre as várias atualizações de dados.

O UFS também tem opções de atributos de arquivos que impedem uso indevido de arquivos vitais. Isso combinado com os níveis de segurança do kernel tornam o sistema quase impenetrável.

 

Os arquivos são organizados em estrutura de árvores chamadas diretórios.

Diretórios são arquivos que contém informações de como encontrar outros arquivos.

O path identifica um arquivo especificando sua localização através da árvore de diretórios. É o “caminho” pelo qual deve-se percorrer até encontrar o arquivo desejado. O diretório principal é chamado de raiz e todos os outros se ligam nele.

 

Cada nó da árvore pode representar um arquivo, um dispositivo de entrada e saída ou ainda um diretório.

 

Em um sistema de diretório organizado na forma de árvore, qualquer arquivo ou subdiretório pode ser identificado de forma não ambígua através do caminho(pathname)

para atingi-lo a partir da raiz da árvore.

 

 

 

 

 “/” representa a raiz da árvore;

 

 

 

Comando para manipulação básica de arquivos:


Webiografia

·        http://www.freebsd.org/docs.html

·        http://www.freebsd.org/

·        http://www.besafe.com.br/freebsd.htm

·        http://www.freebsd.org/doc/en_US.ISO8859-1/books/design-44bsd/overview-io-system.html

·        ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/