ES2206329T3 - Metodos y sistemas basados en subprocesos para utilizar la potencia inactiva de tratamientos de uno o mas ordenadores para resolver problemas cientificos complejos. - Google Patents

Metodos y sistemas basados en subprocesos para utilizar la potencia inactiva de tratamientos de uno o mas ordenadores para resolver problemas cientificos complejos.

Info

Publication number
ES2206329T3
ES2206329T3 ES00980873T ES00980873T ES2206329T3 ES 2206329 T3 ES2206329 T3 ES 2206329T3 ES 00980873 T ES00980873 T ES 00980873T ES 00980873 T ES00980873 T ES 00980873T ES 2206329 T3 ES2206329 T3 ES 2206329T3
Authority
ES
Spain
Prior art keywords
server
thread
computer
molecules
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES00980873T
Other languages
English (en)
Inventor
Christopher E. GlaxoSmithKline KEEFER
Stephane Murphy
Joseph D. GlaxoSmithKline SIMPKINS
Sidney Stanley GlaxoSmihtKline YOUNG
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Glaxo Group Ltd
Original Assignee
Glaxo Group Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Glaxo Group Ltd filed Critical Glaxo Group Ltd
Application granted granted Critical
Publication of ES2206329T3 publication Critical patent/ES2206329T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Information Transfer Between Computers (AREA)
  • Power Sources (AREA)
  • Computer And Data Communications (AREA)
  • Exhaust Gas After Treatment (AREA)

Abstract

Un método basado en subprocesos para usar el poder de tratamiento inactivo o no utilizado de uno o más ordenadores en red con el fin de resolver un problema complejo, comprendiendo el método: (a) iniciar un subproceso en un ordenador cliente para obtener de un servidor una descripción de trabajo relacionada con una subparte de un problema complejo. (b) permitir al programador de subprocesos proporcionado por un sistema operativo que se ejecuta en un ordenador cliente programar automáticamente la ejecución del subproceso; y (c) en respuesta a la recepción de datos del servidor, tomar datos de trabajo del servidor y resolver la subparte especificada por la descripción del trabajo.

Description

Métodos y sistemas basados en subprocesos para utilizar la potencia inactiva de tratamientos de uno o más ordenadores para resolver problemas científicos complejos.
Campo técnico
La presente invención se refiere a métodos y sistemas para utilizar la potencia inactiva de tratamiento de uno o más ordenadores con el fin de resolver problemas científicos complejos. Más en particular, la presente invención se refiere a métodos y sistemas basados en subprocesos para utilizar la potencia inactiva de tratamiento de uno o más ordenadores para resolver problemas científicos complejos.
Antecedentes de la invención
Las empresas de tamaño mediano a grande tienen un gran número de ordenadores de sobremesa que se conectan entre sí a través de una o más redes. Estos ordenadores suelen estar inactivos gran parte del tiempo. Por ejemplo, tales máquinas pueden estar inactivas por las noches, los fines de semana y mientras los empleados están ocupados en otras tareas. Un muestreo realizado recientemente indica que las máquinas de sobremesa se utilizan durante menos del 5% de su tiempo. Los servidores, también, suelen estar inactivos más del 90% de su tiempo. A la vista de la potencia de cálculo no aplicada que reside en estas máquinas de escritorio inactivas, se han desarrollado métodos y sistemas para utilizarla con el fin de resolver problemas complejos.
Por ejemplo, la patente de EE.UU. Nº 6.112.225 concedida a Kraft et al. divulga un sistema de proceso de distribución de tareas para adscribir ordenadores a la realización de tareas de cálculo durante el tiempo en que están desocupadas. En el sistema de Kraft et al., se necesitan ordenadores periféricos para cargar un programa de activación aplicable a los tiempos de espera, desde un ordenador coordinador. El programa de activación de tiempos en espera puede incluir un salvapantalla que determine cuándo se encuentra inactivo el ordenador periférico, tomando como base la ocupación de la CPU, o cuando transcurra un período determinado desde la última vez en que el usuario utilizó el teclado. Exigir a los usuarios cargar un programa de activación en los tiempos de espera no es deseable, ya que esta operación se debe realizar en cada uno de los ordenadores que se desea que participe en la tarea conjunta. Además, la ejecución de un programa que mida el tiempo o carga de proceso el tiempo transcurrido desde la última vez que se usó el teclado consume ciclos de máquina en los ordenadores periféricos, lo que desperdicia tiempo de espera que, por lo demás, se podría utilizar para realizar una tarea conjunta.
La patente de los EE.UU. Nº 5.031.089, concedida a Liu et al., divulga un esquema de asignación dinámica de recursos aplicable a sistemas informáticos heterogéneos distribuidos. En Liu et al., un número plural de nodos pares incluyen los medios lógicos para calcular y guardar un valor de carga de trabajo que indica el número de trabajos almacenados en la cola del nodo. Cada nodo tiene dispositivos lógicos para transferir el trabajo a otro nodo par. Finalmente, cada nodo tiene una lógica que funciona al terminar cada tarea y que comprueba el valor de carga propio de cada nodo y realiza un sondeo de todos los otros nodos pares para ver sus valores respectivos de carga de trabajo. Si la carga de trabajo del propio nodo es baja y la de los otros es elevada, el nodo que realiza la verificación tomará para sí el trabajo que realiza otro nodo sobrecargado. Si bien el sistema descrito en Liu et al. puede lograr el equilibrado de cargas entre los ordenadores pares, tal sistema puede sobrecargar la red conectando los nodos pares con el tráfico entre estos nodos que están continuamente intentando equilibrar sus cargas. Este tráfico congestionaría la red y, por lo tanto, no sería transparente para el usuario. Por lo tanto, el sistema divulgado por Liu et al. puede ser indeseable cuando se trate de una red en que los ordenadores usados para resolver el problema de proceso o tratamiento distribuido también los utilicen los usuarios normales.
Por ejemplo, en una organización grande, como una empresa fabricante de fármacos, los usuarios finales pueden utilizar sus ordenadores respectivos para el correo electrónico, para navegar por la web, para redactar documentos y para otras tareas. Si uno o más ordenadores de la red conectados a estos ordenadores se encuentran resolviendo un problema científico complejo en el cual se utiliza el equilibrado de cargas entre pares, el tráfico necesario para implementar este equilibrado basado en pares puede sobrecargar la red e interferir con comunicaciones a y desde otros ordenadores que no se encuentran en espera. Por ello, el sistema divulgado por Liu et al. puede ser sólo adecuado para ordenadores distribuidos dedicados a resolver un problema complejo.
A la luz de las dificultades asociadas a los algoritmos de computación distribuida convencionales, hace tiempo que se siente la necesidad de disponer de métodos y sistemas para utilizar la potencia inactiva de tratamiento de ordenadores conectados en red para resolver problemas complejos de tal manera que se minimice el impacto sobre el usuario final.
Descripción de la invención
Según uno de sus aspectos, la presente invención incluye un sistema basado en subprocesos para resolver problemas científicos complejos. Tal sistema incluye un cliente que extrae trabajo de un servidor, trabajo que se refiere a una tarea científica compleja. Más en particular, el cliente dispone de código informático para iniciar el primer subproceso con el fin de obtener del servidor la descripción del trabajo, un segundo subproceso para obtener datos del servidor. El cliente permite que el sistema operativo programe automáticamente la ejecución del primer y segundo subprocesos. El primer y segundo subprocesos son, preferiblemente, unos que se encuentran en estado de espera. Tal y como se utiliza en este documento, la expresión "subprocesos en espera" se refiere a aquellos que tienen una prioridad menor que los de usuario. Los subprocesos de usuario son aquellos programados por los programas de usuario, como los programas de tratamiento de textos, programas de correo electrónico, etc. La palabra "subprocesos", tal y como se utiliza aquí, se refiere a subprocesos de ejecución, que están ejecutando instancias de un programa.
Un sistema basado en subprocesos, conforme a realizaciones de la presente invención, se usa preferiblemente en ordenadores de red para resolver tareas científicas complejas. Como el código de los clientes se ejecuta automáticamente cuando el cliente que opera el sistema programa la ejecución de un subproceso inactivo, el impacto sobre el trabajo del usuario se minimiza. Además, como se analizará en detalle más abajo, tal sistema funciona preferiblemente sobre una tarea compleja que esté dividida en pequeñas partes, de manera que los datos transmitidos por la red para realizar la tarea se minimizan y se maximiza el trabajo que ejecuta cada cliente. Las tareas que hacen uso intenso de la informática y que pueden ser realizadas por clientes conforme a la presente invención, incluyen, por ejemplo, determinar las características tridimensionales de moléculas y determinar otras propiedades físicas de las moléculas. En tal sistema, los clientes pueden tomar una molécula o un conjunto de moléculas de entre un conjunto al que pueda acceder el servidor. A continuación, los clientes puede realizar los cálculos complejos necesarios para determinar las propiedades de las moléculas. Después, los clientes transmiten los resultados de sus cálculos al servidor. Como la representación de las moléculas suele ser corta, se minimizan los datos transmitidos por la red. Además, como los cálculos necesarios para determinar las propiedades tridimensionales y otras características de las moléculas requieren un uso intenso de la potencia de cálculo de los ordenadores, los clientes realizan una gran cantidad de trabajo. En consecuencia, se logran los objetivos de minimizar el tráfico por la red y maximizar el trabajo de los clientes.
Por lo tanto, es un objeto de la presente invención proporcionar un método y un sistema para utilizar la potencia inactiva de tratamiento de uno o más ordenadores en red para resolver un problema científico complejo que minimice el impacto sobre el usuario y sobre la red del usuario.
Algunos de los objetos de la invención se han indicado anteriormente, otros serán evidentes a medida que continúe la descripción, cuando se considere en relación con los dibujos adjuntos, como se explica del mejor modo en lo que sigue.
Breve descripción de los dibujos
Ahora se explicarán realizaciones preferidas de la invención referida a los dibujos adjuntos, de los cuales:
La Figura 1 es un diagrama de bloques que ilustra un entorno operativo ejemplar para realizaciones de la presente invención.
La Figura 2 es un diagrama esquemático de un sistema basado en subprocesos para resolver problemas científicos complejos conforme a una realización de la presente invención.
La Figura 3 es un diagrama de flujo que ilustra los pasos de ejemplo ejecutados por un cliente para sacar un trabajo de un servidor y realizar las tareas necesarias para el trabajo usando subprocesos programados automáticamente por el sistema operativo conforme a una realización de la presente invención; y
La Figura 4 es un diagrama de bloques que ilustra la programación automática de subprocesos por parte de un sistema operativo, que usan realizaciones de la presente invención para resolver problemas científicos complejos.
Descripción detallada de la invención Entorno operativo ejemplar
Volviendo a los dibujos, donde los mismos números de referencia se refieren a elementos parecidos, la invención se ilustra tal y como está implementada en un entorno informático adecuado. Aunque no se necesita, la invención se describirá en el contexto general de las instrucciones ejecutables por un ordenador, como módulos de programa, que ejecuta un ordenador personal. En general, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc., que realizan tareas particulares o implementan tipos abstractos y particulares de datos. Además, los expertos en la materia apreciarán que la invención se puede aplicar con otras configuraciones de sistemas informáticos, incluyendo dispositivos de mano, sistemas multiprocesador, electrónica de consumo basada en microprocesadores o de electrónica programable, equipos PC de red, miniordenadores, unidades centrales y similares. La invención también se puede poner en práctica en entornos informáticos distribuidos donde las tareas son realizadas por dispositivos de tratamiento distantes que estén vinculados a través de una red de comunicaciones. En un entorno informático distribuido, los módulos de programa pueden estar situados tanto en dispositivos de almacenamiento de memoria local como distantes.
Con referencia a la Figura 1, un sistema de ejemplo para implementar la invención incluye un dispositivo informático de uso general en forma de ordenador personal (20), incluida una unidad de tratamiento (21), una memoria de sistema (22) y un bus de sistema (23) que acopla diversos componentes del sistema, incluyendo desde la memoria de sistema a la unidad de tratamiento (21). El bus de sistema (23) puede ser cualquiera de varios tipos de estructuras de bus, incluido un bus de memoria o controlador de memoria, un bus de periféricos, y un bus local que usa muy diversas arquitecturas de bus. La memoria del sistema incluye memoria de sólo lectura (ROM) (24) y memoria de acceso aleatorio (RAM) (25). En la ROM (24) está almacenado un sistema básico de entrada/salida (BIOS), (26), con las rutinas básicas que ayudan a transferir información entre elementos dentro del ordenador personal (20), como ocurre durante el arranque. El ordenador personal (20) incluye además una unidad de disco duro (27) para la lectura y escritura en un disco duro, que no se muestra, una unidad de disco magnético (28) para la lectura y escritura en un disco magnético retirable (29) y una unidad de disco óptico (30) para la lectura o escritura en discos ópticos retirables (31), como los CD-ROM y otros medios ópticos.
La unidad de disco duro (27), la unidad de disco magnético (28) y la unidad de disco óptico (30) están conectadas al bus del sistema (23) mediante una interfaz de disco duro (32), la interfaz de unidad de disco magnético (33) y una interfaz de unidad de disco óptico (34), respectivamente. Las unidades y sus medios anexos y legibles por ordenador proporcionan almacenamiento no volátil de instrucciones legibles por el ordenador, de estructuras de datos, módulos de programa y otros datos para el ordenador personal (20). Aunque el entorno de ejemplo descrito aquí emplea un disco duro, un disco magnético retirable (29) y un disco óptico retirable (31), los expertos en la materia apreciarán que existe la posibilidad de que otros tipos de medios legibles por un ordenador puedan almacenar datos a los que pueda acceder un ordenador, como casetes magnéticos, tarjetas de memoria instantánea, discos de vídeo digital, cartuchos Bernouilli, memorias de acceso aleatorio, memorias de sólo lectura y similares que se pueden utilizar también en el entorno operativo de ejemplo.
Numerosos módulos de programa pueden almacenarse en el disco duro, en el disco magnético (29), el disco óptico (31), la ROM (24) o RAM (25), incluido un sistema operativo (35), uno o más programas de aplicación (36), otros módulos de programa (37) y datos de programa (38). El sistema operativo (35) puede incluir un programador de subprocesos que programe automáticamente la ejecución de estos subprocesos, según sus niveles de prioridad, establecidos por programas de usuario. Un usuario puede introducir órdenes e informaciones en el ordenador personal (20) a través de dispositivos de entrada, como un teclado (40) y un dispositivo de puntero (42). Otros dispositivos de entrada (no mostrados) pueden ser un micrófono, un panel táctil, una palanca de mando, un mando de juegos, un plato de movimiento satelital, un dispositivo explorador o similar. Estos y otros dispositivos de entrada se conectan a menudo a la unidad de procesos (21) a través de una interfaz de puerto serie (46) acoplada al bus del sistema, pero que puede conectarse mediante otras interfaces, como un acceso puerto paralelo, un puerto de juegos o un bus serie universal (USB). Un monitor (47) u otro tipo de dispositivo de visualización se puede conectar también al bus del sistema (23) a través de una interfaz, como por ejemplo una tarjeta de vídeo (48). Además del monitor, el ordenador personal suele incluir otros dispositivos de salida periféricos, no mostrados, tales como altavoces e impresoras.
El ordenador personal (20) puede operar en un entorno de red usando conexiones lógicas con uno o más ordenadores distantes, tal como un ordenador distante (49). El ordenador distante (49) puede ser otro ordenador personal, un servidor, un encaminador (router), un PC de red, un dispositivo escudriñador u otro nodo de red común, y suele incluir uno o más de los elementos descritos más arriba respecto del ordenador personal (20), aunque sólo se ha ilustrado un dispositivo de almacenamiento en memoria (50) en la Figura 1. Las conexiones lógicas representadas en la Figura 1 incluyen una red de área local (LAN) (51), una red de área amplia (WAN) (52), y una red de área del sistema (SAN), (53). Los entornos de área local, área amplia y de red son lugar común en oficinas, redes de ordenador a nivel de empresa, intranets y en Internet.
Los entornos de área de sistema se utilizan para interconectar nodos en el interior de un sistema de computación distribuido, como una agrupación (clúster). Por ejemplo, en la realización representada, el ordenador personal (20) puede comprender un primer nodo, situado en una agrupación y el ordenador distante puede englobar un segundo nodo, en la agrupación. En un entorno de este tipo, es preferible que el ordenador personal (20) y el ordenador distante (49) se encuentren bajo un dominio administrativo común. Por lo tanto, aunque el ordenador (49) esté etiquetado como "distante" puede estar físicamente próximo al ordenador personal (20).
Cuando se utiliza en un entorno de red LAN o SAN, el ordenador personal (20) está conectado a la red local (51) o a la red del sistema (53) a través de adaptadores de interfaz de red (54) y (54a). Los adaptadores de interfaz de red (54) y (54a) pueden incluir unidades de tratamiento (55) y (55a) y una o más unidades de memoria (56) y (56a).
Cuando se utiliza en un entorno de red WAN, el ordenador personal (20) suele incluir un módem (58) u otro medio para establecer comunicaciones por la WAN (52). El módem (58), que puede ser interno o externo, está conectado al bus del sistema (23) a través de la interfaz de puerto serie 46. En un entorno de red, los módulos de programa representados con respecto al ordenador personal (20), o partes del mismo, se pueden almacenar en el dispositivo de almacenamiento de memoria distante. Se apreciará que las conexiones de red mostradas son ejemplares, y se pueden usar otros tipos de enlaces de comunicaciones entre los ordenadores.
La Figura 2 ilustra un sistema basado en subprocesos destinado a la resolución de problemas científicos complejos conforme a una realización de la presente invención. En la Figura 2, el sistema incluye una pluralidad de nodos clientes (200), nodos servidores (202) y bases de datos de trabajos (204). Los nodos clientes (200) y los nodos servidores (202) pueden ser similares en su configuración al ordenador personal (20) ilustrado en la Figura 1. La base de datos de trabajos (204) puede incluir también un ordenador de comunicaciones que es similar al ordenador personal (20) ilustrado en la Figura 1. En la realización ilustrada, los nodos clientes (200) se conectan a través de una red Ethernet (206). Sin embargo, la presente invención no está limitada a la interconexión de nodos clientes a través de una Ethernet. Se puede utilizar cualquier tecnología de red de área local, por ejemplo, en una realización alternativa, un anillo testigo (token ring) o un FDDI.
Los nodos clientes (200) incluyen cada uno de ellos instrucciones ejecutables por ordenador para tomar la tarea de los nodos servidor (202) basados en la programación de los subprocesos inactivos por los sistemas operativos de los nodos clientes (200). Los servidores (202) pueden ser servidores web convencionales que responden a las peticiones GET del protocolo de transferencia de hipertexto (HTTP) procedentes de los clientes (200). Los servidores Web (202) pueden recibir datos de clientes (200) a través de peticiones PUT de HTTP.
La presente invención no está limitada a suministrar datos o trabajos a clientes utilizando servidores web. Por ejemplo, en una realización alternativa de la invención, los servidores (202) pueden ser servidores que usen el protocolo de transferencia de archivos (FTP). Debido a que los nodos clientes usan protocolos, como FTP y HTTP, que están disponibles mediante librerías estándar, se reduce la complejidad del programa cliente.
La Figura 3 ilustra pasos de ejemplo para implementar el proceso de la invención que pueden realizar clientes (200) en adjudicación de tareas y datos de los servidores (202). Consultando la Figura 3, en el paso ST1, se inicia un proceso que contiene código para crear el primer subproceso inactivo. Tal proceso se puede cargar en un nodo cliente cuando se carga el sistema operativo en el nodo cliente. El proceso se puede iniciar automáticamente cuando se inicia el sistema operativo. Como el código para extraer datos del servidor está programado como subproceso inactivo, este subproceso no se ejecutará hasta que todos los subprocesos de usuario prioritarios se hayan ejecutado o estén en reposo. Más abajo se analizará detalladamente un mecanismo de ejemplo por el cual un sistema operativo programa los subprocesos.
En el paso ST2, el sistema operativo programa la ejecución del subproceso inactivo. En el paso ST3, el nodo cliente consulta al servidor para determinar si está disponible algún trabajo. En el paso ST4, y si no hay trabajos disponibles, el nodo cliente continúa la comprobación siempre y cuando el subproceso esté programado para su ejecución. Una vez que esté programado o se active un subproceso de usuario, la consulta termina automáticamente.
En el paso ST4, y si el nodo cliente recibe una respuesta del servidor indicativa de que está disponible un trabajo, entonces, en el paso ST5, el nodo del cliente toma una descripción de trabajo del servidor. Como se ha analizado anteriormente, tomar una descripción de trabajo del servidor puede conllevar el envío de peticiones HTTP GET a dicho servidor. En el paso ST6, el nodo cliente determina si un programa de trabajo que está ejecutando el trabajo especificado en la descripción del trabajo está presente o no en el nodo cliente. Si no está presente el programa exigido en el ST7, el nodo cliente toma el programa de trabajo del servidor.
En el paso ST8, el nodo cliente crea un subproceso inactivo del sistema operativo para ejecutar el programa de trabajo. Esto se puede conseguir con las líneas de código siguientes, que se pueden incluir en la función main() del programa que ejecuta el primer subproceso:
hRunningThread = CreateThread(NULL, 0, &Running ThreadProc,
(void*)this,
CREATE_SUSPENDED, &IThreadlD);
SetThreadPriority(hRunningThread,
THREAD_PRIORITY_IDLE);ResumeThread(hRunningThread);
En el código mostrado anteriormente, las órdenes están escritas en C++ y son particulares del sistema operativo WINDOWS®. Sin embargo, quedará claro para cualquiera con conocimientos en el tema que se pueden usar órdenes similares en otros sistemas operativos como los de tipo UNIX. En el ejemplo ilustrado, la función CreateThread() crea un subproceso que se ejecutará dentro de un espacio virtual de direcciones del proceso que realiza la llamada. La función CreateThread() pasa un parámetro que especifica la dirección de la función que el subproceso debe ejecutar. En este ejemplo, este parámetro es RunningThreadProc. La función SetThreadPriority establece la prioridad del subproceso a la de inactivo. La función ResumeThread() reduce el recuento de suspensión del subproceso. Cuando este recuento de suspensión alcanza 0, se reanuda la ejecución del subproceso. La razón de que se utilice la función ResumeThread es que el subproceso se creó en estado suspendido para permitir establecer la prioridad.
Una vez que se ha creado el subproceso de ejecución del trabajo, este subproceso no se ejecutará hasta que lo programe el sistema operativo. Esto se demuestra en el paso ST9 de la Figura 3. En el ST10, una vez que el sistema operativo programa el subproceso de ejecución de un trabajo, se ejecuta éste. En el paso ST11, el programa de trabajo toma los datos de entrada del servidor. Tal acción se puede realizar mediante el problema especificado por la descripción de trabajo y los datos de entrada se resolverán cuando el sistema operativo programe el subproceso inactivo que contiene el programa de trabajo. La resolución del problema continúa hasta que se realice el trabajo (paso ST13) o hasta que se programe otro subproceso de mayor prioridad. Si se programa un subproceso de mayor prioridad, el sistema operativo almacena el contexto del subproceso inactivo, ejecuta el de mayor prioridad y vuelve a la ejecución del subproceso inactivo. En el paso ST14, una vez que se realiza el trabajo, el programa de trabajo envía los resultados al servidor. Esto se puede conseguir realizando peticiones HTTP o FTP PUT.
Aunque la realización ilustrada en la Figura 3 muestra la programación del primer y segundo subprocesos por parte del sistema operativo para realizar una tarea científica compleja, la invención actual no está limitada a dos procesos inactivos. Por ejemplo, se puede utilizar un solo subproceso o más de dos subprocesos. Además, los subprocesos no tienen por qué estar inactivos. Lo único que se necesita para los fines de la presente invención es que los subprocesos tengan prioridad inferior a la que tienen los de usuario con el fin de minimizar sus efectos sobre los subprocesos de usuario, y que los procesos los programe automáticamente el sistema operativo.
Por lo tanto, como se ilustra en la Figura 3, la presente invención utiliza el mecanismo de programación automática de subprocesos propio del sistema operativo para controlar la extracción de datos de trabajo y programas del servidor, la ejecución de los trabajos y el envío de los resultados al servidor. Como la programación se consigue utilizando automáticamente procesos de programación del sistema operativo, el efecto sobre el ordenador del usuario y sobre el trabajo de éste se reduce al mínimo.
Programación automática de la ejecución de subprocesos por parte del sistema operativo
Como una característica importante de la invención es permitir que el sistema operativo programe automáticamente los subprocesos para tomar trabajo del servidor, a continuación se analiza tal programación automática. La explicación que sigue ilustra la manera en que el sistema operativo WINDOWS® NT programa automáticamente los subprocesos. Sin embargo, como se ha indicado anteriormente, la presente invención no está limitada a los sistemas operativos WINDOWS® NT. Se pueden utilizar otros sistemas operativos, tales como LINUX® y otros de tipo UNIX. Cualquier sistema operativo que incluya un mecanismo automático de programación de subprocesos que permita establecer prioridades entre subprocesos se puede utilizar para implementar la presente invención.
En el sistema operativo WINDOWS® NT el microkernel asigna un número del 1 al 31 a los subprocesos conforme a tiempo de procesador, según su prioridad dinámica, número que representa la importancia de la tarea. El subproceso de mayor prioridad siempre se ejecuta en el procesador, incluso aunque esto exija interrumpir un subproceso de menor prioridad. Las prioridades se organizan jerárquicamente. Cada nivel de prioridad inferior establece un rango de prioridad, dentro del cual las prioridades de nivel inferior pueden variar:
1-
La clase de prioridad base de un proceso establece un intervalo de prioridad base del proceso y de sus subprocesos. Las clases de prioridad base son Idle, Normal, High y Real-Time, cada una de las cuales representa un intervalo numérico de prioridades de base que a veces se solapa con los extremos. La clase de prioridad de base está establecida en el código de la aplicación. El código de aplicación de ejemplo que se puede usar para establecer la clase de prioridad base es como sigue:
SetPriorityClass(::GetCurrentProcess(), IDLE_PRIORITY_CLASS);
SetThreadPriority(::GetCurrentThread(), THREAD_PRIORITY_IDLE);
El sistema operativo no cambia la clase de prioridad de base, pero varía la prioridad base dentro de la clase para mejorar la respuesta del proceso al usuario.
2-
La prioridad de base de un proceso varía dentro del intervalo establecido por su clase de prioridad base. Cuando un usuario interacciona con un proceso (la ventana del proceso se encuentran en la parte superior de la pila de WINDOWS®), WINDOWS® NT refuerza la prioridad de base del proceso para maximizar su respuesta. La prioridad de base de un subproceso es función de la prioridad de base del proceso en que se ejecuta. Excepto cuando se trata de subprocesos Idle y Real-Time, la prioridad de base de un subproceso varía sólo entre +1-2 respecto de la prioridad de base de su proceso.
3-
La prioridad dinámica de un subproceso es función de su prioridad de base. WINDOWS® NT ajusta de manera continua la prioridad dinámica de subprocesos dentro del intervalo establecido por su prioridad de base. Esto ayuda a optimizar la respuesta del sistema a los usuarios y a equilibrar las necesidades de servicios del sistema y de otros procesos de menor prioridad para ejecutarse, aunque sea brevemente.
La tabla siguiente ilustra las clases de prioridad base y las prioridades de subproceso correspondientes:
Clase de Prioridad de Base Prioridad del subproceso Descripción
31 Real-time (en tiempo real) De tiempo crítico
26 Real-time (en tiempo real) Máxima
25 Real-time (en tiempo real) Superior a la normal
24 Real-time (en tiempo real) Normal
23 Real-time (en tiempo real) Inferior a la normal
22 Real-time (en tiempo real) Mínima
16 Real-time Inactivo
15 Idle, Normal o High (inactiva, normal o alta) De tiempo crítico
15 High (alta) Máxima
14 High (alta) Superior a la normal
13 High (alta) Normal
12 High (alta) Inferior a la normal
11 High (alta) Mínima
10 Normal Máxima
9 Normal Superior a la normal
8 Normal Normal
7 Normal Inferior a la normal
6 Normal Mínima
6 Idle (inactivo) Máxima
5 Idle (inactivo) Superior a la normal
4 Idle (inactivo) Normal
3 Idle (inactivo) Inferior a la normal
2 Idle (inactivo) Mínima
1 Idle, Normal o High (Inactiva, normal o alta) Inactivo
Cambiadores de contexto
Como se ha analizado anteriormente, el programador conserva una cola de subprocesos ejecutables, organizados por nivel de prioridad. Cuando queda disponible un procesador, el sistema realiza un cambio de contexto. Los pasos en el cambio del contexto son:
\bullet
Guardar el contexto del subproceso que justo terminó de ejecutarse.
\bullet
Colocar el subproceso que justo terminó de ejecutarse al final de la cola, según su prioridad.
\bullet
Encontrar la cola de mayor prioridad que contiene subprocesos listos.
\bullet
Eliminar el subproceso situado al principio de la cola, cargar su contexto y ejecutarlo.
Las razones más comunes de un cambio de contexto son:
\bullet
Se agotó la franja de tiempo asignada.
\bullet
Ha quedado listo para su ejecución un subproceso de prioridad más alta.
\bullet
El subproceso en ejecución deberá esperar.
\bullet
Cuando un subproceso en ejecución tiene que esperar, renuncia al resto de su franja de tiempo.
La Figura 4 es un diagrama de bloques que ilustra la programación de subprocesos que se produce en un cliente de acuerdo con una realización de la presente invención. En la Figura 4, el sistema operativo (400) incluye un programador de subprocesos (402) que programa subprocesos para su ejecución por parte de uno o más microprocesadores (404). El programador de subprocesos (402) mantiene una pluralidad de colas (406a)-(406n). En el ejemplo ilustrado, la cola (406a) contiene subprocesos preparados para el nivel de prioridad 31, que es el de prioridad mayor en el sistema operativo WINDOWS® NT. La cola 406b contiene los subprocesos para el nivel de prioridad 30, que es el siguiente al de mayor prioridad. Finalmente, la cola (406n) contiene los subprocesos para un nivel de prioridad menor, tales como los subprocesos inactivos. En la cola (406n) donde residirán los programas para extraer datos de trabajo del servidor y para ejecutar los programas de trabajo.
Como se analizó anteriormente, el programador de subprocesos (402) programa los subproductos correspondientes a las colas de mayor prioridad, antes de programar los subprocesos de las colas de menor prioridad. En el ejemplo ilustrado, el programador de subprocesos (402) toma el subproceso 1 de la cola (406a), ya que es el subproceso situado en la parte delantera de la cola de mayor prioridad. Todos los subprocesos situados en las colas (406a) y (406b) se ejecutarán antes de los subprocesos situados en la cola (406n). Como los procesos de usuario se programan en los subprocesos de mayor prioridad, los programas para extraer datos de trabajo del servidor y ejecutar los trabajos tendrán un efecto mínimo sobre el usuario.
Aplicaciones científicas
Como se ha analizado anteriormente, los sistemas y métodos basados en subprocesos de la presente invención para utilizar la potencia de proceso inactiva de uno o más ordenadores en red se puede utilizar para resolver problemas científicos complejos. En la resolución de tales problemas, los datos enviados por la red se minimizan, preferiblemente, y se maximiza la computación que lleva a cargo el ordenador cliente. Un ejemplo representativo de problema científico en que pueden utilizarse las realizaciones de la presente invención es determinar las conformaciones tridimensionales de las moléculas. Por ejemplo, las grandes empresas farmacéuticas tienen grandes inventarios que contienen muchos millares de moléculas. Para que un ordenador determine las propiedades tridimensionales de todas estas moléculas, debería emplear un año o más. Por lo tanto, es deseable dividir esta tarea entre muchos ordenadores clientes. Con referencia de nuevo a la Figura 2, una colección de moléculas podría almacenarse en una base de datos de trabajos, (204). Cada molécula puede estar representada por una cadena de caracteres. Los nodos cliente (200) pueden tomar una sola molécula o un subconjunto de moléculas de la base de datos de trabajo (204) a través de servidores web (202). Una vez que los nodos (200) reciben las representaciones moleculares, estos mismos nodos (200) realizan complejos cálculos moleculares con cada molécula. A continuación, los resultados se envían a servidores web (202). Como el tratamiento de la colección de moléculas puede distribuirse entre varios nodos usando la capacidad de tratamiento no usada de estos nodos, se reduce el tiempo y el gasto necesario para realizar tal tratamiento.
Otra aplicación representativa de los métodos y sistemas basados en subprocesos de la presente invención son realizar tareas de computación sobre las moléculas de una colección de moléculas. En tal ejemplo, los nodos cliente (200) toman descripciones moleculares de la base de datos de trabajos (204). A continuación, los nodos cliente (200) ejecutan programas para calcular sus propiedades, como el peso molecular, la distancia entre átomos, la superficie o si la molécula es capaz de anclarse a una proteína en particular.
Se debe entender que se pueden modificar diversos detalles de la invención sin apartarse del ámbito de la misma. Además, la descripción precedente tiene fines ilustrativos únicamente, y no tiene por fin limitar la invención, que queda definida por las reivindicaciones.

Claims (29)

1. Un método basado en subprocesos para usar el poder de tratamiento inactivo o no utilizado de uno o más ordenadores en red con el fin de resolver un problema complejo, comprendiendo el método:
(a)
iniciar un subproceso en un ordenador cliente para obtener de un servidor una descripción de trabajo relacionada con una subparte de un problema complejo.
(b)
permitir al programador de subprocesos proporcionado por un sistema operativo que se ejecuta en un ordenador cliente programar automáticamente la ejecución del subproceso; y
(c)
en respuesta a la recepción de datos del servidor, tomar datos de trabajo del servidor y resolver la subparte especificada por la descripción del trabajo.
2. El método de la reivindicación 1, en el que la extracción de la descripción de un trabajo relacionado con una subparte de un problema complejo de un servidor incluye enviar una petición GET de protocolo de transferencia de hipertexto (HTTP) a un servidor Web.
3. El método de la reivindicación 1, en el que la extracción de la descripción de un trabajo relacionado con una subparte de un problema complejo de un servidor incluye enviar una petición GET de protocolo de transferencia de archivos (FTP) a un servidor FTP.
4. El método de la reivindicación 1, en el que el inicio del subproceso incluye asignar una prioridad al subproceso que es inferior a la prioridad de cualquier subproceso de usuario.
5. El método de la reivindicación 4, en el que el programador programa la ejecución del subproceso según la prioridad asignada al subproceso.
6. El método de la reivindicación 1, en el que el subproceso determina si el programa de trabajo especificado en la descripción de trabajo reside en el ordenador cliente y, en respuesta a la determinación de que el programa no reside en el ordenador cliente, el subproceso extrae el programa de trabajo del ordenador servidor.
7. El método de la reivindicación 6, en el que la extracción del programa de trabajo del ordenador servidor incluye enviar una petición GET de protocolo de transferencia de hipertexto (HTTP) a un servidor Web.
8. El método de la reivindicación 6, en el que la extracción de un programa de trabajo del servidor incluye enviar una petición GET del protocolo de transferencia de archivos (FTP) a un servidor FTP.
9. El método de la reivindicación 1, en el que el problema complejo incluye calcular las propiedades de las moléculas en un conjunto y en el que la extracción de datos del servidor incluye la extracción de una representación de un subconjunto de moléculas de la colección.
10. El método de la reivindicación 9, en el que el cálculo de las propiedades de las moléculas incluye determinar si las moléculas se acoplarán o anclarán a una proteína predeterminada.
11. El método de la reivindicación 9, en el que el cálculo de las propiedades de la molécula de la colección incluye determinar las conformaciones tridimensionales de cada molécula de la colección de moléculas.
12. Un sistema basado en subprocesos para utilizar la potencia de tratamiento inactiva de uno o más ordenadores conectados a través de la red para resolver un problema complejo, sistema que comprende:
(a)
un servidor que incluye instrucciones de ordenador ejecutables para almacenar descripciones de trabajos y datos relacionados con un problema complejo y para proporcionar las descripciones de trabajos y datos a los clientes en respuesta a peticiones de los clientes; y
(b)
un cliente que incluye instrucciones ejecutables por ordenador para iniciar un subproceso para extraer una descripción de trabajo y para extraer datos del servidor, y para permitir a un sistema operativo programar automáticamente la ejecución del subproceso.
13. El sistema de la reivindicación 12, en el que el servidor comprende un protocolo de transferencia de hipertexto (HTTP).
14. El sistema de la reivindicación 12, en el que el servidor comprende un protocolo de transferencia de archivos (FTP).
15. El sistema de la reivindicación 12, en el que el subproceso incluye un subproceso inactivo.
16. El sistema de la reivindicación 12, en el que el problema complejo incluye calcular las propiedades de moléculas de un conjunto o colección de moléculas y el cliente está adaptado para extraer una representación de una sola molécula o un subconjunto de moléculas de un conjunto de ellas situado en el servidor.
17. El sistema de la reivindicación 16, en el que el cálculo de las propiedades de moléculas de una colección de moléculas incluye determinar la conformación tridimensional de cada molécula de dicha colección de moléculas.
18. El sistema de la reivindicación 16, en el que el cálculo de las propiedades de moléculas de una colección de moléculas incluye determinar si las moléculas de la colección se acoplarán a una proteína predeterminada.
19. Un producto en forma de programa de ordenador que incluye instrucciones ejecutables por un ordenador, incluidas en un medio legible por un ordenador para realizar los pasos siguientes:
(a)
iniciar un subproceso en un ordenador cliente para extraer de un servidor una descripción de trabajo relacionada con una subparte de un problema complejo.
(b)
permitir a un programador de subprocesos, proporcionado por un sistema operativo que se ejecuta en un ordenador cliente, programar automáticamente la ejecución del subproceso; y
(c)
en respuesta a la recepción de datos del servidor, extraer datos de trabajo del servidor y resolver la subparte especificada por la descripción del trabajo.
20. El programa de ordenador producto de la reivindicación 19, en el que la extracción, de un servidor, de una descripción de trabajo relacionada con una subparte de un problema complejo, incluye el envío de una petición GET del protocolo de transferencia de hipertexto (HTTP) a un servidor Web.
21. El programa de ordenador producto de la reivindicación 19, en el que la extracción, de un servidor, de una descripción de trabajo relacionada con una subparte de un problema complejo, incluye el envío de una petición GET del protocolo de transferencia de archivos (FTP) a un servidor FTP.
22. El producto programa de ordenador de la reivindicación 19, en el que el inicio del subproceso incluye asignar una prioridad al subproceso que es inferior a la prioridad de cualquier subproceso de usuario.
23. El producto programa de ordenador de la reivindicación 22, en el que el programador de subprocesos programa la ejecución del subproceso según la prioridad asignada a cada subproceso.
24. El producto programa de ordenador de la reivindicación 19, en el que el subproceso determina si un programa de trabajo especificado en la descripción de trabajo reside en el ordenador cliente y, en respuesta a determinar que el programa de trabajo no reside en el ordenador cliente, el subproceso extrae el programa de trabajo del ordenador servidor.
25. El producto programa de ordenador de la reivindicación 24, en el que la extracción del programa de trabajo del ordenador servidor incluye enviar una petición GET de protocolo de transferencia de hipertexto (HTTP) a un servidor Web.
26. El producto programa de ordenador de la reivindicación 24, en el que la extracción del programa de trabajo del servidor incluye enviar una petición GET de protocolo de transferencia de archivos (FTP) a un servidor FTP.
27. El programa producto de ordenador de la reivindicación 19, en el que el problema científico complejo incluye calcular propiedades de moléculas de una colección y en el que la extracción de datos de un servidor incluye extraer una representación de una sola molécula o representaciones de un subconjunto de moléculas de la colección.
28. El programa producto de ordenador de la reivindicación 27, en el que el cálculo de las propiedades de moléculas de una colección incluye determinar las conformaciones tridimensionales de cada molécula de la colección.
29. El programa producto de ordenador de la reivindicación 27, en el que el cálculo de propiedades de moléculas de una colección incluye determinar si las moléculas se acoplarán a una proteína predeterminada.
ES00980873T 1999-11-29 2000-11-29 Metodos y sistemas basados en subprocesos para utilizar la potencia inactiva de tratamientos de uno o mas ordenadores para resolver problemas cientificos complejos. Expired - Lifetime ES2206329T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16792599P 1999-11-29 1999-11-29
US167925P 1999-11-29

Publications (1)

Publication Number Publication Date
ES2206329T3 true ES2206329T3 (es) 2004-05-16

Family

ID=22609386

Family Applications (1)

Application Number Title Priority Date Filing Date
ES00980873T Expired - Lifetime ES2206329T3 (es) 1999-11-29 2000-11-29 Metodos y sistemas basados en subprocesos para utilizar la potencia inactiva de tratamientos de uno o mas ordenadores para resolver problemas cientificos complejos.

Country Status (8)

Country Link
EP (1) EP1234230B1 (es)
JP (1) JP2003515807A (es)
AT (1) ATE249068T1 (es)
AU (1) AU1807801A (es)
CA (1) CA2396442A1 (es)
DE (1) DE60005051T2 (es)
ES (1) ES2206329T3 (es)
WO (1) WO2001038973A2 (es)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6952714B2 (en) 2001-10-02 2005-10-04 Citrix Systems, Inc. Method for distributed program execution with server-based file type association
US7330872B2 (en) 2001-10-02 2008-02-12 Citrix Systems, Inc. Method for distributed program execution with web-based file-type association
JP2005505051A (ja) * 2001-10-02 2005-02-17 サイトリックス システムズ,インコーポレイテッド クライアント−サーバネットワークにおいてファイルタイプの関連性により分散型のプログラムの実行方法
US7117243B2 (en) 2001-10-02 2006-10-03 Citrix Systems, Inc. Methods for distributed program execution with file-type association in a client-server network
US20060294049A1 (en) * 2005-06-27 2006-12-28 Microsoft Corporation Back-off mechanism for search
US7853669B2 (en) * 2007-05-04 2010-12-14 Microsoft Corporation Mesh-managing data across a distributed set of devices
CN102480512B (zh) * 2010-11-29 2015-08-12 国际商业机器公司 用于扩展服务器端处理能力的方法和装置
CN111681703A (zh) * 2020-05-09 2020-09-18 北京纽伦智能科技有限公司 一种蛋白结构的对接方法及分布式蛋白结构对接系统
CN113434273B (zh) * 2021-06-29 2022-12-23 平安科技(深圳)有限公司 数据处理方法、装置、系统及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4631674A (en) * 1985-02-05 1986-12-23 International Business Machines Corporation Active wait

Also Published As

Publication number Publication date
DE60005051T2 (de) 2004-07-08
ATE249068T1 (de) 2003-09-15
WO2001038973A3 (en) 2002-01-17
CA2396442A1 (en) 2001-05-31
JP2003515807A (ja) 2003-05-07
EP1234230A2 (en) 2002-08-28
DE60005051D1 (de) 2003-10-09
AU1807801A (en) 2001-06-04
EP1234230B1 (en) 2003-09-03
WO2001038973A2 (en) 2001-05-31

Similar Documents

Publication Publication Date Title
JP3978199B2 (ja) リソースの利用およびアプリケーションの性能の監視システムおよび監視方法
CN109565515B (zh) 分布式资源管理系统中的动态租户结构调整的系统、设备和过程
KR100612059B1 (ko) 분할 처리 환경에서의 자원 조절을 위한 방법, 컴퓨팅 시스템 및 그에 관한 기록 매체
US7676618B2 (en) Controlling resource transfers in a logically partitioned computer system
US8327370B2 (en) Dynamic policy manager method, system, and computer program product for optimizing fractional resource allocation
US6202080B1 (en) Apparatus and method for computer job workload distribution
US20040088414A1 (en) Reallocation of computing resources
US20040221290A1 (en) Management of virtual machines to utilize shared resources
KR20040004554A (ko) 분할 처리 환경에서의 공유 i/o
US20060143617A1 (en) Method, apparatus and system for dynamic allocation of virtual platform resources
US20070180280A1 (en) Controlling the allocation of power to a plurality of computers whose supply of power is managed by a common power manager
JP2002342280A (ja) 区分処理システム、区分処理システムにおけるセキュリティを設ける方法、およびそのコンピュータ・プログラム
ES2206329T3 (es) Metodos y sistemas basados en subprocesos para utilizar la potencia inactiva de tratamientos de uno o mas ordenadores para resolver problemas cientificos complejos.
GB2418274A (en) System and method for allocating computing resources in a grid computing environment
US11068315B2 (en) Hypervisor attached volume group load balancing
US20040181657A1 (en) Apparatus and method for controlling resource transfers in a logically partitioned computer system
US20030033345A1 (en) Thread-based methods and systems for using the idle processing power of one or more networked computers to solve complex scientific problems
Sahoo et al. Novel approach of diagnosing significant metrics of load balancing using CloudSim
EP1611523B1 (en) Controlling usage of system resources by a network manager
EP1164480A2 (en) Method, System and program product for a partitioned processing environment
Luckow et al. Abstractions for loosely-coupled and ensemble-based simulations on Azure
Haddad et al. MOSIX: A cluster load-balancing solution for Linux
US6732215B2 (en) Super scalable multiprocessor computer system
CN117112135B (zh) 一种基于容器的芯片设计平台及平台架构方法
Thiyyakat et al. Eventually-consistent federated scheduling for data center workloads