Qual è il problema del barbiere addormentato?
Nel mondo dei computer, un problema del barbiere addormentato è il nome fantasioso usato per identificare una situazione in cui i processi sono attualmente in uno schema di attesa in attesa di risorse per raggiungere un qualche tipo di risoluzione. Il riferimento al barbiere addormentato ha a che fare con la mancanza di produttività che un barbiere sperimenta quando non ci sono clienti nel negozio in attesa di un taglio di capelli. Questo gioca sul vecchio stereotipo di un barbiere che dorme sulla sua sedia fino a quando un cliente non entra dalla porta in cerca di un taglio di capelli. Secondo questa analogia, il barbiere si sveglia immediatamente dal suo sonno quando viene svegliato da un cliente, fornisce il taglio di capelli e torna immediatamente a dormire una volta che il cliente è fuori dalla porta, solo per svegliarsi quando entra il cliente successivo. In termini di funzione del computer, ciò si riferisce alle risorse che sono in uno stato dormiente fino a quando non sono necessarie per un processo, per poi tornare allo stesso stato fino all'avvio del processo successivo, creando un intervallo di tempo tra i processi che potrebbe ridurre l'efficienza complessiva.
Le immagini usate per descrivere il problema del barbiere addormentato hanno a che fare con un barbiere che ha solo un cliente occasionale, di solito finisce con uno prima che arrivi il cliente successivo, o almeno arriva al secondo cliente con solo un minimo di attesa. Finché il numero di clienti in attesa in coda è ridotto al minimo e nessuno diventa impaziente e se ne va, si può dire che non c'è nessun problema e il barbiere solitario sta al passo con la domanda. Allo stesso tempo, se il negozio viene inondato di clienti che richiedono tagli di capelli ma il barbiere è già impegnato, allora è molto probabile che alcuni di questi clienti non aspettino e lasceranno.
Lo stesso tipo di problema del barbiere addormentato può essere visto con vari tipi di situazioni di elaborazione che coinvolgono la tecnologia informatica che necessita di una sorta di aggiornamento per gestire un aumento della domanda. Ad esempio, se il call center per un'azienda è inondato di chiamate in entrata da parte di clienti che desiderano un aiuto ora, ma il numero di rappresentanti del servizio clienti non è sufficiente per tenere il passo con la domanda, una parte di tali clienti abbandonerà le loro chiamate e eventualmente cercare una relazione con un concorrente. Allo stesso modo, all'interno dei sistemi di elaborazione di una rete di computer, se le risorse dedicate all'elaborazione tempestiva delle attività sono insufficienti per il numero di attività coinvolte, alcuni di questi processi comporteranno ciò che è noto come time-out, e possibilmente anche terminare. Il risultato finale è una perdita di efficienza che può a sua volta rallentare altri processi programmati per seguire quelli scaduti.
Non esiste un modo giusto per gestire un problema del barbiere addormentato. A seconda della configurazione delle apparecchiature informatiche utilizzate, potrebbero esserci modi per implementare nuovi approcci che aiutano a riallocare le risorse in modo che le attività possano essere gestite con maggiore efficienza. Ad esempio, la riconfigurazione dei servizi di operatore automatico per un call center potrebbe comportare un risparmio di tempo indirizzando automaticamente la chiamata successiva nella coda di attesa a un rappresentante senza che tale rappresentante raccolga manualmente un'altra linea in sospeso. Così come l'aggiunta di ulteriori barbieri a un negozio semplifica la gestione dei clienti alla ricerca di un taglio di capelli, l'aggiunta di più risorse in termini di linee in entrata e postazioni di assistenza clienti per gestire il volume delle chiamate renderebbe anche più semplice gestire il volume senza innescare molti ritardi . Allo stesso modo, espandere le risorse su una rete per supportare funzioni e processi aggiuntivi può anche aiutare a ridurre al minimo un problema del barbiere addormentato e consentire al sistema di funzionare in modo più efficiente.