cambios 2024-10-31 12:40:56
This commit is contained in:
18
.obsidian/workspace.json
vendored
18
.obsidian/workspace.json
vendored
@@ -11,10 +11,14 @@
|
|||||||
"id": "3b843e69b2a87354",
|
"id": "3b843e69b2a87354",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "empty",
|
"type": "markdown",
|
||||||
"state": {},
|
"state": {
|
||||||
|
"file": "conflict-files-obsidian-git.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "New tab"
|
"title": "conflict-files-obsidian-git"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -171,8 +175,11 @@
|
|||||||
"obsidian-advanced-slides:Show Slide Preview": false
|
"obsidian-advanced-slides:Show Slide Preview": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "b40a18c39aef8e17",
|
"active": "3b843e69b2a87354",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
|
"conflict-files-obsidian-git.md",
|
||||||
|
"TERCERO/SS/images/Pasted image 20241024113018.png",
|
||||||
|
"TERCERO/SS/images/Pasted image 20241024090239.png",
|
||||||
"TERCERO/SPD/Teoría_2425.md",
|
"TERCERO/SPD/Teoría_2425.md",
|
||||||
"TERCERO/SPD/Guión Practica 4 SPD.md",
|
"TERCERO/SPD/Guión Practica 4 SPD.md",
|
||||||
"TERCERO/SPD/P4_SPD_Presentacion.md",
|
"TERCERO/SPD/P4_SPD_Presentacion.md",
|
||||||
@@ -185,8 +192,6 @@
|
|||||||
"TERCERO/SPD/images/Pasted image 20240916121903.png",
|
"TERCERO/SPD/images/Pasted image 20240916121903.png",
|
||||||
"export/P4_SPD_Presentacion/plugin/chalkboard/img/whiteboard.png",
|
"export/P4_SPD_Presentacion/plugin/chalkboard/img/whiteboard.png",
|
||||||
"export/P4_SPD_Presentacion/plugin/chalkboard/img/chalk-yellow.png",
|
"export/P4_SPD_Presentacion/plugin/chalkboard/img/chalk-yellow.png",
|
||||||
"export/P4_SPD_Presentacion/plugin/chalkboard/img/sponge.png",
|
|
||||||
"export/P4_SPD_Presentacion/plugin/chalkboard/img/chalk-white.png",
|
|
||||||
"export/P4_SPD_Presentacion/plugin/chalkboard/style.css",
|
"export/P4_SPD_Presentacion/plugin/chalkboard/style.css",
|
||||||
"export/P4_SPD_Presentacion/plugin/chalkboard/_style.css",
|
"export/P4_SPD_Presentacion/plugin/chalkboard/_style.css",
|
||||||
"export/P4_SPD_Presentacion/plugin/chalkboard/plugin.js",
|
"export/P4_SPD_Presentacion/plugin/chalkboard/plugin.js",
|
||||||
@@ -202,7 +207,6 @@
|
|||||||
"export/P4_SPD_Presentacion/plugin/customcontrols/README.md",
|
"export/P4_SPD_Presentacion/plugin/customcontrols/README.md",
|
||||||
"export/P4_SPD_Presentacion/plugin/menu/CONTRIBUTING.md",
|
"export/P4_SPD_Presentacion/plugin/menu/CONTRIBUTING.md",
|
||||||
"export/P4_SPD_Presentacion/plugin/menu/README.md",
|
"export/P4_SPD_Presentacion/plugin/menu/README.md",
|
||||||
"conflict-files-obsidian-git.md",
|
|
||||||
"TERCERO/SS/SS Lab.md",
|
"TERCERO/SS/SS Lab.md",
|
||||||
"TERCERO/SS/SS 24-25.md",
|
"TERCERO/SS/SS 24-25.md",
|
||||||
"TERCERO/ATR1/Teoría_2425.md",
|
"TERCERO/ATR1/Teoría_2425.md",
|
||||||
|
|||||||
@@ -78,9 +78,6 @@ double pp2()
|
|||||||
| ![[Pasted image 20241022144832.png]] | ![[Pasted image 20241022150214.png]] |
|
| ![[Pasted image 20241022144832.png]] | ![[Pasted image 20241022150214.png]] |
|
||||||
|
|
||||||
(Todo para config1 y config2)
|
(Todo para config1 y config2)
|
||||||
1. CPI (supertomasim)
|
|
||||||
2. CPI (reordenado). Cambiar escalaridad (m=1, m=grande).
|
|
||||||
3. Identificar CPI_bloq
|
|
||||||
5. GFLOPS (o MIPS)
|
5. GFLOPS (o MIPS)
|
||||||
6. CPI (pp2 pp4) y Ac
|
6. CPI (pp2 pp4) y Ac
|
||||||
7. Cronograma
|
7. Cronograma
|
||||||
@@ -182,3 +182,65 @@ A diferencia del **enlace estático**, donde el ejecutable se construye totalmen
|
|||||||
- Si lo hay, localiza la función en memoria y la enlaza. Además crea una nueva sección de datos para `printf` en el espacio de memoria virtual del nuevo programa.
|
- Si lo hay, localiza la función en memoria y la enlaza. Además crea una nueva sección de datos para `printf` en el espacio de memoria virtual del nuevo programa.
|
||||||
- Al cerrarse todos los programas que usan ese código, se descarga de memoria.
|
- Al cerrarse todos los programas que usan ese código, se descarga de memoria.
|
||||||
**El objetivo es que todo programa en ejecución comparta el código de printf.obj pero que cada uno tenga una copia privada de los datos definidos en este.**
|
**El objetivo es que todo programa en ejecución comparta el código de printf.obj pero que cada uno tenga una copia privada de los datos definidos en este.**
|
||||||
|
|
||||||
|
# <mark style="background: #FFF3A3A6;">TEMA 4: Modelo de programación de un SO</mark>
|
||||||
|
### <mark style="background: #FFB86CA6;">Arquitectura de un SO</mark>
|
||||||
|
|
||||||
|
![[Pasted image 20241024090239.png|600]]
|
||||||
|
|
||||||
|
## <mark style="background: #ADCCFFA6;">1. Para qué programar directamente con el SO</mark>
|
||||||
|
|
||||||
|
![[Pasted image 20241024113018.png|600]]
|
||||||
|
### <mark style="background: #FFB86CA6;">Como se usa indirectamente</mark>
|
||||||
|
Vía bibliotecas/runtime/frameworks del lenguaje. Por ejemplo:
|
||||||
|
```C
|
||||||
|
if( (stream = fopen("data", "w+" )) == NULL )
|
||||||
|
```
|
||||||
|
Flujo de parámetros: `fopen` $\rightarrow$ `CreateFile` $\rightarrow$ `NTCreateFile` $\rightarrow$ `Kernel`
|
||||||
|
Flujo de errores es el inverso
|
||||||
|
### <mark style="background: #FFB86CA6;">Como se usa directamente</mark>
|
||||||
|
En C/C++ parece fácil: usándolo. La mayoría de SO están escritos en C así que la API es accesible con C/C++.
|
||||||
|
### <mark style="background: #FFB86CA6;">Por qué usarlo directamente</mark>
|
||||||
|
- Se ahorra sobrecarga de la biblioteca/framework.
|
||||||
|
- Acceso a todas las capacidades del SO
|
||||||
|
- Ejemplos: `system`, `CreateProcess`
|
||||||
|
- Más control de errores
|
||||||
|
## <mark style="background: #ADCCFFA6;">2. Versiones de un SO</mark>
|
||||||
|
- Qué cambia entre versiones de un SO:
|
||||||
|
- Si se incluyen o no algunos módulos
|
||||||
|
- Evolución del kernel
|
||||||
|
- Soporte del procesador
|
||||||
|
- En Windows (NT): x86, x64... Poca variedad comparado con otros SO.
|
||||||
|
- ¿Qué implica?
|
||||||
|
- Portabilidad: binaria (raramente), source (hay que recompilar).
|
||||||
|
- API: nuevas funciones con cada versión y funciones deprecated.
|
||||||
|
## <mark style="background: #ADCCFFA6;">3. Programación en Windows desde C/C++</mark>
|
||||||
|
### <mark style="background: #FFB86CA6;">Tratamiento de cadenas y caracteres</mark>
|
||||||
|
- **ANSI 8 bits/ASCII con codificación MCBS:**
|
||||||
|
- Tipo `char`, `char*`, `char ...[]` (ANSI C)
|
||||||
|
- Tipos `CHAR` y variantes en Windows.h
|
||||||
|
- Las funciones estándar en C/C++ trabajan con ASCII: `printf`, `putc`, `getc`...
|
||||||
|
- **Unicode:**
|
||||||
|
- Uso interno en Windows (WCHAR y variantes)
|
||||||
|
- Estándar en otros lenguajes (Java, C#, Python,...)
|
||||||
|
- Funciones terminadas en W (`MessageBoxW`)
|
||||||
|
### <mark style="background: #FFB86CA6;">Tratamiento de errores</mark>
|
||||||
|
Las funciones devuelven un entero, y si este es negativo es que ha terminado con error. Para más información sobre el error se usa `GetLastError()` y para mensajes al usuario `FormatMessage()`.
|
||||||
|
# <mark style="background: #FFF3A3A6;">TEMA 5: Control de ejecución: procesos e hilos</mark>
|
||||||
|
En Windows todos los procesos tienen al menos el "main thread". El programa termina cuando termina el hilo principal. Dos modelos básicos:
|
||||||
|
- **Multihilo:** cada proceso tiene múltiples hilos. Típico de Windows aunque se usa cada vez más en UNIX/Linux.
|
||||||
|
- **Multiproceso:** múltiples procesos. Típico de UNIX/Linux, aunque también se puede en Windows. En Linux es **muy fácil** usando `fork()`.
|
||||||
|
## <mark style="background: #ADCCFFA6;">1. Operaciones básicas con hilos</mark>
|
||||||
|
Organizar la ejecución en varios hilos **¿para qué?**
|
||||||
|
EJEMPLO: Programa de proceso de audio
|
||||||
|
- **Hilo 1:** lee datos de la entrada de audio, los procesa y envía el resultado a la salida.
|
||||||
|
- Periódico
|
||||||
|
- Intensivo en datos
|
||||||
|
- Requiere velocidad de proceso
|
||||||
|
- **WORKER THREADS**
|
||||||
|
- **Hilo 2:** controla la UI (subir, bajar volumen, play, pause...) Complicado si alguna tarea es bloqueante.
|
||||||
|
- No periódico
|
||||||
|
- No intensivo
|
||||||
|
- No requiere velocidad de proceso
|
||||||
|
- **USER INTERFACE THREAD**
|
||||||
|
-
|
||||||
BIN
TERCERO/SS/images/Pasted image 20241024090239.png
Normal file
BIN
TERCERO/SS/images/Pasted image 20241024090239.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 193 KiB |
BIN
TERCERO/SS/images/Pasted image 20241024113018.png
Normal file
BIN
TERCERO/SS/images/Pasted image 20241024113018.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 61 KiB |
Reference in New Issue
Block a user