Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático.

Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático.

La invención se refiere a un procedimiento para controlar el uso de recursos de hardware de un sistema informático por parte de una aplicación que se ejecuta sobre un sistema operativo que comprende al menos una interfaz de programación de aplicaciones

(API) y que se ejecuta sobre este sistema informático, mediante una pieza de código ejecutable adaptada para ser inyectada en un proceso perteneciente a la aplicación, comprendiendo el procedimiento interceptar la llamada del proceso al servicio de la api; actuar sobre una entidad software perteneciente al proceso en ejecución, a partir de la interceptación de la llamada del proceso al servicio de la API.

Tipo: Patente de Invención. Resumen de patente/invención. Número de Solicitud: P201230580.

Solicitante: UNIVERSITAT POLITECNICA DE CATALUNYA.

Nacionalidad solicitante: España.

Inventor/es: VERDÚ MULÀ,Javier, PAJUELO GONZÁLEZ,Manuel Alejandro.

Fecha de Publicación: .

Clasificación Internacional de Patentes:

  • SECCION G — FISICA > COMPUTO; CALCULO; CONTEO > TRATAMIENTO DE DATOS DIGITALES ELECTRICOS (computadores... > Disposiciones para el control por programa, p. ej.... > G06F9/455 (Emulación; Simulación de software)
  • SECCION G — FISICA > COMPUTO; CALCULO; CONTEO > TRATAMIENTO DE DATOS DIGITALES ELECTRICOS (computadores... > Disposiciones para el control por programa, p. ej.... > G06F9/50 (Asignación de recursos, p.ej. de la unidad central de procesamiento (CPU))
google+ twitter facebookPin it
Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático.

Fragmento de la descripción:

Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático La presente invención se refiere a un procedimiento para controlar el uso de recursos de hardware de un sistema informático por parte de una aplicación que se ejecuta sobre un sistema operativo que comprende al menos una interfaz de programación de aplicaciones (API) y que se ejecuta sobre este sistema informático, mediante una pieza de código ejecutable adaptada para ser inyectada en un proceso perteneciente a la aplicación.

La invención se refiere también a un sistema y a la pieza de código ejecutable adecuados para llevar a cabo este procedimiento.

Antecedentes de la invención Desde hace ya algunos años, es conocido que la evolución de la informática tanto a nivel de software como de hardware es imparable.

A nivel de hardware, por ejemplo, los procesadores son cada vez más rápidos e integran nuevos avances, mientras que las memorias (volátiles y no volátiles) cada vez tienen una mayor capacidad de almacenamiento.

Del mismo modo, a nivel de software, las aplicaciones (por ejemplo, los sistemas operativos, las aplicaciones ofimáticas o de dibujo asistido por ordenador, o los juegos) cada vez son más potentes e implementan mayores funcionalidades, algunas de las cuales eran impensables hace unos años.

El principal inconveniente de esta situación aparece cuando se pierde el equilibrio entre las características de los recursos de hardware del sistema informático del usuario y los requerimientos de hardware del software con el que trabaja. Hasta el día de hoy, no está muy claro si el software evoluciona tan rápidamente porque los programadores saben que disponen cada vez de mayores recursos de hardware, o si es imprescindible una evolución del hardware para poder asumir los requerimientos cada vez mayores de los diferentes software implementados. Si el software que se pretende utilizar tiene unos requerimientos de hardware igual o superiores a las características de los recursos de los que dispone el sistema informático del usuario, la problemática en el funcionamiento del mismo es clara y evidente. Además, hay que pensar que los requerimientos de hardware de un software determinado se establecen teniendo en cuenta que ese software se ejecutará en solitario sobre el sistema informático, pero ésta es una situación poco habitual porque, como mínimo, es más que posible que haya software ejecutándose en segundo plano, el cual obviamente también estará consumiendo recursos de hardware del sistema (por ejemplo, un antivirus, un firewall, o un software de copias de seguridad) .

Lo que parece claro es que los programadores de software no acostumbran a tener en cuenta que la mayor parte de los sistemas informáticos de los usuarios no disponen de recursos de hardware de última tecnología y que con cada nuevo software o con cada actualización de software ya existente están provocando que los usuarios tengan que actualizar estos recursos de hardware e incluso adquirir nuevos sistemas informáticos con la intención de poder como mínimo ejecutar ese software y obtener un rendimiento adecuado del mismo. Todo ello, al final, supone un coste económico elevado para los usuarios, no sólo para la adquisición del software, sino también para la actualización de los recursos de hardware de su sistema.

Esta problemática también está presente en sistemas informáticos tipo servidores (ya sean de aplicaciones, de datos, etc.) . Un aumento de los requerimientos de hardware por parte de un software de servidor (por ejemplo, después de una actualización) puede suponer que este servidor no pueda dar servicio a la totalidad de usuarios que estaba gestionando hasta ese momento, si no se ha realizado previamente una actualización de los recursos de hardware de los que dispone. Del mismo modo, si se trata por ejemplo de un servidor de aplicaciones, para poder dar servicio al mismo número de usuarios es posible que tenga que reducir el número de aplicaciones que gestiona. Es importante destacar que en el caso de sistemas tipo servidor el coste económico de esta actualización de los recursos de hardware es aún mayor que la que se produce en la situación descrita anteriormente, puesto que los recursos de hardware para un sistema informático tipo servidor tienen unos costes más elevados.

Por otro lado, también puede darse la situación en la que, dado un sistema informático con unos recursos de hardware determinados, se pretenda ejecutar sobre él un mayor número de aplicaciones y/o de instancias de una misma aplicación del que teóricamente podría ejecutar. En esta situación, los recursos de hardware son los que son y, por lo tanto, es necesario actuar sobre la ejecución de las aplicaciones y/o de las diferentes instancias de una misma aplicación para reducir el consumo de los recursos de hardware que utilizan.

Sea cual sea la situación de entre las descritas anteriormente, el sistema operativo no es capaz de controlar de manera efectiva el uso de los recursos de hardware que realizan las aplicaciones y/o las instancias de una misma aplicación durante su ejecución, por lo que es necesaria una herramienta para ello.

Descripción de la invención Por lo tanto, es un objetivo de la presente invención proporcionar un procedimiento para controlar el uso de recursos de hardware por parte de una aplicación en ejecución, mediante una pieza de código ejecutable adaptada para ser inyectada en un proceso perteneciente a la aplicación, que permite incrementar la eficiencia del sistema informático sobre el que se ejecuta la aplicación.

Este objetivo se consigue proporcionando un procedimiento para controlar el uso de recursos de hardware de un sistema informático por parte de una aplicación que se ejecuta sobre un sistema operativo que comprende al menos una interfaz de programación de aplicaciones (API) y que se ejecuta sobre este sistema informático, mediante una pieza de código ejecutable adaptada para ser inyectada en un proceso perteneciente a la aplicación, comprendiendo el procedimiento:

- Interceptar una llamada del proceso perteneciente a la aplicación a un servicio de la interfaz de programación de aplicaciones;

- Actuar sobre una entidad software perteneciente al proceso en ejecución, a partir de la interceptación de la llamada del proceso al servicio de la interfaz de programación de aplicaciones.

De este modo, mediante la pieza de código ejecutable que se inyecta en el proceso se interceptan las comunicaciones (tanto de señales de control como de datos) entre la aplicación en ejecución y el sistema operativo, de manera que la pieza de código actúa por encima del sistema operativo y puede gestionar o controlar entidades software pertenecientes al proceso y reducir el uso de los recursos de hardware por parte del mismo.

Básicamente, la pieza de código ejecutable que se inyecta en el proceso perteneciente a la aplicación aporta inteligencia a la hora de controlar el uso que una aplicación realiza de los recursos de hardware del sistema informático sobre el que se ejecuta. Obviamente, el control que realiza la pieza de código reduce el uso de recursos de hardware, pero siempre manteniendo una mínima calidad de servicio.

Como resultado de todo ello, esta reducción en el uso de recursos de hardware por parte de una aplicación puede suponer que estos recursos pueden ser utilizados por otras aplicaciones (o varias instancias de una misma aplicación) y, por lo tanto, que pueden ejecutarse simultáneamente más aplicaciones por sistema informático, aumentándose la eficiencia del mismo.

Del mismo modo, esta reducción en el uso de recursos de hardware por parte de una aplicación puede suponer que una aplicación...

 


Reivindicaciones:

1. Procedimiento para controlar el uso de recursos de hardware de un sistema informático por parte de una aplicación que se ejecuta sobre un sistema operativo que comprende al menos una interfaz de programación de aplicaciones y que se ejecuta sobre este sistema informático, mediante una pieza de código ejecutable adaptada para ser inyectada en un proceso perteneciente a la aplicación, comprendiendo el procedimiento:

- Interceptar una llamada del proceso perteneciente a la aplicación a un servicio de la interfaz de programación de aplicaciones, cuya interceptación supone redireccionar un servicio de la interfaz de programación de aplicaciones hacia un servicio correspondiente comprendido en la pieza de código;

- Actuar sobre una entidad software perteneciente al proceso en ejecución, a partir de la interceptación de la llamada del proceso al servicio de la interfaz de programación de aplicaciones.

2. Procedimiento según la reivindicación 1, en el que el servicio de una interfaz de programación de aplicaciones es una función, y en el que redireccionar un servicio de una interfaz de programación de aplicaciones hacia un servicio correspondiente comprendido en la pieza de código comprende:

• Cargar en memoria la librería de enlace dinámico que comprende la función de la interfaz de programación de aplicaciones a redireccionar;

• Sustituir, en la tabla de punteros a las funciones de la interfaz de programación de aplicaciones comprendidas en la librería de enlace dinámico cargada, la dirección de memoria inicial en la que se almacena la función de la interfaz de programación de aplicaciones a redireccionar por la dirección de memoria inicial en la que se almacena la función correspondiente comprendida en la pieza de código.

3. Procedimiento según la reivindicación 2, en el que redireccionar un servicio de una interfaz de programación de aplicaciones hacia un servicio correspondiente comprendido en la pieza de código comprende:

• Almacenar en una primera variable la dirección de memoria inicial en la que se almacena la función de la interfaz de programación de aplicaciones a redireccionar.

4. Procedimiento según la reivindicación 1, en el que el servicio de una interfaz de programación de aplicaciones es un método de un objeto, y en el que redireccionar un servicio de una interfaz de programación de aplicaciones hacia un servicio correspondiente comprendido en la pieza de código comprende:

• Cargar en memoria la librería de enlace dinámico que comprende el método del objeto a redireccionar;

• Verificar si el objeto asociado al método a redireccionar se crea por primera vez;

• En caso de resultado positivo en la verificación,

o Sustituir, en la tabla de punteros a los métodos del objeto comprendidos en la librería de enlace dinámico cargada, la dirección de memoria inicial en la que se almacena el método del objeto a redireccionar, por la dirección de memoria inicial en la que se almacena el método correspondiente comprendido en la pieza de código.

5. Procedimiento según la reivindicación 4, en el que redireccionar un servicio de una interfaz de programación de aplicaciones hacia un servicio correspondiente comprendido en la pieza de código comprende:

• Almacenar en una segunda variable la dirección de memoria inicial en la que se almacena el método del objeto a redireccionar.

6. Procedimiento según una cualquiera de las reivindicaciones 1 a 5, en el que el servicio de la interfaz de programación de aplicaciones es un servicio relacionado con la entidad software perteneciente al proceso, estando este servicio destinado a la creación de nuevos hilos de ejecución; en el que la entidad software es un hilo de ejecución; y en el que interceptar la llamada del proceso al servicio de la interfaz de programación de aplicaciones comprende:

• Recibir una llamada del proceso al servicio correspondiente comprendido en la pieza de código, para generar un nuevo hilo de ejecución;

• Generar un nuevo hilo de ejecución a partir del servicio correspondiente comprendido en la pieza de código;

• Guardar el identificador del hilo de ejecución generado en una tercera variable que mantiene el registro de los hilos de ejecución creados.

7. Procedimiento según una cualquiera de las reivindicaciones 3 a 5, en el que el servicio de la interfaz de programación de aplicaciones es un servicio relacionado con la entidad software correspondiente al proceso, estando este servicio destinado a la creación de nuevos hilos de ejecución; en el que la entidad software es un hilo de ejecución; y en el que interceptar la llamada del proceso al servicio de la interfaz de programación de aplicaciones comprende:

• Recibir una llamada del proceso al servicio correspondiente comprendido en la pieza de código, para generar un nuevo hilo de ejecución;

• Realizar una llamada al servicio de la interfaz de programación de aplicaciones, a partir de la dirección de memoria inicial almacenada en la primera variable si el servicio es una función o en la segunda variable si el servicio es un método;

• Recibir un identificador del nuevo hilo de ejecución generado por el servicio de la interfaz de programación de aplicaciones;

• Guardar el identificador del hilo de ejecución generado en una tercera variable que mantiene el registro de los hilos de ejecución creados.

8. Procedimiento según una cualquiera de las reivindicaciones 6 ó 7, en el que actuar sobre una entidad software perteneciente al proceso en ejecución, a partir de la interceptación de la llamada del proceso al servicio de la interfaz de programación de aplicaciones comprende:

• Determinar un valor de rendimiento de la aplicación en ejecución;

• Verificar si este valor de rendimiento de la aplicación supera un valor umbral;

• En caso de resultado positivo, parar durante un tiempo predeterminado los hilos de ejecución, a partir de los identificadores almacenados en la tercera variable que mantiene el registro de los hilos de ejecución creados.

9. Procedimiento según la reivindicación 8, en el que determinar un valor de rendimiento de la aplicación en ejecución a partir del uso de recursos de hardware que realiza comprende:

o Establecer como punto de control un servicio de una interfaz de programación de aplicaciones que el proceso, durante su ejecución, va a llamar iterativamente;

o Determinar el tiempo transcurrido entre una primera llamada y una segunda llamada a este servicio, por parte del proceso;

o Obtener un valor del rendimiento de la aplicación en ejecución a partir del tiempo determinado.

10. Procedimiento según una cualquiera de las reivindicaciones 1 a 5, en el que el servicio de la interfaz de programación de aplicaciones es un servicio relacionado con la entidad software correspondiente al proceso, estando este servicio destinado a la reserva de zonas de memoria; en el que la entidad software es una memoria; y en el que interceptar la llamada del proceso al servicio de la interfaz de programación de aplicaciones comprende:

• Recibir una llamada del proceso al servicio correspondiente comprendido en la pieza de código, para reservar una zona de memoria.

11. Procedimiento según la reivindicación 10, en el que actuar sobre una entidad software perteneciente al proceso en ejecución, a partir de la interceptación de la llamada del proceso al servicio de la interfaz de programación de aplicaciones comprende:

• Reservar una zona de memoria compartida.

12. Procedimiento según una cualquiera de las reivindicaciones 1 a 5, en el que el servicio de la interfaz de programación de aplicaciones es un servicio relacionado con la entidad software correspondiente al proceso, estando este servicio destinado a intervenir sobre un cierre de exclusión mutua; en el que la entidad software es un cierre de exclusión mutua; y en el que interceptar la llamada del proceso al servicio de la interfaz de programación de aplicaciones comprende:

• Recibir una llamada del proceso al servicio correspondiente comprendido en la pieza de código, para intervenir sobre un cierre de exclusión mutua;

13. Procedimiento según la reivindicación 12, en el que actuar sobre una entidad software perteneciente al proceso en ejecución, a partir de la interceptación de la llamada del proceso al servicio de la interfaz de programación de aplicaciones comprende:

• Modificar el nombre asignado al cierre de exclusión mutua.

14. Procedimiento según una cualquiera de las reivindicaciones 1 a 13, en el que el proceso perteneciente a la aplicación se ha iniciado en estado de suspensión, comprendiendo el procedimiento:

- Reanudar la ejecución del proceso que se encuentra en estado de suspensión.

15. Pieza de código ejecutable que comprende instrucciones para ejecutar un procedimiento para controlar el uso de recursos de hardware de un sistema informático según una cualquiera de las reivindicaciones 1 a 14, estando esta pieza de código ejecutable adaptada para ser inyectada en un proceso perteneciente a una aplicación, cuando esta aplicación se ejecuta sobre un sistema operativo que comprende al menos una interfaz de programación de aplicaciones y que se ejecuta sobre este sistema informático.

16. Pieza de código según la reivindicación 15, que está almacenado en unos medios de almacenamiento.

17. Pieza de código según la reivindicación 15, que es portado por una onda portadora.

18. Procedimiento para ejecutar una aplicación sobre el sistema operativo de un sistema informático, que comprende:

- Iniciar la ejecución de un proceso asociado a la aplicación, en un estado de suspensión;

- Inyectar la pieza de código ejecutable según una cualquiera de las reivindicaciones 15 a 17 en el proceso en estado de suspensión;

- Ejecutar el procedimiento para controlar el uso de recursos de hardware de un sistema informático por parte de la aplicación que se ejecuta sobre un sistema operativo que comprende al menos una interfaz de programación de aplicaciones y que se ejecuta sobre este sistema informático, mediante la pieza de código ejecutable inyectada en el proceso, el procedimiento según una cualquiera de las reivindicaciones 1 a 14.

19. Sistema para controlar el uso de recursos de hardware de un sistema informático por parte de una aplicación que se ejecuta sobre un sistema operativo que comprende al menos una interfaz de programación de aplicaciones y que se ejecuta sobre este sistema informático, estando el sistema adaptado para ser inyectado en un proceso perteneciente a la aplicación, comprendiendo el sistema:

- Medios informáticos para interceptar la llamada del proceso al servicio de la interfaz de programación de aplicaciones;

- Medios informáticos para actuar sobre una entidad software perteneciente al proceso en ejecución, a partir de la interceptación de la llamada del proceso al servicio de la interfaz de programación de aplicaciones.

20. Sistema informático sobre el que se ejecuta una aplicación, que comprende una memoria y un procesador, que incorpora instrucciones almacenadas en la memoria y que son ejecutables por el procesador, comprendiendo las instrucciones funcionalidades para:

- Iniciar la ejecución de un proceso asociado a la aplicación, en un estado de suspensión;

- Inyectar la pieza de código ejecutable según una cualquiera de las reivindicaciones 15 a 17 en el proceso en estado de suspensión;

- Ejecutar el procedimiento para controlar el uso de recursos de hardware de un sistema informático por parte de la aplicación que se ejecuta sobre un sistema operativo que comprende al menos una interfaz de programación de aplicaciones y que se ejecuta sobre este sistema informático, mediante la pieza de código ejecutable inyectada en el proceso, el procedimiento según una cualquiera de las reivindicaciones 1 a 14.