Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17...

17
INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções do kernel de um sistema operativo 2. Programa verus Processo 3. Modelo de processos e diagrama de transição de processos 4. Programa Versus Processo 5. Hierarquia de processo: subprocesso e Thread 6. Implementação de um processo 7. Tipos de processo 8. Gestão de processador (Escalonamento de processos) 9. Comunicação e sincronização de processos 10. Deadlock 11. Exercícios de aplicação Funções do kernel do Sistema Operativo O kernel é a componente do Sistema Operativo que tem a função de detectar, configurar e operar o hardware do computador. Assim sendo, o desenvolvimento de aplicações torna-se mais simples pois não necessita incluir essas funções, podendo usar as que estão incluídas no kernel, através de uma interface que oculta do programador os detalhes complexos e de baixo nível de programação do hardware. Um conjunto se funções são devidamente agrupada em bilbliotecas para disponibilizar esses serviços e são chamadas por API (Application Program Interface). Kernel & Device Utilitários Interface Usuário Programas

Transcript of Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17...

Page 1: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 1 / 17

SISTEMAS OPERATIVOS

CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS

Conteúdo:

1. Funções do kernel de um sistema operativo 2. Programa verus Processo 3. Modelo de processos e diagrama de transição de processos 4. Programa Versus Processo 5. Hierarquia de processo: subprocesso e Thread 6. Implementação de um processo 7. Tipos de processo 8. Gestão de processador (Escalonamento de processos) 9. Comunicação e sincronização de processos 10. Deadlock 11. Exercícios de aplicação

Funções do kernel do Sistema Operativo O kernel é a componente do Sistema Operativo que tem a função de detectar, configurar e operar o hardware do computador. Assim sendo, o desenvolvimento de aplicações torna-se mais simples pois não necessita incluir essas funções, podendo usar as que estão incluídas no kernel, através de uma interface que oculta do programador os detalhes complexos e de baixo nível de programação do hardware. Um conjunto se funções são devidamente agrupada em bilbliotecas para disponibilizar esses serviços e são chamadas por API (Application Program Interface).

Kernel & Device

Utilitários

Interface

Usuário

Programas

Page 2: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 2 / 17

Device driver (Driver)

Driver é um conjunto de funções que são usadas para controlar um tipo específico de hardware. Assim sendo, podemos afirmar que o kernel é um conjunto de drivers e um sistema que faz a gestão do mesmos.

Características de um device driver:

• Comunicação com dispositivos de Entrada/Saída em alto nível de hardware, geralmente através de controladores, especificando características físicas de cada dispositivo.

• Subsistemas de E/S trata de funções que afectam todos os dispositivos e os Drivers tratam apenas dos seus aspectos particulares.

• Cada Device Driver controla apenas um tipo de dispositivo ou grupo de dispositivos semelhantes.

• Função de receber comandos gerais sobre acessos aos dispositivos, geralmente System Calls, e traduzi-los para comandos específicos para serem executados pelos controladores.

• Os drivers fazem parte do núcleo do Sistema Operacional, sendo escritos geralmente em assembly.

• Normalmente são desenvolvidos, para o mesmo dispositivo, diferentes devices drivers para cada sistema operativo. Isto devido ao fato dos mesmos serem de alto grau de dependência.

• Quando um novo dispositivo é adicionado, este deve ser acoplado ao núcleo do sistema.

Outras funções do Kernel

Num sistema operativo multitarefa e multiusuário como o Linux, o kernel tem ainda algumas obrigações de gestão.

Um sistema operativo multitarefa é aquele em que vários programas podem ser executados simultânea e individualmente (essas várias tarefas em execução são designadas Processos).

Como geralmente há menos CPUs que processos, uma das tarefas de gestão do kernel é dividir o tempo da CPU pelos vários processos .

O kernel permite que a alocação de processos na CPU se dê com tal frequência e rapidez, transmitindo deste modo a ilusão de que vários programas estão sendo executados simultâneamente.

Page 3: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 3 / 17

Paralelismo Real vs Fitício

Eis algumas das funções de gestão do kernel ou seja operaçõesbásicas sobre os processos:

• criação e destruição de processos; • despacho de processos; • resumo e suspensão de processos, • sincronização de processos; • comunicação interprocesso; • manipulação de blocos de controle de processos (PCB-Process Control Block); • suporte das actividades I/O; • alocação/dealocação do espaço na memória; • comutação de estados de processos; • gestão de interrupções.

Um Processo é abstração de um programa em execução, isto é, processo é algo activo que tem o seu tempo na CPU, espaço de endereçamento na memória, atenção dos dispositivos de I/O, canal de comunicação (barramentos), seus registos, sua identificação, etc.

Porquê precisamos de gestão de processos?

Computadores modernos podem realizar várias tarefas em simultâneo

• Concorrentemente ler e escrever na memória, no disco duro enquanto participa activamente na rede. • Se o Sistema Operativo apenas suportasse um programa em execução a CPU ficaria inactivo enquanto o

disco duro estiver a ler um determinado ficheiro.

Objectivo: Maximizar a utilização da CPU por dividir os vários programas em pequenos trechos de execução.

Page 4: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 4 / 17

Modelo de Processo

Generalidades

• Processo => ambiente onde se executa um programa • Bloco de controle do processo (Process Control Block – PCB) – Estrutura onde o SO guarda todas as

informações do processo, contendo sua identificação, prioridade, estado corrente, recursos alocados por ele e informações sobre o programa em execução

• O Sistema Operativo gerencia os processos através de System Calls.

Modelo de processo

1. Processos simulam paralelismo fictício - pseudoparalelismo - A CPU só pode executar uma tarefa de cada vez - Utilizam-se os tempos de inactividade da CPU para executar outras tarefas - Por comutar rapidamente processos que estiverem a correm, e por usar de forma racional os tempos

de inactividade dá a sensação de paralelismo.

2. Autonomia de processos - Da perspectiva de processos cada processo tem sua própria CPU virtual - Porque cada processo é um programa em execução vai ter:

- Registos (registers) - Espaço de memória - Identificador do programa (PID- Program Identifier) - Um programa em execução diz-se um

processo. Cada processo é identificado pelo sistema operativo através de um número único - o pid (Process identifier).

3. Todo o programa em execução é organizado em um número sequencial de processos. - Inclue o Sistema Operativo que consiste em um número de processos a correrem.

4. A CPU faz programação de modo a correr os processos num tempo específico( timeslice) de acordo com o esquema de escalonamento. (Timeslice- tipicamente de 10 a 100 ms) e envolve a troca contexto. Existem três cenários no qual atroca de contexto ocorre:

1. Multitarefa;

2. Interrupção de Hardware;

3. Troca de modo Usuário para modo Kernel;

Processo é construído por: contexto de hardware, software e espaço de endereçamento, conforme mostra a figura baixo:

Contexto de Hardware

• Constitui-se do conteúdo de registradores

Page 5: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 5 / 17

• A troca de um processo por outro na CPU, pelo sistema operacional, é denominada mudança de contexto.

• Mudança de Contexto - salva o conteúdo dos registradores da CPU e carregá-los com os valores referente ao do processo que está ganhando a utilização do processador.

Contexto de Software

• Características do processo incluídas na execução de um programa, divididas em: o Identificação – Principalmente número (PID) de identificação e identificação do processo

ou usuário (UID) que o criou. o Quotas – Limites de cada recurso do sistema que um processo pode alocar o Privilégios – o que o processo pode ou não fazer em relação ao sistema e aos outros

processos.

Espaço de endereçamento

• Área da memória do processo onde o programa será executado e para dados utilizados por ele. • Deve ser protegido do espaço de endereçamento dos demais processos

A comutação rápida de programas em execução, visando uma melhor urilização da CPU, é chamada multiprogramação.

Diagrama de transição de estados

• Em sistemas Multitarefas o processo não é executado todo o tempo pelo processador • 3 tipos de estados:

o Execução (running) – O processo está sendo executado pela CPU. o Pronto (ready) – O processo está pronto e esperando para ser executado pela CPU. o Espera/Bloqueado (wait) – O processo está esperando algum evento externo ou por algum

recurso para poder prosseguir seu processamento. § Bloqueado – O processo está esperando por algum recurso do sistema que não se

encontra disponível.

Mudança de Estado do Processo

• Mudança de estado por eventos do próprio processo (eventos voluntários) ou causados pelo sistema operacional (eventos involuntários). Dividido em 4 mudanças:

o Pronto -> Execução = Quando um processo é criado, é colocado em uma lista de processos no estado pronto. Então é escolhido pelo sistema para ser executado.

Page 6: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 6 / 17

o Execução -> Espera = O processo passa para espera quando aguarda a conclusão de um evento solicitado.

o Espera -> Pronto = O processo passa para pronto quando a operação solicitada é atendida ou o recurso esperado é concedido.

o Execução -> Pronto = O processo passa de execução para pronto por eventos gerados pelo sistema.

Programa Versus Processo • O Processador é o órgão material onde é executada toda a actividade do sistema.

• Um Programa é um conjunto de instruções e estruturas de dados inerentes , armazenadas num

ficheiro.Em geral, um Programa requer apenas o recurso memória secundária .

• Um Processo é uma instância de um programa em execução. A execução de um programa, pode ser constituído por vários processos. Este pode ser visto como abstração de um programa como recursos alocados. Ao contrário do que aconte com um Programa, que é algo passivo, o processo é uma entidade activa.

Hierarquia de processo: subprocesso e Thread

Subprocesso

• Processos que são criados por um outro processo torna-se processo filho daquele processo parente,

designados por subprocesso e são criados de forma hierárquica. • Os processos podem ser organizados em hierarquias de processos (árvore de processos). • Quando um processo parente termina, a maioria dos sistemas operativos vão terminar todos os

subprocessos. • Alguns sistemas operativos criam processos filhos que se dissociam dos processos parentes, isto é, os

processos filhos continuam depois do processo parente terminar. • Cada processo e subprocesso possui seu ambiente e recursos alocados. • Permite dividir a aplicação para trabalhar de forma concorrente

À espera de um evento exterior para prosseguir (Exemplo: operações I/O

duro)

Page 7: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 7 / 17

Thread ou Linha de Controle

• No ambiente multi-thread cada processo pode responder a várias solicitações concorrentes ou mesmo simultaneamente, se houver mais de um processador.

• Threads compartilham o processador da mesma forma que um processo. • Cada Thread possui seu próprio conjunto de registradores, porém compartilha o mesmo espaço de

endereçamento com as demais threads do processo. • Uma Thread pode alterar os dados de outra Thread.

Interrupções

• Quando um dispositivo exterior fica pronto para servir um determinado processo, envia um sinal à CPU que se designa por interrupção.

• A interrupção faz com que o Sistema Operativo mude de estado do processo à espera, de estado Bloqueado ao estado Pronto.

Page 8: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 8 / 17

Implementação de um Processo

O Sistema Operativo mantém a tabela de informação do processo conhecido por Descritor de processo ou Bloco de Controle de Processo (PCB).

O PCB deve conter:

• PID ( Process Identifier ou Identificador de Processo); • Estado corrente do processo; • Apontador do processo parente/filho; • Prioridade de processo; • Apontador para localizar a memória do processo; • Estado de todos os dispositivos de I/O de que o processo está à espera.

Tipos de processos

• CPU-bound (Ligado à CPU) o O processo passa a maior parte do tempo no estado de execução. o Realiza poucas operações de I/O o Encontrado em aplicações que efectuam muitos cálculos.

• I/O-bound (Ligado à E/S) o O processo passa a maior parte do tempo no estado de espera o Encontrado em aplicações comerciais com bastante leitura, processamento e gravação. o Encontrado também em aplicações interactivas.

Processo A Processo B

Salva registradores do P.A.

Carrega registrador do P.B.

Salva Registrador do P.B.

Carrega Registrador do P.A.

executando

executando

executando

Page 9: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 9 / 17

Gestão de Processador (Escalonamento de processos)

• Compartilhamento da CPU em sistemas multiprogramáveis. • Critérios de escolha da ordem do processo a entrar em execução. • Scheduler (escalonador):

o Uma das principais funções do Sistema Operacional o Parte do código do Sistema Operacional responsável pelo scheduling (escalonamento). o

• Funções do escalonamento: o Manter a CPU ocupada a maior parte do tempo. o Balancear a utilização do processador entre diversos processos. o Maximizar o throughput do sistema o Oferecer tempos de respostas razoáveis para os usuários interactivos. o Evitar starvation.

Critérios de Escalonamento

• Utilização da CPU o Em geral, é desejável que o processador permaneça a maior parte do tempo ocupado

• Throughput o Número de processos executados em um determinado intervalo de tempo. o Em geral, a maximização do throughput é desejada.

• Tempo de turnaroud o Tempo que um processo leva desde sua admissão no sistema até seu término. o Considera tempo de espera para alocação de memória, espera na fila de processos prontos,

processamento e operações de entrada e saída. o Em geral, a minimização do tempo de turnaround é desejada.

• Tempo de resposta o Tempo decorrido do momento da submissão de um pedido ao sistema até a primeira resposta

produzida. o Em geral, a minimização do tempo de resposta é desejada.

Page 10: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 10 / 17

Critérios de Optimização

• Maximizar utilização da CPU; • Maximizar produtividade; • Minimizar o tempo de processamento; • Minimizar o tempo de espera; • Minimizar o tempo de resposta.

Tipos de escalonamento

Escalonamento Não-preemptivo

• Existente nos primeiros sistemas multiprogramáveis, onde predominava o processamento batch. • Quando um processo (JOB) ganha o direito de utilizar a CPU, nenhum outro processo pode lhe tirar

esse recurso.

Escalonamento Preemptivo

• O Sistema pode interromper um processo em execução para que outro processo utilize o processador. • Permite que o sistema dê atenção imediata a processos mais prioritários, como no caso de sistemas

em tempo real. • Proporciona melhores tempos de resposta em sistemas de tempo compartilhado • Compartilhamento do processador de uma maneira mais uniforme entre os processos. • A troca de um processo pelo outro na CPU (mudança de contexto), causado pela preempção, gera um

overhead no sistema. • Critérios de preempção devem ser definidos para o overhead não se tornar crítico.

Estratégia de alocação

Escalonamento First-In-First-Out (FIFO)

• O processo que chegar primeiro, é o primeiro a ser selecionado para a execução. • Necessário apenas uma fila de processos prontos, esperando pelo uso do processador. • O processo utiliza a CPU sem ser interrompido. • Problemas:

o Impossibilidade de prever quando um processo entrará em execução. o Possibilidade de processos CPU-bound de menor importância prejudicarem processos

de I/O-bound mais proprietários.

Escalonamento SJF(Shortest-Job-First )

• Associado com cada processo a duração da sua próxima fase de uso da CPU. Uso dessas durações para escalonar o processo com o menor tempo.

• O escalonamento SJF pode ser dividido em dois, nomeadamente:

Page 11: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 11 / 17

• Não-preemptivo – uma vez que a CPU é alocada para um processo ela não pode ser preemptada até completar sua fase de uso da CPU.

• Preemptivo – Se um novo processo chegar com fase de uso da CPU menor do que o tempo restante do processos correntemente em execução, preempta. Este esquema é conhecido como Menor Tempo Restante para Execução Primeiro (SRTF - Shortest-Remaining-Time-First).

Escalonamento Circular (Round Robin) ou preempção por tempo

• Implementado por um algoritmo semelhante ao FIFO, porém, quando um processo passa para o estado de execução, existe um tempo-limite (quantum ou time-slice) para sua utilização de forma contínua. Se o processo não terminou a execução, volta ao estado de pronto.

• Em geral, o valor do quantum de tempo está entre 100 e 300 ms. • Nenhum processo poderá monopolizar a CPU. • Algoritmo bastante adequado para sistemas multiusuários de tempo compartilhado. • No caso, o processo CPU-bound tem mais chances de ser executado do que o processo IO-bound.

Escalonamento por Prioridades ou preempção por prioridade

• Processos possuem diferentes prioridades de execução. • Processos de maior prioridade são escalonados preferencialmente. • Algoritmo Implementado mediante um clock, que interrompe o processador em determinados

intervalos de tempo, reavaliando prioridades e, possivelmente, escalonando outro processo. • Todos os sistemas de tempo compartilhado implementam algum tipo de prioridade, sendo esta uma

característica do contexto de software. • Prioridade estática:

o Não é modificada durante a existência do processo. o De simples de implementação. o Pode ocasionar tempos de resposta elevados.

• Prioridade dinâmcia: o Pode ser modificada durante a execução do processo. o O processo recebe um acréscimo à sua prioridade ao sair do estado de espera. o Processos I/O-bounds terão mais chances de serem escalonados, compensando o tempo que

passam no estado de espera. o Os processos CPU-bounds podem ser executados enquanto os processos CPU-bounds

esperam por algum evento. • O tempo de resposta compensa o maior overhead e complexidade algorítmica.

Exemplos de aplicação

Sejam dados os seguintes processos

Page 12: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 12 / 17

Processo Tempo de Rajada

P1 24

P2 3

P3 3

Suponha que os processos chegam na ordem: P1, P2, P3. O diagrama de Gantt para a alocação é:

• Tempo de espera para P1 = 0; P2 = 24; P3 = 27 • Tme= (0 + 24 + 27)/3 = 17

Suponha que os processos cheguem na ordem P2 , P3 , P1. O diagrama de Gantt para a alocação é:

• Tempo de espera para P1 = 6; P2 = 0; P3 = 3 • Tme= (6 + 0 + 3)/3 = 3 • Bem melhor que o caso anterior. • Efeito Comboio: processos curtos após processos longos

Comunicação e sincronização de processos

• Compartilhamento de recursos entre processos pode gerar situações indesejáveis • Mecanismos de sincronização – garantem a comunicação entre processos concorrentes e o acesso a

recursos compartilhados

Page 13: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 13 / 17

Problemas de Compartilhamento de Recursos

• Mecanismos de controle devem existir para evitar problemas • Exemplos:

o Actualização de arquivos compartilhados ao mesmo tempo o Cálculos com mesmas variáveis ao mesmo tempo.

Solução para os Problemas de Compartilhamento

• Exclusão Múltua (solução mais simples): impedir que dois ou mais processos acessem um mesmo recurso no mesmo instante, um deve esperar que o outro termine para utilizar.

• Região crítica: parte do código onde é feito o acesso ao recurso compartilhado. • Usualmente utiliza-se de um protocolo ao entrar em uma região crítica e ao sair dela.

Problemas de Sincronização

• Problemas introduzidos pela exclusão múltua. • Velocidade de Execução dos Processos:

o Processos com diferenças de velocidade ou maior tempo de processamento • Starvation:

o Situação em que um processo nunca consegue executar sua região crítica e acessar o recurso compartilhado.

o Ocorre quando dois ou mais processos esperam por um mesmo recurso alocado. Caso o sistema escolha o processo aleatoriamente quando o recurso é liberado, um processo pode nunca ser escolhido

o Quando um processo tem baixa prioridade também pode nunca ser escolhido. o Filas FIFO eliminam esse problema.

• Sincronização Condicional: o Quando um recurso não se encontra pronto para ser utilizado pelos processos, o processo deve

ser colocado no estado de espera, até a liberação do recurso. o Problema de processo produtor/consumidor: exemplo, quando um processo tenta gravar num

buffer e outro tenta ler. Um processo não poderia ler de um buffer cheio nem tentar ler de um buffer vazio.

Deadlock

• Um processo espera por um evento que nunca ocorrerá. • Conseqüência, em geral, do compartilhamento de recursos do sistema entre vários processos de forma

exclusiva. • Espera circular – quando, por exemplo, um processo A, utilizando um recurso P, necessita de um recurso

Q, alocado pelo processo B, para continuar o processamento e o processo B necessita do recurso P para continuar o processamento.

• Deadlocks ocorrem quando 4 condições são verdadeiras: 1. Exclusão mútua - Cada recurso só pode estar alocado a um único processo em um determinado

instante. 2. Um processo, além dos recursos já alocados, pode estar esperando por outros recursos. 3. Não-preempção – Um recurso não pode ser liberado de um processo só porque outros processos

desejam o mesmo recurso.

Page 14: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 14 / 17

4. Espera circular – Um processo pode Ter de esperar por um recurso alocado a outro processo e vice-versa.

Prevenção de Deadlock

• Garantir que uma das quatros condições nunca se satisfaçam • 1a condição:

o A ausência da exclusão múltua acaba com o problema. o Pode causar sérios problemas de consistência.

• 2a condição: o Alocar todos os recursos necessários para a execução, antes de se executar, caso não

disponíveis, fica em espera. o Pode ocorrer starvation, pois seus recursos podem nunca estarem libertados todos ao mesmo

tempo o Dificuldade de se determinar o número de recursos que um processo deverá alocar antes de sua

execução. o Algum recurso pode demorar a ser liberado.

• 3a condição: o Evitada quando permitimos que um recurso seja retirado de um processo, no caso de outro

processo necessitar do mesmo. o Pode perder o processamento feito até o momento. o Pode ocorrer starvation, quando o processo garante alguns recursos e o sistema os libera em

seguida. • 4a condição:

o Forçar ao processo ter apenas um recurso de cada vez, se precisar de outro recurso, deve liberar o primeiro.

Detecção do Deadlock

• Mecanismo que determina a existência de deadlock, permitindo identificar os recursos e processos envolvidos no sistema

• Existe uma estrutura de dados capaz de identificar cada recurso do sistema. • Geralmente os algoritmos verificam a existência de espera circular, percorrendo toda a estrutura quando

um processo solicita um recurso que não pode ser imediatamente garantindo.

Correcção do Deadlock

• Eliminar um ou mais processos envolvidos no deadlock e desalocar os recursos já garantidos por eles, eliminando a espera circular.

• A escolha dos processos é normalmente feita aleatoriamente ou com base em prioridades. • Pode gerar um elevado overhead ao sistema. • Rollback :

o liberação de apenas uns recursos alocados até o ciclo de espera terminar o o processo retorna seu processamento quando o recurso é devolvido. o difícil de ser implementado devido ser bastante dependente da aplicação.

Page 15: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 15 / 17

Questionário

1. O que é Processo e Modelo de Processo? 2. Descreva Contexto de Hardware, Contexto de Software e Espaço de Endereçamento. 3. Quais são os estados que os processos podem assumir e o que cada um significa? 4. O que é mudança de Estado do Processo e descreva essas mudanças. 5. Diferencie Subprocesso de Threads. 6. Cite e descreva os principais tipos de Processos. 7. O que são mecanismos de sincronização? 8. Cite um problema que o compartilhamento de recursos pode acarretar em relação à processos

concorrentes.

Page 16: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 16 / 17

9. Qual a solução para os problemas de compartilhamento e como funciona? 10. Cite e explique os problemas de sincronização. 11. Em relação aos problemas de sincronização, cite e explique resumidamente quais as soluções de

Hardware para resolver esse problema. 12. Em relação aos problemas de sincronização, cite e explique resumidamente quais as soluções de Software

para resolver esse problema. 13. O que é Deadlock e quais as condições para que ele aconteça? 14. Como detectar prevenir o Deadlock? 15. Como corrigir o Deadlock? 16. O que é Escalonamento de Processos e quais suas principais funções? 17. Cite e explique os critérios de escalonamento 18. Quais as diferenças entre o escalonamento preemptivo e o escalonamento não-preemptivo? Explique

resumidamente cada um deles. 19. Descreva resumidamente o escalonamento First-In-First-Out, o escalonamento Shortest-Job-First e o

escalonamento cooperativo, explicando os problemas de cada um. 20. Comente a seguinte a firmação:

``Num computador com apenas uma unidade de CPU, não podemos usufruir da multitarefa``

21. Considerando os processos abaixo bem como os tempos, e sendo utilizados os critérios de escalonamentos: SJF Preemptivo e FCFS, responda:

Processo Tempo uso da CPU (ms) Tempo de Chegada (ms)

P5 11 0

P4 12 4

P3 5 1

P2 3 2

P1 14 5

a) Ilustre a execução dos processos através de um diagrama de Gantt ( em níveis) para cada critério

de escalonamento (assuma q=7) b) Apresente o Tempo médio de espera (Tme) para cada tipo de escalonamento. c) Faça uma análise crítica dos resultados da alínea anterior. d) Avalie a qualidades dos critérios de escalonamento apresentado na alínea a).

Page 17: Ficha de apoio - Cap2. Kernel e gestão de processos · Ficha de Apoio de SO_Cap2. Pág. 1 / 17 SISTEMAS OPERATIVOS CAPÍTULO 2. KERNEL E GESTÃO DE PROCESSOS Conteúdo: 1. Funções

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Ficha de Apoio de SO_Cap2. Pág. 17 / 17

FONTES:

Arquitectura de Sistemas Operativos

Francis B. Machado

Ed. LTC

Sistemas Operativos: Conceitos e Aplicações

Abraham Silberschatz

Ed. Campus

Sistemas Operativos Modernos

A.S. Tanenbaum

Ed. Campus