Вы находитесь на странице: 1из 14

Cap.

4: Processos

um processo possui 4 partes em memria

code section (ou text segment): contm a parte


de cdigo (instrues) de um programa

data section (ou data segment): armazena as


variveis go!ais de um programa

stack (pi"a): armazena as variveis ocais de


um programa

heap (monte# pi"a): armazena as variveis


aocadas dinamicamente de um programa

Cap. 4: $u!%processos

um sub-processo# ou processo-filho # em verdade# um processo

um su!%processo# criado por agum outro processo# denominado


processo-pai (n&o e'istem su!%processos (!astardos))

um su!%processo possui# como prprio

seu process ID
seu prprio PC
seu prprio register set
sua prpria stack
sua prpria heap

sua code section (pode ou n&o ser a mesma do processo%pai)


sua data section
seus recursos do $*# tais como# open files e signals

Cap. 4: +"reads

um thread# ou kernel thread# ou lightweight process (LWP)


uma unidade !sica de utiiza&o de CP,

um t"read uma in"a de controe ou e'ecu&o# por isso


cada t"read re-uer seu prprio PC

um t"read possui# como prprio

seu thread ID

seu prprio PC

seu prprio register set

sua prpria stack

sua prpria heap



Cap. 4: +"reads (cont.)

um t"read compartilha com outros t"reads pertencentes ao


mesmo processo

sua code section

sua data section (pode ou n&o comparti"ar com os demais


t"reads)

seus recursos do $*# tais como# open files e signals

um processo tradiciona# ou hea!weight process possui


um .nico t"read

se um processo possui vrios t"reads# ee pode reaizar


mais -ue uma tare/a concorrentemente

/ig. 4.0# pag. 012# na pr'ima transpar3ncia



Cap. 4: 4ig. 4.0# pag. 012

Cap. 4: +"reads (cont.)
a cria&o de um processo ago muito custoso para a m-uina
em gera# -uando se pretende criar um outro processo para e'ecutar um mesmo
cdigo -ue o de um processo e'istente# ent&o me"or criar um t"read ao invs de
criar o processo
mais /ci o $* controar m.tipos t"reads do -ue m.tipos processos (por"ue
-uando a CP, troca entre t"reads n&o " a necessidade de troca de todo o
conte'to)
m.tipos t"reads usam menos recursos do -ue m.tipos processos (por"ue t"reads
comparti"am de uma mesma parte do conte'to)
a impementa&o de um server (por e': 5e! server)# "o6e em dia# /az uso de t"reads
(por"ue en-uanto um t"read atende a uma re-uisi&o# outro pode atender a outra)
em ar-uiteturas com m.tipos processadores (ou com um processador com
mutipos n.ceos (cores))# o uso de t"reads atamente recomendado# pois os
t"reads podem e'ecutar simutaneamente em cada processador (ou em cada n.ceo)

Cap. 4: +"reads (cont.)
suporte para t"reads podem ser /ornecidos em n7ve de usurio (user threads) ou peo 8erne
(kernel threads)
user t"reads
s&o impementados por uma thread librar! em n7ve de usurio
a t"read i!rar9 possui rotinas para a cria&o# gerenciamento# remo&o# etc# de user t"reads
e'empos de t"read i!raries: green threads# $%& portable threads
n&o s&o (vistas) peo 8erne
n'o entram no escaonamento (process scheduling) do $*
8erne t"reads
s&o suportados diretamente peo $*
* $* prov3 recursos para a cria&o# escaonamento# gerenciamento# remo&o# etc# de 8erne t"reads
s&o (vistas) peo 8erne
entram no escaonamento (process scheduling) do $*
s&o criados por c"amadas a s!stem calls
a !i!ioteca P*$:; Pt"reads# dependendo da sua impementa&o no $*# pode criar user
threads e<ou kernel threads
dependendo da impementa&o da m-uina =ava (=>?) para um determinado $*# (aa
threads podem ser mapeados tanto para user threads# -uanto para kernel threads

Cap. 4: ?odeos de multithreading

muitos $*@s /ornecem suporte tanto para user


threads -uanto para kernel threads

em tais $*@s# o reacionamento entre user threads


e kernel threads pode ser esta!eecido segundo um
(ou mais) dos modeos a!ai'o

modeo muitos-para-um

modeo um-para-um

modeo muitos-para-muitos

Cap. 4: ?odeo muitos-para-um

muitos user threads s&o suportados por um .nico kernel thread

a cria&o# destrui&o e ger3ncia dos t"reads /eita pea


!i!ioteca (librar!) de user threads

o usurio pode criar -uantos user threads -uiser (n&o " imite)

todos os t"reads !o-ueiam caso um user thread c"ame uma


s!stem call para !o-uear a e'ecu&o

os user threads nunca e'ecutam em paraeo em sistemas


mutiprocessados (ou em sistemas multicores)# pois e'iste
somente um .nico kernel thread

e'empo de !i!iotecas -ue impementam o modeo muitos-


para-um: green threads# $%& portable threads

/ig. 4.A# pag. 0AB# na pr'ima transpar3ncia



Cap. 4: 4ig. 4.A# pag. 0AB

Cap. 4: ?odeo um-para-um

cada user thread suportado por um .nico kernel thread

mesmo -ue um dos user threads !o-ueie# os demais continuam


e'ecutando

os user threads e'ecutam em paraeo# em sistemas mutiprocessados


(ou em sistemas multicores)# pois cada user thread suportado por um
.nico kernel thread

Cinu' e a /am7ia dos ?$ Dindo5s impementam o modeo um-para-


um

user threads nestes $*s s&o criados# portanto# atravs de c"amadas a


s!stem calls

o prprio $* imita o n.mero de user threads -ue podem ser criados


peo usurio# esta!eecendo um vaor m'imo

/ig. 4.E# pag. 0A2# na pr'ima transpar3ncia



Cap. 4: 4ig. 4.E# pag. 0A2

Cap. 4: ?odeo muitos-para-muitos

muitos user threads s&o suportados (mutipe'ados) por um n.mero


menor ou igua de kernel threads

mesmo -ue um dos user threads !o-ueie# os demais continuam


e'ecutando

os user threads e'ecutam em paraeo# em sistemas mutiprocessados


(ou em sistemas multicores)# pois os user threads s&o suportados por
vrios kernel threads

:F:; e GP%,; impementam o modeo muitos-para-muitos

user threads nestes $*s s&o criados# portanto# atravs de c"amadas a


s!stem calls

o $* n&o imita o n.mero de user threads -ue podem ser criados peo
usurio (o usurio pode criar -uantos -uiser)

/ig. 4.B# pag. 0A2# na pr'ima transpar3ncia



Cap. 4: 4ig. 4.B# pag. 0A2

Вам также может понравиться