En aquest article, entendrem el model multithreading al sistema operatiu.
Model multifils:
El multithreading permet a l'aplicació dividir la seva tasca en fils individuals. En multifils, el mateix procés o tasca es pot fer pel nombre de fils, o podem dir que hi ha més d'un fil per realitzar la tasca en multithreading. Amb l'ús de multithreading, es pot aconseguir la multitasca.
Com puc trobar aplicacions amagades a Android
El principal inconvenient dels sistemes de fil únic és que només es pot realitzar una tasca alhora, de manera que per superar l'inconvenient d'aquest fil únic, hi ha multithreading que permet realitzar múltiples tasques.
Per exemple:
A l'exemple anterior, client1, client2 i client3 accedeixen al servidor web sense esperar. En multithreading, es poden executar diverses tasques al mateix temps.
En un sistema operatiu, els fils es divideixen en el fil de nivell d'usuari i el fil de nivell de nucli. Els fils a nivell d'usuari es van gestionar de forma independent per sobre del nucli i, per tant, es van gestionar sense cap suport del nucli. En canvi, el sistema operatiu gestiona directament els fils a nivell del nucli. No obstant això, hi ha d'haver una forma de relació entre els fils de nivell d'usuari i de nucli.
Existeixen tres models multithreading establerts que classifiquen aquestes relacions:
- Model de multithreading de molts a un
- Model multithreading un a un
- Molts a molts models multithreading
Model de multiprocés de molts a un:
El model de molts a un mapa molts fils de nivell d'usuari a un fil del nucli. Aquest tipus de relació facilita un entorn de canvi de context eficaç, fàcil d'implementar fins i tot en el nucli simple sense suport de fil.
alternativa mylivecricket
El desavantatge d'aquest model és que com que només hi ha una programació de fils a nivell de nucli en un moment donat, aquest model no pot aprofitar l'acceleració de maquinari que ofereixen els processos multiprocessador o els sistemes multiprocessador. En això, tota la gestió de fils es fa a l'espai d'usuari. Si arriba el bloqueig, aquest model bloqueja tot el sistema.
A la figura anterior, el model de molts a un associa tots els fils de nivell d'usuari a fils de nivell de nucli únics.
Model multithreading un a un
El model un a un mapeja un únic fil a nivell d'usuari amb un únic fil a nivell de nucli. Aquest tipus de relació facilita l'execució de múltiples fils en paral·lel. Tanmateix, aquest benefici ve amb el seu inconvenient. La generació de cada fil d'usuari nou ha d'incloure la creació d'un fil del nucli corresponent que provoqui una sobrecàrrega, que pot dificultar el rendiment del procés principal. La sèrie Windows i els sistemes operatius Linux intenten fer front a aquest problema limitant el creixement del nombre de fils.
A la figura anterior, un model associa aquest fil a nivell d'usuari a un únic fil a nivell de nucli.
python __nom__
Model de molts a molts model multithreading
En aquest tipus de model, hi ha diversos fils a nivell d'usuari i diversos fils a nivell de nucli. El nombre de fils del nucli creats depèn d'una aplicació concreta. El desenvolupador pot crear tants fils als dos nivells, però pot ser que no siguin els mateixos. El model de molts a molts és un compromís entre els altres dos models. En aquest model, si algun fil fa una trucada de bloqueig al sistema, el nucli pot programar un altre fil per a l'execució. A més, amb la introducció de múltiples fils, la complexitat no és present com en els models anteriors. Tot i que aquest model permet la creació de múltiples fils del nucli, aquest model no pot aconseguir una concurrència real. Això es deu al fet que el nucli només pot programar un procés alhora.
Moltes i moltes versions del model de multiprocés associen diversos fils a nivell d'usuari a la mateixa o molt menys varietat de fils a nivell de nucli a la figura anterior.