• Nenhum resultado encontrado

4.2 • Escalonamento de processos

No documento [PT] SILBERSCHATZ - Sistemas Operacionais (páginas 67-70)

O objetivo da multiprogramação é ter processos cm execução o tempo todo, para maximizar a utilização de CPU. O objetivo do tempo compartilhado é alternar a CPU entre processos de forma tão frequente que os usuá- rios possam interagir com cada programa durante sua execução. Para um sistema uniprocessador, nunca have- rá mais de um processo cm execução. Sc houver mais processos, os demais terão de esperar até que a CPU esteja liberada e possa ser reescalonada.

4.2.1 Filas de escalonamento

À medida que os processos entram no sistema, são colocados em uma fila de jobs. Essa fila consiste em todos os processos do sistema. Os processos que estão residindo na memória principal e estão prontos e esperando para executar são mantidos em uma lista chamada fila de processos prontos (ready queué). Essa fila geralmen- te é armazenada como uma lista encadeada. Um cabeçalho de fila de processos prontos contém ponteiros ao primeiro e Último PCBs na lista. Estendemos cada PCB para incluir um campo de ponteiro apontando para o próximo PCB na fila de processos prontos.

Existem também outras filas no sistema. Q u a n d o a C P U é a l o c a d a a um processo, ele executa durante um tempo e é encerrado, interrompido ou espera pela ocorrência de determinado evento, como a conclusão de um pedido de l/O, por exemplo. No caso de um pedido de I/O, esse pedido pode ser para uma unidade de fita dedicada ou para um dispositivo compartilhado, como um disco. Como existem muitos processos no siste- ma, o disco pode estar ocupado com o pedido de l/O de algum outro processo. O processo, portanto, pode ter de esperar pelo disco. A lista de processos esperando por determinado dispositivo de l/O é chamada fila de dispositivo. Cada dispositivo tem sua própria fila de dispositivo (Figura 4.4).

cabeçalho da fila fila de processos prontos unidade de fita magnética 0 início fim PCB, PCB2 in í/*Lr\ H inicio - fim > registradores • • registradores • a unidade de fila magnética 1 disco unidade 0 Unidade de terminal 0 PCB, PCB, início - fim ^^^^^^^^

Processos • 67 Uma representação comum p a r i uma discussão sobre escalonamento de processos é um diagrama de fi- las, como o da Figura 4.5. Cada caixa retangular representa uma fila. Dois tipos de fila estão presentes: a fila de processos prontos e um conjunto de filas de dispositivo. Os círculos representam os recursos que servem as filas e as setas indicam o fluxo de processos no sistema.

Figura 4.5 Representação do diagrama de filas do escalonamento de processos.

Um processo novo é colocado inicialmente na fila de processos prontos. Ele espera na fila até ser selecio- nado para execução ou ser submetido (dispatched). Depois que o processo recebe a CPU e está cm execução, um dos vários eventos a seguir poderá ocorrer:

• O processo pode emitir um pedido de I/O e ser colocado em uma fila de l/O. • O processo pode criar um novo subprocesso c esperar seu término.

• O processo pode ser removido à força da CPU, como resultado de uma interrupção e ser colocado de volta na fila de processos prontos.

Nos dois primeiros casos, o processo acaba alternando do estado de espera para o estado de pronto e, em seguida, é colocado de volta na fila de processos prontos. Um processo continua o seu ciclo até terminar e, nesse ponto, é removido de todas as filas, com seu PCB e recursos sendo desalocados.

4 . 2 . 2 E s c a l o n a d o r e s

Um processo migra entre as várias filas de escalonamento ao longo de toda sua vida. O sistema operacional deve selecionar, para fins de escalonamento, os processos dessas filas de alguma forma. O processo de Seleção

ê executado pelo escalonador (scheàuler) adequado.

Em um sistema cm batch, existem geralmente mais processos submetidos do que processos que podem ser executados imediatamente. Esses processos são colocados em uni spool em um dispositivo de armazena- mento de massa (geralmente um disco), onde são mantidos para execução posterior. O escalonador de longo prazo, ou o escalonador de jobs, seleciona processos desse conjunto c os carrega na memória para execução.

O escalonador de curto prazo, ou o escalonador de CPU, seleciona dentre os processos que estão prontos para execução e aloca a CPU a um deles.

A principal distinção entre esses dois escalonadores é a frequência da sua execução. O escalonador de curto prazo deve selecionar um novo processo para a CPU com frequência. Um processo pode executar por apenas alguns milissegundos antes de esperar por um pedido de I/O. Em geral, o escalonador de curto prazo executa pelo menos uma vez a cada 100 milissegundos. Devido à breve duração de tempo entre as execuções, o escalonador de curto prazo deve ser rápido. Se levar 10 milissegundos para decidir executar um processo por 100 milissegundos, então 10/(100 + 10) = 9% da CPU está sendo usado (desperdiçado) simplesmente para escalonar o trabalho.

68 • Sistemas Operacionais

O cscalonador de longo prazo, por o u t r o lado, executa com muito menos frequência. Pode haver um in- tervalo de minutos entre a criação de novos processos no sistema. O escalonador de longo prazo controla o grau de multiprogramação (o número de processos na memória). Sc o grau de mui ti programação f o r estável, a taxa media de criação de processos deve ser igual a taxa média de partida de processos que saem do sistema. Assim, o escalonador de longo prazo pode precisar ser chamado apenas quando um processo sair do sistema. Devido ao intervalo maior entre as execuções, o escalonador de longo prazo pode levar mais tempo para de- cidir que processos devem ser selecionados para execução.

E importante que o escalonador de longo prazo faça uma Seleção cuidadosa. Em geral, a maioria dos pro- cessos podem ser descritos como limitados por I/O ou limitados pela CPU. Um processo limitado por I/O passa mais tempo realizando operações de I/O do que efetuando cálculos. Um processo limitado pela CPU, por outro lado. gera pedidos de I/O com pouca frequência, usando mais o seu tempo na computação. E i m - portante que o escalonador de longo prazo selecione uma boa combinação de processos incluindo processos limitados por l/O e pela CPU. Sc todos os processos forem limitados por l/O, a fila de processos prontos qua- se sempre estará vazia e o escalonador de curto prazo terá pouco trabalho. Se todos os processos forem l i m i - tados pela CPU, a fila de espera de l/O quase sempre estará vazia, os dispositivos ficarão sem uso e mais uma vez o sistema ficará desequilibrado. O sistema com o melhor desempenho terá uma combinação de processos limitados pela CPU e por l/O.

Em alguns sistemas, o cscalonador de longo prazo pode estar ausente ou ser mínimo. Por exemplo, siste- mas de tempo compartilhado, como o U N I X , geralmente não têm um escalonador de longo prazo, mas sim- plesmente colocam todo novo processo na memória para o escalonador de curto prazo. A estabilidade desses sistemas depende de uma limitação física (como o número de terminais disponíveis) ou da natureza de au- to-ajuste dos usuários humanos. Se o desempenho cair para níveis inaceitáveis, alguns usuários simplesmente vão desistir.

Alguns sistemas operacionais, como os de tempo compartilhado, podem introduzir um nível intermediá- rio adicional de escalonamento. O escalonador de médio prazo está representado na Figura 4.6. A principal ideia por trás de um cscalonador de médio prazo é que às vezes pode ser vantajoso remover processos da me- mória (e da disputa ativa por CPU) e, assim, reduzir o grau de multiprogramação. Em algum momento poste- rior, o processo pode ser introduzido novamente na memória e sua execução pode ser retomada do ponto onde parou. Esse esquema é chamado de swapping (troca). O escalonador de médio prazo realiza as opera- ções de swapping. O swapping pode ser necessário para melhorar a combinação de processos ou porque uma mudança nos requisitos de memória comprometeu a memória disponível, exigindo a liberação de memória. O Capítulo 9 discute o conceito de swapping.

swap out

»- tlm

Figura 4.6 Acréscimo do escalonamento de médio prazo ao diagrama de filas.

4.2.3 Troca de contexto

Alternar a CPU para o u t r o processo requer salvar o estado do processo antigo e carregar o estado salvo do novo processo. Essa tarefa é chamada de troca de contexto. O contexto de um processo é representado no PCB de um processo; inclui o valor dos registradores de CPU, o estado do processo (consulte a Figura 4.1) e as informações de gerência de memória. Q u a n d o ocorre uma troca de c o n t e x t o , qjcerncl salva o contexto do

processo antigo em seu PCB e carrega o çontextosàlvo do novo pTocesso escolhido para execução. O tempo de troca de contexto é puro overbead, já que o sistema não efetua trabalho útil durante o processo de troca.

Processos • 69

Sua velocidade varia de máquina a máquina dependendo da velocidade da memória, do número de registra-

No documento [PT] SILBERSCHATZ - Sistemas Operacionais (páginas 67-70)

Outline

Documentos relacionados