Baixe o app para aproveitar ainda mais
Prévia do material em texto
2 - Estados do Processo Em execução (running) São processos que estão efetivamente usando a CPU ,ou seja, “rodando”. Geralmente, encontra-se apenas um processo neste estado. Pronto (ready) São processos que aguardam sua vez para usar a CPU,ou seja, estão prontos para “rodar”, esperando sua vez. Geralmente a maioria dos processos estão neste estado. Em espera (wait) São processos que aguardam um recurso para dar prosseguimento ao seu processamento. Este recurso não é a CPU. Pode ser um dado da rede, até um acesso a disco. Geralmente, poucos processos (se houver algum) estão neste estado. Diagramas de Estados de Processos ESPERA( alguns ) PRONTO ( muitos ) EXECUÇÃO (1) SubProcessos e Threads - Um processo pode criar outros processos, de maneira hierárquica. - Quando processo (pai) cria outro processo (filho) este é chamado de subprocesso que, por sua vez, pode criar outros subprocessos. - Caso um processo pai deixe de existir, todos os subprocessos deste “pai” também deixarão de existir. - Subprocessos são criados para otimizar o compartilhamento de CPU e de outros recursos. - O conceito de threads foi introduzido para reduzir a criação/eliminação de processos. - Cada thread possui seu próprio conjunto de registradores, porém, podem compartilhar o mesmo espaço de endereçamento. - A principal característica das threads, apesar de funcionarem como processos, é que um thread pode alterar dados de uma outra thread. Comunicação entre Processos Há processos que compartilham recursos, entre um ou mais computadores, porém, alguns problemas podem decorrer do livre compartilhamento destes recursos. Starvation (“morrer de fome”) Quando um processo aloca recursos, um após o outro, sem liberá-los, faz com que outros processos permaneçam no estado de espera. À medida que o número de processos neste estado aumenta, sistemas degradam sua performance, até que sistemas “travem”. Deadlock Outro problema causado pela falta de comunicação. A nível de processo, um exemplo: P1 R1 P2 R2 P3 R3 Quando o ciclo se “fecha” sistemas podem “travar”. Uma definição de deadlock seria uma alocação cíclica de recursos causando um “impasse” que pode até “travar” sistemas. O que fazer ? Prevenir: alguns sistemas previnem (evitam) a ocorrência de deadlocks mantendo uma tabela de processos, recursos, e requests. Processo Recurso Pedido P1 R1 R3 P2 R2 R1 P3 R3 R2 Quando é identificado o ciclo é dado um aviso “deadlock warning” o último pedido é negado. EX.: ORACLE. Reagir: uma forma de reagir a um deadlock qu já ocorreu é matar um processo. Problemas: Qual processo? Qual impacto? Ignorar: desenvolvedores de S.O. dizem que deadlocks são problemas dos aplicativos e seus desenvolvedores. Semáforos Como no problema dos filósofos comensais, semáforos podem ser utilizados para impedir que filósofos “vizinhos” comam ao mesmo tempo (resolvendo problema). Semáforos podem, portanto, resolver problemas de sincronização de processos. Porém, seu uso incorreto pode incorrer em erros de “timming”, difíceis de serem identificados, pois, podem ocorrer (ou não) em uma sequência em partículas. Monitores É outra estrutura de sincronização de alto nível. Na programação, usam-se variáveis que definem estados de uma instância. A estrutura do monitor garante que somente um processo, de cada vez, possa estar ativo. Apesar de resolver o problema monitores não são ainda uma estrutura suficientemente “poderosa” para modelar esquemas de sincronização.
Compartilhar