You are on page 1of 24

Sistemas Operacionais:

Processos e Threads
MsC. Douglas Santiago Kridi
Disciplina: Sistemas Operacionais
Bacharelado em Cincia da Computao
Universidade Estadual do Piau
douglaskridi@gmail.com
Introduo
Um conceito fundamental em sistemas
computacionais o conceito de processo.
Um processo basicamente um programa em
execuo.
Ele consiste de um programa executvel, os seus
dados e pilha, o seu stack pointer e registradores,
enfim todas as informaes necessrias para
executar o programa.

UESPI - Piripiri 2
Multiprogramao
Em um sistema com multiprogramao a CPU fica
se alternando entre a execuo de vrios
processos.
Cada um por dezenas ou centenas de milissegundos.
Periodicamente o sistema decide se a execuo de
um processo deve ser interrompida e a de outro
deve ser iniciada (pela razo do primeiro j ter tido
mais do que a sua fatia de tempo de CPU).
Execuo concorrente de diversos processos
independentes sobre um processador.

UESPI - Piripiri 3
Time-slicing
Fatia de tempo.
Compartilhar o processador entre diversas
computaes de processos.
Em vez de um processo esperar para o trmino de
uma operao de I/O, o processador
compartilhado atravs de um hardware usado para
interromper uma computao de um processo em
intervalos pr-determinados.

UESPI - Piripiri 4
Time-slicing
Um programa do SO chamado Scheduler
executado para determinar qual processo deve ser
executado no prximo intervalo.
O Scheduler pode levar em considerao,
prioridades dos processos.

UESPI - Piripiri 5
Time-sharing
Usam multiprogramao com time-slicing, para dar
a um grupo de usurios a iluso que cada um tem
acesso a um computador dedicado.
Associado a sistemas com multiprocessadores,
implementa a ideia de paralelismo.

UESPI - Piripiri 6
Processos
Um processo uma atividade (ou tarefa) de um
programa, que contm o cdigo e os dados desta
atividade.
Essas atividades esto associadas a:
leitura de dados;
escrita de dados;
clculos no processador;
comunicao com o usurio;
comunicao com um BD;
comunicao com a rede interna ou externa;
entre outras.

UESPI - Piripiri 7
Processos
Um programa em execuo em uma mquina.
a unidade de processamento concorrente que um
processador sob um SO pode processar.
Identificado pelo seu PID (Process Identifier).

UESPI - Piripiri 8
Processos
A noo de processo foi aprimorada, para que ele
pudesse ser associado a mltiplas atividades
internas a ele.
Um processo uma entidade a nvel de kernel, que
possui um espao de endereamento.
O nico modo para seu programa acessar a dados
na estrutura (contexto) de um processo, consultar
ou mudar seu estado, via uma chamada de
sistema.

UESPI - Piripiri 9
Contexto de um Processo
Um identificador do processo (PID).
Um segmento de cdigo.
Um segmento de dados.
Os valores dos registradores da CPU.
Um contador de programa lgico.
Uma pilha de execuo.
O estado do processo.
Informaes para escalonamento (prioridade, tempo)
Dados para contabilizao de uso.
Recursos alocados: arquivos, portas, eventos, outros.
UESPI - Piripiri 10
Surgimento de Threads
Com o surgimento de processadores de mais alto
desempenho, uma nova unidade de processamento
concorrente definida dentro do prprio processo,
gerando novos fluxos de execuo.
Habilitando mltiplos fluxos de execuo (mltiplas
threads) num mesmo processo.
Cada fluxo de execuo chamado Thread.

UESPI - Piripiri 11
Surgimento de Threads
Em princpio, cada processo possui o seu prprio
espao de endereamento e um nico fluxo de
execuo.
No entanto, em alguns casos, desejvel haver
diversos fluxos de execuo compartilhando um
nico espao de endereamento, ou seja, mesma
regio de memria.

UESPI - Piripiri 12
Threads
Com vrios fluxos de execuo existe melhor vazo
(throughput) e ganho de desempenho.
As threads podem ser vistas como mini-processos,
onde cada thread executa sua prpria poro de
cdigo.
Cada thread compartilha a CPU do mesmo modo
que diferentes processos compartilham
(timesharing).
Thread = lightweight process.

UESPI - Piripiri 13
Contexto de uma Thread
Um identificador da Thread.
Um segmento de cdigo.
Um segmento de dados.
Os valores dos registradores da CPU.
O contador de programa.
Uma pilha de execuo.
O estado da Thread.
Informaes para escalonamento (prioridade, ...)
Dados para contabilizao de uso.
Recursos alocados que pertencem a processos:
arquivos, portas, eventos, outros.
UESPI - Piripiri 14
Threads
Processo x Thread

threads

UESPI - Piripiri 15
Threads
Multithreading refere-se habilidade do sistema
em suportar mltiplas threads de execuo em um
mesmo processo.
DOS JVM

Um processo Um processo
Uma thread Multplas threads

UNIX Windows
antigos Linux

Multplos processos Multplos processos


Uma thread por processo Multplas threads por processo

UESPI - Piripiri 16
Multithreading
Mltiplas threads executam concorrentemente em
um processo, e anlogo a mltiplos processos
executando concorrentemente em um nico
processador.
Threads pertencentes a um mesmo processo,
compartilham os mesmos recursos e memria
(espao de endereamento) do processo.

UESPI - Piripiri 17
Escalonamento de Threads
tarefa do Scheduler (escalonador) que seleciona,
num dado instante, uma thread que deve ser
executada pelo processador, alternando este entre
threads.

UESPI - Piripiri 18
Algoritmo de Escalonamento
Define a ordem de execuo de processos/ threads
com base em uma fila ou prioridade da thread.
Processos/Threads do sistema SO e de aplicaes
crticas exigem maior prioridade.
Em geral, os sistemas operacionais adotam uma
poltica para atender a todas os processos/threads
de maneira justa .

UESPI - Piripiri 19
Escalonamento por Time-Slicing
Fracionamento de tempo do processador.
Divide o tempo do processador entre threads de
igual prioridade.
Implementado por um Timer (hardware) o qual
interrompe o processamento periodicamente, para
permitir o scheduler buscar uma outra thread para
executar.

UESPI - Piripiri 20
Escalonamento por Time-Slicing
Por Processo: escalonador aloca tempo para
execuo dos processos, os quais definem como
usar este tempo para executar suas threads.
P1 P2 P3
t11 t12 t21 t22 t23 t31 t32
Por Thread: escalonador aloca tempo e define a
ordem na qual as threads sero executadas.

t11 t31 t21 t32 t23 t12 t22 t16

UESPI - Piripiri 21
Escalonamento Pre-emptivo
Baseado nas prioridades dos processos/threads.
Deve ser implementado para garantir que um
processo/thread de alta prioridade possa executar
logo que torna-se pronto, mesmo que signifique
suspender a execuo de um processo de mais
baixa prioridade.

UESPI - Piripiri 22
Questionrio
1. No Trello.

UESPI - Piripiri 23
Referncias Bibliogrficas
[1] SILBERSCHATZ, Abraham; GALVIN, Peter; GAGNE, Greg.
Fundamentos de sistemas operacionais. 7. ed. Rio de Janeiro: LTC, 2013

[2] TANENBAUM, Andrew. S.


Sistemas Operacionais modernos. 4. ed. So Paulo: Pearson, 2016.

[3] MACHADO, F. B.; MAIA, L. P.


Arquitetura de Sistemas Operacionais. 5. ed. Rio de Janeiro: LTC, 2013.

UESPI - Piripiri 24

You might also like