E aí [Música] Olá bem-vindos a mais uma aula da nossa disciplina de sistemas computacionais Essa é a segunda aula da semana na aula passada a gente falou de uma visão Geral do sistema operacional com as suas principais funções e focou no instalamento escalonamento de processos nesta semana a gente vai falar sobre gerenciamento de memória espero que vocês gostem Então vamos lá pessoal ao assunto dessa semana né a parte de gerenciamento de memória nós vamos falar sobre a questão da memória virtual é contextualizando para vocês na aula passada nós nos focamos em definir o sistema operacional
e apresentar as suas principais funções é uma delas é a interface é escondendo o hardware para os programas de usuário né então nós temos aí os raros nós temos os nossos softwares rodando sobre o sistema operacional que fica comandando aí e otimizando os elementos componentes desse rápida a segunda função que é a função do sistema operacional que nos interessa nesta disciplina que é a questão do gerenciamento de recursos e processos na CPU a gente fala um pouco sobre gerenciamento de processos na aula passada e nesta semana nós vamos falar agora sobre a questão do gerenciamento
de memória Então as primeiras perguntas que a gente deve fazer é quem faz o gerenciamento de memória né o sistema operacional gerencia a memória e Isso inclui na a memória virtual que é o que a gente vai falar o que ele faz ele vai usar técnicas para tornar memória do nosso computador mais eficiente né E aí a gente vai falar da diferença disso para monoprogramação multiprogramação né porque que tem que fazer né gerenciamento de memória porque a gente vai falar de memória virtual né aí o ideal para um projetista né para mim uma arquitetura de
som e era que a memória fosse grande infinita rápida não volátil e de baixo custo é só que infelizmente esse ideal ele não existe e aí a gente vai ter que trabalhar numa infinidade de processos né Que Tem que compartilhar memória e aí a gente vai ver que ela tem uma hierarquia que acaba nos ajudando bastante aí Nessas questões né o computador como vocês devem lembrar lá da semana dois ele não tem apenas uma memória né a capacidade de memorizar valores junto com a capacidade de processá-los é fundamental para os nossos software para os nossos
computadores sem que era sem isso né não seria possível lidar com estruturas de dados aí como a gente tem hoje nas áreas por exemplo The Deep Lane né ciências de dados que são estruturas gigantescas e bastante complexas né assim a memória desse a dor né ela não é apenas uma mas um conjunto de memórias E aí nesse desenho A gente tem os vários níveis aí com as características que formam uma hierarquia é se vocês olharem as características aí de tempo e acesso e capacidade de armazenamento elas trabalham em sentido oposto né então quanto maior a
capacidade de armazenamento menor acaba sendo o tempo de acesso né Isso é se você pensar nos extremos né a redução de tempo para o acesso né Ela é um objetivo bastante interessante né então enquanto é a gente tem de um lado por exemplo os registradores né com capacidade bem pequena a gente tem acesso a eles da ordem de 1 ano segundo né no oposto a gente tem as fitas né os armazenamentos secundários né com capacidade de gigantescas né hoje a gente fala de e vai ter né e o tempo de acesso aí na ordem de
100 Seguros então elas são sentidos oposto né e o extremo a redução de tempo de acesso dos registradores ela acaba obrigando é uma baixa capacidade e alto custo né enquanto no outro a gente tem uma alta capacidade e um baixo custo que só são conseguidos aí em tempo de acesso muito alto né então por isso é interessante A gente consegui explorar essas memórias aí e esses essa combinação aí de características então o que que é a memória virtual né a memória virtual nada mais é do que uma técnica tá E que a ideia dessa técnica
é que o tempo de acesso a memória de disco né a gente chama de disco rígido memória secundária né é o disco simplesmente né seja não estatisticamente não muito pior que a memória e a memória principal EA memória de discos elas são muito diferentes em capacidade e tempo de acesso a memória principal ela tem um acesso de 100 vezes mais rápida mas cerca de cem vezes menos capacidade né então por isso que a gente vai tentar criar uma técnica que diminua esse tempo de acesso Tá bom então pra trabalhar com memória virtual essa técnica ela
tem alguns princípios um dos princípios é a localidade é um dos princípios é essa localidade tanto espacial e temporal né que implica que um programa não precisa de todas as suas informações e dados suas instruções ao mesmo tempo isso vai significar que parte dessa informação por exemplo informação mais utilizada ela pode ficar na memória principal enquanto o restante né a menos usada pode ficar em disco né então isso é interessante né você não precisa e do tempo de tudo né E aí você consegue trabalhar nessas duas questões outra função o princípio né questão do mapeamento
né existe a função de mapeamento considerando que os endereços aqui um programa se refere pertence a um espaço de endereçamento e aí vamos pensar no espaço de endereçamento virtual né E esse tem uma existência física apenas parcialmente em que os endereços virtuais são mapeados em endereços físicos né então a gente vai lembrar lá das aulas passadas que a nossa memória um conjunto de células né E essas células Elas têm que ser recuperadas no seu conteúdo então elas têm endereços físicos né E que a gente vai trabalhar agora com a conversão com mapeamento desse endereço físico
pelo uma função é de mapeamento para o endereço virtual que a gente vai trabalhar né Essa tradução aí ela é feita por um dispositivo chamado em u é mais para sempre e aí por último né mas um princípio é a questão do funcionamento automático né quer dizer você libera o programador dos detalhes da das limitações da memória principal né Para poder trabalhar tranquilamente então esses três princípios vão reger essas técnicas aí de memória virtual e é esse exemplo né que vocês vem na figura é um exemplo que eu mostrei para vocês para Explicar sobre as
creches não sei se vocês se lembram né a cast ela trabalha entre a CPU né EA memória principal ela fica ali no Meio do fluxo das duas e os níveis de Cash eles ajudam O que diminui o tempo de acesso dos dados que recebeu precisa estão na memória principal né então por exemplo a cache L1 que a chamada de teste interna né ela tem acesso como se fosse um registrador e a cache L3 tem um acesso mais próximo a questão de tempo da memória principal né e a L2 fica no meio desses dois desses dois
números né é interessante considerar a memória principal também como uma cast né você pode pensar talvez numa cast aí é como L4 é E aí você pensa que a memória principal ela pode ser um L4 da a hora de disco né da memória de massa o disco rígido que eu vou disco como a gente quer chamar que é onde você tem grande parte da informação na igreja capacidade de armazenamento não-volátil e com custo mais baixo tá todo o resto da memória principal né o L3 o2cool um e os registradores né eles podem eles não eles
vão trabalhar na verdade eles podem ter um sentido de trabalhar como auxiliares né que só são válidas enquanto o computador estiver ligado né E que só servem para tornar mais rápido os acessos a memória de disco é do 5 milisegundos de tempo típico para um acesso a disco do computador né usando as técnicas de memória virtual o computador consegue atingir 0,5 nano segundos né que é muito próximo dos registradores que era 0,1 lá que a gente vê no slide passado então é bastante e é Se vocês pararem aí e medir né é uma melhoria de
20 milhões de vezes né E aí vale a pena ter uma hierarquia de memória né com exceção dos registradores né que têm acesso específico diferente aí do da memória né E que esses mecanismos realiza além de tudo são automáticos né do ponto de vista da memória principal né o mecanismo de Cash ele serve aí para aumentar desempenho né o tempo médio de acesso se a gente for pensar enquanto mecanismo de memória virtual ele acaba aumentando a capacidade da memória principal né pelo menos uma capacidade aparente dos programas então é mais ou menos a mesma ideia
né a memória virtual ela tem uma ideia de ser "uma espécie de quer né com níveis aí para relacionar a memória principal com a memória de disco então com isso a gente consegue aí trabalhar de um é mais otimizada com as memórias que os computadores têm falando agora um pouquinho sobre money multiprogramação né amor não é a monoprogramação né é uma programação que existe no contexto de um único processo executando no sistema por vez né como a gente tinha antigamente nos enfermos nos pcn's iniciais aí antigo né E também como a gente tem hoje né
nos nossos dispositivos aí de tablet smartphone agora o cenário mais complexo é o cenário da multiprogramação onde a gente viu lá trabalhar com escalonamento né a gente tem vários processos que vão compartilhar o único processador né então a gente pode trabalhar com o particionamento desse dessa dessa dessa memória aí com partições diferentes que aí você vai dividir a memória principal e partições diferentes e aí cada partição fica por exemplo uma fila de Jobs o trabalho é tem que ter aí no caso dois registradores né nesses processos um na base e um limite para que os
processos não invadam os outros processos né E a gente tem também o particionamento com partições iguais né que é mais tranquilo saber o limite porque você definiu né pelo pela técnica e quanto de endereçamento Qual é o espaço de endereçamento de cada processo na memória né só que aí a gente vai ver que elas não tem outros problemas como por exemplo fragmentação né então é interessante a gente pensar nesse mundo que a gente está trabalhando nos computadores hoje né Pensa em multiprogramação então a multiprogramação ela vai trabalhar com essas duas ideias que eu citei no
slide passado né o particionamento fixo é conhecido como alocação dinâmica é é tranquilo de você saber os limites aí da memória que o processo se eu usar né porque elas têm o tamanho Fix aí elas são normalmente iniciada quando a gente dá boot na nossa máquina né E aí por isso que a gente chama de alocação estática né Isso tudo é determinado já no boot a partição variável o particionamento com com partições variáveis né Ele vai dividir a memória principal indiferentes partições E aí a gente chama isso de particionamento de nâmico né Então aí nessa
figura você vai ver que esse particionamento né Cada partição variável né nessa nessa figura fica com uma fila de Jobs né ou no segundo caso você tem uma fila para todas as partições e cada partição e tem que ter dois registradores como Eu mencionei um registrador de base né e um de limite para que os processos aí não invada o espaço um do outro né então se você for pensar no processo comum né no programa comum de 40 cá né E se ele tiver no endereço 20 da memória principal assim você vai ter 60 né
que seria o endereço limite que o processo vai utilizar então 20 é o base né e 60 acaba sendo o limite e para fazer isso a CPU adiciona o valor base ao endereço e verifica se aquele endereço é maior ou igual ao valor do limite alocação da memória acontece um tempo de execução aí e aí a gente chama isso de alocação dinâmica e nessa próxima figura do próximo slide você vai ver o conceito básico da ideia de memória virtual quando a gente fala de memória virtual a gente fala de hardware resposta né até que ele
quer apoiada por por hardware também vocês vão ver porque né todos os endereços que um programa aguarda instruções de máquina nos registradores do processador são endereços que a gente considera lá pela função de mapeamento endereços virtuais né eles não são aqueles físicos que vem na memória quando o processador acessa memória ele faz através de um endereço virtual né E aí esse endereço tem que ser traduzido o como a gente falou lá né nas diretrizes mapeado em uma localização física né essa localização física ela pode estar na memória principal ou não disco né Ela pode ter
subido para memória principal né Se ela foi bastante usada eu não disco né no caso dela tá nude e a falta do valor na memória principal impede esse acesso direto né E aí você tem que isso daí tem que ser detectado pelo radar e gera-se o que a gente chama de exceção E aí a rotina ela vai ler do disco o valor que o endereço você sabe carrega na memória física e aí o que acontece que depois ela volta a Executar a instrução da onde ela tinha parado né porque disse que ela foi buscar informação
né é poderá também acontecer que a memória principal esteja toda cheia né todo ocupada e aí você tem um problema aqui para você trazer uma informação né o novo valor da memória de disco para a memória principal você vai ter que tirar alguma coisa da essa memória principal né Isso também já acontecia quando a gente falou lá dos Cachos sempre que um valor entra ou sai da memória principal essa tradução o mapeamento vou ver se ela tem que ser atualizada né e pensa que esse esse essa tradução esse mapeamento nela também geram o verde né
uma sobrecarga nesse sistema Então esse mecanismo de memória virtual ele acaba sendo aí o endereçamento indireto né um determinado endereço virtual ele pode ser mapeado onde se quiser no espaço físico e ele então ele é chamado de quem faz isso né quem me ajuda a esse mapeamento é o memory manezinho net Now MM Hulk eu tinha citado para vocês então ele é um circo I ele é um dispositivo EA função dele né Lógico que ele tem um raro é junto é fazer a tradução daquele endereço lógico ou virtual né que o programa usa chama e
endereço da memória de Fato né o endereço do Físico lá que identifica a célula da nossa memória e é ele traz nem todos os programas e nem a memória física né tem que usar todo o espaço de endereçamento né o espaço de endereçamento é definir esses limites que são utilizáveis na Então a gente vai ver que a gente tem limite de espaço de endereçamento por exemplo que usado pelo sistema operacional e a gente não pode invadir esse espaço de endereçamento senão a gente vai mexer e funções do sistema operacional e muitas vezes as pessoas por
maldade né os hackers dos vírus né eles acabam invadindo esse espaço de endereçamento que não foi destinado para os programas né Hoje em dia as máquinas são mais protegidas com isso né antigamente um programa inteiro facilmente espaço de endereçamento do sistema operacional Então veja que hoje a gente tem os programas rodando no espaço definido aí tem limites definidos o mecanismo de tradução de endereço ele então tem que saber né o m m u ele vai saber quais são as o endereçamento que vão ser usadas no nível virtual né e lógico e físico quais são as
grandes vantagens daí disse trabalhar com memória virtual né Você tem uma primeira grande vantagem que a questão do espaço né o espaço virtual ele pode ser muito maior do que o espaço de endereçamento físico né embora isso não seja nada que não tenha nada que obrigue é o primeiro acaba limita o conjunto de dados que o programa pode acessar e o segundo limita a parte desse conjunto que pode estar simultaneamente carregada na memória não acha que o espaço físico ele pode ser aproveitado em qualquer ocasião para outra parte do espaço virtual né basta alterar e
formação desse mapeamento de endereços né é esse é a memória virtual né ela acaba sendo um excelente suporte para coexistência de vários programas né A questão da multiprogramação e a memória virtual ela acaba que cada programa tem seus próprios espaços de endereçamento né espaço de endereçamento virtual é e todos eles podem acessar a mesma faixa de endereços virtuais né No entanto esse mecanismo de tradução ele pode fazer esse mapeamento aí entra o endereço virtual em cada um dos vários processos e endereços físicos diferentes É isso aí evita que a gente tenha problemas de segurança por
exemplo né Se eles forem bem separados essa é uma forma de permitir né esse isolamento bom então compartilhamento de memória física ou periféricos entre processos processos ele acaba sendo é facilitado né já que existe um compartilhamento aí a tradução de faixas de endereços virtuais nos vários processos para uma mesa na Faixa é uma uma outra grande vantagem né então com isso pessoal a gente definiu aí a técnica de memória virtual né o seu principal objetivo né É como isso é feito em termos Gerais é e depois a gente falou sobre as vantagens do uso da
técnica de memória virtual na próxima aula a gente vai falar em detalhes sobre uma das técnicas né a gente vai falar na verdade sobre duas e vai detalhar uma delas é a paginação e vamos falar também da segmentação aí pensando na questão de memória virtual particionamento e essas coisas tá bom eu deixo para vocês aqui a bibliografia bom e encerramos a aula 2 da semana 3 de sistemas computacionais espero que vocês tenham gostado e nos vemos na próxima aula um abraço a todos e até mais é E aí [Música]