Llamadas Al Sistema En Opensolaris

  • Uploaded by: gallen
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Llamadas Al Sistema En Opensolaris as PDF for free.

More details

  • Words: 781
  • Pages: 15
INTRODUCCION Podemos definir las llamadas al sistema o

syscalls como una interfaz entre el área de usuario y la de kernel. Si un proceso necesita realizar una tarea que implique acceder a la área de kernel, posiblemente por que no tenga privilegios para hacerlo el directamente, debe hacerlo a través de una llamada al sistema. El listado completo de llamadas al sistema que existen lo encontramos en el fichero /usr/include/sys/syscall.h.

INTRODUCCION Procesar una llamada tiene un coste a nivel

de recursos, sin embargo dependiendo de la tarea que deba realizar su coste es distinto. Un porcentaje elevado de tiempo de sistema

puede significar que nuestros procesos están requiriendo llamadas a sistema muy costosas.

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 como OpenSolaris, 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.

FUNDAMENTOS 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). La única forma de acceder al hardware es a través de las llamadas al sistema. 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.

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 (Printed Circuit Board), para poder continuar ejecutándose luego.

MECANISMO 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 LIBRERIAS COMO UN INTERMEDIARIO OpenSolaris provee librerías que relacionan

los programas de usuario y el resto del sistema operativo. Estas librerías manejan 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.

AGREGANDO UNA LLAMADA AL SISTEMA EN OPENSOLARIS Estableciendo los Parámetros del Kernel  Asumiremos que se trata de una simple llamada al

sistema que reside en el código genérico del kernel, y que pondremos el código en un archivo ya existente.  El objetivo es imprimir un mensaje arbitrario cuando se realice la llamada al sistema.

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.

AGREGANDO UNA LLAMADA AL SISTEMA EN OPENSOLARIS 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 normalmente es 256 (NSYSCALL). Este número teóricamente puede ampliarse. Para los propósitos de este ejemplo, eligiremos un número de llamada al sistema igual a 56 el cual normalmente no es usado.

AGREGANDO UNA LLAMADA AL SISTEMA EN OPENSOLARIS Llamaremos

Entonces syscall.h:

a nuestra agregamos la

syscall “schrock”. siguiente línea a

See usr/src/uts/common/sys/syscall.h

#define SYS_uadmin #define SYS_schrock #define SYS_utssys

55 56 57

AGREGANDO UNA LLAMADA AL SISTEMA EN OPENSOLARIS Escribiendo el Syscall Handler Ahora tenemos que agregar la función que será

llamada cuando invoquemos a la llamada al sistema. Lo que realmente deberíamos hacer es agregar un nuevo archivo schrock.c a usr/src/uts/common/syscall.c, sin embargo solo usaremos el código de getpid.c.

#include <sys/cmn_err.h>  int schrock(void *arg){ char buf[1024]; size_t len;  if (copyinstr(arg, buf, sizeof (buf), &len) != 0) return (set_errno(EFAULT));  cmn_err(CE_WARN, "%s", buf);  return (0); }

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.

Related Documents


More Documents from ""