See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Multitasking - Wikipedia

Multitasking

Da Wikipedia, l'enciclopedia libera.

In informatica, un sistema operativo multitasking permette di eseguire più programmi contemporaneamente: se ad esempio viene chiesto al sistema di eseguire contemporaneamente due processi A e B, la CPU eseguirà per qualche istante il processo A, poi per qualche istante il processo B, poi tornerà ad eseguire il processo A e così via. Il passaggio dal processo A al processo B e viceversa viene definito "cambio di contesto" (context switch). Le decisioni riguardanti l'esecuzione di un cambio di contesto tra due programmi vengono intraprese da un componente del sistema operativo, lo scheduler, il quale invierà le proprie decisioni ad un altro modulo del sistema operativo, il dispatcher che eseguirà effettivamente il cambio di contesto. A seconda di quale strategia di servizio (algoritmo di scheduling) venga seguita, lo scheduler controlla la ripartizione del tempo di CPU tra tutti i processi attivi.

Esistono due principali tecniche implementative del multitasking: senza prelazione (cooperative) e con prelazione (preemptive).

[modifica] Multitasking senza prelazione (cooperative)

Detto anche multitasking cooperative, in questo caso i programmi cedono volontariamente il controllo al sistema operativo una volta finita l'operazione in corso: è il caso di Mac OS fino alla versione 9, o di Windows 3.0 e 3.1. Il vantaggio maggiore di questo metodo è che non ha bisogno di supporto hardware e si può implementare su ogni tipo di architettura. Il grave svantaggio è che un singolo programma che si rifiuta di cedere il controllo, o che si ferma per qualche errore, può bloccare l'intero computer in quanto il sistema operativo non ha modo di riprendere il controllo da solo. Più precisamente lo scheduler senza prelazione attua un cambio di contesto solo in circostanze quali:

  • il passaggio di un programma dallo stato di esecuzione allo stato di attesa;
  • il termine del programma stesso;

[modifica] Multitasking con prelazione (preemptive)

La prelazione è l'atto di interrompere un programma a prescindere dalla volontà del programma stesso, ciò avviene grazie a delle particolari strutture hardware integrate nel microprocessore che automatizzano il cambio di contesto (context switch): in questo caso non solo lo scheduler interviene nelle circostanze previste da uno scheduler senza prelazione, ma anche in casi quali:

  • il passaggio di un programma dallo stato di esecuzione allo stato di pronto per essere eseguito;
  • il passaggio di un programma dallo stato di attesa allo stato di pronto per essere eseguito;

Un multitasking con prelazione (preemptive) non può quindi essere implementato se la piattaforma hardware non mette a disposizione gli strumenti necessari, ma in compenso, grazie all'hardware, il cambio di contesto è molto più efficiente favorendo l'adozione di quanti di tempo regolari e una esecuzione più "fluida" dei vari processi. Il preemptive multitask è stato adottato dalla maggior parte dei sistemi operativi moderni.

[modifica] Sunto storico sui sistemi operativi multitasking preemptive

I primi sistemi operativi che presentavano il multitasking preemptive ad uscire sul mercato sono stati l'OS-9 e il Sinclair QDOS, che equipaggiava la macchina Sinclair QL.

Il Sinclair QL (Quantum Leap) era un home/personal computer basato sul 68008 ad 8 bit. Il sistema operativo del QL, chiamato QDOS era decisamente innovativo per i suoi tempi. Questo sistema operativo, multitasking e multithreading, aveva integrati un potente interprete basic, programmi di utility e produttività e una primitiva GUI a finestre), ma risultò fortemente viziato da bug, perché immesso sul mercato troppo in fretta nell'intento di contrastare l'assai pubblicizzata uscita del Macintosh. Addirittura il Sinclair QL venne presentato ufficialmente al pubblico, senza che il sistema operativo fosse pronto, a causa delle difficoltà incontrate in fase di programmazione e testing. Successivamente i problemi furono risolti, ma Sinclair aveva già venduto la divisione computer ad Amstrad che preferì abbandonare il prodotto.

Il QL ebbe poco successo e la sfortuna di essere l'ultimo computer semi-professionale ad 8 bit ad uscire sul mercato all'incirca nello stesso periodo in cui vennero presentati i nuovi sistemi a 16 bit quali il PC IBM e i primi sistemi ibridi a 16/32 bit Macintosh, Atari ST e Amiga.

Quest'ultimo computer in particolare è stato il primo computer di largo successo sul mercato ad adottare il multitasking preemptive col suo AmigaOS, nel 1985, quando Unix era ancora appannaggio delle università e dei grandi centri di calcolo.

AmigaOS ha dimostrato al grande pubblico la validità di un'architettura multitasking preemptive, ulteriormente potenziata con l'aggiunta alle valide soluzioni hardware adottate nella piattaforma, che prevedevano la presenza nella macchina di un set di coprocessori per la grafica, il suono e soprattutto il controllo del BUS di memoria, delle schede aggiuntive con capacità DMA e delle periferiche.

Questi chip custom liberavano la CPU dalla necessità di calcoli aggiuntivi e dal controllo diretto delle periferiche. Questo fatto permetteva ottime prestazioni con processori dal basso numero di clock, ed erano praticamente lasciati a disposizione unica dei programmi di gestione e di produttività e alle necessità dei comandi di sistema.

Il meccanismo del multitasking preemptive su Amiga aveva modo così di essere immediatamente percepibile all'utente, in prima battuta a causa della facilità con cui il sistema veniva gestito, e, in seconda battuta veniva decisamente apprezzato perché l'utente poteva vedere di persona i diversi programmi girare in concomitanza, grazie alla gestione particolare degli schermi multipli di Amiga. Questa caratteristica unica permetteva all'utente di alzare a abbassare col mouse interi schermi grafici sovrapposti sullo schermo televisivo, fino a che due o più programmi diversi, mostravano entrambi i propri schermi grafici di output, aggiornati in tempo reale, in parallelo.

Negli anni '90 il multitasking preemptive conobbe vasta diffusione con i sistemi operativi ancora oggi utilizzati: Windows dalla versione Windows 95 in poi, BeOS, GNU/Linux, le varie versioni di Unix, e Mac OS X.


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -