diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 97a685c..cd86bba 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -4,19 +4,21 @@ "type": "split", "children": [ { - "id": "6defc7c0173df765", + "id": "b4016cfda59535b1", "type": "tabs", "children": [ { - "id": "9ea8f5c88c43bf23", + "id": "fbdb92a309be8088", "type": "leaf", "state": { - "type": "image", + "type": "markdown", "state": { - "file": "TERCERO/SETR1/Pasted image 20250213120645.png" + "file": "TERCERO/PI/Teoria_2425.md", + "mode": "source", + "source": false }, - "icon": "lucide-image", - "title": "Pasted image 20250213120645" + "icon": "lucide-file", + "title": "Teoria_2425" } } ] @@ -173,24 +175,26 @@ "obsidian-git:Open Git source control": false } }, - "active": "a4eac8e6613b153b", + "active": "fbdb92a309be8088", "lastOpenFiles": [ - "TERCERO/PI/Pasted image 20250218110255.png", - "TERCERO/PI/Pasted image 20250218110130.png", - "TERCERO/PI/Pasted image 20250218110027.png", - "TERCERO/PI/Pasted image 20250218110013.png", - "TERCERO/PI/Pasted image 20250218105957.png", - "TERCERO/SETR1/Pasted image 20250213105732.png", - "TERCERO/SETR1/Pasted image 20250213110517.png", - "TERCERO/SETR1/Pasted image 20250213120645.png", - "TERCERO/PI/Teoria_2425.md", "TERCERO/DAD/Teoria_2425.md", - "TERCERO/ATR2/Teoria_2425.md", + "Pasted image 20250227131516.png", "TERCERO/SETR1/Teoria_2425.md", + "Pasted image 20250227120032.png", + "Pasted image 20250227115420.png", + "Untitled.md", + "TERCERO/PI/Teoria_2425.md", + "Pasted image 20250225113929.png", + "Pasted image 20250225113139.png", + "Pasted image 20250225112945.png", + "Pasted image 20250225111938.png", + "Pasted image 20250225111801.png", + "Pasted image 20250225111612.png", + "Pasted image 20250225110824.png", + "TERCERO/ATR1/Teoría_2425.md", + "TERCERO/ATR2/Teoria_2425.md", "SEGUNDO/RC/Teoría_2324.md", - "TERCERO/DAD/images/Pasted image 20250206105144.png", "conflict-files-obsidian-git.md", - "TERCERO/DAD/images/Pasted image 20250206122521.png", "TERCERO/DAD/images", "TERCERO/DAD/Presentación 24-25.md", "TERCERO/ATR2", @@ -200,7 +204,6 @@ "TERCERO/SETR1/Presentación 24-25.md", "TERCERO/SETR1", "TERCERO/PI", - "TERCERO/ATR1/Teoría_2425.md", "TERCERO/IA/Teoría_2425.md", "TERCERO/SPD/Teoría_2425.md", "TERCERO/SS/SS 24-25.md", @@ -219,7 +222,6 @@ "TERCERO/ATR1/Welcome.md", "SEGUNDO/ADDA/ADDA 23-24.md", "SEGUNDO/ADDA/MODELOS.md", - "SEGUNDO/ADDA/ADDA 15-05.md", "SEGUNDO/SO/Sin título.canvas" ] } \ No newline at end of file diff --git a/Pasted image 20250220110539.png b/Pasted image 20250220110539.png new file mode 100644 index 0000000..a820ace Binary files /dev/null and b/Pasted image 20250220110539.png differ diff --git a/Pasted image 20250220110558.png b/Pasted image 20250220110558.png new file mode 100644 index 0000000..d76ab72 Binary files /dev/null and b/Pasted image 20250220110558.png differ diff --git a/Pasted image 20250220110616.png b/Pasted image 20250220110616.png new file mode 100644 index 0000000..66537cb Binary files /dev/null and b/Pasted image 20250220110616.png differ diff --git a/Pasted image 20250220110642.png b/Pasted image 20250220110642.png new file mode 100644 index 0000000..afd1190 Binary files /dev/null and b/Pasted image 20250220110642.png differ diff --git a/Pasted image 20250220114954.png b/Pasted image 20250220114954.png new file mode 100644 index 0000000..b32c138 Binary files /dev/null and b/Pasted image 20250220114954.png differ diff --git a/Pasted image 20250225091113.png b/Pasted image 20250225091113.png new file mode 100644 index 0000000..b6881a7 Binary files /dev/null and b/Pasted image 20250225091113.png differ diff --git a/Pasted image 20250225110824.png b/Pasted image 20250225110824.png new file mode 100644 index 0000000..1ebf5c6 Binary files /dev/null and b/Pasted image 20250225110824.png differ diff --git a/Pasted image 20250225111612.png b/Pasted image 20250225111612.png new file mode 100644 index 0000000..eb58a8b Binary files /dev/null and b/Pasted image 20250225111612.png differ diff --git a/Pasted image 20250225111801.png b/Pasted image 20250225111801.png new file mode 100644 index 0000000..a87a759 Binary files /dev/null and b/Pasted image 20250225111801.png differ diff --git a/Pasted image 20250225111938.png b/Pasted image 20250225111938.png new file mode 100644 index 0000000..6c77b12 Binary files /dev/null and b/Pasted image 20250225111938.png differ diff --git a/Pasted image 20250225112945.png b/Pasted image 20250225112945.png new file mode 100644 index 0000000..2709de0 Binary files /dev/null and b/Pasted image 20250225112945.png differ diff --git a/Pasted image 20250225113139.png b/Pasted image 20250225113139.png new file mode 100644 index 0000000..343dfd5 Binary files /dev/null and b/Pasted image 20250225113139.png differ diff --git a/Pasted image 20250225113929.png b/Pasted image 20250225113929.png new file mode 100644 index 0000000..4a6b0a1 Binary files /dev/null and b/Pasted image 20250225113929.png differ diff --git a/Pasted image 20250227115420.png b/Pasted image 20250227115420.png new file mode 100644 index 0000000..080b666 Binary files /dev/null and b/Pasted image 20250227115420.png differ diff --git a/Pasted image 20250227120032.png b/Pasted image 20250227120032.png new file mode 100644 index 0000000..2f6e1ea Binary files /dev/null and b/Pasted image 20250227120032.png differ diff --git a/Pasted image 20250227131516.png b/Pasted image 20250227131516.png new file mode 100644 index 0000000..684f304 Binary files /dev/null and b/Pasted image 20250227131516.png differ diff --git a/TERCERO/ATR2/Teoria_2425.md b/TERCERO/ATR2/Teoria_2425.md index f8246f5..4fd6df3 100644 --- a/TERCERO/ATR2/Teoria_2425.md +++ b/TERCERO/ATR2/Teoria_2425.md @@ -1,4 +1,4 @@ -# TEMA 1: Nivel de Red +# TEMA 1: Nivel de Red (DHCP-NA(P)T-ICMP) El protocolo IP no ofrece un servicio orientado a la conexión (es no fiable). Emplea el servicio de entrega de R_PDU empleado por el nivel de enlace (utiliza servicio de su nivel inferior), permitiendo intercambiar información entre hosts o routers y dispositivos que implementen como mucho N.E.D. Establece las herramientas necesarias para **enrutar**, es decir, definir el camino a seguir por los datos de extremo a extremo. @@ -51,3 +51,28 @@ Hay dos alternativas: - **Dinámica:** El router NAT asignará de forma temporal las IPs públicas cuando haya necesidad de "saltar" a internet. - El router tiene un rango de IPs asignables y además una tabla para guardar dichas asignaciones de IPs. - **Estática:** Se configuran las asignaciones de forma permanente por el administrador de la red. +# TEMA 2: Nivel de Red (Routing) +## 1. Introducción +Para que el datagrama se entregue con éxito se debe cumplir: +- El prefijo de dirección destino debe corresponder a una sola red +- Los routers y hosts que tienen un prefijo de red común deben ser capaz de intercambiar datos sin ayuda de un router +- Cada red (a nivel 2) debe estar conectada al menos con otra red mediante un router +Un nodo (router o host) tiene que tener una tabla de enrutamiento. Suele tener los campos **Red**, **Próximo Salto**, **Interfaz**. +![[Pasted image 20250225091113.png]] +En Windows, la **Métrica** es el "coste" que tiene esa ruta si se escoge. Se puede valorar en términos de velocidad, TTL o _delay_ temporal. +## 2. Reenvío / Enrutamiento +Hay varios pasos en el reenvío: +1. Validar cabecera +2. Procesar opciones +3. Analizar destino +4. Buscar destino en la tabla de enrutamiento +5. Decrementar TTL +6. Fragmentar +7. Calcular checksum +8. Reenviar al PS +9. Enviar ICMP +## 3. Información global +## 4. Información descentralizada +## 5. Enrutamiento estático +## 6. Enrutamiento dinámico +## 7. RIP diff --git a/TERCERO/DAD/Teoria_2425.md b/TERCERO/DAD/Teoria_2425.md index b615386..6f8f33e 100644 --- a/TERCERO/DAD/Teoria_2425.md +++ b/TERCERO/DAD/Teoria_2425.md @@ -153,4 +153,66 @@ Es un sistema de eventos distribuidos: ## 1. Sockets Un **socket** es un método para comunicar programas entre sí mediante el paradigma C-S. Un socket también es una dirección en internet tipo IP:puerto. ## 2. Servlets -Programa Java que se ejecuta en un servidor Web y construye o sirve páginas web. De esta forma se pueden construir páginas dinámicas, basadas en diferentes fuentes variables. \ No newline at end of file +Programa Java que se ejecuta en un servidor Web y construye o sirve páginas web. De esta forma se pueden construir páginas dinámicas, basadas en diferentes fuentes variables. +# TEMA 4: Diseño de servidores y escalabilidad +## 1. Problema de los servidores de apps tradicionales +- Un thread controla una tarea +- Los threads esperan a que finalice la tarea que está ejecutando mientras que los demás están en queue +- No escalable +- Muchos threads probablemente +- Sistema de concurrencia muy complejo +## 2. Vert.X +- Framework políglota de propósito general sobre la JVM. +- APIs asíncronas, event-driven, non-blocking. +- MUY escalable +![[Pasted image 20250227131516.png|450]] +Ejemplo verticle + +Con Vert.X se puede hacer: +- TCP/SSL server +- HTTP/S server +- Websockets +- Acceso distribuido al EB (Event Bus) +- Intercambio de Maps/Sets +- Logging +## 3. Arquitectura +### Estructura +- Vert.X Core +- Verticle +- Event bus +- Messages +- Handlers +- Modules +### Vert.X Core +- Cada verticle una instancia de Vert.X +- Cada instancia de Vert.X en una instancia propia de la JVM +- Un event loop que sirve conexiones de manera asíncrona +- La mayor parte del trabajo real se lleva a cabo en un pool de threads en segundo plano +- Se emplean todos los cores disponibles como threads en segundo plano +### Verticle +- Cada Verticle está aislado con diferentes class loaders +- Un Verticle nunca es ejecutado por más de un thread concurrentemente +- No existen deadlocks, dependencias, etc. El desarrollo se hace pensando en single thread. +#### Standard Verticles +Se ejecutan en el mismo thread que el event loop. +#### Worker Verticles +Están diseñados para tareas bloqueantes. Se ejecutan en un thread distinto que **SÍ** se puede bloquear. +#### Multithread Worker Verticles +Se ejecutan de manera concurrente en varios threads (no se suele usar). +### Event Bus +- Pilar central de la estructura Vert.X +- Permite que se comuniquen los Verticles +- No depende del lenguaje +- Independiente del equipo en el que se ejecute +- Válido para C y S +El event bus soporta varios mecanismos de comunicación: +- Publish/Subscribe +- P2P +- Request/Response +### Messages +- **Addressing:** se envian a una direccion. String con el nombre del verticle + destinatario. +- **Handlers:** reciben los mensajes. Se deben registrar con una dirección y pueden registrarse con varias. +- **Publish/Subscribe:** los mensajes se publican a una dirección. Todos los handlers subscritos recibirán el mensaje +- **P2P y Req/Res:** envío de mensajes a un único handler. El receptor puede responder. +### Modules +Mongo DB, Redis, MySQL, SMTP, JDBC, Jersey, Promises, Guice, Spring, Vertigo, Metrics, Facebook, Yoke, Stomp, NoDyn, GCM, SocketIO, Sessions, Via, RxJava diff --git a/TERCERO/PI/Teoria_2425.md b/TERCERO/PI/Teoria_2425.md index 195eec5..9a3ba25 100644 --- a/TERCERO/PI/Teoria_2425.md +++ b/TERCERO/PI/Teoria_2425.md @@ -30,3 +30,82 @@ Hay dos tipos de direccionamiento: - **Ventajas:** - Atención inmediata - El CPU puede hacer otras cosas mientras el dispositivo E/S está ocupado + +# TEMA 2: Buses locales normalizados +## 1. Concepto de bus normalizado +**Bus:** conjunto de líneas eléctricas sobre la PCB. Es un medio compartido. +### Ejemplo de bus y sus líneas +Un ejemplo de bus sería el **Bus de Control** con las líneas típicas: +- Memory write +- Memory read +- I/O Write +- I/O Read +- Transfer ACK +- Bus Request +- Bus Grant +- Int Request +- Int ACK +- Clock +- Reset +### Procesos de transferencia +Por ejemplo para la escritura E/S: +1. El módulo de E/S que quiere iniciar la transferencia solicita el uso del bus (**Bus Request**) +2. El arbitrador concede el bus (**Bus Grant**) +3. Sitúa en el bus de direcciones (AB) la dirección o puerto E/S donde quiere transferir el dato +4. Sitúa el dato a transferir en el bus de datos (DB) +5. Activa la línea de **I/O Write** del bus de control +6. El destinatario ha recibido el dato (**Transfer ACK**) +7. Deja libre el bus para su uso +

NOTACIÓN

+### Arquitectura de un PC actual +![[Pasted image 20250225110824.png]] +## 2. Métodos de conexión de un dispositivo al bus local +### Conexión directa +**Restricciones:** +- Depende del CPU +- Sólo lo puede usar un dispositivo local para evitar problemas de impedancia por extra carga +- Costosa, debido a la alta frecuencia +- No permite transferencias de datos entre CPU y otros dispositivos mientras se usa este bus con otros periféricos +**Ejemplo:** VLB tipo A +![[Pasted image 20250225111612.png|300]] +### Conexión mediante buffer +**Mejoras:** +- Sólo presenta una impedancia. Usualmente hasta 3 dispositivos +**Restricciones:** +- En esencia, con buffer y el local son un único bus: cualquier transferencia iniciada por CPU alcanzará el bus local con buffer. **NO** es posible la utilización simultánea. +**Ejemplo:** VLB tipo B +![[Pasted image 20250225111801.png|300]] +### Conexión con filosofía workstation +**Mejoras:** +- Introducción de caché L2 unida a un puente para adaptar las velocidades de transferencia entre bus local del CPU y el de E/S. +- Independencia del procesador que implementa la CPU. +**Ejemplo:** PCI +![[Pasted image 20250225111938.png|300]] +## 3. PnP +### El problema +- Hay un número limitado de IRQs, canales DMA, puertos de E/S y regiones de memoria E/S +- Algunas IRQs y direcciones están muy estandarizadas +- No hay automatización de las tareas de configuración de periféricos +### Solución PnP +1. El programa de configuración PnP encuentra todos los dispositivos que soportan PnP y pregunta a cada uno qué recursos del bus necesitan. +2. Decide qué recursos puede adjudicar. +3. Establece un criterio mediante el cual adjudicar recursos del bus. +## 4. Bus SPI +- El bus SPI (Serial Peripheral Interface) fue desarrollado por Motorola en 1980. Sus ventajas respecto a otros sistemas han hecho que se convierta en un estándar. +- El bus SPI tiene arquitectura Master-Slave. El dispositivo maestro puede iniciar la comunicación con uno o varios esclavos y envía (Tx) o recibe (Rx) datos de ellos. Los esclavos ni pueden iniciar comunicación ni comunicarse entre ellos. +- Hay una línea para transmisión (Tx) y otra para recepción (Rx) por lo que la comunicación es Full Dúplex. +- Es síncrono, el dispositivo maestro proporciona el CLK. +![[Pasted image 20250225112945.png|400]] +- **MOSI (Master-Out, Slave-In):** para la comunicación maestro a esclavo. +- **MISO (Master-In, Slave-Out):** para la comunicación esclavo a maestro. +- **SCK (Clock):** señal de CLK del maestro. + +![[Pasted image 20250225113139.png|600]] +## 5. Bus I2C +- El estándar I2C (Inter-Integrated Circuit) requiere únicamente dos cables para su funcionamiento, uno para CLK y otro para el envío de datos (SDA). El funcionamiento es más complejo así como su circuitería. + ![[Pasted image 20250225113929.png]] +- En el bus cada dispositivo tiene una dirección, que se emplea para acceder a ellos de forma individual. Esta dirección puede ser fijada por hardware o software. +- En general, cada dispositivo conectado al bus debe tener dirección única. Se podría cambiar la dirección o implementar un segundo bus. +- Este bus tiene una arquitectura maestro-esclavo. Es posible que haya más de un maestro pero **SÓLO** un maestro a la vez. +- Es síncrono, el maestro proporciona CLK. +- Tiene resistencias de pull-up a $V_{CC}$ . \ No newline at end of file diff --git a/TERCERO/SETR1/Teoria_2425.md b/TERCERO/SETR1/Teoria_2425.md index 0fb5051..89e1239 100644 --- a/TERCERO/SETR1/Teoria_2425.md +++ b/TERCERO/SETR1/Teoria_2425.md @@ -114,8 +114,57 @@ int main() ## 2. Intel 8051 +![[Pasted image 20250220110642.png|500]] +![[Pasted image 20250220110558.png|400]] +![[Pasted image 20250220110616.png]] +### Características +- Punteros de datos y de pila de distinto tamaño que PC (Program Counter) o IP (Instruction Pointer) porque es Harvard. +- Complejidad de mapa de memoria. +- Juego de instrucciones limitado. +- La pila está en memoria de datos interna y limitada a 256B por ser el SP de 8b. +- Instrucciones de acceso memoria-memoria sin pasar por un acc. +- Acumuladores accesibles por dir. directo. +- Necesario acceder a memoria de código para datos constantes -> `movc`. +### Mapa de memoria +![[Pasted image 20250220114954.png]] +Asignación memoria variables: +- DATA: 128B bajos en RAM interna +- BDATA: memoria direccionable bit +- IDATA: 128B direccionamiento indirecto +- PDATA: memoria por bancos +- XDATA: memoria datos externa +- CODE: memoria de código +**Ejemplos:** +```C +code unsigned char var1; +bdata char var2; +sbit var2bit2 = var2^2; +var2bit2 = 1; +``` ## 3. Cortex M +### Introducción +- Arquitectura ARM (Advanced RISC Machines) +- Empezó en 1983 de parte de Acorn Computers Ltd. +- Originalmente para PCs (arquitectura Von Neumann) +- RISC -> instrucciones de 4B. Los más recientes traen un conjunto de instrucciones de 16 bits adicional, llamado **Thumb**. +### Buses +#### Tipos de buses +- **AHB (Advanced High performance Bus):** memoria, periféricos rápidos... +- **APB (Advanced Peripheral Bus):** periféricos generales +- **PPB (Private Peripheral Bus):** acceso al debugger e interrupciones +![[Pasted image 20250227115420.png|600]] +#### Buses internos +- **Buses CORE:** + - **Icode bus AHB:** acceso a la memoria de código (ROM, Flash...) alineados de 32 en 32 bits (al usar instrucciones de 16 bits se toman instrucciones de 2 en 2). + - **Dcode bus AHB:** acceso a datos almacenados en memoria de código sin alineamiento. + - **System bus AHB:** acceso R/W a la zona de memoria SRAM (interna, externa, extendida), periféricos y controladores rápidos (DMA) + - **Internal PPB:** debugger, interrupciones, etc +### Mapa de memoria +![[Pasted image 20250227120032.png|500]] + +### Registros +### Set de instrucciones ## 4. Manipulación de bits diff --git a/Untitled.md b/Untitled.md new file mode 100644 index 0000000..5da7d83 --- /dev/null +++ b/Untitled.md @@ -0,0 +1,4 @@ +## 2. Bus AT, ISA, EISA +## 3. Bus PCI, AGP +## 4. Plug and Play +## 5. Ejemplos \ No newline at end of file