Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN 21 Podemos dizer que no universo da computação existem alguns fatores que são mais e outros são menos importantes, mas devemos sempre lembrar que as peças que formem o conjunto são todas de mesma importância para a formação do sistema. Assim sendo não podemos deixar de perceber que a memória, de qualquer tipo, é uma peça de suma importância. Existe a memória virtual que é volátil, considerada de preço médio, é uma peça importantíssima para o funcionamento do sistema. Existe também a memória cachê que é volátil, porém de alto custo. As memórias são componentes do sistema que não Aula 02 GERENCIAMENTO DE MEMÓRIA Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN 22 se pode deixar passar despercebidas, elas não podem ser utilizadas sem uma ordem ou sem um controle, por isso vamos estudar um pouco sobre como as memórias são gerenciadas. Vamos falar sobre o gerenciamento de memória do sistema computacional. Todos querem um computador que tenha uma memória que seja rápida, com grande capacidade e que seja de preferência não volátil. Uma parte do sistema operacional que faz com que essas memórias sejam utilizadas da melhor maneira possível, e que tem a incumbência de gerenciar a hierarquia existente entre elas é chamado de gerenciador de memória. Sua principal tarefa é a de cuidar as partes da memória que estão sendo usadas e as que estão disponíveis e tem também a tarefa de disponibilizar memória para os processos, quando eles precisarem, de liberar memória quando terminam o seu uso. Além disso, cabe ao gerenciador controlar a transferência entre memória principal e o disco quando a memória principal não for sufi ciente para conter os processos. Os primeiros computadores produzidos na década de 60 e de 70, que eram os computadores de grande porte, e também os microcomputadores produzidos antes da década de 80 não possuíam memória virtual. Isso tornava o gerenciamento de memória bem mais simples, pois cada programa considerava a memória física, isso quando um programa executava uma instrução. O computador apenas movia o conteúdo para uma posição do registrador que executava os processos e os devolvia. Com isso a memória que era apresentada ao programador era a memória física, por isso não era possível executar mais de uma aplicação na memória ao mesmo tempo, pois se um outro programa escrevesse um novo valor para um endereço que estivesse sendo utilizado, isso excluiria o valor que estava sendo utilizado por um primeiro programa. Resultado: nenhum dos programas funcionaria e os dois programas parariam no mesmo momento. Imagine se o modelo da memória fosse apenas memória física, com isso poderíamos ter varias opções possíveis. Observe na fi gura que se segue. Programa do usuário Programa do usuário Programa do usuário Sistema Operacional em RAM. Sistema Operacional em RAM. Sistema Operacional em ROM. Drivers de dispostivos em ROM. 0x FFF ... 0 0 0 Figura: 3 Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN 23 Vamos observar três variações. O sistema operacional pode estar na parte inferior da memória em RAM1, como podemos visualizar no primeiro quadro ou pode estar em ROM2 o sistema pode fi car na parte superior como mostra o segundo quadro ou os drivers de dispositivos podem estar na parte superior na memória em ROM e o resto do sistema em RAM, como mostra o terceiro quadro. Antigamente usava-se o primeiro modelo em computadores de grande porte e minicomputadores. Já o segundo modelo era utilizado em computadores portáteis, o terceiro foi colocado nos primeiros computadores pessoais. Por exemplo, executando o sistema operacional MS-DOS em que existia em parte do sistema que consta é chamado de BIOS3. Nas três opções existem vantagens e desvantagens, repare no primeiro e no terceiro quadro. Existe grande possibilidade de acontecer um possível erro no programa do usuário e com isso pode acontecer o apagamento do sistema operacional e isso ocasionaria resultados bem insatisfatórios. Nessa organização de sistemas, em geral acontece de se executar um processo por vez. Logo quando o usuário digita o comando dando alguma ordem ao computador, o sistema operacional copia o programa solicitado do disco rígido para a memória principal e o executa, esses sistemas são raramente utilizados hoje em dia a não ser em sistemas embarcados4. Em sistemas modernos é permitido que vários processos sejam executados ao mesmo tempo, com isso quando acontecer de um processo ser bloqueado por estar esperando para que uma operação de E/S termine algum outro procedimento poderá utilizar o processador. Com isso, podemos perceber que a multiprogramação aumenta a usabilidade do processador não o deixando muito tempo ocioso. A maneira mais simples e objetiva de realizar a técnica multiprogramação é fazendo a divisão da memória em várias partições. Essas partições podem ser divididas manualmente quando o sistema for inicializado. Assim que se separar a memória em partições, pode-se organizar os processos em fi las. Existem algumas desvantagens ao fazer isso, pois logo que as partições são montadas forma-se uma fi la para cada partição e o que pode ocorrer é que uma fi la vazia para uma grande partição ou que haja uma grande fi la para uma partição pequena, são as chamadas múltiplas fi las de entrada. Como é o caso do primeiro quadro de múltiplas fi las de entrada da fi gura 3, em alguns casos processos pequenos têm que esperar liberar memória, apesar de existir memória sobrando, mas uma grande fatia de memória ou partição pode estar ocupada com pequenos processos. Uma boa alternativa é a de manter apenas uma fi la, como pode ser mostrado no 1 RAM-random acess memory – Memória de acesso aleatório. 2 ROM-read-only memory – Memória apenas para leitura. 3 BIOS-basic input output system – Sistema básico de E/S 4 Um sistema embarcado (ou sistema embutido) é um sistema microprocessado no qual o computador é completamente encapsulado ou dedicado ao dispositivo ou sistema que ele controla. Diferente de computadores de propósito geral, como o computador pessoal, um sistema embarcado realiza um conjunto de tarefas predefi nidas, geralmente com requisitos específi cos. Já que o sistema é dedicado a tarefas específi cas, através de engenharia pode-se otimizar o projeto reduzindo tamanho, recursos computacionais e custo do produto. (fonte: http:// pt.wikipedia.org/wiki/Sistemas_embarcados) Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN 24 segundo quadro o de fi la de entrada única, da fi gura 3. Portanto quando uma partição estiver livre, o processo que for o próximo da fi la pode nela ser carregado e executado, é claro que esse processo tem que ser de um tamanho compatível com a partição que fi cou livre. Há outras maneiras de gerenciar a memória. Por exemplo, é um desperdício colocar pequenos processos em partições grandes; outra alternativa que pode ser implementada é pesquisar em toda a fi la de entrada e alocar a partição disponível ao maior processo que estiver na fi la. É claro que antes haveria uma verifi cação se o referente processo pode ser carregado nessa partição. Múltiplas fi las de entrada Fila de entrada única Partição 4 800k 700k 400k 200k 100k 0k Partição 3 Partição 2 Partição 3 Partição 3 Partição 4 Partição 1 Partição 1 Sistema Operacional Sistema Operacional Figura: 4 Podemos observar também que os processos pequenos fi cam como se eles não pudessem ter uma partição completa, sendo que os processos menores, que muitas vezes são interativos, fi cariam muito tempo em espera. Uma solução que pode ser utilizada é a de se ter uma partição pequena que seria utilizada para a execução de processos menores assim não havendo a necessidade de alocar o processo em uma grande partição. Uma outra alternativa seria a de defi nir uma regra que se resumisse da seguinte forma: um processo em estado pronto para a sua execuçãonão poderia parar de receber uma partição mais do que k vezes. Toda vez que o processo tentasse utilizar a partição e a partição lhe fosse negada, ele receberia um ponto. Quando esse processo alcançar certa quantia de k pontos de negação de uso da partição, ele seria benefi ciado por uma partição, mesmo que isso ocasionasse o desperdício de uma área da memória. Há também alocação de memória contígua e não contígua. Em sistemas mais antigos, o sistema operacional era obrigado a encontrar a memória com o tamanho exato ou maior para possibilitar que o processo tivesse andamento, ou seja, teria que haver uma partição do tamanho igual ou maior do que o processo, caso contrário o processo não seria executado. Já na alocação não contígua o processo é dividido em blocos que o sistema pode alocar em espaços menores que não teriam capacidade para alocar um processo inteiro. Como consequência disso, o sistema operacional adquire mais sobrecarga, pois os processos fi cam fracionados, cada bloco do processo que foi dividido fi ca em uma área da memória. Na alocação de memória contígua é feita uma limitação dos processos que poderiam Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN 25 ser executados em um sistema. Um modo feito para se superar a limitação da memória era criar sobreposições (overlays) que faziam com que o sistema pudesse executar processos maiores que a memória principal. É feita a divisão dos processos em seções lógicas e quando o processo não necessitar de memória para uma seção, o sistema pode substituir essa memória, parcial ou totalmente, pela memória de uma seção necessitada. Com isso é permitido que seja “estendida” a memória principal, mas a sobreposição feita manualmente exige um planejamento cuidadoso e demorado, pois é necessário um conhecimento detalhado em relação à organização da memória do sistema. Com o modelo de multiprogramação pode se chegar a ter uma melhora na usabilidade do processador. Em geral, se em média, um processo permanece em execução apenas 20 por cento do tempo em que reside na memória, se contarmos com cinco processos ao mesmo tempo na memória o processador deveria fi car ocupado durante o tempo todo. Esse é um modelo de gerenciamento que se pode chamar de otimista, mas não de realista, pois se presume que cinco processos nunca poderão estar ao mesmo tempo à espera de E/S. Um modelo real do uso do processador para se considerar é o modelo probabilístico. Vamos supor que um processo gaste certa quantidade de tempo esperando pela fi nalização de uma solicitação de E/S. Com vários processos na memória, existe a probabilidade de todos os processos estarem esperando por E/S. Nessa situação o processador estaria ocioso. Em alguns modelos para controlar em qual partição será alocado o processo, é mantida uma tabela com os endereços iniciais de cada partição. Nessa tabela fi cam as informações de tamanho e se a partição está em uso ou não. Sempre que processos podem entrar em estado de pronto, quando é iniciado um novo processo, essa tabela é percorrida na tentativa de localizar uma partição livre onde o processo pode ser alocado. Existem algumas estratégias de alocação de partição. Basicamente existem três que são utilizados para determinar em que área livre o processo vai ser alocado. BEST-FIT Essa estratégia utiliza a seguinte manobra: a melhor partição é escolhida, ou seja, aquela em que o processo deixa a menor parte de espaço da partição sem utilização. Mas MFT (multi-programing with a fi xed number of tasks – multiprogramação com números fi xos de tarefas ou OS/MFT). Sistemas com partições fi xas, estabelecidas pelo operador pela manhã e não alteradas o dia todo, foi usado durante muitos anos pelos OS/360 em computadores IBM de grande porte.(Sistemas Operacinais Modernos 2° Ed. Andrew S. Tanenbaum São Paulo – Prentice Hall,2003) Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN 26 isso gera uma defi ciência, pois como ele seleciona uma partição onde fi ca uma pequena parte sem utilização, isso gera pequenas áreas da memória não-contíguas, o que ocasiona um problema de fragmentação. WORSR-FIT Essa estratégia é o oposto da primeira, pois ela utiliza a pior partição para alocar o processo. Ela executa a seguinte manobra: pega o maior espaço de partição, assim deixando uma parte maior sem utilização. Com isso ela deixa uma área maior podendo ser utilizada por outros processos, isso diminui um problema causado pela best-fi t, a fragmentação. FIRST-FIT Nessa estratégia utiliza-se a primeira partição que esteja livre e de tamanho sufi ciente para carregar o processo. Como as listas de áreas livres estão ordenadas por endereço crescentemente e como o esquema tenta utilizar primeiro as áreas livres de endereços mais baixos, isso pode gerar uma situação onde ele pode ser alocado em uma grande partição livre nos endereços de memória mais altos. SWAPPING Na multiprogramação foram alcançados muitos objetivos no gerenciamento de memória, mas mesmo assim foi encontrada uma defi ciência, pois muitas vezes um processo não podia ser executado por falta de uma partição livre. Foi então desenvolvida a técnica de swapping para sanar esse problema. Na maioria das estratégias de gerenciamento de memória vistas até agora, o processo fi ca na memória até o fi nal de sua execução, inclusive na espera de eventos de I/O. O swapping é uma estratégia que consiste em ser aplicado em processos que esperam por memória livre para serem executados. O swapping é uma situação onde o sistema escolhe um processo residente, esse processo é enviado da memória principal para uma memória secundária sendo chamado de (swap out), geralmente é enviado para o disco. Momentos depois o processo é novamente enviado da memória secundária para a memória principal, como se nada tivesse acontecido. No momento em que é feita essa seleção do processo que vai ser enviado para a memória secundária, o algoritmo deve priorizar os processos que têm a menor chance de serem escalonados, assim ele evita o swapping desnecessário de um processo que será executado em seguida. Na maioria das vezes que é feita essa seleção, os processos encontram-se em estado de espera, mas há a possibilidade de serem selecionados processos que se encontram em estado de pronto. Os processos em estado de espera ou pronto que estão fora da memória são chamados de processos não residentes (outswapped). Veja na fi gura 5 um exemplo que ilustra um processo em swapping. Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN 27 Para que a estratégia de swapping tenha sucesso é necessário que no sistema seja oferecido um loader para que aconteça a relocação dinâmica de processos. Esse loader relocável permite que o processo seja colocado em qualquer posição da memória, mas a relocação é realizada somente no momento do carregamento. O swapping faz com que um processo saia e volte várias vezes para a memória. Essa estratégia permite um maior compartilhamento de memória principal, assim, tem-se uma maior utilização dos recursos de todo sistema computacional. O maior problema dessa estratégia é o seu alto custo das operações de I/O (swap in/out). Nos instantes em que a memória estiver pouco disponível, o sistema pode até fi car inteiro dedicado à realização de swapping, fi cando assim sem executar outras tarefas e fi cando impedido de realizar a execução de outros processos residentes. Essa situação é chamada de thrashing, e é considerado um problema crítico na gerência de memória em sistemas operacionais. B B Arquivo de Swap Memória Principal Memória Principal Arquivo de Swap Swap out Swap in Sistema Operacional Sistema Operacional Processo A Processo A Processo B Processo C Área livre Processo B Processo C Processo D Figura: 5 Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN 28 ATIVIDADES As atividades referentes a esta aula estão disponibilizadas na ferramenta “Atividades”. Apósrespondê-las, envie-nas por meio do Portfólio- ferramenta do ambiente de aprendizagem UNIGRANET. Em caso de dúvidas, utilize as ferramentas apropriadas para se comunicar com o professor.
Compartilhar