Você está na página 1de 32

TRABALHO DE

SISTEMAS
OPERACIONAIS II
INTEGRANTES: LUCAS CALEB, ADOLFO, EDUARDO, CAIO,
SISTEMAS EMBARCADO

• Um sistema embarcado (Embedded System) é um sistema computacional, conjunto de hardware e


software, projetado para executar uma tarefa específica em um sistema maior. Eles são integrados
em outros produtos ou equipamentos, visando controlar ou monitorar uma determinada função, ou
processo. Esses sistemas são geralmente projetados para serem simples e de baixo custo, sendo
compostos por um conjunto limitado de componentes, como microcontroladores, sensores e
atuadores. Os sistemas embarcados são geralmente projetados para serem compactos, confiáveis e
eficientes em termos de energia. Eles também precisam ser capazes de lidar com restrições de
espaço e recursos, como memória e processamento limitados.
VANTAGENS
• A primeira vista pode parecer que a falta de complexidade do sistema seja uma desvantagem, mas não é. Afinal,
os dispositivos de qualidade contam com toda a configuração de que necessitam para operar de forma
eficiente.
• Na verdade, essa tecnologia oferece uma série de vantagens. Confira!
• Custos reduzidos
• Via de regra, os sistemas embarcados não precisam lidar com tantas tarefas quanto um computador convencional, e
seu tamanho é bastante reduzido graças a isso. Uma vez que eles não necessitam de grandes investimentos em
memória e poder computacional, o seu custo de produção é menor, o que acaba refletido no preço final do 
dispositivo em questão.
• Eficiência
• 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.
• Se levarmos em consideração que essa tecnologia é parte de equipamentos de grande relevância, como dispositivos
médicos e componentes do sistema de bordo de carros e aviões, é fácil entender a importância dessa eficiência.
VANTAGENS

• 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

• Os microcontroladores são pequenos dispositivos de computação usados em sistemas


embarcados para controlar e monitorar funções e processos
• Ex: Microcontroladores AVR: Os microcontroladores AVR são uma família de
microcontroladores criados pela empresa Atmel. Eles são populares por serem fáceis de
usar e programar, e por terem uma ampla gama de recursos e opções de desempenho.
Microcontroladores PIC: Os microcontroladores PIC são uma família de microcontroladores
criados pela empresa Microchip. Eles são populares por serem versáteis e oferecerem uma
ampla variedade de opções de desempenho e recursos. Microcontroladores ARM: Os
microcontroladores ARM são uma família de microcontroladores criados pela empresa ARM
Holdings. Eles são populares por serem potentes e eficientes em termos de energia, e são
amplamente utilizados em aplicações de baixo consumo de energia, como dispositivos
móveis e Internet das Coisas (IoT).
ESCALONAMENTO DE SISTEMAS EMBUTIDOS

• Tipos: Preempitivo Não-Preempitivo


ESCALONAMENTO DE SISTEMAS EMBUTIDOS

• 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

• Processos em sistemas embarcados. Os processos em sistemas operacionais embarcados também


podem ser diferentes em termos de como são iniciados e gerenciados. Por exemplo, alguns sistemas
operacionais embarcados usam uma abordagem de tarefa única, em que apenas um processo é
executado de cada vez. Outros sistemas operacionais podem usar uma abordagem multitarefa,
permitindo que vários processos sejam executados simultaneamente, mas com um gerenciamento
cuidadoso para evitar conflitos de recursos.
CRIAÇÃO

• A criação e finalização de processos em sistemas operacionais embarcados pode variar dependendo do


sistema operacional utilizado, mas existem algumas práticas comuns.Para criar um novo processo em
um sistema operacional embarcado, geralmente é necessário alocar espaço de memória para o
processo e inicializar seu contexto, incluindo o seu estado, o contador de programa, as pilhas de
execução, etc. Dependendo do sistema operacional, isso pode ser feito através de chamadas de
sistema ou funções de biblioteca específicas.Após a criação do processo, ele pode ser executado pelo
escalonador de processos do sistema operacional.
FINALIZAÇÃO

• Em sistemas operacionais embarcados com suporte a multitarefa, é importante garantir que a


finalização de um processo não afete a execução de outros processos em execução. Por isso, é
comum que o sistema operacional use mecanismos de sincronização, como semáforos, mutexes,
entre outros, para garantir que os recursos compartilhados sejam acessados de forma segura. Em
resumo, a criação e finalização de processos em sistemas operacionais embarcados envolve a
alocação de recursos específicos, a execução e gerenciamento dos processos, bem como a garantia
da segurança e integridade do sistema operacional e de outros processos em execução.
CONTROLES

• O controle de processos em sistemas operacionais embarcados é essencial para garantir a estabilidade e


o desempenho do sistema. Para isso, o sistema operacional embarcado deve ter mecanismos que
permitam o controle, monitoramento e gerenciamento dos processos em execução.
COMUNICAÇÃO

• 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

• A concorrência em sistemas embarcados é a capacidade de executar várias tarefas ou processos


simultaneamente em um sistema com recursos limitados. Em sistemas embarcados, a concorrência é
comum, uma vez que várias tarefas ou processos precisam ser executados ao mesmo tempo para
garantir um bom desempenho do sistema. No entanto, a concorrência pode levar a problemas de
sincronização e acesso concorrente a recursos compartilhados, como memória, periféricos e
dispositivos de entrada e saida. Esses problemas podem causar condições de corrida, deadlocks,
inanição (livelocks) e outros problemas relacionados à concorrência.
CONCORRÊNCIAS

• Para lidar com a concorrência em sistemas embarcados, é necessário implementar técnicas de


sincronização adequadas, como semáforos, mutexes, monitores, barreiras e sinais Essas técnicas
garantem que apenas um processo ou tarefa acesse um recurso compartilhado de cada vez e evita
problemas de sincronização. Além disso, a escolha do algoritmo de escalonamento de processos é
importante para garantir que os recursos do sistema sejam alocados de forma justa e eficiente entre
os processos concorrentes. O escalonador de processos é responsável por decidir qual processo ou
tarefa deve ser executado a qualquer momento, levando em consideração a prioridade do processo
e outros fatores relevantes.
CONCORRÊNCIAS

• Em resumo, a concorrência em sistemas embarcados é comum e importante para um bom desempenho


do sistema, mas requer técnicas de sincronização adequas de algoritmos de escalonamento de
processos eficientes para evitar problemas de sincronização e acesso concorrente a recursos
compartilhados.
PROBLEMAS DE CONCORRÊNCIAS

• Os problemas de concorrência são comuns em sistemas operacionais embarcados, onde há a execução


simultánea de múltiplos processos ou tarefas concorrentes. Alguns dos problemas mais comuns
incluem:
• 1. Condição de corrida (Race Condition): é um problema que ocorre quando vários processos ou tarefas
concorrentes tentam acessar e modificar um recurso compartilhado, como uma variável ou um
arquivo, ao mesmo tempo, Isso pode levar a resultados imprevisiveis e inesperados, já que não se
pode prever qual processo ou tarefa será executado primeiro.
• 2. Deadlock: é uma situação em que dois ou mais processos ou tarefas concorrentes ficam bloqueados
esperando um pelo outro, impedindo a execução de qualquer um deles. Isso pode ocorrer quando
cada processo ou tarefa espera que o outro libere um recurso compartilhado que ele precisa para
continuar a execução
PROBLEMAS DE 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

• O tratamento de interrupção é uma parte crítica do desenvolvimento de sistemas embarcados.


Interrupções ocorrem quando o processador é forçado a parar a execução normal do programa para
responder a uma solicitação de hardware externo. Por exemplo, um sistema embarcado pode
precisar interromper a execução do código principal para lidar com uma entrada de teclado, uma
leitura de sensor ou uma interrupção de temporizador. Existem várias maneiras de lidar com os
sistemas embarcados. Uma abordagem comum é usar um vetor de interrupção, que é uma tabela
que mapeia cada interrupção possível para uma rotina de tratamento específico. Quando ocorre
uma interrupção, o processador consulta o vetor de interrupção para determinar qual rotina de
tratamento deve ser executada.
TRATAMENTO

• 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

• Em sistemas embarcados, a prioridade de interrupção é fundamental para garantir o correto


funcionamento do sistema e evitar problemas de segurança. Uma interrupção é um sinal que o
sistema recebe de um dispositivo ou de uma operação em execução, que requer atenção imediata.
As mantidas podem ser classificadas de acordo com sua prioridade, geralmente de nível baixo a alto.
A prioridade de uma interrupção determina a ordem em que ela é atendida pelo sistema.
Interrupções de alta prioridade são atendidas antes das de baixa prioridade.
• Algumas contínuas, como as de timer e as de erro, geralmente têm prioridades mais altas, pois
precisam ser tratadas imediatamente. Outras contínuas, como as de entrada/saída, podem ter
prioridades mais baixas, pois podem esperar um pouco mais para serem atendidas. O desenvolvedor
do sistema embarcado deve estabelecer a prioridade de cada interrupção com base nas
necessidades do sistema e na frequência com que ocorrem. É importante também
THREADS

• 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.

Você também pode gostar