seegongsik
Sistemas operativos

Qué es una llamada al sistema

Al final de la lección anterior descubrimos un hueco curioso. El sistema operativo fija permisos en cada archivo, pero mi programa no puede sacar del disco ni siquiera un archivo que tiene permiso para leer. De hecho, un programa no puede tocar a su antojo el disco, la pantalla ni la red: vive encerrado tras una cerca firme. Entonces, ¿cómo consigue abrir un archivo o mostrar letras en la pantalla?

01

Un programa vive tras una cerca (modo usuario)

Antes vimos que el sistema operativo levanta muros para que los programas no invadan la memoria de los demás. Un muro del mismo tipo se alza delante del hardware. Un programa común no puede meter la mano en el disco, ni encender un punto de la pantalla, ni manejar el dispositivo de red directamente.
Este estado de encierro se llama modo usuario.
Parece agobiante, pero tiene su razón. Si cualquier programa pudiera manejar el hardware directamente, uno solo lleno de errores o con malas intenciones podría tumbar la computadora entera.

programa
disco

Pulsa el botón y el programa intenta llegar directamente al disco. El muro del centro se pone rojo y lo frena: un programa en modo usuario no puede tocar el hardware directamente.

Cada intento directo queda frenado, que es justo lo que pide la seguridad.
Pero resulta extraño. Los programas que usamos cada día abren archivos, muestran fotos y se conectan a internet sin problema. Si están encerrados, ¿cómo lo logran?
El secreto es que no lo hacen ellos mismos: lo piden.

02

La salida: pedir en un mostrador oficial (una llamada al sistema)

En un banco no entramos nosotros mismos a la bóveda. Entregamos una solicitud en el mostrador, y un empleado con las llaves se encarga por nosotros.
Un programa funciona igual. Como no puede abrir el disco por su cuenta, va al mostrador del sistema operativo y pide: "Abre este archivo". "Pon estas letras en la pantalla". "Envía esto por internet". Cada solicitud que se entrega así al sistema operativo se llama llamada al sistema.
Lo esencial es que el programa no hace el trabajo; hace que lo haga el sistema operativo, porque solo el sistema operativo tiene derecho a tocar el hardware.

programa
→
mostrador del SO
→
disco

Pulsa el botón y el programa (dorado) le pide al mostrador del sistema operativo (azul) que abra un archivo; el sistema operativo hace el trabajo en el disco y devuelve el resultado (verde). El programa no toca el disco en ningún momento.

Pedir en el mostrador volvió posible lo imposible. El programa sigue tras la cerca, pero logró un trabajo de afuera por medio de un agente, el sistema operativo.
Hay algo desconcertante, eso sí. Es el mismo disco, así que ¿por qué se frena al programa cuando lo toca y al sistema operativo no?
Algo tiene que cambiar en ese breve instante en que se cruza el mostrador.

03

Cruzar el mostrador cambia el privilegio (modo usuario ↔ modo núcleo)

El secreto es que la CPU tiene dos modos. Uno es el modo usuario, el mundo limitado donde viven nuestros programas. El otro es el modo núcleo, el mundo del sistema operativo, donde se puede tocar el hardware y todo lo demás.
Un programa corre normalmente en modo usuario. En el instante en que una llamada al sistema cruza el mostrador, la CPU pasa por un momento a modo núcleo. Con ese privilegio fuerte, el sistema operativo hace el trabajo pedido; luego vuelve enseguida a modo usuario y entrega el resultado al programa.
Ese poder se concede solo mientras se atiende la petición, y solo a través de este mostrador; después se retira.

modo usuario

Pulsa el botón una vez y la llamada al sistema cruza el mostrador: en modo núcleo (azul) el sistema operativo hace el trabajo. Púlsalo otra vez y vuelves a modo usuario (dorado) con el resultado.

Este viaje corto, salir de un modo y volver, es el corazón de la seguridad del sistema operativo. El poder fuerte no se queda encendido: se enciende solo cuando llega una petición y luego se apaga.
Queda una pregunta. Si al cruzar el mostrador el sistema operativo hiciera todo lo que se le pide, ¿en qué se diferenciaría eso de que el programa tocara el hardware él mismo?
Por eso el mostrador tiene una tarea más: revisar.

04

Un solo mostrador permite revisarlo todo (la comprobación de permisos)

Si el sistema operativo hiciera todo en cuanto se le pide, sin preguntar, el mostrador no sería más que un pasillo. Pero el sistema operativo no funciona así.
Como toda petición tiene que pasar por este único mostrador, el sistema operativo puede revisar antes de ponerse a trabajar: "¿Tiene este programa permiso para leer este archivo?". La comprobación de permisos de la lección anterior ocurre justo aquí.
Si hay permiso, se hace el trabajo; si no, la petición se rechaza y vuelve un error. Un mostrador estrecho se convierte en el puesto de control por el que tiene que pasar toda acción arriesgada.

Elige una de las tres peticiones y mándala al mostrador. El sistema operativo comprueba el permiso: leer mi archivo y mostrar en pantalla se atienden (verde), y escribir el archivo de un amigo se rechaza con un error (rojo).

Las peticiones permitidas pasaron y la prohibida se quedó en la puerta. Que el mostrador sea estrecho resultó ser una salvaguarda, no una molestia.
Como toda acción arriesgada pasa por un mismo sitio, basta con hacer cumplir las reglas en ese sitio.
Ahora podemos enhebrarlo todo: la cerca del modo usuario, la petición que es una llamada al sistema, el paso breve por el modo núcleo y la revisión en el mostrador.

05

En resumen: el viaje de ida y vuelta en una línea, y el núcleo tras el mostrador

En una línea, va así. Un programa corre tras la cerca del modo usuario, sin poder tocar el hardware. Cuando necesita algo, lo pide en el mostrador oficial con una llamada al sistema.
En cuanto cruza, la CPU pasa por un momento a modo núcleo, y el sistema operativo comprueba primero el permiso y luego hace el trabajo. Al terminar, vuelve a modo usuario y entrega el resultado.
Así, una llamada al sistema es la única puerta bien vigilada entre un programa y el poder del sistema operativo. Abrir un archivo, encender un punto en la pantalla, enviar algo por internet: todo pasa en silencio por esta puerta.

Pulsa los cinco pasos en orden y el viaje de ida y vuelta se ilumina: programa, llamada al sistema, modo núcleo con comprobación de permisos, hacer el trabajo, devolver el resultado. Cuando los cinco están encendidos, la vuelta está completa.

Entonces, ¿quién hace de verdad el trabajo tras ese mostrador, con la fuerza del modo núcleo? El centro más profundo del sistema operativo, la parte que tiene todos los privilegios y habla directamente con el hardware, tiene nombre: el núcleo, que casi todo el mundo llama kernel. Una llamada al sistema era, desde el principio, una petición dirigida a ese kernel.
En la próxima lección por fin nos encontramos cara a cara con el kernel, y veremos en un solo lugar en qué manos han estado girando la planificación, la memoria, los archivos, los permisos y el mostrador que hemos recorrido.

En una líneaUn programa vive tras una cerca (modo usuario) para que no pueda tocar el hardware directamente, y para hacer su trabajo tiene que pedírselo al sistema operativo. Esa petición es una llamada al sistema: entregar algo como "abre este archivo" o "muéstralo en pantalla" en un mostrador oficial. En cuanto la petición cruza el mostrador, la CPU pasa por un momento a un privilegio fuerte (modo núcleo), el sistema operativo hace el trabajo y la CPU vuelve enseguida al modo anterior. Como hay un solo mostrador, el sistema operativo puede revisar cada petición antes (ahí ocurre también la comprobación de permisos), y así la cerca se mantiene firme mientras los programas consiguen lo que necesitan.
← Sistemas operativos
¿Te fue útil? Apoyar seegongsik