Resumo Sistemas Operativos
Por: Ednelso245 • 19/10/2018 • 2.680 Palavras (11 Páginas) • 467 Visualizações
...
- Uma thread é um fluxo de atividade que é executada no âmbito de um processo
- Thread ID é um contador do programa, o seu conjunto de registos e uma pilha (stack)
- Um processo pode ter apenas uma linha de execução (single threaded process) ou ter várias linhas de execução (multithreaded process)
Single thread vs Multithread
[pic 16]
Motivação:
Em muitos casos existem várias tarefas a serem realizadas quase ao mesmo tempo, ou seja, concorrentemente. Se uma tarefa bloqueia, as outras podem aproveitar o tempo de CPU do processo.
Por exemplo: quando um browser está a ser executado, podemos ter uma thread que está a carregar as imagens, outra que está a aceitar uma stream da rede e outra que está associada À entrada de dados do teclado.
Diferenças em relação aos processos:
A criação de uma thread é mais leve que a de um processo, a nova thread partilha o espaço de endereços, dados, recursos do processo onde foi criada. Trocar a execução entre threads também é significativamente mais rápida e mais eficiente do que trocar entre processos.
- Vantagens:
- Tempo de resposta: a aplicação continua a funcionar mesmo que uma das threads esteja bloqueada
- Partilha de recursos
- Economia: alocação de memória e recursos a um novo processo é custoso e moroso. Troca de contexto de processos também o é.
- Escalabilidade em arquiteturas multiprocessador: várias threads podem ser executadas em paralelo por vários CPU’s
- Desvantagens/Dificuldades
- Como planear/implementar a divisão de tarefas em atividades
- Equilíbrio da divisão de trabalhos pelas várias tarefas
- Necessidade se sincronização
- Testes e debugging
Modelos de multithreading:
O suporte para threads pode ser providenciado ao nível do utilizador ou ao nível do kernel (a maior parte dos SO’s suporta threads no seu kernel)
[pic 17]
[pic 18]
[pic 19]
[pic 20]
Implementação: Bibliotecas de Threads
As três bibliotecas mais usadas:
- POSIX Pthreads
- WIN32
- Java Threads
Problemas das Threads:
[pic 21]
[pic 22]
[pic 23]
[pic 24]
[pic 25]
Escalanador- “Scheduler”
Escalonamento (Um único CPU):
- É a base dos SO’s que suportam multi-programação
- Quando existem 2 ou mais processos no estado Executável, deve existir uma decisão que vai decidir qual se vai executar a seguir
- Quem vai decidir é o Escalanador
- O que coloca um novo processo na CPU é o dispatcher
- Objetivo: manter o CPU ocupado durante o maior tempo possível, obtendo a maximização da utilização do CPU
Maximização do CPU:
- Um processo está em execução até executar uma operação de E/S
- Dado que esta operação é demorada e deixa o CPU parado, o SO tira este processo do CPU
- O SO dá o CPU a outro processo à espera para ser executado
Escalanador (Scheduler):
- Responsável pela implementação do algoritmo de scheduling, que irá determinar qual o próximo processo a ser executado
- Coloca o próximo processo a ser executado no topo desta lista
- Esta lista é mantida em memória principal
- O Escalanador, após selecionar o processo, aloca CPU para esse processo
- Em geral, cada elemento dessa lista aponta para o Bloco de Controlo do Processo
Dispatcher:
- Responsável pela colocação efetiva de um processo no CPU
- Após a seleção do processo e alocação do CPU pelo Escalanador, o dispatcher dá o controlo do CPU ao processo
- O dispatcher deve ser rápido e eficiente
- Este processo chama-se latência do dispatcher
CPU bound: Processo com poucas rajadas de CPU mas longas
IO bound: Processos com muitas rajadas de CPU mas curtas
Tomada de decisão do escalonador:
- Um processo é criado
- Um processo passa de Em Execução para Espera/Bloqueado
- Um processo passa de Em Execução para Executável
- Um processo passa de Espera/Bloqueado para Executável
- Quando o processo termina
Preempção/Não Preempção:
Os algoritmos de escalonamento podem ser divididos em:
- Não preemptivos- depois de decidido qual o processo a ser executado, deixa-o em execução até que ocorra um bloqueio, ou que este liberte o CPU para si. Neste caso não existem decisões de Escalanador durante este período.
- Preemptivos- após escolha do próximo processo, é-lhe atribuído
...