0% found this document useful (0 votes)
4 views65 pages

Processos e Threads em Sistemas Operacionais

trabalho Sistemas operacionais

Uploaded by

gbrunosan159
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views65 pages

Processos e Threads em Sistemas Operacionais

trabalho Sistemas operacionais

Uploaded by

gbrunosan159
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Processos e threads

Sistemas operacionais
Marco Aurélio Ferreira
Pressupostos, corolários ...
O professor não reprova ninguém;

Havendo divergências com o professor, primeiro tente conversar com o mesmo, comigo, a fim de
dirimi-las;

Como sugestão, quando houver perguntas tente responder pelo seu conhecimento, sem “googlar”,
pois, inevitavelmente, caso “google” acabará perdendo o time da próxima pergunta; e, mais
importante que saber a resposta é a sua participação e entendimento o conteúdo apresentado até
então.

A avaliação apesar de ocorrer em data específica, ela também é cotidiana, constante. O estudo
da unidade curricular deverá ser constante pois o aviso da avaliação acontecerá com antecedência
mínima de uma semana, sendo tempo insuficiente para o estudo de todo conteúdo;

Cabe ao estudante buscar as alternativas para um determinado problema e não o professor. Como
por exemplo: uma vez dada a referência bibliográfica cabe ao aluno encontrá-la ou na biblioteca ou
na internet;

Trabalhos solicitados deverão estar em conformidade com os direitos autorais: citações e


referências bibliográficas tomando o cuidado para que não seja considerado plágio, conforme
normas do Instituto e ABNT;

Finalmente, considere que estarei sempre buscando o melhor para repassar, enquanto professor;
e, como consequência: cobrarei o melhor que cada um pode oferecer.
Objetivo

Apresentar os conceitos e características gerais


sobre processos e threads de modo que o
presente seja um incentivo não ficando restrito ao
mesmo.
Ementa

Tecnologia em análise de desenvolvimento


de sistemas

Propósito dos sistemas operacionais. Estrutura de um sistema


operacional. Introdução a processos e threads. Gerenciamento de
permissões e controle de acesso. Chamadas de Sistema.
Gerência de processador. Gerência de memória. Ferramentas de
desenvolvimento de programas: montadores, compiladores,
carregadores e ligadores. Modo Kernel e Modo usuário.
Programação usando scripts.
Agenda
Processos
Características de um processo: criação,
execução, finalização, estados do processo,
tabela de processo.

Threads
Características de uma thread, vantagens,
desvantagens
Cenário
Imaginemos a inicialização do computador:
[Link]ção da definição de vírus;
[Link]ção dos e-mails;
[Link]ção de um documento;
[Link]ção de programa de mp3.

 pseudoparalelismo
 multiprocessador: duas ou mais CPUs que compartilham
simultaneamente a mesma memória física.
Processos
Consiste em um programa em execução
acompanhado de seus valores atuais do contador de
programa, dos registradores e das variáveis.
Esses valores atuais permitem o conceito da
multiprogramação, troca de contexto.

Uma segunda definição: em sistemas operacionais tradicionais


cada processo possui seu próprio espaço de endereçamento e
uma única thread de controle correspondendo a definição de
processo.
Multiprogramação com 4 programas
Criação de processo

Quatro eventos principais que fazem que um processo seja criado:

 Início no sistema;
 Execução de uma chamada de sistema de criação de processo por
um processo em execução;
 Requisição de um usuário para criar um novo processo;
 Execução de uma tarefa em lote, batch job.
Estrutura de processo
Criação de processo
A criação de processos ocorre conforme o sistema
operacional:

Unix, Posix, chamada de sistema: fork criando um


clone idêntico ao processo que o chamou: mesma
imagem de memória, mesmas variáveis de ambiente,
mesmos arquivos abertos. E a parti do execve ou
uma chamada de sistema para mudar sua imagem
de memória e executar um novo programa.
Criação de processo

Windows, Win32, chamada de sistema:


CreateProcess
Chamada que possui 10 parâmetros incluindo
programa a ser executado, parâmetros da linha
de comando que alimentam esse programa,
atributos de segurança, entre outros. Possui mais
de 100 funções, chamadas de sistemas, para
gerenciar, sincronizar processos e tópicos afins.
Processo em execução
Os processos podem ser classificados como:

[Link] – interage com o usuário;


[Link] – execução em segundo plano, como por exemplo:
receber mensagem de e-mail.
Daemons – Processos que executam em background com
finalidade de lidar com alguma atividade.
Unix, posix: ps
Windows, win32: taskmgr
Processo em execução

 Processos CPU-bound (orientados à CPU): processos que utilizam


muito o processador;
Tempo de execução é definido pelos ciclos de processador.
 Processos I/O-bound (orientados à E/S): processos que realizam
muito E/S;
Tempo de execução é definido pela duração das operações de
E/S.
Finalização de processos

O processo terminará por alguma das condições:

[Link]ída normal, voluntária;


[Link]ída por erro, voluntária;
[Link] fatal, involuntária;
[Link] por outro processo; involuntária.
Finalização de processos

Dependendo do sistema operacional a finalização ocorre:


[Link], Posix, chamada de sistema: exit
[Link], Win32, chamada de sistema: ExitProcess

Cancelamento por outro processo:


[Link], Posix, chamada de sistema: kill
[Link], Win32, chamada de sistema: TerminateProcess
Hierarquia de processos

No Unix, Posix, os processos são criados


conforme hierarquia: pai – filho, dessa forma
quando um usuário envia um sinal de teclado, o
sinal é entregue a todos o membros do grupo do
processo associado com o teclado, processos
ativos que foram criados pelo na janela atual.
Individualmente cada processo pode capturar o
sinal, ignorá-lo ou tomar uma ação predefinida.
Hierarquia de processos
No Windows, Win32, não existe o conceito de
hierarquia de processos, todos os processos são
iguais. No windows algo parecido ocorre quando o
processo cria um filho, ao pai é dado um identificador
especial, handle, que pode usar para controlar o
filho; contudo é livre para passar esse identificador
para outros processos, invalidando assim a
hierarquia.

No Unix processos pai não podem deserdar seus


filhos.
Estados do processo
Um processo pode estar em um os três estados:

1. Em execução: realmente utilizando a CPU


naquele momento;
2. Pronto: executável, temporariamente parado
para dar lugar a outro processo;
3. Bloqueado: incapaz de executar, aguardando
algum evento externo.
Estados do processo
Criação e eliminação de processo e
a tabela de controle de processo
Tabela de processos, BPC

Para a implementação do modelo de processos o


sistema operacional mantém uma tabela de
processos, process control block, contendo
informação sobre cada estado do processo,
contador de programa, ponteiro da pilha, alocação
de memória, estados dos seus arquivos abertos,
entre outras informação para que o processo
após os estados: bloquedo ou pronto volte para
execução como senão tivesse sido interrompido.
Implementação de processo, tabela
de processos
No sistema, cada processo será representado por seu resumo, que
consiste no BCP, também conhecido por Bloco de Controle de Programa
ou Descritor de Processo ou Tabela de processo. O BCP consiste de
uma estrutura de dados contendo informações importantes sobre o
processo, incluindo:
 A identificação do processo;
 O estado do processo;
 A prioridade do processo;
 Ponteiros para a localização do processo na memória ou no disco;
 Contador de programa;
 Area de salvamento dos registradores, etc
Tabela de processos, alguns dos
campos.
Exercícios

0. Descreva seu entendimento sobre processos e threads.

1. Na apresentação do estado dos processos constituídos por três


estados, teoricamente podendo ter 6 transições e foi apresentado 4
transições. Há alguma circunstância em que uma ou ambas não
ilustrada possa ocorrer?

4. Quando uma interrupção ou chamada de sistema transfere o controle


para o sistema operacional, geralmente é usada uma área da pilha do
núcleo separada da pilha de processo interrompido, por quê?
Algoritmos de escalonamentos
Algoritmos de escalonamento podem ser divididos em duas
categorias dependendo de como essas interrupções são tratadas:
Preemptivo: estratégia de suspender o processo sendo
executado;
Não-preemptivo: estratégia de permitir que o processo sendo
executado continue sendo executado até ser bloqueado por
alguma razão (semáforos, operações de E/S-interrupção).
Algoritmos de escalonamentos
Categorias de Ambientes
Sistemas em Batch: usuários não esperam por respostas
rápidas; algoritmos preemptivos ou não-preemptivos;
Sistemas Interativos: interação constante do usuário; algoritmos
preemptivos; Processo interativo - espera comando e executa
comando;
Sistemas em Tempo Real: processos são executados mais
rapidamente; tempo é crucial - sistemas críticos
Algoritmos de escalonamentos
Características de algoritmos de escalonamento (qualquer
sistema):
Justiça (Fairness): cada processo deve receber uma parcela justa
de tempo da CPU;
Balanceamento: diminuir a ociosidade do sistema;
Políticas do sistema: prioridade de processos.
Algoritmos de escalonamentos
Características de algoritmos de escalonamento:
Sistemas Batch
 Taxa de execução (throughput): máximo número de Jobs executados por hora;
 Turnaround time (tempo de retorno): tempo no qual o processo espera para ser
finalizado;
 Tempo de espera: tempo gasto na fila de prontos;
 Eficiência: CPU deve estar 100% do tempo ocupada.

Sistemas Iterativos
 Tempo de resposta: tempo esperando para iniciar execução;
 Satisfação do usuários.

Sistemas de Tempo Real


 Prevenir perda de dados;
 Previsibilidade: prevenir perda da qualidade dos serviços oferecidos
Algoritmos de escalonamentos
Algoritmos para Sistemas Batch
 First-Come First-Served (ou FIFO);
 Shortest Job First (SJF);
 Shortest Remaining Time Next (SRTN).
Escalonamento, sistema batch
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
Escalonamento, sistema batch
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.
Escalonamento, sistema batch
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!
Algoritmos de escalonamentos
Algoritmos para Sistemas Interativos
 Round-Robin;
 Prioridade;
 Múltiplas Filas;
 Shortest Process Next;
 Garantido;
Escalonamento, sistema interativo
Round-Robin
 Antigo, mais simples e mais utilizado;
 Preemptivo;
 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.
Escalonamento, sistema interativo
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 do processos com mesma prioridade.
 Preemptivo.
Escalonamento, sistema interativo

Algoritmo com Prioridades


Escalonamento, sistema interativo
Algoritmo com Prioridades
 Como evitar que os processos com maior prioridade sejam
executado indefinidamente?
 Diminuir a prioridade do processo corrente e trocá-lo pelo próximo processo
com maior prioridade (chaveamento)
 Cada processo possui um quantum
Escalonamento, sistema interativo
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
Escalonamento, sistema interativo
Algoritmos Shortest Process Next
 Mesma ideia do Shortest Job First
 Processos Interativos: não se conhece o tempo necessário para
execução
 Como empregar esse algoritmo: ESTIMATIVA de TEMPO!
Escalonamento, sistema 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)

 Algoritmo Loterry
 Cada processo recebe tickets que lhe dão direito de execução
Escalonamento, sistema tempo real
Tempo é um fator crítico

 Sistema Crítico
 Aviões
 Hospitais
 Usinas Nucleares
 Bancos
 Multimídia

 Ponto importante: obter respostas em atraso é tão ruim quanto


não obter respostas.
Escalonamento, sistema interativo
Tipos de STR, Sistema de Tempo Real

 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 execução de processos
 Periódicos: Ocorrem em intervalos de tempos regulares
 Aperiódicos: Ocorrem em intervalos de tempo irregulares

 Algoritmos podem ser estáticos ou dinâmicos


 Estáticos: decisões de escalonamento antes do sistema começar (informações
disponíveis previamente)
 Dinâmicos: decisões de escalonamento em tempo de execução
Threads

Em sistemas operacionais tradicionais cada processo possui seu próprio


espaço de endereçamento e uma única thread de controle
correspondendo a definição de processo.

Contudo tem situação em que se tem várias threads de controle no


mesmo espaço de endereçamento executando quase em quase-
paralelo, como se processos separados fossem; excetuando-se pelo
espaço de endereçamento compartilhado. As threads permitem que
várias execuções ocorram no mesmo ambiente de processo de forma
independente uma das outras.
Thread

“Thread, ou processo leve, é a unidade básica de utilização da


CPU, consistindo de: contador de programa, conjunto de
registradores e uma pilha de execução.”
“Thread são estruturas de execução pertencentes a um processo
e assim compartilham os segmentos de código e dados e os
recursos alocados ao sistema operacional pelo processo. O
conjunto de threads de um processo é chamado de Task e um
processo tradicional possui uma Task com apenas um thread.”
Silberschatz
Thread

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.

Isso foi conseguido por meio da criação dessas unidades dentro


de processos, fazendo com que todo o esforço para criação de um
processo, manutenção do Espaço de endereçamento lógico e
BCP, fosse aproveitado por várias unidades processáveis,
conseguindo também facilidade na comunicação entre essas
unidades.
Estados da thread
Processo dentro outro processo?
Constata-se que tem várias razões para existirem
miniprocessos, threads:

1.4 - Muitas aplicações ocorrem múltiplas atividades


ao mesmo tempo. Algumas dessas atividades podem
ser bloqueadas de tempos em tempos. O modelo de
programação se torna mais simples se decompormos
o modelo de programação em múltiplas threads
sequenciais que executam em quase paralelo.
Processo dentro outro processo?

2.4 - São mais fáceis de criar, destruir que


processos pois não tem quaisquer recursos
associados as mesmas.
Processo dentro outro processo?
3.4 - Quanto ao desempenho:
O uso de threads quando se tem CPU-bound
– limitados pela CPU, isto é: muito
processamento e pouca operação de E/S – não
apresenta ganho de desempenho.
O uso de threads quando se tem grande
quantidade de computação e também de E/S – a
thread permite que as atividades se sobreponham
acelerando a aplicação.
Processo dentro outro processo?

4.4 - As threads são úteis em sistemas com


múltiplas CPUs, para qual o paralelismo é real e
possível.
Cenário, utilização

Imagine um editor de texto em que usuário produza um texto que


formatado tenha 500 páginas:

Cenário 1: uma alteração em uma determinada parte do texto acarretará


o posicionamento na referida página bem como localização da referida
alteração: impondo ao usuário uma espera pela alteração.
Cenários 2: editor de texto implementado por thread uma interagindo
com usuário outra processando a alteração solicitada.
Cenário 2
Processador de
texto com três
threads:
interagindo com
usuário,
formatando e
salvando.
Máquina de
estados finitos,
em específico:
três estados.
Threads clássico
Processos são usados para agrupar recursos
enquanto que threads são entidades escalonadas
para execução sobre a CPU.

Threads acrescentam ao modelo de processo e


permite que múltiplas execuções ocorram no
mesmo ambiente de processo com um grande
grau de independência uma da outra.
Brainstorming
Threads execução

Processo - um espaço de endereço e uma única


linha de controle
• Agrupamento de recursos (espaço de endereço com texto e dados
do programa; arquivos abertos, processos filhos, tratadores de
sinais, alarmes pendentes etc)

Threads - um espaço de endereço e múltiplas


linhas de controle
• 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
Compartilhamento

Thread pai fica aguardando um sinal, o filho também?


Thread percebe que a memoria esta ficando limitada,
aumenta pai e filho?
→ Sistema com threads tem que ser bem projetado.
Threads posix
IEEE definiu no padrão
1003.1.c, um conjunto
de mais de 60
chamadas de função.
Padrão que foi
incorporado ao Unix.
Threads de usuário/núcleo
Se thread de usuário: aplicativo de usuário
gerencia, se thread do núcleo SO gerencia.

Cada thread gerencia sua própria tabela de


thread para manter o controle da thread naquele
processo. A thread é gerenciada pelo sistema de
tempo de execução, exatamente como o núcleo
armazena as informações dos processos na
tabela de processos.
Threads de usuário e núcleo
Os ónus dos benefícios, pesquisa

Threads de usuário:
Executar chamadas de sistemas como operacões de E/S, inaceitável.
As threads de um processo podem executar initerruptamente a não ser
que voluntariamente abra mão da CPU, inviabilidade de implementar
round-robin

Threads do núcleo:
Indefinição na execução de uma thread que se “reproduz”;
Possibilidade que mais de uma thread recebe um sinal externo;
Exercícios
Discente - Explicite seu conhecimento sobre processos e threads.

9 – Pelo texto pode-se inferir que um servidor web multithread é melhor


que um servidor de thread única ou um servidor de máquinas de estados
finitos. Ha circunstância que um servidor de thread única poderia ser
melhor, de exemplo?

10 - O conjunto de registradores é relacionado como um item por thread


e não por processo. Por quê? (afinal a máquina tem somente um
conjunto de registradores).

14 - Quais as vantagens e desvantagens de se implementar threads no


espaço de usuário?
Exercícios
17 – Considere um sistema no qual threads são implementados
inteiramente no espaço do usuário, sendo que o sistema de tempo
de execução sofre um interrupção de relógio a cada segundo.
Suponha que uma interrupção de relógio ocorra enquanto alguma
thread estiver executando no sistema de tempo de execução. Que
problema poderia ocorrer? O que você sugere para resolvê-lo?
21 – Em um sistema com threads, quando são utilizados threads
de usuário, há uma pilha por thread ou uma pilha por processo? E
quando se usa threads de núcleo? Explique.
Questão 20, 03 – Computação bacharelado
ENADE 2014 – Um processo tem um ou mais fluxos de execução, normalmente
denominados apenas por threads.
A parti das figuras 1 e 2 apresentadas, avalie as afirmações a seguir.
I - Tanto na figura 1 quanto na figura 2, existem três threads que utilizam o mesmo
espaço de endereçamento.
II - Tanto na figura 1 quanto na figura 2, existem três threads que utilizam três
espaços de endereçamento distintos.
III - Na figura 2, existe um processo com um único espaço de endereçamento e três
threads de controle.
IV - Na figura 1, existem três processos tradicionais, cada qual tem seu espaço de
endereçamento e uma única thread de controle.
V - As threads permitem que várias execuções ocorram no mesmo ambiente de
processo de forma independente uma das outras.

É correto apenas o que se afirma em, disserte


tecnicamente sobre a sua escolha da opção
correta.
a) I, II e III.
b) I, II e IV.
c) I, III e V.
d) II, IV e V.
e) III, IV e V.
Referências:

✔ Sistemas Operacionais Modernos, A. Tanenbaum.


✔ Arquitetura de sistemas operacionais, L. P. Maia
✔ Fundamentos de sistemas operacionais, Silberschatz
✔ Notações de sistemas operacionais; Prof. Dra. Kalinka R. L. J. C. Branco.

[Link]

[Link]

Sugestão para modelagem de processos:


[Link]
[Link]
referência: [Link]
[Link]

Marco Aurélio Ferreira


[Link]@[Link]

You might also like