Sie sind auf Seite 1von 3

OPENSOLARIS: LLAMADAS AL SISTEMA

Cueva Alvarez, Karen Puerta Ramirez, Gallen

Pelaez Sangay, Michel Vargas Guanilo, Javier

Espinoza Sánchez, David

INTRODUCCION Dado que el hardware es compartido por


múltiples procesos, el acceso a los recursos
Podemos definir las llamadas al sistema o debe ser administrado para garantizar su
syscalls como una interfaz entre el área de correcto uso y evitar problemas de
usuario y la de kernel, si un proceso seguridad (si procesos malintencionados
necesita realizar una tarea que implique desean acceder a recursos asignados a otros
procesos). Por estas razones, en los
acceder a la área de kernel, posiblemente
sistemas duales, el acceso al ambiente físico
por que no tenga privilegios para hacerlo el es manejado exclusivamente por el Sistema
directamente, debe hacerlo a través de una Operativo. La única forma de acceder al
llamada al sistema. Ejemplos típicos seria hardware es a través de las llamadas al
acceder a un dispositivo de i/o, crear un sistema, que están perfectamente definidas.
proceso hijo, esperar a que se cumpla una Esto no ocurre en los Sistemas Operativos
no duales, como el MS-DOS, donde
condición, etc.
cualquier proceso podía acceder a todos los
El listado completo de llamadas al sistema niveles del hardware.
que existen lo encontramos en el fichero
Los procesadores actuales pueden ejecutar
/usr/include/sys/syscall.h. las instrucciones en diferentes estados. En
los sistemas duales, normalmente son
La información acerca de qué llamadas a
llamados modo supervisor y modo usuario.
sistema se están ejecutando nos puede dar Los procesadores proveen diferentes
pistas de la actividad de los distintos niveles de privilegio de forma tal que los
procesos en nuestro equipo. Lógicamente sistemas operativos pueden restringir las
procesar una llamada tiene un coste a nivel operaciones que ejecutan los programas
de recursos, sin embargo dependiendo de la tanto por razones de seguridad como de
tarea que deba realizar su coste es distinto. estabilidad. Estas operaciones incluyen el
acceso a periféricos, habilitar o deshabilitar
Un porcentaje elevado de tiempo de sistema interrupciones, cambiar el estado del
procesador, y acceder a la memoria, entre
puede significar que nuestros procesos
otras.
están requiriendo llamadas a sistema muy
costosas. 2. MECANISMO
1. FUNDAMENTOS
Las llamadas al sistema comúnmente usan
una instrucción especial de la CPU que
Los programas son un conjunto de causa que el procesador transfiera el control
instrucciones organizadas con un objetivo. a un código privilegiado, previamente
Un proceso es conceptualmente un especificado por el mismo código. Esto
programa en ejecución. En los sistemas permite al código privilegiado especificar
operativos multitarea como OpenSolaris, donde va a ser conectado así como el estado
puede haber varios procesos ejecutándose del procesador.
concurrentemente. Cada proceso puede
requerir el uso de recursos de hardware, Cuando una llamada al sistema es invocada,
como periféricos, o espacio de memoria la ejecución del programa que invoca es
principal, u otros recursos. interrumpida y sus datos son guardados,
normalmente en su PCB(Printed Circuit
Board), para poder continuar ejecutándose normalmente es 256 (NSYSCALL). Este
luego. El procesador entonces comienza a número teóricamente puede ampliarse. Se
ejecutar las instrucciones de código de alto cree que el límite más difícil de ampliar es
nivel de privilegio, para realizar la tarea
el tamaño de sysset_t, cuyos 16 enteros
requerida. Cuando esta finaliza, se retorna
al proceso original, y continúa su ejecución. deben ser capaces de representar una
El retorno al proceso demandante no bitmask completa de todas las llamadas al
obligatoriamente es inmediato, depende del sistema. Esto pone nuestro límite real en
tiempo de ejecución de la llamada al 16*32 o 512 llamadas al sistema, pero para
sistema y del algoritmo de planificación de los propósitos de este ejemplo, eligiremos
CPU. un número de llamada al sistema igual a 56
el cual normalmente no es usado.
3. LAS LIBRERIAS COMO UN
Llamaremos a nuestra syscall “schrock”.
INTERMEDIARIO
Entonces agregamos la siguiente línea a
OpenSolaris provee librerías que relacionan syscall.h:
los programas de usuario y el resto del
#define SYS_uadmin 55
sistema operativo. Estas librerías manejan #define SYS_schrock 56
los detalles de bajo nivel para transferir #define SYS_utssys 57
información al kernel y conmutar a modo
supervisor, así como cualquier See usr/src/uts/common/sys/syscall.h
procesamiento de datos o tareas que deba
ser realizada en modo supervisor. 4.3. Escribiendo el Syscall Handler
Idealmente, esto reduce la dependencia
Ahora tenemos que agregar la función que
entre el sistema operativo y la aplicación, e
incrementa su portabilidad. será llamada cuando invoquemos a la
llamada al sistema. Lo que realmente
4. AGREGANDO UNA LLAMADA deberíamos hacer es agregar un nuevo
AL SISTEMA EN OPENSOLARIS archivo schrock.c a
usr/src/uts/common/syscall.c, sin embargo
Veremos un ejemplo de cómo agregar una solo usaremos el código de getpid.c.
llamada al sistema en OpenSolaris.
#include <sys/cmn_err.h>
4.1. Estableciendo los Parámetros del
int schrock(void *arg)
Kernel {
char buf[1024];
Asumiremos que se trata de una simple size_t len;
llamada al sistema que reside en el código if (copyinstr(arg, buf, sizeof
genérico del kernel, y que pondremos el (buf), &len) != 0)
return (set_errno(EFAULT));
código en un archivo ya existente. El
objetivo es imprimir un mensaje arbitrario cmn_err(CE_WARN, "%s", buf);
cuando se realice la llamada al sistema.
return (0);
}
4.2. Escogiendo el Número de Syscall

Antes de escribir algún código, primero


tenemos que elegir un número que
identifique a nuestra llamada al sistema. La
fuente principal de documentación aquí es
syscall.h, el cual especifica todos los
números de llamadas al sistema disponibles
y además aquellos que están reservados. El
número máximo de llamadas al sistema
CONCLUSIONES

 Vimos los conceptos básicos de lo


que son las llamadas al sistema.
 En OpenSolaris sólo podemos
acceder al hardware a través de las
llamadas al sistema.
 Vimos como es el mecanismo para
la ejecución de las llamadas al
sistema.
 Vimos la importancia de las
librerías, las cuales relacionan los
programas de usuario con el resto
del sistema operativo.
 Por ultimo vimos un ejemplo
básico de como es que se agrega
una llamada al sistema en
OpenSolaris.

REFERENCIAS BIBLIOGRAFICAS

 OpenSolaris 2008.5. Iván Nieto


Castillero.
 Introducción a OpenSolaris.
Ricardo Laziano M.
 http://sun.com/solaris
 http://opensolaris.org

Das könnte Ihnen auch gefallen