Definicion de Procesos
+ Se podría definir proceso como: ‘Un programa en ejecución’
+ Para el Sistema Operativo un proceso es: ‘Un conjunto de estructuras de datos, registros y campos
con valores.’


Estructuras de Control

1º) Tablas de memoria:
+ emplean para saber que uso reciben las memorias principal y secundarias.
+ Y también para obtener cualquier otro tipo de información , relacionada con la memoria.

2º) Tablas de ficheros:
+ Almacenan toda la información que contiene un fichero o archivo.

3º) Tablas de dispositivos de E/S:
+ Almacenan toda la información sobre los periféricos o dispositivos de E/S.

4º) Tablas de procesos:
Se utilizan para gestionar toda la información que utiliza el Sistema Operativo al manejar los distintos
procesos. Estructuras de Control de Procesos:


Imagen del proceso

1º) Espacio en memoria para almacenar los distintos procesos.
2º) Espacio en memoria para almacenar la ‘pila de ejecución’ (Estructura de tamaño intermedio, donde
se almacenan datos temporales necesarios en un proceso.)
3º) ‘Bloque de control de proceso (PCB)’, (Registro con el cual el Sistema Operativo, toma
información sobre cada proceso.)


La Tabla de Procesos

+ Si enlazamos todos los ‘bloques de control de procesos’ (PCBs), mediante un array o bien una lista
enlazada, obtenemos la ‘tabla de procesos’.
- Esta, toma información de cada uno de los procesos.
- Cada proceso consta de un identificador (PI, Identificador de Procesos) para un correcto uso y control.
Que contiene la imagen del proceso: Esta esta formada por: 1)PCB 2)Pila 3)codigo 4)Datos
Tema 3. Procesos.
Hay que tener muy claras las diferencias entre programa y proceso:
Un programa es una entidad pasiva compuesta unicamente por un código y unos datos, es decir,
tiene un listado fijo.
Un proceso es una entidad activa, es el "programa" en ejecución
Un proceso se compone de:
       - Código del programa que ejecuta.
       - Estado del proceso:
               - sección de datos.
−pila

              - contador de programa
              - puntero de pila
              - palabra de estado
              - registros de uso general
              - informacion del S.O.
Un proceso puede tener tres estados distintos:
       - preparado: el proceso está listo para pasar a ejecutarse.
       - en ejecución
       - en espera: por alguna razón (operación de E/S, interrupción, etc.) el proceso debe
esperar a que se acabe una acción sin la cual no puede continuar su ejecución.

Ejecución de procesos:
       El S.O. inicia la ejecución de un proceso nuevo que está preparado. Cuando este
proceso no va a utilizar la CPU durante un tiempo (hay una llamada a E/S, etc.) el S.O. lo pone
en espera hasta que acaba esa operación. Mientras tanto pasa a la CPU la ejecución de otro
proceso que estuviera preparado y realiza los mismos pasos: ejecuta hasta que este deja de
usar la CPU, lo pone en espera si es necesario y pasa a ejecutar otro.
       Cuando la acción del proceso que está en espera termina (acaba la E/S, etc.) el S.O. lo
pone otra vez en estado de preparado, así hasta que termina con todo el proceso.
       En todos estos cambios de estado el S.O. debe guardar el "contexto" del proceso, en el
cual está toda la información necesaria para volver a ejecutarlo donde se dejó. Esta información
se guarda en el Bloque de Control de Procesos (PCB), que tiene una dirección de memoria
protegida que solo puede modificar el S.O.
       El S.O. deberá decidir que proceso de los que estan en espera pasará a ejecución
cuando la CPU quede libre, esta decisión la hará a traves de un Planificador de Procesos.
Planificación de Procesos:
       Existen dos planificadores que se encargan respectivamente de pasar trabajos o procesos
a la memoria principal y a la CPU.
       El más importante es el Planificador de la CPU que se encarga de decidir qué procesos
de los que están preparados pasarán a ejecución cuando la CPU se libere de algún otro
proceso (cuando este pase a estar en espera). Esta planificación puede ser apropiativa o no
apropiativa, siendo la primera aquella en la que unos procesos tienen prioridad sobre otros y
cuando acaban de estar en espera y pasan a preparado hacen que el S.O. les dé paso a la CPU
que abandona el proceso que tenía en ejecución, lo pone en preparado y pasa a ejecutar el que
tiene prioridad. Con el otro sistema la CPU ejecuta un proceso hasta que lo termina o por
alguna razón éste pasa a estar en espera.
       Existen varios criterios por los cuales la CPU es capaz de cambiar de proceso en
ejecución:
       - Utilización de la CPU: el S.O. pretende que la CPU este el menor tiempo posible
inactiva.
       - Productividad.
       - Tiempo de retorno: el proceso en ejecución tarda mucho en acabar una acción,
pudiendo encontrarse en un bucle muy largo.
       - Tiempo de espera: se pretende que los procesos no estén demasiado tiempo en espera.
−Tiempo de respuesta.

Los monitores se desarrollaron en la década de 1970 para que sea más fácil evitar bloqueos.
    •A monitor is a collection of procedures, variables, and data structures grouped together. Un
    monitor es una colección de procedimientos, variables y estructuras de datos agrupados.
    •Processes can call the monitor procedures but cannot access the internal data structures. Los
    procesos pueden llamar a los procedimientos del monitor, pero no puede acceder a las estructuras
    de datos internas.
    •Only one process at a time may be be active in a monitor. Sólo un proceso a la vez puede estar
    activo en un monitor.
    Active in a monitor means in ready queue or CPU with the program counter somewhere in a
    monitor method. Activo en un monitor de medios en la cola de listos o de la CPU con el contador
    de programa en algún lugar de un método de seguimiento.
    •A monitor is a language construct. Un monitor es una construcción del lenguaje.
    Compare this with semaphores, which are usually an OS construct. Compare esto con semáforos,
    que son por lo general la construcción de un sistema operativo.
    •The compiler usually enforces mutual exclusion. El compilador normalmente hace cumplir la
    exclusión mutua.
    •Condition variables allow for blocking and unblocking. Las variables de condición permite el
    bloqueo y desbloqueo.
           •cv.wait() blocks a process. cv.wait () bloquea el proceso.
           The process is said to be waiting for (or waiting on) the condition variable cv . El proceso
           se dice que está esperando (o esperando a) el cv variable de condición.
           •cv.signal() (also called cv.notify ) unblocks a process waiting for the condition
           variable cv . cv.signal () (también llamado cv.notify) desbloquea un proceso de
           espera para el cv variable de condición.
When this occurs, we need to still require that only one process is active in the monitor.
           Cuando esto ocurre, tenemos que requieren todavía de que sólo un proceso está activo en el
           monitor. This can be done in several ways: Esto se puede hacer de varias maneras:
                   •on some systems the old process (the one executing the signal) leaves the monitor
                   and the new one enters en algunos sistemas el proceso antiguo (el que ejecuta la
                   señal) sale de la pantalla y entra en el nuevo
                   •on some systems the signal must be the last statement executed inside the monitor.
                   en algunos sistemas la señal debe ser la última instrucción ejecutada en el interior
                   del monitor.
                   •on some systems the old process will block until the monitor is available again. en
                   algunos sistemas el viejo proceso se bloqueará hasta que el monitor está disponible
                   de nuevo.
                   •on some systems the new process (the one unblocked by the signal) will remain
                   blocked until the monitor is available again. en algunos sistemas el nuevo proceso
                   (el desbloqueo de la señal) permanecerá bloqueado hasta que el monitor está
                   disponible de nuevo.
   •If a condition variable is signaled with nobody waiting, the signal is lost. Si una variable de
   condición se indica con la espera a nadie, se pierde la señal.
   Compare this with semaphores, in which a signal will allow a process that executes a wait in the
   future to no block. Compare esto con semáforos, en los que una señal permitirá un proceso que se
   ejecuta una espera en el futuro a ningún bloque.
   •You should not think of a condition variable as a variable in the traditional sense. Usted no debe
   pensar en una variable de condición como una variable en el sentido tradicional.
   It does not have a value. No tiene un valor.
   Think of it as an object in the OOP sense. Piense en ello como un objeto en el sentido de
   programación orientada a objetos.
   It has two methods, wait and signal that manipulate the calling process. Dispone de dos
   métodos, espere la señal y que manipulan el proceso de llamada.


An example: Dining Philosophers Un ejemplo: Comedor filósofos
   •5 philosophers sit at a round table with 5 plates of rice and 5 chopsticks. 5 filósofos se sientan en
   una mesa redonda con 5 platos de arroz y los palillos 5.
   •2 chopsticks are require to eat. Dos palillos se necesitan para comer.
   •Each philosopher is in one of the states: Cada filósofo se encuentra en uno de los estados:
          •Thinking Pensamiento
          •Hungry Hambre
          •Eating Comida
Dining Philosophers Comedor filósofos
Look at code for almost solving this using monitor pseudocode. Mira el código para casi la solución de
este monitor utilizando pseudocódigo.
Note that this "solution" allows starvation. Tenga en cuenta que esta "solución" permite hambre.


Monitor Implementation Seguimiento a la Implementación
Monitors are implemented by using queues to keep track of the processes attempting to become active
int he monitor. Los monitores se implementan mediante las colas para hacer un seguimiento de los
procesos de intentar convertirse en int activa que tiene el monitor.
To be active, a monitor must obtain a lock to allow it to execute the monitor code. Para ser activo, un
monitor debe tener un bloqueo para permitir que se ejecute el código de seguimiento.
Processes that are blocked are put in a queue of processes waiting for an unblocking event to occur.
Los procesos que están bloqueados se ponen en una cola de procesos esperando por un evento de
desbloqueo que se produzca.
These are the queues that might be used: Estas son las colas que se podrían utilizar:
    •The entry queue contains processes attempting to call a monitor procedure from outside the
    monitor. La cola de entrada contiene los procesos de intentar llamar a un procedimiento de
    monitoreo desde el exterior del monitor.
    Each monitor has one entry queue. Cada monitor tiene una cola de entrada.
    •The signaller queue contains processes processes that have executed a notify operation. La cola
    de señalizador contiene los procesos de los procesos que se han ejecutado una notificar la
    operación.
    Each monitor has at most one signaller queue. Cada monitor tiene a lo sumo una cola señalizador.
    In some implementations, a notify leaves the process active and no signaller queue is needed. En
    algunas implementaciones, una notificación deja el proceso activo y no cola de señalizador es
necesario.
    •The waiting queue contains processes that have been awakened by a notify operation. La cola
    de espera contiene los procesos que han sido despertados por una operación de notificación.
    Each monitor has one waiting queue. Cada monitor tiene una cola de espera.
    •Condition variable queues contain processes that have executed a condition variable wait
    operation. variable de las colas de Estado de contener los procesos que han ejecutado a una
    variable condición de operación de espera.
    There is one such queue for each condition variable. Hay una cola de este tipo por cada variable de
    condición.
The relative priorities of these queues determines the operation of the monitor implementation. Las
prioridades relativas de estas colas determina el funcionamiento de la aplicación del monitor.




The queues associated with a monitor that does not have a signaller queue. Las colas asociadas a un
monitor que no tiene una cola señalizador. The lock becomes available when the active process
executes a wait or leaves the monitor. El bloqueo está disponible cuando el proceso se ejecuta una
espera activa o sale de la pantalla.
Additional information about monitors can be found in: Starving Philosophers: Experimentation with
Monitor Synchronization. Información adicional acerca de los monitores se pueden encontrar en:
hambrientos filósofos: La experimentación con Monitor de sincronización.
This describes a monitor simulator for the Dining Philosophers Problem. Esto describe un monitor de
simulador para el problema de los filósofos comedor.
One modern language that uses monitors is Java. Un lenguaje moderno que utiliza monitores es Java.


Monitor (sincronización)
From Wikipedia, the free encyclopedia De Wikipedia, la enciclopedia libre


Jump to: navigation , search Saltar a navegación , búsqueda
In concurrent programming , a monitor is an object or module intended to be used safely by more than
one thread . En la programación concurrente , un monitor es un objeto o módulo destinado a ser
utilizado con seguridad por más de un hilo . The defining characteristic of a monitor is that its methods
are executed with mutual exclusion . La característica definitoria de un monitor es que sus métodos se
ejecutan con la exclusión mutua . That is, at each point in time, at most one thread may be executing
any of its methods . Es decir, en cada momento, a lo sumo un hilo puede ejecutar cualquiera de sus
métodos . This mutual exclusion greatly simplifies reasoning about the implementation of monitors
compared to reasoning about parallel code that updates a data structure. Esta exclusión mutua
simplifica en gran medida el razonamiento sobre la aplicación de los monitores en comparación con el
razonamiento sobre el código paralelo que se actualiza una estructura de datos.
Monitors also provide a mechanism for threads to temporarily give up exclusive access, in order to wait
for some condition to be met, before regaining exclusive access and resuming their task. Los monitores
también ofrecen un mecanismo para las discusiones a abandonar temporalmente el acceso exclusivo,
con el fin de esperar a que alguna condición que deben cumplir, antes de recuperar el acceso exclusivo
y reanudar su tarea. Monitors also have a mechanism for signaling other threads that such conditions
have been met. Los monitores también tienen un mecanismo para la señalización de otros hilos que
tales condiciones se han cumplido.
Monitors were invented by CAR Hoare [ 1 ] and Per Brinch Hansen , [ 2 ] and were first implemented
in Brinch Hansen's Concurrent Pascal language. Los monitores fueron inventados por CAR Hoare [1] y
por Hansen Brinch , [2] y se aplicaron por primera vez en Brinch Hansen concurrente Pascal idioma.

Sistema opertivo

  • 1.
    Definicion de Procesos +Se podría definir proceso como: ‘Un programa en ejecución’ + Para el Sistema Operativo un proceso es: ‘Un conjunto de estructuras de datos, registros y campos con valores.’ Estructuras de Control 1º) Tablas de memoria: + emplean para saber que uso reciben las memorias principal y secundarias. + Y también para obtener cualquier otro tipo de información , relacionada con la memoria. 2º) Tablas de ficheros: + Almacenan toda la información que contiene un fichero o archivo. 3º) Tablas de dispositivos de E/S: + Almacenan toda la información sobre los periféricos o dispositivos de E/S. 4º) Tablas de procesos: Se utilizan para gestionar toda la información que utiliza el Sistema Operativo al manejar los distintos procesos. Estructuras de Control de Procesos: Imagen del proceso 1º) Espacio en memoria para almacenar los distintos procesos. 2º) Espacio en memoria para almacenar la ‘pila de ejecución’ (Estructura de tamaño intermedio, donde se almacenan datos temporales necesarios en un proceso.) 3º) ‘Bloque de control de proceso (PCB)’, (Registro con el cual el Sistema Operativo, toma información sobre cada proceso.) La Tabla de Procesos + Si enlazamos todos los ‘bloques de control de procesos’ (PCBs), mediante un array o bien una lista enlazada, obtenemos la ‘tabla de procesos’. - Esta, toma información de cada uno de los procesos. - Cada proceso consta de un identificador (PI, Identificador de Procesos) para un correcto uso y control. Que contiene la imagen del proceso: Esta esta formada por: 1)PCB 2)Pila 3)codigo 4)Datos
  • 2.
    Tema 3. Procesos. Hayque tener muy claras las diferencias entre programa y proceso: Un programa es una entidad pasiva compuesta unicamente por un código y unos datos, es decir, tiene un listado fijo. Un proceso es una entidad activa, es el "programa" en ejecución Un proceso se compone de: - Código del programa que ejecuta. - Estado del proceso: - sección de datos. −pila - contador de programa - puntero de pila - palabra de estado - registros de uso general - informacion del S.O. Un proceso puede tener tres estados distintos: - preparado: el proceso está listo para pasar a ejecutarse. - en ejecución - en espera: por alguna razón (operación de E/S, interrupción, etc.) el proceso debe esperar a que se acabe una acción sin la cual no puede continuar su ejecución. Ejecución de procesos: El S.O. inicia la ejecución de un proceso nuevo que está preparado. Cuando este proceso no va a utilizar la CPU durante un tiempo (hay una llamada a E/S, etc.) el S.O. lo pone en espera hasta que acaba esa operación. Mientras tanto pasa a la CPU la ejecución de otro proceso que estuviera preparado y realiza los mismos pasos: ejecuta hasta que este deja de usar la CPU, lo pone en espera si es necesario y pasa a ejecutar otro. Cuando la acción del proceso que está en espera termina (acaba la E/S, etc.) el S.O. lo pone otra vez en estado de preparado, así hasta que termina con todo el proceso. En todos estos cambios de estado el S.O. debe guardar el "contexto" del proceso, en el cual está toda la información necesaria para volver a ejecutarlo donde se dejó. Esta información se guarda en el Bloque de Control de Procesos (PCB), que tiene una dirección de memoria protegida que solo puede modificar el S.O. El S.O. deberá decidir que proceso de los que estan en espera pasará a ejecución cuando la CPU quede libre, esta decisión la hará a traves de un Planificador de Procesos.
  • 3.
    Planificación de Procesos: Existen dos planificadores que se encargan respectivamente de pasar trabajos o procesos a la memoria principal y a la CPU. El más importante es el Planificador de la CPU que se encarga de decidir qué procesos de los que están preparados pasarán a ejecución cuando la CPU se libere de algún otro proceso (cuando este pase a estar en espera). Esta planificación puede ser apropiativa o no apropiativa, siendo la primera aquella en la que unos procesos tienen prioridad sobre otros y cuando acaban de estar en espera y pasan a preparado hacen que el S.O. les dé paso a la CPU que abandona el proceso que tenía en ejecución, lo pone en preparado y pasa a ejecutar el que tiene prioridad. Con el otro sistema la CPU ejecuta un proceso hasta que lo termina o por alguna razón éste pasa a estar en espera. Existen varios criterios por los cuales la CPU es capaz de cambiar de proceso en ejecución: - Utilización de la CPU: el S.O. pretende que la CPU este el menor tiempo posible inactiva. - Productividad. - Tiempo de retorno: el proceso en ejecución tarda mucho en acabar una acción, pudiendo encontrarse en un bucle muy largo. - Tiempo de espera: se pretende que los procesos no estén demasiado tiempo en espera. −Tiempo de respuesta. Los monitores se desarrollaron en la década de 1970 para que sea más fácil evitar bloqueos. •A monitor is a collection of procedures, variables, and data structures grouped together. Un monitor es una colección de procedimientos, variables y estructuras de datos agrupados. •Processes can call the monitor procedures but cannot access the internal data structures. Los procesos pueden llamar a los procedimientos del monitor, pero no puede acceder a las estructuras de datos internas. •Only one process at a time may be be active in a monitor. Sólo un proceso a la vez puede estar activo en un monitor. Active in a monitor means in ready queue or CPU with the program counter somewhere in a monitor method. Activo en un monitor de medios en la cola de listos o de la CPU con el contador de programa en algún lugar de un método de seguimiento. •A monitor is a language construct. Un monitor es una construcción del lenguaje. Compare this with semaphores, which are usually an OS construct. Compare esto con semáforos, que son por lo general la construcción de un sistema operativo. •The compiler usually enforces mutual exclusion. El compilador normalmente hace cumplir la exclusión mutua. •Condition variables allow for blocking and unblocking. Las variables de condición permite el bloqueo y desbloqueo. •cv.wait() blocks a process. cv.wait () bloquea el proceso. The process is said to be waiting for (or waiting on) the condition variable cv . El proceso se dice que está esperando (o esperando a) el cv variable de condición. •cv.signal() (also called cv.notify ) unblocks a process waiting for the condition variable cv . cv.signal () (también llamado cv.notify) desbloquea un proceso de espera para el cv variable de condición.
  • 4.
    When this occurs,we need to still require that only one process is active in the monitor. Cuando esto ocurre, tenemos que requieren todavía de que sólo un proceso está activo en el monitor. This can be done in several ways: Esto se puede hacer de varias maneras: •on some systems the old process (the one executing the signal) leaves the monitor and the new one enters en algunos sistemas el proceso antiguo (el que ejecuta la señal) sale de la pantalla y entra en el nuevo •on some systems the signal must be the last statement executed inside the monitor. en algunos sistemas la señal debe ser la última instrucción ejecutada en el interior del monitor. •on some systems the old process will block until the monitor is available again. en algunos sistemas el viejo proceso se bloqueará hasta que el monitor está disponible de nuevo. •on some systems the new process (the one unblocked by the signal) will remain blocked until the monitor is available again. en algunos sistemas el nuevo proceso (el desbloqueo de la señal) permanecerá bloqueado hasta que el monitor está disponible de nuevo. •If a condition variable is signaled with nobody waiting, the signal is lost. Si una variable de condición se indica con la espera a nadie, se pierde la señal. Compare this with semaphores, in which a signal will allow a process that executes a wait in the future to no block. Compare esto con semáforos, en los que una señal permitirá un proceso que se ejecuta una espera en el futuro a ningún bloque. •You should not think of a condition variable as a variable in the traditional sense. Usted no debe pensar en una variable de condición como una variable en el sentido tradicional. It does not have a value. No tiene un valor. Think of it as an object in the OOP sense. Piense en ello como un objeto en el sentido de programación orientada a objetos. It has two methods, wait and signal that manipulate the calling process. Dispone de dos métodos, espere la señal y que manipulan el proceso de llamada. An example: Dining Philosophers Un ejemplo: Comedor filósofos •5 philosophers sit at a round table with 5 plates of rice and 5 chopsticks. 5 filósofos se sientan en una mesa redonda con 5 platos de arroz y los palillos 5. •2 chopsticks are require to eat. Dos palillos se necesitan para comer. •Each philosopher is in one of the states: Cada filósofo se encuentra en uno de los estados: •Thinking Pensamiento •Hungry Hambre •Eating Comida
  • 5.
    Dining Philosophers Comedorfilósofos Look at code for almost solving this using monitor pseudocode. Mira el código para casi la solución de este monitor utilizando pseudocódigo. Note that this "solution" allows starvation. Tenga en cuenta que esta "solución" permite hambre. Monitor Implementation Seguimiento a la Implementación Monitors are implemented by using queues to keep track of the processes attempting to become active int he monitor. Los monitores se implementan mediante las colas para hacer un seguimiento de los procesos de intentar convertirse en int activa que tiene el monitor. To be active, a monitor must obtain a lock to allow it to execute the monitor code. Para ser activo, un monitor debe tener un bloqueo para permitir que se ejecute el código de seguimiento. Processes that are blocked are put in a queue of processes waiting for an unblocking event to occur. Los procesos que están bloqueados se ponen en una cola de procesos esperando por un evento de desbloqueo que se produzca. These are the queues that might be used: Estas son las colas que se podrían utilizar: •The entry queue contains processes attempting to call a monitor procedure from outside the monitor. La cola de entrada contiene los procesos de intentar llamar a un procedimiento de monitoreo desde el exterior del monitor. Each monitor has one entry queue. Cada monitor tiene una cola de entrada. •The signaller queue contains processes processes that have executed a notify operation. La cola de señalizador contiene los procesos de los procesos que se han ejecutado una notificar la operación. Each monitor has at most one signaller queue. Cada monitor tiene a lo sumo una cola señalizador. In some implementations, a notify leaves the process active and no signaller queue is needed. En algunas implementaciones, una notificación deja el proceso activo y no cola de señalizador es
  • 6.
    necesario. •The waiting queue contains processes that have been awakened by a notify operation. La cola de espera contiene los procesos que han sido despertados por una operación de notificación. Each monitor has one waiting queue. Cada monitor tiene una cola de espera. •Condition variable queues contain processes that have executed a condition variable wait operation. variable de las colas de Estado de contener los procesos que han ejecutado a una variable condición de operación de espera. There is one such queue for each condition variable. Hay una cola de este tipo por cada variable de condición. The relative priorities of these queues determines the operation of the monitor implementation. Las prioridades relativas de estas colas determina el funcionamiento de la aplicación del monitor. The queues associated with a monitor that does not have a signaller queue. Las colas asociadas a un monitor que no tiene una cola señalizador. The lock becomes available when the active process executes a wait or leaves the monitor. El bloqueo está disponible cuando el proceso se ejecuta una espera activa o sale de la pantalla. Additional information about monitors can be found in: Starving Philosophers: Experimentation with Monitor Synchronization. Información adicional acerca de los monitores se pueden encontrar en: hambrientos filósofos: La experimentación con Monitor de sincronización. This describes a monitor simulator for the Dining Philosophers Problem. Esto describe un monitor de simulador para el problema de los filósofos comedor.
  • 7.
    One modern languagethat uses monitors is Java. Un lenguaje moderno que utiliza monitores es Java. Monitor (sincronización) From Wikipedia, the free encyclopedia De Wikipedia, la enciclopedia libre Jump to: navigation , search Saltar a navegación , búsqueda In concurrent programming , a monitor is an object or module intended to be used safely by more than one thread . En la programación concurrente , un monitor es un objeto o módulo destinado a ser utilizado con seguridad por más de un hilo . The defining characteristic of a monitor is that its methods are executed with mutual exclusion . La característica definitoria de un monitor es que sus métodos se ejecutan con la exclusión mutua . That is, at each point in time, at most one thread may be executing any of its methods . Es decir, en cada momento, a lo sumo un hilo puede ejecutar cualquiera de sus métodos . This mutual exclusion greatly simplifies reasoning about the implementation of monitors compared to reasoning about parallel code that updates a data structure. Esta exclusión mutua simplifica en gran medida el razonamiento sobre la aplicación de los monitores en comparación con el razonamiento sobre el código paralelo que se actualiza una estructura de datos. Monitors also provide a mechanism for threads to temporarily give up exclusive access, in order to wait for some condition to be met, before regaining exclusive access and resuming their task. Los monitores también ofrecen un mecanismo para las discusiones a abandonar temporalmente el acceso exclusivo, con el fin de esperar a que alguna condición que deben cumplir, antes de recuperar el acceso exclusivo y reanudar su tarea. Monitors also have a mechanism for signaling other threads that such conditions have been met. Los monitores también tienen un mecanismo para la señalización de otros hilos que tales condiciones se han cumplido. Monitors were invented by CAR Hoare [ 1 ] and Per Brinch Hansen , [ 2 ] and were first implemented in Brinch Hansen's Concurrent Pascal language. Los monitores fueron inventados por CAR Hoare [1] y por Hansen Brinch , [2] y se aplicaron por primera vez en Brinch Hansen concurrente Pascal idioma.