RSS

Wieloprogramowość, wielozadaniowość, współbieżność, wielodostęp

Artykuł dostępny również w językach:
Liczba odsłon: 4979

Cztery has­ła sta­no­wią­ce ty­tuł te­go ar­ty­ku­łu brzmią nie­wąt­pli­wie tech­nicz­nie i ucze­nie. Wielu użyt­kow­ni­ków kom­pu­te­rów sły­sza­ło je wie­lo­krot­nie, spo­ra część z nich nie wie jed­nak tak na­praw­dę, co ozna­cza­ją. Ten ar­ty­kuł ma za za­da­nie wy­tłu­ma­czyć je w moż­li­wie przy­stęp­ny spo­sób.

Wieloprogra­mo­wość (ang. mul­ti­pro­gram­ming) opi­su­je zdol­ność kom­pu­te­ra do prze­cho­wy­wa­nia w pa­mię­ci opera­cyj­nej ko­du i da­nych wie­lu pro­gra­mów i prze­łą­cza­nia się mię­dzy ty­mi pro­gra­ma­mi. Najprost­szym przy­kła­dem są pro­gra­my re­zy­dent­ne dla sys­te­mu opera­cyj­ne­go MS-DOS, ta­kie jak Side­Kick. Program re­zy­dent­ny SideKickpo uru­cho­mie­niu koń­czy na­tych­miast swo­ją pra­cę, ko­rzy­sta­jąc jed­nak z funk­cji sys­te­mu koń­czą­cej pro­ces bez usu­wa­nia go z pa­mię­ci opera­cyj­nej. Ponie­waż wcześ­niej jesz­cze re­je­stru­je też pro­ce­du­rę ob­słu­gi przer­wa­nia (na przy­kład przer­wa­nia kla­wia­tu­ry), jest w sta­nie prze­jąć ste­ro­wa­nie nad kom­pu­te­rem w mo­men­cie po­ja­wie­nia się wy­zwa­la­ją­ce­go go zda­rze­nia. W przy­pad­ku pro­gra­mu Side­Kick zda­rze­niem ta­kim by­ło na­ciś­nię­cie obu kla­wi­szy Shift jed­no­cześ­nie: nie­za­leż­nie od te­go co użyt­kow­nik ro­bił przed chwi­lą na kom­pu­te­rze, na ekra­nie po­ja­wia­ły się ok­na pro­gra­mu Side­Kick; ko­lej­ne uży­cie tej sa­mej kom­bi­nac­ji kla­wi­szy ukry­wa­ło je, umoż­li­wia­jąc po­wrót do przer­wa­nej pra­cy.

Wieloprogra­mo­wość mo­że obej­mo­wać spe­cjal­nie przy­sto­so­wa­ne do te­go ce­lu pro­gra­my, na­zy­wa­ne pro­gra­ma­mi re­zy­dent­ny­mi (ang. re­si­dent pro­gram), lub naj­zwyk­lej­sze pro­gra­my użyt­ko­we. W tym dru­gim przy­pad­ku nie­zbęd­ne jest sko­rzy­sta­nie z nad­rzęd­ne­go pro­gra­mu ste­ru­ją­ce­go, prze­ry­wa­ją­ce­go we wska­za­nym mo­men­cie dzia­ła­nie jed­nej apli­kac­ji i po­zwa­la­ją­ce­go użyt­kow­ni­ko­wi wy­brać in­ną. Przykła­dem ta­kie­go pro­gra­mu za­rzą­dza­ją­ce­go jest MS-DOS Shell sys­te­mu MS-DOS 5.0. W skraj­nym przy­pad­ku tym pro­gra­mem za­rzą­dza­ją­cym mo­że być śro­do­wis­ko gra­ficz­ne (na przy­kład Micro­soft Win­dows) lub sam sys­tem opera­cyj­ny, za­zwy­czaj jed­nak wy­mu­sza to two­rze­nie opro­gra­mo­wa­nia już z uwzględ­nie­niem moż­li­woś­ci, że pro­gram stra­ci kon­tro­lę nad kom­pu­te­rem i zo­sta­nie prze­su­nię­ty na dru­gi plan.

MS-DOS Shell
Powłoka tek­sto­wo-gra­ficz­na MS-DOS Shell (tu: z wer­sji 6.22 sys­te­mu MS-DOS) umoż­li­wia­ła uru­cha­mia­nie wie­lu apli­kac­ji MS-DOS i prze­łą­cza­nie się po­mię­dzy ni­mi za po­mo­cą kom­bi­nac­ji kla­wi­szy Ctrl+Esc i pros­te­go me­nu

Jednoczesne prze­cho­wy­wa­nie kil­ku pro­gra­mów w pa­mię­ci nie im­pli­ku­je jed­nak moż­li­woś­ci jed­no­czes­ne­go ich dzia­ła­nia, czy­li wie­lo­za­da­nio­wość (ang. mul­ti­task­ing). Wielozada­nio­wość w skró­cie po­le­ga na okre­so­wym, na­prze­mien­nym prze­ry­wa­niu i wzna­wia­niu dłu­go­trwa­łych ope­rac­ji w ce­lu stwo­rze­nia ilu­zji jed­no­czes­nej ich reali­zac­ji. Przykła­dem wie­lo­za­da­nio­wo­ści jest pro­gram re­zy­dent­ny bu­fo­ru­ją­cy da­ne wy­sy­ła­ne na dru­kar­kę, dzie­lą­cy je na ma­lut­kie blo­ki i wy­sy­ła­ją­cy te blo­ki dru­kar­ce w ra­mach przer­wa­nia ze­ga­ro­we­go, zu­peł­nie nie­za­leż­nie od rea­li­zo­wa­ne­go pro­gra­mu głów­ne­go.

Jest to jed­nak wie­lo­za­da­nio­wość pry­mi­tyw­na, po­wią­za­na z jed­nym tyl­ko za­da­niem po­bocz­nym. Prawdzi­wa wie­lo­za­da­nio­wość ściś­le zwią­za­na jest z wie­lo­pro­gra­mo­wo­ścią zwyk­łych apli­kac­ji, umoż­li­wia bo­wiem jed­no­czes­ne uru­cho­mie­niu wie­lu zwyk­łych pro­gra­mów apli­ka­cyj­nych i na­prze­mien­ne wy­ko­ny­wa­nie frag­men­tów ich ko­du. Prostszą i bar­dzo efek­tyw­ną, lecz wy­ma­ga­ją­cą ob­słu­gi ze stro­ny sa­mych apli­kac­ji oraz po­dat­ną na błę­dy od­mia­ną wie­lo­za­da­nio­wo­ści jest wie­lo­za­da­nio­wość ko­ope­ra­tyw­na (ang. co­opera­tive mul­ti­task­ing). W od­mia­nie tej pro­gram sam okre­śla mo­ment, w któ­rym od­da­je ste­ro­wa­nie sys­te­mo­wi ope­ra­cyj­ne­mu i ze­zwa­la na prze­ka­za­nie go in­nym apli­kac­jom; za­zwy­czaj dzie­je się to w mo­men­cie, gdy pro­gram roz­po­czy­na ocze­ki­wa­nie na ko­lej­ne po­le­ce­nia użyt­kow­ni­ka. Wiel­ką za­le­tą tej me­to­dy jest szyb­kość: dzia­ła­nie pro­gra­mu jest prze­ry­wa­ne je­dy­nie w tych mo­men­tach, gdy jest to fak­tycz­nie nie­zbęd­ne. Nie za­cho­dzi też oba­wa, że pro­gram zo­sta­nie prze­rwa­ny w miej­scu, w któ­rym ko­rzy­sta jesz­cze z ja­kichś za­so­bów (na przy­kład za­pi­su­je da­ne do pli­ku), co mog­ło­by spo­wo­do­wać kon­flikt z uaktyw­nia­nym za­raz po nim in­nym pro­gra­mem. Jeżeli jed­nak pro­gram za­wie­si się, nie od­da­jąc ste­ro­wa­nia sys­te­mo­wi, za­wie­si się też ca­ły sys­tem opera­cyj­ny oraz po­zo­sta­łe apli­kac­je. Z kolei źle na­pi­sa­ne pro­gra­my, reali­zu­ją­ce dłu­go­trwa­łe ope­rac­je obli­cze­nio­we bez wy­star­cza­ją­co częs­te­go prze­ka­zy­wa­nia ste­ro­wa­nia, mo­gą zna­czą­co zmniej­szyć re­spon­syw­ność inter­fej­su użyt­kow­ni­ka lub wręcz wstrzy­my­wać pra­cę aż do mo­men­tu ukoń­cze­nia obli­czeń.

MS-Windows 2.0
Micro­soft Win­dows 2.03; MS Win­dows umoż­li­wia­ło jed­no­czes­ne uru­cha­mia­nie wie­lu przy­sto­so­wa­nych do te­go śro­do­wis­ka apli­kac­ji, pre­zen­to­wa­nie wy­ni­ków ich pra­cy w ok­nach gra­ficz­nych, prze­łą­cza­nie się po­mię­dzy pro­gra­ma­mi, wy­mia­nę da­nych a na­wet pros­tą wie­lo­za­da­nio­wość ko­ope­ra­tyw­ną

Dlatego dzi­siaj je­dy­nym fak­tycz­nie ak­cep­to­wa­nym w świe­cie kom­pu­te­rów oso­bis­tych mo­de­lem wie­lo­za­da­nio­wo­ści jest wie­lo­za­da­nio­wość z wy­wła­szcz­aniem (ang. pre­emp­tive mul­ti­task­ing). W tym mo­de­lu to sys­tem opera­cyj­ny okre­śla kie­dy pro­gram ma stra­cić do­stęp do pro­ce­so­ra i któ­re­mu pro­gra­mo­wi dać przy­wi­lej funkcjo­no­wa­nia przez ko­lej­ny kwant cza­su. Okres dzia­ła­nia pro­gra­mów jest na ty­le krót­ki (za­zwy­czaj od 5 do 100 ms), że prze­ry­wa­ne dzia­ła­nie jest po­strze­ga­ne ja­ko pra­ca współ­bież­na, choć ta­ką nie jest. Dzięki te­mu, że prze­ry­wa­nie i wzna­wia­nie pro­gra­mów za­le­ży od sys­te­mu opera­cyj­ne­go, ża­den z nich nie ma moż­li­woś­ci za­wie­sze­nia ca­łe­go kom­pu­te­ra — na­wet, je­że­li sam „pój­dzie w ma­li­ny”. Niestety, ta­kie okre­so­we prze­ry­wa­nie jest z ko­niecz­noś­ci nie­co wol­niej­sze; po­nad­to pro­gra­my mu­szą być przy­go­to­wa­ne, że ich dzia­ła­nie zo­sta­nie przer­wa­ne w bli­żej nie­okre­ślo­nym mo­men­cie, a więc tak sys­tem, jak i sa­me pro­gra­my mu­szą za­wie­rać me­cha­niz­my unie­moż­li­wia­ją­ce na przy­kład jed­no­czes­ne na­prze­mien­ne za­pi­sy­wa­nie da­nych do te­go sa­me­go pli­ku przez dwa róż­ne pro­gra­my.

Jakkol­wiek wie­lo­za­da­nio­wość za­pew­nia złu­dze­nie jed­no­czes­ne­go dzia­ła­nia wie­lu pro­gra­mów, nie dzia­ła­ją one nig­dy fak­tycz­nie rów­no­cześ­nie, a je­dy­nie bar­dzo szyb­ko prze­ka­zu­ją so­bie moż­li­wość wy­ko­na­nia ko­lej­ne­go krót­kie­go frag­men­tu ko­du. Jeżeli jed­nak kom­pu­ter wy­po­sa­ży się w kil­ka pro­ce­so­rów (lub pro­ce­sor wie­lo­rdze­nio­wy), moż­li­we sta­je się uru­cho­mie­nie dwóch pro­gra­mów cał­ko­wi­cie rów­no­leg­le — każ­dy na osob­nym rdze­niu pro­ce­so­ra. Taki ro­dzaj prze­twa­rza­nia na­zy­wa sie współ­bież­no­ścią (ang. con­cur­ren­cy). Wymaga on jesz­cze więk­szej uwa­gi pod­czas pro­gra­mo­wa­nia, gdyż na­si­la się ry­zy­ko jed­no­czes­ne­go do­stę­pu do za­so­bów: te­raz dwa pro­gra­my na­praw­dę dzia­ła­ją rów­no­cześ­nie i mo­gą pró­bo­wać w tym sa­mym cza­sie wy­ko­ny­wać te sa­me ope­rac­je! Ponadto tech­ni­ki pro­gra­mo­wa­nia, któ­re na jed­nym pro­ce­so­rze dzia­ła­ją do­sko­na­le, mo­gą skut­ko­wać okre­so­wym wstrzy­my­wa­niem jed­ne­go z pro­gra­mów wy­ko­ny­wa­nych współ­bież­nie w ocze­ki­wa­niu na da­ne ge­ne­ro­wa­ne przez dru­gi.

Task Manager
Współbież­ność: je­że­li tyl­ko kom­pu­ter zo­sta­nie wy­po­sa­żo­ny w wie­le jed­nos­tek prze­twa­rza­ją­cych da­ne, ob­cią­ża­jąc je róż­ny­mi pro­gra­ma­mi (lub róż­ny­mi frag­men­ta­mi te­go sa­me­go pro­gra­mu) moż­na uzys­kać prze­twa­rza­nie praw­dzi­wie jed­no­czes­ne

Wraz z po­ja­wia­niem się wie­lo­pro­gra­mo­wo­ści i wie­lo­za­da­nio­wo­ści w świe­cie kom­pu­te­rów oso­bis­tych, po­wró­co­no też do idei zna­nych ze świa­ta main­frame i mi­ni­kom­pu­te­rów, a więc do współ­dzie­le­nia za­so­bów kom­pu­te­ra po­mię­dzy kil­ku użyt­kow­ni­ków — tak zwa­ne­go wie­lo­do­stę­pu (ang. mul­ti­user access). Najprostszą for­mą współ­dzie­le­nia jest udos­tęp­nia­nie usług i da­nych za po­śred­nic­twem łącz sie­cio­wych: kom­pu­ter z uru­cho­mio­ną usłu­gą ser­we­ra pli­ków czy ser­we­ra HTTP sta­je się w pe­wien spo­sób wie­lo­do­stęp­ny. Prawdzi­wym wie­lo­do­stę­pem jest jed­nak do­pie­ro moż­li­wość ob­słu­gi wie­lu in­ter­ak­tyw­nych ses­ji użyt­kow­ni­ków. W świe­cie Uniksa ta­ką wie­lo­do­stęp­ność za­pew­nia moż­li­wość zdal­ne­go za­lo­go­wa­nia się na kom­pu­ter za po­mo­cą łą­cza sze­re­go­we­go czy usług Telnet lub SSH i uzys­ka­nia do­stę­pu do pow­ło­ki sys­te­mu (al­bo na­wet wy­ko­rzys­ta­nie me­cha­niz­mów sie­cio­wych X Win­dow lub VNC w ce­lu stwo­rze­nia no­wej zdal­nej ses­ji gra­ficz­nej); w Win­dows za peł­ny wie­lo­do­stęp od­po­wia­da­ją do­stęp­ne tyl­ko w wer­sjach ser­we­ro­wych usłu­gi ter­mi­na­lo­we.

Już te­raz wszyst­kie no­wo­czes­ne sys­te­my opera­cyj­ne ob­słu­gu­ją wie­lo­pro­gra­mo­wość, wie­lo­za­da­nio­wość z wy­własz­cze­niem, a na­wet – o ile sprzęt na to po­zwa­la – współ­bież­ność. Coraz częś­ciej po­ja­wia­ją się też me­cha­niz­my wie­lo­do­stę­pu: naj­prost­sze to­wa­rzy­szą nam już od daw­na, tyl­ko te bar­dziej skom­pli­ko­wa­ne ma­ją utrud­nio­ny (ze wzglę­dów li­cen­cyj­nych) start, znaj­du­jąc swo­je miej­sce ciąg­le jesz­cze głów­nie w otwar­tych sys­te­mach unik­so­wych. Biorąc pod uwa­gę co­raz więk­szą wy­daj­ność łą­czy inter­ne­to­wych i co­raz częś­ciej po­ja­wia­ją­cą się ko­niecz­ność zdal­ne­go wy­ko­ny­wa­nia pra­cy na kom­pu­te­rach służ­bo­wych i do­mo­wych, na­wet fir­ma Micro­soft bę­dzie mu­sia­ła pew­ne­go dnia prze­ła­mać się i udos­tęp­nić do­mo­wym użyt­kow­ni­kom Win­dows ist­nie­ją­cą w tym sys­te­mie, lecz nie­dos­tęp­ną funk­cję jed­no­czes­ne­go dzia­ła­nia kil­ku zdal­nych ses­ji in­ter­ak­tyw­nych.


"Responsywność" – cóż to za potwór słowny? W słowniku języka polskiego PWN nie istnieje takie słowo. Czy autor artykułu nie zna polskiego odpowiednika?
Zastanawiałem się nad tym, ale jednak – choć z ciężkim sercem – zdecydowałem się użyć takiego zapożyczenia. Powód? Polskim odpowiednikiem jest sformułowanie „zdolność do szybkiego, pozbawionego opóźnień reagowania na działania użytkownika”, które trudno nazwać krótkim i zwięzłym.