0% acharam este documento útil (0 voto)
20 visualizações24 páginas

Aula 02 - Revisitando Sistemas Operacionais

Enviado por

Kadu Lima
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
20 visualizações24 páginas

Aula 02 - Revisitando Sistemas Operacionais

Enviado por

Kadu Lima
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Computação Paralela e

Concorrente
Prof. Carlos Duarte
Agenda
● Revisitando Sistemas Operacionais
○ Processos
● Threads
Processo
Um processo é uma instância de um programa em execução
a CPU muda de um processo para outro rapidamente, executando cada um por
uma determinada unidade de tempo
Processo
Todos os softwares executáveis no computador, às vezes incluindo o
sistema operacional, são organizados em uma série de processos
sequenciais
Processo

Os processos possuem estados


e, a mudança do estado
representa a sua troca de
contexto diante do processador
Threads
Nos sistemas operacionais tradicionais, cada processo tem um espaço de
endereçamento e um único thread de controle (linha de execução)

Contudo, em muitas situações, é desejável ter múltiplas threads


Threads
Um conjunto de threads são as linhas de execuções daquele processo

As threads compartilham o mesmo espaço de memória


Existem vantagens em utilizar threads?
● Há a possibilidade de executar múltiplas atividades ao mesmo tempo
● É possível criar paralelismo
● São mais rápidas para criar e destruir
● Executa MUITO mais rápido que um processo
(podendo chegar na casa da centena)
● Úteis para sistemas com múltiplos cores
Exemplo clássico
Threads
Mas não seria melhor termos processos diferentes?

Processo vs
Thread
E qual a desvantagem/problema?
● As threads vão interagir sobre o mesmo espaço de memória, ou até
mesmo sob as mesmas variáveis

● CONCORRÊNCIA e SINCRONIZAÇÃO

Ex:
○ x = 3+10
○ y = x + 10
Tipos de Threads
● Modo usuário
● Modo kernel
● Modo Híbrido
Tipos de Threads - Modo usuário
● Implementada por meio de bibliotecas ou frameworks
● O kernel e o escalonador entendem como um processo
Tipos de Threads - Modo usuário
● O escalonamento vai seguir a perspectiva de visualização do kernel
● Ex: A1,A2,A3
● OBS: É possível alternar entre os processos
e não entre as threads
Tipos de Threads - Modo Núcleo
● Criação, escalonamento e gerenciamento são realizados pelo próprio
kernel
● As mudanças de threads ocorrem por round-robin ou prioridade (em sua
maioria)
● Melhor uso do real paralelismo
Tipos de Threads - Modo Híbrido
● Seguem o modelo N para M
○ N threads de usuário são mapeadas em M threads de núcleo, de modo M<= N threads
Usuário vs Kernel
● Threads de nível de usuário
○ O sistema operacional não tem conhecimento dessas threads.
○ Gerenciadas por: Biblioteca de threads no espaço do usuário.
○ Exemplo: Uma pessoa programadora que usa uma biblioteca de threads em seu
programa cria threads de nível de usuário.
● Threads de nível de kernel
○ Criadas por: Sistema operacional (kernel).
○ Gerenciadas por: Sistema operacional.
○ Exemplo: Quando um novo processo é iniciado em um sistema operacional, o kernel cria
uma thread de nível de kernel para gerenciar a execução desse processo.
Usuário vs Kernel - Exemplos
● Threads de nível de usuário
○ Jogos: Em um jogo, threads de nível de usuário podem ser usadas para executar tarefas
concorrentes como renderização gráfica, processamento de física e inteligência artificial.
Cada tarefa teria sua própria thread, permitindo que o jogo seja mais responsivo e fluido.

○ Aplicações comInterfaces gráficas complexas podem usar threads de nível de usuário


para executar tarefas em segundo plano, como carregar imagens ou processar dados,
sem travar a interface principal. Por exemplo, um editor de texto pode usar uma thread
separada para verificar a ortografia do texto enquanto o usuário digita, evitando que a
interface fique lenta. Vantagem: Maior responsividade da interface, evitando que a tela
trave durante operações longas em segundo plano.
Usuário vs Kernel - Exemplos
● Threads de nível de kernel
○ Banco de dados: Servidores de banco de dados utilizam threads de kernel para lidar com
múltiplas requisições de clientes simultaneamente, realizar operações de leitura e escrita
em disco e gerenciar o acesso concorrente aos dados.
○ Sistemas Operacionais: O próprio sistema operacional utiliza threads de kernel para
gerenciar processos, lidar com interrupções de hardware e executar tarefas do sistema.
Por exemplo, um sistema operacional pode ter uma thread dedicada ao gerenciamento
de memória, outra para o sistema de arquivos e outra para a interface de rede.
Usuário vs Kernel - E como implementa?
● Para utilizar threads de kernel, geralmente utiliza-se bibliotecas ou APIs
fornecidas pelo sistema operacional ou por linguagens de programação
que abstraem esses detalhes.

● Java: A classe Thread e a interface Runnable


● C# (.NET): A classe Thread
● Python: threading + multiprocessing
● C: POSIX Threads (pthreads)
Alguma Dúvida??
Próximo aula:

● Conceitos básicos de computação paralela e concorrente


● Benefícios e desafios da computação paralela e concorrente
● Exemplos de aplicação em computação paralela e concorrente.
Obrigado!

Contato:

[email protected]

Você também pode gostar