Escolar Documentos
Profissional Documentos
Cultura Documentos
Processo entidade dinmica que consiste num programa em execuo, os seus valores correntes, informao de estado e recursos utilizados pelo sistema operativo na gesto da execuo do processo. Um processo constitui uma actividade. Ele possui programa, entrada, sada e um estado. Um nico processador pode ser compartilhado entre os vrios processos, com algum algoritmo de escalonamento usado para determinar quando parar o trabalho sobre um processo e servir um outro. 2.1.2 Criao de processos
H quatro eventos principais que fazem com que processos sejam criados: 1. Inicio do sistema 2. Execuo de uma chamada ao sistema de criao de processo por um processo em execuo 3. Uma requisio do usurio para criar um novo processo 4. Inicio de um Job em lote. Tecnicamente, em todos estes casos, um novo processo e criado por um processo existente executando uma chamada ao sistema de criao de processo.
processo grep tem tempo de CPU e o processo cat ainda no terminou ento o grep passa para o estado de bloqueado. Execuo Pronto e Pronto Execuo: transies causadas pelo escalonador de processos, grerenciamento de tempo de CPU, Execuo Pronto ocorre quando o escalonador de processos decide que o processo em execuo j teve o seu tempo de CPU, e Pronto Execuo ocorre quando j todos os processos estiveram em execuo volta novamente para o mesmo. Bloqueado Pronto: ocorre quando o processo que estava no estado bloqueado tem disponvel aquilo que estava espera. Se o CPU estiver livre esse processo passa logo para o estado de Execuo, seno fica a aguardar at chegar a sua vez.
2.1.2 Threads
E o fluxo de controle de um processo. Permitem que mltiplas execues ocorram no mesmo ambiente do processo com um grande grau de independncia uma da outra. Itens compartilhados por todos os threads de um processo: Espao de endereamento Variveis globais Ficheiros abertos Processos filhos Alarmes pendentes Sinais e tratadores de sinais Informao de contabilidade Itens por thread: Contador de programa Registradores Pilha Estado Cada thread tem a sua prpria pilha. Isso e fcil e perceber porque normalmente cada thread chama poeiets ir t ou se chamam os mesmos o que se vai passar, e diferente para cada thread, rcd n d e n s m o fe e ento e necessrio que cada thread tenha a sua pilha. A pilha tem uma estrutura aonde so guardadas as vaiveis locais de um procedimento e o endereo de retorno para usa-lo quando o procedimento terminar
Esta soluo para o problema das regies criticas em vez dos processos que querem aceder a regio critica ficarem em espera ociosa ficam bloqueados, fazendo com que estes no desperdicem tempo e CPU. Isto e feio com o par de chamadas ao sistema wakeup e sleep. O problema produtor-consumidor: dois processos partilham um buffer comum e de tamanho fixo. O produtor pe informao dentro do buffer e o consumidor retira. O problema existe quando o produtor que colocar um item no buffer mas este j esta cheio. A soluo e por o produtor a dormir e desperta-lo quando o consumidor consumir um ou mais itens. Ou ento ao contrrio, se o consumidor quiser consumir e o buffer estiver vazio, vai dormir ate o produtor produzir um ou mis itens. Resumidamente o problema disto tudo e quando ocorre a situao em que o buffer esta vazio e o consumidor acabou de ler a varivel count (que diz o numero de itens do buffer) para verificar se o seu valor e zero e nesse instante o escalonador de processos decide parar de executar o consumidor e comea a executar o produtor. O produtor insere um item no buffer e incrementa count, depois verifica que e 1 e ento envia o sinal para despertar o consumidor. Infelizmente o consumidor no esta a dormir e o sinal perde-se. Na prxima vez que o consumidor executar, testa o valor de count anteriormente lido e verifica que e zero e dormira. O produtor mais cedo ou mais tarde preenchera todo o buffer e tambm dormira. E ento ambos dormiram para sempre. Uma soluo para isto seria utilizar um bit de espera pelos sinais de acordar e dormir. Quando um sinal acordar enviado a um processo que ainda esta acordado ento esse bit e activado. Quando o processo tentar dormir, se o bit estiver activado ento o bit e desactivado e o processo continuara acordado.
2.3.5 Semforos
Uma varivel inteira utilizada para guardar o nmero de sinais de acordar salvos para uso futuro. Um semforo pode conter o valor 0 indicando que nenhum sinal de acordar foi salvo algum ou valor positivo se um ou mais sinais de acordar estivessem pendentes. As operaes para trabalhar com os semforos so o down e o up. A operao verifica se um semforo maior que zero. Se for ento decrementa um valor ao semforo (gasta um sinal de acordar armazenado). Se o valor for zero o processo ser posto para dormir. Verificar o valor do semforo, alteralo e possivelmente i dormir so tarefas executadas todas como uma s. Uma vez iniciada uma operao ao semforo mais nenhum outro processo pode ter acesso ao semforo, para evitar as condies de disputa. A operao up incrementa o valor de um dado semforo.
2.3.6 Mutexes
O mutex serve para gerenciar a excluso mtua de algum recurso ou parte de cdigo partilhada. tipo um semforo, mas apenas utiliza, ou o valor 0 para dizer que esta livre e outro qualquer para dizer que esta ocupado. Quando uma thread precisa de ter acesso a uma regio critica chama mutex_lock. Se o mutex estiver livre a chamada continua e o processo (ou thread) que chamou mutex_lock ficara livre para entrar na regio critica. Por outro lado se o mutex estiver ocupado, significa que um outro processo esta a utilizar aquela regio critica e ento o processo que chamou mutex_lock fica bloqueado ate que o outro processo acabe de utilizar a regio critica e chame mutex_unlock. Se existirem mltiplas threads bloqueados espera de entrar na regio critica um deles ser escolhido aleatoriamente. A diferena entre os mutexes e a espera ociosa que quando um processo chama mutex_lock e verifica que no pode entrar na regio critica, fica bloqueado e chama thread_yield para que liberte o CPU para outra thread
2.3.7 Monitores
Ah pois !
mensagem de uma dada origem. Se nenhuma mensagem estiver disponvel o receptor poder ficar bloqueado at que alguma mensagem chegue. Ou ento retornar imediatamente um cdigo e erro.
2.3.9 Barreiras
Mecanismo dirigido a grupos de processos. Algumas aplicaes so divididas em fases e tem como regra que nenhum processo pode avanar para a prxima fase ate que todos os processos estejam pontos a faze-lo.
2.5 Scheduler
Quando um computador multiprogramado, ele muitas vezes tem variados processos que competem pela CPU o mesmo tempo. Esta situao ocorre sempre que dois processos esto no estado de pronto. Se apenas um CPU se encontra disponvel, devera ser feita uma escolha de qual processo executara primeiro. A parte do sistema operacional que faz essa escolha chamada de escalonador e o algoritmo que ele usa o algoritmo de escalonamento.
Escalonamento por alternncia circular (round robin) a cada processo e atribudo o seu intervalo de tempo, o seu quantum, no qual ele permitido executar. Se ao final do quatum o processo ainda estiver a executar, o escalonado dar o CPU ao processo seguinte e o processo que estava a executar vai para o fim da lista circular Escalonamento por prioridades escalonamento circular pressupe que todos os processos so o igualmente importantes. A cada processo atribuda uma prioridade e os processos so ento escalonados conforme essas prioridades. Para evitar que os processos com prioridade mais alta sejam executados indefinidamente o CPU, o escalonado pode reduzir a prioridade do processo a cada tick de relgio. Filas mltiplas so definidas classes por prioridades. Os processos na classe mais alta so executados por um quatum, os processos na classe a seguir so executados por dois quantum e assim sucessivamente. Prximo processo mais curto (shortest process next) Escalonamento garantido Escalonamento por loteria Escalonamento por fraccao just (fair-share)