VyÜlo v t²denφku: | COMPUTERWORLD |
╚φslo: | 40/92 |
RoΦnφk: | 1992 |
Rubrika/kategorie: | Co (ne)najdete ve slovnφku |
Tu situaci jist∞ znßte i ze svΘho ₧ivota: stojφ-li proti sob∞ dva navzßjem se vyluΦujφcφ po₧adavky, nenφ mo₧nΘ vyhov∞t ani jednomu z nich. KonkrΘtnφch podob lze najφt hodn∞ - nap°φklad dv∞ auta, kterß vjedou proti sob∞ do ·zkΘ uliΦky, ve kterΘ se nemohou vyhnout - dva lidΘ, kte°φ cht∞jφ zφskat v²luΦn∞ pro sebe p°edm∞t, dostupn² jen v jedinΘm exemplß°i - dv∞ politickΘ reprezentace, kterΘ ... (ale to sem rad∞ji nezatahujme).
╪eÜenφ t∞chto zdßnliv∞ bezv²chodn²ch situacφ (pomineme-li ty politickΘ), mohou b²t v zßsad∞ dvojφho druhu: preventivnφ, sna₧φcφ se zamezit tomu, aby p°φsluÜnß situace v∙bec vznikla, a dßle takovΘ, kterΘ problΘm °eÜφ a₧ potΘ, co k n∞mu doÜlo. Ilustrujme si to prßv∞ na p°φkladu ·zkΘ cesty, kde nemohou projet dv∞ auta vedle sebe. Preventivnφ °eÜenφ by spoΦφvalo v zavedenφ semafor∙ na oba konce tΘto ·zkΘ cesty, zatφmco druh² typ °eÜenφ by spoΦφval v urΦenφ toho, kdo mß v p°φpad∞ ucpßnφ cesty ustoupit - tj. kterΘ auto mß vycouvat, respektive dßt druhΘmu autu p°ednost.
M∙₧e ale k podobn²m situacφm dochßzet i v souvislosti s v²poΦetnφ technikou? M∙₧e, a to nejen tehdy, kdy₧ se dva lidΘ "perou" o jeden poΦφtaΦ. Vra¥me se na chvφli do doby d∞rn²ch Ütφtk∙ a p°edstavme si vφce·lohov² operaΦnφ systΘm, ve kterΘm jedna ·loha prßv∞ tiskne na tiskßrn∞, a nßhle si vzpomene, ₧e chce pracovat jeÜt∞ i se snφmaΦem d∞rn²ch Ütφtk∙. Ten vÜak prßv∞ pou₧φvß jinß ·loha, kterß ale zase Φekß, a₧ bude mφt mo₧nost si n∞co vytisknout takΘ na tiskßrn∞. A jeliko₧ s ka₧d²m z t∞chto za°φzenφ m∙₧e v₧dy pracovat jen jedinß ·loha, a ₧ßdnß z naÜich dvou ·loh nehodlß "pustit" to za°φzenφ, kterΘ ji₧ jednou zφskala, mßme zde p°φmo uΦebnicov² p°φklad vzßjemnΘho zablokovßnφ. Existuje pro n∞j dokonce i velmi p°esnΘ pojmenovßnφ: deadlock, p°φpadn∞ tΘ₧: deadly embrace (Φesky pak: smrtelnΘ objetφ).
TakΘ zde jsou v principu mo₧nΘ dva druhy °eÜenφ: preventivnφ by znamenalo, ₧e ka₧dß ·loha musφ po₧ßdat operaΦnφ systΘm najednou o vÜechna za°φzenφ, se kter²mi chce pracovat, a kterß nemohou b²t sdφlena vφce ·lohami souΦasn∞ (tj. nesmφ pozd∞ji p°ijφt s dalÜφm po₧adavkem, kter² by pak mohl vΘst ke vzniku smrtelnΘho objetφ). Alternativou je mo₧nost odebrat ji₧ d°φve p°id∞lenΘ za°φzenφ a₧ v okam₧iku, kdy ke smrtelnΘmu objetφ skuteΦn∞ dojde - nap°φklad na zßklad∞ priorit jednotliv²ch ·loh Φi jin²ch kritΘriφ.
Mo₧nost vzniku smrtelnΘho objetφ nenφ samoz°ejm∞ v²hradnφ domΘnou d∞rnoÜtφtkov²ch poΦφtaΦ∙. Nap°φklad ve v²poΦetnφm systΘmu s architekturou klient-server m∙₧e dojφt k tomu, ₧e klient Φekß na data od serveru, ale ten mu nic neposφlß proto, ₧e naopak sßm Φekß na data od svΘho klienta - tato varianta smrtelnΘho objetφ b²vß n∞kdy oznaΦovßna jako starvation deadlock (Φesky nejspφÜe: vzßjemnΘ vyhladov∞nφ).
Jin²m p°φkladem m∙₧e b²t takovß situace p°i vzßjemnΘ komunikaci dvou za°φzenφ, ve kterΘ se ka₧dΘ z nich sna₧φ vysφlat, ale druhΘ nic nep°ijφmß, nebo¥ mß plnΘ vstupnφ vyrovnßvacφ pam∞ti (tzv. buffery), a nem∙₧e je vyprßzdnit, proto₧e Φekß na ·sp∞ÜnΘ odeslßnφ sv²ch dat. TΘto variant∞ se pak °φkß takΘ constipation (zßcpa).