O documento discute os conceitos fundamentais de gestão de memória e sistemas de ficheiros. Resume: (1) A memória precisa ser alocada de forma eficiente para permitir vários processos; (2) Programas são armazenados em disco e transferidos para a memória principal para execução; (3) Um sistema operativo gerencia a memória através de mapeamento entre endereços lógicos e físicos.
3. Considerações Gerais
Memória necessita ser alocada de forma eficiente para
permitir o máximo possível de processos.
Um sistema de memória possui pelo menos dois níveis:
Memória principal: acessada pela CPU
Memória secundária: discos
Programas são armazenados em disco.
Executar um programa se traduz em transferi-lo da memória
secundária à memória primária.
Qualquer sistema operativo tem gerência de memória.
Monotarefa: gerência é simples
Multitarefa: complexa
Lambo Chiungo
4. Memória lógica e Memória física
Memória lógica
É aquela que o processo “enxerga”
Endereços lógicos são aqueles manipulados por um
processo
Memória física
Implementada pelos circuitos integrados de memória
Endereços físicos são aqueles que correspondem a uma
posição real de memória
Lambo Chiungo
5. Endereço lógico versus endereço físico
Espaço lógico de um processo é diferente do espaço
físico.
Endereço lógico: gerado pela CPU (endereço virtual)
Endereço físico: endereços enviados para a memória
RAM
Programas de usuários “vêem” apenas endereços
lógicos.
Endereços lógicos são transformados em endereços
físicos no momento de execução dos processos.
Lambo Chiungo
6. Unidade de gerência de memória
Lambo Chiungo
Memory Management Unit (MMU)
Hardware que faz o mapeamento entre endereço lógico e
endereço físico.
Existem inúmeros tipos de MMU (ou UGM):
Inicialmente simples, baseada em registos de relocação
Constituída depois por um chip dedicado com mais
funções.
Actualmente faz parte do chipset da maioria dos
processadores, tendo-se tornado bastante complexo de
utilizar e programar.
8. Ligação de Instruções e Dados à Memória
Lambo Chiungo
A ligação das Instruções e Dados a Endereços Físicos da Memória
podem ser feitos em três alturas distintas:
Na compilação: se os endereços de memória são conhecidos à priori,
o código pode ser gerado de forma absoluta.
Mas se o endereço de início muda, terá de ser recompilado.
No carregamento: se os endereços da memória onde o processo vai
ser carregado não são conhecidos no momentoda compilação, o código
é gerado em modo relocável.
Na execução: se o processo pode ser carregado em vários endereços e
memória diferentes durante a sua execução, a ligação aos endereços
não pode ser realizada de forma definitiva.
Nesse dois últimos casos é necessário suporte do hardware para
realizar o mapeamento de endereços:
Registos de Base e Limite
Unidade de Gestão Memória
9. Código relocável
Carregador relocador
Correção de todas as referências a memória de forma a
corresponder ao endereço de carga do programa
Necessidade de identificar quais endereços devem ser
corrigidos.
Código relocável
Mapeamento das posições a serem corrigidas é mantida
através de tabelas
Código executável mantém informações de relocação na
forma de tabelas
No momento da carga o programa executável é interpretado e
os endereços corrigidos
Lambo Chiungo
10. Código absoluto
Carregador absoluto
Não realiza correção de endereços no momento da carga
do programa em memória.
Código executável absoluto não necessita manter
tabelas de endereços a serem corrigidos.
Endereço de carga
Fixo pelo programa (programador)
Qualquer correção pode ser feita automaticamente, de
forma transparente, a partir de registradores de base.
Lambo Chiungo
11. Mecanismo Básico de Relocação
A todos os endereços lógicos gerados pelo CPU é
adicionado o valor contido num registo de relocação.
Lambo Chiungo
12. Mecanismo Básico de Limitação
É também necessário limitar o espaço de
endereçamento lógico a que um processo pode aceder.
Para isso são utilizados os dois registos base e limite.
Lambo Chiungo
13. Mecanismo Básico de Protecção
Com os Registos de Base e Limite é possível implementar
um esquema de protecção muito simples:
Quando o endereço gerado pelo CPU é inferior à base ou superior
ao limite é gerada uma excepção para o sistema operativo.
Para cada processo são carregados valores diferentes nos registos.
Lambo Chiungo
14. Alocação de Memória
Para carregar um processo em memória, é necessário
atribuir-lhe uma zona de memória de tamanho igual ou
superior ao espaço físico total que ocupa.
A alocação de Memória mais simples é feita através do
particionamento do espaço físico disponível em
múltiplos blocos
Bloco livre: espaço contínuo de memória livre que pode
estar localizado em qualquer sítio da memória física.
Quando um processo está para ser carregado em memória,
é-lhe atribuída memória de um bloco livre.
O Sistema Operativo mantém informações sobre os
Blocos livres.
Blocos ocupados.
Lambo Chiungo
16. Mecanismos de Particionamento
Existem várias formas de particionar o espaço memória, que
dependem sobretudo do tipo de Unidade de Gestão Memória
utilizada.
O mecanismo mais simples consiste na utilização de dois registos
base e limite, que só permitem alocação contínua de toda a
memória de um processo.
Com a evolução do hardware, mecanismos mais complexos têm
sido desenvolvidos e integrados pelos SO ao longo dos tempos.
Utilização de múltiplos registos de relocação, permitindo
distinguir várias zonas distintas no espaço de um processo.
Segmentação
Decomposição do espaço lógico e físico em inúmeras pequenas
zonas independentes da natureza do seu conteúdo
Paginação
Lambo Chiungo
17. Alocação Memória em Modo Contínuo
Como responder a um pedido de alocação de N bytes a partirde
uma lista de blocos livres:
First-fit: alocar o primeiro bloco livre suficientemente grande
para conter N bytes.
Best-fit: alocar o mais pequeno bloco que seja suficientemente
grande para conter N bytes.
É preciso percorrer a lista toda, a menos que esteja ordenada por
tamanhos.
Produz os melhores resultados pois provoca menos desperdícios.
Worst-fit: alocar o maior bloco que seja suficientemente grande.
Necessita percorrer a lista toda.
Lambo Chiungo
22. Swapping
Um processo pode ser temporariamente e parcialmente
retirado da memoria central caso haja falta de espaço para
manter todos os processo, e mais tarde de novo carregado
para continuar a execução.
A unidade de swapping é geralmente o segmento.
Memória Secundária (Backing Store) – espaço em disco
rápido suficientemente grande para guardar cópias das
imagens memória de todos os processos residentes; deve
permitir acesso rápido e directo a essas imagens.
Roll out, roll in – variante do swapping utilizada para
algoritmos de scheduling baseados na prioridade: os
processos com baixa prioridade podem ser retirados da
memória para deixar espaço a processos com maior
prioridade.
Lambo Chiungo
25. Introdução
O sistema de ficheiros é a parte mais vísivel do sistema
operativo.
Cria um recurso lógico a partir de recursos físicos através de
uma interface coerente e simples, fácil de usar.
Mecanismo para armazenamento e acesso a dados e a
programas.
Duas partes básicas:
Ficheiros
Armazenamento de dados e de programas
Directórios
Organização e informações sobre ficheiros
Lambo Chiungo
26. Ponto de vista do usuário
Cada usuário deve ser capaz de:
Criar, apagar, ler e alterar ficheiros.
Controlar as permissões de acesso a seus ficheiros.
Nomear ficheiros de forma simbólica.
Estruturar os ficheiros de forma a adequá-los a suas
necessidades específicas.
Criação de diretórios e subdiretórios.
Realizar back-ups e recuperar ficheiros em caso de
problemas.
Lambo Chiungo
27. Ponto de vista do sistema
O sistema operativo deve ser capaz:
Descrever a localização de todos os ficheiros e de seus
atributos.
Via directório.
Gerenciar espaço físico do disco.
Alocar blocos livres a ficheiros em criação/expansão.
Liberar blocos de ficheiros removidos.
Mecanismos para localizar eficientemente blocos (setores)
que compõem ficheiros.
Lambo Chiungo
28. Conceitos básicos
Ficheiros
Recipientes que contêm dados
Directórios
Conjuntos de referências a ficheiros
Partição
Abstração que permite a partir do disco físico criar
discos lógicos
Lambo Chiungo
29. Conceito de Ficheiro
Informação pode ser armazenada em diferentes tipos de mídia.
O sistema operativo deve oferecer uma visão uniforme da
informação independente do dispositivo físico de armazenamento
Visão lógica é o ficheiro.
Ficheiros são mapeados para dispositivos físicos.
Ficheiros possuem:
Nome
Atributos
Estrutura interna
Tipo
Método de acesso
Operações
Lambo Chiungo
30. Nomes de Ficheiros
O sistema de ficheiros define um espaço de nomes.
Conjunto de regras e convenções para identificar
simbolicamente um ficheiro.
Variam de sistema para sistema:
Distinção entre letras maiúsculas e minúsculas.
Obrigatoriedade ou não de uma extensão.
As vezes extensões são apenas convenções.
Tamanho máximo de nome e da extensão (se houver).
Lambo Chiungo
31. Atributos de um Ficheiro
Informações sobre ficheiros:
Nome: informação simbólica empregada para referenciar o
ficheiro.
Tipo: binário, texto, executável, caracter, bloco.
Localização: posição do ficheiro em um determinado
dispositivo E/S.
Tamanho: número de bytes que compõem o ficheiro.
Proteção: controla acesso de leitura, escrita e execução ao
ficheiro.
Hora e data de criação, identificação do usuário: informações
destinadas a proteção, segurança e monitoração.
Varia de sistema operativo a sistema operativo.
Atributos são mantidos em uma estrutura a parte.
Directório
Lambo Chiungo
33. Sequência de bytes
Sistema operativo não “interpreta” o conteúdo do
ficheiro.
Enxerga apenas ‘bytes’
Interpretação é a nível do programa de usuário.
Vantagem:
Flexibilidade.
Lambo Chiungo
34. Sequência de registros
Ficheiro é “interpretado” como uma sequência de
registros, isto é:
Tamanho fixo;
Estrutura interna.
Operações lêem/escrevem registros.
Lambo Chiungo
35. Árvore
Conjunto de registros não necessariamente de mesmo
tamanho.
Possuem um campo de acesso (chave).
Comum em mainframes.
Método ISAM (Indexed Sequential Access Method).
Lambo Chiungo
36. Operações Sobre Ficheiros
Open - é a função que permite o mapeamento entre o nome de um ficheiro e o seu
descritor interno (FCB= File Control Block).
Procura o nome do ficheiro num directório, acede ao seu FCB e traz o seu
conteúdo para memória.
Valida as permissões de acesso do utilizador.
O sistema mantém uma tabela de ficheiros abertos, na qual são armazenados
os respectivos FCBs.
Close - função inversa.
Liberta o FCB em memória e realiza a actualização dos seus atributos.
Create - cria um novo ficheiro, alocando uma nova entrada no catálogo
Write - transfere uma zona espaço do processo para dentro do ficheiro, realizando a
alocação de espaço necessária à medida.
Read - função inversa.
Seek - permite posicionar o ponteiro de I/O em qualquer parte do conteúdo
do ficheiro.
Etc…
Lambo Chiungo
37. Operações sobre Directórios
Lookup: procura de um ficheiro num directório,
retorna um descriptor de ficheiro.
Create: Criação de um ficheiro.
Delete: remoção de um ficheiro.
List: listagem do conteúdo.
Traverse: atravessamento do directório na procura de
um nó situado mais abaixo.
Lambo Chiungo
38. É o suficiente por hoje!
Feliz Semana Santa
Lambo Chiungo