Kuo skiriasi procesas ir gija?

Kuo techniškai skiriasi procesas ir gija?

Man atrodo, kad toks žodis kaip "procesas" yra per daug vartojamas, be to, yra aparatinės ir programinės įrangos gijos. O kaip dėl lengvųjų procesų tokiose kalbose kaip Erlang? Ar yra galutinė priežastis vartoti vieną terminą, o ne kitą?

Sprendimas

Tiek procesai, tiek gijos yra nepriklausomos vykdymo sekos. Įprastas skirtumas yra tas, kad gijos (to paties proceso) vykdomos bendroje atminties erdvėje, o procesai - atskirose atminties erdvėse.

Nežinau, apie kokias "aparatines" vs "programines" gijas kalbate. Gijos yra operacinės aplinkos, o ne procesoriaus savybė (nors procesorius paprastai atlieka operacijas, dėl kurių gijos tampa efektyvios).

Erlang vartoja terminą "procesas", nes jame nėra bendros atminties daugiaprogramio programavimo modelio. Vadinant juos "gijomis" reikštų, kad jie turi bendrąją atmintį.

Komentarai (10)

Programą sudaro vienas ar daugiau procesų. Paprasčiausiai procesas yra vykdoma programa. Proceso kontekste veikia viena ar daugiau gijų. Gija yra pagrindinis vienetas, kuriam operacinė sistema paskirsto procesoriaus laiką. Gija gali vykdyti bet kurią proceso kodo dalį, įskaitant tas, kurias šiuo metu vykdo kita gija. Srautas yra vykdymo vienetas, kurį programa turi suplanuoti rankiniu būdu. Srautai vykdomi juos suplanavusių gijų kontekste.

Pavogta iš čia.

Komentarai (2)

Ir gijos, ir procesai yra atominiai OS išteklių paskirstymo vienetai (t. y. yra lygiagretumo modelis, apibūdinantis, kaip tarp jų paskirstomas procesoriaus laikas, ir kitų OS išteklių nuosavybės modelis). Tarp jų yra skirtumas:

  • bendri ištekliai (gijos pagal apibrėžimą dalijasi atmintimi, joms nepriklauso niekas, išskyrus steką ir vietinius kintamuosius; procesai taip pat gali dalytis atmintimi, tačiau tam yra atskiras OS palaikomas mechanizmas)
  • Paskirstymo erdvė (branduolio erdvė procesams ir vartotojo erdvė gijoms)

Gregas Hewgillas pirmiau buvo teisus dėl Erlang žodžio "procesas" reikšmės, ir čia yra'diskusija apie tai, kodėl Erlang galėtų būti lengvi procesai.

Komentarai (0)