Você está na página 1de 12
sagens bem conhecido, por exemplo, é 0 MPI (message- ‘passing interface — interface de troca de mensagem), amplamente usado em computagdo ctentilica. Para mais informagbes sobre cle, veja, por exemplo, Gropp et al (1994) e Shir et al. (1996) 2.5.9] Barreiras Nosso iiltimo mecanismo de sincronizacao & dirigido aos grupos de processos em vez de situagdes que envolvem dois processos do tipo produtor-consumidor. Algumas apli- caghes sfo divididas em fases etém como regra que nenhum processo pode avangar para a préxima fase até que todos os processos estejam prontos.a fazé-l, Iso pode ser consegui- «do por meio da colocagio de uma barreira no final de cada fase. Quando alcanga a barreira, um processo permanece blogucado até que todos os processos aleancem a bartel- ra, A operagio de uma barreira ¢ ilustrada na Figura 2.30. [Na Figura 2.30(a, vemos quatro processos ehegando a ma barreira, 0 que significa que eles estao apenas compu- tando € ainda no atingiram o final da fase atual, Depois de ‘um tempo, o primeito processo termina toda a computagao atribuida a ele para a primeira fase. Ele emtdo executa a pri- ritiva barter, em geral por intermédio da chamada a uma rotina de biblioteca. © processo é, entio, suspenso. Mais tarde, a primeira fase € terminada por um segundo e depois ‘por um terceiro processo, que também executama primitiva a ae © Bareira @ | ® os 30 oO © Tempo—> Tempo—> (o) © Figura 2.30 Uso da uma barra, (a) Processos 96 _aprowimando de uma barraa. fo) Todos os processos, exceto um, estéo bloqueados pela barra. jo) Quando o dima proceso chega a barrel, todos passa por el. BLES) aia Capitulo 2__Processos e threads boarier. Essa situagio ¢ ilustrada na Figura 2.30(b). Por fim, quando o tikimo proceso, ¢, atinge a barteira, todos as pro- cessos si liberados, conforme ilustrado na Figura 2.30(¢). ‘Como exemplo de uma situagio que requer barretras, considere um problema tipieo de relaxagio, da fisica ou da engenharia, Ba em geral uma matriz que contém alguns, valores niciais. Os valores poem representar temperaturas ‘em varios pontos de uma placa de metal. O objetivo pode ser calcular quanto tempo leva para que 0 efeito de uma cham localizada em um vantose peopague por waa placa. Comegando com os valores atvais, uma transformagio jcada 4 matriz para obter uma segunda versio da ma: {riz — por exemplo, aplicando-se as leis da termodinamica para verificar todasas temperaturas em um instante: Tmais, tarde. 0 processn é, entia, repetida varias veres e fomece as temperaturas nos pontas de amostragem como uma fun- io do tempo, 4 medida que a placa é aquecida, O algoritino produ, portanto, uma série de matrizes ao longo do tempo. ‘Agora, imagine que a mattiz seja muito grande (diga- ‘mos, um milhio por um milhao), exigindo 0 uso de proces- samento paralelo (possivelmente em um sistema multipro- cessadot} para aumentar a velocidade do cateulo. Processos diferentes trabalham com diferentes partes da matriz, cal culando os elementos da nova matriz a partir dos valores anteriores ¢ de acordo com as les da fisica. Contudo, um. processo s6 pode comecar uma iteragio 1 + 1 quando a iteragio n terminar, isto €, quando todos os processos ter- minarem seus trabalhos atuais. © meto de chegar a esse ‘objetivo € programar cada processo de mancira que ele execute uma operagio barter depois que terminar sta parte da iteracdo. Quando todos tiverem feito sua parte, a nova rmatriz (a entrada para a proxima iteracio) estard pronta e todos 08 processos serao simultaneamente liberados para Inicalizar a proxima iteracao. EZ] Escalonamento Quando um computador & multiprogramado, ele mui- tas veres tem mailtiplos processos ou threads que compe- tem pela CPU 20 mesmo tempo. Essa sitagdo corre sem- pre que dois ou mais processos estio simultaneamente no estado pronto, Se sumente uma CPU se eneontiar dispo- nivel, deverd ser feita uma escolha de qual processo exe- ccutaré em seguida. A parte do sistema operacional que faz a escolha é chamada de esealonador, ¢ o algoritmo que cle usa € 0 algoritmo de escalonamento. Esses tdpicos formam 0 assunto das proximas secies Muitos dos problemas que se aplicam ao escalonarten- to de processos também sio validos para o escalonamento de threads, embora haja diferengas. Quando o niicleo ge- renda threads, 0 esealonamento normalmente € feito por thread, dando pouca ou nenhuma atengio ao proceso a0 qual o thread pertence, Inicialmente nos concentraremos tem questées de escalonamento que se aplicam tanto a pro- cessos como a threads. Em seguida estudaremos especifica- 1B __ Sistemas operacionais modernos mente o escalonamento de threads ¢ alguns dos problemas exclusives que suscita, Lidaremos com chips multiniidleo no Capitulo 8. 2.4.1) Introduco ao escalonamento De volta aos velhos tempos dos sistemas em lote, coma entradana forma de imagens de cartdes em uma fita magné- ica, o algoritmo de escalonamento era simples: apenas execute a préxima tarefa que esté na fita. Com os sistemas multiprogramados, o algoritmo de esealonamento tornou- se mais complexo porque, em gral, havia varios usué- rios esperando por um servigo, Alguns computadores de grande porte ainda combinam servigos em lote e de tempo compartithado, exigindo assim que o escalonador decida se ‘uma farefa em lote ou um usuario interativo em um termi- nal deve ser atendido, (Atente para o seguinte: uma tarefa em lote pode ser uma requisico para executar uma suces- sio de varios programas, mas, para esta secio, vamos supor queseja uma requisigdo para executar um Gnico programa.) Como 0 tempo de CPU é um recurso escasr0 nessas méqui nas, uum bom escalonador pode fazer wma grande diferen- em um terminal, © processo perten- cente aquele terminal era movido para a classe de priorida- de mais alta, na suposigio de que ele estivesse prestes a se ‘tomar interativo, Certo dia, alguma tisudrio com tim proces so pesadamente limitado pela GPU descobriu que, sentan- do ao terminal e digitando de maneira aleatéria © a intervalos de pouicos segundos, poderia fazer maravilhas por scu tempo de resposta, Ele contou isso para todos os seus amigos. Moral da histéria: conseguir acertar na prética € muito mais dffell que acertar na teoria, Muitos outros algoritmos foram usados para atribuir processos a classes de prioridade. Por exemplo, o influente sistema XDS 940 (Lampson, 1968), construido em Berke- ley, possuia quatro classes de prioridade: terminal, EIS, quantum curio © quantum longo. Quando um processo que estivesse esperando pela entrada de um terminal fi nalmente acordasse, ele ira para classe de prioridade mais alta (terminal). Quando um processo bloqueado pelo disco ficasse pronto, ele iia para a segunda classe, Se, eniquan- to um processo ainda estivesse executando, sew quantum acabasse, seria inicialmente alocado na terceira classe. Con tudo, se um processo terminasse seu quantum varias vezes sem ser bloqueado pelo terminal ou por eutra B/S, ira para 4 Ghima fla, Muiws outs sistemes usan elgy sennelbante para fayorecer 0s usuérios interativos mais do que 0s pro- cessos em segundo plano. Préximo proceso mais curto (shortest process next) Coma a tarefa mate cura primeira sempre resnilia ne mie nnimo tempo médio de resposta pata sistemas em lote, seria ‘bom se ele também pudesse ser usada para processos inte- rativos. Até certo ponto, isso & possivel. Processos interati- vos geralmente seguem o padrao de esperar por comando, executar comando, esperar por comando, executar coman- do e assim por diante. Se vissemos a execucio de cada co- mando como uma 'tarefa’isolado, ento poderfamos mi- nimizar o tempo de resposta geral executando a farefz mais BLES) aia Capitulo 2 Processose threads 95 curta primeiro. 0 inico problema & saber qual dos pracessos, aiualmente executivels 6 0 mais curto, Uma saida € realizar uma estimativa com base no com- portamento passado ¢, entéo, executar 0 processo cujo tempo de execucio estimado seja o menor. Suponha que © tempo estimado por comando para algum terminal seja Te que sua proxima execucio seja medida como 7,, Po: deriamos atwalizar nossa estimativa tomande uma soma Ponderada desses dois niimeros, isto 6, a7, + (1 ~a)T,. Pela escolha de w, podemos devidir se © provesso de estimativa esqueceré rapidamente as execugdes anteriores ou se lem- braré delas por um longo tempo, Gom @ = 1/2, obtemos Depois de ués novas exccugtes, o peso de T, a nova cestimativa calu para 1/8. A técnica de estimar 0 valorseguinte da série, tomando a média ponderada do valor sendo medido e a estimati- va anterior, € algumas vezes chamada de aging (envelhe- mento). Essa técnica é aplicivel a muitas situagdes nas quais € preciso uma previsio bascada nos valores anterio- res. Aging & especialmente fécil de implementar quando a= 1/2, Basta apenas adicionar o novo valor a estimativa atual edividir a soma por 2 (deslocande | bit & direita) Escalonamento garantido Um metodo completamente diferente de lidar com © escalonamento ¢ fazer promessas reais sobre o desem- ppenho a0s usuarios. entao, satisfazé-los. Uma promessa realista ¢ facil de cumprir & esta: se houver 1 usuios co- neciaxos enquanto voce estivertrabalhando, voe® recebers cerca de 1/1 de GPU, De mocio semelhante, em wm sistema 'monousuario com n processos em execugao, todos iguais, cada um deve receber 1/i ciclos de CPU. Isso parece sul cientemente justo. Pata faze vales essa prumessa, v sistema deve i 6 controle da quantidade de CPU que cada processo re- cebe desi sta criagio, Ele entio calcula a quantidade de PU destinada a cada um ou simplesmente o tempo desde a ctiagio dividido por n. Como a quantidade de tempo de PU que cada processo realmente teve é também conheci- da, torna-se f4cil calcular a taxa entre o tempo de CPU de fato consumido ¢ 0 tempo de CPU destinado a cada pro- cesso, Uma taxa de 0,5 significa que um processo teve so- mente a metade do que ele deveria ter, € una taxa de 2.0, significa aue um processo teve das vezes mais do que the {oi destinado. O algoritmo entao exeeutard o proceso com a taxa mais baixa, até que sua taxa crescae se aproxime da de seu competidor, Escalonamento por loteria Fazer promessas aos usurios e satisfazé-los é uma boa a, porém cfcil de implementar. Contudo, um outro alk goritmo pode ser usado com resultados similarmente previst- }6_ Sistemas operacionais modernos mas le implementagio muito mais simples. £0 chamado escalonamento por loteria (Waldspurger e Weihl, 1994). A ideia bésica € dar bilhetes de lotetia aos processos, cujos prémios sio varios recursos do sistema, como tempo de CPU. Se houer uma decisio de escalonamento, um bi- Ihete de loteria sera escolhido aleatoriamente e o processo que tem o bilhete conseguité o recurso. Quando aplicado a0 escalonamento de CPU, o sistema pode fazer um sor- teio 50 veres por segundo e, portanto, cada vencedor terd 20 ms de tempo de GPU como premio, Parafraseanclo George Orwell: “Todos 03 processos si0 iguais, mas alguns sio mais iguais que os outros”. Aos pro «essos mais importantes podem ser atribuidos bilhetes ex: tras para aumentar suas probabilidades de vit6ria, Se hou: ver com bilhetes extras e um processo detiver 20 deles, esse processo terd uma chance de 20 por cento de vencer cada loteria. Ao longo da execugio, ele abteré 20 por cento da CPU. Diferentemente de um escalonador por prioridades, no qual € muito dificil estabelecer 0 que de fato significa uma prioridade 40, aqui hé uma regra clara: um processo que deteha uma fragio fos bilhetes obterd em torno de uuma fragdo f do recurso em questéo. © escalonamente por loteria tem vétias propriedades interessantes. Por exemplo, se apatece win novo processo © a ele sio atribuidos alguns bilhetes, jf no préximo sorteio da loteria sua probabilidade de vencer sera proportional 40 ntimero de bilhetes que ele tiver. Em outras palayras, 0 «escalonamento por loteria € altamente responsivo. 3s processos cooperativos podem trocar bilhetes entre si, se assim desejarem. Por exemplo, quando um processo cliente enyia uma mensagem para um processo servider e,, entao, é bloqueado, ele pode dar todos os seus bilhetes a0 servidor, para que aumentem as probabilidades de 0 servi- dor executar logo. Quando 0 servider termina, retorna os bilhetes para o cliente executar novamente. Na verdade, na auséncia de clientes. os servidores nem precisam de hilhetes. © escalonamento por loteria pou ser usado pata resol ver problemas dfeeis de solucionar a partir de outros mé- todos. Um exemplo 6 0 de um servidor de video, no qual vrios processos alimentam 0 fluxo de video de seus clien- 1s, mas em diferentes taxas de apresentacdo dos quadros.. Suponha que os processos precisem de taxas em 10, 20 € 25 quadros/s, Alocando a esses processos dez, 20 ¢ 25 bilhetes, respectivamemte, cles vo automaticamente dividir a CPU aptoximadamente na proporgio correta, que & 10:20:25. Escalonamento por fragio justa (fa Até agora temos partido do pressuposto de que cada processo é escalonado por si prépriv, sem nos preocupar- mos com quem é seu dono. Como resulado, se 0 usuario 1 inicia nove processos ¢o usustio 2 inicia um processo, com

Você também pode gostar