Escolar Documentos
Profissional Documentos
Cultura Documentos
SISTEMAS
OPERACIONAIS II
INTEGRANTES: LUCAS CALEB, ADOLFO, EDUARDO, CAIO,
SISTEMAS EMBARCADO
• Facilidade de programação
• Por fim, uma vez que as atividades a serem desempenhadas pelo sistema
costumam ser mais simples, desenvolver seu código tende a ser uma tarefa
rápida. Além disso, a maioria dos dispositivos que fazem uso de sistemas
embarcados, geralmente, não demanda manutenções quanto à programação.
DESVANTAGEM
• Mesmo operando com um poder computacional muito menor, sistemas embarcados costumam realizar
apenas um conjunto restrito de tarefas. Graças a tal característica, ele precisa lidar com um número
muito reduzido de processos, o que diminui drasticamente as chances de que ele apresente erros ou
falhas durante sua operação.
MICROCONTROLADORES
• Existe duas preocupações especificas Manter os prazos de tempo de resposta Previsibilidade Garantir
que respostas sejam entregues de maneira ordenada e correta em tempo.
• RTOS para embarcados ONX-> Se aprofundar Linux
• –NetBSD Direcionado a plataformas ARM = X86 (ARM- processador como os convencionais,
desenvolvido para Algoritmo de escalonamento é definido por thread, não globalmente Múltiplos
Algoritmos de Escalonamento: FIFO Round Robin Sporadic Adaptative Partitioning Scheduler
•
ESCALONAMENTO DE SISTEMAS EMBUTIDOS
• FIFO (First in First Out) Comum em sistemas batch Executa o processo “até o fim” antes de passar o
processador a outro processo Eu processo fica de posse da CPU até que: Termine sus execução e
libere espontaneamente
• FIFO Round Robin Sporadic Adaptative Partitioning Scheduler
MÚLTIPLOS ALGORITMOS DE
ESCALONAMENTO:
• FIFO (First in First Out) Comum em sistemas batch Executa o processo “ate o fi” antes de passar o
processador a outro processo Um processo fica de posse da CPU até que: Termine sua execução e
libere espontaneamente
• Fique Bloqueado Um processo de maior prioridade esteja pronto
MÚLTIPLOS ALGORITMOS DE
ESCALONAMENTO:
Round Robin Um processo fica de posse do processador até que: Apresenta as mesmas condições do
algoritmo FIFO, adicionando apenas um novo: Expire o seu tempo de execução (quantum) Sporadic Possui
dois niveis de prioridade: Normal e Baixo Toda thread é iniciada com um saldo, diminuindo o saldo a
medida que o thread é executado Caso a Thread zere o saldo, a prioridade será reduzida . Saldo pode ser
redefinido depois de um tempo configuravel Adaptative Partitioning Scheduler Processo rodam dentro de
partições, garantindo uma porcentagem da CPU para cada partição . Prioridade é relacionada aos
processos de cada partição, Sobrepondo a prioridade caso o processo seja critico
PROCESSOS
• A comunicação entre processos em sistemas operacionais embarcados é uma técnica utilizada para
permitir que processos ou aplicativos distintos possam compartilhar informações e recursos, mesmo
que estejam sendo executados em diferentes partes do sistema.
• Essas técnicas podem ser implementadas por meio de bibliotecas e APIs específicas do sistema
operacional embarcado utilizado. É importante escolher a técnica de comunicação mais adequada
para o tipo de aplicação que está sendo desenvolvida, levando em consideração fatores como
eficiência, segurança e facilidade de implementação.
CONCORRÊNCIAS
• 3. Starvation: é uma situação em que um processo ou tarefa concorrente fica impedido de acessar um
recurso compartilhado por um período prolongado de tempo, devido à prioridade de execução
concedida a outros processos ou tarefas
• 4. Inanição (Livelock): é uma situação semelhante ao deadlock, em que os processos ou tarefas
concorrentes continuam a executar e a se comunicar entre si, mas não conseguem fazer progresso
em relação ao seu objetivo origina
• 5. Problemas de prioridade: quando processos ou tarefas concorrentes têm prioridades diferentes, pode
haver problemas de escalonamento, onde processos de baixa prioridade podem ser
permanentemente adiados devido à prioridade concedida a outros processos de maior prioridade.
PROBLEMAS DE CONCORRÊNCIAS
• Para mitigar esses problemas, os sistemas operacionais embarcados utilizam técnicas de sincronização,
como semáforos, mutexes e monitores, para gerenciar o acesso concorrente a recursos
compartilhados. Além disso, é importante projetar e implementar algoritmos de escalonamento de
processos que levem em consideração a prioridade dos processos e garantam um desempenho justo
e equilibrado para todos os processos concorrentes
TÉCNICAS DE SINCRONIZAÇÃO
• Existem várias técnicas de sincronização em sistemas operacionais embarcados, que são utilizadas para gerenciar o acesso
concorrente a recursos compartilhados, como memória, dispositivos de entrada e saída, entre outros. Algumas das
técnicas mais comuns são:
• 1. Semáforos: são variáveis que são utilizadas para controlar o acesso a recursos compartilhados. Eles são utilizados para
bloquear o acesso a um recurso quando ele já está sendo utilizado por outro processo, e liberar o acesso quando o
processo que está utilizando o recurso terminar. 2. Mutexes: são objetos que garantem que apenas um processo possa
acessar um recurso compartilhado por vez. Eles são utilizados para evitar condições de corrida e garantir que um processo
tenha acesso exclusivo a um recurso, 3. Monitores: são estruturas de dados que encapsulam um conjunto de variáveis e
procedimentos que são compartilhados por processos. Os processos acessam o monitor de forma exclusiva e podem
interagir com as variáveis e procedimentos compartilhados.
• 4. Barreiras: são pontos de sincronização que são utilizados para garantir que todos os processos de um grupo alcancem um
determinado ponto antes de continuar a execução.
• 5. Sinais: são eventos que são utilizados para notificar um processo de que um evento ocorreu. Eles são úteis para permitir
que os processos se comuniquem entre si e coordenem suas atividades,
EXCEÇÕES
• Exceções e interrupções são parte da maioria dos processadores embarcados que permitem a
interrupção do ciclo normal de execução de instruções.
• Muitos RTOSs possuem funções para o tratamento de baixo nivel das interrupções de forma a abstrair o
progamador dessa tarefa
• Essa abstração pode se tornar maléfica para o desenvolvedor de aplicações se tornar um progamador
de sistemas embarcados.
• Enteder o hardware do processador auxilia na criação de aplicações que consigam otimizar o uso desse
poderoso recurso
• Uma exceção e um evento que desvia o fluxo normal de execução do processador e o forç a executar
um conjuto especial de intrução
•
INTERRUPÇÃO
• Interrupções, geralmente chamadas de interrupções externas. São exceções assícronas geradas por um
evento de um hardware externo á CPU.
• Dessa forma, a nomenclatura utilizada será:
• Exceção para exceções síncronas
• Interrupção para exceções assincronas
• Exceções e interrupções são um mal necessário que existem na maioria dos processadores embarcados
• Se utilizada de forma incorreta pode se tornar uma fonte de problemas no projeto
• Porém, apesar dessas dificuldades e restrições, as exceçõses e interrupções são quase que
indispensáveis em aplicações em aplicações embarcadas.
APLICAÇÕES
• Permitem que periférico de hardware, seja interno ou externo ao processador, ganhe a atenção da CPU.
• São uma maneira de comunicação entre o hardware e a aplicação que está em execução
• Geralmente são uteis em 3 casos:
• Gerenciamento de erros interno e condições especiais;
• Concorrência de Hardware;
• Gerenciamento de requisição de serviçoes;
TIPOS DE INTRODUÇÃO
• Interrupções de hardware: essas contínuas são geradas por dispositivos de hardware, como temporizadores,
sensores, portas de entrada/saída, etc. Quando um evento ocorre em um dispositivo de hardware, ele gera
um sinal que é enviado para o processador, que interrompe o programa atual em execução e executa uma
rotina de tratamento de interrupção (ISR) associada ao evento. Interrupções de software: essas sequências
são geradas por instruções de software, como chamadas de sistema ou recebidas de processamento de dados
inválidos. Quando uma instrução de software gera uma interrupção, o processador interrompe o programa
atual e executa um ISR correspondente. Interrupções externas: essas contínuas são geradas por eventos
externos ao sistema, como sinais de rádio, contínuas de rede, contínuas de teclado, etc. Essas contínuas
podem ser tratadas por meio de hardware ou software, dependendo da natureza do evento. Interrupções de
temporização: essas contínuas são geradas por temporizadores de hardware que interrompem
periodicamente o programa em execução. Essas permanências são freqüentemente usadas para sincronizar
operações em tempo real ou para gerenciar o agendamento de tarefas. Interrupções de erros: esses contínuos
são gerados quando ocorrem erros de hardware ou software, como violação de acesso à memória, erros de
barramento, erros de paridade, etc. reinicializações do sistema.
TRAMENTO
• Em geral, o tratamento de interrupção em sistemas embarcados é uma tarefa complexa que exige uma
compreensão profunda do hardware e software subjacentes. É importante projetar cuidadosamente
o tratamento de interrupção para garantir que ele seja rápido, eficiente e confiável
PRIORIDADES
• RT-Thread possui 3 versões: Standard, Nano e Smart. Em outubro de 2020, o RT-Thread Smart foi
lançado, voltado principalmente para processadores de médio a alto desempenho com MMU
(Memory Management Unit), fornecendo uma plataforma de software baseada em sistema
operacional mais competitiva para diferentes setores. Vamos dar uma olhada na arquitetura RT-
Thread Smart para mais detalhes sobre ele.
THREADS
• No entanto, nos primeiros anos, o projeto RT-Thread entrou em um período difícil, pois era difícil
chamar a atenção porque era apenas um kernel RTOS, apenas o fundador e alguns desenvolvedores
da comunidade estavam segurando e trabalhando na portabilidade da plataforma e atualizando a
funcionalidade. RT-Thread é escrito principalmente na linguagem C, é fácil de entender e tem grande
portabilidade que suporta a rápida portabilidade para uma variedade de MCUs e chips de módulo
convencionais. RT-Thread aplica o método de design orientado a objetos para o sistema em tempo
real, o que ajuda a construir o código elegante, arquitetura clara, sistema altamente modularizado,
bem como fácil de customizar.