Anatomía del sistema operativo
Qué hace un sistema operativo por debajo, dónde está la frontera entre lo que puede tocar una aplicación y lo que solo puede tocar el núcleo, y por qué existen las capas de abstracción.
Qué hace un sistema operativo
Un sistema operativo es la capa de software que se interpone entre las aplicaciones y el hardware. Las aplicaciones no saben cuántos discos hay, ni cómo se habla con la tarjeta de red, ni cuánta memoria queda libre: piden, y el sistema operativo decide y reparte.
- Gestión de procesos: decide qué programa usa el procesador y durante cuánto tiempo.
- Gestión de memoria: reparte la memoria entre programas y los aísla para que uno no pueda leer la memoria de otro.
- Sistema de ficheros: convierte un disco, que solo entiende de bloques, en carpetas y archivos con nombre.
- Entrada y salida: habla con teclado, pantalla, disco, red e impresoras a través de los controladores.
- Usuarios y permisos: identifica quién está delante y decide qué puede hacer.
Windows y Linux hacen exactamente eso, con arquitecturas distintas y con nombres distintos para las mismas piezas. macOS, Android e iOS son variantes de la misma idea: Android se apoya en el núcleo de Linux, y macOS e iOS descienden de Unix a través de BSD.
Casi todo lo que se pregunta de este tema son parejas: una pieza de Windows y su equivalente en Linux. Estudiar las dos a la vez ahorra la mitad del trabajo.
Para el examen
Sus cinco funciones: administrar procesos, memoria, ficheros, entrada y salida, y usuarios
Android: usa el núcleo de Linux
macOS e iOS: descienden de Unix a través de BSD
Modo usuario y modo kernel en Windows
El procesador puede ejecutar código en dos niveles de privilegio. En el nivel sin privilegios corren las aplicaciones: si intentan tocar el hardware directamente, el procesador las detiene. En el nivel privilegiado corre el núcleo, que sí puede hacerlo. Windows dibuja esa frontera en dos mitades, modo usuario y modo kernel.
| Mitad | Piezas | Qué hace |
|---|---|---|
| Modo usuario | Aplicaciones y subsistema Win32 | Win32 es la interfaz de programación con la que se escriben los programas de Windows |
| Modo usuario | API nativa de Windows | La capa que hay debajo de Win32 y la que realmente cruza al núcleo |
| Modo kernel | Servicios ejecutivos | Memoria, procesos, entrada y salida, seguridad y objetos del sistema |
| Modo kernel | Microkernel y controladores | El núcleo mínimo, y los controladores de cada dispositivo |
| Modo kernel | HAL | La capa que se apoya en el hardware y lo presenta de forma uniforme al resto |
Una aplicación no toca nunca el hardware. Cruza al núcleo por una única puerta, y en Windows esa puerta es la API nativa, no Win32.
Para el examen
Modo usuario: aplicaciones, subsistema Win32 y API nativa
Modo kernel: servicios ejecutivos, microkernel, controladores y HAL
Quién cruza la frontera: la API nativa
Las capas de abstracción: HAL y VFS
La HAL, capa de abstracción de hardware, es la capa más baja del modo kernel de Windows: se apoya directamente en la máquina y ofrece hacia arriba una vista uniforme de ella. El resto del sistema operativo habla con la HAL, no con la placa base concreta que hay debajo. Cambiar de hardware no obliga a reescribir el sistema, solo esa capa.
Linux aplica la misma idea al almacenamiento con el sistema de ficheros virtual, el VFS. Un proceso abre, lee y escribe siempre igual, esté el fichero en un disco interno, en un pendrive o en un CD, porque el VFS es quien traduce esa petición al sistema de ficheros que hay montado ahí.
La HAL abstrae el hardware y el VFS abstrae el almacenamiento. Las dos existen por el mismo motivo: que la capa de arriba no tenga que saber qué hay debajo.
Para el examen
HAL: la capa más baja del modo kernel de Windows: presenta el hardware de forma uniforme
VFS: su análogo en Linux para el almacenamiento