Vés al contingut

Concurrència

De la Viquipèdia, l'enciclopèdia lliure

En informàtica, la concurrència es refereix a la capacitat d'un sistema per executar múltiples tasques mitjançant l'execució simultània o la compartició de temps (commutació de context), compartint recursos i gestionant les interaccions. La concurrència millora la capacitat de resposta, el rendiment i l'escalabilitat en la informàtica moderna, incloent:[1][2][3][4][5]

Conceptes relacionats

[modifica]

La concurrència és un concepte més ampli que engloba diverses idees relacionades, com ara:[6][7][8][9][10]

  • Paral·lelisme (execució simultània en múltiples unitats de processament). El paral·lelisme executa tasques de manera independent en múltiples nuclis de CPU. La concurrència permet múltiples fils de control a nivell de programa, que poden utilitzar paral·lelisme o segmentació temporal per realitzar aquestes tasques. Els programes poden exhibir només paral·lelisme, només concurrència, tant paral·lelisme com concurrència, o cap de les dues coses.
  • Multifil i multiprocessament (recursos del sistema compartits)
  • Sincronització (coordinació de l'accés a recursos compartits)
  • Coordinació (gestió de les interaccions entre tasques simultànies)
  • Control de concurrència (garantint la coherència i la integritat de les dades)
  • Comunicació entre processos (IPC, que facilita l'intercanvi d'informació)

Problemes

[modifica]
Tres processos, Procés 1, Procés 2 i Procés 3, accedint al recurs compartit (secció crítica) simultàniament.

Com que els càlculs en un sistema concurrent poden interactuar entre si mentre s'executen, el nombre de possibles camins d'execució del sistema pot ser extremadament gran i el resultat resultant pot ser indeterminat. L'ús concurrent de recursos compartits pot ser una font d'indeterminació, que pot provocar problemes com ara bloquejos i manca de recursos.[11]

El disseny de sistemes concurrents sovint implica trobar tècniques fiables per coordinar la seva execució, intercanvi de dades, assignació de memòria i programació de l'execució per minimitzar el temps de resposta i maximitzar el rendiment.

Escenari de bloqueig del procés.

Teoria

[modifica]

La teoria de la concurrència ha estat un camp de recerca actiu en la informàtica teòrica. Una de les primeres propostes va ser el treball seminal de Carl Adam Petri sobre les xarxes de Petri a principis dels anys seixanta. En els anys posteriors, s'ha desenvolupat una àmplia varietat de formalismes per a la modelització i el raonament sobre la concurrència.

Models

[modifica]

S'han desenvolupat diversos formalismes per modelar i comprendre sistemes concurrents, incloent-hi:

Alguns d'aquests models de concurrència estan pensats principalment per donar suport al raonament i l'especificació, mentre que d'altres es poden utilitzar durant tot el cicle de desenvolupament, incloent-hi el disseny, la implementació, la prova, les proves i la simulació de sistemes concurrents. Alguns d'aquests es basen en el pas de missatges, mentre que d'altres tenen mecanismes diferents per a la concurrència.

La proliferació de diferents models de concurrència ha motivat alguns investigadors a desenvolupar maneres d'unificar aquests diferents models teòrics. Per exemple, Lee i Sangiovanni-Vincentelli han demostrat que un model anomenat "senyal etiquetat" es pot utilitzar per proporcionar un marc comú per definir la semàntica denotacional d'una varietat de models diferents de concurrència, mentre que Nielsen, Sassone i Winskel han demostrat que la teoria de categories es pot utilitzar per proporcionar una comprensió unificada similar de diferents models.

El teorema de representació de la concurrència en el model d'actors proporciona una manera força general de representar sistemes concurrents que són tancats en el sentit que no reben comunicacions de l'exterior. (Altres sistemes de concurrència, per exemple, els càlculs de processos, es poden modelar en el model d'actors mitjançant un protocol de confirmació de dues fases.[12]) La denotació matemàtica es denota per un sistema tancat es construeix amb aproximacions cada cop millors a partir d'un comportament inicial anomenat utilitzant una funció d'aproximació del comportament per construir una denotació (significat) per a de la següent manera:

DenoteS ≡ ⊔i∈ω progressionSi(⊥S)

D'aquesta manera, es pot caracteritzar matemàticament en termes de tots els seus possibles comportaments.

Lògiques

[modifica]

Diversos tipus de lògica temporal[13] es poden utilitzar per ajudar a raonar sobre sistemes concurrents. Algunes d'aquestes lògiques, com la lògica temporal lineal i la lògica d'arbre de computació, permeten fer afirmacions sobre les seqüències d'estats per les quals pot passar un sistema concurrent. D'altres, com la lògica d'arbre computacional d'accions, la lògica de Hennessy-Milner i la lògica temporal d'accions de Lamport, construeixen les seves afirmacions a partir de seqüències d' accions (canvis d'estat). L'aplicació principal d'aquestes lògiques és en l'escriptura d'especificacions per a sistemes concurrents.[14]

Pràctica

[modifica]

La programació concurrent engloba els llenguatges de programació i els algoritmes utilitzats per implementar sistemes concurrents. La programació concurrent se sol considerar és més general que la programació paral·lela perquè pot implicar patrons arbitraris i dinàmics de comunicació i interacció, mentre que els sistemes paral·lels generalment tenen un patró de comunicacions predefinit i ben estructurat. Els objectius bàsics de la programació concurrent inclouen la correcció, el rendiment i la robustesa . Els sistemes concurrents, com ara els sistemes operatius i els sistemes de gestió de bases de dades, generalment estan dissenyats per funcionar indefinidament, inclosa la recuperació automàtica després d'un error, i no finalitzar inesperadament (vegeu Control de concurrència). Alguns els sistemes concurrents implementen una forma de concurrència transparent, en què les entitats computacionals concurrents poden competir i compartir un únic recurs, però les complexitats d'aquesta competència i compartició estan protegides per al programador.

Com que utilitzen recursos compartits, els sistemes concurrents en general requereixen la inclusió d'alguns una mena d' àrbitre en algun lloc de la seva implementació (sovint al maquinari subjacent), per controlar l'accés a aquests recursos. L'ús d'àrbitres introdueix la possibilitat d' indeterminació en la computació concurrent, cosa que té implicacions importants per a la pràctica, inclosa la correcció i el rendiment. Per exemple, l'arbitratge introdueix un no-determinisme il·limitat que planteja problemes amb la comprovació de models perquè provoca una explosió a l'espai d'estats i fins i tot pot fer que els models tinguin un nombre infinit d'estats.

Alguns models de programació concurrent inclouen coprocessos i concurrència determinista. En aquests models, els fils de control cedeixen explícitament els seus segments de temps, ja sigui al sistema o a un altre procés.

Referències

[modifica]
  1. Operating System Concepts (en anglès). Wiley, 29 July 2008. ISBN 978-0470128725.
  2. Computer Organization and Design: The Hardware/Software Interface (en anglès). Morgan Kaufmann, 2012 (The Morgan Kaufmann Series in Computer Architecture and Design). ISBN 978-0123747501.
  3. Distributed Systems: Concepts and Design (en anglès). Pearson, 2012. ISBN 978-0132143011.
  4. Quinn, Michael Jay. Parallel Computing: Theory and Practice (en anglès). McGraw-Hill, 1994. ISBN 978-0070512948.
  5. Zomaya, Albert Y. Parallel and Distributed Computing Handbook (en anglès). McGraw Hill Professional, 1996. ISBN 978-0070730205.
  6. Operating System Concepts (en anglès). Wiley, 29 July 2008. ISBN 978-0470128725.
  7. Computer Organization and Design: The Hardware/Software Interface (en anglès). Morgan Kaufmann, 2012 (The Morgan Kaufmann Series in Computer Architecture and Design). ISBN 978-0123747501.
  8. Distributed Systems: Concepts and Design (en anglès). Pearson, 2012. ISBN 978-0132143011.
  9. Quinn, Michael Jay. Parallel Computing: Theory and Practice (en anglès). McGraw-Hill, 1994. ISBN 978-0070512948.
  10. Zomaya, Albert Y. Parallel and Distributed Computing Handbook (en anglès). McGraw Hill Professional, 1996. ISBN 978-0070730205.
  11. Cleaveland, Rance; Scott Smolka ACM Computing Surveys, 28, 4, 12-1996, p. 607. DOI: 10.1145/242223.242252 [Consulta: free].
  12. Griffiths, Brent D. «She named Google's Nano Banana. She has an idea why it went viral.» (en anglès). Business Insider. [Consulta: 20 gener 2026].
  13. Roscoe, Colin. Modal and Temporal Properties of Processes (en anglès). Springer, 2001. ISBN 978-0-387-98717-0.
  14. Cleaveland, Rance; Scott Smolka ACM Computing Surveys, 28, 4, 12-1996, p. 607. DOI: 10.1145/242223.242252 [Consulta: free].