Você está na página 1de 9

LLAMADAS AL SISTEMA

SISTEMAS OPERATIVOS

26/05/2013
Ing. Eduardo Cruz Romero
eduar14_cr@hotmail.com
cilred_tlapa@hotmail.com

www.cilred.com
Ing. Eduardo Cruz Romero

+ Documentos libres para descargar http://www.cilred.com/documentos
LLAMADAS AL SISTEMA

Las llamadas al sistema proporcionan la interfaz entre un proceso y el sistema
operativo, estas llamadas estn disponibles como instrucciones en lenguaje
ensamblador, y comnmente se incluyen en los manuales empleados por los
programadores de estos lenguajes, ciertos sistemas permiten que las llamadas al
sistema se haga directamente desde un programa en lenguaje de alto nivel, en cuyo
caso se asemejan a llamadas a subrutinas o a funciones predefinidas, pueden generar
una llamada a una rutina especial en tiempo de ejecucin, la cual hace la llamada al
sistema, o este producirse directo en lnea.

Las llamadas al sistema se puede agrupar de manera general en cinco categoras
principales: control de procesos, manipulacin de archivos, manipulacin de
dispositivos, mantenimiento informacin y comunicacin.

Control de procesos:
Terminar, abortar
Cargar, ejecutar
Crear proceso, terminar proceso
Obtener atributos del proceso, establecer atributos del proceso
Esperar tiempo
Esperar evento, sealar evento
Asignar y liberar memoria

Administracin de archivos:
Crear archivos, borrar archivo
Abrir, cerrar
Leer, escribir, reposicionar
Obtener atributos de archivo, establecer atributos de archivo

www.cilred.com
Ing. Eduardo Cruz Romero

+ Documentos libres para descargar http://www.cilred.com/documentos
Administracin de dispositivos:
Solicitar dispositivos, liberar dispositivo
Leer, escribir, reposicionar
Obtener atributos de dispositivo, establecer atributos de dispositivos
Conectar o desconectar dispositivo lgicamente

Mantenimiento de informacin:
Obtener hora o fecha, establecer hora o fecha
Obtener datos del sistema, establecer datos del sistema
Obtener atributos de proceso, archivos o dispositivo
Establecer atributos de proceso, archivo o dispositivos

Comunicaciones:
Crear, borrar conexin de comunicacin
Enviar, recibir mensajes
Transferir informacin de estado
Conectar o desconectar dispositivos remotos


Qu es una llamada al sistema?
Una llamada al sistema es cualquier mtodo que sirva para invocar un proceso
para solicitar cierto servicio al sistema operativo.

Entre ellos tenemos los ms comunes:
Time: que permite obtener la fecha y hora del sistema.
Write: que se emplea para escribir un dato en un cierto dispositivo de salida,
tales como una pantalla o un disco magntico.
Read: que es usada para leer de un dispositivo de entrada, tales como un teclado
o un disco magntico.
www.cilred.com
Ing. Eduardo Cruz Romero

+ Documentos libres para descargar http://www.cilred.com/documentos
Open: que es usada para obtener un descriptor de un fichero del sistema, ese
fichero suele pasarse a write.

Quines pueden realizar una llamada al sistema?
Todos, ya que todos los sistemas operativos proporcionan mtodos o funciones
que los programas pueden emplear para acceder a dichos recursos.

Llamadas al sistema en Windows
En el mundo Windows en general, las llamadas al sistema se denominan API
(Windows application programming interface), es un conjunto de funciones residentes
en bibliotecas (generalmente dinmicas, tambin llamadas DLL por sus siglas en ingls,
trmino usado para referirse a stas en Windows) que permiten que una aplicacin
corra bajo un determinado sistema operativo. Por ejemplo, Windows proporciona una
funcin denominada FlashWindowEx que permite que la barra de ttulo de una
aplicacin alterne entre un sombreado claro y otro oscuro.

Las funciones API se dividen en varias categoras:
Depuracin y manejo de errores
E/S de dispositivos
Varias DLL, procesos e hilos
Comunicacin entre procesos
Manejo de la memoria
Monitoreo del desempeo
Manejo de energa
Almacenamiento
Informacin del sistema
GDI (interfaz para dispositivos grficos) de Windows (tales como impresoras)
Interfaz de usuario de Windows

www.cilred.com
Ing. Eduardo Cruz Romero

+ Documentos libres para descargar http://www.cilred.com/documentos
La ventaja de utilizar las API de Windows en el cdigo es que pueden ahorrar tiempo
porque contienen numerosas funciones tiles ya escritas y listas para utilizar.
La desventaja es que puede resultar difcil trabajar con las API de Windows y pueden
ser implacables cuando las cosas van mal.

Llamadas al sistema en GNU/Linux

Una llamada al sistema est implementada en el ncleo de Linux. Cuando un
programa llama a una funcin del sistema, los argumentos son empaquetados y
manejados por el ncleo, el cual toma el control de la ejecucin hasta que la llamada se
completa. Una llamada al sistema no es una llamada a una funcin ordinaria, y se
requiere un procedimiento especial para transferir el control al ncleo. Sin embargo la
librera GNU C encapsula las llamadas al sistema con funciones de manera que pueden
ser llamadas de manera sencilla y se confunden con llamadas a funciones ordinarias.
Las funciones de entrada/salida como open y read son ejemplos de llamadas al sistema
en Linux. Linux tiene ms de 300 diferentes llamadas al sistema. Un listado de las
llamadas al sistema de tu versin del kernel de linux se puede encontrar en
/usr/include/asm/unistd.h actualmente este fichero incluye a otros dos uno para
arquitecturas de 32 bits y otro para arquitecturas de 64 bits (unistd_32.h y unistd_64.h
respectivamente)

Tutorial: llamar a las API de Windows
http://msdn.microsoft.com/es-es/library/172wfck9(v=vs.80).aspx

Llamadas admitidas al sistema
http://technet.microsoft.com/es-es/library/cc754234.aspx




www.cilred.com
Ing. Eduardo Cruz Romero

+ Documentos libres para descargar http://www.cilred.com/documentos
El dispatcher
El dispatcher, que forma parte del SO, se ejecuta cuando se invoca una llamada al
sistema. Cuando un proceso hace una llamada al sistema, el dispatcher, se encarga de
invocar la llamada que el proceso ha solicitado. Tiene un comportamiento sincronizado,
cuando recibe una llamada y se la pasa al sistema operativo hasta que no recibe
respuesta no atiende otra llamada. En el caso de x86, el dispatcher consulta el registro
eax e invoca a la llamada al sistema identificada con dicha numeracin.


Ejemplos de llamadas al sistema:

C:
#include <string.h> /* Funcin strlen() */
#include <fcntl.h> /* Modos de apertura y funcin open()*/
#include <stdlib.h> /* Funciones write() y close() */

main ( int argc, char* argv[] )
{
/* Cadena que se va a escribir */
const char* cadena = "Hola, mundo";

/* Creacin y apertura del fichero */
int fichero = open ("mi_fichero", O_CREAT|O_WRONLY,0644);

/* Comprobacin de errores */
if (fichero==-1)
{
perror("Error al abrir fichero:");
exit(1);
}

/* Escritura de la cadena */
write(fichero, cadena, strlen(cadena));
close(fichero);
return 0;

}

Java:
/*
* PruebaRuntime.java
*
* Created on 17 de abril de 2005, 15:43
*/

package chuidiang.ejemplos.runtime;

import java.io.*;

/**
* Ejemplo simple de arranque de un programa externo desde java.
* @author Chuidiang
www.cilred.com
Ing. Eduardo Cruz Romero

+ Documentos libres para descargar http://www.cilred.com/documentos
*/
public class PruebaRuntime {

/** Creates a new instance of PruebaRuntime */
public PruebaRuntime()
{
try
{
// Se lanza el ejecutable.
Process p=Runtime.getRuntime().exec ("cmd /c dir");

// Se obtiene el stream de salida del programa
InputStream is = p.getInputStream();

/* Se prepara un bufferedReader para poder leer la salida ms comodamente. */
BufferedReader br = new BufferedReader (new InputStreamReader (is));

// Se lee la primera linea
String aux = br.readLine();

// Mientras se haya leido alguna linea
while (aux!=null)
{
// Se escribe la linea en pantalla
System.out.println (aux);

// y se lee la siguiente.
aux = br.readLine();
}
}
catch (Exception e)
{
// Excepciones si hay algn problema al arrancar el ejecutable o al leer su salida.*/
e.printStackTrace();
}
}

/**
* Crea la clase principal que ejecuta el comando dir y escribe en pantalla
* lo que devuelve dicho comando.
*
* @param args the command line arguments
*/
public static void main(String[] args) {
new PruebaRuntime();
}
}






www.cilred.com
Ing. Eduardo Cruz Romero

+ Documentos libres para descargar http://www.cilred.com/documentos
Visual Basic:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

' Stores the return value.
Dim RetVal As Integer
RetVal = MBox(0, "Declare DLL Test", "Windows API MessageBox", _
MB_ICONQUESTION Or MB_YESNO)

' Check the return value.
If RetVal = IDYES Then
MsgBox("You chose Yes")
Else
MsgBox("You chose No")
End If
End Sub

Ensamblador:
cr equ 13
lf equ 10
dades SEGMENT PARA PUBLIC 'data'
msg1 DB 'Hola Mundo',cr,lf,'$'
dades ENDS
codi SEGMENT PARA PUBLIC 'code'
MAIN PROC FAR
ASSUME cs:codi,DS:dades,SS:pila,ES:dades
MOV AX,dades
MOV DS,AX
MOV ES,AX
MOV AH,09H
LEA DX,msg1
int 21H
MOV AX,4C00H
int 21h
MAIN ENDP
codi ENDS
pila SEGMENT PARA STACK 'stack'
DB 128 DUP(0)
pila ends
END MAIN

PHP:

<?php
// imprime el nombre de usuario que tiene control del proceso php/httpd activo
// (en un sistema con el ejecutable "whoami" disponible en la ruta)
echo exec('whoami');
?>




www.cilred.com
Ing. Eduardo Cruz Romero

+ Documentos libres para descargar http://www.cilred.com/documentos


Fuentes Originales:




http://1984.lsi.us.es/wiki-ssoo/index.php/Llamadas_al_sistema
http://systope.blogspot.mx/2012/06/llamadas-al-sistema-en-windows.html
http://msdn.microsoft.com/es-es/library/172wfck9(v=vs.80).aspx
http://technet.microsoft.com/es-es/library/cc754234.aspx
http://www.novanebula.net/blog/archives/117-Llamadas-al-sistema-linux-linux-system-calls.html
http://labsopa.dis.ulpgc.es/prog_c/FICHER.HTM
http://www.chuidiang.com/java/ejemplos/Runtime/runtime.php
http://wiki.inf.utfsm.cl/index.php?title=Tipos_de_llamadas_al_sistema_y_programas_de_sistema
http://php.net/manual/es/function.exec.php
Fundamentos de sistemas operativos. A. Silberschatz, P.B. Galvin, G. Gagne, McGraw-Hill, 2006.

Você também pode gostar