Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Operativos
os
aSinuna funciónlaordinaria,
embargo y seCrequiere
librería GNU unlas
encapsula procedimiento especialcon
llamadas al sistema para transferir
funciones de el controlque
manera al núcleo.
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
ll amadas al sistema en Linux.
GNU/Linux es un Sistema Operativo multitarea
mu ltitarea en el que van a convivir un gran número de procesos.
Es posible, bien por un fallo de programación 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 núcleo o kernel del sistema funciona en un entorno totalmente diferente
al resto de programas. Se definen entonces dos modos de ejecución totalmente separados: el modo
kernel y el modo usuario. Cada uno de estos modos de ejecución dispone de memoria y
procedimientos diferentes, por lo que un programa de usuario no podrá ser capaz
c apaz de dañar al núcleo.
Las syscalls o llamadas al sistema son el mecanismo por el cual los procesos y aplicaciones de
usuario acceden a los servicios del núcleo. Son la interfaz que proporciona el núcleo 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
e xplica de forma gráfica cómo funciona la syscall
s yscall read().
Mecanismo de petición de servicios al kernel
USER
PROCESS
READ()
User Mode
SYSTEM CALL INTERFACE
Kernel Mode
FILE SYSTEM
I/O
HARDWARE
Sistemas Operativ
Operativos
os
El modo usuario necesita acceder al disco para leer, para ello utiliza la syscall read() utilizando la
interfaz de llamadas al sistema. El núcleo atiende la petición accediendo al hardware y devolviendo el
resultado al proceso que inició la petición. Este procedimiento me recuerda al comedor de un
restaurante, en él todos los clientes piden al camarero
cam arero lo que desean, pero nunca entran en la cocina.
coc ina.
El camarero, después de pasar por la cocina, traerá el plato que cada cliente haya pedido. Ningún
comensal podría estropear la cocina, puesto que no tiene acceso a ella. Prácticamente todas las
funciones que utilicemos desde el espacio de ejecución de usuario necesitarán solicitar una petición
al kernel mediante una syscall, esto es, la ejecución de las aplicaciones de usuario se canaliza a
través 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 ejecución 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 debería cuidarse muy bien de
qué personal
módulos contrata
en nuestro y nosotros deberemos ser cautelosos también a la hora de cargar drivers o
núcleo.
Para hacer uso de las llamadas al sistema desde el lenguaje de programación C, los sistemas
operativos que trabajan con el núcleo Linux ponen a disposición del usuario varias funciones o
procedimientos de librería 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í también 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 núcleo Linux cuenta con aproximadamente 200 funciones
relacionadas con cada llamada al sistema, algunos de los cuales pueden agruparse en ciertas
categorías que permiten el manejo o control de: procesos, señales, archivos, tiempo, etc. Los
conceptos explicados anteriormente pueden resumirse con el siguiente esquema.
Sistemas Operativ
Operativos
os
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 librería que son
funciones ordinarias que residen en una librería externa a tu programa (desarrollo propio o ajeno al
programa). Como por ejemplo las funciones de la librería estándar C (libc). Una llamada a estas
funciones es igual a cualquier llamada a una función. Los argumentos son situados en los registros
del procesador o en la pila. La ejecución es transferida al comienzo del código de la función, que
típicamente está cargada en una librería compartida. Y, por último, las llamadas al sistema (system
call).
Llamadas al sistema para el control de procesos
3. getppid( )
4. La familia de llamadas exec…(…)
5. wait( )
6. waitpid(…)
7. exit(…)
8. system(…)
Varias DLL, procesos
Comunicación e hilos
entre procesos
Sistemas Operativ
Operativos
os
Manejo de la memoria
Monitoreo del desempeño
Manejo de energía
Almacenamiento
Información del sistema
GDI (interfaz para dispositivos gráficos) de Windows (tales como impresoras)
Interfaz de usuario de Windows
La ventaja de utilizar las API
A PI de Windows en el código es que pueden
pu eden ahorrar tiempo porque contienen
numerosas funciones útiles ya escritas y listas para utilizar.
La desventaja es que puede resultar difícil trabajar con las API
A PI de Windows y pueden ser implacables
cuando las cosas van mal.
Las API de Windows representan una categoría especial de interoperabilidad. Las API de Windows no
utilizan código administrado, no tienen bibliotecas de tipos integradas y utilizan tipos de datos que
son diferentes
Windows no sonaobjetos
los queCOM,
se utilizan en Visual Studio.
la interoperabilidad con Debido
las API adeestas diferencias
Windows y a que lasseAPIlleva
y .NET Framework de
a cabo mediante la invocación de la plataforma o PInvoke. Invocación de la plataforma es un servicio
que permite al código administrado llamar a funciones no administradas implementadas en archivos
DLL.
Sistemas Operativ
Operativos
os