Threads x procesy

Karel Zak zakkr na zf.jcu.cz
Čtvrtek Říjen 11 11:54:56 CEST 2001


On Thu, Oct 11, 2001 at 11:21:53AM +0200, martin.kula na deltaes.cz wrote:
> Zdravim
> 
> Resim nasledujici problem:
> Program na hw s omezenou pameti a bez swapu (bez hd), ktery navaze TCP
> spojeni s 1 - mnoha zarizenimi a tyto spojeni drzi permanentne po dobu
> hodin, dnu, tydnu ..... pripadne data tekouci z/k zarizenim jsou
> ukladany/cteny do/ze shared memory.
> Mozne reseni je obsluha sekvencne jednim procesem nebo soucasna obsluha
> ....
> Pro druhy pripad mam nasledujici dilema:
> pozit fork a 1-mnoho stejnych procesu nebo threads.
> Sam jsem si jiz napsal sve pro i proti ale rad bych porovnal sve nazory s
> okolim.

 - u forku stabilita muze byt vetsi protoze pri chybe jednoho potomka 
   nemusi nutne pojit cela aplikace.
 - u threadu muzete usetrit pamet pokud vam zadani aplikace dovoluje
   ji sdilet (narozdil od forku kde se muzete nanejvys spolehnout jen
   na copy-on-write)
 - u threadu se snadneji pracuje se sdilenou pameti nez v pripade fork
   reseni kde budete muset pouzivat napr. IPC (nakonec to muze i
   ovlivnit stabilitu:-)

 Pokud vam nejaka prodleva mezi pozadavkem klienta a jeho vyrizenim 
 nevadi (coz je caste) tak mozna, ze reseni obsluhovat to jednim 
 procesem nemusi byt nutne spatne. Tedy lepe reseni pomoci dvou 
 procesu (threadu). Kdy jeden prijma pozadavky a dava do fronty a 
 dalsi je s te fronty cte a vyrizuje. Pokud je zrejme ze u toho 
 vyrizovani bude nejake cekani (napr. na disk nebo sit apod.) nebo 
 mate SMP stroj tak tech threadu "vyrizovatelu" muze byt i vice. Pokud 
 jsou mezi pozadavky klienta nejake prodlevy tak si myslim, ze casto 
 pouzivany model kdy pocet klientu = pocet threadu je zbytecnost. 
 Protoze po dobu co klient nic od serveru nechce tak ten thread klidne
 muze obslouzit neco jineho. Kazdy thread preci jen nejakou tu pamet sezere.

> - zatizeni CPU
> - slozitost programovani

 Budete muset vyresit zamykani te sdilene pameti (a to u jakehokoliv
 reseni), tam bych videl to uzke hrdlo, ktere snadno da napsat blbe
 a ktere se treba projevi az u vetsiho poctu konkurujicich si klientu.
 
        Karel
 
-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/
 
 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz


Další informace o konferenci Linux