0% encontró este documento útil (0 votos)
154 vistas26 páginas

Llamadas Al Sistemas Expo

Este documento describe diferentes tipos de llamadas al sistema, incluyendo las relacionadas con la administración de archivos, directorios y procesos. Las llamadas al sistema permiten a los procesos interactuar con el sistema operativo para realizar tareas como leer, escribir, crear y eliminar archivos y directorios, así como crear, terminar y sincronizar procesos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
154 vistas26 páginas

Llamadas Al Sistemas Expo

Este documento describe diferentes tipos de llamadas al sistema, incluyendo las relacionadas con la administración de archivos, directorios y procesos. Las llamadas al sistema permiten a los procesos interactuar con el sistema operativo para realizar tareas como leer, escribir, crear y eliminar archivos y directorios, así como crear, terminar y sincronizar procesos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 26

LLAMADAS AL

SISTEMA

Integrantes:

 Nickie Wiliians Nina Abarca


 Marilyn pilar Rondan Carpio
 Jhojana Honorio Ferro
 Pamela Grande Sallo
 Shanira Condori
 Erika limpe
LLAMADAS AL SISTEMA

Una llamada al sistema es un método o función que puede invocar


un proceso para solicitar un cierto servicio al sistema operativo.

 Write  Read  Open  Close


 La llamada al sistema se puede agrupar de manera general en cinco categorías
principales: control de procesos, manipulación de archivos, manipulación de
dispositivos, mantenimiento información y comunicación.

 Control de procesos
 
 Terminar, abortar
 Cargar, ejecutar
 Crear proceso, terminar proceso
 Obtener atributos del proceso, establecer atributos del proceso
 Esperar tiempo
 Esperar evento, señalar evento
 Asignar y liberar memoria
 Administración de archivos
 
 Crear archivos, borrar archivo
 Abrir, cerrar
 Leer, escribir, reposicionar
 Obtener atributos de archivo, establecer atributos de archivo

 Administración de dispositivos
 
 Solicitar dispositivos, liberar dispositivo
 Leer, escribir, reposicionar
 Obtener atributos de dispositivo, establecer atributos
de dispositivos
Conectar o desconectar dispositivo lógicamente
 Mantenimiento de información
 
 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 conexión de comunicación.
 Enviar, recibir mensajes.
 Transferir información de estado.
Conectar o desconectar dispositivos remotos.
Llamadas al sistema en Windows

En el mundo Windows en general, las llamadas al sistema se denominan API (Interfaz de


programación de aplicaciones)

Las funciones API se dividen en varias categorías:

 Depuración y manejo de errores


 E/S de dispositivos
 Varias DLL, procesos e hilos
 Comunicación entre procesos
 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
VENTAJA

La ventaja de utilizar las API de Windows en el código es que pueden 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 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 núcleo de Linux. Cuando un


programa llama a una función del sistema, los argumentos son empaquetados y
manejados por el núcleo, el cual toma el control de la ejecución hasta que la
llamada se completa. Una llamada al sistema no es una llamada a una función
ordinaria, y se requiere un procedimiento especial para transferir el control al
núcleo.

Sin embargo, la librería 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 más de 300 diferentes
llamadas al sistema.
1. LLAMADAS AL SISTEMA PARA LA ADMINISTRACIÓN DE ARCHIVOS

CONCEPTOS BASE
 
• Administrador de archivos: aplicación que provee acceso a archivos y facilita el realizar
operaciones con ellos.
 
• Archivo: conjunto de información que se encuentra almacenada o guardada en la memoria
principal del ordenador, en el disco duro, en el disquete flexible o en los discos compactos.
 
CARACTERÍSTICAS DEL SISTEMA DE ARCHIVOS
 
 Contiene programas de administración que controla la creación, borrado y acceso de archivos
de datos y programas.
 Mantiene el registro de la ubicación física de los archivos.
Llamadas más usadas: read & write (mismos parámetros).
LLAMADA LSEEK
 
• Proceso de forma aleatoria
• Capaz de leer los registros del archivo en cualquier orden
• Con cada archivo hay un apuntador asociado, el cual indica la posición actual en el archivo.
• Cada operación de lectura (read) da la posición en el archivo con la cual iniciar.
• Una operación especial (seek) establece la posición de trabajo pudiendo luego leerse el archivo
secuencialmente.

Lseek tiene tres parámetros:


 
1. Descriptor del archivo.
2. Posición en el archivo.
3. Indica si la posición en el archivo es relativa al inicio del mismo, a la posición actual o al final
del archivo.
 
El valor devuelto por lseek es la posición absoluta en el archivo (en bytes) después de
modificar el apuntador.
LLAMADA STAT
 
Funciona para mostrar información del archivo ( su tamaño, la hora de la última
modificación).
• Tiene dos parámetros:
1. Especifica el archivo que se va a inspeccionar.
2. Es un apuntador a una estructura en donde se va a colocar la informaci
2. LLAMADAS AL SISTEMA PARA LA ADMINISTRACIÓN DE DIRECTORIOS

Las primeras dos llamadas, mkdir y rmdir, crean y eliminan directorios vacíos,
respectivamente. La siguiente llamada es link. Su propósito es permitir que aparezca el
mismo archivo bajo dos o más nombres, a menudo en distintos directorios. Un uso común
es para permitir que varios miembros del mismo equipo de programación compartan un
archivo común, en donde cada uno de ellos puede ver el archivo en su propio directorio,
posiblemente bajo distintos nombres

No es lo mismo compartir un archivo que proporcionar a cada miembro del equipo una
copia privada; tener un archivo compartido significa que los cambios que realice
cualquier miembro del equipo serán visibles de manera instantánea para los otros
miembros; sólo hay un archivo. Cuando se realizan copias de un archivo, los cambios
subsiguientes que se realizan en una copia no afectan a las demás.
3. LLAMADAS AL SISTEMA PARA LA ADMINISTRACIÓN DE PROCESOS

Este tipo de llamadas al sistema permiten realizar "actividades" relacionadas con los
programas que están en espera para ejecución o que se están 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 núcleo Linux estas se pueden
invocar desde el Shell o interprete de comandos y desde el lenguaje C. Las llamadas
más comunes de este tipo son:
 fork( )
 getpid( )
 getppid( )
 La familia de llamadas exec…(…)
 wait( )
 waitpid(…)
 exit(…)
 system(…)
El sistema operativo UNIX dispone de un conjunto de llamadas al sistema que definen una
poderosa interfaz para la programación de aplicaciones (API) que involucren múltiples
procesos; abriendo las puertas a la programación concurrente. Este interfaz suministra al
desarrollador de software herramientas tanto para la creación, sincronización y
comunicación de nuevos procesos, como la capacidad de ejecutar nuevos programas.

El kernel crea un nuevo proceso, proceso hijo, realizando una copia (clonación) del proceso
que realiza la llamada al sistema fork (proceso padre). Así, salvo el PID y el PPID los dos
procesos serán inicialmente idénticos. De esta forma los nuevos procesos obtienen una
copia de los recursos del padre (heredan el entorno)
Sin embargo, no se ejecuta ningún nuevo programa, para conseguir esto, uno de los
procesos ha de realizar otra llamada al sistema, exec, para reinicializar (recubrir) sus
segmentos de datos de usuario e instrucciones a partir de un programa en disco. En este
caso no aparece ningún proceso nuevo.

Cuando un proceso termina (muere),


el sistema operativo lo elimina
recuperando sus recursos para que
puedan ser usados por otros.
Creación de procesos. System call fork
#include <unistd.h>
int fork ()
fork crea un nuevo proceso; pero no lo inicia desde un nuevo programa. Los segmentos
de datos de usuario y del sistema y el segmento de instrucciones del nuevo proceso
(hijo) son copias casi exactas del proceso que realizó la llamada (padre). El valor de
retorno de fork es:
Proceso hijo 0

Proceso padre PID del proceso hijo

fork fracasa y no puede crear un nuevo proceso. -1 

El proceso hijo hereda la mayoría de los atributos del proceso padre, ya que se copian de su
segmento de datos del sistema. Sólo algunos atributos difieren entre ambos:
 PID:
 archivos: El hijo obtiene una copia de la tabla de descriptores de archivo del proceso padre, con
lo que comparten el puntero del archivo. Si uno de los procesos cambia ese puntero (realiza una
operación de E/S) la siguiente operación de E/S realizada por el otro proceso se hará a partir de la
posición indicada por el puntero modificado por el primer proceso. Sin embargo, al existir dos
tablas de descriptores de archivos si un proceso cierra su descriptor, el otro no se ve afectado.
Terminación de procesos. System call exit y wait

void exit (int status)

Exit finaliza al proceso que la llamó, con un código de estado igual al byte menos


significativo del parámetro entero status. Todos los descriptores de archivo abiertos son
cerrados y sus buffers sincronizados. Si hay procesos hijo cuando el padre ejecuta un exit,
el PPID de los hijos se cambia a 1 (proceso init). Es la única llamada al sistema que nunca
retorna.
El valor del parámetro status se utiliza para comunicar al proceso padre la forma en que el
proceso hijo termina. Por convenio, este valor suele ser 0 si el proceso termina
correctamente y cualquier otro valor en caso de terminación anormal. El proceso padre
puede obtener este valor a traves de la llamada al sistema wait.
int wait (int *statusp)
Un proceso puede terminar en un momento en el que su padre no le esté esperando. Como
el kernel debe asegurar que el padre pueda esperar por cada proceso, los procesos hijos por los
que el padre no espera se convierten en procesos zombie (se descartan su segmentos pero
siguen ocupando una entrada en la tabla de procesos del kernel). Cuando el padre realiza una
llamada wait, el proceso hijo es eliminado de la tabla de procesos.
No es obligatorio que todo proceso padre espere a sus hijos.
Un proceso puede terminar por:
Causa de terminación Contenido de *statusp

byte más a la derecha = 0
Llamada al sistema exit byte de la izquierda contiene el valor del
parámetro status de exit

En los 7 bits más a la derecha se almacena el


número de señal que termino con el proceso. Si el
Recibe una señal 8º bit más a la derecha está a 1 el proceso fue
detenido por el kernel y se generó un volcado del
proceso en un archivo core.

Caída del sistema


Todos los procesos desaparecen bruscamente. No
(p.e: pérdida de la alimentación del
hay nada que devolver.
equipo.)
Envío de señales entre procesos
 
Se define una señal, como un mensaje enviado a un proceso determinado. Este mensaje no
es más que un número entero. Un proceso cuando recibe una señal puede optar por tres
posibles alternativas para procesarla
 Ignorar la señal recibida.
 Ejecutar una acción por defecto.
 Ejecutar una acción determinada, especificada por el usuario en el propio proceso.
Algunas de las señales más comunes, utilizadas en UNIX son:
 SIGINT => Señal de interrupción: Enviada desde el terminal (teclado) por medio de Ctrl+c.
 SIGQUIT => Enviada desde el terminal por el carácter quit (Ctrl+\). El proceso activo
termina produciendo un archivo core.
 SIGKILL => Mata un proceso.

El resto de señales están definidas en el archivo de cabecera /usr/include/signal.h


4. MISCELÁNEA DE LLAMADAS AL SISTEMA

La llamada a chdir cambia el directorio de trabajo actual. Después de la llamada


chdir(“/usr/ast/prueba”); una instrucción para abrir el archivo xyz abrirá
/usr/ast/prueba/xyz.
El concepto de un directorio de trabajo elimina la necesidad de escribir nombres de
ruta absolutos (extensos) todo el tiempo.

En UNIX, cada archivo tiene un modo que se utiliza por protección. El modo incluye
los bits leer-escribir-ejecutar para el propietario, grupo y los demás. La llamada al
sistema chmod hace posible modificar el modo de un archivo. Por ejemplo, para
que un archivo sea de sólo lectura para todos excepto el propietario, podríamos
ejecutar chmod(“archivo”, 0644);

La llamada al sistema kill es la forma en que los usuarios y los procesos de usuario
envían señales. Si un proceso está preparado para atrapar una señal específica, y
luego ésta llega, se ejecuta un manejador de señales. Si el proceso no está
preparado para manejar una señal, entonces su llegada mata el proceso (de aquí
que se utilice ese nombre para la llamada). POSIX define varios procedimientos
para tratar con el tiempo
Por ejemplo, time sólo devuelve la hora actual en segundos, en donde 0
corresponde a Enero 1, 1970 a medianoche (justo cuando el día empezaba y no
terminaba).
En las computadoras que utilizan palabras de 32 bits, el valor máximo que
puede devolver time es de 232 – 1 segundos (suponiendo que se utiliza un
entero sin signo).
Este valor corresponde a un poco más de 136 años. Así, en el año 2106 los
sistemas UNIX de 32 bits se volverán locos, algo parecido al famoso problema
del año 2000 (Y2K) que hubiera causado estragos con las computadoras del
mundo en el 2000, si no fuera por el masivo esfuerzo que puso la industria de IT
para corregir el problema.
Si actualmente usted tiene un sistema UNIX de 32 bits, se le recomienda que lo
intercambie por uno de 64 bits antes del año 2106.
LA API WIN32 DE WINDOWS

La API Win32 de WindowsWindows y UNIX difieren de una manera fundamental en sus respectivos
modelos de programación.
Un programa de UNIX consiste en código que realiza una cosa u otra, haciendo llamadas al sistema
para realizar ciertos servicios. En contraste, un programa de Windows es por lo general manejado por
eventos.
 
El programa principal espera a que ocurra cierto evento y después llama a un procedimiento para
manejarlo. Los eventos comunes son las teclas que se oprimen, el ratón que se desplaza, un botón de
ratón que se oprime o un CD-ROM que se inserta. Después, los manejadores se llaman para procesar el
evento, actualizar la pantalla y actualizar el estado interno del programa. Desde luego que Windows
también tiene llamadas al sistema.
 
Con UNIX, hay casi una relación de uno a uno entre las llamadas al sistema (por ejemplo, read) y los
procedimientos de biblioteca (por ejemplo, read) que se utilizan para invocar las llamadas al sistema.En
otras palabras, para cada llamada al sistema, es raro que haya un procedimiento de biblioteca que sea
llamado para invocarloPOSIX tiene aproximadamente 100 llamadas a procedimientos.
Administración de procesos
Llamada Descripción
pid = fork() Crea un proceso hijo, idéntico al padre
pid = waitpid(pid, &statloc, opciones) Espera a que un hijo termine

s = execve(nombre, argv, entornp) Reemplaza la imagen del núcleo de un proceso

exit(estado) Termina la ejecución de un proceso y devuelve el


estado

Administración de archivos
Llamada Descripción
fd = open(archivo, como, …) Abre un archivo para lectura, escritura o ambas

s = close(fd) Cierra un archivo abierto


n = read(fd, bufer, nbytes) Lee datos de un archivo y los coloca en un búfer

n = write(fd, bufer, nbytes) Escribe datos de un búfer a un archivo


posicion = lseek(fd, desplazamiento, Desplaza el apuntador del archivo
dedonde)
s = stat(nombre, &buf) Obtiene la información de estado de un archivo
Administración del sistema de directorios y archivos
Llamada Descripción
s = mkdir(nombre, modo) Crea un nuevo directorio
s = rmdir(nombre) Elimina un directorio vacío
s = link(nombre1, nombre2) Crea una nueva entrada llamada nombre2, que
apunta a nombre1

s = unlink(nombre) Elimina una entrada de directorio


s = mount(especial, nombre, bandera) Monta un sistema de archivos

s = umount(especial) Desmonta un sistema de archivos

Llamadas varias
Llamada Descripción

s = chdir(nombredir) Cambia el directorio de trabajo

s = chmod(nombre, modo) Cambia los bits de protección de un archivo

s = kill(pid, senial) Envía una señal a un proceso

segundos = tiempo(&segundos) Obtiene el tiempo transcurrido desde Ene 1, 1970


¡VIVA EL
CAPITALISMO!

GRACIAS

También podría gustarte