Está en la página 1de 5

Universidad Tecnológica de Santiago

(UTESA)
Área de Arquitectura e Ingeniería
Carrera de Ingeniería en Sistemas Computacionales

Sistema de manejo de pasantías para UTESA

Presentado a:
Ing. Iván Mendoza

Presentado por:
Adwil Rafael Castillo García 1-16-1609

Santiago de los Caballeros, Republica Dominicana


Enero 2023
Investigar:
Algoritmos

Se trata de una serie de instrucciones que buscan resolver un problema específico.

Paralelo

Se refiere al hecho de que un evento ocurra al mismo tiempo que otros.

Algoritmos paralelos

Son algoritmos que se componen por diferentes instrucciones que pueden ser
ejecutadas al mismo tiempo por diferentes fuentes y producir un solo resultado.

Programación paralela

Se crean aplicaciones que sacan provecho a los múltiples recursos de un


computador para resolver un problema ejecutando las tareas de manera simultánea.

Este tipo de programación resuelve problemas que no se podrían realizar utilizado sólo un
CPU, proveen escalabilidad, permiten la ejecución de tareas más complejas y reducen el
tiempo necesario para la compleción de una tarea. Por otra parte, requieren más energía
para trabajar, así como aumenta el tiempo de desarrollo, complejidad del sistema y costos
de producción y mantenimiento.

Programación concurrente

Se trata de la creación de programas en el cual los procesos se ejecutan de manera


independiente sin conocer el orden en que se ejecutan los programas. Estos, a diferencia
de la programación paralela no requieren múltiples procesadores para funcionar
correctamente pero el tiempo de ejecución es mas elevado.

Paralelismo

Ocurre cuando varias funciones o algoritmos ocurren al mismo tiempo, ayuda a


reducir el tiempo total del cálculo, se puede implementar al hacer uso de una computadora
con muchos procesadores.

Hilos

Es la capacidad que ofrece un procesador de manejar las tareas en diferentes


procesos, dígase que un procesador de 16 núcleos y 32 hilos puede dividir las tareas en 32
procesos diferentes que alivian la carga del computador y permite que los recursos del
sistema sean administrado de una manera mas coherente para la tarea asignada,
reduciendo así el tiempo requerido para obtener el resultado.
Lenguajes o Frameworks de programación que usan paralelismo o
programación concurrente

Lenguajes que usan paralelismo:

• C# con la clase Parallel


• OpenMP siendo un api para el paralelismo del CPU
• CUDA siendo una plataforma y lenguaje de programación paralelo
para desarrollar en GPU NVIDIA

Lenguajes que usan programación concurrente:

• Java con el framework Executor


• Python con el módulo concurrent.futures
• C++ con std::thread
• C# con System.Threading
Ejercicios

Ejemplos en Código que permita ejecutar tareas en paralelo, concurrencia o


paralelismo en cualquier lenguaje y explicar su código. (Al menos 5 Codigo)

1 - Async Await Javascript – Tareas en paralelo:

La función getLimitedResults retorna una promesa de js. La función getResults llama de manera
asíncrona con promise.all a la función getLimitedResults, esto significa que llamada ocurre en
paralelo y el resultado se unifica en el retorno.

async getLimitedResults(lottery: string, limit: number, dateToText = false): Promise<any> {}

async getResults(){

const [NPR, NL] = await Promise.all([getLimitedResults('NPR', 1), getLimitedResults('NL', 1)]);

},

2 – Promise.All Javascript – Tareas en paralelo:

Dos funcione que retornan una promesa de Js que es manejada por Promise.all para ejecutarlas al
mismo tiempo, en paralelo.

function getLottery() {

return fetch(“”) .then(response => response.json());

function getResults () {

return fetch(“”).then(response => response.json());

Promise.all([getLottery(), getResults()])

.then(([lottery, res]) => {

console.log(lottery, res);

})
3 – setTimeout() Javascript – Tareas concurrente:
Se crean dos funciones y se colocan en una cola en la cual serán ejecutadas lo mas
pronto posible, lo que permite que ambas se ejecuten de manera concurrente.

function contarMucho() {
for (let i = 0; i < 10000000000; i++);
}

function contarLoMismo() {
for (let i = 0; i < 10000000000; i++);
}

// Execute both tasks concurrently


setTimeout(contarMucho, 0);
setTimeout(contarLoMismo, 0);

4 – process.nextTick() Javascript – Tareas concurrente:


Permite la ejecución de una tarea tan pronto como sea posible, no se garantiza la
ejecución concurrente pero lo mas probable es que ambos console.log se ejecuten al mismo
tiempo.
process.nextTick(()=> {

console.log(“Listo nextTick”);

});

console.log(“Fuera de nextTick”);

5 – child_process spawn NodeJs – Tareas en paralelo:

Se define el módulo y las tareas a ejecutar y se crean ambos procesos usando


Spawn del modulo child_process para ejecutarlos en paralelo

const { spawn } = require(“child_process”);

const t1 = spawn(“node”, [“Tarea1.js”]);

const t2 = spawn(“node”, [“Tarea2.js'”]);

También podría gustarte