1 / 57

3. Gestão de Memória

3. Gestão de Memória. Introdução. É da responsabilidade do sistema operativo gerir a memória disponível no sistema: Representação do estado da memória Atribuição de memória aos processos Libertação da memória Conjugação entre a memória principal e secundária. Sistemas Mono-programados.

goldy
Download Presentation

3. Gestão de Memória

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3. Gestão de Memória

  2. Introdução • É da responsabilidade do sistema operativo gerir a memória disponível no sistema: • Representação do estado da memória • Atribuição de memória aos processos • Libertação da memória • Conjugação entre a memória principal e secundária

  3. Sistemas Mono-programados • Programas executados à vez • Mediante um comando, o SO carrega o programa em memória principal, e este corre até terminar • Programas limitados à dimensão da memória • Para minorar este problema surgiu a técnica dos overlays – partes de programas (definidas pelo programador) são carregadas em memória • Protecção da memória ocupada pelo SO • Registo Fronteira – registo do processador que é carregado com o endereço limite do sistema operativo

  4. Espaço de endereçamento Espaço de endereçamento DeviceDrivers Programa Programa ROM RAM SistemaOperativo SistemaOperativo RAM Sistemas Mono-programados • Organização da memória Fronteira

  5. Sistemas Multi-programados • Grau de multi-programação • Uma medida aproximada da utilização do CPU quando vários programas correm “simultaneamente” • Suponha que os processos passam uma fracção do tempo da sua existência – p – bloqueados em operações de I/O • Se n processos estiverem a correr, a probabilidade do CPU estar desocupado será então dada por pn (corresponde à probabilidade de todos os processos estarem bloqueados em operações de I/O) • A taxa de ocupação do CPU será então dada por 1-pnn designa-se por grau de multi-programação

  6. Sistemas Multi-programados • Grau de multi-programação A curva que melhor se ajusta à realidade estará situada entre 80% e 90% I/O

  7. Sistemas Multi-programados • Partições fixas • Memória dividida em várias partições de dimensão fixa, definidas inicialmente pelo gestor de sistema • Cada programa é carregado numa partição com uma dimensão adequada • Fragmentação da memória: • Interna – espaço desperdiçado dentro de cada partição • Externa – partições inteiras desperdiçadas.

  8. 800K Partição 3 800K Partição 3 700K Partição 2 700K Partição 2 500K Partição 1 500K Partição 1 100K SistemaOperativo 100K SistemaOperativo 0K 0K Sistemas Multi-programados • Formas de implementação Múltiplas filas Fila única

  9. Sistemas Multi-programados • Colocação e Protecção • A multi-programação trouxe dois problemas a resolver: • Colocação – garantir que os endereços referenciados por um programa sejam os correctos independentemente da posição de memória a partir da qual é carregado • Registo Base – a todos os endereços referenciados pelo programa soma-se o endereço base da partição onde este é carregado. Os programas são escritos como se o primeiro endereço fosse 0. • Protecção – impedir que um programa aceda aos endereços de um outro programa • Registo Limite – verifica-se se os endereços referenciados pelo programa se encontram dentro da partição que lhe é atribuída

  10. End < Limite ? N S End = Base + End Falha de protecção Sistemas Multi-programados • Colocação e Protecção • Exemplos Base e limite para a partição 1 896K Partição 3 Verificação de acesso ao endereço End 768K Partição 2 512K Partição 1 Limite = 384K Programa Base = 128K 128K SistemaOperativo 0K

  11. Sistemas Multi-programados • Partições variáveis • Outro esquema consiste em atribuir partições com dimensões dinâmicas, ajustadas à dimensão dos programas • Deixa de existir fragmentação interna, mas continua a haver fragmentação externa • Para resolver a fragmentação, utiliza-se de tempos em tempos um procedimento de agrupamento da memória num bloco de endereços contíguos – compactação da memória

  12. Sistemas Multi-programados • Swapping • Esquema que envolve a memória principal e a memória secundária (disco) • A ideia consiste em transferir processos da memória principal para o disco e vice-versa • Um possível critério será transferir para o disco um processo que bloqueie, e trazer para a RAM um processo que se torne activo • Esta estratégia é utilizada em conjunto com partições de dimensões variáveis • Conduz à proliferação de buracos (fragmentação) – é necessário recorrer à compactação da memória

  13. Sistemas Multi-programados • Exemplo

  14. Sistemas Multi-programados • Representação da memória • Estrutura-se a memória em unidades(blocos) de dimensão fixa • Representa-se o estado da memóriaatravés de: • Listas ligadas • Bitmaps 1110000110011110 1 – representa bloco ocupado0 – representa bloco livre

  15. Sistemas Multi-programados • Algoritmos • First fit – procura o primeiro buraco da lista com dimensão suficiente para carregar o programa • Next fit – variante do anterior – procura a partir do ponto em que foi encontrado um buraco anteriormente • Best fit – procura o buraco com a dimensão que melhor se ajusta ao programa a carregar • Worst fit – procura o maior buraco disponível, na esperança de que o espaço que sobra possa ainda ser utilizado por outros programas a carregar no futuro • Quick fit – mantém várias listas de buracos, agrupados de acordo com as suas dimensões

  16. Sistemas Multi-programados • Memória dinâmica • Um processo pode ter necessidade de obter mais memória em tempo de execução • Uma solução seria efectuar swap-out do processo e depois swap-in com uma nova dimensão • Demasiado lento... • Outra solução será reservar antecipadamente espaço para crescimento do stack e da heap • Rápido, mas com algum desperdício de memória(é o mais utilizado)

  17. Sistemas Multi-programados • Na linguagem C existem algumas funções que para manipulação de memória dinâmica • malloc(size_t m)reserva um bloco de m bytes e devolve um apontador para o bloco criado • calloc(size_t n, size_t m)reserva dinamicamente um array de n elementos com m bytes cada um. Devolve um apontador para a primeira posição do array criado • free(*ptr)liberta o espaço referenciado pelo apontador ptr. Este apontador pode ser o devolvido anteriormente por malloc ou calloc

  18. Sistemas Multi-programados • Na linguagem C++ existem dois operadores: • new – para reserva de dinâmica de memória • delete – para libertação de memóriaPara além de manipulação da memória, estes operadores invocam construtores e destrutores. • Outras linguagens (e.g., java) utilizam garbage collectors (a reserva/manipulação de memória dinâmica é efectuada pelo interpretador/compilador)

  19. Memória Virtual • Espaço de endereçamento virtual • Espaço de endereçamento que engloba a memória primária e secundária, tirando partido da sua dimensão pode ser muito superior à da memória RAM • O endereçamento virtual difere do swapping visto anteriormente – cada processo pode ter partes carregadas em memória principal, partes em memória secundária, ou em ambos os lados • Para gestão de memória virtual são habitualmente utilizados dois métodos: • Paginação – o mais utilizado (Linux e Windows) • Segmentação – pode ser utilizado com a paginação

  20. Memória Virtual • Endereços reais • Endereços físicos que correspondem ao acesso aos dispositivos de uma forma directa • Endereços virtuais • Endereços utilizados internamente pelo sistema, e que não estão ligados aos dispositivos físicos de uma forma directa – um endereço virtual pode ser muito diferente de um endereço real • São convertidos em endereços reais através de estruturas e algoritmos nos quais intervém o S.O. e também uma unidade de hardware designada MMU (Memory Management Unit)

  21. Memória Virtual • MMU (Memory Management Unit) • A função da MMU é converter endereços virtuais em endereços físicos • Notifica o sistema se for feito um acesso a um endereço virtual que não corresponde fisicamente à memória principal (page fault)

  22. Memória Virtual • Caracterização dos endereços

  23. Memória Virtual – Paginação • PaginaçãoMétodo mais comum de gestão da memória virtual • Páginas (pages)O espaço de endereçamento virtual é divido em blocos de dimensão fixa designadas por páginas.A dimensão de cada página é uma potência de 2 • Molduras (page frames)A memória principal é dividida em blocos com a capacidade de alojarem uma página – estes blocos designam-se por molduras ou page frames

  24. 512K 256K 192K 448K x 128K 384K x 64K 320K 00K 256K 192K x 128K 64K x 00K Memória Virtual – Paginação • Paginação Espaço virtual RAM molduras páginas Endereço virtual 478K = 448K+30K Endereço físico 128K+30K = 158K

  25. Memória Virtual – Paginação • Tabelas de páginas(Page Tables)

  26. Memória Virtual – Paginação • Descritores • Bit de presença – Indica se a página se encontra carregada na memória principal ou não • Moldura – Índice da moldura(page frame) – osbits mais significativos do endereço base da moldura onde a página se encontra localizada • Protecção – Bits de protecção da página (e.g., read-only) • Controlo – Bits auxiliares para o funcionamento dos algoritmos de substituição de páginas

  27. Memória Virtual – Paginação • Exemplo

  28. Memória Virtual – Paginação • Page faults • Quando é acedida uma página que não se encontra na memória principal, ocorre umapage fault • Uma page fault é uma excepção que causa bloqueio ao processo em questão • Inicia-se o de carregamento da página em falta, da memória secundária para a memória principal • Efectuam-se as alterações necessárias na page table, de modo a esta continuar consistente • Pode ser necessário transferir uma outra página para a memória secundária, de modo a libertar-se uma page frame – nesse caso corre-se o algoritmo de substituição de páginas

  29. Memória Virtual – Paginação • Tabelas multi-nível • Cada processo tem associado ao seu espaço de endereçamento uma tabela de páginas • A tabela de páginas de cada processo tem que estar carregada em memória • Para minimizar o espaço em memória ocupado pelas tabelas de páginas, utilizam-se habitualmente tabelas multí-nivel • Guardam-se na memória uma tabela principal (directoria) e as tabelas dos restantes níveis, que contém os descritores das páginas que estão a ser utilizadas pelo processo • Estas tabelas têm uma dimensão muito mais pequena do que se fosse utilizado um esquema com um só nível

  30. Memória Virtual – Paginação • Exemplo

  31. Memória Virtual – Paginação • TLB (Translation Lookaside Buffer) • Quando é efectuada uma conversão de um endereço virtual para endereço físico, é necessário consultar a page table correspondente • Como consequência da page table se encontrar também carregada em memória, então são feitos acessos extra à memória. • Para minorar, e muitas vezes eliminar, o desperdício de tempo feito por estes acessos, as MMUs contém geralmente uma espécie de cache para páginas, designada TLB

  32. Memória Virtual – Paginação • Uma TLB mantém um conjunto de descritores das páginas acedidas mais recentemente • Esta táctica resulta porque cada processo tende a utilizar mais exaustivamente um pequeno conjunto de páginas • Tipicamente uma TLB tem espaço para 64 ou 128 descritores de páginas • Quando uma página é descartada da memória principal, é também libertada a entrada correspondente na TLB

  33. Memória Virtual – Paginação • Algoritmos de substituição de páginas • O algoritmo ideal • Sempre que for necessária uma substituição de páginas, a que deveria sair será aquela que só será utilizada daqui a mais tempo • Este algoritmo não é realizável, pois os S.O.s não conseguem prever o futuro... • A aproximação é tentar descartar as páginas que são pouco utilizadas, ou que já não são utilizadas há muito tempo, na esperança de que não venham a ser utilizadas brevemente

  34. Memória Virtual – Paginação • NRU (Not recently used) • Quando ocorre uma page fault, este algoritmo classifica as páginas carregadas em memória. • Para tal utiliza dois bits: • R (Referenced) – indica que a página foi acedida desde a última interrupção do relógio • M (Modified) – indica que a página foi modificada desde que foi carregada na memória principal • Estabelecem-se 4 classes diferentes, de acordo com R e M • Classe 0: R=0 e M=0 • Classe 1: R=0 e M=1 • Classe 2: R=1 e M=0 • Classe 3: R=1 e M=1 • A página a substituir será uma pertencente à classe mais baixa encontrada

  35. Memória Virtual – Paginação • FIFO(First-in, first-out) • A página a substituir é a que se encontra carregada há mais tempo na memória principal • Algoritmo de fácil implementação, bastando ter uma lista com índices de páginas, com a mais antiga no topo e a mais recente no fim • À medida que as páginas vão sendo carregadas na memória, os seus índices vão também sendo acrescentados ao fim da lista mantida pelo algoritmo • Problema: a página que foi carregada há mais tempo pode estar a ser utilizada...

  36. f e d c b a bit R 0 0 1 0 1 1 b a f e d c é descartada 0 0 0 0 1 Memória Virtual – Paginação • Segunda chance • Algoritmo baseado no FIFO, mas que utiliza o bit de referência (R) • Antes de uma página ser descartada, analisa-se o bit R e, caso este se encontre a “1”, então é posto a “0”, mas a página não é descartada, analisando-se a próxima. • A página a descartar será a primeira que for encontrada com R=0

  37. f a b g e h d c a c d e b f g h 0 0 1 0 1 1 1 1 0 1 0 1 1 0 0 0 Memória Virtual – Paginação • Relógio • Semelhante ao algoritmo da segunda chance, mas a lista de páginas é circular • Deste modo ganha-se eficiência pois deixa de ser necessário retirar estruturas do topo da lista para as inserir no fim

  38. Memória Virtual – Paginação • LRU (Least recently used) • A página a substituir será a que não é acedida à mais tempo • Para tal, guarda-se para cada página uma marca temporal com o tempo do último acesso • Teoricamente este algoritmo é o que efectua a melhor escolha na página a substituir • Bom desempenho a um custo elevado: • Na prática, este algoritmo obriga à existência de um temporizador extra (pois as interrupções do relógio são demasiado “lentas”) • Para além disso, exige bastante espaço para guardar as marcas temporais (e.g. 64 bits) sempre que uma página é acedida

  39. Memória Virtual – Paginação • NFU (Not frequently used) • Algoritmo que tenta efectuar uma aproximação ao algoritmo LRU • Associado um contador a cada página carregada em memória, inicializado a zero quando a página é carregada • Sempre que ocorre uma interrupção do relógio, e para cada página, soma-se o valor do bit R ao contador • Problema: uma página muito acedida no início, mas que depois deixe de ser acedida fica com um valor elevado no contador, pelo que poderá persistir na memória

  40. Memória Virtual – Paginação • Aging • Variante do algoritmo NFU, que tenta resolver o problema descrito anteriormente • Em vez de somar o bit R ao valor do contador, desloca-se o seu conteúdo para a direita com entrada série do bit R • Deste modo consegue-se que uma página muito acedida no passado, mas que já não está a ser utilizada, fique com o valor do contador a zero após algumas interrupções do relógio • Algoritmo com melhor relação custo/desempenho

  41. Memória Virtual – Paginação • Thrashing • Um CPU actual executa cada instrução em menos de 1 nano-segundo • Quando ocorre uma page fault, o carregamento de uma página para a memória principal poderá demorar um tempo na ordem mili-segundos • O carregamento de uma página é cerca de 1.000.000 de vezes mais lento que a execução de uma instrução... • Quando um grupo de processos começa a gerar page faults a um ritmo muito elevado diz-se que se entrou numa fase de thrashing – esta situação deve ser evitada a todo o custo

  42. Memória Virtual – Paginação • Working Set • O Working Set é o conjunto de páginas que estão a ser utilizadas por um processo • Se todo o Working Set de um processo está carregado em memória, então não ocorrem page faults • Tirando partido deste facto, existem algoritmos de substituição de páginas que funcionam tendo em conta o working set de um processo • A ideia será substituir páginas que não se encontrem dentro do working set de um processo

  43. Memória Virtual – Paginação • Política de carregamento de páginas • Paginação a pedido (Demand paging)As páginas de um processo vão sendo carregadas à medida que ocorrem page faults – esta abordagem faz com que ocorram page faults inicialmente, até ser estabelecido o working set do processo • Paginação por antecipação (Prepaging)Antes do processo correr, o SO carrega para a memória um conjunto de páginas – a sua previsão do working Set

  44. Memória Virtual – Segmentação • Outro método de gestão de memória virtual é a segmentação • A segmentação providencia diferentes espaços de endereçamento linear designados segmentos • Um segmento é um conjunto de endereços lineares desde 0 até um máximo • Segmentos diferentes podem ter dimensões diferentes • Um processo pode possuir diferentes segmentos

  45. Memória Virtual – Segmentação • Com o tempo, o swapping e a libertação de segmentos origina fragmentação... Fragmentação

  46. Memória Virtual – Segmentação • A gestão de memória segmentada é feita com recurso a tabelas de descritores de segmentos

  47. Memória Virtual – Segmentação • Vantagens: • Fácil implementação de partilha de dados • Divisão de um processo em segmentos diferentes (e.g., código, heap, stack) • Múltiplos espaços de endereçamento linear por processo • Desvantagens: • Maior fragmentação da memória • Impossibilidade de se definirem segmentos maiores do que a memória física (a não ser que se utilize também paginação ou overlays)

  48. Memória Virtual – Misto • De forma a tirar partido da paginação e da segmentação pode-se utilizar um esquema misto • A um esquema misto também se costuma dar o nome segmentação com paginação • Um esquema misto era utilizado no sistema operativo Multics • O processador Pentium também contém suporte para este tipo de esquema, mas os SOs Linux e Windows não tiram partido desta potencialidade

  49. Memória Virtual – Misto • Vantagem: • Elimina as desvantagens de um esquema puro de segmentação, mas mantém as suas vantagens • Desvantagens: • Maior complexidade das MMUs • Mais acessos à memória para conversão de endereços virtuais em físicos

  50. Gestão de Memória – UNIX • As primeiras versões do UNIX utilizavam gestão de memória baseadas em partições variáveis e swapping • Actualmente, praticamente todas as versões do UNIX utilizam memória virtual paginada • Processos responsáveis pela gestão de memória • page daemon – gere as page tables e o core map, e executa algoritmo de substituição de páginas • swapper– efectua as transferências de páginas entre a memória principal e secundária

More Related