Sunteți pe pagina 1din 11

ENGENHARIA DA COMPUTAO

Gerncia de processos de memria Professor: Renato Cividini Matthiesen

1. INTRODUO
Um Sistema Operacional (SO) um conjunto de rotinas executadas pelo processado. Seu objetivo, na viso do usurio, de oferecer uma interface para acesso s funes do computador, tornando sua utilizao o mais simples e amigvel possvel. Porm suas funes so mais complexas, ele precisa controlar o funcionamento do computador, gerenciando a utilizao e o compartilhamento de seus recursos, como processadores, memrias e dispositivos de entrada e sada (MACHADO, MAIA, 2007). Este texto apresenta informaes a respeito de gerenciamento de processos e de gerenciamento de memria, funes estas que so primordiais para o bom entendimento do funcionamento de um SO.

2. DESENVOLVIMENTO
A gerncia de um ambiente multiprogramvel funo exclusiva do SO que deve controlar a execuo dos diversos programas e o uso concorrente do processador e demais recursos (MACHADO, MAIA, 2007, p.65). PROCESSOS A gerncia de processos uma das principais funes de um SO, possibilitando aos programas alocar recursos, compartilhar dados, trocar informaes e sincronizar suas execues. Para entender o gerenciamento desses processos, primeiramente devemos entender seu conceito. Segundo Tanenbaum (2003), um processo basicamente um programa em execuo, j Machado e Maia (2007) definem processo como o ambiente no qual um programa executado. E, em um sistema multiusurio, cada usurio tem seu programa associado a um processo. Um processo formado por trs partes: 1. Contexto de Hardware: armazena o contedo dos registradores gerais da UCP (Unidade Central de Processamento) e os registradores especficos. Quando o programa est em execuo o seu Contexto de Hardware est armazenado nos registradores do processador, e, quando perde a utilizao da UCP, as informaes so salvas no Contexto de Hardware do processo. 2. Contexto de Software: onde so especificados limites e caractersticas dos recursos que podem ser alocados pelo processo (nmero mximo de arquivos abertos, prioridade de execuo e tamanho do buffer de E/S). 3. Espao de Endereamento: a rea de memria pertencente ao processo onde instrues e dados do

programa so armazenados para execuo. A representao da estrutura de um processo pode ser visto na figura 1.

Figura 1 Estrutura de um processo (MACHADO, MAIA, 2007, p. 67) Em um sistema multiprogramvel, um processo no pode alocar exclusivamente a UCP. Precisa compartilh-la. Desta forma, um processo pode estar em trs estados: 1. Execuo (running), quando est sendo processado pela UCP; 2. Pronto (ready), quando aguarda apenas para ser executado, e 3. Espera (wait), quando aguarda por algum evento externo ou por algum recurso para prosseguir seu processamento. Existem dois tipos de processo muito importantes: 1. Processos CPU-bound, so os que passam a maior parte do tempo em estado de execuo e 2. Processos I/O bound, que passam a maior parte do tempo em estado de espera. Um processo pode ser criado de diversas maneiras. Entre elas: 1. Login interativo, por intermdio de um terminal, 2. Via linguagens de comandos, a partir do qual se cria, atravs de comandos, de uma linguagem de programao e 3. Via rotina do SO, criado a partir de um programa executvel do SO. Como a parte das aplicaes na atualidade concorrente, e os sistemas so multiusurios, buscou-se dividir o cdigo (processo) em partes que trabalhem de forma cooperativa. Processos Independentes, Subprocessos e Threads so maneiras de programar a concorrncia dentro de uma aplicao. Em um Processo Independente no existe vnculo do processo criado com seu criador. Um Subprocesso um processo criado por outro processo. Estes dois tipos de processos demandam o uso de mais recursos do processador, o que levou a criao do conceito de Thread, que buscou reduzir o tempo gasto na criao de um processo. Um Thread uma linha de processamento, ou seja, Threads compartilham o processador da mesma maneira que um processo, mas possuem mesmo Contexto de Software e

mesmo Espao de Endereamento, economizando recursos do sistema. A figura 2 mostra um processo multithread.

Figura 2 Processo multithread (MACHADO, MAIA, 2007, p. 81) Um Thread pode ser definido como uma sub-rotina de um programa que pode ser executada de forma assncrona, concorrente ao programa chamador. A vantagem de seu uso a possibilidade de minimizar a alocao de recursos do sistema, alm de diminuir o overhead, troca e eliminao de processos (MACHADO, MAIA, 2007). importante tambm se lembrar do conceito de sinais. Um sinal um mecanismo que permite notificar processos de eventos gerados pelo SO ou por outros processos. O uso de sinais fundamental para a gerncia de processos alm de possibilitar a comunicao e sincronizao entre processos. Um exemplo de um sinal o uso do <Ctrl>+<C> pelo usurio para interromper a execuo de um programa.
GERENCIAMENTO DE PROCESSOS

Em um sistema multiprogramvel, mltiplos processos podem permanecer na memria principal compartilhando a UCP. Para isso a gerncia dos processos e do processador essencial para o correto funcionamento de um sistema computacional. O processador precisa selecionar qual processo dever fazer uso do processador em determinando momento. Os critrios utilizados para esta atividade so chamados de poltica de escalonamento. As funes bsicas da poltica de escalonamento so: manter o processador ocupado a maior parte do tempo, balancear o uso da UCP entre os processos, privilegiar a execuo de aplicaes crticas, maximizarem o throughput do sistema e oferecer tempos de resposta razoveis para o usurio. No SO, a rotina que programa os critrios de escalonamento o escalonador (scheduler).

As caractersticas de um SO determinam suas aplicaes e suas polticas de escalonamentos. Um escalonamento pode ser No-Preemptivo ou Preemptivo. Em um Escalonamento No-Preemptivo, quando um processo est em execuo, outro processo no pode fazer uso do processador, liberando o processador apenas quanto termina seu processamento. Este um tipo de escalonamento que predominou em sistemas do tipo bath. J em um Escalonamento Preemptivo, o SO pode interromper um processo em execuo e pass-lo para o estado de pronto, para poder alocar outro processo na UCP. O escalonamento Preemptivo utilizado na grande maioria dos SOs atuais. A seguir so apresentadas as principais polticas de escalonamentos. Escalonamento FIFO (First-In-Fist-Out): Escalonamento No-Preemptivo, utilizado nos primeiros SOs monoprogramveis (Bath), no qual o processo que chegar primeiro ao estado de pronto o processo selecionado para execuo. Escalonamento SJF (Shortest-Job-First): Escalonamento NoPreempetivo, tambm usado nos primeiros SOs, onde o processo que tiver o menor tempo de processador ainda por utilizar selecionado. Escalonamento Cooperativo: No-Preemptivo, busca aumentar o grau de multiprogramao sem mecanismos de preempo. Nesse escalonamento, um processo em execuo pode liberar o processador voluntariamente, voltando fila de pronto e possibilitando que outro processo seja executado. Escalonamento Circular (Round Robin Scheduling): Preemptivo, utilizado para sistemas de tempo compartilhado, semelhante ao FIFO mas quando um processo passa para o estado de execuo, existe um tempo limite para este processo fazer uso do processador. Este tempo denominado de Time-Slice e varia em cada SO. Em geral varia de 10 a 100 milissegundos. Escalonamento por Prioridades: Preemptivo, onde o processo com maior prioridade estabelecida no estado de pronto escolhido para execuo, e processos com valores iguais so escalonados seguindo FIFO. A perda do processador ocorre no caso de mudana voluntria para o estado de espera ou quando um processo de prioridade maior passa para o estado de pronto. Tambm conhecido como Preempo por Prioridade, aloca no processador o primeiro processo da fila de prioridade mais alta.

Escalonamento Circular com Prioridades: Preemptivo, programa o conceito de fatia de tempo (Time Slice) e de prioridade de execuo associada a cada processo. Um processo permanece no estado de execuo at que termine seu processamento, voluntariamente passe para o estado de espera ou sofra uma preempo por tempo ou prioridade. Oferece um melhor balanceamento no uso do processador em sistemas de tempo compartilhado, por isso foi implementado nos SOs Microsoft Windows e UNIX. Escalonamento por Mltiplas Filas: Existem mltiplas filas de processos no estado de pronto, cada qual com uma prioridade especfica. Os processos so alocados em filas conforme suas caractersticas (importncia para a aplicao, tipo de processamento ou memria necessria). Um processo no possui prioridade, quem possui a fila. Pode conviver com mecanismos de escalonamentos distintos em um mesmo SO, mas no caso de um processo alterar seu comportamento, ele no poder ser redirecionado para outra fila. Escalonamento por Mltiplas Filas com Realimentao: semelhante ao Escalonamento por Mltiplas Filas, porm os processos podem trocar de filas durante o processamento. A vantagem permitir ao SO identificar o comportamento de cada processo e redirecion-lo a fila mais adequada para sua execuo. Este algoritmo pode ser implementado em qualquer tipo de SO. Quando se trata de SOs de tempo compartilhado, atualmente a sua grande maioria faz uso da poltica de Escalonamento Circular com Prioridades Dinmicas. J os SOs de Tempo Real, a poltica de Escalonamento por Prioridades o mais adequado. GERENCIAMENTO DE MEMRIA Em geral, programas so armazenados em memrias secundrias (disco, fita, cartes), porm, como o processador somente executa instrues localizadas na memria principal, o SO deve sempre transferir programas da memria secundria para a principal. A gerncia de memria deve manter na memria principal, o maior nmero de processos residentes para maximizar o compartilhamento do processador e outros recursos computacionais. E, mesmo na ausncia de espao livre de memria (pelo fato de haver muitos programas na memria, ou um nico programa

exceder o tamanho da memria), o SO deve ainda permitir que novos processos sejam executados. Isto pode ser realizado por tcnicas de gerenciamento de memria como o Overlay e a Memria Virtual (MACHADO, MAIA, 2007). Para alocar memria, existem duas tcnicas: Alocao Contgua Simples e Alocao Particionada. Na Alocao Contgua Simples, a memria subdividida em duas reas, uma para o SO e outra para o programa do usurio. Dessa forma, o programador deve desenvolver suas aplicaes apenas para a rea disponvel. O restante da memria utilizado pelo SO. Este um modelo antigo e ineficiente para utilizao dos recursos do computador. Uma tcnica chamada de Overley divide o programa em mdulos, de forma que seja possvel a execuo independente de cada mdulo, utilizando uma mesma rea de memria. A Alocao de Memria Particionada a tcnica utilizada na atualidade com os SOs multiprogramveis. Algumas de suas variaes so apresentadas a seguir: Alocao Particionada Esttica: a memria dividida em tamanhos fixos, chamados de parties, com seu tamanho estabelecido na fase de inicializao do SO. Este tipo de alocao chamado de Esttica ou Fixa. Como os programas s podiam ser carregados e executados em apenas uma partio especifica todas as referncias a endereos no programa so posies fsicas na memria principal. O gerenciamento deste tipo de alocao de memria chamou-se de Alocao Particionada Esttica Absoluta. E, com a evoluo dos sistemas, o cdigo deixou de ser absoluto para ser relocvel, onde todas as referncias a endereos no programa so relativas ao incio do cdigo, e no a endereos fsicos de memria. Neste modelo, os programas puderam ser executados a partir de qualquer partio. Esse gerenciamento de memria foi denominado de Alocao Particionada Relocvel. Tanto na Alocao Absoluta quanto nos de Alocao Relocvel, os programas no preenchem totalmente as parties que so carregadas ocasionando o que se chama de Fragmentao Interna. Alocao Particionada Dinmica: tambm chamada de varivel, no existe parties de tamanho fixo. Cada programa utiliza o espao necessrio, tornando essa rea alocada sua partio. Neste caso, a Fragmentao Interna no ocorre, porm um diferente tipo de fragmentao pode acontecer medida que os programas terminam, deixando espaos cada vez menores na memria e no permitindo o ingresso de novos programas. A isto se deu o nome de Fragmentao Externa. Para

solucion-la, o SO tem duas solues: a primeira consiste em reunir os espaos que vo sendo liberados conforme os programas terminam. Na segunda, realizada a relocao de todas as parties ocupadas, eliminando todos os espaos entre elas e criando uma nica rea livre contgua, ou seja, o SO precisa realizar o que se chama de Relocao Dinmica. Outra tcnica criada para contornar o problema de insuficincia de memria o Swapping. Trata-se de uma tcnica aplicada gerncia de memria para programas que esperam por memria livre para serem executados. O sistema escolhe um processo residente, que transferido da memria principal para a memria secundria (swap out), geralmente o HD (Hard Disk). Posteriormente, o processo carregado de volta da memria secundria para a memria principal (swap in) e pode continuar sua execuo. O conceito de Swapping permite maior compartilhamento de memria principal e maior utilizao dos recursos do sistema computacional, porm para execut-la essencial que o SO implante a Realocao Dinmica de programas. GERENCIAMENTO DE MEMRIA VITUAL Memria Virtual uma tcnica sofisticada e poderosa de gerencia de memria, na qual a memria principal e a secundria so combinadas dando ao usurio a iluso de existir uma memria muito maior que a capacidade real da memria principal (MACHADO, MAIA, 2007, p.174). Com esta tcnica, programas e suas estruturas de dados deixam de estar limitados ao tamanho da memria fsica disponvel. A maioria dos SOs implementa Memria Virtual, com exceo de SOs de supercomputadores. Na Memria Virtual, um programa no faz referncia a endereos fsicos de memria, e sim a endereos virtuais. Utiliza uma tcnica chamada de Mapeamento para fazer com que no momento da execuo de uma instruo, o endereo virtual referenciado seja trazido para um endereo fsico, pois o processador manipula apenas posies da memria principal. O mapeamento um mecanismo de traduo de endereo virtual para endereo fsico. O gerenciamento de memria virtual pode ser realizado de utilizando tcnicas como Paginao, Segmentao ou combinao entre as duas. A seguir so apresentadas essas tcnicas.

Memria Virtual por Paginao: a tcnica de gerenciamento de memria virtual em que o espao de endereamento virtual e o espao de endereamento real so divididos em blocos de mesmo tamanho, chamados de Pginas. Quando um programa executado, as pginas virtuais so transferidas da memria secundria para a memria principal e colocadas em frames. Caso uma pgina no esteja na memria, ocorre um Page Fault. Memria Virtual por Segmentao: a tcnica de gerncia de memria onde o espao de endereamento virtual dividido em blocos de tamanhos diferentes chamados de Segmentos. Nesta tcnica, um programa dividido logicamente em sub-rotinas e estruturas de dados, que so alocadas em segmentos de memria principal. O espao de endereamento virtual de um processo possui um nmero mximo de segmentos que podem existir, onde cada segmento pode variar de tamanho dentro de um limite. O tamanho do segmento pode ser alterado durante a execuo do programa. Os segmentos so mapeados atravs de tabelas de mapeamento de segmentos, e os endereos so compostos pelo nmero do segmento virtual e por um deslocamento. Nesta tcnica, somente os segmentos referenciados so transferidos da memria secundria para a memria principal. Memria Virtual por Segmentao com Paginao: a tcnica de gerencia de memria virtual na qual o espao de endereamento dividido em segmentos e, por sua vez, cada segmento dividido em pginas. Um endereo virtual formado pelo nmero de segmentos, um nmero de pgina virtual e um deslocamento. O endereo fsico obtido combinando-se o endereo do frame, localizado na tabela de pginas com o deslocamento, contido no endereo virtual. Com esta tcnica, um segmento no precisa estar contguo na memria principal, eliminando o problema da Fragmentao Externa. A tcnica de Swapping tambm aplicada em sistemas com memria virtual, permitindo aumentar o nmero de processos que compartilham a memria principal. Segundo MACHADO e MAIA (2007, p. 203), quando existem novos processos para

serem executados e no h memria principal livre, o sistema seleciona processos para sarem da memria e oferecer espao para novos processos. O sistema retira os processos da memria principal, transfere-os da memria principal para a memria secundria (swap out), onde pginas ou segmentos so gravados em um arquivo (swap file). Os processos so salvos na memria secundria e espao liberado para novos processos. Posteriormente os processos retornam para a memria principal (swap in) para serem executados. Quando um sistema faz excessivamente transferncias de pginas/segmentos entre a memria principal e a memria secundria, ou seja, utiliza-se do Swapping excessivamente, ocorre o que se chama de Thrashing. Isto ocorre no sistema quando existem mais processos competindo por memria principal que espao disponvel. Independente das solues apresentadas para o gerenciamento de memria, se existir mais processos para serem executados que memria real disponvel (memria principal), uma soluo prtica a expanso da memria principal.

3. CONSIDERAES FINAIS
Um Sistema Operacional um conjunto de instrues que objetivam primeiramente fazer o controle e o gerenciamento dos recursos de um sistema computacional e, para o usurio, oferecer uma interface amigvel para a utilizao de aplicaes. As principais tarefas de um sistema operacional so: gerenciamento de processador e de processos, gerenciamento de memria, gerenciamento dos dispositivos de entrada e sada, do sistema de arquivos e a interface com o usurio. Nesta aula foi possvel verificar as principais atividades relacionadas ao gerenciamento de processos e de memria. Sobre os processos, foi possvel verificar sua estrutura, processos de criao, e o conceito de Threads, alm dos seus critrios de escalonamento. Sobre o gerenciamento de memria, foi possvel verificar suas funes bsicas, tcnicas de alocao, tcnicas de gerenciamento de memria virtual e Swapping.

4. BIBLIOGRAFIA UTILIZADA
DEITEL, Harvery M.; DEITEL, Paul J.; CHOFFNES, David R. Sistemas Operacionais. 3 ed. So Paulo: Pearson Education, 2005. MACHADO, Francis Berenger; MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais. 4 ed. So Paulo: LTC, 2007. SILBERSCHATZ, Abraham; GALVIN, Peter Baer; GAGNE, Greg. Fundamentos de Sistemas Operacionais. 6 ed. Rio de Janeiro: LTC, 2004. TANENBAUM, A.. Sistemas Operacionais Modernos. 1 ed. So Paulo: Pearson Education, 2003.

S-ar putea să vă placă și