sistemas operacionais - university of são paulo
TRANSCRIPT
![Page 1: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/1.jpg)
Sistemas Operacionais
Prof. Jó Ueyama
Apresentação baseada nos slides da Profa. Dra. Kalinka Castelo Branco,do Prof. Dr. Antônio Carlos Sementille e da Profa. Dra. Luciana A. F. Martimiano e nas transparências fornecidas no site de compra do livro “Sistemas Operacionais Modernos”
![Page 2: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/2.jpg)
2
--------------------------------------------
Exemplo de Criação de Processo em C no Linux
--------------------------------------------
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int pid;
pid = fork();
/* Ocorreu um erro */
if (pid < 0) {
fprintf( stderr, "Erro ao criar processo" );
}
/* Processo filho */
else if (pid == 0) {
execlp ("/bin/ls", "ls", NULL);
}
/* Processo pai */
else if (pid > 0) {
wait (NULL);
printf ("Sou o processo Pai.\n");
}
}
![Page 3: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/3.jpg)
3
Aula de Hoje (conteúdo detalhado)1. Escalonamento em Batch2. Algoritmos de Escalonamento em Sistemas Batch3. Algoritmos de Escalonamento em Sistemas Interativos
![Page 4: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/4.jpg)
4
Escalonamento de Processos Sistemas em Batch Escalonamento Three-Level
RAM
Escalonador da CPU *
DiscoFila de entrada
Novo jobEscalonadorDa Memória
Escalonadorde Admissão
CPU
![Page 5: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/5.jpg)
5
Escalonamento de Processos Sistemas em Batch
Escalonamento Three-Level Escalonador de admissão: processos menores primeiro;
processos com menor tempo de acesso à CPU e maior tempo de interação com dispositivos de E/S;
Escalonador da Memória: decisões sobre quais processos vão para a MP:
A quanto tempo o processo está esperando? Quanto tempo da CPU o processo já utilizou? Qual o tamanho do processo? Qual a importância do processo?
Escalonador da CPU: seleciona qual o próximo processo a ser executado;
![Page 6: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/6.jpg)
6
Aula de Hoje (conteúdo detalhado)1. Escalonamento em Batch2. Algoritmos de Escalonamento em Sistemas Batch3. Algoritmos de Escalonamento em Sistemas Interativos
![Page 7: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/7.jpg)
7
Escalonamento de ProcessosSistemas em Batch Algoritmos para Sistemas em Batch:
First-Come First-Served (ou FIFO);Shortest Job First (SJF);Shortest Remaining Time Next (SRTN);
![Page 8: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/8.jpg)
8
Escalonamento de ProcessosSistemas em Batch Algoritmo First-Come First-Served
Não-preemptivo;Processos são executados na CPU seguindo a
ordem de requisição;Fácil de entender e programar;Desvantagem:
Ineficiente quando se tem processos que demoram na sua execução;
![Page 9: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/9.jpg)
9
Escalonamento de ProcessosSistemas em Batch Algoritmo First-Come First-Served
Interrupção qualquer(semáforo, E/S)
CPU
0Fila de entrada
23 1
![Page 10: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/10.jpg)
10
Escalonamento de ProcessosSistemas em Batch Algoritmo First-Come First-Served
CPU não controla o tempo dos processos!(não-preemptivo)
CPU
1Fila de entrada
30 2
![Page 11: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/11.jpg)
11
Escalonamento de Processos Sistemas em Batch Algoritmo Shortest Job First
Não-preemptivo;Possível prever o tempo de execução do processo;Menor processo é executado primeiro;Menor turnaround;Desvantagem:
Baixo aproveitamento quando se tem poucos processos prontos para serem executados;
![Page 12: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/12.jpg)
12
Escalonamento de Processos Sistemas em Batch Algoritmo Shortest Job FirstA aB b+aC c+b+aD d+c+b+a__________________________________Tempo médio-turnaround (4a+3b+2c+d)/4
Contribuição se a<b<c<d tem-se o mínimo tempo médio;
![Page 13: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/13.jpg)
13
Escalonamento de Processos Sistemas em Batch Algoritmo Shortest Job First
A B C D8 44 4
Em ordem:Turnaround A = 8Turnaround B = 12Turnaround C = 16Turnaround D = 20Média 56/4 = 14
B C D A4 44 8
Menor job primeiro:Turnaround B = 4Turnaround C = 8Turnaround D = 12Turnaround A = 20Média 44/4 = 11
(4a+3b+2c+d)/4 Número deProcessos
![Page 14: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/14.jpg)
14
Escalonamento de Processos Sistemas em Batch Algoritmo Shortest Remaining Time Next
Preemptivo; Processos com menor tempo de execução são
executados primeiro; Se um processo novo chega e seu tempo de
execução é menor do que do processo corrente na CPU, a CPU suspende o processo corrente e executa o processo que acabou de chegar;
Desvantagem: processos que consomem mais tempo podem demorar muito para serem finalizados se muitos processos pequenos chegarem!
![Page 15: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/15.jpg)
15
Aula de Hoje (conteúdo detalhado)1. Escalonamento em Batch2. Algoritmos de Escalonamento em Sistemas Batch3. Algoritmos de Escalonamento em Sistemas Interativos
![Page 16: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/16.jpg)
16
Escalonamento de ProcessosSistemas Interativos Algoritmos para Sistemas Interativos:
Round-Robin; Prioridade; Múltiplas Filas; Shortest Process Next; Garantido; Lottery; Fair-Share;
Utilizam escalonamento em dois níveis (escalonador da CPU e memória);
![Page 17: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/17.jpg)
17
Escalonamento de ProcessosSistemas Interativos Algoritmo Round-Robin
Antigo, mais simples e mais utilizado;Preemptivo (quantum, I/O, system call pelo
processo);Cada processo recebe um tempo de execução
chamado quantum; ao final desse tempo, o processo é suspenso e outro processo é colocado em execução;
Escalonador mantém uma lista de processos prontos;
![Page 18: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/18.jpg)
18
Escalonamento de ProcessosSistemas Interativos Algoritmo Round-Robin
Fila de prontos
GD AB F
Fila de prontos
AG BF D
Processocorrente
PróximoProcesso
Lista após B utilizar seuquantum
Processocorrente
![Page 19: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/19.jpg)
19
Escalonamento de ProcessosSistemas InterativosAlgoritmo Round-Robin
Tempo de chaveamento de processos;quantum: se for muito pequeno, ocorrem
muitas trocas diminuindo, assim, a eficiência da CPU; se for muito longo o tempo de resposta é comprometido;
![Page 20: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/20.jpg)
20
Escalonamento de ProcessosSistemas Interativos Algoritmo Round-Robin:Exemplos: Δt = 4 mseg x = 1mseg 25% de tempo de CPU é perdido
menor eficiência Δt = 100 mseg x = 1mseg 1% de tempo de CPU é perdido
Tempo de espera dos processos é maior
quantum razoável: 20-50 mseg
![Page 21: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/21.jpg)
21
Escalonamento de ProcessosSistemas Interativos Algoritmo com Prioridades
Cada processo possui uma prioridade os processos prontos com maior prioridade são executados primeiro;
Prioridades são atribuídas dinâmica ou estaticamente;
Classes de processos com mesma prioridade;Preemptivo;
![Page 22: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/22.jpg)
22
Escalonamento de ProcessosSistemas Interativos Algoritmo com Prioridades
1234
mais alta
mais baixa
prioridade
FILAS
processos prontos(Round-Robin)
![Page 23: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/23.jpg)
23
Escalonamento de ProcessosSistemas Interativos Algoritmo com Prioridades
Como evitar que os processos com maior prioridade sejam executado indefinidamente? Diminuir a prioridade do processo corrente e troca-
lo pelo próximo processo com maior prioridade (chaveamento);
Cada processo possui um quantum;
![Page 24: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/24.jpg)
24
Escalonamento de ProcessosSistemas Interativos Múltiplas Filas:
CTSS (Compatible Time Sharing System);Classes de prioridades;Cada classe de prioridades possui quanta
diferentes;Assim, a cada vez que um processo é executado e
suspenso ele recebe mais tempo para execução;Preemptivo;
![Page 25: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/25.jpg)
25
Escalonamento de ProcessosSistemas Interativos Múltiplas Filas:
Ex.: um processo precisa de 100 quanta para ser executado; Inicialmente, ele recebe um quantum para execução; Das próximas vezes ele recebe, respectivamente, 2, 4,
8, 16, 32 e 64 quanta (7 chaveamentos) para execução; Quanto mais próximo de ser finalizado, menos
frequente é o processo na CPU eficiência
![Page 26: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/26.jpg)
26
Escalonamento de ProcessosSistemas Interativos Sistemas Linux e Windows Multilevel feedback queue
– Dá preferência a processos curtos– Dá prioridades para processos I/O bound – Estuda o processo e escalona de acordo com o estudo– Cada fila usa um escalonamento round-robin– Os I/Os promovem o processos para as filas com maior
prioridade
![Page 27: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/27.jpg)
27
Escalonamento de Processos Sistemas Interativo Algoritmo Shortest Process Next
Mesma idéia do Shortest Job First;Processos Interativos: não se conhece o tempo necessário para
execução;Como empregar esse algoritmo: ESTIMATIVA de TEMPO!Verficar o comportamento passado do processo e estimar o tempo.
![Page 28: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/28.jpg)
28
Escalonamento de Processos Sistemas Interativo Outros algoritmos:
Algoritmo Garantido: Garantias são dadas aos processos dos usuários:
n usuários 1/n do tempo de CPU para cada usuário; Algoritmo Lottery:
Cada processo recebe “tickets” que lhe dão direito de execução;
![Page 29: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/29.jpg)
29
Escalonamento de Processos Sistemas Interativo Algoritmo Fair-Share:
O dono do processo é levado em conta; Se um usuário A possui mais processos que um usuário B, o
usuário A terá prioridade no uso da CPU;Usuário 1 → A, B, C, D
Usuário 2 → E Garantia de 50%
Circular → A, E, B, E, C, E, D, E50% a mais para Usuário 1 → A, B, E, C, D, E
![Page 30: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/30.jpg)
30
Escalonamento de ProcessosSistemas em Tempo Real Tempo é um fator crítico; possui um deadline Sistemas críticos:
Aviões; Hospitais; Usinas Nucleares; Bancos; Multimídia;
Ponto importante: obter respostas em atraso é tão ruim quanto não obter respostas;
![Page 31: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/31.jpg)
31
Escalonamento de ProcessosSistemas em Tempo Real Tipos de STR:
Hard Real Time: atrasos não são tolerados; Aviões, usinas nucleares, hospitais;
Soft Real Time: atrasos são tolerados; Bancos; Multimídia;
Programas são divididos em vários processos; Eventos causam a execução de processos:
Periódicos: ocorrem em intervalos regulares de tempo; Aperiódicos: ocorrem em intervalos irregulares de tempo;
![Page 32: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/32.jpg)
32
Escalonamento de ProcessosSistemas em Tempo Real Algoritmos podem ser estáticos ou
dinâmicos;Estáticos: decisões de escalonamento antes
do sistema começar; Informação disponível previamente;
Dinâmicos: decisões de escalonamento em tempo de execução;
![Page 33: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/33.jpg)
33
Aula de Hoje (conteúdo detalhado)1. Threads (conceitos, motivações e tipos)
![Page 34: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/34.jpg)
34
Antes disso...O que é uma pilha de execução?
![Page 35: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/35.jpg)
Conceito de Processo e ThreadO conceito de um Processo pode ser dividido em dois :1: É um agrupamento de recursos necessários para a execução de um programa. Por exemplo :
– um espaço de endereçamento (virtual address space) que contém o texto do programa e dos dados
– uma tabela de Descritores de arquivos abertos – informação sobre processos filhos– código para tratar de sinais (signal handlers)– informação sobre Permissões, etc.
2 Consiste numa linha ou contexto de execução, normalmente chamada “Thread”
– Uma thread tem um programa counter (PC) que guarde o endereço sobre a próxima instrução a executar
– Registadores – valores das variáveis atuais– Stack – contém o histórico de execução com um “frame” para cada procedimento
chamado mas não terminado
![Page 36: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/36.jpg)
36
Estados de Threads
Esperando
Pronta
Nova
Executando
Morta
start()
Método run acabar
sleep(tempo)wait()Solicitação de I/O
Solicitação de I/O atendidaTempo do sleep decorridoOutra thread chamar notify() / notifyAll()
Thread - Estados
![Page 37: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/37.jpg)
37
O conceito de thread foi criado com dois objetivos principais: Facilidade de comunicação entre unidades
de execução; Redução do esforço para manutenção
dessas unidades.
Thread - Objetivos
![Page 38: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/38.jpg)
38
Processo -> um espaço de endereço e uma única linha de controle Threads -> um espaço de endereço e múltiplas linhas de controle
O Modelo do Processo Agrupamento de recursos (espaço de endereço com texto e dados do
programa; arquivos abertos, processos filhos, tratadores de sinais, alarmes pendentes etc)
Execução O Modelo da Thread
Recursos particulares (PC, registradores, pilha) Recursos compartilhados (espaço de endereço – variáveis globais, arquivos
etc) Múltiplas execuções no mesmo ambiente do processo – com certa
independência entre as execuções Analogia
Execução de múltiplos threads em paralelo em um processo (multithreading) e Execução de múltiplos processos em paralelo em um computador
Thread
![Page 39: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/39.jpg)
39
ThreadsItens por Processo Itens por Thread
Espaço de endereçamento
Variáveis globais
Arquivos abertos
Processos filhos
Alarmes pendentes
Contador de programa
Registradores
(contexto)
Pilha
Estado
Compartilhamento de recursos; Cooperação para realização de tarefas;
![Page 40: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/40.jpg)
40
Threads
código dados arquivos
registradorespilha
thread
Processo com uma única thread Processo com várias threads
código dados arquivos
thread thread thread
pilha
regs..
pilha
regs..
pilha
regs.
contador. contador. contador
estado. estado. estado
![Page 41: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/41.jpg)
41
ThreadsO Modelo Thread (1)
(a) Três processos, cada um com um thread(b) Um processo com três threads
![Page 42: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/42.jpg)
42
Não há nada de novo nesse conceito de processo com um único thread, pois o mesmo é idêntico ao conceito tradicional de processo.
O grande benefício no uso de thread é quando temos vários threads num mesmo processo sendo executados simultaneamente e podendo realizar tarefas diferentes.
Thread - O Grande Benefício
![Page 43: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/43.jpg)
43
O Modelo Thread (3)
Cada thread tem sua própria pilha de execução
![Page 44: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/44.jpg)
44
Dessa forma pode-se perceber facilmente que aplicações multithreads podem realizar tarefas distintas ao “mesmo tempo”, dando idéia de paralelismo.
Exemplo: navegador web HotJava consegue carregar e executar applets; executar uma animação; tocar um som; exibir diversas figuras; permitir rolagem da tela; carregar uma nova página; entre outros
para o usuário todas essas atividades são simultâneas, mesmo possuindo um único processador (possível devido a execução de vários threads, provavelmente, uma para cada tarefa a ser realizada.)
Threads
![Page 45: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/45.jpg)
45
Threads
Não há proteção entre threads, pois é desnecessário;Como cada thread pode ter acesso a
qualquer endereço de memória dentro do espaço de endereçamento do processo, uma thread pode ler, escrever ou apagar a pilha de outra thread;
Porém, há a necessidade de sincronizá-las.
![Page 46: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/46.jpg)
46
Threads
Razões para existência de threads: Em múltiplas aplicações ocorrem múltiplas atividades “ao
mesmo tempo”, e algumas dessas atividades podem bloquear de tempos em tempos;
As threads são mais fáceis de gerenciar do que processos, pois elas não possuem recursos próprios o processo é que tem!
Desempenho: quando há grande quantidade de E/S, as threads permitem que essas atividades se sobreponham, acelerando a aplicação;
Paralelismo Real em sistemas com múltiplas CPUs.
![Page 47: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/47.jpg)
47
Threads – exemplo no web server
![Page 48: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/48.jpg)
48
Threads
Considere um navegador WEB: Muitas páginas WEB contêm muitas figuras que
devem ser mostradas assim que a página é carregada; Para cada figura, o navegador deve estabelecer uma
conexão separada com o servidor da página e requisitar a figura tempo;
Com múltiplas threads, muitas imagens podem ser requisitadas ao mesmo tempo melhorando o desempenho;
![Page 49: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/49.jpg)
49
Threads Considere um Editor de Texto:
Editores mostram documentos formatados que estão sendo criados em telas (vídeo);
No caso de um livro, por exemplo, todos os capítulos podem estar em apenas um arquivo, ou cada capítulo pode estar em arquivos separados;
Diferentes tarefas podem ser realizadas durante a edição do livro;
Display, formatação de textos, contagem de caracteres, etc.
![Page 50: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/50.jpg)
50
Threads Threads para diferentes tarefas;
Disco
Pipeline, antes uma exótica técnica exclusiva dos computadores topo de linha, tem se tornado um lugar comum no projeto de computadores.
A técnica de pipeline nos processadores é baseada no mesmo princípio das linhas de montagem das fábricas: não precisa-se esperar até que a unidade esteja completamente montada para começar a fabricar a próxima.
![Page 51: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/51.jpg)
51
Threads Benefícios:
Capacidade de resposta: aplicações interativas; Ex.: servidor WEB;
Compartilhamento de recursos: mesmo endereçamento; memória, recursos;
Economia: criar e realizar chaveamento de threads é mais barato;
Utilização de arquiteturas multiprocessador: processamento paralelo;
![Page 52: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/52.jpg)
52
Threads - Tipos Tipos de threads:
Em modo usuário (espaço do usuário): implementadas por bibliotecas no nível do usuário; Criação e escalonamento são realizados sem o
conhecimento do kernel; Tabela de threads para cada processo;
Cada processo possui sua própria tabela de threads, que armazena todas as informações referentes à cada thread relacionada àquele processo;
Exemplo no Linux: GNU Portable Thread
![Page 53: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/53.jpg)
53
Threads em modo usuário
![Page 54: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/54.jpg)
54
Threads em modo usuário
Tipos de threads: Em modo usuário Vantagens:
Alternância de threads no nível do usuário é mais rápida do que alternância no kernel;
Menos chamadas ao kernel são realizadas; Permite que cada processo possa ter seu próprio algoritmo de
escalonamento; Principal desvantagem:
Processo inteiro é bloqueado se uma thread realizar uma chamada bloqueante ao sistema;
![Page 55: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/55.jpg)
55
Tipos de Threads
Tipos de threads: Em modo kernel: suportadas diretamente pelo SO; No linux e C, pode ser criada pelo comando kernel_thread() Criação, escalonamento e gerenciamento são feitos pelo kernel; Tabela de threads e tabela de processos separadas; as tabelas de threads possuem as mesmas informações que as tabelas de
threads em modo usuário, só que agora estão implementadas no kernel;
![Page 56: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/56.jpg)
56
Threads em modo kernel
![Page 57: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/57.jpg)
57
Threads em modo Usuário x Threads em modo Kernel
Threads em modo usuário
Threads em modo kernel
![Page 58: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/58.jpg)
58
Threads em modo kernel
Tipos de threads: em modo kernel Vantagem:
Processo inteiro não é bloqueado se uma thread realizar uma chamada bloqueante ao sistema;
Desvantagem:Gerenciar threads em modo kernel é mais caro devido
às chamadas de sistema durante a alternância entre modo usuário e modo kernel;
![Page 59: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/59.jpg)
59
Threads Modelos Multithreading
Muitos-para-um: Mapeia muitas threads de usuário em apenas uma thread de
kernel; Não permite múltiplas threads em paralelo;
Threads em modo usuário
Thread em modo kernel
![Page 60: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/60.jpg)
60
Threads
Modelos Multithreading Um-para-um: (Linux, Família Windows, OS/2, Solaris 9)
Mapeia para cada thread de usuário uma thread de kernel; Permite múltiplas threads em paralelo;
Threads em modo usuário
Threads em modo kernel
![Page 61: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/61.jpg)
61
Threads Modelos Multithreading
Muitos-para-muitos: (Solaris até versão 8, HP-UX, Tru64 Unix, IRIX) Mapeia para múltiplos threads de usuário um número menor ou igual de threads de kernel; Permite múltiplas threads em paralelo; “pool” de threads
Threads em modo usuário
Thread em modo kernel
![Page 62: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/62.jpg)
62
Aula de Hoje (conteúdo detalhado)1. Aspectos de Implementação de threads e processos2. Comunicação interprocessos
![Page 63: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/63.jpg)
63
Threads
Estados: executando, pronta, bloqueada; Comandos para manipular threads:
Thread_create;Thread_exit;Thread_wait;Thread_yield (permite que uma thread desista
voluntariamente da CPU);
![Page 64: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/64.jpg)
64
Por que threads? Simplificar o modelo de programação (aplicação com
múltiplas atividades => decomposição da aplicação em múltiplas threads)
Gerenciamento mais simples que o processo (não há recursos atachados – criação de thread 100 vezes mais rápida que processo)
Melhoria do desempenho da aplicação (especialmente quando thread é orientada a E/S)
Útil em sistemas com múltiplas CPUs
Threads
![Page 65: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/65.jpg)
65
Lembrando...
1) Processos são usados para agrupar recursos.
2) Threads são as entidades escalonadas para execução na CPU.
![Page 66: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/66.jpg)
66
--------------------------------------------------------------------Exemplo de Criação de Processo em C no Linux--------------------------------------------------------------------
#include <stdio.h>#include <unistd.h>
int main(int argc, char *argv[]) {
int pid; pid = fork();
/* Ocorreu um erro */ if (pid < 0) { fprintf( stderr, "Erro ao criar processo" ); }
/* Processo filho */ else if (pid == 0) { execlp ("/bin/ls", "ls", NULL); }
/* Processo pai */ else if (pid > 0) { wait (NULL); printf ("Processe Pai terminou.\n"); }}
![Page 67: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/67.jpg)
67
----------------------------------------------------------------------------Criando Threads em Java estendendo a class Thread----------------------------------------------------------------------------
Criar thread -> Escrever classe que deriva da classe 'Thread' - 'Thread' possui todo o código para criar e executar threads
class ThreadSimples extends Thread {
public void run() { System.out.println("Ola de uma nova thread!"); }
public static void main(String args[]) { Thread thread = new ThreadSimples(); thread.start();
// (new ThreadSimples()).start(); System.out.println("Ola da thread original!"); }}
![Page 68: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/68.jpg)
68
-----------------------------------------------------------------------------------------Criando Threads em Java implementando a interface Runnable-----------------------------------------------------------------------------------------
- Vantagem: - Classe que implementa Runnable pode estender outra classe
class RunnableSimples implements Runnable {
public void run() { System.out.println("Ola de um novo Runnable!"); }
public static void main(String args[]) { RunnableSimples runnable = new RunnableSimples(); Thread thread = new Thread(runnable); thread.start(); //(new Thread(new RunnableSimples())).start(); System.out.println("Ola da thread original!"); }}
![Page 69: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/69.jpg)
69
------------------------Joining a Thread------------------------- Permite a uma thread esperar que outra termine
class ThreadSimples extends Thread {
public void run() { System.out.println("Ola de uma nova thread! " + super.toString() + "."); }
public static void main(String args[]) {ThreadSimples thread = new ThreadSimples();
ThreadSimples thread2 = new ThreadSimples();
thread.start(); thread2.start();
try { thread2.join();} catch (InterruptedException e) { e.printStackTrace();}
System.out.println("Ola da thread original!"); } }
![Page 70: Sistemas Operacionais - University of São Paulo](https://reader031.vdocuments.pub/reader031/viewer/2022022017/6210fbb95cd5a44d4e42e576/html5/thumbnails/70.jpg)
70
------------------------Sleeping a Thread------------------------ - a thread atual fica bloqueada por um número de milisegundos - precisa capturar InterruptedException
try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); }