3. O OpenSolaris é
● O OpenSolaris é a versão open source do
Solaris.
● O Solaris foi lançado originalmente pela Sun
em 1991.
● O projeto de desenvolvimento do OpenSolaris
começou em 2004.
● As primeiras versões (ainda com o nome de
SunOS) foram baseadas no BSD.
4. O OpenSolaris ...
● ~41k arquivos, ~11m de linhas de código.
● sistemas de janelas (Xorg): GNOME, CDE,
KDE*
● sistemas de arquivos: UFS, ZFS, ...
7. Quais são os objetivos do
gerenciamento de memória?
● Eliminar restrições de tamanho de processos
que estão na memoria física.
● Possibilitar um nível alto de multiprogramação.
8. O controle da memória
● O kernel do OpenSolaris tem acesso completo
à memória do sistema.
● É ele quem deve dar permissão para que os
programas do espaço do usuário tenham
acesso seguro à memória quando requisitada.
11. Paginação
● A memória física é dividida em páginas.
● Toda pagina ativa (não livre) é um mapeamento
entre um arquivo (vnode) e a memoria.
● Paginas são identificadas partir do vnode e de
um offset (par vnode/offset).
12. Paginação
● O par vnode/offeset também mapeia o arquivo em
swap ou para cache de arquivo.
● O mapeamento entre pagina física e seu espaço
virtual e feito pelo HAT
● Uma lista hash global de paginas contem ponteiros
para listas de paginas e é indexada por uma função
hash(vnode/offset)
14. Paginação
● A paginação feita pelo sistema é chamada de
paginação por demanda.
● Um processo não precisar ser retirado
totalmente da memória para dar espaço a
outro, para isso basta substituir uma ou mais
páginas desse processo.
● Essa politica não interfere na execução dos
processos que não percebem a troca uma vez
que alteramos apenas a referencia do
endereço lógico.
15. Swapping
● Consiste na escolha de um programa residente
na memoria para ser transferido para o disco
com o fim de liberar espaço na memória.
● É possível classificar em dois tipos o swap
realizado pelo OpenSolaris, chamado de soft
swapping e hard swapping.
16. Swapping
● Processos não sofrem swapping caso:
● Estejam sendo executados e sejam interrompidos
por um sinal.
● “Exiting”.
● “Zombie”
● Sejam uma thread do sistema.
● Estejam bloqueando uma thread com prioridade
mais alta.
17. Soft swapping
● Se a memória disponível do sistema se
encontra abaixo de um nível mínimo de
memória livre, por um determinado período de
tempo, o escalonador de memória começa a
fazer a troca de processos.
● Inicialmente o escalonador irá procura por
processos que estão inativos por mais tempo
(com um mínimo de tempo definido por
maxslp), ou seja o que está na memoria mais
tempo sem ser referenciado. (LRU)
18. Hard Swapping
● Acontece se há mais de um processo na fila de
processos ativos.
● E a atividade de paginação ultrapassa um valor
pré definido
● então o núcleo descarrega todos os módulos e
cache do sistema que não estão ativos e começa
a fazer a troca de processos sequencialmente até
que exista memória livre disponível.
19. Para um sistema com 128MB de
memória
Quando o
espaço livre da O marcador é: O algoritmo faz:
memória
2 MB
principal lotfree Começa a procurar por páginas na
atinge: memória que não tenham sido usadas
recentemente. Então, as move para a
1 MB desfree “free list”¹. a conservação da memoria
Promove
utilizada pelo Kernel.
512 KB minfree Não mais aloca memoria para
programas de usuário e operações de
leitura do sistema.
1. O conteudo da “free list” e posteriormente transferido para o disco.
2. Após a versão 7 do Solaris foi introduzido o marcador cachefree.
20. Alguns marcadores
● physmem: contagem total de páginas na
memória física.
● lotsfree: a troca de páginas inicia quando a
memória está abaixo do lostfree.
● minfree: Entre o lostfree e o minfree a taxa de
troca aumenta linearmente.
● maxpgio: limita a taxa de I/O na fila do
dispositivo de swap.
● Cachefree: utilizado como parametro para o
cyclical page cache a partir do Solaris 8.
21. E então?
● O soft swapping ocorre quando a memória fica
em média por 30 segundos abaixo do marcador
desfree.
● O hard swapping ocorre quando o seguinte é
verdade:
● Pelo menos 2 processos estão na fila esperando pela
CPU.
● A memória livre fica em média abaixo do marcador
desfree por mais de 30 segundos.
● Paginação excessiva (acontece quando page-
out+page-in é maior que o definido em maxpgio)
22. Cyclical page cache
● Solaris 8 usa um algoritmo diferente para fazer a remoção de
paginas da memória chamada de cyclical page cache.
● Ela foi projetada para remover os problemas do cache do
sistema de arquivos com a memoria virtual.
● Esse novo sistema substitui paginação por demanda existente
nas versões anteriores.
● Utiliza uma lista para fazer apenas o cache dos dados do
sistema de arquivos. Qualquer outro objeto da memória é
tratado em listas diferentes(binários, bibliotécas...
● Dessa maneira o sistema de arquivos só compete com ele
mesmo por memória.