1. 6. Funções do Sistema Operacional
1.1. Alocação e liberação de memória:*
1.1.1. O SO usa algoritmos como First Fit, Best Fit ou Worst Fit para decidir onde colocar os dados. *Diferencial:* Sistemas em tempo real têm alocação preditiva para evitar falhas críticas
1.2. Proteção de memória:
1.2.1. Implementada com hardware, como MMU (Memory Management Unit). *Exemplo interessante:* Evita que um processo leia ou escreva nos dados de outro.
1.3. Compartilhamento:
1.3.1. Memória compartilhada entre processos é usada para comunicação rápida. *Exemplo técnico: * Implementações modernas usam técnicas como NUMA (Non-Uniform Memory Access).
2. 1.Definição de Gerenciamento de Memória
2.1. O que é?
2.1.1. O gerenciamento de memória é como o cérebro do sistema operacional organiza a "mesa de trabalho" (RAM) para equilibrar eficiência, segurança e multitarefa. Ele distribui espaços para processos e reorganiza os dados quando necessário
2.2. Por que isso é importante?
2.2.1. - Evita *"deadlocks de memória"*, quando processos ficam esperando recursos indefinidamente. - Permite execução de processos maiores que a memória física, usando técnicas como memória virtual.
2.2.2. - Garante que diferentes tipos de dados (ex.: código, variáveis, pilha) sejam tratados corretamente.
3. 2.Técnicas de Gerenciamento:
3.1. Particionamento:
3.1.1. - Fixo: Cada bloco pode ter uma "etiqueta" indicando o tamanho do processo ideal. *Curiosidade diferenciada: * Processos menores em blocos maiores geram desperdício conhecido como fragmentação interna
3.1.2. - Dinâmico: Usa "memória livre" como blocos flexíveis. *Problema oculto:* Pode gerar *fragmentação externa*, onde pequenos espaços livres não são utilizáveis.
3.2. Paginação:
3.2.1. - Evita fragmentação externa, mas *pode aumentar a latência de acesso* se as tabelas de páginas forem muito grandes.
3.2.2. Tabelas modernas usam *TLB (Translation Lookaside Buffer)* para acelerar a busca das páginas
3.3. Segmentação:
3.3.1. Dá significado aos blocos: código, dados e pilha são tratados separadamente
3.3.2. - *Exemplo diferenciado:* Facilita o uso de *bibliotecas compartilhadas*, que podem ser usadas por vários processos sem duplicação.
4. 3.Mémoria Virtual:
4.1. Conceito:
4.1.1. Cria uma "ilusão" de memória maior que a física, movendo partes de dados para o disco rígido quando não são usados com frequência.
4.2. Benefícios:
4.2.1. - Suporte a multitarefa com processos grandes
4.2.2. - Permite que múltiplos usuários acessem o sistema simultaneamente.
4.3. Paginação por Demanda:
4.3.1. Páginas só são carregadas na RAM quando realmente necessárias, reduzindo desperdício.
5. 4.Alocação de Memória:
5.1. Contígua:
5.1.1. Rápida, mas vulnerável à fragmentação. *Exemplo avançado:* Ideal para sistemas embarcados, que exigem acesso direto à memória.
5.2. Não Contígua:
5.2.1. Usa listas encandeadas ou tabelas para rastrear blocos livres
5.3. Diferencial:
5.3.1. Necessário para sistemas operacionais modernos que suportam múltiplas arquiteturas.
6. 5. Problemas Comuns:
6.1. Fragmentação Interna:
6.1.1. Espaços dentro de blocos são desperdiçados. *Curiosidade:* É comum em sistemas com partições fixas.
6.2. Fragmentação Externa:
6.2.1. Espaços livres entre blocos alocados não podem ser utilizados. *Solução diferenciada:* O uso de *compaction* para reorganizar a memória.
6.3. Thrashing:
6.3.1. O sistema gasta mais tempo trocando páginas entre RAM e disco do que executando processos. *Dica avançada:* Configuração errada de memória virtual é uma causa comum.