Algoritmo dello struzzo: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Messbot (discussione | contributi)
top: +O
Uso con i deadlock: fonte sistemi operativi attuali
 
(5 versioni intermedie di 5 utenti non mostrate)
Riga 1:
In [[informatica]], l''''algoritmo''' dello struzzo è una [[strategia]] per ignorare potenziali problemi sulla base del fatto che questi siano estremamente rari. Prende il nome dall'effettodalla [[Struthio camelus|struzzo]]leggenda ovveroche "[[Struthio camelus#Leggenda della testa sotto la sabbia|ficcarelo struzzo ficchi la testa nella sabbia e fingerefinga che non ci siano problemi]]". Si utilizza quando risulta più conveniente consentire il verificarsi di un problema piuttosto che tentare di prevenirlo.
{{O|informatica|febbraio 2022}}
In [[informatica]], l''''algoritmo''' dello struzzo è una [[strategia]] per ignorare potenziali problemi sulla base del fatto che questi siano estremamente rari. Prende il nome dall'effetto [[Struthio camelus|struzzo]] ovvero "[[Struthio camelus#Leggenda della testa sotto la sabbia|ficcare la testa nella sabbia e fingere che non ci siano problemi]]". Si utilizza quando risulta più conveniente consentire il verificarsi di un problema piuttosto che tentare di prevenirlo.
 
== Uso con i deadlock ==
Questo approccio può essere utilizzato nella [[Concorrenza (informatica)|programmazione concorrente]] per gestire [[Stallo (informatica)|deadlock]] che si ritiene esseresiano molto rari e il cui costo per rilevarli o prevenerliprevenirli sarebbe elevato. Ad esempio, se ogni PC si blocca una volta ogni 10 anni, un singolo riavvio potrebbe essere meno doloroso delle restrizioni necessarie per prevenire il blocco.<ref>{{Cita web|url=https://cs.nyu.edu/~gottlieb/courses/os/class-notes.html|titolo=OS 202 Class Notes|sito=cs.nyu.edu|accesso=2022-01-29}}</ref>
 
Un gruppo di [[Processo (informatica)|processi]] è in [[Stallo (informatica)|stallo]] se ciascuno è in attesa di un evento che può essere generato solo da un altro processo del medesimo gruppo. In genere si tratta del rilascio di una risorsa, quindi nessuno dei processi può continuare l'esecuzione, rilasciare risorse ed essere attivato.<ref>{{Cita web|url=https://cgi.cse.unsw.edu.au/~cs3231/21T1/lectures/lect04.pdf|titolo=Operating Systems}}</ref>
 
L'algoritmo dello struzzo finge che non ci siano problemi ed è ragionevole usarlo se i deadlock si verificano molto raramente e il costo per prevenirli sarebbe elevato. {{Senza fonte|I sistemi operativi multitasking, compresi [[Linux]] e [[Windows]], generalmente adottano questo approccio.<ref>{{Cita libro|autore=Abraham Silberschatz|titolo=Sistemi Operativi. Concetti ed esempi|edizione=10|anno=2019|editore=Pearson|p=350|ISBN=9788891904560}}</ref>
 
Sebbene l'utilizzo dell'algoritmo dello struzzo sia uno dei metodi per affrontare i [[Stallo (informatica)|deadlock]], esistono altri metodi efficaci come la prevenzione dinamica, [[Algoritmo del banchiere|l'algoritmo del banchiere]], il rilevamento e il ripristino.<ref>[http://www.ceng.metu.edu.tr/~genc/334/Ch_6_Deadlocks.ppt Middle East Technical University. Deadlocks.]</ref>
 
== Compromessi ==
Nonostante l'efficienza, l'algoritmo dello struzzo baratta la correttezza per la comodità. Tuttavia, poiché l'algoritmo si occupa direttamente di casi estremi, non è un grande compromesso. Infatti, il metodo più semplice e utilizzato per risolvere un deadlock è il riavvio.
 
Alcuni algoritmi con scarse prestazioni nel caso peggiore, sono comunemente usati perché risultano poco efficienti solo su casi artificiali che non si verificano nella pratica; esempi tipici sono l'[[algoritmo del simplesso]] e l'algoritmo di inferenza del tipo per [[Standard ML]]. Problemi come l'overflow di interi nei linguaggi con interi a larghezza fissa vengono anch'essi spesso ignorati perché si verificano solo in casi eccezionali che non emergono con input pratici.
 
== Voci correlate ==
* [[End-to-end|Principio end-to-end]]
 
== Note ==
<references/>
 
== Voci correlate ==
* [[End-to-end|Principio end-to-end]]
 
{{portale|informatica}}
 
[[Categoria:Controllo della concorrenza]]