Você está na página 1de 68

Sistemas Operativos

Paulo Trezentos
(Paulo.Trezentos@iscte.pt) Departamento de Cincias e Tecnologias de Informaao e c ISCTE

Cap tulo 2 - Processos

Baseado nos acetados de: Jos Guimares, Toms Brando e Joo Batista e a a a a

Sistemas Operativos

Aula 1 - Conceitos Introdutrios o

Conceito de processo Multi-programao ca Estados de um processo Criao de processos ca Terminao de processos ca Hierarquia de processos Representao de processos ca Processos em Linux e Windows

Sistemas Operativos

Conceito de Processo Processo Entidade activa, que corresponde a um programa em execuo ca Cada processo tem um espao de endereamento prprio c c o A gesto de processos da responsabilidade do sistema operativo, que utiliza esa e truturas de dados (process tables) que descrevem o contexto de execuo de cada ca processo O prprio sistema operativo tambm um conjunto de vrios processos o e e a Programa Sequncia de instruoes sem actividade prpria - no confundir com processo e c o a

Sistemas Operativos

Multi-programao ca Num sistema multi-programado, mesmo que s exista um processador poss vrios o e vel a processos estarem activos simultaneamente Contudo, em cada instante temporal, apenas um deles pode utilizar o processador A esta iluso de vrios processos correrem aparentemente em paralelo, d-se o nome a a a de pseudo-paralelismo No se pode prever a ordem de execuo dos processos devido a: a ca Existncia de interrupoes e c Falta de recursos Entrada de processos prioritrios a Depois de uma comutao do processador, o prximo processo a utiliz-lo escolhido ca o a e pelo sequenciador de processos do SO

Sistemas Operativos

Multi-programao ca Exemplo: 4 processos a executar

Sistemas Operativos

Multi-programao ca Concorrncia e Os vrios processos competementre si pela utilizao do processador... a ca Cooperao ca ...mas tambm podem trabalhar em conjunto para a realizao de tarefas mais e ca complexas Esta cooperao exige ao SO a existncia de mecanismos de sincronizao e comuca e ca nicao entre processos ca

Sistemas Operativos

Estados de um Processo Em Execuo ca O processo est a utilizar o processador a Executvel a O processo est activo, mas est ` espera de ter a ateno do processador, que a aa ca nesse instante est dedicado a outro processo a Bloqueado O processo est inactivo a ` A espera que termine uma operao de I/O ca ` A espera que outro processo liberte recursos Devido ` ocorrncia de uma page fault - no possui recursos na memria principal a e a o

Sistemas Operativos

Estados de um processo Diagrama de Estados

Sistemas Operativos

Criao de Processos ca Inicializao do sistema ca Processo init no Linux Processo smss.exe no Windows 2000 Um utilizador cria um novo processo ao mandar executar um programa Clicar um cone Executar um programa a partir da shell % mozilla Um processo criado por outro, atravs de uma chamada ao sistema e e Linux: fork() Windows 2000: CreateProcess(.)

Sistemas Operativos

Terminao de Processos ca Um processo pode terminar por diferentes causas: Sa voluntria da a Normal Em erro (previsto) Sa involuntria da a Erro de execuo ca Terminado por outro processo

Sistemas Operativos

10

Hierarquia de Processos E comum um SO estabelecer uma hierarquia nos processos que se encontram a correr Processo pai - processo que lana um novo processo c Processo lho - novo processo que criado pelo pai e Um processo lho tem apenas um paimas um processo pai pode ter vrios a lhos No Linux estabelecida uma hierarquia que podemos visualizar atravs do comando e e da shell pstree No Windows 2000 no existe uma verdadeira hierarquia, pois quando criado um a e novo processo, o controlo do mesmo pode ser passado para outro processo diferente do criador

Sistemas Operativos

11

Representao dos Processos ca Internamente, o SO mantm estruturas de dados referentes a cada processo - as e Process Tables As vrias Process Tables so agrupadas segundo listas ou arrays de estruturas a a

Cada vez que ocorre uma comutao de processos, o SO salvaguarda e actualiza ca informao relevante na Process Table do processo que perdeuo CPU ca

Sistemas Operativos

12

Representao dos Processos ca Informao nas Process Tables ca Gesto de processos a Contedo dos registos da CPU (incluindo PC e SP) u Estado do processo Prioridade do processo Identicao do processo - PID ca Identicao do processo pai - (PPID) ca Identicao do utilizador que lanou o processo ca c Data/hora em que o processo foi iniciado Tempo de CPU utilizado pelo processo Gesto de memria a o Segmento de texto (programa) Segmento de dados (heap) Segmento do stack Gesto de cheiros a Directrio actual (de trabalho) o Directrio por defeito (e.g. root, home) o Descritores dos cheiros abertos

Sistemas Operativos

13

Processos em Linux Comandos da shell ps - listar processos pstree - ver hierarquia dos processos top - ver informaoes adicionais sobre os processos c kill - enviar sinal a um processo (pode ser um sinal para terminar outro processo) Chamadas ao sistema fork() - criar um novo processo lho exit(.) - terminar processo kill(.) - enviar sinal a um outro processo

Sistemas Operativos

14

Processos em Windows 2000 TaskManager visualizar os processos que esto a correr a possibilita ao utilizador a terminao de processos ca Chamadas ao sistema CreateProcess(.) - criao de processos ca ExitProcess(.) - sa voluntria da a TerminateProcess(.) - terminao de outro processo ca

Sistemas Operativos

15

Conceito de Thread Threads so tambm entidades activas a e Um processo pode ser composto por vrias threads que partilham o mesmo a espao de endereamento c c Processos diferentes possuem recursos diferentes (variveis, FD,...) a ... mas um conjunto de threads dentro do mesmo processo partilha os mesmos recursos

Sistemas Operativos

16

Modelos de Threads Modelo Clssico a Por cada processo existe uma s thread o Neste caso, processo e thread correspondem ao mesmo conceito

Sistemas Operativos

17

Modelos de Threads Modelo Multi-thread Por cada processo podem existir vrias threads a Cada thread tem registos, program counter, stack e estado prprios o

Sistemas Operativos

18

Utilizao de threads - Exemplos ca Processador de texto - podem existir threads para: Ler input do teclado Refrescar o cran e Salvar o documento automaticamente Reformatar o documento, etc. Web Server - dois tipos de threads dispatcher - sempre que chega um pedido de pgina, a thread dispatcherlana a c uma thread worker worker - procura a pgina pedida na cache de pginas, caso no a encontre, a a a ter que ir busc-la ao disco a a

Sistemas Operativos

19

Implementao de Threading ca Modo utilizador

Sistemas Operativos

20

Implementao de Threads em modo utilizador ca A gesto das threads no feita pelo SO, mas sim pelos processos que correm a a e em modo utilizador. Isto conseguido atravs da instalao de pacotes (sobre o SO) que permitem e e ca a utilizao das threads ca Principal vantagem Possibilidade de utilizao de threads mesmo quando o sistema operativo no ca a possua suporte para as mesmas Principal desvantagem Inecientes quando efectuam chamadas ao sistema bloqueantes (e.g. ler caracter do teclado). Neste caso o processo bloqueia, ou seja, todas as threads bloqueiam...

Sistemas Operativos

21

Implementao de Threading ca Modo Ncleo (Kernel) u

Sistemas Operativos

22

Implementao de Threads em modo n cleo (kernel) ca u A gesto das threads totalmente efectuada pelo SO, pelo que o SO ter que a e a ter suporte para threads Principal vantagem Deixam de existir problemas devido a chamadas ao sistema bloqueantes Principal desvantagem Maior peso computacional associado ao ncleo do SO. u

Sistemas Operativos

23

Implementao de Threads em modo h ca brido Tenta tirar partido das vantagens das duas abordagens anteriores A ideia consiste em associar cada thread em modo ncleo a um conjunto de u threads em modo utilizador Deste modo reduz-se o processamento para gesto de threads no ncleo e ao a u mesmo tempo minimiza-se o problema das chamadas bloqueantes

Sistemas Operativos

24

Comunicao entre processos ca IPC (InterProcess Comunnication) Programao concorrente ca Elaborao de tarefas mais complexas ca Mecanismos de sincronizao ca Ordem no acesso aos recursos Ordem quando existe dependncia entre processos (e.g., o processo A produz e dados utilizados pelo processo B) Mecanismos de comunicao ca Troca de dados entre vrios processos a Atravs de mensagens ou de partilha de memria e o

Sistemas Operativos

25

Regies Cr o ticas e Excluso M tua a u Exemplo - la de impresso a Considere que dois processos A e B encaminham cheiros para uma la de impresso com vrios slots. a a Para gesto da la utilizam-se duas variveis: a a in - varivel partilhada pelos processos e que indica o prximo slot livre na a o la out - varivel utilizada pelo processo printer daemone que indica o slot do a prximo trabalho a ser imprimido o

Sistemas Operativos

26

Regies Cr o ticas e Excluso M tua a u Exemplo - la de impresso (Cdigo utilizado pelos processos) a o Programao concorrente ca void EnviarFicheiro(char NomeFicheiro[]) { ... ProxSlotLivre = LerPartilhada in(); CopiarString(NomeFicheiro, ProxSlotLivre); ++ProxSlotLivre; ActualizarPartilhada in(ProxSlotLivre); ... } O que pode acontecer se ocorrer uma comutao de processos entre a leitura da ca varivel in e a actualizao do seu valor ? a ca

Sistemas Operativos

27

Regies Cr o ticas e Excluso M tua a u Regio Cr a tica Seco do programa onde so efectuados acessos (para leitura e escrita) a ca a recursos partilhados por dois ou mais processos E necessrio assegurar que dois ou mais processos no se encontrem simula a taneamente na regio cr a tica - excluso mtua a u Assegura-se a excluso mtua recorrendo aos mecanismos de sincronizao a u ca fornecidos pelo SO Estas armaoes so vlidas tambm para as threads ( ainda mais cr c a a e e tico, pois todas as threads dentro do mesmo processo partilham os mesmos recursos) Regras para programao concorrente ca Dois ou mais processos no podem estar simultaneamente dentro de uma a regio cr a tica No se podem fazer assunoes em relao ` velocidade e ao nmero de CPUs a c ca a u Um processo fora da regio cr a tica no deve causar bloqueio a outro processo a Um processo no pode esperar innitamente para entrar na regio cr a a tica

Sistemas Operativos

28

Mecanismos de Sincronizao ca Desactivao das interrupoes ca c Mecanismo mais bsico, que impossibilita a comutao de processos, garantindo a ca assim a excluso mtua a u ... DesactivarInts(); /* Desactivar as interrupoes */ c~ RegiaoCritica(); ActivarInts(); /* Activar as interrupoes */ c~ RegiaoNaoCritica(); ... Problema: E muito perigoso dar ao utilizador a possibilidade de desactivar as interrupoes (imagina-se facilmente porqu) c e

Sistemas Operativos

29

Mecanismos de Sincronizao: Trincos lgicos (locks) ca o Outra ideia ter uma varivel binria, partilhada por vrios processos, que cone a a a trole o acesso ` regio cr a a tica ... while (lock==0); /* Em ciclo at poder entrar */ e lock = 0; /* Tranca o acesso */ RegiaoCritica(); lock = 1; /* Destranca */ ... Problemas: Pode falhar na garantia da excluso mtua. a u Conduz a uma espera activa

Sistemas Operativos

30

Mecanismos de Sincronizao: Espera Activa ca Um processo ocupa o CPU sem realizar processamento util, at poder entrar na e regio cr a tica. As esperas activas devem ser evitadas porque: Reduzem a ecincia do processador e Podem originar um problema designado por problema da inverso da prioria dade: - um processo prioritrio pode dar entrada no sistema sem que outro processo a liberte o acesso ` regio cr a a tica, monopolizando o CPU e cando innitamente ` espera. a

Sistemas Operativos

31

Mecanismos de Sincronizao: Instruo TSL (Test and Set Lock) ca ca Uma instruo do processador carrega num registo o valor lido de uma posio ca ca e de seguida escreve nessa posio um valor diferente de zero (e.g. 1) ca ... while (TSL(lock)!=0); RegiaoCritica(); lock = 0; RegiaoNaoCritica(); ... Problema Resolve a excluso mtua, mas conduz tambm a uma espera activa... a u e

Sistemas Operativos

32

Mecanismos de Sincronizao: Sleep e Wakeup ca Duas chamadas ao sistema que funcionam do seguinte modo: Sleep() - causa bloqueio ao processo que a invoca Wakeup(PID) - desbloqueia o processo identicado por PID A utilizao destas duas chamadas evita esperas activas, e em conjunto com ca outros mecanismos (e.g. TSL) consegue-se garantir a excluso mtua a u Problema lost wakeup signal - um processo manda acordaro outro sem este ter adormecidoainda

Sistemas Operativos

33

Semforos a Propostos em 1965 por Dijkstra e muito utilizados hoje em dia (embora com variantes) Um semforo consiste basicamente num nmero inteiro no negativo a u a Foram originalmente sugeridas duas operaoes atmicas (indivis c o veis) sob o ponto de vista do SO : UP(Sem) - Incrementa em uma unidade o valor do semforo Sem a DOWN(Sem) - Tenta decrementar em uma unidade o semforo Sem. Caso a o semforo esteja a 0, o processo que invoca DOWN bloqueia at que o a e valor do semforo permita o decremento e a operao seja nalizada a ca // S e um semforo partilhado por vrios processos a a // e inicializado com o valor 1 ... DOWN(S); /* Bloqueia se S estiver a 0 */ RegiaoCritica(); UP(S); /* Liberta o acesso */ RegiaoNaoCritica(); ...

Sistemas Operativos

34

Problema do Consumidor e Produtor Dois processos partilham um buer (ou array) de dimenso nita N: a processo produtor - coloca elementos no buer processo consumidor - extrai elementos do buer

Sistemas Operativos

35

Problema do Consumidor e Produtor O cdigo proposto apresenta vrios problemas. No se impede a ocorrncia das o a a e seguintes situaoes: c o consumidor tenta extrair um elemento quando o buer est vazio a o produtor tenta colocar um elemento no buer quando este est cheio a O buer partilhado pelos dois processos, logo o seu acesso constitui uma regio e a cr tica - no est garantida a excluso mtua a a a u Estes problemas podem ser todos resolvidos utilizando semforos a

Sistemas Operativos

36

Deadlocks (Becos sem Sa da) Quando se elabora um programa que envolvam mecanismos de sincronizao ca e necessrio ter muito cuidado... a No problema anterior, o que pode acontecer se trocarmos a ordem dos DOWNs e se considerarmos que o buer est vazio ? a Com a troca dos semforos existe a possibilidade de ambos os processos bloa quearem - esta situao designa-se deadlock ou beco sem sa ca da

Sistemas Operativos

37

Deadlocks (Becos sem Sa da) Denio: um conjunto de processos est num deadlock se cada um dos ca a processos est bloqueado ` espera de um sinal dependente de outro processo a a nesse conjunto.

Sistemas Operativos

38

Outros mecanismos Mutex Basicamente um semforo mais simples que apenas assume os valores 0 e 1 a (semforo binrio) a a So amplamente utilizados para sincronizao de threads a ca Barreiras Um mecanismo de sincronizao utilizado em arquitecturas multiprocessador ca quando est envolvido processamento por fases. a A barreira no deixa passar nenhum processo para a fase seguinte antes de a todos os processos terem terminado a fase corrente

Sistemas Operativos

39

Outros mecanismos (2) Monitores Mecanismos de sincronizao de alto n com o objectivo de simplicar a ca vel programao concorrente ca A ideia consiste em denir o cdigo correspondente `s regies cr o a o ticas dentro de uma rotina especial designada monitor O monitorgarante que apenas um processo pode estar no seu interior bloqueando todos os outros que tentem aceder antes do que l est sair a a Utilizados actualmente na linguagem Java (embora de uma forma diferente da denida originalmente)

Sistemas Operativos

40

Comunicao - Mensagens ca Dois ou mais processos distintos podem ter necessidade de trocar dados entre si Os dados que so trocados constituem uma mensagem a Chamadas ao sistema do tipo Enviar(Destino, Mensagem) Receber(Origem, & Mensagem) As chamadas ao sistema podero ser bloqueantes a

Sistemas Operativos

41

Comunicao entre processos ca Existem vrias formas diferentes de conseguir a comunicao entre processos a ca Ficheiro Forma trivial Comunicao lenta e com muitas limitaoes ca c Memria partilhada o Dois ou mais processos partilham um segmento de memria o Comunicao rpida, mas desprovida de sincronizao ca a ca Caixa de correio (ou la de mensagens) Fila com capacidade para armazenar um nmero limitado de mensagens u Permite a troca de mensagens entre diversos processos Cada mensagem poder ter um tipo associado, o que facilita a ordem no acesso `s mensagens a a Comunicao s ca ncrona (Rendez-vous) De cada vez que um processo envia uma mensagem a outro, bloqueia at que e o segundo a leia, trocando-se nessa altura os dados de forma directa Poupa-se memria, mas perde-se alguma ecincia em processamento o e

Sistemas Operativos

42

IPC - Unix / Linux No Linux existem diversos mecanismos para comunicao e sincronizao de ca ca processos Pipes Memria Partilhada o Filas de Mensagens (ou Mailboxes) Sockets (para comunicao entre processos em mquinas diferentes) ca a Semforos a

Sistemas Operativos

43

Pipes Mecanismo original de comunicao entre processos nos sistemas Unix ca Pipes half-duplex Utilizados para estabelecer um canal de comunicao unidireccional entre ca processo pai e processo lho O canal de comunicao reside no ncleo do SO ca u Limitao - s podem ser utilizados entre processos relacionados hierarquicaca o mente Os pipes na shell so tambm deste tipo a e

Sistemas Operativos

44

Pipes half-duplex Chamadas ao sistema (funoes C): c pipe(.) - criar um pipe read(.) - ler (bloqueia se o pipe est vazio) a write(.) - escrever no pipe (bloqueia se o pipe est cheio) a close(.) - fechar um dos canais do pipe popen(.) - lanar processo lho e abrir pipe c pclose(.) - fechar pipe aps terminao do processo lho o ca

Sistemas Operativos

45

Named Pipes (FIFOS) A grande diferena em relao aos pipes half-duplex a comunicao ser efecc ca e ca tuada atravs de um cheiro especial - FIFO - o canal de comunicao passa a e ca residir no sistema de cheiros. mknod e mkfo Cria-se este cheiro especial e aps isso so utilizadas funoes normais para o a c escrita e leitura em cheiros fopen e fclose (abrir e fechar) fgets e fputs (ler e escrever string) etc. Os pipes com nome podem ser utilizados para estabelecer a comunicao entre ca quaisquer processos

Sistemas Operativos

46

Filas de mensagens Seguem o modelo de comunicao por caixa de correio ca So utilizadas para comunicao entre vrios processos a ca a Chamadas ao sistema (funoes C): c msgget - criao ou associao ca ca msgsnd - envio de mensagens (causa bloqueio se a la estiver cheia) msgrcv - recepo de mensagem (causa bloqueio se a la no tiver nenhuma ca a mensagem pretendida) msgctl - operaoes de controlo e remoo c ca

Sistemas Operativos

47

Memria partilhada o Dene-se um conjunto de posioes de memria que partilhada por dois proc o e cessos Chamadas ao sistema (funoes C): c shmget - criao ou associao ca ca shmat - mapeamento do segmento de memria partilhada para o espao de o c endereamento do processo c shmdt - liberta o segmento do espao de endereamento do processo c c shmctl - controlo e remoo ca Ateno, pois estas chamadas ao sistema no so bloqueantes, pelo que ca a a e necessria a existncia de mecanismos de sincronizao a e ca

Sistemas Operativos

48

Sistemas Operativos

49

Sequenciamento Quando ocorre uma comutao de processos, o sequenciador (scheduler) escolhe ca um processo para o qual se atribui o CPU A escolha feita de acordo com um dado algoritmo de sequenciamento e Aps a escolha do sequenciador, o despachante (dispatcher) encarrega-se de o colocar o processo em execuo. ca O projecto do sequenciador de processos deve ter em conta as caracter sticas do sistema em causa Sistema batch Sistema interactivo Sistema em tempo real Objectivos do sequenciamento (scheduling) Justia - garantir que todos os processos tero direito a tempo de CPU c a Equil brio - manter os recursos do sistema com uma taxa de ocupao equica librada Prioridades - dar maior tempo de CPU aos processos com maior importncia a Previsibilidade - um mesmo programa deve ser correctamente executado, independentemente da carga do sistema

Sistemas Operativos

50

Sequenciamento I/O-bound Processo caracterizado por uma taxa elevada de operaoes I/O face ` utic a lizao do CPU ca Compute-bound Processo caracterizado por uma taxa elevada de utilizao do CPU face a ca operaoes de I/O c

Sistemas Operativos

51

Sequenciamento Sequenciamento com preempo (Preemptive scheduling). ca O algoritmo de sequenciamento corre: Quando o processo que ocupa o CPU bloqueia Em instantes temporais pr-determinados (interrupo do relgio) e ca o Quando entra um processo prioritrio (em sistemas de tempo-real) a Sequenciamento sem preempo (Non-preemptive scheduling). ca O algoritmo de sequenciamento s corre aps o bloqueio do processo que ocupa o o o CPU Operao de I/O ca Bloqueio num semforo a Ocorrncia de Page fault, etc. e

Sistemas Operativos

52

Algoritmos de Sequenciamento First-come, rst-served (ou FIFO) O CPU atribu aos processos pela sua ordem de chegada e do Cada processo monopoliza o CPU at terminar, ou at bloquear numa operao e e ca de I/O Caracter sticas: - Algoritmo muito simples - No aplicvel para processamento interactivo, a e a mas pode ser utilizado em conjunto com outros algoritmos - Utilizado em sistemas batch

Sistemas Operativos

53

Algoritmos de Sequenciamento Round-robin Cada processo tem direito a um certo tempo de CPU : o quantum . Aps o m do quantum colocado no m da la dos processos executveis o e a Caracter sticas: - Trata todos os processos de modo igual - Permite interactividade - Utilizado em conjunto com outros algoritmos

Sistemas Operativos

54

Algoritmos de Sequenciamento Round-robin O dimensionamento do quantum pode ter um impacto muito forte no desempenho do sistema Quantum pequeno - o CPU perde rendimento... Quantum grande - aumenta o rendimento, mas perde-se interactividade...

Overhead - tempo necessrio para o SO actualizar estruturas quando ocorre uma a comutao de processos ca

Sistemas Operativos

55

Algoritmos de Sequenciamento - Prioridades Existem processos mais importantes do que outros A cada processo atribu um valor de prioridade e do O sequenciador ordena os processos por ordem de prioridade O CPU atribu ao processo com maior prioridade e do Para evitar que processos prioritrios monopolizem o CPU, a prioridade poder a a ter duas componentes Prioridade = prioridade base + prioridade dinmica a Base - valor xo, correspondendo ` prioridade com que o processo iniciado a e Dinmica - valor varivel ao longo do tempo, calculada pelo sequenciador em a a certos instantes temporais

Sistemas Operativos

56

Algoritmos de Sequenciamento - Prioridades Prioridades dinmicas (exemplo de algoritmo simples) a Denir a prioridade dinmica com base na fraco de tempo do quantum - f a ca - que um processo utilizou antes de iniciar uma operao de I/O ca Prioridade dinmica = 1/f a Com este algoritmo beneciam-se os processos I/O-bound Exemplo Quantum = 10 ms Bloqueio ao m de 1 ms => prior. din. = 10 Bloqueio ao m de 2 ms => prior. din. = 5 Bloqueio ao m de 5 ms => prior. din. = 2

Sistemas Operativos

57

Algoritmos de Sequenciamento - Multila Algoritmo que utiliza vrias las round-robin (ou FIFO) com prioridades e quana tuns diferentes em cada uma Quantuns pequenos para prioridades altas Quantuns grandes para prioridades baixas Em cada comutao um processo baixa a prioridade mas aumenta o seu quantum ca Processos I/O-bound caro com prioridades altas e quantuns pequenos a Processos compute-bound caro com prioridades baixas, mas correm de um a modo mais eciente com quantuns altos

Sistemas Operativos

58

Algoritmos de Sequenciamento - Multila Exemplo:

Calcular quantas comutaoes seriam necessrias para um processo cujo tempo de c a execuo seja de 20q. Supondo que o overhead de q/5, calcule o rendimento ca e e compare com o obtido se o quantum fosse sempre q.

Sistemas Operativos

59

Sequenciamento - Unix (caso geral) Baseado em las de prioridades divididas em modo ncleo (negativas) e modo u utilizador (positivas) Algoritmo round-robin em cada la de prioridade

Sistemas Operativos

60

Sequenciamento - Unix (caso geral) Prioridades em modo ncleo: vrias las com prioridades negativas, cada uma u a delas correspondendo ` sa de um bloqueio causado por uma dada situao a da ca em particular Espera pela terminao do lho ca Espera por input do terminal Etc. O objectivo deste esquema consiste em: acelerar pedidos de I/O dos processos I/O-bound; servir rapidamente processos interactivos; libertar rapidamente os processos do modo ncleo. u

Sistemas Operativos

61

Sequenciamento - Unix (caso geral) Prioridades em modo utilizador: prioridades dinmicas que visam lidar com proa cessos compute-bound A prioridade calculada de acordo com e P rioridade = P rioridadebase + k TC P U + N ice TC P U (utilizao do CPU) pode ser calculada do seguinte modo: ca

Deste modo, no se penaliza tanto um processo compute-bound a

Sistemas Operativos

62

Sequenciamento - Linux Algoritmo de sequenciamento orientado para threads Trs classes de threads e Real-time FIFOS: prioridade mais elevada, s perde o processador para o uma outra thread desta classe, ou quando termina/bloqueia Real-time round-robin: semelhante ` classe anterior, mas clock prea empted Timesharing: threads com prioridades normais NOTA: tm o nome real-time mas na realidade no o so... e a a

Sistemas Operativos

63

Sequenciamento - Linux Funcionamento do algoritmo A escolha do sequenciador feita segundo a goodness de cada thread - escolhe e o que obter goodness mais alta

Valores de prioridade entre 1 e 40 (40 a mais elevada) - 20 o valor por defeito e e O quantum medido em clock ticks (chamados jiys). Cada jiy corresponde e a 10ms (por defeito) Em cada clock tick, o valor do quantum decrementado em uma unidade e

Sistemas Operativos

64

Sequenciamento - Linux Uma thread perde o processador se: O seu quantum chegar a 0; Bloquear (semforo, I/O, etc.) a Uma thread com maior goodness desbloquear Nessa altura calculado um novo valor para os quantuns (em jiys) de todas as e threads (activas e bloqueadas) Novo quantum = quantum que sobrou / 2 + prioridade O objectivo beneciar threads I/O-bound e I/O-bound - o quantum tende para o dobro do valor da prioridade, consequentemente aumentando a goodness compute-bound - o quantum tende para um valor igual ao da prioridade Defeito geralmente apontado Fraca escalabilidade - traduzida por uma diminuio do desempenho quando ca o sistema se encontra sobre uma carga elevada Algoritmo de sequenciamento muito pesado devido aos clculos que tem que a realizar, nomeadamente no clculo dos quantuns a Fraca resposta a utilizadores interactivos (o jiy por defeito demasiado e elevado)

Sistemas Operativos

65

Sequenciamento - Windows 2000 No existe um verdadeiro sequenciador de processos, pois a thread que perde o a CPU executa o cdigo do S.O. referente ao algoritmo de sequenciamento o Algoritmo baseado em las de prioridades, round-robin em cada la (quantum de 20ms, por defeito) 6 classes de prioridades para processos 7 classes de prioridades para threads Da combinao das classes de prioridades resulta o valor da prioridade (0 a ca 31) Filas de prioridades 16-31 - reservadas ao S.O. 1-15 - prioridades para as aplicaoes c 0 - zero-page thread

Sistemas Operativos

66

Sequenciamento - Windows 2000 Filas de prioridades

Classes de prioridades => valores de prioridades

Sistemas Operativos

67

Sequenciamento - Windows 2000 A prioridade de uma thread utilizador pode ser subida pelo SO at ` prioridade ea 15 (boost): Em caso de operaoes I/O c (e.g., +1 para disco, +2 modem, +4 teclado, +7 placa de som) Aps desbloquear numa mutex (ou semforo) o a (+2 se estiver num processo interactivo ou +1 caso contrrio) a Depois do boost a prioridade vai descendo 1 ponto de cada vez que a thread usa todo o seu quantum, at ser atingida a prioridade base e Para evitar problemas de inverso de prioridades, threads que j no corram a a a h muito tempo passam durante dois quantuns ` prioridade 15, voltando a a depois ` prioridade anterior de forma abrupta. Esta no uma boa soluo... a a e ca