Escolar Documentos
Profissional Documentos
Cultura Documentos
- Aula 8 -
1. Gerenciamentos em Sistema Operacional Linux
(Texto modificado de Silas Silva, 2007)
No Linux a memória funciona da seguinte maneira, processos que estão em execução têm
prioridade na memória, quando termina um processo e havendo espaço na memória, ficam
resíduos desse processo para uma futura volta desse processo ser mais rápida. Caso a memória
RAM esteja lotada com processos que estão em execução, aí começa a utilização da memória
SWAP (troca) (LIMA, 2007). Daí a grande importância que o Linux dispensa a este espaço, ao
ponto de criar uma partição exclusiva para este fim.
Cada processo do Linux, em uma máquina de 32 bits, dispõe de 3GB de espaço de
endereçamento virtual para si próprio, com 1GB restante reservado para suas tabelas de páginas e
outros dados do núcleo. O 1GB do núcleo não é visível quando o processo executa no modo
usuário, mas torna-se acessível quando o processo faz uma chamada ao núcleo. O espaço de
endereçamento é gerado quando o processo é criado e sobrescrito em uma chamada ao sistema
exec1.
O espaço de endereçamento virtual é dividido em áreas ou regiões organizadas em páginas
contíguas e homogêneas. Isso quer dizer que cada área consiste de uma série de páginas
consecutivas com proteção e propriedades de paginação idênticas. O segmento de código e os
arquivos mapeados são exemplos de áreas. Pode haver vazios no espaço de endereçamento
virtual entre essas áreas. Qualquer referência à memória para um vazio resulta em uma falta de
página fatal (Page fault). O tamanho da página é fixo.
1
Relembrando, um processo pode ser:
Fork: Criar um novo processo;
Wait: Aguardar o término de seu filho;
Exec: Executar outro programa;
Exit:Terminar sua execução;
1
SISTEMAS OPERACIONAIS ABERTOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com
É por meio de um sistema de arquivos que ocorre a gravação e a recuperação dos dados
em um dispositivo de armazenamento em um computador.
O sistema de arquivos é independente do hardware e da BIOS, sendo especificado pelo
software do sistema operacional no momento da instalação do sistema ou na configuração de
dispositivos de armazenamento adicionais posteriormente à instalação. (AUGUSTO, 2005).
O sistema de arquivos do Linux era inicialmente o sistema de arquivos do Minix.
Entretanto, por causa do limite de 14 caracteres imposto aos nomes de arquivos e do tamanho
máximo de 64 MB para os arquivos, houve prontamente interesse em melhorar o sistema de
2
SISTEMAS OPERACIONAIS ABERTOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com
arquivos. A primeira melhoria foi o sistema de arquivos Ext, que permitiu nome de arquivos de 255
caracteres e arquivos de até 2GB. No entanto, ele era mais lento que o sistema de arquivos do
Minix motivando assim a continuidade das pesquisas. (TANEMBAUM, 2005).
Atualmente são mais de 20 sistemas de arquivos suportados pelo Linux , dentre eles os
mais utilizados são o Ext3 e o ReiserFS.
O sistema de arquivos Ext3 foi desenvolvido pelo doutor Stephen Tweedie e colaboradores
na Red Hat, ele seria um ext2 com recurso de journaling e passou a ser suportado na versão 2.4
do Linux. No ext3 o journal usa uma camada chamada JDB (Journaling Block Device), que utiliza
um método diferente na recuperação de dados, ao invés de armazenar bytes que devem ser
gravados, ele armazena blocos modificados do sistema de arquivos na memória para poder
rastrear as operações que ficaram pendentes, a vantagem é que ele não precisa lidar com a
complexidade de gravar bytes no journal e a desvantagem é que o journal acaba ficando
maior.(SILVA, 2004).
O sistema de arquivos ReiserFS foi criado por Hans Reiser especialmente para o Linux,
atualmente ela é patrocinada pela SuSe e mantida pela empresa NameSys (sendo o filesystem
padrão das distribuições GNU/Linux da SuSe), o ReiserFS não utiliza blocos de tamanho fixo, mas
ajusta o tamanho de acordo com o arquivo, ele e muito rápido ao ler arquivos menores.
O ReiserFS possui suporte a arquivos maiores que 2GB, o acesso a árvore de diretórios é
mais rápido que o ext3, utiliza uma eficiente estrutura de dados chamada "balanced tree" ou
árvore equilibrada pois, trata toda a partição como se fosse uma única tabela de banco de dados
contendo diretórios, arquivos e arquivos de meta-data, isso aumenta o desempenho de aplicativos
que trabalham com arquivos pequenos (são lidos em apenas um E/S do HD), em um sistema de
arquivo como ext2 o espaço no disco e alocado em blocos que variam de 512 a 4096 bytes ou até
maior, se o arquivo exceder um múltiplo exato do tamanho do bloco ocorrerá desperdício de
espaço no disco. O ReiserFS não aloca em espaços fixos ou blocos, ele aloca o tamanho exato que
o arquivo precisa.
O ReiserFS não trabalha perfeitamente com o sistema de arquivos de rede NFS (Network
File System), existem alguns patches para resolver o problema, mas eles não o resolvem
completamente(SILVA, 2004).
3
SISTEMAS OPERACIONAIS ABERTOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com
Programa
↓
Sistema de Arquivo
↓
Buffer cache
↓
Device Driver
↓
Disco
4
SISTEMAS OPERACIONAIS ABERTOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com
Um comando Linux, normalmente requer uma entrada (em geral, um arquivo) e uma saída,
a fim de exibir os resultados. Quando nenhum nome de arquivo é especificado, o shell admite que
o teclado do usuário será sua entrada. O teclado é considerado a entrada padrão do sistema. E
quando alguns resultados precisam ser exibidos, o shell assume que a tela será a saída padrão do
sistema.
5
SISTEMAS OPERACIONAIS ABERTOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com
últimos a morrer. Seus filhos vivem como nós seres humanos, nascem, se desenvolvem, tem uma
vida mais ou menos produtiva.
Uma das coisas que o escalonador precisa ter ciência é em qual estado está cada processo.
Na estrutura que armazena os dados de cada processo temos um array de possíveis estados onde
apenas uma das opções abaixo estará ativa.
- TASK RUNNING: Em execução ou aguardando para ser executado.
- TASK INTERRUPTIBLE: O processo está suspenso até que determinada condição se
torne verdadeira.
- TASK UNINTERRUPTIBLE: Como o estado anterior, exceto pelo fato de que o seu
estado não será modificado quando receber um sinal. É importante para os processos que
necessitam executar determinada tarefa sem ser interrompido.
- TASK STOPPED: Execução do processo foi parada.
- TASK ZOMBIE: O processo está terminado, mas o processo pai ainda não executou uma
chamada de sistema para retornar informações sobre o processo morto -“wait”, as informações
não são descartadas pois ainda podem ser utilizadas.
Por padrão o Linux limita os recursos que cada processo pode ter. Isto é, quanto de
recursos do sistema ele pode utilizar. Isso é uma proteção para que caso o usuário faça algo
errado, não prejudique a estabilidade do sistema.
Os processos do Linux são preemptivos, isso significa que quando um processo entra
no estado TASK RUNNING o kernel vai checar se existe alguma prioridade maior do que o
processo corrente. Caso exista, o processo corrente é interrompido e o que tem prioridade maior
começa a rodar.
A prioridade de um processo no Linux está em constante alteração, o escalonador se
mantém informado sobre o que os processos estão fazendo e assim torna-se possível ajustar a
prioridade. Dessa maneira os processos que ficaram proibidos de utilizar o CPU por um longo
intervalo de tempo, tem sua prioridade incrementada automaticamente, contrariamente os
processos que passaram um longo período dentro do CPU são penalizados tendo sua prioridade
decrementada.
O algoritmo de escalonamento do Linux funciona dividindo o tempo do CPU em fatias. Em
uma única fatia cada processo tem um tempo especifico de duração que é computada assim que
essa fatia inicia. Geralmente, processos diferentes têm tempos de execução diferentes. Quando o
tempo de execução de um processo termina, ele é retirado do CPU e outro processo que está
rodando é colocado no seu lugar. Uma fatia termina quando todos os processos esgotaram seu
6
SISTEMAS OPERACIONAIS ABERTOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com
A prioridade dinâmica dos processos convencionais é sempre inferior aos processos com
prioridade estática. Se existir um processo com prioridade estática no estado TASK RUNNING
nenhum processo dinâmico irá rodar até que ele pare de executar. (TOLEDO, 2005).
2. REFERÊNCIAS BIBLIOGRÁFICAS