Sistemas Operativos II - Gestão de Memória - PDF
Document Details
Uploaded by jorgecosta
Instituto Politécnico de Coimbra
Tags
Summary
Este documento descreve os conceitos de funcionamento interno de sistemas operativos, com ênfase na gestão de memória, incluindo introdução, mecanismos, proteção e algoritmos. É um material de estudo sobre tecnologia da informação e sistemas computacionais.
Full Transcript
Sistemas Operativos II Funcionamento interno de sistemas operativos SO II – 24/25 Interpretador de Comandos (Chamadas ao...
Sistemas Operativos II Funcionamento interno de sistemas operativos SO II – 24/25 Interpretador de Comandos (Chamadas ao sistema) Gestão de Gestão de Processos ficheiros e (processos, pastas Principais comunicação e sincronização Componente entre s / Funções processos,…) do Sistema Operativo Gestão de Gestão de E/S memória (Periféricos, (Memória, Entrada e Segurança e Saída) proteção,...) Funcionamento interno SOs SO II – 24/25 Gestão de Memória Introdução Mecanismos de gestão de memória Proteção da memória Algoritmos de gestão de memória Funcionamento interno SOs SO II – 24/25 Introdução A gestão de memória é uma função crucial de um sistema operativo que se dedica a alocar e gerir a memória principal (RAM) de um computador. Esta gestão é fundamental para garantir que múltiplos processos possam coexistir e executar de forma eficiente, mesmo quando a necessidade de memória excede a capacidade física disponível. Funcionamento interno SOs SO II – 24/25 Objetivos A alocação eficiente da memória permite que múltiplos processos utilizem a memória de forma eficiente e organizada e que seja alocada a quantidade exata de memória para cada processo, evitando desperdício e maximizando o desempenho do sistema. A proteção da memória garante que um processo não aceda a áreas de memória de outros processos, evitando corrupção de dados e aumentando a segurança do sistema. A utilização mecanismos de proteção impedem que um processo leia ou escreva em áreas de memória que lhe são restritas. Funcionamento interno SOs SO II – 24/25 Objetivos A gestão da memória virtual permite que o sistema operativo utilize mais memória do que a memória física disponível através de técnicas como a paginação e segmentação. Facilita também a execução de processos de grande dimensão ao expandir a memória disponível utilizando armazenamento secundário (disco). Ao implementar formas de alocação de memória, é garantida a melhor utilização possível, seja através de alocação contígua (um bloco contínuo) ou não contígua (dividido em diferentes áreas). Minimizar o tempo de acesso e gestão da memória, otimizando a velocidade do sistema e implementando algoritmos de substituição de páginas eficientes para manter o desempenho alto, especialmente em sistemas que utilizam memória virtual. Funcionamento interno SOs SO II – 24/25 Organização Na memória uniforme a informação (dados ou código) apenas é acessível quando se encontra na memória principal, na memória hierarquizada a informação é repartida ou replicada por diversos níveis da memória de modo a, simultaneamente, maximizar o número de referências às unidades mais rápidas e minimizar a ocupação das mesmas. Em sistemas de partição fixa, a memória é dividida em blocos de tamanhos pré-definidos, o que pode limitar a flexibilidade e resultar em fragmentação interna. Em sistemas de partição dinâmica, a memória é alocada dinamicamente, criando blocos que variam conforme a necessidade, o que reduz a fragmentação, mas pode introduzir fragmentação externa. Funcionamento interno SOs SO II – 24/25 Organização A gestão de memória tem de lidar com fragmentação interna (espaço desperdiçado dentro das partições) e externa (espaço livre entre partições), utilizando algoritmos como first-fit, best-fit e worst-fit para decidir como alocar blocos de memória. Para a conversão rápida entre endereços lógicos e físicos é essencial a utilização das tabelas de página que contêm mapeamentos entre o espaço de memória virtual e os locais físicos. Em complemento as tabelas de segmentos armazenam informações sobre os diferentes segmentos utilizados por um processo, incluindo o tamanho e as permissões de cada segmento. Funcionamento interno SOs SO II – 24/25 Gestão de Memória Introdução Mecanismos de gestão de memória Proteção da memória Algoritmos de gestão de memória Funcionamento interno SOs SO II – 24/25 Mecanismos de gestão de memória Os mecanismos de gestão de memória num SO incluem vários métodos e técnicas que permitem a alocação, libertação, e monitorização do uso de memória, para garantir que diferentes processos e aplicações têm acesso à memória necessária para executar de forma eficiente. Hierarquia de Memória Memória principal (física ou primária) Memórias secundárias (ou de disco) Funcionamento interno SOs SO II – 24/25 Hierarquia de Memória Memória principal (física ou primária): acesso aleatório tempo de acesso reduzido custo elevado ‐> reduzida dimensão informação volátil (perde‐se o conteúdo quando se desliga a máquina) RAM + cache Funcionamento interno SOs SO II – 24/25 Hierarquia de Memória Memórias secundárias (ou de disco): acesso aleatório (por blocos) tempo de acesso elevado custo reduzido ‐> mais abundante informação persistente (informação permanece no dispositivo sem necessitar de energia elétrica) Funcionamento interno SOs SO II – 24/25 Espaço de Endereçamento Conjunto de endereços (posições) que um processo pode referenciar na memória para ler, escrever e executar. Em sistemas operativos modernos, o espaço de endereçamento proporciona a cada processo uma visão isolada e organizada da memória, aumentando tanto a segurança como a eficiência, pois está associado ao processo. Se forem referenciadas outras posições de memória, o hardware de gestão de memória provoca uma exceção que é tratada pelo SO, terminando o processo. Funcionamento interno SOs SO II – 24/25 Endereçamento Para perceber a gestão da memória temos compreender a relação entre os endereços manipulados pelos programadores, os endereços gerados pelo compilador e os endereços físicos que realmente permitem aceder à memória. Consideremos uma instrução numa linguagem de alto nível: x= y+2 As referências lógicas do programador têm de ser transformadas em endereços pelo compilador: Endereços Reais Físicos: Os endereços usados pelo programa correspondem diretamente aos endereços físicos da memória. Endereços Reais Recolocáveis: Os endereços são ajustados com uma base de endereçamento que permite alocar o programa em diferentes partes da memória física Endereços Virtuais: Os endereços indicados no programa não correspondem diretamente à memória física; são convertidos em tempo de execução para endereços reais Funcionamento interno SOs SO II – 24/25 Geração dos Endereços Físicos Durante a Escrita do Programa (Colocação Estática) Neste caso, os endereços físicos são definidos diretamente durante a compilação do programa. O programa é, então, preparado para ser executado numa área específica da memória física, ou seja, uma região fixa da RAM. Este método é conhecido como colocação estática, pois não permite a relocação do programa para outras áreas da memória. Isso significa que o programa só pode ser executado nessa zona específica e não pode ser movido dinamicamente. Funcionamento interno SOs SO II – 24/25 Geração dos Endereços Físicos Durante o Carregamento do Programa na Memória (Recolocação e Reimplantação Estática) Aqui, a geração de endereços físicos ocorre quando o programa é carregado na memória, após a sua compilação. O editor de ligações (linker) cria um executável que é recolocável, ou seja, o programa pode ser carregado em diferentes áreas da memória principal. Nesta fase, o sistema operativo decide onde o programa será implantado e ajusta os endereços de acordo com a localização específica na memória. Este método oferece maior flexibilidade do que a colocação estática, permitindo uma certa movimentação do programa dentro da memória principal, mas ainda é um processo estático, feito apenas no momento do carregamento. Funcionamento interno SOs SO II – 24/25 Geração dos Endereços Físicos Durante a Execução do Programa (Reimplantação Dinâmica) A reimplantação dinâmica ocorre quando a correspondência entre endereços virtuais e físicos é realizada em tempo de execução. Neste método, o sistema operativo usa endereços virtuais para o programa e traduz esses endereços para endereços físicos durante a execução, com o auxílio da Unidade de Gestão de Memória (MMU). Este processo é dinâmico e permite que os programas sejam movidos ou que suas páginas sejam trocadas entre a memória principal e secundária conforme necessário. A tradução dos endereços virtuais em endereços reais é feita constantemente enquanto o programa está em execução, o que proporciona grande flexibilidade, permitindo a execução de programas maiores que a memória física e facilitando o isolamento e proteção dos processos. Funcionamento interno SOs SO II – 24/25 Endereços Reais vs. Virtuais Endereçamento Real No endereçamento real, os endereços especificados pelo programa correspondem diretamente aos endereços físicos da memória. Assim, quando um programa é executado, os endereços que ele utiliza são exatamente aqueles da memória física do computador. Este tipo de endereçamento foi comum em sistemas iniciais monoprogramados, onde não havia necessidade de multiprogramação ou isolamento entre processos. No entanto, o endereçamento real tem várias limitações: Dimensão dos Programas: Os programas estão limitados pelo tamanho da memória física disponível. Se um programa é maior do que a memória, ele não pode ser executado. Multiprogramação: Não é possível a execução de múltiplos programas nos mesmos endereços físicos, o que dificulta a coexistência de vários programas na memória. Portabilidade e Flexibilidade: Como o programa é escrito para endereços físicos específicos, ele não pode ser executado em sistemas com diferentes mapas de memória sem ser recompilado ou ajustado. Funcionamento interno SOs SO II – 24/25 Endereços Reais vs. Virtuais Endereçamento Virtual O endereçamento virtual resolve muitas das limitações do endereçamento real, permitindo que os endereços indicados no programa sejam convertidos em endereços físicos apenas em tempo de execução. Nesse modelo, os endereços que o programador vê não correspondem diretamente aos endereços da memória física do computador. A conversão dos endereços virtuais em endereços reais é feita pela Unidade de Gestão de Memória (MMU), que verifica a localização dos dados e, se estiverem na memória principal, obtém o endereço real para aceder à informação. Caso contrário, a MMU avisa o sistema operativo para carregar os dados necessários na memória principal, permitindo a continuidade da execução. Funcionamento interno SOs SO II – 24/25 Endereços Reais vs. Virtuais Vantagens do Endereçamento Virtual: Isolamento e Proteção: Cada processo é executado num espaço de endereçamento independente, aumentando a segurança e evitando que processos interfiram entre si. Execução de Programas Maiores: Com o uso de memória virtual, o sistema pode executar programas que excedem o tamanho da memória física, movendo partes do programa entre a memória principal e secundária conforme necessário. Flexibilidade para Multiprogramação: O sistema operativo consegue gerir múltiplos processos de forma eficiente, atribuindo a cada processo um espaço de endereçamento virtual e convertendo os endereços conforme necessário. Funcionamento interno SOs SO II – 24/25 Endereços Reais vs. Virtuais Funcionamento interno SOs SO II – 24/25 Mecanismo de Sobreposição (Overlay) É uma técnica de gestão de memória utilizada em sistemas com endereçamento real para permitir a execução de programas maiores do que a memória física disponível. É especialmente relevante em sistemas onde a memória é limitada e não suporta endereçamento virtual. Funcionamento do Overlay O programa é dividido em duas partes principais: 1. Parte Residente: Permanece sempre na memória e contém as variáveis globais e informações essenciais para o funcionamento do programa. 2. Overlays: Módulos independentes que são carregados na memória conforme necessário, substituindo outros módulos que já não são necessários. Processo de execução: Inicialmente, a parte residente e o primeiro overlay (normalmente contendo rotinas de inicialização) são carregados na memória. Após terminar a execução do primeiro overlay, o sistema carrega o próximo módulo, reutilizando o espaço ocupado pelo overlay anterior. Este processo continua até que todas as partes do programa tenham sido executadas. Funcionamento interno SOs SO II – 24/25 Mecanismo de Sobreposição (Overlay) Exemplo 1. A parte residente contém as variáveis globais. 2. O primeiro overlay executa as rotinas de inicialização e, ao terminar, solicita ao sistema operativo que carregue o segundo overlay. 3. O segundo overlay executa as rotinas de cálculo e, ao terminar, solicita o carregamento do terceiro overlay. 4. O terceiro overlay executa as rotinas de escrita dos resultados. A comunicação entre os overlays é feita através das variáveis na parte residente, que permanecem acessíveis durante toda a execução do programa Funcionamento interno SOs SO II – 24/25 Mecanismo de Sobreposição (Overlay) Vantagens Permite a execução de programas maiores do que a memória física disponível. Simples de suportar pelo sistema operativo. Desvantagens O programador deve indicar explicitamente quando um overlay deve ser carregado, o que aumenta a complexidade no desenvolvimento do software. Certos programas não podem ser facilmente divididos em módulos independentes. A troca sistemática de overlays pode tornar a execução lenta, especialmente se os módulos precisarem ser carregados frequentemente. A parte residente, juntamente com qualquer overlay carregado, deve caber na memória principal, o que limita o tamanho individual dos módulos. Funcionamento interno SOs SO II – 24/25 Sistemas Multiprogramados com Endereçamento Real e Partições Fixas Técnica utilizada em sistemas operativos para permitir a execução simultânea de vários programas na memória principal. Este método divide a memória em partições de tamanho fixo, atribuindo cada partição a um programa em execução. Funcionamento 1. Divisão da Memória: A memória principal é dividida em partições de dimensão fixa. Cada partição pode conter apenas um programa. 2. Execução dos Programas: Quando um programa numa partição bloqueia (por exemplo, devido a operações de entrada/saída), outro programa numa partição diferente começa a executar. Este esquema permite aproveitar os tempos mortos de um programa, utilizando o tempo para executar outros programas. Funcionamento interno SOs SO II – 24/25 Sistemas Multiprogramados com Endereçamento Real e Partições Fixas Funcionamento (cont.) 3. Grau de Multiprogramação: O grau máximo de multiprogramação é limitado pelo número de partições existentes na memória. Por exemplo, se a memória tiver 4 partições fixas, no máximo 4 programas podem ser executados simultaneamente. 4. Alocação dos Programas: Um programa é carregado numa partição específica. A decisão do programa que ocupará cada partição é geralmente feita pelo sistema operativo no momento do carregamento. Funcionamento interno SOs SO II – 24/25 Sistemas Multiprogramados com Endereçamento Real e Partições Fixas Problemas Identificados 1. Fragmentação Interna: Como os programas normalmente não ocupam exatamente o tamanho da partição, parte do espaço da partição pode ficar inutilizado. Esse desperdício de memória é conhecido como fragmentação interna, pois ocorre dentro das partições. 2. Desperdício de Recursos: Em algumas situações, uma partição pode estar vazia enquanto outras têm filas de programas à espera para serem executados. Funcionamento interno SOs SO II – 24/25 Sistemas Multiprogramados com Endereçamento Real e Partições Fixas Problemas Identificados (Cont.) 3. Programas Recolocáveis: Para mitigar o problema de filas em partições vazias, foram introduzidos programas recolocáveis. Nestes, os compiladores geram código que não depende de endereços físicos fixos. Durante o carregamento, um loader converte os endereços do programa para endereços físicos da partição designada. Esta abordagem resolve o problema de filas, mas não elimina as limitações impostas pelas partições fixas, como a fragmentação interna. Funcionamento interno SOs SO II – 24/25 Sistemas Multiprogramados com Endereçamento Real e Partições Fixas Proteção Para garantir que um programa numa partição não acede à memória de outra partição, são utilizados registos de limites: Cada partição possui um intervalo de endereços (mínimo e máximo). O sistema operativo verifica, em cada acesso à memória, se o endereço solicitado está dentro dos limites da partição atribuída ao programa. Os sistemas multiprogramados com endereçamento real e partições fixas são uma abordagem básica para implementar multiprogramação. Embora simples e eficiente em determinados contextos, possuem limitações, como a fragmentação interna e a inflexibilidade para lidar com tamanhos variados de programas. Estas desvantagens levaram ao desenvolvimento de métodos mais avançados, como partições variáveis e memória virtual. Funcionamento interno SOs SO II – 24/25 Sistemas Multiprogramados com Endereçamento Real e Partições Variáveis Evolução dos sistemas com partições fixas, permitindo uma maior flexibilidade na alocação de memória ao ajustar dinamicamente o número e o tamanho das partições. Este método é utilizado para melhorar a eficiência no uso da memória principal, minimizando desperdícios. Funcionamento 1. Divisão Dinâmica da Memória: A memória principal não é dividida em partições de tamanho fixo desde o início. Quando um programa é carregado, é alocada uma partição de tamanho exatamente igual ao necessário para o programa. Funcionamento interno SOs SO II – 24/25 Sistemas Multiprogramados com Endereçamento Real e Partições Variáveis Funcionamento (cont.) 2. Libertação e Fusão de Partições: Quando um programa termina, a sua partição é libertada. Caso existam partições livres contíguas, estas podem ser fundidas para formar uma partição maior, aumentando a flexibilidade para acomodar novos programas. 3. Alocação de Memória: Três situações podem ocorrer ao tentar alocar memória para um novo programa: Tamanho Exato: A partição livre é exatamente do tamanho necessário para o programa. Partição Maior: Apenas uma parte da partição livre é usada, deixando o restante disponível para outro programa. Partição Menor: O programa não pode ser carregado, permanecendo na fila de espera. Funcionamento interno SOs SO II – 24/25 Sistemas Multiprogramados com Endereçamento Real e Partições Variáveis Funcionamento (cont.) 4. Fragmentação Externa: Após várias alocações e libertações de memória, é comum que a memória se fragmente em blocos pequenos e dispersos. Embora a soma total de memória livre seja suficiente para executar programas na fila de espera, estes blocos podem ser pequenos demais para acomodar os programas individualmente. 5. Recompactação da Memória: Para resolver o problema da fragmentação externa, a memória pode ser recompactada periodicamente: Os programas são movidos para um extremo da memória, consolidando os blocos livres no outro extremo. Durante este processo, a execução de todos os programas é suspensa. Funcionamento interno SOs SO II – 24/25 Sistemas Multiprogramados com Endereçamento Real e Partições Variáveis Problemas Resolvidos e Persistentes Vantagens: Evita a fragmentação interna, comum em partições fixas. A memória é utilizada de forma mais eficiente, pois as partições são ajustadas ao tamanho do programa. Não é necessário interromper o sistema para reconfigurar partições. Limitações: A dimensão máxima de um programa ainda é limitada pela memória física disponível. A fragmentação externa pode degradar a eficiência ao longo do tempo, exigindo recompactação periódica, que compromete o desempenho. Funcionamento interno SOs SO II – 24/25 Sistemas Multiprogramados com Endereçamento Real e Partições Variáveis Proteção A proteção da memória é feita da mesma forma que nos sistemas com partições fixas, utilizando registos de limites: Cada partição é definida por um intervalo de endereços (mínimo e máximo). O sistema operativo verifica se os acessos à memória realizados por um programa estão dentro desses limites. Os sistemas multiprogramados com endereçamento real e partições variáveis oferecem uma solução mais flexível e eficiente para a gestão de memória em comparação com as partições fixas. No entanto, a fragmentação externa e a necessidade de recompactação permanecem como desafios, o que levou ao desenvolvimento de abordagens mais avançadas, como a memória virtual e a paginação. Funcionamento interno SOs SO II – 24/25 Como combinar todas estas soluções? Endereçamento Virtual Funcionamento interno SOs SO II – 24/25 Endereçamento Virtual O endereçamento virtual permite que os programas usem endereços "falsos" (virtuais) que não correspondem diretamente à localização real na memória física. Durante a execução, esses endereços virtuais são convertidos em endereços físicos pela Unidade de Gestão de Memória (MMU). Funcionamento interno SOs SO II – 24/25 Utilidade Endereçamento Virtual 1. Independência de processos: Cada processo tem o seu próprio espaço de endereçamento, separado dos outros Isso impede que um processo interfira na memória de outro, melhorando a segurança 2. Execução de programas grandes: Com o endereçamento virtual, é possível executar programas maiores do que a memória RAM disponível, utilizando memória secundária (como o disco) 3. Melhor uso da memória: O sistema pode alocar a memória de forma mais eficiente, movendo blocos que não estão em uso Funcionamento interno SOs SO II – 24/25 Funcionamento Endereçamento Virtual Tradução Dinâmica: A MMU converte o endereço virtual para um endereço real quando o programa está a correr. Se o dado solicitado não estiver na memória principal, a MMU avisa o sistema operativo para obtê-lo da memória secundária. Divisão em Blocos: A memória virtual é organizada em blocos lógicos, para facilitar a tradução dos endereços. Cada bloco tem: Um número de bloco. Um deslocamento, que indica a posição dentro do bloco. Funcionamento interno SOs SO II – 24/25 Tipos de Blocos na Memória Virtual 1. Segmentos: Blocos de tamanho variável que representam partes lógicas do programa (por exemplo, código, dados, pilha). Vantagem: É mais fácil organizar o programa logicamente. Desvantagem: Pode causar fragmentação externa (espaços livres entre blocos que não podem ser usados). 2. Páginas: Blocos de tamanho fixo. Vantagem: Evita fragmentação externa. Desvantagem: Pode causar fragmentação interna (espaço desperdiçado dentro de uma página). Funcionamento interno SOs SO II – 24/25 Memória Virtual Segmentada Uma abordagem que utiliza segmentos como unidades de gestão de memória. Gestão de Segmentos: Cada segmento tem permissões específicas (leitura, escrita, execução). Processos diferentes têm tabelas de segmentos distintas, assegurando que cada um possui um espaço de endereçamento independente e protegido. Partilha de Memória: Segmentos podem ser partilhados entre processos através de tabelas de segmentos, permitindo colaboração e troca de dados. Funcionamento interno SOs SO II – 24/25 Problemas e Soluções 1. Fragmentação Externa: À medida que segmentos são criados e eliminados, podem surgir pequenos espaços livres. Soluções: Recompactação: Mover os blocos para consolidar o espaço livre. No entanto, isso suspende a execução do programa. Alocação Incremental: Realocar blocos gradualmente, sem interromper todo o sistema. 2. Proteção de Memória: Cada segmento ou página tem permissões específicas (ler, escrever, executar), impedindo acessos indevidos. 3. Partilha de Memória: É possível partilhar segmentos entre processos: Os endereços virtuais podem ser diferentes para cada processo, mas apontam para o mesmo endereço físico. As permissões de acesso são configuradas individualmente para cada processo. Funcionamento interno SOs SO II – 24/25 Paginação A paginação permite que o espaço de endereçamento virtual seja maior do que a memória física disponível. O programador não precisa de se preocupar com a gestão direta de memória ao escrever programas. Funcionamento: Apenas algumas páginas do programa são mantidas na memória principal. As restantes páginas permanecem na memória secundária e são carregadas para a memória principal quando necessário, por meio de uma operação chamada falta de página. Funcionamento interno SOs SO II – 24/25 Memória Virtual Paginada Métodos de Proteção: Assim como na memória segmentada, verifica-se o tipo de acesso permitido (leitura, escrita, execução). Cada processo tem a sua tabela de páginas, garantindo que os espaços de endereçamento dos processos sejam disjuntos e inacessíveis a outros processos. Isolamento: A separação das tabelas de páginas assegura que cada processo tenha acesso apenas às suas próprias páginas, impedindo acessos indevidos. Partilha da Memória: A partilha entre processos é semelhante à utilizada em memória segmentada. No entanto, na arquitetura paginada, não é possível partilhar menos que uma página inteira, enquanto na segmentada pode-se partilhar divisões lógicas menores, como partes de um segmento. Funcionamento interno SOs SO II – 24/25 Resumindo O endereçamento virtual separa a lógica do programa da memória física, proporcionando: Segurança (processos isolados), Flexibilidade (programas maiores que a RAM), Eficiência (gestão dinâmica de memória). Ele organiza a memória em segmentos ou páginas, cada um com vantagens e desvantagens. Apesar dos problemas, como fragmentação, o modelo é essencial em sistemas modernos para suportar multiprogramação e proteger dados. Funcionamento interno SOs SO II – 24/25 Gestão de Memória Introdução Mecanismos de gestão de memória Proteção da memória Algoritmos de gestão de memória Funcionamento interno SOs SO II – 24/25 Proteção da memória Proteção para páginas A proteção da memória é uma técnica utilizada pelos sistemas operativos para garantir que os processos só acedem à memória que lhes é atribuída e para evitar que um processo interfira na memória de Mecanismos outro. O objetivo é prevenir falhas e de garantir que a memória é utilizada de proteção forma segura. Funcionamento interno SOs SO II – 24/25 Bit de Proteção Cada quadro de memória (ou bloco de memória física) tem associado um bit de proteção. Bit válido/inválido: Se o bit for válido, significa que a página está presente no espaço de endereçamento do processo e pode ser acedida. Se o bit for inválido, significa que a página não está presente no espaço de endereçamento do processo, e uma tentativa de aceder a essa página vai gerar uma falha de página. Falha de página: Quando um processo tenta aceder a uma página que não está na memória física (ou seja, não está carregada na RAM), o sistema operativo gera uma falha de página. O sistema pode, então, carregar a página da memória secundária (disco) para a memória principal. Funcionamento interno SOs SO II – 24/25 Arquitetura Segmentada Na arquitetura segmentada, a memória é organizada em segmentos. Cada processo tem a sua própria tabela de segmentos, que define como a memória está distribuída. O número do segmento e o deslocamento dentro do segmento são verificados: O número do segmento deve ser válido e não ultrapassar o número de segmentos definidos na tabela. O deslocamento (a posição dentro do segmento) deve ser válido, ou seja, não pode ultrapassar o tamanho do próprio segmento. Código de acesso: Cada segmento de memória tem um código de acesso associado, que define as permissões desse segmento. Estas permissões podem ser: Leitura: o segmento pode ser lido, Escrita: o segmento pode ser modificado, Execução: o segmento pode ser executado (caso seja código de programa). Funcionamento interno SOs SO II – 24/25 Arquitetura Paginada Na arquitetura paginada, a memória é dividida em páginas de tamanho fixo. Cada processo tem uma tabela de páginas independente, que mapeia as páginas virtuais do processo para as páginas físicas da memória. Validação do número da página: O número da página virtual é validado com o tamanho da tabela de páginas. Ou seja, o sistema verifica se o número da página que o processo está a tentar aceder existe na tabela. Código de acesso: Tal como nos segmentos, cada página tem um código de acesso associado, que define o que pode ser feito com a página (ler, escrever, executar). Granularidade mínima da proteção: No sistema paginado, a unidade mínima de memória que pode ter proteções aplicadas (como leitura ou escrita) é a página, o que permite uma proteção mais detalhada da memória. Funcionamento interno SOs SO II – 24/25 Gestão de Memória Introdução Mecanismos de gestão de memória Proteção da memória Algoritmos de gestão de memória Funcionamento interno SOs SO II – 24/25 Algoritmos de gestão de memória - Algoritmos de Transferência Os Algoritmos de Transferência fazem parte da gestão de memória dos sistemas operativos e determinam quando e como um bloco de memória é transferido entre a memória secundária (disco) e a memória principal (RAM). Existem três principais tipos de algoritmos de transferência, cada um adequado para diferentes situações: Transferência a Pedido (On Request) A transferência ocorre quando o programa ou o sistema operativo decide carregar um bloco na memória principal. Aplicação: Usado com mais frequência em sistemas de memória segmentada. Permite que o sistema seja mais controlado em termos de quais blocos são carregados, mas pode introduzir atrasos, pois o bloco só é carregado quando solicitado. Funcionamento interno SOs SO II – 24/25 Algoritmos de gestão de memória - Algoritmos de Transferência Transferência por Necessidade (On Demand) O bloco é transferido apenas quando ocorre uma falta (de segmento ou página). Isso significa que um programa tentou aceder a algo que não estava na memória principal. Aplicação: Normalmente usado em sistemas de memória paginada. É eficiente em termos de uso de memória, pois apenas são carregadas as páginas necessárias. No entanto, pode introduzir atrasos na execução devido ao tempo de carregamento da página ou segmento. Transferência por Antecipação (Prefetching) O sistema operativo antecipa que um bloco será necessário e carrega-o antes de ser solicitado. Aplicação: Baseia-se em previsões baseadas no padrão de acesso do programa. Pode melhorar significativamente o desempenho, evitando faltas frequentes, mas pode consumir mais memória e recursos se a previsão for imprecisa. Funcionamento interno SOs SO II – 24/25 Algoritmos de gestão de memória - Algoritmos de Transferência Reserva de Memória na Paginação Simples e Eficiente: Na memória paginada, a reserva de memória é mais simples porque as páginas têm tamanhos fixos. Quando um processo necessita de memória, basta encontrar uma página livre, que geralmente está disponível numa lista de páginas livres mantida pelo sistema operativo. Como as páginas têm tamanho fixo, não há fragmentação externa (espaços livres entre blocos de memória que não podem ser usados). Funcionamento interno SOs SO II – 24/25 Algoritmos de gestão de memória - Algoritmos de Transferência Reserva de Memória na Segmentação Mais Complexa: Na segmentação, os segmentos possuem tamanhos variáveis, o que torna a reserva de espaço mais complexa. É necessário localizar um bloco livre que seja grande o suficiente para satisfazer o pedido de memória do segmento. Libertação de Memória: Quando um segmento é libertado, pode ser necessário recompactar a memória: Os segmentos existentes são movidos para um extremo da memória para consolidar os espaços livres no outro extremo. Isso evita a fragmentação externa, mas interrompe temporariamente a execução dos programas. Funcionamento interno SOs SO II – 24/25 Reserva de Memória - Critérios de Escolha de Blocos Livres Best-Fit (Melhor Ajuste) Escolhe o menor bloco que seja grande o suficiente para o pedido. A lista de blocos livres é ordenada por tamanho crescente. Vantagem: Ideal para minimizar o desperdício, já que o bloco usado é o mais próximo do tamanho necessário. Desvantagem: Gera muitos fragmentos pequenos, difíceis de reutilizar. Funcionamento interno SOs SO II – 24/25 Reserva de Memória - Critérios de Escolha de Blocos Livres Worst-Fit (Pior Ajuste) Escolhe o maior bloco livre disponível. A lista de blocos livres é ordenada por tamanho decrescente. Vantagem: Deixa blocos livres maiores após a alocação, aumentando as chances de satisfazer pedidos futuros. Desvantagem: Esgota os maiores blocos rapidamente, dificultando a alocação de pedidos grandes no futuro. Funcionamento interno SOs SO II – 24/25 Reserva de Memória - Critérios de Escolha de Blocos Livres First-Fit (Primeiro Ajuste) Seleciona o primeiro bloco livre com tamanho suficiente para o pedido. Vantagem: Simples e rápido, minimizando o tempo de procura. Desvantagem: Pode gerar fragmentação externa no início da lista de blocos, com blocos pequenos de difícil reutilização. Funcionamento interno SOs SO II – 24/25 Reserva de Memória - Critérios de Escolha de Blocos Livres Next-Fit (Ajuste Seguinte) Variante do First-Fit, em que a pesquisa começa a partir do último bloco alocado, em vez de reiniciar no início da lista. Vantagem: Evita reutilizar repetidamente blocos pequenos no início da lista. Desvantagem: Fragmentos podem espalhar-se por toda a memória, dificultando a consolidação. Funcionamento interno SOs SO II – 24/25 Reserva de Memória - Critérios de Escolha de Blocos Livres Dimensão do pedido: 15k Best‐Fit: ?Escolhe o bloco mais próximo de 15 KB (ligeiramente maior). Best-Fit: Worst‐Fit: ?Seleciona o maior bloco disponível. Worst-Fit: First-Fit: ?Seleciona o primeiro bloco que satisfaça o pedido. First‐Fit: Next-Fit: ?Semelhante ao First-Fit, mas começa do ponto onde parou. Funcionamento interno SOs SO II – 24/25 Reserva de Memória - Critérios de Escolha de Blocos Livres Algoritmo Buddy É particularmente útil em sistemas de segmentação, pois equilibra o tempo de procura por blocos livres e a fragmentação gerada pela alocação de memória. Como Funciona Divisão Inicial: A memória disponível é dividida em blocos de tamanho fixo, baseados em potências de 2 (2k). Exemplo: Se o tamanho máximo de um bloco é 1024K, os blocos são divididos em tamanhos como 512K, 256K, 128K, e assim por diante. Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy Alocação: Quando um processo solicita memória com tamanho D. Procura-se o menor bloco de tamanho 2k tal que 2k−1 < D ≤ 2k. Se não houver blocos exatamente do tamanho necessário, um bloco maior é dividido em dois "buddies" (blocos irmãos de mesmo tamanho). Este processo de divisão continua até atingir o tamanho desejado. Libertação e Recombinação: Quando um bloco é libertado, o sistema tenta combinar o bloco com o seu "buddy" (se este também estiver livre). Os "buddies" podem ser recombinados recursivamente até formar um bloco maior, maximizando o espaço livre. Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy Vantagens 1. Eficiência: Equilibra o tempo de procura por blocos livres com a gestão de fragmentação. 2. Recombinação Automática: A recombinação de "buddies" ajuda a reduzir a fragmentação externa. 3. Gestão Simples: A abordagem em potências de 2 simplifica a divisão e recombinação de blocos. Desvantagens 1. Fragmentação Interna: Pode haver desperdício de memória dentro de blocos maiores alocados, já que o tamanho do bloco é sempre maior ou igual ao solicitado. 2. Granularidade Limitada: Só suporta tamanhos em potências de 2, o que pode levar a ineficiências em certos pedidos de memória. Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy - Exemplo Vamos considerar o limite inferior i = 6, cujo resultado são blocos de 26K = 64K de tamanho, e o limite superior s = 10, que resulta no tamanho do maior bloco que pode ser alocado, 210K = 1024K de tamanho. Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy - Exemplo Processo A requisita memoria 34K. Vai tentar arranjar um primeiro bloco para os primeiros 34K, o resto da memória tem de ser partida em blocos com um tamanho fixo Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy - Exemplo Processo A requisita memoria 34K… 64K é alocado Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy - Exemplo Processo B requisita memoria 66K… 128K é alocado Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy - Exemplo Processo C requisita memoria 35K… 64K é alocado Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy - Exemplo Processo D requisita memoria 67K… 128K é alocado Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy - Exemplo Processo C libera sua memória Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy - Exemplo Processo A libera sua memória Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy - Exemplo Processo B libera sua memória Funcionamento interno SOs SO II – 24/25 Algoritmo Buddy - Exemplo Processo D libera sua memória Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição (Swapping / Paging) Quando a memória física está cheia e não há espaço para um novo processo ou para continuar a execução de processos existentes, o sistema operativo (SO) necessita libertar memória. Isso é feito através da transferência de segmentos inteiros de processos para o disco rígido. Detalhes do Mecanismo: 1.Escolha de Segmentos para Transferência: O SO escolhe segmentos que provavelmente não serão utilizados no curto prazo Isso ajuda a evitar que os dados transferidos precisem ser rapidamente carregados, o que seria ineficiente 2.Swapped Out: Se não houver espaço suficiente na memória para um novo processo, o SO pode transferir todos os segmentos de um processo para o disco Esse processo é chamado de swapped out (ou seja, o processo é movido completamente para o disco) Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição (Swapping / Paging) Detalhes do Mecanismo (cont.): 3. Transferência de Segmentos Inteiros: 1. Um segmento é sempre transferido como um todo, nunca de forma fragmentada 2. Isso mantém a consistência dos dados e simplifica a gestão da memória 4. Reintegração do Processo (Swapped In): 1. Quando o processo que é transferido para o disco precisa ser executado novamente, o SO carrega todos os seus segmentos de novo para a memória 2. Isso pode envolver transferir outros processos para o disco para libertar espaço Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição (Swapping / Paging) Vantagens do Swapping: Simplicidade: O processo é relativamente simples de implementar e não exige hardware sofisticado. Multiprogramação: Permite que vários processos sejam geridos ao mesmo tempo, mesmo que a memória física seja insuficiente para armazená-los simultaneamente. Desvantagens Potenciais: Desempenho: Transferir segmentos entre o disco e a memória pode ser lento, especialmente se for feito com frequência. Fragmentação Externa: Podem surgir espaços pequenos na memória que não são utilizados eficientemente. Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição de segmentos Normalmente usam‐se três critérios para decidir qual o processo a transferir para disco: 1. Estado e prioridade do processo: Processos que estão bloqueados (ou seja, que não estão a executar porque estão à espera de um recurso ou evento) e aqueles com baixa prioridade, são escolhidos preferencialmente para serem transferidos para o disco. Isto acontece porque estes processos não precisam de estar imediatamente disponíveis na memória principal, tornando mais eficiente o seu armazenamento temporário no disco. 2. Tempo de permanência na memória principal: Um processo deve permanecer na memória principal por um período suficiente para executar as suas tarefas antes de ser novamente transferido para o disco. Caso contrário, seria uma má estratégia retirar um processo logo após ele ter sido carregado para a memória, pois isso resultaria num desperdício de tempo e recursos ao copiá-lo repetidamente entre a memória e o disco. Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição de segmentos 3. Dimensão do processo: A dimensão (ou tamanho) do processo também é considerada. Processos menores são mais fáceis e rápidos de transferir, enquanto processos maiores podem consumir mais recursos e tempo durante a transferência. Resumindo, estes critérios ajudam o sistema operativo a tomar decisões inteligentes, garantindo que: A memória principal é utilizada de forma eficiente. Os processos mais críticos para a execução contínua do sistema permanecem na memória. Reduz-se o impacto no desempenho causado pela movimentação frequente de processos entre a memória e o disco Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição de páginas Os algoritmos de substituição de páginas são métodos usados para gerir a memória virtual em sistemas operativos. Quando a memória principal está cheia e é necessário carregar uma nova página, o sistema deve decidir qual página existente será substituída. Algoritmo Óptimo Remove a página cujo próximo uso será o mais distante no futuro. Vantagem: Ideal em termos teóricos, pois minimiza o número de substituições. Desvantagem: Requer conhecimento do futuro, o que é inviável na prática. Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição de páginas Algoritmo Não Usada Recentemente (NRU) Baseia-se nos bits R (referência) e M (modificação). Periodicamente, o SO percorre as tabelas de páginas, analisa os bits R e M e reinicia o bit R para 0. O sistema classifica as páginas em quatro grupos: Grupo 0: Não referenciada e não modificada (R = 0, M = 0) → Prioridade máxima para remoção. Grupo 1: Não referenciada, mas modificada (R = 0, M = 1). Grupo 2: Referenciada e não modificada (R = 1, M = 0). Grupo 3: Referenciada e modificada (R = 1, M = 1) → Prioridade mais baixa para remoção. Remove primeiro páginas de grupos com menor número. Vantagem: Baseia-se no uso recente e no custo de escrita no disco. Desvantagem: Pode ser complexo de implementar. Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição de páginas FIFO (First In, First Out) Remove a página que está há mais tempo na memória. Vantagens: Simples e eficiente em termos de processamento. Desvantagens: Não considera o grau de utilização da página, podendo remover uma página que ainda está a ser usada frequentemente. Exemplo de problema: Anomalia de Belady, onde mais memória leva a pior desempenho. Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição de páginas Algoritmo da Segunda Oportunidade Variante do FIFO que verifica o bit de referência antes de remover uma página. Se o bit R for 0, a página é removida. Se o bit R for 1, o bit é reiniciado para 0 e a página recebe uma "segunda oportunidade" antes de ser movida para o final da fila. Vantagens: Melhor do que o FIFO, pois evita a remoção imediata de páginas usadas recentemente. Desvantagens: Pode degenerar em FIFO se todas as páginas forem usadas frequentemente. Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição de páginas Segunda Oportunidade Modificada Introduz o estado limpa/suja (bits de referência e modificação) para classificar as páginas: Sem referência e limpa: Não foi usada nem modificada, prioridade máxima para remoção. Sem referência e suja: Não foi usada mas sim modificada, menor prioridade, pois precisa ser escrita no disco antes de ser removida. Com referência e limpa: Usada, menor prioridade ainda. Com referência e suja: Usada e tem que ser gravada, última a ser removida. Escolhe‐se a página a remover na ordem 1 a 4. Vantagem: Dá prioridade a páginas que são mais fáceis de remover (limpas) e menos utilizadas. Funcionamento interno SOs SO II – 24/25 Algoritmos de Substituição de páginas Algoritmo do Relógio Melhoria do algoritmo da Segunda Oportunidade. Organiza as páginas numa estrutura circular (como um relógio), onde o ponteiro indica a página mais antiga. Verifica o bit R de cada página: R = 0: Página removida. R = 1: Reinicia o bit para 0 e avança para a próxima. Vantagem: Simples e eficiente em termos de implementação e uso de memória. Funcionamento interno SOs SO II – 24/25 Comparação entre segmentação e paginação Segmentação A segmentação organiza a memória em segmentos lógicos que refletem a estrutura do programa, como funções, variáveis globais e pilhas. Vantagens: 1. Estrutura lógica: Adapta-se à lógica dos programas, facilitando a gestão dos dados relacionados. 2. Hardware simples: Permite a implementação de sistemas operativos simples em hardware básico. 3. Eficiência em operações sobre segmentos inteiros: As operações que envolvem segmentos completos (como transferência ou cópia) são realizadas de forma eficiente. Funcionamento interno SOs SO II – 24/25 Comparação entre segmentação e paginação Desvantagens Segmentação: 1. Conhecimento necessário por parte do programador: O programador deve estar consciente da divisão dos segmentos, o que pode ser complexo. 2. Complexidade dos algoritmos: Torna-se complicado implementar algoritmos eficientes em sistemas mais avançados. 3. Tempo de transferência elevado: A movimentação de segmentos muito grandes entre memória e disco é demorada. 4. Limitação no tamanho dos segmentos: O tamanho máximo de um segmento é limitado pela capacidade da memória disponível. Funcionamento interno SOs SO II – 24/25 Comparação entre segmentação e paginação Paginação A paginação divide a memória em blocos de tamanho fixo, chamados páginas, que são geridos de forma uniforme. Vantagens: 1. Abstração para o programador: O programador não precisa de gerir a memória diretamente, pois isso é feito pelo sistema operativo. 2. Algoritmos mais simples e eficientes: As operações de reserva, substituição e transferência de memória são mais diretas. 3. Leitura rápida do disco: O tempo de leitura de uma página do disco é razoavelmente pequeno devido ao tamanho uniforme das páginas. Funcionamento interno SOs SO II – 24/25 Comparação entre segmentação e paginação Vantagens Paginação (cont.): 4. Tamanho virtualmente ilimitado dos programas: O sistema operativo pode gerir programas maiores que a memória física disponível, graças ao uso da memória virtual. Desvantagens Paginação: 1. Hardware mais complexo: A paginação exige hardware especializado, como uma unidade de gestão de memória (MMU). 2. Operações menos elegantes: As operações sobre segmentos lógicos tornam-se mais complexas e menos naturais, pois são realizadas sobre conjuntos de páginas. Funcionamento interno SOs SO II – 24/25 Comparação entre segmentação e paginação Desvantagens Paginação (Cont.): 3. Sobrecarga do tratamento de faltas de página: Cada falta de página requer processamento adicional, o que pode impactar o desempenho. 4. Tabelas de páginas extensas: A gestão das tabelas de páginas pode consumir memória significativa, especialmente para processos muito grandes. Funcionamento interno SOs SO II – 24/25 Comparação entre segmentação e paginação Critério Segmentação Paginação Adapta-se à estrutura dos Não se adapta à lógica do Estrutura lógica programas programa Complexidade de hardware Simples Mais complexo Operações sobre segmentos Eficientes Menos eficientes Programas sem limite de Flexibilidade Tamanho dos segmentos limitado tamanho Exige conhecimento do Gestão de memória Automática programador SO II – 24/25