Академический Документы
Профессиональный Документы
Культура Документы
SISTEMAS OPERACIONAIS
Sistemas Multitarefa
Microcomputadores
Sistemas Monoprogramveis/Monotarefa
Os primeiros sistemas operacionais eram voltados tipicamente para a execuo de um nico programa. Qualquer outra aplicao, para ser executada, deveria aguardar o trmino do programa corrente. Neste tipo de sistema, o processador, a memria e os perifricos permanecem exclusivamente dedicados execuo de um nico programa. Os sistemas monoprogramveis esto diretamente ligados ao surgimento, na dcada de 50/60, dos primeiros computadores. Embora os sistemas operacionais j tivessem evoludo com as tecnologias de multitarefa e multiprogramveis, os sistemas monoprogramveis voltaram a ser utilizados na plataforma de microcomputadores pessoais e estaes de trabalho devido baixa capacidade de armazenamento destas mquinas, na poca.
CPU
Memria Principal
Dispositivos E/S
Sistema Monoprogramvel/Monotarefa
Comparados a outros sistemas, os monoprogramveis so de simples implementao, no existindo muita preocupao com problemas decorrentes do compartilhamento de recursos como memria, processador e dispositivos de E/S. 2.2 Sistemas Multiprogramveis/Multitarefa
Constituindo-se uma evoluo dos sistemas monoprogramveis, neste tipo de sistema os recursos computacionais so compartilhados entre os diversos usurios e aplicaes: enquanto um programa espera por um evento, outros programas podem estar processando neste mesmo intervalo de tempo. Neste caso, podemos observar o compartilhamento da memria e do processador. O sistema operacional se incumbe de gerenciar o acesso concorrente aos seus diversos recursos, como processador, memria e perifricos, de forma ordenada e protegida, entre os diversos programas. As vantagens do uso deste tipo de sistema so a reduo do tempo de resposta das aplicaes, alm dos custos reduzidos devido ao compartilhamento dos recursos do sistema entre as diferentes aplicaes. Apesar de mais eficientes que os monoprogramveis, os sistemas multiprogramveis so de implementao muito mais complexa.
CPU
Programa/Tarefa
Memria Principal
Dispositivos E/S
Programa/Tarefa
Programa/Tarefa
Sistema Multiprogramvel/Multitarefa
Programa/Tarefa
Os sistemas multiprogramveis/multitarefa podem ser classificados de acordo com a forma com que suas aplicaes so gerenciadas, podendo ser divididos em sistemas batch, de tempo compartilhado e de tempo real, de acordo com a figura abaixo. Sistemas Multiprogramveis/ Multitarefa
Sistemas BATCH
2.2.1
Foram os primeiros sistemas multiprogramveis a serem implementados na dcada de 60. Nesta modalidade, os programas eram submetidos para execuo atravs de cartes perfurados e armazenados em disco ou fita, para posterior execuo. Vem da o nome batch (lote de cartes). O processamento em batch tem como caracterstica no exigir interao do usurio com o sistema ou com a aplicao. Todas as entradas ou sadas so implementadas por meio de algum tipo de memria secundria, geralmente disco ou fita. Aplicaes deste tipo eram utilizadas em clculo numrico, compilaes, back-ups, etc.
Tambm chamados sistemas de time-sharing, permitem que diversos programas sejam executados a partir da diviso de tempo do processador em pequenos intervalos, denominados fatia de tempo (ou time-slice). Caso a fatia de tempo no seja suficiente para a concluso do programa, este interrompido pelo sistema operacional e substitudo no processador por outro, enquanto aguarda nova fatia de tempo. Neste tipo de processamento, cada usurio tem a impresso de que a mquina est dedicada ao seu programa, como se ele fosse o nico usurio a se utilizar do sistema. Geralmente permitem interao do usurio com a aplicao atravs de terminais compostos por monitor, teclado e mouse. Estes sistemas possuem uma linguagem de controle que permite ao usurio interagir com o sistema operacional atravs de comandos. Assim, possvel verificar arquivos armazenados em disco ou cancelar execuo de programas. Normalmente, o sistema responde em apenas alguns segundos maioria destes comandos, o que se levou a cham-los tambm de sistemas on-line. A maioria das aplicaes comerciais atualmente processada em ambiente de tempo compartilhado, que oferece tempos baixos de respostas a seus usurios e menores custos, em funo do alto grau de compartilhamento dos diversos recursos do sistema. 2.2.3 Sistemas de Tempo Real
Este tipo de sistema implementado de forma bastante semelhante ao de tempo compartilhado. O que caracteriza a diferena entre eles o tempo exigido no processamento das aplicaes. Enquanto nos sistemas de tempo compartilhado o tempo de processamento pode variar sem comprometer as aplicaes em execuo, nos sistemas de tempo real os tempos de execuo devem estar dentro de limites rgidos, que devem ser obedecidos, caso contrrio podero ocorrer problemas irreparveis. No sistema de tempo real no existe a idia de fatia de tempo como nos sistemas de tempo compartilhado. Um programa ocupa o processador o tempo que for necessrio ou at que aparea um outro com um nvel de prioridade maior. Esta prioridade de execuo definida pela prpria aplicao e no pelo sistema operacional, como nos sistemas de tempo compartilhado.
Os sistemas com mltiplos processadores caracterizam-se por possuir duas ou mais CPUs interligadas e trabalhando em conjunto. A vantagem deste tipo de sistema permitir que vrios programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em vrias partes para serem executadas simultaneamente em mais de um processador. Esta tcnica permitiu a criao de sistemas computacionais voltados para processamento cientfico, prospeco de petrleo, simulaes, processamento de imagens e CAD. Um fator chave no desenvolvimento dos sistemas multiprocessados a forma de comunicao entre as CPUs e o grau de compartilhamento da memria e dos dispositivos de E/S. Em funo destes fatores, podemos classificar os sistemas multiprocessados de acordo com a figura a seguir:
Simtricos
Assimtricos
Redes
Distribudos
Na figura podemos perceber a diviso dos sistemas multiprocessados em duas categorias iniciais: sistemas fortemente acoplados e fracamente acoplados. A grande diferena entre estas duas categorias que nos sistemas fortemente acoplados existe apenas uma memria Marechal Floriano 2011 robson.nanotech@yahoo.com.br
Rotina de Tratamento
A tcnica de buffering consiste nua utilizao de uma rea em memria principal, denominada buffer, criada e mantida pelo Sistema Operacional, com a finalidade de auxiliar a transferncia de dados entre dispositivos de E/S e a memria. O buffer permite minimizar a disparidade de velocidade entre o processador e os dispositivos de E/S, e tem como objetivo principal manter tanto os dispositivos de E/S como o processador ocupados a maior parte do tempo. A unidade de transferncia do mecanismo de buffering o registro. O buffer deve permitir o armazenamento de vrios registros, de forma que o processador tenha sua disposio dados suficientes para processar sem ter que interromper o programa a cada leitura/gravao no dispositivo de E/S. Enquanto o processador est ocupado processando, os dispositivos de E/S esto efetuando operaes para outros processos. 3.3 SPOOL
A tcnica de spooling foi criada inicialmente para auxiliar a submisso de processos ao sistema, sendo os processos gravados em fita para posterior leitura e execuo. Marechal Floriano 2011 robson.nanotech@yahoo.com.br
comum, em sistemas multiprogramveis, vrios usurios utilizarem os mesmos aplicativos simultaneamente, como editores de texto, compiladores e outros utilitrios. Nesta situao, se cada usurio que utilizasse um destes aplicativos trouxesse o cdigo executvel para a memria, haveria ento diversas cpias de um mesmo programa ocupando espao na memria, o que causaria um grande desperdcio de espao. Reentrncia a capacidade de um cdigo executvel (cdigo reentrante) ser compartilhado por vrios usurios, exigindo apenas uma cpia do programa em memria. A reentrncia permite que cada usurio esteja executando um trecho diferente do cdigo reentrante, manipulando dados prprios, exclusivos de cada usurio. Normalmente cdigos reentrantes so utilizados em utilitrios do sistema, como editores, compiladores e linkers, promovendo um uso mais eficiente da memria e um desempenho maior do sistema. Alguns sistemas operacionais permitem a possibilidade de se implementar o conceito de reentrncia em aplicaes desenvolvidas pelo prprio usurio, mas no comum. 3.5 Segurana e Proteo do Sistema
A eficincia proporcionada por um ambiente multiprogramvel implica em maior complexidade do sistema operacional, j que alguns problemas de proteo surgem como decorrncia deste tipo de implementao. Considerando-se que diversos usurios esto compartilhando os mesmos recursos, como memria, processador e dispositivos de E/S, faz-se ento necessrio existir mecanismos de proteo para garantir a confiabilidade e a integridade dos dados e programas dos usurios, alm do prprio sistema operacional. Marechal Floriano 2011 robson.nanotech@yahoo.com.br
Nos primeiros sistemas computacionais, a comunicao entre o processador e os perifricos era direta, sendo o processador responsvel por efetuar as operaes de leitura/gravao nos dispositivos. O surgimento do controlador de E/S permitiu ao processador agir de maneira independente dos dispositivos de E/S. Com esse novo elemento, o processador no mais se comunicava diretamente com os perifricos, mas sim via controlador. Passaram a existir ento trs maneiras bsicas de se implementar operaes de E/S: -
Controlador
Dispositivos de E/S
A necessidade de se transmitir cada vez um volume maior de informaes trouxe uma evoluo significativa nas operaes de E/S. Em vez de o processador ser interrompido vrias vezes para interrogar os dispositivos para saber do resultado das operaes, o que diminua sua eficincia devido ao excesso de interrupes, foi criado um dispositivo de transferncia de dados chamado de DMA Direct Memory Access. Esta tcnica permite que um bloco de dados seja transferido entre a memria e os dispositivos de E/S sem a interveno do processador, a no ser no incio (quando a operao solicitada) e no final da transferncia (quando o processador notificado sobre o trmino da operao). Na figura a seguir, podemos ver a implementao do canal de E/S gerenciando vrios controladores e, ligados a estes, vrios perifricos.
Canal de E/S
Controlador
Controlador
Dispositivos de E/S
Dispositivos de E/S
USURIO
UTILITRIOS
NCLEO DO SISTEMA
HARDWARE
Hierarquia do Sistema Operacional
O sistema operacional formado por um conjunto de rotinas que oferecem servios essenciais aos usurios, s suas aplicaes, e tambm ao prprio sistema. A esse conjunto de rotinas d-se o nome de ncleo do sistema ou kernel. fundamental no se confundir o ncleo do sistema com aplicaes, utilitrios ou o interpretador de comandos, que acompanham o sistema operacional. As aplicaes so utilizadas pelos usurios de maneira transparente, escondendo todos os detalhes da interao com o sistema. Os utilitrios, como os compiladores, editores de texto e interpretadores de comandos permitem aos usurios, desenvolvedores e administradores de sistema uma interao amigvel com o sistema. Existe uma grande dificuldade em compreender a estrutura e o funcionamento do sistema operacional, pois ele no executado como uma aplicao tipicamente seqencial, com incio, meio e fim. Os procedimentos do sistema so executados concorrentemente sem uma ordem especfica ou predefinida, com base em eventos dissociados do tempo. Muitos desses eventos esto relacionados ao hardware e a tarefas internas do prprio sistema operacional.
A estrutura do sistema, a maneira como ele organizado e o inter-relacionamento entre seus diversos componentes pode variar conforme a concepo do projeto do sistema. 4.3 System Calls
Uma grande preocupao no projeto de sistemas operacionais se refere implementao de mecanismos de proteo ao ncleo do sistema e tambm o controle de acesso aos servios oferecidos pelo sistema. Caso uma aplicao que tenha acesso ao ncleo realize alguma operao que altere sua integridade, todo o sistema poder ficar comprometido e inoperante. As system calls podem ser entendidas como uma porta de entrada para acesso ao ncleo do sistema e aos seus servios. Sempre que um usurio ou uma aplicao necessita de algum servio do sistema, realizada uma chamada a uma de suas rotinas atravs de uma system call. Atravs dos parmetros fornecidos na system call, a solicitao processada e uma resposta enviada aplicao juntamente com um estado de concluso indicando o sucesso ou no da operao. Para cada servio disponvel existe uma system call associada, e cada sistema operacional possui seu prprio conjunto de chamadas, com nomes, parmetros e formas de ativao especficos. Isto explica por que uma aplicao desenvolvida utilizando servios de um determinado sistema operacional no pode ser diretamente portada para um outro sistema.
System Call
Biblioteca
Aplicao
Ncleo do Sistema
Hardware
Arquitetura monoltica
Camada Usurio
Arquitetura em camadas
Arquitetura microkernel (cliente x servidor): uma tendncia nos sistemas operacionais modernos tornar o ncleo do sistema o menor e o mais simples possvel. Para implementar esta idia, os servios do sistema so disponibilizados atravs de processos, onde cada um responsvel por oferecer um conjunto especfico de funes, como gerncia de arquivos, gerncia de processos, gerncia de memria e escalonamento. Sempre que uma aplicao deseja algum servio, realizada uma solicitao ao processo responsvel. Neste caso, a aplicao que est solicitando o servio chamada de cliente, enquanto o processo que responde solicitao chamado de servidor. Um cliente, que pode ser uma aplicao do usurio ou um outro componente do sistema operacional, solicita um servio enviando uma mensagem para o servidor. O servidor responde ao cliente atravs de uma outra mensagem. A principal funo do ncleo realizar a comunicao, ou seja, a troca de mensagens entre o cliente e o servidor. A utilizao
Servidor
Servidor Rede
Hardware
Um processo pode ser entendido inicialmente como um programa em execuo, que tem suas informaes mantidas pelo sistema operacional. Num sistema multiusurio, cada usurio tem a impresso de possuir o processador e todos os demais recursos reservados exclusivamente para si, mas isto no verdade. Todos os recursos esto sendo compartilhados, inclusive a CPU. Neste caso, o processador executa o processo do usurio por um intervalo de tempo e, no instante seguinte, poder estar processando um outro programa, do mesmo ou de outro usurio. Para que a troca de processos possa ser feita sem problemas, necessrio que todas as informaes do programa que est sendo interrompido sejam guardadas, para que ele possa retornar CPU exatamente do ponto em que parou, no lhe faltando nenhuma informao vital sua continuao. Todas as informaes necessrias execuo de um programa fazem parte do processo. Um processo tambm pode ser definido como o ambiente onde o programa executado. Este ambiente, alm das informaes sobre a execuo, possui tambm a quantidade de recursos do sistema que o programa pode utilizar,como espao de endereamento, tempo do processador e rea em disco. Um processo formado por trs partes: contexto de software, contexto de hardware e espao de endereamento, que juntas mantm todas as informaes necessrias execuo de um programa.
Espao de endereamento
Contexto de Software: neste contexto so especificadas caractersticas e limites dos recursos que podem ser alocados pelo processo, como nmero mximo de arquivos abertos, prioridade de execuo, nmero mximo de linhas impressas, etc. Muitas destas caractersticas so criadas no momento da criao do processo, quando da sua alocao. O sistema operacional obtm, a partir do cadastro de usurios e do cadastro de contas no sistema, as informaes e caractersticas que valero para o processo. O contexto de software composto por trs grupos de informaes: Identificao: neste grupo so guardadas informaes sobre o usurio que criou o processo, e, em funo disso, suas reas de atuao no sistema. Quotas: so os limites de recursos do sistema que um processo pode alocar, como rea utilizada em disco, em memria, limite de linhas impressas, nmero mximo de arquivos abertos, nmero mximo de operaes de E/S pendentes, tempo limite de CPU, etc. Privilgios: diz respeito principalmente s prioridades assumidas pelo processo durante sua execuo.
Contexto de Hardware: armazena o contedo dos registradores gerais da CPU, alm dos registradores de uso especfico. Quando um processo est em execuo, o seu contexto de hardware est armazenado nos registradores da CPU. No momento em que o processo perde a utilizao da CPU, o sistema salva as informaes no contexto de hardware do processo. A troca de um processo por outro no processador, comandada pelo sistema operacional, denominada troca de contexto, que consiste em salvar o contedo dos registradores do processo que est deixando a CPU e carrega-los com os valores Marechal Floriano 2011 robson.nanotech@yahoo.com.br
Num sistema multiprogramvel, um processo no deve alocar a CPU com exclusividade, de forma que possa existir um compartilhamento no uso do processador. Os processos passam por diferentes estados ao longo do processamento, em funo de eventos gerados pelo sistema operacional, pelo hardware, ou pelo prprio programa. So estados possveis de um processo: Criao: neste estado o processo est sendo alocado na memria, sendo criado no sistema. Todos os recursos necessrios execuo do processo so reservados durante a passagem do processo por este estado, o que acontece uma nica vez. Vrios processos podem estar neste estado, ao mesmo tempo. Pronto: o estado onde os processos, depois de criados ou quando retornam do tratamento de uma interrupo, permanecem aguardando a liberao da CPU para que possam iniciar ou continuar seu processamento. como se fosse uma fila, gerenciada pelo sistema operacional, que se incumbe de organizar os processos de acordo com as informaes contidas no contexto de software (identificao, quotas e privilgios). Vrios processos podem estar neste estado, ao mesmo tempo. Execuo: onde o processo efetivamente utiliza a CPU. Ele permanece no processador at que seja interrompido ou termine sua execuo. Neste estado, somente um processo pode permanecer de cada vez, j que existe apenas um processador. Espera: neste estado esto todos os processos que sofreram algum tipo de interrupo de E/S, onde permanecem at que a interveno seja resolvida. Vrios processos podem estar neste estado, ao mesmo tempo.
Um processo muda de estado diversas vezes durante sua permanncia no sistema, devido aos eventos ocorridos durante sua execuo. So mudanas possveis: Criao Pronto: o processo foi criado, tem seus recursos alocados, e est apto a disputar o uso da CPU. Pronto Execuo: o processo o primeiro da fila de pronto e a CPU fica disponvel. Neste momento o processo passa a ocupar a CPU, permanecendo em execuo at que seja interrompido ou termine sua execuo. Execuo Pronto: o processo foi interrompido por fatia de tempo ou por prioridade. Ainda precisa de mais tempo na CPU para terminar sua execuo, no tem nenhuma interveno pendente, por isso volta fila de pronto para disputar novamente o uso da CPU. Execuo Espera: esta transio acontece quando o processo foi interrompido por E/S. Significa que deve permanecer no estado de espera at que a interrupo seja tratada pelo sistema. Neste estado o processo fica impedido de disputar o uso da CPU. Espera Pronto: Aps o trmino do tratamento da interrupo, o processo volta fila de pronto para disputar novamente o uso da CPU. Execuo Sada: o processo terminou, e no mais disputar o uso da CPU.
Com o surgimento dos sistemas multiprogramveis, onde mltiplos processos poderiam permanecer na memria e disputar o uso de um nico processador, a gerncia do processador tornou-se uma das atividades mais importantes em um sistema operacional. A partir do momento em que vrios processos podem estar no estado de pronto, devem ser estabelecidos critrios para definir qual processo ser escolhido para fazer uso do processador. Tais critrios compem a poltica de escalonamento, que base da gerncia do processador e da multiprogramao em um sistema operacional. Dentre as funes da gerncia do processador, podemos citar: manter o processador ocupado a maior parte do tempo. balancear o uso da CPU entre processos, privilegiar a execuo de aplicaes crticas, maximizar o throughput e oferecer tempos de resposta razoveis aos usurios interativos. Cada sistema operacional possui sua poltica de escalonamento adequada ao seu propsito e s suas caractersticas. Sistemas de tempo compartilhado, por exemplo, possuem requisitos de escalonamento distintos dos sistemas de tempo real.
6.2 -
Critrios de escalonamento
Utilizao do processador: corresponde a uma taxa de utilizao, que na maioria dos sistemas varia entre 30 e 90%. Uma utilizao abaixo dos 30% indicaria um sistema ocioso, com carga de processamento baixa, enquanto uma taxa de utilizao acima dos 90% pode indicar um sistema bastante carregado, prximo da sua capacidade mxima (em alguns casos tal situao pode levar a um crash travamento do sistema). Throughput: o nmero de processos executados em um determinado intervalo de tempo. Quanto maior o throughput, maior o nmero de tarefas executadas em funo do tempo. A maximizao do throughput desejada na maioria dos sistemas. Tempo de Processador: o tempo que um processo leva no estado de execuo, durante seu processamento. As polticas de escalonamento no interferem neste parmetro, sendo este tempo funo apenas do cdigo executvel e da entrada/sada de dados. Tempo de Espera (pela CPU): todo o tempo que o processo permanece na fila de pronto, aguardando a liberao da CPU para ser executado. A reduo deste tempo de espera desejada pela maioria das polticas de escalonamento.
Escalonamentos do tipo no-preemptivos so aqueles onde o sistema operacional no pode interromper o processo em execuo para retir-lo da CPU. Assim sendo, se nenhum evento externo ocorresse durante a execuo do processo, este permanecia na CPU at terminar ou ento alguma instruo do prprio programa o desviasse para o estado de espera (operao de E/S). J os escalonamentos preemptivos so caracterizados pela possibilidade de o sistema operacional interromper o processo em execuo para retir-lo da CPU e dar lugar a outro. Neste caso o processo retirado da CPU volta ao estado de pronto, onde permanece aguardando nova oportunidade de ocupar a CPU. Com o uso da preempo, possvel ao sistema priorizar a execuo de processos, como no caso de aplicaes em tempo real. Outro benefcio a possibilidade de implementar polticas de escalonamento que compartilhem o processador de uma maneira mais uniforme, balanceando o uso da CPU entre os processos. So escalonamentos no-preemptivos: FIFO: o processo que chegar primeiro fila de pronto selecionado para execuo, e permanece utilizando o processador at terminar sua execuo ou ser interrompido por E/S. Neste caso, o prximo processo da fila de pronto selecionado para execuo. Todo processo que chega fila de pronto entra no final desta fila, conservando a ordem de chegada na fila, at ser escalonado novamente. Apesar de simples, este escalonamento apresenta algumas deficincias, principalmente no que diz respeito dificuldade de se prever o incio da execuo de um processo, j que a ordem de chegada fila de pronto deve ser observada risca. Outro problema quanto aos tipos de processo, onde os CPU-bound levam vantagem no uso do processador em relao aos do tipo I/O-bound, pois o sistema no trata este tipo de diferena. O escalonamento FIFO foi inicialmente implementado em sistemas monoprogramveis, sendo ineficiente se aplicado em sistemas interativos de tempo compartilhado.
Processo A 10 u.t.
Processo B 8 u.t.
Processo C 9 u.t.
SJF (Shortest Job First): este escalonamento seleciona o processo que tiver o menor tempo de processador ainda por executar. Desta forma, o processo que estiver na fila de pronto com menor necessidade de tempo de CPU para terminar o seu processamento ser o escolhido para ocupar a CPU. Funciona com um parmetro passado ao sistema via contexto de software, onde o tempo estimado para o processo informado baseando-se em estatsticas de execues anteriores. Como exemplo, vamos utilizar os mesmos processos executados no escalonamento FIFO acima, com seus respectivos tempos de execuo em u.t. (unidades de tempo): processo A com 10 u.t., processo B com 8 u.t, e o processo C com 9 u.t. Como neste escalonamento o que importa o tempo de execuo, a nova ordem de escalonamento para utilizao da CPU ser B, C e A, como segue: 0 8 17 27
Processo B Processo C
Processo A
Cooperativo: este escalonamento busca aumentar o grau de concorrncia no processador. Neste caso, um processo em execuo pode voluntariamente liberar o processador retornando fila de pronto, possibilitando que um novo processo seja escalonado, permitindo melhor distribuio do tempo do processador. A liberao da CPU uma tarefa exclusiva do programa em execuo, que de maneira cooperativa libera o processador para um outro processo. Neste mecanismo, o processo em execuo verifica periodicamente uma fila de mensagens para saber se existem outros processos na fila de pronto. Porm, como a interrupo do processo no depende do sistema operacional, situaes indesejveis podem ocorrer, como por exemplo, se um programa em execuo no verificar a fila de mensagens, os demais programas no
C
2 4 6 8 10 11 17 u.t.
Por Prioridades: funciona com base num valor associado a cada processo, denominado prioridade de execuo. O processo com maior prioridade na fila de PRONTO sempre o escolhido para ocupar o processador, sendo os processos com prioridades iguais escalonados pelo critrio FIFO. Neste escalonamento o conceito da fatia de tempo no existe. Como conseqncia disto, um processo em execuo no pode sofrer preempo por tempo. Neste escalonamento a perda do uso do processador somente ocorrer no caso de uma mudana voluntria para o estado de espera (interrupo por E/S), ou quando um outro processo de prioridade maior passa (ou chega) para o estado de pronto. Neste caso o sistema operacional interrompe o processo em execuo, salva seu contexto e o coloca na fila de pronto, dando lugar na CPU ao processo prioritrio. Este mecanismo chamado de preempo por prioridade. A figura a seguir mostra a Marechal Floriano 2011 robson.nanotech@yahoo.com.br
A B C
4 14 17
u.t.
A prioridade de execuo faz parte do contexto de software do processo, e pode ser esttica (quando no pode ser alterada durante a existncia do processo) ou dinmica (quando pode ser alterada durante a existncia do processo). Este escalonamento muito usado em sistemas de tempo real, com aplicaes de controle de processos, controle de trfego (sinais de trnsito, de trens/metr, areo), robtica, entre outros.
Escalonamento Circular com Prioridades: implementa o conceito de fatia de tempo e de prioridade de execuo associada a cada processo. Neste escalonamento, um processo permanece no estado de execuo at que termine seu processamento, ou voluntariamente passe para o estado de espera (interrupo por E/S), ou sofra uma preempo por tempo ou prioridade. A principal vantagem deste escalonamento permitir um melhor balanceamento no uso do processador, com a possibilidade de diferenciar o grau de importncia dos processos atravs da prioridade (o Windows utiliza este escalonamento). Por Mltiplas Filas: Este escalonamento implementa vrias filas de pronto, cada uma com prioridade especfica. Os processos so associados s filas de acordo com caractersticas prprias, como importncia da aplicao, tipo de processamento ou rea de memria necessria. Assim, no o processo que detm a prioridade, mas sim a fila. O processo em execuo sofre preempo caso um outro processo entre em uma fila de maior prioridade. O sistema operacional s pode escalonar processos de uma fila quando todas as outras filas de maior prioridade estejam vazias. Os processos sempre voltam para a mesma fila de onde saram. Por Mltiplas Filas com Realimentao: semelhante ao anterior, porm permitindo ao processo voltar para uma outra fila de maior ou menor prioridade, de acordo com seu comportamento durante o processamento. O sistema operacional identifica dinamicamente o comportamento de cada processo e o redireciona para a fila mais conveniente ao longo de seu processamento. um algoritmo generalista, podendo ser implementado na maioria dos sistemas operacionais. Marechal Floriano 2011 robson.nanotech@yahoo.com.br
Historicamente, a memria principal sempre foi vista como um recurso escasso e caro. Uma das maiores preocupaes dos projetistas foi desenvolver sistemas operacionais que no ocupassem muito espao de memria e, ao mesmo tempo, otimizassem a utilizao dos recursos computacionais. Mesmo atualmente, com a reduo do custo e o aumento considervel da capacidade da memria principal, seu gerenciamento dos fatores mais importantes no projeto e implementao dos sistemas operacionais. Enquanto nos sistemas monoprogramveis a gerncia de memria no muito complexa, nos sistemas multiprogramveis essa gerncia se torna crtica, devido necessidade de se maximizar o nmero de usurios e aplicaes utilizando eficientemente o espao da memria principal. 7.2 Funes
Geralmente, os programas so armazenados em memrias secundrias, de uso permanente e no volteis, como discos ou fitas. Como o processador somente executa o que est na memria principal, o sistema operacional deve sempre transferir programas da memria secundria para a principal antes de serem executados.Como o tempo de acesso s memrias secundrias muito superior ao tempo de acesso memria principal, o sistema operacional deve buscar reduzir o nmero de operaes de E/S (acessos memria secundria) a fim de no comprometer o desempenho do sistema. A gerncia de memria deve tentar manter na memria principal o maior nmero de processos residentes, permitindo maximizar o compartilhamento do processador e demais recursos computacionais. Mesmo no havendo espao livre, o sistema deve permitir que novos processos sejam aceitos e executados. Outra preocupao na gerncia de memria permitir a execuo de programas maiores do que a memria fsica disponvel. Em um ambiente de multiprogramao o sistema operacional deve proteger as reas de memria ocupadas por cada processo, alm da rea onde reside o prprio sistema. Caso um programa tente realizar algum acesso indevido memria, o sistema deve, de alguma forma, impedir o acesso. 7.3 Alocao Contgua Simples
Este tipo de alocao foi implementado nos primeiros sistemas operacionais, embora ainda nos dias de hoje esteja presente em alguns sistemas monoprogramveis. Nesse modelo, a memria principal dividida em duas partes, uma para o sistema operacional e a outra para o
Apesar de simples implementao e cdigo reduzido, a alocao contgua simples no permite a utilizao eficiente dos recursos do sistema, pois apenas um usurio pode dispor destes recursos. H inclusive um desperdcio de espao de memria, caso o programa no venha a ocupar toda a rea reservada para ele.
7.4
Segmentao de Programas
Na alocao contgua simples todos os programas esto limitados ao tamanho da memria principal disponvel para o usurio. Uma soluo encontrada para o problema dividir o programa em mdulos, de modo que seja possvel a execuo independente de cada mdulo, utilizando a mesma rea de memria. A esta tcnica d-se o nome de segmentao ou overlay. Marechal Floriano 2011 robson.nanotech@yahoo.com.br
2 KB 3 KB
4 KB
Impresso 2 KB
1 KB
2 KB
Tcnica de Overlay
A definio das reas de overlay funo do programador, atravs de comandos especficos da linguagem de programao utilizada. A grande vantagem da utilizao desta tcnica consiste em se poder executar programas maiores do que a memria fsica disponvel. 7.5 Alocao Particionada Esttica
Os sistemas operacionais evoluram no sentido de proporcionar melhor aproveitamento dos recursos disponveis. Nos sistemas monoprogramveis o processador permanece grande parte do tempo ocioso e a memria principal sub-utilizada. Os sistemas multiprogramveis j
2 KB 5 KB 8 KB
Inicialmente, os programas s podiam ser carregados e executados em apenas uma partio especfica, mesmo que as outras estivessem disponveis. Esta limitao se devia aos compiladores e linkeditores, que geravam apenas cdigo absoluto. No cdigo absoluto, todas as referncias a endereos no programa so posies fsicas na memria, ou seja, o programa s poderia ser carregado a partir do endereo de memria especificado no seu prprio cdigo. A esse tipo de alocao de memria chamou-se alocao particionada esttica absoluta. Coma evoluo dos compiladores, linkeditores, montadores e loaders, o cdigo gerado deixou de ser absoluto e passou a ser relocvel . No cdigo relocvel, todas as referncias a endereos no programa so relativas ao incio do cdigo e no a endereos fixos na memria. Desta forma, os programas puderam ser alocados em qualquer partio livre, independente do endereo inicial e da partio para a qual o cdigo foi criado. A esse tipo de alocao deu-se o nome de alocao particionada esttica relocvel. Tanto nos sistemas de alocao absoluta como nos de alocao relocvel, os programas, normalmente, no ocupam totalmente as parties onde so alocados, deixando algum espao livre dentro das parties. Este tipo de problema, decorrente do esquema de alocao fixa de parties, chamado fragmentao interna. A figura a seguir mostra um grfico representando o particionamento esttico de uma memria e sua fragmentao interna.
7.6
A alocao particionada esttica deixou clara a necessidade de uma nova forma de gerncia de memria principal, onde o problema da fragmentao interna fosse reduzido e, conseqentemente, o grau de compartilhamento da memria aumentado. Na alocao particionada dinmica, foi eliminado o conceito de parties de tamanho fixo. Nesse esquema, cada programa, ao ser carregado, utilizaria o espao necessrio sua execuo, tornando esse espao a sua partio. Assim, como os programas utilizam apenas o espao de que necessitam, no esquema de alocao particionada dinmica o problema da fragmentao interna deixa de existir. Porm, com o trmino de alguns programas e o incio de outros, passam a existir na memria blocos cada vez menores na memria, no permitindo o ingresso de novos programas. A este tipo de problema d-se o nome de fragmentao externa. Para resolver o problema da fragmentao externa, os fabricantes tentaram duas solues: - reunio de todos os blocos livres adjacentes, formando uma grande rea livre, que se transforma em uma nova partio; realocao de todas as parties ainda ocupadas para a parte inicial da memria, eliminando os blocos livres entre elas, formando uma grande rea livre no final da Marechal Floriano 2011 robson.nanotech@yahoo.com.br
com realocao.
Estas solues ajudaram a diminuir os problemas da fragmentao (tanto interna como externa), mas, devido complexidade dos algoritmos, nem todos os sistemas operacionais as utilizaram. 7.7 Estratgias de Alocao de Partio
Os sistemas operacionais implementam basicamente trs estratgias para determinar em qual rea livre um programa ser alocado para execuo. Essas estratgias tentam evitar ou diminuir o problema da fragmentao. A melhor estratgia a ser adotada por um sistema depende de uma srie de fatores, sendo o mais importante o tamanho dos programas executados no ambiente. Independentemente do algoritmo utilizado, o sistema possui uma lista das reas livres, com endereo e tamanho de cada rea. So estratgias de alocao: Best-fit: escolhida a melhor partio, ou seja, aquela que deixa o menor espao sem utilizao. Uma grande desvantagem desta estratgia que, como so alocados primeiramente as parties menores, deixando pequenos blocos, a fragmentao aparece mais rapidamente. Worst-fit: aloca o programa na pior partio, ou seja, aquela que deixa o maior espao livre. Esta tcnica, apesar de aproveitar primeiro as parties maiores, acaba deixando espaos livres grandes o suficiente para que outros programas utilizem esses espaos, permitindo que um nmero maior de processos se utilizem da memria, diminuindo ou retardando a fragmentao. First-fit: esta estratgia aloca o programa na primeira partio que o couber, independente do espao livre que vai deixar. Das trs estratgias, esta a mais rpida, consumindo menos recursos do sistema. Swapping
7.8
uma tcnica aplicada gerncia de memria que visa dar maior taxa de utilizao memria principal, melhorando seu compartilhamento. Visa tambm resolver o problema da falta de memria principal num sistema. Marechal Floriano 2011 robson.nanotech@yahoo.com.br
Anteriormente foram apresentadas diversas tcnicas de gerenciamento de memria que evoluram no sentido de maximizar o nmero de processos residentes na memria principal e reduzir o problema da fragmentao, porm os esquemas vistos se mostraram muitas vezes ineficientes. Alm disso, o tamanho dos programas e de suas estruturas de dados estava limitado ao tamanho da memria disponvel. Como vimos, a utilizao da tcnica de overlay para contornar este problema de difcil implementao na prtica e nem sempre uma soluo garantida e eficiente. memrias principal e secundria so combinadas, dando ao usurio a impresso de que existe muito mais memria do que a capacidade real de memria principal. O conceito de memria virtual baseia-se em no vincular o endereamento feito pelo programa aos endereos fsicos da memria principal. Desta forma, o programa e suas estruturas de dados deixam de estar limitados ao tamanho da memria fsica disponvel, pois podem possuir endereos vinculados memria secundria, que funciona como uma extenso da memria principal. Outra vantagem desta tcnica permitir um nmero maior de processos compartilhando a memria principal, j que apenas partes de cada processo estaro residentes. Isto leva a uma utilizao mais eficiente do processador, alm de minimizar (ou quase eliminar) o problema da fragmentao. A seguir, os conceitos que envolvem a gerncia de memria virtual, incluindo a paginao: - espao de endereamento virtual: o conjunto de endereos virtuais que um processo pode enderear. Marechal Floriano 2011 robson.nanotech@yahoo.com.br
com o espao de endereamento real, um programa pode fazer referncia a um endereo virtual que esteja fora dos limites da memria principal (real), ou seja, os programas e suas estruturas de dados no esto mais limitados ao tamanho da memria fsica disponvel. Quando um programa executado, apenas uma parte do seu cdigo fica residente na memria principal, permanecendo o restante na memria virtual at o momento de ser referenciado. Este esquema de endereamento virtual ignorado pelo programador no desenvolvimento das aplicaes. Cabe ao compilador e ao linkeditor gerar cdigos executveis em funo do endereamento virtual, e o sistema operacional se incumbe de administrar os detalhes durante a sua execuo. O processador apenas executa instrues e referencia dados residentes no espao de endereamento real. Portanto, deve existir um mecanismo que transforme os endereos virtuais em endereos reais. Este mecanismo o que chamamos de mapeamento, e consiste em permitir a traduo do endereo virtual em endereo real. Como conseqncia, um programa no mais precisa estar necessariamente em endereos contguos na memria real para ser executado.
armazenar, entre outras informaes, o mapeamento. nica e exclusiva para cada processo, relacionando os endereos virtuais do processo s suas posies na memria real.
endereamento virtual e o espao de endereamento real so divididos em blocos do mesmo tamanho chamados pginas. As pginas do espao virtual so chamadas pginas virtuais, enquanto as pginas do espao real so chamadas pginas reais ou frames.
virtual, o sistema verifica se a pgina correspondente j est carregada na memria real. Se no estiver, acontece o page fault. Neste caso, o sistema deve transferir a pgina virtual para um endereo na memria real. Esta transferncia chamada de paginao. O nmero de page faults gerados por um processo em um determinado intervalo de tempo chamado de taxa de paginao do processo. Se esta taxa atingir valores elevados, pode haver um comprometimento do desempenho do sistema. Um page fault provoca uma interrupo no processo, pois h a necessidade de acessar operaes de E/S. Assim, sempre que acontece a paginao, uma interrupo de E/S far com que o processo em execuo seja interrompido e colocado em estado de espera at que sua interveno de E/S seja realizada, quando ento o processo voltar fila de pronto e entrar em execuo de acordo com o escalonamento Marechal Floriano 2011 robson.nanotech@yahoo.com.br
determinado instante. Este conceito surgiu com o objetivo de reduzir o problema do thrashing e est relacionado ao princpio da localidade. Existem dois tipos de localidade que so observados durante a execuo da maioria dos programas. A localidade espacial a tendncia de que, aps uma referncia a um endereo de memria, sejam realizadas novas referncias a endereos prximos ou adjacentes. A localidade espacial a tendncia de que, aps a referncia a uma posio de memria, esta mesma posio seja referenciada novamente num curto intervalo de tempo. A partir desse princpio de localidade, o processador tender a concentrar suas referncias a um conjunto de pginas do processo durante um determinado perodo de tempo. Imagine um loop principal de um programa que ocupe trs pginas. A tendncia que estas trs pginas tenham um alto ndice de referncias durante a execuo do programa.
Tamanho da pgina: deve estar entre 512 bytes e 128KB, aproximadamente. Pginas
menores promovem maior compartilhamento da memria, permitindo que mais programas possam ser executados. Pginas maiores diminuem o grau de compartilhamento da memria, com menos programas disputando o processador. Assim conclui-se que quanto menor o tamanho da pgina, MAIOR o grau de compartilhamento da memria e da CPU.
Polticas de busca de pginas: definem como as pginas sero carregadas da memria virtual para a memria real. A poltica por demanda estabelece que uma pgina
somente ser carregada quando for referenciada. Este mecanismo conveniente, pois leva para a memria real somente as pginas realmente necessrias execuo do programa, ficando as outras na memria virtual. A outra poltica, chamada paginao antecipada, funciona carregando antecipadamente vrias pginas da memria virtual para a principal, na tentativa de economizar tempo de E/S. Nem sempre o sistema acerta na antecipao, mas o ndice de acertos quase sempre maior que o de erros. Polticas de alocao de pginas: determinam quantos frames cada processo pode manter na memria real. A poltica de alocao fixa determina um limite de workingMarechal Floriano 2011 robson.nanotech@yahoo.com.br
Polticas de substituio de pginas: definem onde sero trocadas as pginas, quando se fizer necessria uma substituio. Na poltica local, somente as pginas do
processo que gerou o page fault so candidatas a serem substitudas.J na poltica global, todas as pginas alocadas na memria principal so candidatas substituio, independente do processo que gerou o page fault. Como uma pgina de qualquer processo pode ser escolhida, pode ser que este processo sofra um aumento temporrio da taxa de paginao em funo da diminuio das suas pginas alocadas em memria.
7.10 Algoritmos de substituio de pginas O maior problema na gerncia de memria virtual por paginao no decidir quais pginas carregar para a memria real, mas sim quais pginas liberar. Quando h a necessidade de carregar uma pgina, o sistema deve selecionar entre as diversas pginas alocadas na memria qual delas dever ser liberada pelo processo. Os algoritmos de substituio de pginas tm o objetivo de selecionar os frames que tenham as menores chances de serem referenciados num futuro prximo. Caso contrrio, o frame poderia retornar diversas vezes para a memria real, provocando excesso de page faults. So algoritmos de substituio de pginas: -
prever com segurana qual frame no ser mais referenciado durante a execuo do programa. Tal fato deve-se lgica do programa e aos dados que ele manipula, desconhecidos pelo processador.
Algoritmo FIFO (first in, first out): escolhe a pgina que est h mais tempo na
memria principal para fazer a troca. um algoritmo de simples implementao, mas corre o risco de retirar uma pgina que, embora tenha sido carregada h mais tempo, esteja sendo muito utilizada. Por essa razo no muito usado. Algoritmo LFU (least frequently used): elege a pgina menos freqentemente usada para efetuar a troca. Atravs de um contador, armazenado na tabela de
Algoritmo LRU (least recently used): elege a pgina menos recentemente usada para
fazer a troca. O sistema mantm na tabela de endereamento de pginas um campo onde so armazenadas a data e a hora da ltima referncia de cada pgina, e com base nestas informaes faz a seleo. efetuar a troca. O sistema exclui da deciso a pgina mais recente e escolhe entre as outras, pelo mtodo FIFO, qual pgina deve sair.
Algoritmo NRU (not recently used): elege a pgina menos recentemente usada para
como o Sistema organiza logicamente os arquivos. Contm entradas associadas aos arquivos, com as informaes de localizao, nome, organizao e outros atributos: Nvel nico: a implementao mais simples de uma estrutura de diretrios, onde existe um nico diretrio contendo todos os arquivos do disco. muito limitado, no permitindo a criao de arquivos com o mesmo nome. Diretrio pessoal: Evoluo do modelo anterior, permite a cada usurio ter ser diretrio particular, sem a preocupao de conhecer os outros arquivos do disco. Neste modelo h um diretrio master que indexa todos os diretrios particulares dos usurios, provendo o acesso a cada um. Mltiplos nveis (RVORE): o modelo utilizado hoje em dia em quase todos os Sistemas Operacionais. Nesta modalidade cada usurio pode criar vrios nveis de diretrios (ou sub-diretrios), sendo que cada diretrio pode conter arquivos e sub-diretrios. O nmero de nveis possveis depende do Sistema Operacional. 8.2 Sistemas de alocao de arquivos
FAT: sistema criado no MS-DOS e depois utilizado no Windows. Usa listas encadeadas, tem um limite de rea utilizvel em parties de 2 GB, caracteriza-se por um baixo desempenho no acesso e armazenamento. FAT32: igual ao FAT no que diz respeito a organizao e desempenho, mas pode trabalhar com parties de at 2TB. NTFS: NT File System, original da plataforma Windows NT/2000/XP. Opera com uma estrutura em rvore binria, oferecendo alto grau de segurana e desempenho: nomes de arquivo com at 255 caracteres, podendo conter maisculas, minsculas e espaos em branco; dispensa ferramentas de recuperao de erros; bom sistema de proteo de arquivos; criptografia; suporta discos de at 264 bytes.
UNIX: Usa diretrio hierrquico, com um raiz e outros diretrios subordinados. Neste Sistema Operacional todos os arquivos so considerados apenas como uma seqncia de bytes, sem significado para o Sistema. responsabilidade da aplicao controlar os
So trs as formas de se implementar estruturas de espaos livres. Uma delas atravs de uma tabela denominada mapa de bits, onde cada entrada da tabela associada a um bloco do disco representado por um bit, que estando com valor 0 indica que o espao est livre, e com valor 1 representa um espao ocupado. Gasta muita memria, pois para cada bloco do disco h uma entrada na tabela. A segunda forma utilizando uma lista encadeada dos blocos livres do disco. Desse modo, cada bloco possui uma rea reservada para armazenar o endereo do prximo bloco livre. Apresenta problemas de lentido no acesso, devido s constantes buscas seqenciais na lista. A terceira forma a tabela de blocos livres. Nesta, leva em considerao que blocos contguos de dados geralmente so alocados/liberados simultaneamente. Desta forma, pode-se enxergar o disco como um conjunto de segmentos de blocos livres. Assim, pode-se manter uma tabela com o endereo do primeiro bloco de cada segmento e o nmero de blocos contguos que se seguem. Alocao contgua: armazena o arquivo em blocos seqencialmente dispostos no disco. O arquivo localizado atravs do endereo do primeiro bloco de sua extenso em blocos. O principal problema neste tipo de alocao a existncia de espao livre para novos arquivos, que deve ser contgua. Utiliza as estratgias best-fit, worst-fit e first-fit (j conhecidas) para definir onde o arquivo ser alocado. Causa alto ndice de fragmentao no disco. Alocao encadeada: nesta modalidade o arquivo organizado como um conjunto de blocos ligados logicamente no disco, independente de sua localizao fsica, onde cada bloco possui um ponteiro para o bloco seguinte. A fragmentao no representa problemas na alocao encadeada, pois os blocos livres para alocao do arquivo no necessariamente precisam estar contguos. O que acontece a quebra do arquivo em vrios pedaos, o que aumenta o tempo de acesso. Neste tipo de alocao s se permite acesso seqencial aos blocos do arquivo, sendo esta uma das principais desvantagens da tcnica. Outra desvantagem a perda de espao nos blocos com o armazenamento dos ponteiros. Alocao indexada: esta tcnica soluciona a limitao da alocao encadeada, no que diz respeito ao acesso, pois permite acesso direto aos blocos do arquivo. Isso conseguido mantendo-se os ponteiros de todos os blocos do arquivo em uma nica estrutura chamada bloco de ndice. Este tipo de alocao, alm de permitir acesso direto aos blocos, no utiliza informaes de controle nos blocos de dados. Marechal Floriano 2011 robson.nanotech@yahoo.com.br
Considerando-se que os meios de armazenamento so compartilhados por vrios usurios, fundamental que mecanismos de proteo sejam implementados para garantir a integridade e proteo individual dos arquivos e diretrios: Senha de acesso: mecanismo de simples implementao, mas apresenta duas desvantagens: no possvel determinar quais os tipos de operao podem ser efetuadas no arquivo, e, se este for compartilhado, todos os usurios que o utilizam devem conhecer a senha de acesso. Grupos de usurio: muito utilizada em muitos Sistemas Operacionais. Consiste em associar cada usurio a um grupo. Os grupos so organizados logicamente com o objetivo de compartilhar arquivos e diretrios no disco. Este mecanismo implementa trs nveis de proteo: OWNER (dono), GROUP (grupo) e ALL (todos). Na criao do arquivo o usurio especifica se o arquivo pode ser acessado somente pelo seu criador, pelo grupo ou por todos os usurios, alm de definir que tipos de acesso podem ser realizados (leitura, escrita, execuo e eliminao) Lista de controle de acesso: uma lista associada ao arquivo onde so especificados quais os usurios e os tipos de acesso permitidos. O tamanho dessa estrutura pode ser bastante extenso se considerarmos que um arquivo pode ser compartilhado por vrios usurios. Alm deste problema, h o inconveniente de se fazer acesso seqencial lista toda vez que um acesso solicitado. Em determinados sistemas de arquivos pode-se utilizar uma combinao de proteo por grupos de usurios ou por listas de acesso, oferecendo assim maior flexibilidade ao mecanismo de proteo de arquivos e diretrios.