Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SISD:
MISM
SIMD
MIMD: Varios procesadores que ejecutan instrucciones sobre datos diferentes (sistemas
distribuidos)
Caché: Memoria volátil de alta velocidad en el CPU (hay que conocer el medio por el que
vas a trabajar)
Los procesos son caros porque son ejecutados por los cores directamente
Los hilos también pero dependen de un hilo padre que se puede dividir en un montón de
hilos
Todo lo que tiene que ver con input/output tiene que ver con hilos (teclear, no hay un core
para cada tecla, se van cogiendo a través de hilos) (puntitos en la pantalla, tráfico de
internet…
Todo lo que tiene que ver con compute →cores (sumar dividir fib renderizar o ejecutar un
programa) computación pura y dura
Pregunta: dime si es concurrente con hilos o paralelismo (con x recursos): la pista es ver:
● si está implicado a operaciones input/output → threading/hilos
● si está relacionada con tipos compute es paralelo
Los hilos son baratos porque al instalarse solo requieres de una instrucción y son hijos de
un mismo proceso y no tienen que pedir permiso a nadie, nacen de forma instantánea y ya
tienen una función predefinida.
Los cores necesitan solicitar un cambio de contexto, calcular la memoria que necesita ese
contexto… por eso son más caros
Definición informal: Todo el mundo escucha todos los hilos comparten espacio en memoria,
si necesitas decir algo a un hilo en concreto no lo puedes decir a todos porque pierdes
efectividad, necesitas reservar un propio espacio en memoria para hacerlo en privado pero
es más caro
“El grito es más rápido pero no tienes el control de todo, todo el mundo lo escucha”
Pregunta: Cuantos hilos está usando el JupyterLab: 6 cuando se ejecuta desde jupyterlab, 1
cuando se ejecuta desde consola porque se ejecuta de manera secuencial pero en
jupyterlab no
Hilo demonio: Es un hilo que está en Java y en otros lenguajes(en lenguajes como C no
está) que se encarga de controlar cosas, en java va eliminando datos basura que vamos
dejando para que no se acabe la memoria disponible
Pregunta: Cuantos hilos podemos instanciar: Casi infinitos, están limitados a la cantidad de
recursos (memoria RAM) que tengamos en el ordenador
Pregunta: Cuantos procesos podemos instanciar: Los procesadores no pueden parar, tienen
una frecuencia que respetar, en función de la versión de python
Los procesos dependen de los cores, para ver cuantos puedes instanciar tienes que utilizar
la extensión poo executor que crea un poo executor
Ejemplo de error: Si tienes un array con archivos más pesados y lo recorres con un for, vas
a tener un problema porque hay algunos que no se van a descargar
APUNTES CANVAS
TEMA 1- Introducción a la programación concurrente
El CPU (Core Processor Unit) no es único ni fijo actualmente, puede ejecutar varias tareas a
la vez
Concurrencia:
Un programa secuencial es un programa que ejecuta instrucciones una tras otra
Un programa concurrente está formado por 2 o mas programas secuenciales que se
ejecutan concurrentemente (a la vez)
Ejemplo: (P1 y P2 son 2 programas diferentes)
Decimos que un proceso pasa a estado activo cuando un hilo toma posesión del
procesador.
Hilos.
● Estado de ejecución (ejecución, listo, etc.).
● Contexto del procesador, que se salva cuando no está ejecutando.
● Tiene una pila de ejecución.
● Almacenamiento estático para variables locales.
● Acceso a memoria y otros recursos del proceso, compartidos con todos los hilos del
mismo
Estados de un hilo.
Los estados de ejecución de un hilo pueden sincronizarse entre ellos. Las operaciones
relacionadas con los cambios de estado de los hilos son creación, bloqueo, desbloqueo y
terminación.
Cuando un proceso se suspende, todos sus hilos son suspendidos, ya que comparten el
mismo espacio de direcciones. Y cuando un proceso termina, todos sus hilos terminan.
Archivos que ignora Git [nombre].gitignore → Datos personales que no se suben a Git
Comandos importantes
git clone <url> //clonar repo
git status (vemos el estado del repo, que archivos están ready para subir, en verde, y cuales
no estan ready para ser subidos, en rojo.)
git add . (Para subir todas las carpetas. Si queremos un archivo en específico, en lugar del
punto ponemos el nombre de la carpeta.)
git push (Para subir todo al repo. Seguir los pasos que salen en la pantalla para generar el
repo.)
git pull (Para actualizar el repo, es decir, bajar todo lo que tengamos en el repo.)
Guardar cambios
git add .
git commit -m “nombre del commit”
git push -u origin main
Cambiar de branch: git switch -c <> | git branch -D <> | git checkout -b <>
============================================================
===
5. Q.- ¿Los usos de Time.Sleep(delay) son exclusivamente para simular que
está cocinándose el pan o tiene un uso práctico real?
A.- Es para dar feedback al usuario de que está haciendo algo, no tiene
utilidad práctica real.