Menu
CoddyTech

¿Qué es una Syscall?

Parte de la sección Fundamentos del Journey de Assembly de Coddy. Lección 31 de 45.

Has escrito instrucciones de ensamblador como mov y lea. Estas instrucciones se ejecutan directamente en la CPU. Pero ¿qué pasa si necesitas hacer algo que la CPU no puede hacer por sí sola, como imprimir en la pantalla, leer del teclado o salir de un programa?

Para estas tareas, necesitas el sistema operativo (Linux, en este curso).

¿Qué es una llamada al sistema?

Una llamada al sistema (llamada al sistema) es una solicitud de tu programa al sistema operativo. Es la forma de pedirle al SO que haga algo por ti.

Por qué necesitas llamadas al sistema:

Tarea¿Puede hacerlo la CPU por sí sola?¿Se necesita una llamada al sistema?
Sumar dos númerosSíNo
Mover datos entre registrosSíNo
Imprimir texto en la pantallaNoSí
Leer la entrada del tecladoNoSí
Salir de un programaNoSí
Abrir un archivoNoSí

Cómo funciona una llamada al sistema:

  1. Pones un número de llamada al sistema en rax (indica al sistema operativo lo que quieres)
  2. Pones los argumentos en otros registros (rdi, rsi, rdx, etc.)
  3. Ejecutas la instrucción syscall
  1. La CPU salta al kernel del sistema operativo
  2. El sistema operativo realiza la solicitud
  3. El sistema operativo devuelve el control a tu programa

Analogía:

Piensa en una llamada al sistema como si llamaras a una oficina gubernamental:

PasoAnalogíaEn ensamblador
1Decide qué servicio necesitasElige el número de llamada al sistema (ponlo en rax)
2Rellena los formulariosPon los argumentos en los registros
3Envía la solicitudEjecuta syscall
4El gobierno la procesaEl kernel del SO hace el trabajo
5Recibe el resultadoEl programa continúa

Llamadas al sistema que aprenderás en este curso:

Llamada al sistemaNúmeroQué haceCapítulo
exit60Finaliza el programaCapítulo 4
write1Imprime texto en la pantallaCapítulo 5

La llamada al sistema más importante por ahora: exit

Sin exit, tu programa seguiría ejecutándose para siempre o se bloquearía. Todo programa que escribas debe terminar con una llamada al sistema exit.

mov rax, 60    ; número de syscall para salir
mov rdi, 0     ; código de salida (0 = éxito)
syscall        ; solicitar al sistema operativo que salga

Pruébalo tú mismo

Esta lección no incluye un desafío de código.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Assembly