Sunteți pe pagina 1din 11

INSTITUTO TECNOLOGICO SUPERIOR DE COATZACOALCOS

LENGUAJES DE INTERFAZ

REPORTE 1.5 LLAMADAS A SERVICIO DEL SISTEMA

PROFE. ING. TED ECHEVERRIA DIONISIO

ALUMNOS: KARIM PEREZ SALDIVAR RAFAEL MORALES SANTIAGO JUAN ANTONIO AQUINO MEZA GERARDO LURIA LOPEZ PEDRO ANTONIO HUERVO OROPEZA

GRUPO Y GRADO: 6 B

INDICE

LLAMADAS AA SERVICIO DEL SISTEMA 1.- INTRODUCIN.3 2.- DESARROLLO.4 3.- CONCLUSIN..10 4.- BIBLIOGRAFIA11

Pgina | 2

INTRODUCCIN
En esta investigacin veremos lo que es una llamada al sistema como sabemos existen varios tipo de llamadas al sistema como: kernel entre otros, como sabemos una llamada al sistema es cuando el CPU le da rdenes al procesador para realizar una actividad para el usuario.

Tambin encontraremos conceptos tiles como: El espacio kernel: En este espacio residen todas las subrutinas que forman parte del kernel tales como mdulos o drivers y cualquier otra que tenga que ver con la interfaz kernel. El espacio de usuario: En este espacio se encuentran los programas que utiliza el usuario final, tales como shell y cualquiera de los programas que he estado programando de ejemplos en ensamblador.

Pgina | 3

LLAMADAS AL SISTEMA
Una llamada al sistema es cuando un programa llama a un servicio del Kernel del sistema operativo. Generalmente estos servicios se encuentran disponibles como instrucciones de lenguaje ensamblador pero algunas veces tambin pueden llamarse (sin tener conocimiento de ello) desde lenguajes de alto nivel.

Kernel

ncleo

Este se considera el principal componente de los sistemas operativos sirve de interfaz entre aplicaciones y el proceso de los datos de bajo nivel hecho por el hardware del equipo. Entre sus funciones estn administrar los recursos del sistema como memoria, uso de CPU por las aplicaciones o acceso a interfaces de entrada y salida del equipo. Ejemplos de esto son:

Exit: Para terminar la ejecucin de un programa. Fork: Para crear hilos de ejecucin. Time: Para ver la hora actual. Open: Para abrir archivos Close: para cerrar archivos Como puede observarse estas son funciones muy utilizadas en cualquier lenguaje de programacin pero sin darnos cuenta estas son administradas por el ncleo del sistema operativo.

Llamadas al sistema en linux Conceptos tiles:

El espacio kernel: En este espacio residen todas las subrutinas que forman parte del kernel tales como mdulos o drivers y cualquier otra que tenga que ver con la interfaz kernel.

Pgina | 4

El espacio de usuario: En este espacio se encuentran los programas que utiliza el usuario final, tales como shell y cualquiera de los programas que he estado programando de ejemplos en ensamblador.

[imagen obtenida de: http://www.rootkitanalytics.com/images/KernelWorking1.png]

Existen diferentes implementaciones en el mundo Linux en los procesadores x86 ms antiguos se utilizaban interrupciones para migrar de un espacio de usuario a un espacio Kernel ( lo cul es un objetivo intermedio de las llamadas al sistema). En Linux en las llamadas al sistema se utiliza el registro "%eax" para identificar la llamada al sistema que se quiere invocar, la cual se especifica en una biblioteca de Ansi C. Para empezar la llamada al sistema se invoca al vector de interrupcin de Linux (0x80) que contiene las direcciones de memoria de los controladores de interrupciones. Cuando una llamada al sistema es generada, el sistema operativo salva el estado de ejecucin del proceso y empieza la ejecucin del controlador de llamadas al sistema en el vector de interrupciones.

Una vez esto el controla de llamadas al sistema provoca la ejecucin de la funcin "system_call", esta funcin controla todas las llamadas al sistema, y toma como parmetro el valor contenido en el registro %eax para identificar la llamada en especifico. Una vez realizadas una serio de verificaciones se invoca la llamada
Pgina | 5

real al sistema utilizando la funcion "system_call_table" y el indice en "%eax". Una vez que el kernel termina su ejecucin invoca ala funcin "system_call_exit" y se llama a las transiciones de resumen "resume_userspace" nuevamente para regresar al espacio de usuario para regresar a la aplicacin del usuario.

[imagen obtenida de. http://www.ibm.com/developerworks/ssa/linux/library/lsystem-calls/figure1.gif]

Por ltimo en la pgina que esta abajo encontr la lista de llamadas al sistema implementadas en el Kernel de Linux, que utilic como gua para mi ejemplo de este tema.

Ejemplo de llamada al sistema en ensamblador x86

Parametros En la tabla de llamadas al sistema de linux se puede ver que en a partir de la tercera columna se encabezan nombres de registros y en las celdas tipos de variables. Esto es por que estos registros se utilizan como parmetros para las funciones de llamadas al sistema, el primer parmetro va en el registro "%ebx" el segundo va en "%ecx", el tercero en "%edx" y el cuatro en "%esi", el quinto en "%edi" y el sexto y ultimo en "%ebp".
Pgina | 6

Hilos usando llamadas al sistema Como ejemplo de una llamada al sistema decid implementar la llamada al sistema numero dos del kernel de linux con el que cuento, esta de lo que se encarga es de partir nuestro proceso en dos y crear una copia exacta del mismo que corre de manera independiente del proceso del cual fue creado. Lo que imprimi en la terminal es lo siguiente:

Como puede observarse cada impresin en la terminal se hace de forma asncrona entre las dos funciones, ademas de que a pesar de que parece que comparten la misma direccin de memoria como contador, eso no es verdad pues como vemos la misma variable tiene valores diferentes para cada thread, lo cual nos dice que el kernel nos asigna un nuevo stack de memoria exclusivo para el nuevo thread.

Pgina | 7

Las llamadas al sistema Ya se ha comentado que el sistema operativo es una interfaz que oculta las peculiaridades del hardware. Para ello ofrece una serie de servicios que constituyen una mquina virtual ms fcil de usar que el hardware bsico. Estos servicios se solicitan mediante llamadas al sistema. La forma en que se realiza una llamada al sistema consiste en colocar una serie de parmetros en un lugar especfico (como los registros del procesador), para despus ejecutar una instruccin del lenguaje mquina del procesador denominada trap (en castellano, trampa). La ejecucin de esta instruccin mquina hace que el hardware guarde el contador de programa y la palabra de estado del procesador (PSW, Processor Status Word) en un lugar seguro de la memoria, cargndose un nuevo contador de programa y una nueva PSW. Este nuevo contador de programa contiene una direccin de memoria donde reside una parte (un programa) del sistema operativo, el cual se encarga de llevar a cabo el servicio solicitado. Cuando el sistema operativo finaliza el servicio, coloca un cdigo de estado en un registro para indicar si hubo xito o fracaso, y ejecuta una instruccin return from trap, esta instruccin provoca que el hardware restituya el contador de programa y la PSW del programa que realiz la llamada al sistema, prosiguindose as su ejecucin. Normalmente los lenguajes de alto nivel tienen una (o varias) rutinas de biblioteca por cada llamada al sistema. Dentro de estos procedimientos se asla el cdigo (normalmente en ensamblador) correspondiente a la carga de registros con parmetros, a la instruccin trap, y a obtener el cdigo de estado a partir de un registro. La finalidad de estos procedimientos de biblioteca es ocultar los detalles de la llamada al sistema, ofreciendo una interfaz de llamada al procedimiento. Como una llamada al sistema depende del hardware (por ejemplo, del tipo de registros del procesador), la utilizacin de rutinas de biblioteca hace el cdigo portable. El nmero y tipo de llamadas al sistema vara de un sistema operativo a otro. Existen, por lo general, llamadas al sistema para ejecutar ficheros que contienen programas, pedir ms memoria dinmica para un programa, realizar labores de E/S (como la lectura de un carcter de un terminal), crear un directorio, etc. Ejemplos de rutinas de biblioteca que realizan llamadas al sistema en un entorno del sistema operativo C-UNIX son: read, write, malloc, exec, etc. .

Pgina | 8

El intrprete de rdenes Cuando un usuario se conecta a un ordenador se inicia un intrprete de rdenes (en entornos UNIX llamados shells). El intrprete de rdenes es un programa que muestra un indicador (prompt) formado por algunos caracteres, que pueden incluir el directorio de trabajo (un posible indicador en MS DOS es C:\>), que indica al usuario que es posible introducir una orden. El usuario escribir una orden , por ejemplo C:\> copy fich fich2 y pulsar la tecla return. En un entorno UNIX, o MS DOS, la primera palabra es el nombre de un fichero que contiene un programa, siendo el resto de la lnea una serie de argumentos, separados por espacios, que toma dicho programa. Una excepcin a esto son las rdenes internas, que el intrprete implementa como rutinas suyas, y que no tienen, por tanto, un programa asociado guardado en disco. El intrprete de rdenes realiza entonces una o varias llamadas al sistema para ejecutar dicho programa. Cuando el programa finalice (al realizar una llamada al sistema exit) el control vuelve al programa que lo lanz (el intrprete de rdenes), mostrando ste otra vez el indicador, y repitindose el ciclo. As pues, el intrprete de rdenes es un programa que sirve de interfaz entre el sistema operativo y un usuario, utilizndolo este ltimo para ejecutar programas. A diferencia de un programador, un "usuario final" realiza todas las llamadas al sistema indirectamente, a travs de las llamadas al sistema de los programas que ejecuta. En muchos sistemas se ha optado por sustituir el intrprete de rdenes por un programa que utiliza ventanas. En estos programas aparecen iconos que el usuario puede seleccionar mediante un ratn. Cuando el usuario selecciona un icono que representa un programa se realizan llamadas al sistema para ejecutar un fichero, asociado al icono, que contiene el programa. Por lo tanto, se sustituye la interfaz del usuario para ejecutar programas, pero la interfaz con el sistema operativo no cambia. Es el momento de hacer una aclaracin. Existen una serie de programas muy importantes (como traductores, editores de texto, ensambladores, enlazadores e intrpretes de rdenes) que ayudan al programador a realizar sus programas, y que vienen en el lote con cualquier sistema operativo. Estos programas, que forman parte de los programas de sistema o software de sistemas, utilizan llamadas al sistema, pero no son parte del sistema operativo. El sistema operativo es el cdigo que acepta llamadas al sistema, y realiza un procesamiento para satisfacer dichas llamadas. El sistema operativo es el programa de sistema ms importante.

Pgina | 9

CONCLUCIN
En esta investigacin encontramos lo que es una llamada al sistema como sabemos existen varios tipo de llamadas al sistema como: kernel entre otros, como sabemos una llamada al sistema es cuando el CPU le da rdenes al procesador para realizar una actividad para el usuario.

Tambin vimos algunos conceptos tiles como: El espacio kernel: En este espacio residen todas las subrutinas que forman parte del kernel tales como mdulos o drivers y cualquier otra que tenga que ver con la interfaz kernel. El espacio de usuario: En este espacio se encuentran los programas que utiliza el usuario final, tales como shell y cualquiera de los programas que he estado programando de ejemplos en ensamblador.

Pgina | 10

BIBLIOGRAFIA
http://maxkalavera.blogspot.mx/2012/05/llamadas-al-sistema.html http://wwwdi.ujaen.es/~lina/TemasSO/INTRODUCCION/3Interfacesconelsistemao perativo.htm

Pgina | 11

S-ar putea să vă placă și