A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Programaci贸n concurrente

12/21
Recursos

Aportes 18

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

En grandes sectores como por ejemplo el Bancario, como se maneja un gran volumen de transacciones, cuentan con sistemas replicados, que funcionan como respaldo el uno del otro (tolerancia a fallas). Estos nodos a su vez cuentan con 鈥淏acks鈥, estos est谩n configurados y administrados de manera independiente pero son equivalentes entre s铆 y juntos ofrecen servicios de balanceo de cargas, esto para solucionar los problemas de concurrencia.

Hola Platzinauta. 馃憢
Te comparto mis apuntes para que #NuncaParesDeAprender. 馃憖鉁

Programaci贸n concurrente

Analog铆a: Imagina ser el propietario de una panader铆a, mientras se calienta el horno, est谩s cortando masa, cort谩ndola, prepar谩ndola y una vez que se est谩n horneando, al sacarlos hay que esperar a que se enfr铆en y despu茅s colocar una cobertura de chocolate. T煤 intentar谩s optimizar los recursos, mientras el horno se est谩 calentando, debes preparar m谩s masa, para que as铆, cuando termine, inmediatamente meter el otro lote de masa o si contratas a una persona que te ayude, dividir谩s las tareas, al hacer esto, est谩s ejecutando el paralelismo, que es dividir las tareas entre los recursos disponibles, siempre y cuando puedan dividirse.

Concurrencia

Coincidencia, concurso simult谩neo de varias circunstancias.

Es cuando hay una serie de peticiones a un mismo recurso que podr铆a ser limitado y se est谩n atendiendo esas solicitudes de forma parcial o totalmente desordenada. Una analog铆a 煤til para entender, puede ser la panader铆a, imagina que tu panader铆a empieza a crecer y a ser muy grande, por lo tanto es bastante concurrida y los clientes empiezan a acumularse, por lo tanto, t煤 no puedes atenderlos a todos, empezar铆an a enojarse por no ser atendidos de forma r谩pida y ordenada. Una forma de solucionarlo, podr铆a ser un sistema de tickets, para as铆 atender a los clientes en su orden de llegada.

Concurrencia vs Paralelismo

En la concurrencia

tenemos una serie de peticiones con un solo recurso limitado para atenderlos, 驴Cu谩l ser铆a el orden, la prioridad? etc.

En el paralelismo

Tenemos recursos divididos que pueden atenderlos de forma simultanea sin ning煤n problema

El paralelismo y la concurrencia, son conceptos diferentes pero que van de la mano, por ello debemos entender ambos para entenderlos entre s铆.

Secuencia vs Concurrencia

En una secuencia

Vamos a tener los pasos A, B, C, D. Y estos ser谩n atendidos en el orden que se hizo la petici贸n.

En la concurrencia

Podemos iniciar en el proceso A, saltar al D, luego al C, completar el A y despu茅s pasar al 煤ltimo proceso.

Todo esto se hace mediante los hilos de un procesamiento

Estados de un hilo

  • Creado: No est谩 listo para correr.
  • Ejecutable/Listo: Espera para ejecutarse.
  • Ejecutando: Se ejecuta en el procesador.
  • Bloqueado: Espera a entrar al c贸digo que requiere acceso al recurso compartido o abandona el procesador.
  • Terminado: Se ha detenido y no puede reiniciarse.

Secci贸n cr铆tica del hilo

Es una secci贸n de c贸digo que requiere acceso exclusivo a una variable compartida.

Comunicaci贸n entre hilos

  • Acceso exclusivo a un recurso compartido.
  • Intercambiar informaci贸n con otro hilo.
Esto me recuerda totalmente a como trabaja un procesador. La CPU funcionar铆a de manera concurrente y la GPU con paralelismo.

Esto me suena a por ejemplo alg煤n lenguaje de backend donde tiene que atender varias solicitudes al mismo tiempo, y de alguna forma me hace pensar en Go donde seg煤n he escuchado, este lenguaje es capaz de aprovechar varios hilos de la computadora.
.
Tal vez aqu铆 es donde entra en juego esta parte de 鈥渦n procesador con X hilos鈥︹, me cuesta un poco de trabajo entenderlo pero creo que me hago una idea 馃

馃惐鈥嶐煉 La programaci贸n concurrente permite la ejecuci贸n simult谩nea de m煤ltiples tareas interactivamente. Estas tareas pueden ser un conjunto de procesos o hilos de ejecuci贸n creados por un 煤nico programa.

Realmente no pense en un sistema de tickets para atender personas, pense en contratar a alguien que se encargue exclusivamente de la atencion mientras yo cocino a toda maquina xD

Y recuerden:

Concurrencia no es lo mismo que paralelismo.

La teor铆a de colas tiene mucha relaci贸n con el tema de paralelismo y concurrencia. Les recomiendo el v铆deo de derivando al respecto:

驴Cu谩l es la fila m谩s r谩pida del supermercado? | Teor铆a de colas

Programaci贸n concurrente

  • Concurrencia: es la capacidad de un programa, algoritmo o problema para tener m煤ltiples contextos de ejecuci贸n divididos (en procesadores o hilos)
  • La diferencia con el paralelismo es que en el paralelismo hay m谩s de un recurso, es decir hay divisi贸n de recursos
  • En la concurrencia no necesariamente sigue una estructura secuencial ordenada

Estados de un hilo

  1. Creado: no est谩 listo para correr
  2. Ejecutable/listo: espera para ejecutarse
  3. Ejecutando: se ejecuta en el procesador
  4. Bloqueado: espera a entrar al c贸digo que requiere acceso al recurso compartido o abandona el procesador
  5. Terminado: se ha detenido y no puede reiniciarse

Secci贸n cr铆tica del hilo
Es una secci贸n del hilo en donde se requiere un acceso exclusivo a un recurso compartido y se necesita intercambiar informaci贸n con otro hilo

Quer铆a aportar un peque帽o grano de arena con lo que aprend铆 leyendo un libro de Sistemas Operativos. 馃槂

Si bien cuando ocupamos distintas aplicaciones y servicios en nuestra PC nos da la sensaci贸n de estar haciendo actividades en PARALELO, en realidad no es as铆, en equipos con UN SOLO PROCESADOR lo que en realidad sucede es que se van SOLAPANDO LOS PROCESOS O HILOS a una velocidad alt铆sima, simulando un PARALELISMO.

Esto se introdujo para que un proceso ( o hilo) no tenga que esperar al que est谩 ocupando la CPU para reci茅n ejecutarse, digamos que antes se produc铆a un cuello de botella a la hora de ejecutar procesos, ya que la capacidad de la CPU no era aprovechada por la misma raz贸n y de ah铆 nace el concepto del que les mencion茅, este concepto se conoce como MULTIPROGRAMACI脫N.

Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo que otra tarea.

Muy bueno el ejemplo de la panader铆a para explicar el tema de la concurrencia.

la programaci贸n l贸gica es declarativa, dada su orientaci贸n a trabajar por objetos. Encapsula y abstrae informaci贸n

La computaci贸n concurrente apareci贸 en el trabajo temprano en ferrocarriles y en la telegraf铆a, desde el siglo XIX y hasta los comienzos del 20, con algunos t茅rminos a煤n permaneciendo hoy en d铆a, como por ejemplo 鈥渟emaforos鈥.

Se conoce por programaci贸n concurrente a la rama de la inform谩tica que trata de las t茅cnicas de programaci贸n que se usan para expresar el paralelismo entre tareas y para resolver los problemas de comunicaci贸n y sincronizaci贸n entre procesos.

Muy buena explicaci贸n!!

sistema de kanban y produccion en serie para que cuando lo ocupe ta este listo

Tambien pudiera ser por autoservicio que cada quien hagarre lo que necesite y que se cobren solos