Essays.club - TCC, Modelos de monografias, Trabalhos de universidades, Ensaios, Bibliografias
Pesquisar

Resumo Sistemas Operativos

Por:   •  19/10/2018  •  2.680 Palavras (11 Páginas)  •  466 Visualizações

Página 1 de 11

...

- 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

...

Baixar como  txt (19.2 Kb)   pdf (71.6 Kb)   docx (26.2 Kb)  
Continuar por mais 10 páginas »
Disponível apenas no Essays.club