Diferencia entre revisiones de «Llamada al sistema»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
m Revertidos los cambios de 79.155.175.11 a la última edición de 83.41.143.59
Línea 29: Línea 29:
* [http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html Linux system calls] - system calls for Linux kernel 2.6 [[IA32]]
* [http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html Linux system calls] - system calls for Linux kernel 2.6 [[IA32]]
* [http://www.tldp.org/LDP/khg/HyperNews/get/syscall/syscall86.html How System Calls Work on Linux/i86]
* [http://www.tldp.org/LDP/khg/HyperNews/get/syscall/syscall86.html How System Calls Work on Linux/i86]
* [http://http://www.kernel-labs.org/?q=syscalls Llamadas al sistema en Linux ]
* [http://manugarg.blogspot.com/2006/07/sysenter-based-system-call-mechanism.html Sysenter Based System Call Mechanism in Linux 2.6]
* [http://manugarg.blogspot.com/2006/07/sysenter-based-system-call-mechanism.html Sysenter Based System Call Mechanism in Linux 2.6]
* [http://www.metasploit.com/users/opcode/syscalls.html Tabla de Systems Calls en Windows ]
* [http://www.metasploit.com/users/opcode/syscalls.html Tabla de Systems Calls en Windows ]



[[Categoría:Sistemas operativos]]
[[Categoría:Sistemas operativos]]

Revisión del 16:08 18 feb 2010

En informática, llamada al sistema (en inglés system call) es el mecanismo usado por una aplicación para solicitar un servicio al sistema operativo.

Fundamentos

Los programas son un conjunto de instrucciones organizadas con un objetivo. Un proceso es conceptualmente un programa en ejecución. En los sistemas operativos multitarea, puede haber varios procesos ejecutándose concurrentemente. Cada proceso puede requerir el uso de recursos de hardware, como periféricos, o espacio de memoria principal, u otros recursos.

Dado que el hardware es compartido por múltiples procesos, el acceso a los recursos debe ser administrado para garantizar su correcto uso y evitar problemas de seguridad (si procesos malintencionados desean acceder a recursos asignados a otros procesos). Por estas razones,en los sistemas duales, el acceso al ambiente físico es manejado exclusivamente por el Sistema Operativo. La única forma de acceder al hardware es a través de las llamadas al sistema, que están perfectamente definidas. Esto no ocurre en los Sistemas Operativos no duales, como el MS-DOS, donde cualquier proceso podía acceder a todos los niveles del hardware.

Los procesadores actuales pueden ejecutar las instrucciones en diferentes estados. En los sistemas duales, normalmente son llamados modo supervisor y modo usuario. Los procesadores proveen diferentes niveles de privilegio de forma tal que los sistemas operativos pueden restringir las operaciones que ejecutan los programas tanto por razones de seguridad como de estabilidad. Estas operaciones incluyen el acceso a periféricos, habilitar o deshabilitar interrupciones, cambiar el estado del procesador, y acceder a la memoria, entre otras.

Mecanismo

Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado, previamente especificado por el mismo código. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador.

Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB, para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.

Las bibliotecas como intermediarias

Generalmente, los sistemas operativos proveen bibliotecas que relacionan los programas de usuario y el resto del sistema operativo, usualmente una biblioteca C como glibc o el runtime de Microsoft C. Esta biblioteca maneja los detalles de bajo nivel para transferir información al kernel y conmutar a modo supervisor, así como cualquier procesamiento de datos o tareas que deba ser realizada en modo supervisor. Idealmente, esto reduce la dependencia entre el sistema operativo y la aplicación, e incrementa su portabilidad.

Ejemplos y herramientas

En los sistemas operativos bajo norma POSIX o similares, algunas llamadas al sistema muy usadas son open, read, write, close, wait, exec, fork, exit y kill. Los sistemas operativos actuales tienen cientos de llamadas, por ejemplo Linux 2.x y FreeBSD tienen más de 300.

Implementaciones típicas

La implementación de las llamadas al sistema requiere un control de transferencia que involucra características especificas de la arquitectura del procesador. Una forma típica de implementar es usar una interrupción por software. Linux usa esta implementación en la arquitectura x86.

Para los procesadores con arquitectura RISC, está es la única forma, pero arquitecturas CISC como x86 soportan otras técnicas adicionales. Un ejemplo es SYSCALL/SYSRET.

Enlaces externos