ESTUDO DIRIGIDO SISTEMAS OPERACIONAIS Respostas da Atividade 4
SALVADOR 2014 a) Tcnicas bsicas de gerenciamento de memria. b) Swapping Enquanto no sistema monoprogramveis a gerncia da memria no so muito complexa, pois apenas um nico programa reside na memria, nos sistemas multiprogramveis essa gerncia se torna crtica, devido a ter vrios processos residindo na mesma memria. De forma geral os programas so armazenados em memrias secundrias, a exemplo de disco, devido as ser um meio abundante de espao, no voltil, as informaes no disco no sero apagados caso tenha falta de energia ou desligamento do computador e principalmente de baixo custo. Devido ao processador executar apenas instrues localizadas na memria principal, o sistema Operacional tem o papel de transferir programas da memria secundria para a principal antes de sua execuo. Devido ao tempo de acesso da memria secundria ser muito mais lento em comparao ao tempo de acesso memria principal, o sistema operacional deve buscar reduzir o numero de operaes de E/S memria secundria, caso contrario, srios problemas no desempenho do sistema poder ocorrer. A gerncia de memria deve tentar manter na memria principal o maior numero de processos residentes, permitindo maximizar o compartilhamento do processador e demais recurso computacionais. Onde mesmo na ausncia de espao livre, o sistema deve permitir que novos processos fossem aceitos e executados. Tal ao s possvel por meio de transferncia temporria de processos residentes na memria principal para a memoria secundria, obtendo assim espao para novos processos. Essa ao permite que quando esse processo que foi transferido para a memria secundria e posteriormente houver a necessidade desse processo usar o processador, suas informaes j esto armazenadas na memria secundria havendo s a necessidade de carrega-los para a memria principal. Essa ao de leva e traz processo entre as memrias chamado de swapping. Outra situao que a gerncia de memria precisa de preocupar a permisso de execuo de programas que sejam maiores que a memria fsica disponvel, implementada por meio de tcnicas como memoria virtual. Como j foi dito nas outras atividades apresentada para esse estudo dirigido, nos ambientes de multiprogramao, sistema operacional tem que proteger as reas de memrias ocupadas por cada processo, alm das reas que reside o prprio sistema operacional, pois se algum programa tentar realizar algum acesso indevido memria, o sistema deve impedi-lo de alguma forma, apesar de a gerncia de memria garantir a proteo de reas de memria, existem mecanismos de compartilhamento que devem ser ofertados para diferentes processos, que permita a troca de dados de forma protegida. Com isso entro nas respostas do que foi pedido. a) Tcnicas bsicas de gerenciamento de memria. As tcnicas so: Alocao contgua simples: a memria principal subdividida em duas reas: Uma para o sistema operacional e a outra para o programa do usurio, utilizada em sistemas monoprogramveis, onde apenas um programa reside na memria por vs, onde uma preocupao prevenir que o programa no acessasse a rea do SO, que para isso utilizado um registrador informando a rea limite. Outra preocupao o tamanho do processo, se o processo iria caber no espao disponvel. Essa tcnica permite que o usurio tenha controle de toda a memria principal, podendo ter acesso a qualquer posio da memria, inclusive a rea do SO. Com o proposito de proteo desse tipo de acesso que alguns sistemas implementam a proteo por meio de um registrador, que delimita as reas do SO e do usurio, sendo que sempre que um programa fizer referencia a um endereo na memria, o sistema verifica se o endereo esta dentro dos limites permitidos, caso no esteva poder ser emitido um aviso de erro e a ao no ser permitida.
Alocao Particionada: Devido evoluo dos sistemas operacionais, proporcionando um melhor aproveitamento dos recursos disponveis, os sistemas multiprogramveis j so muito mais eficientes no uso do processador, necessitando assim, que diversos programas estejam, ao mesmo tempo, na memria principal e que novas formas de gerncia da memria sejam implementadas. Com isso a tcnica de alocao particionada pode ser esttica ou fixa, onde a memria dividida em pedaos de tamanhos fixos, chamado de parties e seu tamanho deve ser estabelecido na fase de inicializao do sistema e definido em funo do tamanho dos programas que executaro no ambiente. Na memria principal primeiramente separado o espao do Sistema operacional, e o restante da memria dividida em pequenos espaos fixo que no pode ser modificado, a exemplo: se uma memria de 10kb for dividida em 3 espao sendo que 2 kb do sistema operacional, e mais com 3 kb e o ultimo com 5kb, esses pequenos espao de memria no podero mudar seu tamanho, a no ser se o computador for desligado e na sua reinicializao o SO poder criar parties de tamanho diferentes. No inicio o programas s podiam ser carregados e executados em apenas uma partio especfica, mesmo se outra partio estivesse livre, a esse tipo de gerncia de memria chamou-se de alocao particionada esttica absoluta. Quando se tinha os programas ou processos a serem executados, tambm era definido que partio cada programa iria ser executada, no podendo assim ser alterada. O problema m utilizao da memria, onde digamos que existe 2 processos o A na posio de 1kb e B na posio de 2kb e em sua inicializao foi definido que eles utilizariam a partio de 3kb, conforme o exemplo inicial, a memria tem 3 parties que um do SO, restando 2 parties para o usurio, com isso temos o processo B esperando que o processo A termine e deixe a utilizao da memria, para que o processo B possa utilizar, nesse momento existe ainda livre duas parties que o processo B no pode utilizar por j ter tido definido que partio ele utilizaria, e com isso fica duas parties livres (desperdiada) e um processo esperando a utilizao da memria. Com essa exigncia de cada programa poder ser executada em parties definidas deixa um alto desperdcio de memria. Essa determinao que cada programa tem em usar uma partio especfica devido a os processos fazer referncias a endereos absolutos na memria, a exemplo digamos que o processo B utiliza a posio 2kb, com isso a partio utilizada de 3kb, aps o final dessa partio, e iniciado o endereo da partio seguinte. Com a evoluo dos compiladores, montadores, linkers e loaders, o cdigo gerado deixou de ser absoluto e passou ser realocvel. No cdigo realocvel, todas as referncias e endereos no programa so relativos ao incio do cdigo, e no, a endereos fsicos de memria. Esse tipo de gerenciamento de memria denominado locao particionada esttica realocvel. Com isso o processo B que tem que esta na posio 2kb, feito a referencia a partir da posio do inicio da partio e no da posio 2kb da memria, ento toda partio vai ter uma posio 1kb, 2kb, ..., limitado at o fim de seu espao de memria, dessa forma os processos no ficam presos a uma nica partio. Na Alocao particionada esttica, sua proteo baseia-se em dois registradores que indicam o limite superior e inferior da partio, onde o programa est sendo executado, com isso caso o programa tente acessar uma posio de memria fora dos limites definidos pelos registradores, ele ser interrompido e uma mensagem de violao de acesso ser gerada pelo SO. Vemos tambm que tanto na alocao absoluta e alocao realocvel, os programas, normalmente no preenchem totalmente as parties onde carregador, causando um problema conhecido como fragmentao interna. Exemplificando, se uma partio de 4kb for utilizado por um processo ou programa de tamanho de 2kb e em outra partio de tamanho 3kb estiver com um processo de tamanho 1kb, ter uma fragmentao na primeira partio de 2kb e na segunda de 1kb. Digamos que surgiu outro processo com tamanho 3kb, esse no poderia ter acesso memria, pois no existe uma partio com tamanho continuo de 3kb, mesmo havendo espao, esta no so contnuos, no permitindo guardar uma informao completa. A alocao particionada pode ser tambm dinmica ou varivel, que cada programa utiliza um espao necessrio, tornando essa rea sua partio. Com isso no existe uma rea de partio j definida, j com tamanho, antes do programa ser executado. Porm poder ocorrer um diferente tipo de fragmentao, quando os programas forem terminando e deixando espaos cada vez menores na memria, chamado assim de fragmentao externa. Digamos que surja 4 processo (A, B, C e D) com tamanhos (2, 4, 5 e 7kb), seguindo a tcnica cada processo transformar seu tamanho em sua partio, at esse momento o processo funciona bem, pois no haver desperdcio de memria, porm, digamos que a ordem de ocupao da memria siga a ordem A sendo o 1 e assim por diante, nesse momento o processo B termine sua utilizao da memria, com isso ficar um buraco de tamanho de 4kb, que s aceitar processo desse tamanho ou menor e com o tempo esse espao ficar to pequeno que no comportar nenhum outro processo, ficando assim um buraco de memria se utilizao. Para solucionar esse problema existem duas solues: A primeira soluo esperar que o programa que esta entre dois espaos vazios na memria finalizar. A exemplo, digamos que uma memria de espao para os programas tenha em sua totalidade 10Kb, e nessa memria exista um programa B ocupando 4 k no centro da memria, ou seja, tenha 3kb livre ante do programa B e 3kb livres depois do programa B com essa soluo tem que esperar o programa ser finalizado para que tenhamos os 10 kb de memria livres. Com isso essa soluo se torna ineficaz devido a ser dependente do tempo de utilizao do programa B, quero dizer se o programa B demorar muito tempo para sua finalizao, esse tempo ter que ser esperado para obteno da memria total.
A segunda soluo mover as reas utilizadas da posio que esteja para o inicio da memria, tornando o sistema totalmente realocvel, tornando assim uma melhor soluo.
No entanto devido a complexdade do algoritmo e o recurso utilizado so sistema, essa soluo se torna inviavel, devido ao gasto de tempo para essa realocao. Respondendo a segunda questo. b) Swapping Essa tcnica aplicada a gerencia de memria para programas que esperam por memria livre para serem executados. Nessa situao o sistema escolhe um processo residente na memria que ser transferido da memria principal para secundria (swap out) e posteriormente o processo carregado de volta para a memria principal (swap in) para poder continuar sua execuo como se nada tivesse acontecido. O algoritmo de escolha do processo a ser retirado da memria principal deve priorizar aquela com menor chance de ser executado, para evitar o swapping desnecessrio de um processo que ser executado logo em seguida. O conceito de swapping permite maior compartilhamento da memria principal e, consequentemente, maior utilizao dos recursos do sistema operacional. Seu maior problema o elevado custo das operaes de E/S (swap in/out).
Referncias: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3 ed., 2010.