0 calificaciones0% encontró este documento útil (0 votos)
436 vistas10 páginas
El documento trata sobre las llamadas al sistema en Linux. Explica que las llamadas al sistema permiten a los procesos acceder a los servicios del núcleo y son manejadas por este. Algunos ejemplos de llamadas al sistema son open, read y write. También cubre brevemente las llamadas al sistema en Windows, indicando que estas se conocen como API y proveen funciones para diferentes tareas del sistema operativo.
El documento trata sobre las llamadas al sistema en Linux. Explica que las llamadas al sistema permiten a los procesos acceder a los servicios del núcleo y son manejadas por este. Algunos ejemplos de llamadas al sistema son open, read y write. También cubre brevemente las llamadas al sistema en Windows, indicando que estas se conocen como API y proveen funciones para diferentes tareas del sistema operativo.
El documento trata sobre las llamadas al sistema en Linux. Explica que las llamadas al sistema permiten a los procesos acceder a los servicios del núcleo y son manejadas por este. Algunos ejemplos de llamadas al sistema son open, read y write. También cubre brevemente las llamadas al sistema en Windows, indicando que estas se conocen como API y proveen funciones para diferentes tareas del sistema operativo.
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. GNU/Linux es un Sistema Operativo multitarea en el que van a convivir un gran nmero de procesos. Es posible, bien por un fallo de programacin o bien por un intento malicioso, que alguno de esos procesos haga cosas que atenten contra la estabilidad de todo el sistema. Por ello, con vistas a proteger esa estabilidad, el ncleo o kernel del sistema funciona en un entorno totalmente diferente al resto de programas. Se definen entonces dos modos de ejecucin totalmente separados: el modo kernel y el modo usuario. Cada uno de estos modos de ejecucin dispone de memoria y procedimientos diferentes, por lo que un programa de usuario no podr ser capaz de daar al ncleo. Sistemas Operativos
Las syscalls o llamadas al sistema son el mecanismo por el cual los procesos y aplicaciones de usuario acceden a los servicios del ncleo. Son la interfaz que proporciona el ncleo para realizar desde el modo usuario las cosas que son propias del modo kernel (como acceder a disco o utilizar una tarjeta de sonido). La siguiente figura explica de forma grfica cmo funciona la syscall read(). Mecanismo de peticin de servicios al kernel
READ()
User Mode Kernel Mode
FILE SYSTEM I/O
SYSTEM CALL INTERFACE HARDWARE USER PROCESS Sistemas Operativos
El modo usuario necesita acceder al disco para leer, para ello utiliza la syscall read() utilizando la interfaz de llamadas al sistema. El ncleo atiende la peticin accediendo al hardware y devolviendo el resultado al proceso que inici la peticin. Este procedimiento me recuerda al comedor de un restaurante, en l todos los clientes piden al camarero lo que desean, pero nunca entran en la cocina. El camarero, despus de pasar por la cocina, traer el plato que cada cliente haya pedido. Ningn comensal podra estropear la cocina, puesto que no tiene acceso a ella. Prcticamente todas las funciones que utilicemos desde el espacio de ejecucin de usuario necesitarn solicitar una peticin al kernel mediante una syscall, esto es, la ejecucin de las aplicaciones de usuario se canaliza a travs del sistema de peticiones al sistema. Este hecho es importante a la hora de fijar controles y registros en el sistema, ya que si utilizamos nuestras propias versiones de las syscalls para ello, estaremos abarcando todas las aplicaciones y procesos del espacio de ejecucin de usuario. Imaginemos un camarero malicioso que capturase todas las peticiones de todos los clientes y envenenase todos los platos antes de servirlos... nuestro restaurante debera cuidarse muy bien de qu personal contrata y nosotros deberemos ser cautelosos tambin a la hora de cargar drivers o mdulos en nuestro ncleo. Para hacer uso de las llamadas al sistema desde el lenguaje de programacin C, los sistemas operativos que trabajan con el ncleo Sistemas Operativos
Linux ponen a disposicin del usuario varias funciones o procedimientos de librera que representan a las llamadas del sistema. Los prototipos relativos a estas funciones o procedimientos pueden encontrarse listados en el archivo de cabecera unistd.h (este se encuentra en el directorio /usr/include/asm/, aqu tambin pueden encontrarse los archivos unistd_32.h y unistd_64.h, archivos relativos a las arquitecturas de 32 y 64 bits respectivamente). El sistema operativo de ncleo Linux cuenta con aproximadamente 200 funciones relacionadas con cada llamada al sistema, algunos de los cuales pueden agruparse en ciertas categoras que permiten el manejo o control de: procesos, seales, archivos, tiempo, etc. Los conceptos explicados anteriormente pueden resumirse con el siguiente esquema.
Sistemas Operativos
A la hora de programar en C hay 3 tipos de funciones a las que podemos recurrir. Las funciones ordinarias internas a tu programa (desarrollo propio al programa), las funciones de librera que son funciones ordinarias que residen en una librera externa a tu programa (desarrollo propio o ajeno al programa). Como por ejemplo las funciones de la librera estndar C (libc). Una llamada a estas funciones es igual a cualquier llamada a una funcin. Los argumentos son situados en los registros del procesador o en la pila. La ejecucin es transferida al comienzo del cdigo de la funcin, que tpicamente est cargada en una librera compartida. Y, por ltimo, las llamadas al sistema (system call). Llamadas al sistema para el control de procesos Sistemas Operativos
Este tipo de llamadas al sistema permiten realizar "actividades" relacionadas con los programas que estn en espera para ejecucin o que se estn ejecutando, es decir, cuando son un proceso; cada sistema operativo tiene sus formas de invocar dichas llamadas, en el caso de los sistemas operativos bajo el ncleo Linux estas se pueden invocar desde el Shell o interprete de comandos y desde el lenguaje C. Las llamadas ms comunes de este tipo son: 1. fork( ) 2. getpid( )
3. getppid( ) 4. La familia de llamadas exec() 5. wait( ) 6. waitpid() 7. exit() 8. system()
Llamadas al sistema para el control de seales: Sistemas Operativos
Las llamadas a sistema para el control de seales, son un tipo de llamada de sistema que permite a un proceso establecer comunicacin con otros procesos que se estn ejecutando en la mquina o para que el kernel se comunique con ellos, como puede ser, informar sobre alguna condicin, una solicitud de espera, etc. En tal comunicacin el proceso puede ser emisor o receptor de la seal. Las seales que se pueden producir dependen de la mquina y de los privilegios que el proceso tenga. Para la mayora de aplicaciones grandes, se usan seales como forma de controlar las tareas, pudiendo as teniendo aplicaciones en segundo plano o corriendo provisionalmente.
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. Sistemas Operativos
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 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. Las API de Windows representan una categora especial de interoperabilidad. Las API de Windows no utilizan cdigo administrado, no tienen bibliotecas de tipos integradas y utilizan tipos de datos que son diferentes a los que se utilizan en Visual Studio. Debido a estas diferencias y a que las API de Windows no Sistemas Operativos
son objetos COM, la interoperabilidad con las API de Windows y .NET Framework se lleva a cabo mediante la invocacin de la plataforma o PInvoke. Invocacin de la plataforma es un servicio que permite al cdigo administrado llamar a funciones no administradas implementadas en archivos DLL.
Llamadas al sistema de Windows desde C# : Como escribir un programa C# que hace llamadas al Sistema de Windows y sus apis Para este ejemplo he decido usar el API GetTickCount() que devuelve un valor entero y no lleva datos entrada. Su prototipo es: Sistemas Operativos
Int GetTickCount(void) y se encuentra almacenada en Kernel32.dll, Esta api nos regresa un entero con los milisegundo que ha estado encendida nuestra PC. La importacin de la api se hace en una sola lnea, el resto de cdigo es simple programacin objetos.