Llamadas Al Sistema

download Llamadas Al Sistema

of 9

Transcript of Llamadas Al Sistema

  • LLAMADAS AL SISTEMA SISTEMAS OPERATIVOS

    26/05/2013

    Ing. Eduardo Cruz Romero [email protected] [email protected]

  • 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 /* Funcin strlen() */ #include /* Modos de apertura y funcin open()*/ #include /* 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:

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