cambios SS 2024-10-24 12:44:01
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user