Sistemas em Tempo Real Módulo 2: Concorrência: Conceito de processos; estados de processos; algoritmos para escalonamento de processos; Regiões Críticas; Exclusão Mútua; Comunicação e sincronização de processos (semáforos, monitores, passagem de mensagens); Deadlocks. Jarbas Silveira
Definição de tarefa (processo, actividade) Conceito de processos Definição de tarefa (processo, actividade) Seqüência de ativações (instâncias ou jobs), cada uma composta por um conjunto de instruções que, na ausência de outras atividades, é executada pelo CPU sem interrupção. Jarbas Silveira
Quanto à periodicidade as tarefas podem ser Conceito de processos Quanto à periodicidade as tarefas podem ser Jarbas Silveira
Caracterização das Tarefas Conceito de processos Caracterização das Tarefas Jarbas Silveira
Conceito de processos Os requisitos das tarefas podem ser: • Temporais – limites temporais aos instantes de terminação ou de geração de determinados eventos de saída. • Precedência – estabelecem uma determinada ordem de execução entre tarefas. • Uso de recursos – necessidade de utilização de recursos partilhados (e.g. portos de comunicação, um buffer em memória partilhada, variáveis globais, periféricos do sistema). Pode implicar uso de operações atômicas (cuja seqüência não pode ser interrompida) Jarbas Silveira
Conceito de processos Preempção • Quando uma tarefa pode ser interrompida temporariamente para execução de outra mais prioritária, diz-se que admite preempção. • Quando um sistema utiliza a propriedade de preempção das tarefas que executa diz-se preemptivo. • Um conjunto de tarefas diz-se admitir preempção total quando todas as tarefas admitem preempção em qualquer ponto da sua execução (tarefas independentes) Nota: o acesso a recursos partilhados (tarefas com dependências) pode impor restrições sobre o grau de preempção que uma tarefa admite. Jarbas Silveira
Conceito de processos Jarbas Silveira
Conceito de processos Os requisitos temporais podem ser de vários tipos: • Deadline – Limitação ao tempo máximo para terminação da tarefa. • Janela – Delimitação máxima e mínima ao instante de terminação. • Sincronismo – Limitação à diferença temporal entre a geração de dois eventos de saídas (existem outras formas). • Distância – Limitação ao atraso (distância) entre a terminação, ou activação, de duas instâncias consecutivas (e.g., a mudança do óleo do motor num carro) Tipo deadline é o mais comum! Jarbas Silveira
Conceito de processos Jarbas Silveira
Conceito de processos Jarbas Silveira
Conceito de processos Jarbas Silveira
Conceito de processos Jarbas Silveira
Estados de Processos Criação de uma tarefa associação do código (e.g. C function) a um espaço de variáveis privado (private stack) e a uma estrutura de gestão (task control block – TCB); Execução de uma tarefa Execução concorrente do código da tarefa, usando o respectivo espaço privado de variáveis, sob controlo do kernel, com reactivação de cada instância periodicamente ou como resposta a um evento externo. Jarbas Silveira
Estados de Processos Jarbas Silveira
Estados de Processos Jarbas Silveira
Estados de Processos Jarbas Silveira
Estados de Processos Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos •Um escalonamento diz-se praticável (feasible schedule) se cumpre as restrições associadas ao conjunto de tarefas (temporais, não preempção, recursos partilhados, precedências) •Um conjunto de tarefas diz-se escalonável (schedulable task set) se existe pelo menos um escalonamento praticável para esse conjunto. Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos - Escalonamento de tarefas periódicas Jarbas Silveira
Escalonamento de processos - Escalonamento estático cíclico Jarbas Silveira
Escalonamento de processos Escalonamento estático cíclico A favor •Implementação simples (timer+tabela) •Overhead de execução muito baixo (dispatcher) •Permite optimização do escalonamento (e.g. controlo de jitter, relações de precedência) Contra •Pouco escalável (alterações nas tarefas podem causar grandes alterações na tabela, em particular podem levar a tabelas enormes!) •Pouco robusto a sobrecargas (sensível ao efeito dominó) Jarbas Silveira
Escalonamento de processos Escalonamento estático cíclico Construção da tabela •Calcular o micro-ciclo uC e o macro-ciclo MC •Expressar os períodos e fases iniciais em micro-ciclos •Determinar os ciclos onde as tarefas são ativadas •Utilizando um critério de escalonamento adequado, determinar a ordem de execução das tarefas ativas •Verificar se todas as tarefas ativas num micro-ciclo podem ser completamente executadas nele. Senão algumas terão que ficar para ciclos seguintes •Poderá ser necessário partir uma tarefa em várias partes de modo a cada uma poder ser executada dentro de um micro-ciclo. Jarbas Silveira
Escalonamento de processos Escalonamento preemptivo com prioridade fixa Todas tarefas têm uma prioridade fixa, que não é alterada a menos que a aplicação modifique-a. Uma tarefa com prioridade mais alta interrompe uma tarefa com prioridade inferior. A maioria dos sistemas operacionais Tempo Real suportam este esquema. Jarbas Silveira
Escalonamento de processos - Escalonamento on-line com prioridades fixas Jarbas Silveira
Escalonamento de processos - Escalonamento on-line com prioridades fixas Jarbas Silveira
Escalonamento de processos - Escalonamento on-line com prioridades fixas Jarbas Silveira
Escalonamento de processos - Escalonamento on-line com prioridades fixas Jarbas Silveira
Escalonamento de processos Escalonamento preemptivo com prioridade dinâmica Uma tarefa com prioridade mais alta interrompe uma tarefa com prioridade inferior. A prioridade de uma tarefa pode mudar de uma instância a outra ou durante a execução de uma instância para atender um objetivo específico de resposta temporal. Poucos sistemas operacionais comerciais de Tempo Real suportam esta política. Jarbas Silveira
Escalonamento de processos Escalonamento rate-monotonic Política de escalonamento preemptivo ótimo de prioridade fixa no qual quanto mais alta a freqüência de ativação de uma tarefa periódica, maior a prioridade. Assume que o deadline de uma tarefa periódica é igual ao seu período. Pode ser implementado em qualquer sistema operacional que suporta escalonamento preemptivo com prioridade fixa ou generalizado para tarefas aperiódicas. Jarbas Silveira
Escalonamento de processos Escalonamento RM – exemplo 1 Jarbas Silveira
Escalonamento de processos Escalonamento RM – exemplo 2 Jarbas Silveira
Escalonamento de processos Escalonamento RM – exemplo 3 Jarbas Silveira
Escalonamento de processos Escalonamento deadline-monotonic Generalização da política de escalonamento rate-monotonic, no qual o deadline de uma tarefa é um ponto fixo no tempo, relativo ao início do período. Quanto mais próximo este deadline (fixo) maior a prioridade. Quando o tempo do deadline iguala o período esta política é idêntica ao esquema de escalonamento ratemonotonic. Jarbas Silveira
Escalonamento de processos Jarbas Silveira
Escalonamento de processos Escalonamento earliest-deadline-first Política de escalonamento preemptivo com prioridade dinâmica. O deadline da instância de uma tarefa é o ponto absoluto no tempo no qual a instância tem que concluir. O deadline é computado quando a instância é criada. O escalonador escolhe a tarefa com o deadline mais próximo para executar primeiro. Uma tarefa com um deadline mais próximo interrompe uma tarefa com um deadline posterior. Esta política minimiza o atraso máximo de um conjunto de tarefas, em relação a todas as outras políticas de escalonamento. Jarbas Silveira
Escalonamento de processos Escalonamento least-laxity-first (least slack) Política de escalonamento não preemptivo com prioridade dinâmica. A folga ou relaxação da instância de uma tarefa é o deadline absoluto para conclusão menos o restante do pior caso do tempo de execução da instância da tarefa. O escalonador escolhe a tarefa com a menor relaxação para executar primeiro. Uma tarefa com um deadline mais próximo interrompe uma tarefa com um deadline posterior. Esta política maximiza o atraso mínimo de um conjunto de tarefas. Jarbas Silveira
Regiões Críticas Acesso exclusivo a recursos partilhados O acesso exclusivo a recursos partilhados A inversão de prioridades como conseqüência do bloqueio Técnicas básicas para acesso exclusivo a recursos partilhados Herança de prioridades (Priority Inheritance Protocol – PIP) Protocolo de tecto de prioridades (Priority Ceiling Protocol – PCP) - Protocolo de pilha de recursos (Stack Resource Protocol- SRP) Jarbas Silveira
Regiões Críticas Jarbas Silveira
Regiões Críticas O fenômeno da inversão de prioridades Jarbas Silveira
Regiões Críticas O fenômeno da inversão de prioridades Jarbas Silveira
Regiões Críticas Técnicas para acesso exclusivo a recursos Primitivas de sincronização • Inibição de interrupções (disable / enable ou cli / sti) • Inibição de preempção (no_preemp / preempt) • Utilização de locks ou flags atómicas (mutexes – se bem que este termo por vezes também é usado para designar semáforos – lock / unlock) • Utilização de semáforos (contador+lista – P / V ou wait / signal) Jarbas Silveira
Regiões Críticas Jarbas Silveira
Regiões Críticas Jarbas Silveira
Regiões Críticas Jarbas Silveira
Regiões Críticas Protocolo de Herança de Prioridades (PIP – Priority Inheritance Protocol) Jarbas Silveira
Regiões Críticas Protocolo de Herança de Prioridades (PIP – Priority Inheritance Protocol) Jarbas Silveira
Regiões Críticas Protocolo de Herança de Prioridades (PIP – Priority Inheritance Protocol) Jarbas Silveira
Regiões Críticas Protocolo de Teto de Prioridades (PCP – Priority Ceiling Protocol) Jarbas Silveira
Regiões Críticas Protocolo de Teto de Prioridades (PCP – Priority Ceiling Protocol) Jarbas Silveira
Regiões Críticas Protocolo de Teto de Prioridades (PCP – Priority Ceiling Protocol) Jarbas Silveira
Regiões Críticas Política de Pilha de Recursos (SRP – Stack Resource Policy) Jarbas Silveira
Regiões Críticas Política de Pilha de Recursos (SRP – Stack Resource Policy) Jarbas Silveira
Regiões Críticas Política de Pilha de Recursos (SRP – Stack Resource Policy) Jarbas Silveira
SCB (Semaphore Control Block) ID Semaphore Binário ou do tipo contador Exclusão Mútua -Semáforos São objetos de Kernel que uma ou mais threads podem adquirir ou liberar com o propósito de sincronização ou exclusão mútua. SCB (Semaphore Control Block) ID Semaphore Binário ou do tipo contador Jarbas Silveira
- Semáforo e sua estrutura de dados Exclusão Mútua - Semáforo e sua estrutura de dados Jarbas Silveira
Podem ter valor 0 (não disponível) ou 1(disponível); Exclusão Mútua Semáforos binários Podem ter valor 0 (não disponível) ou 1(disponível); São utilizados como recursos globais Jarbas Silveira
Semáforos do tipo contadores Exclusão Mútua Semáforos do tipo contadores Usa um contador para ser adquirido ou liberado múltiplas vezes; Semáforo é criado com 0 (não disponível) Quando adquirido contagem inicia; Uma ou mais tarefas podem adquirir fichas do semáforo; Algumas implementações permitem limitar o número de fichas. Jarbas Silveira
- Diagrama de estados de um semáforo contador Exclusão Mútua - Diagrama de estados de um semáforo contador Jarbas Silveira
Semáforos de Mútua Exclusão (Mutex) Exclusão Mútua Semáforos de Mútua Exclusão (Mutex) Um mutex é um semáforo binário especial que suporta um Proprietário, acesso recursivo e proteção segura de tarefas; Um proprietário de um mutex é assinalado quando o mesmo é travado na primeira vez que é adquirido; Jarbas Silveira
Semáforos de Mútua Exclusão (Mutex) Exclusão Mútua Semáforos de Mútua Exclusão (Mutex) Muitos Mutex implementam recursividade, permitindo que o proprietário deste mutex possa adquiri-lo múltiplas vezes; Jarbas Silveira
Semáforos de Mútua Exclusão (Mutex) Exclusão Mútua Semáforos de Mútua Exclusão (Mutex) Esta propriedade permite a proteção contra deleção da tarefa enquanto o semáforo encontra-se travado; Mudanda de prioridade: os protocolos PIP e CPP são utilizados em alguns semáforos; Jarbas Silveira
Aplicações típicas de semáforos Exclusão Mútua Aplicações típicas de semáforos Wait and Signal Syncronization: tem o propósito de coordenar ações entre 2 tarefas; Jarbas Silveira
Multiple-task Wait and Signal Synchronization Exclusão Mútua Multiple-task Wait and Signal Synchronization Quando uma ou mais tarefas esperam por um tarefa para iniciarem suas execuções; Jarbas Silveira
Credit-Tracking Synchronization Exclusão Mútua Credit-Tracking Synchronization Quando a taxa de produção e consumo são diferentes, podemos utilizar semáforos contadores para sincronizar estas tarefas; Jarbas Silveira
Acesso exclusivo a uma região compartilhada Exclusão Mútua Acesso exclusivo a uma região compartilhada Um dos usos mais comuns de semáforos; Um semáforo binário controla o acesso a região compartilhada; Jarbas Silveira
Exclusão Mútua Acesso exclusivo recursivo a uma região compartilhada Necessário quando uma tarefa deseja acessar uma região crítica e uma das tarefas desta atividade também necessita acessar esta mesma região crítica; Jarbas Silveira
Exclusão Mútua Sincronização de múltiplas recursos compartilhados Nesta situação, onde múltiplos recursos precisam ser compartilhados é recomendado o uso de um semáforo do tipo contador; Jarbas Silveira
Sincronização de Processos Mensagens entre processos - Um fila de mensagens é um buffer onde processos podem transmitir e receber mensagens. Jarbas Silveira
Estados de Fila de Mensagens Comunicação e sincronização de processos Estados de Fila de Mensagens Jarbas Silveira 80
Comunicação e sincronização de processos - Algumas implementações de Kernel permitem mover blocos de mensagens para listas de espera em memória; Jarbas Silveira
Armazenamento de Filas de Mensagens Comunicação e sincronização de processos Armazenamento de Filas de Mensagens Systems Pools: Área única de memória Private Buffers: Áreas separadas de memória Jarbas Silveira
Operações típicas de Filas de mensagens (TX) Comunicação e sincronização de processos Operações típicas de Filas de mensagens (TX) First-in, First-out (FIFO) Jarbas Silveira
Operações típicas de Filas de mensagens (TX) Comunicação e sincronização de processos Operações típicas de Filas de mensagens (TX) First-in, First-out (LIFO) Jarbas Silveira
Operações típicas de Filas de mensagens (RX) Comunicação e sincronização de processos Operações típicas de Filas de mensagens (RX) Recepção de mensagens com prioridade Jarbas Silveira
Uso típico de fila de mensagens Comunicação e sincronização de processos Uso típico de fila de mensagens Sem inter-travamento, em um sentido de comunicação Jarbas Silveira
Uso típico de fila de mensagens Comunicação e sincronização de processos Uso típico de fila de mensagens Com inter-travamento, em um sentido de comunicação Jarbas Silveira 87
Uso típico de fila de mensagens Comunicação e sincronização de processos Uso típico de fila de mensagens Sem inter-travamento, em duplo sentido de comunicação Jarbas Silveira
Uso típico de fila de mensagens Comunicação em broadcast Comunicação e sincronização de processos Uso típico de fila de mensagens Comunicação em broadcast Jarbas Silveira
- Outros objetos de Kernel: PIPES - Não estruturados Comunicação e sincronização de processos - Outros objetos de Kernel: PIPES - Não estruturados - Não permite prioridade - Stream de bytes Jarbas Silveira
Outros objetos de Kernel: PIPES - Pipe Control Blocks Comunicação e sincronização de processos Outros objetos de Kernel: PIPES - Pipe Control Blocks Jarbas Silveira
Outros objetos de Kernel: PIPES - Estados de um PIPE Comunicação e sincronização de processos Outros objetos de Kernel: PIPES - Estados de um PIPE Jarbas Silveira
Uso típico de PIPES: Comunicação e sincronização de processos Jarbas Silveira
Outros objetos de Kernel: Registradores de Eventos Comunicação e sincronização de processos Outros objetos de Kernel: Registradores de Eventos Jarbas Silveira
Uso típico de registradores de eventos: Comunicação e sincronização de processos Uso típico de registradores de eventos: Sincronização unidirecional de tarefas Jarbas Silveira
Comunicação e sincronização de processos Signals: São interrupções de software que são gerados quando um determinado evento ocorre. Jarbas Silveira
- Uso típico de Sinais: capturador de eventos Comunicação e sincronização de processos - Uso típico de Sinais: capturador de eventos Jarbas Silveira
Deadlocks Jarbas Silveira
Deadlocks Jarbas Silveira 99
Deadlocks Jarbas Silveira 100
Deadlocks Jarbas Silveira 101
Deadlocks Jarbas Silveira 102
Deadlocks Jarbas Silveira 103
Deadlocks Jarbas Silveira 104