cambios SS 2024-10-24 12:44:01

This commit is contained in:
Jose
2024-10-24 12:44:01 +02:00
parent 0660cad897
commit 4b103c831d
5 changed files with 48 additions and 42 deletions

View File

@@ -182,3 +182,36 @@ 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.**
# <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>