Saltar al contenido

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.

MitadPiezasQué hace
Modo usuarioAplicaciones y subsistema Win32Win32 es la interfaz de programación con la que se escriben los programas de Windows
Modo usuarioAPI nativa de WindowsLa capa que hay debajo de Win32 y la que realmente cruza al núcleo
Modo kernelServicios ejecutivosMemoria, procesos, entrada y salida, seguridad y objetos del sistema
Modo kernelMicrokernel y controladoresEl núcleo mínimo, y los controladores de cada dispositivo
Modo kernelHALLa 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