diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 2d5c187..b7ea70d 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -11,10 +11,14 @@ "id": "3b843e69b2a87354", "type": "leaf", "state": { - "type": "empty", - "state": {}, + "type": "markdown", + "state": { + "file": "conflict-files-obsidian-git.md", + "mode": "source", + "source": false + }, "icon": "lucide-file", - "title": "New tab" + "title": "conflict-files-obsidian-git" } } ] @@ -171,8 +175,11 @@ "obsidian-advanced-slides:Show Slide Preview": false } }, - "active": "b40a18c39aef8e17", + "active": "3b843e69b2a87354", "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/Guión Practica 4 SPD.md", "TERCERO/SPD/P4_SPD_Presentacion.md", @@ -185,8 +192,6 @@ "TERCERO/SPD/images/Pasted image 20240916121903.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/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/plugin.js", @@ -202,7 +207,6 @@ "export/P4_SPD_Presentacion/plugin/customcontrols/README.md", "export/P4_SPD_Presentacion/plugin/menu/CONTRIBUTING.md", "export/P4_SPD_Presentacion/plugin/menu/README.md", - "conflict-files-obsidian-git.md", "TERCERO/SS/SS Lab.md", "TERCERO/SS/SS 24-25.md", "TERCERO/ATR1/Teoría_2425.md", diff --git a/TERCERO/SPD/P4_SPD.md b/TERCERO/SPD/P4_SPD.md index cd0fe8c..7032c64 100644 --- a/TERCERO/SPD/P4_SPD.md +++ b/TERCERO/SPD/P4_SPD.md @@ -78,9 +78,6 @@ double pp2() | ![[Pasted image 20241022144832.png]] | ![[Pasted image 20241022150214.png]] | (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) 6. CPI (pp2 pp4) y Ac 7. Cronograma \ No newline at end of file diff --git a/TERCERO/SS/SS 24-25.md b/TERCERO/SS/SS 24-25.md index 3d99a2d..cec6699 100644 --- a/TERCERO/SS/SS 24-25.md +++ b/TERCERO/SS/SS 24-25.md @@ -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. - 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.** + +# TEMA 4: Modelo de programación de un SO +### Arquitectura de un SO + +![[Pasted image 20241024090239.png|600]] + +## 1. Para qué programar directamente con el SO + +![[Pasted image 20241024113018.png|600]] +### Como se usa indirectamente +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 +### Como se usa directamente +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++. +### Por qué usarlo directamente +- Se ahorra sobrecarga de la biblioteca/framework. +- Acceso a todas las capacidades del SO + - Ejemplos: `system`, `CreateProcess` +- Más control de errores +## 2. Versiones de un SO +- 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. +## 3. Programación en Windows desde C/C++ +### Tratamiento de cadenas y caracteres +- **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`) +### Tratamiento de errores +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()`. +# TEMA 5: Control de ejecución: procesos e hilos +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()`. +## 1. Operaciones básicas con hilos +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** +- \ No newline at end of file diff --git a/TERCERO/SS/images/Pasted image 20241024090239.png b/TERCERO/SS/images/Pasted image 20241024090239.png new file mode 100644 index 0000000..3b874d0 Binary files /dev/null and b/TERCERO/SS/images/Pasted image 20241024090239.png differ diff --git a/TERCERO/SS/images/Pasted image 20241024113018.png b/TERCERO/SS/images/Pasted image 20241024113018.png new file mode 100644 index 0000000..931ec43 Binary files /dev/null and b/TERCERO/SS/images/Pasted image 20241024113018.png differ