RSS

Firefox w wielu procesach: będzie bezpieczniejszy, ale niech nie wolniejszy

Liczba odsłon: 15

Niektó­rzy do­świad­cza­ją tego częściej, inni rza­dziej. W cza­sie wędro­wa­nia po stro­nach WWW (szcze­gól­nie często zda­rza się to w przy­padku stron boga­tych w obiekty Flash) wszyst­kie okna prze­glą­darki WWW nagle zni­kają z ek­ranu, pozos­ta­wia­jąc po so­bie jedy­nie pole dia­lo­gowe infor­mu­jące o wy­stą­pie­niu błędu w cza­sie dzia­ła­nia pro­gramu. Niektóre prze­glą­dar­ki zacho­wują jesz­cze mini­mum przyzwoi­toś­ci i po powtór­nym urucho­mie­niu otwie­rają samo­czyn­nie strony oglą­dane w momen­cie awarii; w innych przy­pad­kach użytkow­nik – klnąc, na czym świat stoi – musi mozol­nie otwie­rać na nowo wszystkie stro­ny, na któ­rych mu zależy.

Prze­ło­mem w tym zakre­sie było roz­wią­za­nie zasto­so­wane przez Google w prze­glą­dar­ce Chrome. Polega ono na wy­dzie­le­niu modu­łów obsłu­gu­ją­cych poszcze­gólne otwar­te stro­ny WWW i urucha­mia­niu ich w nie­za­leż­nych od in­ter­fej­su użytkow­nika i siebie nawza­jem pro­ce­sach (archi­tek­tura „je­den pro­ces, jedno odwo­ła­nie”). Dzięki temu awaria pod­czas ren­de­ro­wa­nia lub obsłu­gi jed­nej ze stron – nie­za­leż­nie od tego, czy spo­wo­do­wana błę­dem w sa­mej prze­glą­dar­ce, czy też w ja­kimś module dodat­ko­wym (plug-in) – skut­kuje jedy­nie znik­nię­ciem jed­nej lub kilku otwar­tych stron (które zresztą można po chwili na nowo otwo­rzyć), a nie zamknię­ciem całego programu.

Firefox logoPodobny mecha­nizm ma zos­tać zasto­so­wany teraz w prze­glą­dar­ce Mozilla Fire­fox. Nie będzie to łatwe zada­nie: Fire­fox był od po­czątku pro­jek­to­wany jako apli­kacja mono­li­tyczna. Obecne wersje nie wyko­rzys­tują nawet poważ­niej podzia­łu na wątki, przez co ryso­wa­nie jed­nej skompli­ko­wa­nej gra­ficz­nie strony wstrzy­muje obsłu­gę wszyst­kich pozos­ta­łych stron. Autorzy chcą też zapo­biec dupli­kacji modu­łów funkcjo­nal­nych w poszcze­gól­nych pro­ce­sach pod­rzęd­nych prze­glą­dar­ki, uwspól­nia­jąc ele­menty takie jak pa­mięć pod­ręczna pli­ków i bufor obra­zów. Choć po­tencjal­nie zmniej­szy to nieco nie­za­wod­ność, za­po­bieg­nie wol­niej­szemu wczy­ty­wa­niu stron WWW i zwięk­sze­niu wyko­rzys­tania pamię­ci opera­cyjnej.

Wszystkie nowo­czes­ne systemy opera­cyj­ne od­dzie­la­ją od sie­bie poszcze­gól­ne pro­cesy i chro­nią je nawza­jem przed awariami. Nie ma w su­mie nic złego w tym, że auto­rzy opro­gra­mo­wa­nia wyko­rzys­tują ten mecha­nizm, by two­rzyć bar­dziej nie­za­wod­ne opro­gra­mo­wa­nie. Przy­naj­mniej pod wa­run­kiem, że po­dzie­lo­na na wiele pro­ce­sów apli­kac­ja nie działa wol­niej, niż kla­sycz­nie zbu­do­wana, a w szcze­gól­noś­ci — nie zaj­mu­je więcej cen­nej pamięci opera­cyj­nej. Nie jest bo­wiem sztuką napisać pro­gram, który będzie w sta­nie zabez­pie­czyć się przed włas­nymi błę­dami; sztuką jest napi­sać kod, który nie będzie zawie­rał błędów.


Hm, czy czasem to nie IE był pierwszą przeglądarką z wydzielonymi procesami dla otwartych stron? A przynajmniej MS nie zapowiadał czegoś takiego wcześniej? Jestem niemal pewien, że odnośnie IE taką zapowiedź słyszałem długo przed Chromem.
Niektó­rzy do­świad­cza­ją tego częściej, inni rza­dziej. W cza­sie wędro­wa­nia po stro­nach WWW (szcze­gól­nie często zda­rza się to w przy­padku stron boga­tych w obiekty Flash) wszyst­kie okna prze­glą­darki WWW nagle zni­kają z ek­ranu, pozos­ta­wia­jąc po so­bie jedy­nie pole dia­lo­gowe infor­mu­jące o wy­stą­pie­niu błędu w cza­sie dzia­ła­nia pro­gramu.

Hmm ... to chyba należę do trzeciej grupy – użytkowników którzy nie doświaczyli tego ani razu. Ani na IE 5, ani 6, 7, ani na najnowszym IE8.
maX: To masz wybitne szczęście. Mnie wielokrotnie różne przeglądarki WWW się zawieszały, w tym również Internet Explorer (wersje 6.0 i wcześniejsze, bo nowszych po prostu prawie w ogóle nie używam).
Jurgi: [...] Process separation was first introduced by Google in Chrome was later adopted by Microsoft in Internet Explorer 8. [...]
http://www.tgdaily.com/content/view/42415/140/
Być może wcześniej coś takiego zapowiadali, ale jeżeli chodzi o implementację — pierwszy był Google. Może też był pierwszy z pomysłem, tylko cicho siedzieli :)