Volver al temario
Tema 04 · 70 páginas

Comunicación y sincronización

Tema completo Modo estudio
TEXTO ORIGINAL · Páginas 3436 Ver PDF

3.2.1. Descripción

Texto íntegro de la conversión. Las figuras y la disposición de las notas se pueden consultar en el PDF.

3.2.1. Descripción

Como hemos visto, un SO define una nueva máquina con una semántica más elaborada que la de la máquina física sobre la que se ejecuta. A pesar de este aumento del nivel semántico, el SO conserva muchas de las funciones y los

Página 35

mecanismos de los que dispone el hardware. Uno de estos mecanismos que reproduce es el de las interrupciones. Los procesos pueden necesitar ser informados de acontecimientos que suceden de manera imprevista o asíncrona en cualquier instante de la ejecución de un programa con el fin de poder tratarlos y poder continuar la ejecución de éste.

Por ejemplo, un proceso puede necesitar saber si se ha producido un error en el acceso a la memoria con el fin de pedir que se aumente el área asignada a una cierta variable. O puede necesitar saber si un cierto terminal sobre el que trabaja ha sido apagado para acabar la aplicación correctamente, etc.

Las señales de software son la herramienta que proporciona el sistema operativo para trasladar el mecanismo de las interrupciones al ámbito del proceso. Igual que el mecanismo de hardware de las interrupciones, las señales dan soporte a un amplio conjunto de situaciones diferentes que los procesos han de conocer y atender con una cierta urgencia.

La procedencia de las señales de software nos permite clasificarlas de la manera siguiente:

  1. Los dispositivos de entrada/salida, que necesitan informar del proceso de situaciones que pueden dar lugar a un error si el proceso no tiene conocimiento de ellas. Son situaciones como, por ejemplo, la desconexión de un terminal, la pulsación de una tecla de control por parte del usuario, etc.

  2. Las excepciones, que son provocadas por el proceso de manera involuntaria durante la ejecución de una instrucción de lenguaje máquina o a causa de la saturación de un elemento de hardware (overflow), de un acceso a la memoria

inválido o de una instrucción anómala15.

  1. Las llamadas explícitas al sistema, que se pueden efectuar para enviar señales a un proceso determinado. Para poder hacerlo, el proceso que envía la señal ha de tener permiso. En general, sólo se permite enviar señales entre procesos del mismo dominio de protección (el administrador puede enviar señales a quien quiera). Se trata de señales como la orden para eliminar un proceso o señales para sincronizar la ejecución de procesos que lo necesiten. Por ejemplo, un proceso que tiene como función inicializar una estructura de datos determinada podría utilizar una señal para informar de los procesos usuarios de esta estructura que ya ha sido inicializada.

  2. El reloj del sistema, que es utilizado por los procesos cuando necesitan llevar a cabo ciertas acciones a intervalos concretos de tiempo. Por ejemplo, un proceso que esté esperando una cierta entrada desde un módem puede pedir ser avisado dentro de un cierto lapso de tiempo (timeout) con el fin de detectar si la línea se ha cortado o no.

Notas y pies de figura de la fuente

(15)Son instrucciones de lenguaje máquina anómalas la división entre cero, la raíz cuadrada de un número negativo, etc.

Página 36

  1. Finalmente, un proceso puede recibir una señal como el efecto lateral de una llamada al sistema. Por ejemplo, un proceso padre puede recibir una señal que le indica que uno de sus procesos hijo ha sido destruido.

El tratamiento que da un proceso a una señal que le llega puede ser de uno de los tres tipos siguientes:

  1. Un tratamiento definido por el mismo usuario. El proceso indica mediante una llamada al SO qué procedimiento se debe ejecutar cuando llegue una cierta señal.

  2. No dar ningún tratamiento (ignorar el acontecimiento). El proceso puede decidir no hacer caso de la señal y, por lo tanto, cuando llegue ésta continuará su ejecución normalmente como si no hubiera pasado nada.

  3. Un tratamiento dado por el SO. Algunas circunstancias que provocan señales son debidas o pueden llevar a un mal funcionamiento del proceso si no se utilizan las medidas necesarias. En estos casos, si el proceso no ha definido un tratamiento, el sistema debe proporcionar uno. Normalmente este tratamiento por defecto lleva asociada la destrucción del proceso al que iba destinada la señal. Por ejemplo, si un proceso efectúa un acceso incorrecto a la memoria y el proceso no lo soluciona, el SO se ve en la obligación de destruir el proceso e informar de ello a su proceso padre.

Así pues, un proceso será destruido por el SO si recibe una señal no esperada a causa de un error en su ejecución, a causa de un acontecimiento imprevisto en uno de los dispositivos a los que accede o por la actuación deliberada de otro proceso. En este caso, el SO es el encargado de enviar el estado de finalización al proceso padre con el fin de indicarle el motivo de la destrucción.

Finalmente, hemos de destacar que la programación de las señales es una información propia de cada proceso que configura el entorno que se va a ejecutar y, como tal, debe formar parte del PCB y se debe tener en cuenta en el momento de la creación de un nuevo proceso.

Ver fragmento extraído sin normalizar
3.2.1.  Descripción


Como hemos visto, un SO define una nueva máquina con una semántica más
elaborada que la de la máquina física sobre la que se ejecuta. A pesar de este
aumento del nivel semántico, el SO conserva muchas de las funciones y los

## Página 35

<!-- source-page: 35 -->

GNUFDL • PID_00214803                                                                                  35                                                                                         Comunicación y sincronización

mecanismos de los que dispone el hardware. Uno de estos mecanismos que
reproduce es el de las interrupciones. Los procesos pueden necesitar ser infor-
mados de acontecimientos que suceden de manera imprevista o asíncrona en
cualquier instante de la ejecución de un programa con el fin de poder tratarlos
y poder continuar la ejecución de éste.


Por ejemplo, un proceso puede necesitar saber si se ha producido un error en
el acceso a la memoria con el fin de pedir que se aumente el área asignada a
una cierta variable. O puede necesitar saber si un cierto terminal sobre el que
trabaja ha sido apagado para acabar la aplicación correctamente, etc.


Las señales￿de￿software son la herramienta que proporciona el sistema ope-
rativo para trasladar el mecanismo de las interrupciones al ámbito del proce-
so. Igual que el mecanismo de hardware de las interrupciones, las señales dan
soporte a un amplio conjunto de situaciones diferentes que los procesos han
de conocer y atender con una cierta urgencia.


La procedencia￿de￿las￿señales￿de￿software nos permite clasificarlas de la ma-
nera siguiente:


1) Los dispositivos￿de￿entrada/salida, que necesitan informar del proceso de
situaciones que pueden dar lugar a un error si el proceso no tiene conocimien-
to de ellas. Son situaciones como, por ejemplo, la desconexión de un terminal,
la pulsación de una tecla de control por parte del usuario, etc.

2) Las excepciones, que son provocadas por el proceso de manera involuntaria                            (15)Son instrucciones de lenguaje
durante la ejecución de una instrucción de lenguaje máquina o a causa de la                             máquina anómalas la división entre
                                                                                                        cero, la raíz cuadrada de un núme-
saturación de un elemento de hardware (overflow), de un acceso a la memoria                             ro negativo, etc.

inválido o de una instrucción anómala15.


3) Las llamadas￿explícitas￿al￿sistema, que se pueden efectuar para enviar
señales a un proceso determinado. Para poder hacerlo, el proceso que envía
la señal ha de tener permiso. En general, sólo se permite enviar señales entre
procesos del mismo dominio de protección (el administrador puede enviar
señales a quien quiera). Se trata de señales como la orden para eliminar un
proceso o señales para sincronizar la ejecución de procesos que lo necesiten.
Por ejemplo, un proceso que tiene como función inicializar una estructura
de datos determinada podría utilizar una señal para informar de los procesos
usuarios de esta estructura que ya ha sido inicializada.


4) El reloj￿del￿sistema, que es utilizado por los procesos cuando necesitan
llevar a cabo ciertas acciones a intervalos concretos de tiempo. Por ejemplo, un
proceso que esté esperando una cierta entrada desde un módem puede pedir
ser avisado dentro de un cierto lapso de tiempo (timeout) con el fin de detectar
si la línea se ha cortado o no.

## Página 36

<!-- source-page: 36 -->

GNUFDL • PID_00214803                                                                                  36                                                                                         Comunicación y sincronización

5) Finalmente, un proceso puede recibir una señal como el efecto￿lateral￿de
una￿llamada￿al￿sistema. Por ejemplo, un proceso padre puede recibir una
señal que le indica que uno de sus procesos hijo ha sido destruido.


El tratamiento que da un proceso a una señal que le llega puede ser de uno
de los tres tipos siguientes:


1)￿Un￿tratamiento￿definido￿por￿el￿mismo￿usuario. El proceso indica me-
diante una llamada al SO qué procedimiento se debe ejecutar cuando llegue
una cierta señal.


2)￿No￿dar￿ningún￿tratamiento￿(ignorar￿el￿acontecimiento). El proceso pue-
de decidir no hacer caso de la señal y, por lo tanto, cuando llegue ésta conti-
nuará su ejecución normalmente como si no hubiera pasado nada.


3)￿Un￿tratamiento￿dado￿por￿el￿SO. Algunas circunstancias que provocan se-
ñales son debidas o pueden llevar a un mal funcionamiento del proceso si
no se utilizan las medidas necesarias. En estos casos, si el proceso no ha de-
finido un tratamiento, el sistema debe proporcionar uno. Normalmente este
tratamiento por defecto lleva asociada la destrucción del proceso al que iba
destinada la señal. Por ejemplo, si un proceso efectúa un acceso incorrecto a la
memoria y el proceso no lo soluciona, el SO se ve en la obligación de destruir
el proceso e informar de ello a su proceso padre.


Así pues, un proceso será destruido por el SO si recibe una señal no esperada a
causa de un error en su ejecución, a causa de un acontecimiento imprevisto en
uno de los dispositivos a los que accede o por la actuación deliberada de otro
proceso. En este caso, el SO es el encargado de enviar el estado de finalización
al proceso padre con el fin de indicarle el motivo de la destrucción.


Finalmente, hemos de destacar que la programación de las señales es una in-
formación propia de cada proceso que configura el entorno que se va a eje-
cutar y, como tal, debe formar parte del PCB y se debe tener en cuenta en el
momento de la creación de un nuevo proceso.


Descargar Markdown originalEstudiar este apartado