ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Manejo De Interbloqueo SO


Enviado por   •  16 de Julio de 2014  •  2.225 Palabras (9 Páginas)  •  298 Visitas

Página 1 de 9

UNIVERSIDAD CENTRAL DEL ECUADOR

TRABAJO DE SISTEMAS OPERATIVOS

TEMA:

MANEJO DE INTERBLOQUEO EN EL SISTEMA OPERATIVO DEBIAN

NOMBRE:

JONATHAN FABRICIO PAREDES

AULA:

SALA 1

SEMESTRE:

ABRIL-SEPTIEMBRE

Concurrencia Interbloqueo en DEBIAN

DEBIAN proporciona diversos mecanismos de comunicación y sincronización entre procesos. En esta parte, se revisarán los más importantes:

• TUBERÍAS (PIPES).

CONCEPTOS GENERALES.

Descriptor de fichero:

Número entero positivo usado por un proceso para identificar un fichero abierto. Esta traducción se realiza mediante una tabla de descriptores de fichero, ubicado en la zona de datos del proceso.

Descriptores reservados:

• 0: entrada normal (stdin).

• 1: salida normal (stdout).

• 2: salida de error (stderr).

Redirección:

Establecer copias del descriptor de ficheros de un archivo para encauzar las operaciones de E/S hacia otro fichero.

Tubería:

Mecanismo de intercomunicación entre procesos que permite que 2 o más procesos envíen información a cualquier otro.

Tubería sin nombre:

Enlace de comunicación unidireccional, capaz de almacenar su entrada (hasta 4 KB en BSD o hasta 40 KB en System V).

Tuberías nombradas (FIFO):

Permiten una comunicación menos restringida, ya que las colas FIFO existen en el sistema de archivos hasta que son borradas.

Características:

• Permite comunicar procesos no emparentados.

• Tiene una entrada en el sistema de archivos.

• Usa una política de colas "primero en llegar, primero en servirse".

• Sólo disponible en Debian y Unix

Redirección.

Subrutinas dup y dup2:

- Descripción:

Duplica un descriptor de fichero.

- Formatos:

#include <unistd.h>

#include <fcntl.h>

#include <sys/types>

int dup (desc_abierto)

int desc_abierto;

int dup2 (desc_abierto, desc_nuevo)

int desc_abierto, desc_nuevo;

- Parámetros:

desc_abierto: Descriptor de fichero abierto.

desc_nuevo: Nuevo descriptor de fichero devuelto por dup2.

- Devuelve:

dup devuelve el menor descriptor de fichero que esté libre.

dup2 devuelve el valor de desc_nuevo.

Ambas subrutinas devuelven el valor -1 en caso de error.

Subrutina fcntl:

- Descripción:

Realiza operaciones de control sobre ficheros abiertos, tales como:

• duplicar el descriptor,

• poner o leer características del descriptor,

• poner o leer estado del fichero,

• gestionar bloqueos de registros,

• gestionar la propiedad de la E/S asíncrona,

• cerrar varios ficheros.

- Formato:

#include <unistd.h>

#include <fcntl.h>

#include <sys/types>

int fcntl (descriptor, comando, argumento)

int descriptor, comando, argumento);

- Parámetros:

descriptor: Descriptor del fichero.

comando: Operación ha realizar.

argumento: Parámetro del comando.

- Devuelve:

Valor devuelto por el comando; -1, en caso de error.

- Operaciones:

F_DUPFD: Obtener el menor descriptor de fichero disponible que sea mayor que el parámetro descriptor. Mantiene el mismo puntero y las mismas características del fichero original.

F_GETFD: Obtener características del descriptor.

F_SETFD: Poner características del descriptor.

F_GETFL: Obtener estado del fichero.

F_SETFL: Poner estado del fichero.

F_GETLK: Obtener información de bloqueo.

F_SETLK: Poner bloqueo.

F_SETLKW: Poner bloqueo en una zona bloqueada.

F_GETOWN: Obtener PID (>0) o PGID (<0) del proceso que recibe las señales SIGIO o SIGURG.

F_SETOWN: Poner PID (>0) o PGID (<0) del proceso gestor de la E/S asíncrona.

F_CLOSEM: Cierra todos los descriptores desde descriptor hasta el valor máximo (OPEN_MAX).

- Características del descriptor de ficheros:

FD_CLOEXEC: Indica si el descriptor se cerrará ante una función exec.

- Estados del modo de acceso al fichero:

O_RDONLY: Abierto sólo para lectura.

O_RDWR: Abierto para lectura y escritura.

O_WRONLY: Abierto sólo para escritura.

- Bloqueos:

F_RDLCK: Bloqueo de lectura (compartido).

F_WRLCK: Bloqueo de escritura (exclusivo).

F_UNLCK: Sin bloqueo.

Comunicación entre procesos emparentados.

Subrutina pipe

- Descripción:

Crea un canal de comunicación entre procesos emparentados.

- Formato:

#include <unistd.h>

int pipe (descriptores)

int descriptores[2];

- Parámetros:

Tabla que recibirá los descriptores de entrada y de salida de la tubería.

- Devuelve:

0, si se ha completado correctamente; -1, en caso de error.

- Comentarios:

a) descriptores[0] se abre para lectura y descriptores[1], para escritura.

b) La operación de lectura en descriptores[0] accede a los datos escritos en descriptores[1] como en una cola FIFO (primero en llegar, primero en servirse),

Comunicación entre procesos no emparentados.

Subrutina mkfifo:

- Descripción:

Crea un canal FIFO de comunicaciones entre procesos que no necesitan estar emparentados.

- Formato:

#include <sys/mode.h>

int mkfifo (camino, modo)

const char *camino;

int modo;

- Parámetros:

camino: Camino completo del fichero FIFO.

modo: Tipo de fichero y permisos de acceso.

- Devuelve:

0, si se ha completado correctamente; -1, en caso de error.

• MENSAJES.

Una cola de mensajes funciona como una FIFO, pero con algunas diferencias. Generalmente, los mensajes son sacados de la cola en el orden en que se pusieron. Sin embargo, hay maneras de sacar cierto mensaje de la cola antes de que alcance llegar al inicio de la cola.

Un proceso puede crear una nueva cola de mensajes, o se puede conectar a una ya existente. De esta forma, dos procesos pueden compartir información mediante la misma cola de mensajes.

Una vez que se crea una cola de mensajes, esta no desaparece hasta que se destruya. Todos los procesos que alguna vez la usaron pueden finalizar, pero la cola todavía

...

Descargar como (para miembros actualizados) txt (18 Kb)
Leer 8 páginas más »
Disponible sólo en Clubensayos.com