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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid 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.
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.
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.
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.
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.
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.
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 |
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.
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.
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4631674A (en) * | 1985-02-05 | 1986-12-23 | International Business Machines Corporation | Active wait |
-
2000
- 2000-11-29 DE DE60005051T patent/DE60005051T2/de not_active Expired - Fee Related
- 2000-11-29 AU AU18078/01A patent/AU1807801A/en not_active Abandoned
- 2000-11-29 AT AT00980873T patent/ATE249068T1/de not_active IP Right Cessation
- 2000-11-29 WO PCT/US2000/032535 patent/WO2001038973A2/en active IP Right Grant
- 2000-11-29 ES ES00980873T patent/ES2206329T3/es not_active Expired - Lifetime
- 2000-11-29 CA CA002396442A patent/CA2396442A1/en not_active Abandoned
- 2000-11-29 EP EP00980873A patent/EP1234230B1/en not_active Expired - Lifetime
- 2000-11-29 JP JP2001540461A patent/JP2003515807A/ja active Pending
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 |