ES2886760T3 - Redirección de API para sistemas operativos de capacidad limitada - Google Patents

Redirección de API para sistemas operativos de capacidad limitada Download PDF

Info

Publication number
ES2886760T3
ES2886760T3 ES13731615T ES13731615T ES2886760T3 ES 2886760 T3 ES2886760 T3 ES 2886760T3 ES 13731615 T ES13731615 T ES 13731615T ES 13731615 T ES13731615 T ES 13731615T ES 2886760 T3 ES2886760 T3 ES 2886760T3
Authority
ES
Spain
Prior art keywords
api
operating system
api call
computing device
application
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.)
Active
Application number
ES13731615T
Other languages
English (en)
Inventor
Michael Hall
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Application granted granted Critical
Publication of ES2886760T3 publication Critical patent/ES2886760T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Sistema para facilitar la ejecución de programas de aplicación en un dispositivo informático (100) que tiene un entorno (400) de implementación de sistema operativo, que comprende: una primera capa (302a) de interceptación de interfaz de programación de aplicaciones, API, configurada para interceptar (710) una llamada API desde una aplicación (202) que se ejecuta dentro del entorno (400) de implementación de sistema operativo que se ejecuta en el dispositivo informático (100); en el que el manejo de dicha llamada API requiere un componente que no está implementado en el entorno (400) de implementación de sistema operativo; y un motor (304) de reglas de redirección de API configurado para dar instrucciones a dicha primera capa (302a) de interceptación de API para que redirija (716) dicha llamada API lejos de dicho componente no implementado, en el que dicho motor (304) de reglas está configurado para aplicar al menos una regla de redirección; en el que dicha llamada API se redirige (716) a un servidor en la nube u otro dispositivo en la misma red que el dispositivo informático (100) para manejar la llamada API.

Description

DESCRIPCIÓN
Redirección de API para sistemas operativos de capacidad limitada
Antecedentes
En el entorno tecnológico actual, un sistema operativo, el software de bajo nivel que gestiona la interfaz con respecto al hardware de un dispositivo informático, programa tareas, asigna almacenamiento y, generalmente, proporciona servicios comunes para el software de aplicación que se ejecuta en el ordenador (se construye y se despliega comúnmente con una interfaz de programa de aplicación (API) de sistema operativo fija y bien definida). Es decir, la API de un sistema operativo proporciona una interfaz (es decir, un conjunto de convenciones de llamada) mediante la cual programas de aplicación acceden al sistema operativo y otros servicios en un dispositivo informático particular (por ejemplo, dispositivo de sobremesa, ordenador portátil, equipo portátil ligero, tableta, asistente digital personal (PDA), teléfono móvil, teléfono inteligente y similares). Por ejemplo, el sistema operativo Windows® 7 (disponible de Microsoft Corporation of Redmond, WA) proporciona la API “Windows SDK” que proporciona a los desarrolladores de aplicaciones una superficie de API fija y bien conocida con la que desarrollar programas de aplicación. Esto también es cierto para todos los demás dispositivos informáticos para los que los consumidores esperan ejecutar programas de aplicación (es decir, cualquier aplicación de software de sistema no operativo o “app”).
El documento US 2011/173155 A1 enseña un dispositivo informático que tiene una CPU y una o más GPU y un módulo de manejo de llamadas de función configurado para interceptar, analizar y programar llamadas de biblioteca en la c Pu o la una o más GPU para maximizar el rendimiento del dispositivo informático. En particular, el documento US 2011/173155 A1 enseña que un núcleo candidato a ejecutarse tras la recepción de la llamada de biblioteca tiene diversas implementaciones de biblioteca, una para la CPU y otras para las una o más GPU, y que se invoca la implementación que se supone que ofrece el mejor rendimiento.
El documento US 2010/064299 A1 enseña puntos de conexión gestionados que incluyen contenedores que se proporcionan por un aparato. Un contenedor puede contener una aplicación tal como un procesador de texto o una utilidad de sistema que se ejecuta en el punto de conexión gestionado. El contenedor proporciona virtualización agregando una capa entre la aplicación y el sistema operativo del punto de conexión gestionado. El contenedor puede modificar el comportamiento de la aplicación para que la aplicación y sus datos se aíslen del resto del punto de conexión gestionado. En una realización, el comportamiento de la aplicación se modifica interceptando llamadas realizadas por la aplicación a una API proporcionada por el sistema operativo. En particular, la funcionalidad de virtualización puede modificar la funcionalidad de aplicación para implementar aislamiento de datos, gestión de contenedores, o modificación de la interfaz de usuario de aplicación.
El documento US 7.941.813 B1 se refiere a proporcionar funcionalidad de controlador en el sistema informático. Esto incluye instalar un sistema operativo en el sistema informático; formar una pluralidad de espacios aislados que se ejecutan en el sistema informático bajo el control del sistema operativo; durante un intento de instalar un controlador, instalar el código auxiliar de controlador en el sistema operativo; instalar el controlador en uno de los espacios aislados, en el que el conductor usa directamente al menos parte de los recursos del sistema; usar una puerta de enlace entre el código auxiliar de controlador y el controlador instalado para proporcionar una interfaz para transmitir solicitudes desde el código auxiliar de controlador hasta el controlador.
En el modelo de API de sistema operativo convencional, el proveedor/fabricante de sistema operativo entrega un dispositivo informático con toda la API de sistema operativo subyacente implementada dentro de la imagen de sistema operativo. Esto se debe a que exponer una superficie de API consistente a los desarrolladores proporciona compatibilidad de aplicación a través de dispositivos. Puede haber varias situaciones, sin embargo, donde implementar toda la API localmente no tiene sentido debido a la ubicación, restricciones de potencia u otros factores. Sin embargo, si la API completa no se implementa en el dispositivo informático, se producirá un error de tiempo de ejecución cuando un programa de aplicación en ejecución realice una llamada específica a una llamada API no implementada.
Sumario
La invención se define por la materia objeto de las reivindicaciones independientes. Realizaciones ventajosas están sujetas a las reivindicaciones dependientes. Realizaciones y ejemplos que no se encuentran dentro del alcance de las reivindicaciones independientes deben considerarse ejemplos útiles para comprender mejor la invención.
Realizaciones de la presente divulgación satisfacen las necesidades identificadas anteriormente al proporcionar sistemas, métodos y productos de programa informático que facilitan la ejecución de programas de aplicación en dispositivos informáticos con sistemas operativos de capacidad limitada (“O/S”) redirigiendo dinámicamente determinadas llamadas API.
Realizaciones de la presente divulgación incluyen tecnologías que proporcionan una capa de interceptación de API y un motor de reglas subyacentes que facilitan la capacidad de tomar decisiones dinámicas sobre cómo manejar llamadas API específicas. En diversas realizaciones, la redirección puede iniciarse por cualquier número de motivos/factores/características relacionadas con el dispositivo informático que hacen que el sistema operativo se considere “capacidad limitada”, tales como, por ejemplo, falta de implementación de API local (es decir, el sistema operativo contiene o soporta uno o más componentes para manejar una o más llamadas API), nivel de potencia de corriente (baja), ubicación, uso de unidad de procesador central (CPU), y cualquier otro patrón que determine que sería más eficiente redirigir una llamada API a otra entidad (por ejemplo, hardware, imagen de sistema operativo particionada o virtualizada, imagen basada en red, servicio basado en la nube, etc.), debido a restricciones reguladoras y/o de seguridad (por ejemplo, aplicaciones médicas, de juego, financieras, militares y similares), descarga de hardware, etc.
Características y ventajas adicionales de diversas realizaciones de la presente divulgación, así como la estructura y el funcionamiento de diversos aspectos de la presente divulgación, se describen en detalle a continuación con referencia a los dibujos adjuntos.
Breve descripción de los dibujos
Las características y ventajas de la presente divulgación se harán más evidentes a partir de la descripción detallada expuesta a continuación cuando se toma junto con los dibujos en los que los números de referencia similares indican elementos idénticos o funcionalmente similares.
La figura 1 es un diagrama de bloques de un sistema informático a modo de ejemplo útil para implementar una realización de la presente divulgación.
La figura 2 es un diagrama de bloques que ilustra un entorno de implementación de sistema operativo convencional.
Las figuras 3-6 son diagramas de bloques que ilustran diversos entornos de implementación de sistema operativo según realizaciones de la presente divulgación.
La figura 7 es un diagrama de flujo que ilustra un proceso de redirección de API según una realización de la presente divulgación.
Descripción detallada
Realizaciones de la presente divulgación se refieren a sistemas, métodos y productos de programas informáticos para facilitar la ejecución de programas de aplicación en dispositivos informáticos con sistemas operativos de capacidad limitada mediante redirección dinámica de determinadas llamadas API.
En diversas realizaciones, tales sistemas, métodos y productos de programas informáticos proporcionan una capa de interceptación de API y un motor de reglas subyacentes que facilitan la capacidad de tomar decisiones dinámicas sobre cómo manejar llamadas API no implementadas específicas realizadas por una aplicación en ejecución en un dispositivo informático.
En una realización, la presente divulgación proporciona una solución basada en redirección de API dinámica que utiliza interceptación de API y un motor basado en reglas. En una realización de este tipo, una redirección de API permite que una aplicación se ejecute de manera no modificada al llamar a una superficie de API bien definida que redirige llamadas a una unidad de procesamiento gráfico (GPU) (u otra tecnología de aceleración de hardware) para acelerar la llamada. En una realización de este tipo, la imagen de sistema operativo base incluiría una implementación basada en software del controlador de a Pi.
En otra realización, la presente divulgación proporciona una solución basada en la redirección de API dinámica donde una llamada API realizada por una aplicación en ejecución se redirige desde un primer dispositivo informático, donde la llamada no se implementa (es decir, no forma parte del sistema operativo), a otro segundo dispositivo informático en la misma red que el primer dispositivo informático para manejar la llamada API.
En otra realización, la presente divulgación proporciona una solución de redirección de API dinámica basada en un perfil de potencia. Por ejemplo, un dispositivo local que funciona con batería puede necesitar manejar una llamada API/tarea unida a CPU compleja. Basándose en el perfil de potencia actual, sin embargo, puede ser más eficiente tener una llamada API de este tipo manejada por otro dispositivo informático o servicio en la nube (es decir, la entrega de un recurso informático como un servicio en lugar de un producto, por lo que los recursos compartidos, software, e información se proporcionan a ordenadores y otros dispositivos como un servicio medido a través de una red, normalmente la Internet pública global).
En otra realización más, la presente divulgación proporciona una solución de redirección de API dinámica basada en la ubicación actual del dispositivo informático. Por ejemplo, puede determinarse que es más eficiente para un dispositivo informático remoto manejar una llamada API que manejarla localmente. Una determinación de este tipo se basaría en la ubicación de la máquina local y las tecnologías de red disponibles (por ejemplo, casa, red de aeropuerto u oficina, etc.).
En otra realización más, la presente divulgación proporciona una solución de redirección de API dinámica basada en una imagen de sistema operativo virtualizada. Es decir, muchos dispositivos informáticos requieren modos seguros y basados en el usuario (por ejemplo, terminales de pago, dispositivos de juego y similares). La sección basada en el usuario del dispositivo informático, sin embargo, puede exponer llamadas API que deberían manejarse por un sistema operativo virtualizado. En una realización de este tipo, la API parece ser local para el sistema operativo de usuario, pero en realidad se redirige a una segunda imagen virtualizada del sistema operativo (o bien que se ejecute en el mismo hardware o bien en otro dispositivo informático o servicio en la nube más potente).
En otra realización, la presente divulgación proporciona una solución de redirección de API dinámica basada en hardware. En una realización de este tipo, por ejemplo, una llamada API puede redirigirse desde un periférico USB local a un componente virtualizado u otro componente de hardware.
En una realización, la presente divulgación está dirigida a uno o más sistemas informáticos o dispositivos informáticos capaces de llevar a cabo la funcionalidad de las realizaciones descritas en el presente documento. Un ejemplo de un sistema informático 100 se muestra en la figura 1.
El sistema informático 100 incluye uno o más procesadores, tales como el procesador 104. El procesador 104 está conectado a una infraestructura de comunicación 106 (por ejemplo, una red o bus de comunicaciones). Diversos aspectos de software se describen en términos de este sistema informático a modo de ejemplo. Después de leer esta descripción, se volverá evidente para una persona experta en la(s) técnica(s) relevante(s) cómo implementar la divulgación usando otros sistemas informáticos y/o arquitecturas.
El sistema informático 100 puede incluir una interfaz 102 de visualización que reenvía gráficos, texto y otros datos de la infraestructura de comunicación 106 (o de un búfer de cuadros no mostrado) para su visualización en la unidad de visualización 130.
El sistema informático 100 también incluye una memoria principal 108, preferiblemente memoria de acceso aleatorio (RAM), y también puede incluir una memoria secundaria 110. La memoria secundaria 110 puede incluir, por ejemplo, una unidad de disco duro 112 y/o una unidad de almacenamiento extraíble 114, que representa una unidad de disco flexible, una unidad de cinta magnética, una unidad de disco óptico, etc. La unidad de almacenamiento extraíble 114 lee y/o escribe en una unidad de almacenamiento extraíble 118 de una manera bien conocida. La unidad de almacenamiento extraíble 118 representa un disco flexible, cinta magnética, disco óptico, etc. que se lee y se escribe por la unidad de almacenamiento extraíble 114. Como se apreciará, la unidad de almacenamiento extraíble 118 incluye un medio de almacenamiento que puede usarse por ordenador que tiene almacenado en el mismo software y/o datos informáticos.
En aspectos alternativos, la memoria secundaria 110 puede incluir otros dispositivos similares para permitir que se carguen programas informáticos u otro código o instrucciones en el sistema informático 100. Tales dispositivos pueden incluir, por ejemplo, una unidad de almacenamiento extraíble 122 y una interfaz 120. Ejemplos de estos pueden incluir un cartucho de programa y una interfaz de cartucho (tal como la que se encuentra en los dispositivos de videojuegos), un chip de memoria extraíble (tal como una memoria de solo lectura programable y borrable (EPROM), o memoria de solo lectura programable (PROM) y enchufe asociado y otras unidades de almacenamiento extraíbles 122 e interfaces 120, que permiten que se transfieran software y datos desde la unidad de almacenamiento extraíble 122 hasta el sistema informático 100.
El sistema informático 100 también puede incluir una interfaz de comunicaciones 124. La interfaz de comunicaciones 124 permite que se transfieran software y datos entre el sistema informático 100 y los dispositivos externos. Ejemplos de la interfaz de comunicaciones 124 pueden incluir un módem, una interfaz de red (tal como una tarjeta Ethernet), un puerto de comunicaciones, una ranura y tarjeta de la Asociación Internacional de Tarjetas de Memoria para Ordenadores Personales (PCMCIA), etc. El software y los datos transferidos a través de la interfaz 124 de comunicaciones tienen forma de señales 128 que pueden ser electrónicas, electromagnéticas, señales ópticas u otras señales capaces de recibirse por la interfaz 124 de comunicaciones. Estas señales 128 se proporcionan a la interfaz 124 de comunicaciones a través de una ruta de comunicaciones (por ejemplo, canal) 126. Este canal 126 transporta señales 128 y puede implementarse usando alambre o cable, fibra óptica, una línea telefónica, un enlace celular, un enlace de radiofrecuencia (RF) y otros canales de comunicaciones.
En este documento, los términos “medio de programa informático” y “medio que puede usarse por ordenador” se usan para referirse generalmente a medios tales como la unidad de almacenamiento extraíble 114, un disco duro instalado en la unidad de disco duro 112 y señales 128. Estos productos de programa informático proporcionan software al sistema informático 100. La divulgación se refiere a tales productos de programa informático.
Se almacenan programas informáticos (también denominados lógica de control informática) en la memoria principal 108 y/o la memoria secundaria 110. También pueden recibirse programas informáticos a través de la interfaz 124 de comunicaciones. Tales programas informáticos, cuando se ejecutan, permiten que el sistema informático 100 realice las características de la presente divulgación, como se comenta en el presente documento. En particular, los programas informáticos, cuando se ejecutan, permiten que el procesador 104 realice las características de la presente divulgación. Por consiguiente, tales programas informáticos representan controladores del sistema informático 100.
En una realización en la que la divulgación se implementa usando software, el software puede almacenarse en un producto de programa informático y cargarse en el sistema informático 100 usando la unidad de almacenamiento extraíble 114, la unidad de disco duro 112 o la interfaz 124 de comunicaciones. La lógica de control (software), cuando se ejecuta por el procesador 104, provoca que el procesador 104 realice las funciones de la divulgación como se describe en el presente documento.
En otra realización, la divulgación se implementa principalmente en hardware usando, por ejemplo, componentes de hardware tales como circuitos integrados de aplicación específica (ASIC). La implementación de la máquina de estados de hardware para realizar las funciones descritas en el presente documento será evidente para los expertos en la(s) técnica(s) relevante(s).
Como será evidente para un experto en la(s) técnica(s) relevante(s) después de leer la descripción en el presente documento, la arquitectura informática mostrada en la figura 1 puede configurarse como cualquier número de dispositivos informáticos tales como una consola de juegos, un reproductor multimedia portátil, un dispositivo de sobremesa, un ordenador portátil, un servidor, un ordenador portátil ligero, un ordenador de tableta, una PDA, un ordenador móvil, un teléfono inteligente, un teléfono móvil, un dispositivo de comunicaciones inteligente o similar.
En otra realización más, la divulgación se implementa usando una combinación de hardware y software.
Con referencia a la figura 2, se muestra un diagrama de bloques que ilustra un entorno 200 de implementación de sistema operativo utilizado por muchos sistemas informáticos convencionales. Como apreciarán los expertos en la(s) técnica(s) relevante(s) después de leer la descripción en el presente documento, existiría un entorno 200 en el dispositivo informático 100 donde se está ejecutando una aplicación 202 de programa informático (software).
Como se conoce bien por los expertos en la(s) técnica(s) relevante(s), a medida que la aplicación 202 se ejecuta dentro del entorno 200, puede utilizar uno o más de los archivos de bibliotecas compartidas del sistema operativo. En un ejemplo donde el dispositivo informático 100 usa el sistema operativo Windows® disponible de Microsoft Corporation de Redmond Washington, tales archivos de biblioteca compartida son archivos de biblioteca de vínculos dinámicos (DLL) (mostrados como DLL 204a-c en la figura 2). A su vez, las DLL 204a-c pueden utilizar uno o más componentes 206 de sistema operativo (mostrados como servicio O/S (A)-(D) en la figura 2) a medida que se ejecuta la aplicación 202. Como se mencionó anteriormente, los sistemas operativos existentes normalmente se entregan con una superficie de API fija. Desarrolladores de aplicaciones de software, tales como la aplicación 202, dependen de una superficie de API consistente de este tipo para permitir la compatibilidad de aplicaciones a través de diferentes dispositivos informáticos 100. Sin embargo, si un componente de sistema operativo (por ejemplo, “servicio O/S (D)” 206d) que normalmente maneja una llamada API particular no existe dentro del entorno de implementación de sistema operativo particular 200, la ejecución de la aplicación 202 producirá un error de tiempo de ejecución y fallará.
Con referencia ahora a la figura 3, se muestra un diagrama de bloques que ilustra un entorno 300 de implementación de sistema operativo según una realización de la presente divulgación. En una realización de este tipo, la situación en la que la aplicación 202 produce un error de tiempo de ejecución se supera por el entorno 300 que incluye una capa 302a de interceptación de API, una capa 302b de interceptación de API y un motor 304 de reglas de redirección de API que facilitan la capacidad de tomar decisiones dinámicas sobre cómo manejar componentes de sistema operativo no implementados específicos necesarios para manejar llamadas API realizadas por la aplicación 202 que se ejecuta en el dispositivo informático 100.
Como apreciarán los expertos en la(s) técnica(s) relevante(s) después de leer la descripción en el presente documento, el sistema operativo dentro del entorno 300 puede ser un sistema operativo multicapa, donde una capa 302 de interceptación de API y el motor 304 de reglas pueden funcionar en una o más de las capas para interceptar una llamada API realizada por la aplicación 202 a un componente de sistema operativo que no existe dentro del entorno 300 de implementación de sistema operativo particular, para evitar la ejecución de la aplicación 202 que produce un error de tiempo de ejecución y un fallo.
Para ilustrar el punto anterior, supóngase que la aplicación 202 que se ejecuta dentro del entorno 300 realiza una llamada API que utiliza (es decir, accede a) DLL 204c, que a su vez necesita utilizar un componente 206d de sistema operativo. El sistema operativo del entorno 300, sin embargo, tiene “capacidad limitada” porque el componente 206d (es decir, “servicio O/S (D)”) no está implementado (como se indica por las líneas discontinuas en la figura 3). Por lo tanto, una capa 302a de interceptación de API comprende lógica de control para interceptar registros y llamadas API/módulo/característica (es decir, almacena) tales “contactos” (es decir, uso de llamadas API, servicios, controladores o recursos) de componentes 206 de O/S. En una realización de la presente invención, la información capturada y almacenada por la capa 302a de interceptación de API facilita que el motor 304 de reglas redirija la llamada API realizada por la aplicación 202 al componente 206d. La llamada API puede entonces redirigirse a otra capa del sistema operativo para manejarse por otra entidad tal como el componente 206e-f del sistema operativo implementado realmente en el dispositivo informático 100. Tal manejo por el componente 206ef de sistema operativo implicaría la ejecución de una o más instrucciones por la CPU 306 o la GPU 308 ubicada en el dispositivo informático 100.
Como apreciarán los expertos en la(s) técnica(s) relevante(s) después de leer la descripción en el presente documento, en una realización, el motor 304 de reglas de redirección de API incluye una tabla (u otra estructura de datos) de reglas dentro del entorno 300 de sistema operativo que dirige la capa 302 de interceptación de API para redirigir dinámicamente una o más llamadas API usando una o más clases de reglas mostradas en la tabla 1 que pueden preestablecerse por el fabricante del dispositivo 100 o configuradas posteriormente por un administrador de sistema.
Tabla 1
Figure imgf000006_0001
Como será evidente para un experto en la(s) técnica(s) relevante(s) después de leer la descripción en el presente documento, la capa 302 de interceptación de API y el motor 304 de reglas de redirección de API que facilitan la capacidad de tomar decisiones dinámicas sobre cómo manejar llamadas API específicas pueden formar parte del sistema operativo “estándar” que se entrega con un dispositivo informático 100 o puede añadirse más tarde a un sistema operativo existente como parte de una actualización (o parche).
Haciendo referencia ahora a la figura 4, se muestra un diagrama de bloques que ilustra un entorno 400 de implementación de sistema operativo según una realización de la presente divulgación. El entorno 400 incluye una capa 302a de interceptación de API, una capa 302b de interceptación de API y el motor 304 de reglas de redirección de API que facilitan la capacidad de tomar decisiones dinámicas con respecto a cómo manejar componentes del sistema operativo no implementados específicos necesarios para manejar una o más llamadas API realizadas por la aplicación 202 que se ejecuta en el dispositivo informático 100. En una realización de este tipo, sin embargo, se redirigen llamadas API a una entidad remota 402 (por ejemplo, un servidor en la nube u otro dispositivo ubicado en la misma red que el dispositivo 100). La decisión sobre a dónde redirigir la llamada API se gestiona a través del motor 304 de reglas (basándose en, por ejemplo, niveles de potencia, ubicación, uso de CPU, seguridad y/o cualquier otro factor tal como se explicó anteriormente).
Para ilustrar el punto anterior, supóngase que la aplicación 202 que se ejecuta dentro del entorno 400 utiliza DLL 204c, que a su vez necesita utilizar un componente 206d de sistema operativo. El sistema operativo del entorno 400, sin embargo, tiene una capacidad limitada porque el componente 206d (es decir, “servicio O/S (D)”) no está implementado (como se indica por las líneas discontinuas en la figura 4). Por lo tanto, la capa 302a de interceptación de API comprende lógica de control para interceptar la llamada API realizada por la aplicación 202 al componente 206d. A continuación, la llamada API puede redirigirse a otra capa del sistema operativo mediante el motor 304 de reglas que utiliza información registrada por la capa 302b de interceptación de a Pi para manejarse por un servicio en la nube 402 para no implicar la ejecución de una o más instrucciones por la CPU 306 o la GPU 308 ubicada en el dispositivo informático 100.
Haciendo referencia ahora a la figura 5, se muestra un diagrama de bloques que ilustra un entorno 500 de implementación de sistema operativo según una realización de la presente divulgación. El entorno 500 incluye una capa 302a de interceptación de API, una capa 302b de interceptación de API y un motor 304 de reglas de redirección de API que facilitan la capacidad de tomar decisiones dinámicas sobre cómo manejar componentes del sistema operativo no implementados específicos (por ejemplo, el componente 206d como se indica por las líneas discontinuas en la figura 5) necesarios para manejar una o más llamadas API realizadas por la aplicación 202 que se ejecuta en el dispositivo informático 100. En una realización de este tipo, sin embargo, la redirección de API permite que la aplicación 202 se ejecute de una manera no modificada mientras redirige llamadas API relevantes de la CPU 306 a la GPU 308 para acelerar la llamada.
Para ilustrar el punto anterior, supóngase que la aplicación 202 que se ejecuta dentro del entorno 500 utiliza DLL 204a, que a su vez utiliza el componente 206a del sistema operativo a través de la capa 302a de interceptación de API. La capa 302b de interceptación de API, sin embargo, bajo el control del motor 304, comprende lógica de control para interceptar el componente 206a de llamadas de instrucción que normalmente las haría a la CPU 306, y el motor 304 las redirige a la GPU 308. Esto acelera la ejecución de la aplicación 202 sin que el código de aplicación 202 tenga que modificarse por un desarrollador con conocimiento de que la GPU 308 está presente (o va a estar presente) en el dispositivo 100.
Haciendo referencia ahora a la figura 6, se muestra un diagrama de bloques que ilustra un entorno 600 de implementación de sistema operativo según una realización de la presente divulgación. En una realización de este tipo, el dispositivo informático 100 tiene dos imágenes 610 y 620 (o instancias) de sistema operativo, que pueden ser los mismos o diferentes sistemas operativos (por ejemplo, escritorio de O/S Windows® 610 y CEO/S Windows® 620), que funcionan cada uno dentro de una máquina virtual. Por lo tanto, el entorno 600 incluye capas 302a, 302b de interceptación de API dentro de la instancia 610 de sistema operativo y capas 302c, 302d de interceptación de API dentro de la imagen 620 de sistema operativo y el motor 304 de reglas de redirección de API que facilitan la capacidad de tomar decisiones dinámicas sobre cómo manejar componentes del sistema operativo no implementados específicos necesarios para manejar una o más llamadas a Pi realizadas por la aplicación 202 que se ejecuta en el dispositivo informático 100.
Más específicamente, y a modo de ejemplo, muchos dispositivos informáticos 100 requieren modos seguros y basados en el usuario (por ejemplo, terminales de pago, dispositivos de juego, dispositivos de aplicación médica, financiera o militar, y similares). La sección basada en el usuario del dispositivo informático 100, sin embargo, puede exponer llamadas API que deberían manejarse por un sistema operativo virtualizado que se ejecute en el mismo dispositivo. En una realización de este tipo, la llamada API parece manejarse localmente por la instancia 610 de sistema operativo de usuario, pero en realidad se redirige a la segunda imagen 620 de sistema operativo virtualizada mediante el motor 304 de reglas de redirección (no mostrado en la figura 6).
Con referencia a la figura 7, se muestra un diagrama de flujo que ilustra un proceso de redirección de API, según una realización de la presente divulgación. Un proceso 700, que se ejecutaría dentro del dispositivo informático 100, comienza en la etapa 702 pasando el control inmediatamente a la etapa 704.
En la etapa 704, un programa de aplicación 202 que se ejecuta dentro de los entornos 300, 400, 500 o 600, realiza una llamada API.
En la etapa 706, la llamada API utiliza una DLL 204, que en la etapa 708 realiza una llamada que está destinada a un componente 206 de sistema operativo. En la etapa 710, sin embargo, la capa 302 de interceptación de API intercepta la llamada. A continuación, en la etapa 712, el motor 304 de reglas determina si es necesario redirigir a otra entidad la llamada realizada por DLL 204 aplicando al menos una regla de redirección (véase la tabla 1).
Si la determinación de la etapa 712 es negativa, el proceso 700 avanza a la etapa 714. En la etapa 714, el componente 206 de O/S previsto maneja la llamada como es habitual.
Si la determinación de la etapa 712 es positiva, sin embargo, el proceso 700 avanza a la etapa 716. En la etapa 716, la llamada se redirige por el motor 304 de reglas a una entidad 402 basándose en una o más reglas de redirección aplicables. Puede iniciarse la redirección por cualquier número de razones/factores/características relacionadas con el dispositivo informático 100 que hacen que el sistema operativo se considere de “capacidad limitada”. Por lo tanto, tales reglas pueden basarse, por ejemplo, en la falta de implementación de API local, niveles de potencia, ubicación, uso de CPU, seguridad y/o cualquier otro factor como se explicó anteriormente (véase la tabla 1). En diversas realizaciones, tal entidad 402 puede ser un servidor en la nube, un componente de hardware, una imagen de sistema operativo particionada o virtualizada, una imagen basada en red o un servicio basado en la nube.
Después termina el proceso 700, que facilita la ejecución de programas de aplicación 202 en el dispositivo informático 100 que tiene un sistema operativo de capacidad limitada, como se indica en la etapa 718.
Si bien se han descrito anteriormente diversos aspectos de la presente divulgación, debe entenderse que se han presentado a modo de ejemplo y no de limitación. Será evidente para los expertos en la(s) técnica(s) relevante(s) que pueden hacerse diversos cambios en cuanto a forma y detalle en la misma sin apartarse del alcance de la presente divulgación. Por lo tanto, la presente divulgación no debe estar limitada por ninguno de los aspectos a modo de ejemplo descritos anteriormente, pero debe definirse solo según las siguientes reivindicaciones y sus equivalentes.
Además, debe entenderse que las figuras adjuntas, que resaltan la estructura, metodología, funcionalidad y ventajas de la presente divulgación, se presentan solo con fines de ejemplo. La presente divulgación es suficientemente flexible y configurable, de modo que pueda implementarse de maneras distintas a las mostradas en las figuras adjuntas (por ejemplo, implementación dentro de sistemas operativos y dispositivos informáticos distintos de los mencionados en el presente documento con fines ilustrativos).

Claims (8)

REIVINDICACIONES
1. Sistema para facilitar la ejecución de programas de aplicación en un dispositivo informático (100) que tiene un entorno (400) de implementación de sistema operativo, que comprende:
una primera capa (302a) de interceptación de interfaz de programación de aplicaciones, API, configurada para interceptar (710) una llamada API desde una aplicación (202) que se ejecuta dentro del entorno (400) de implementación de sistema operativo que se ejecuta en el dispositivo informático (100);
en el que el manejo de dicha llamada API requiere un componente que no está implementado en el entorno (400) de implementación de sistema operativo; y
un motor (304) de reglas de redirección de API configurado para dar instrucciones a dicha primera capa (302a) de interceptación de API para que redi rija (716) dicha llamada API lejos de dicho componente no implementado, en el que dicho motor (304) de reglas está configurado para aplicar al menos una regla de redirección;
en el que dicha llamada API se redirige (716) a un servidor en la nube u otro dispositivo en la misma red que el dispositivo informático (100) para manejar la llamada API.
2. Sistema según la reivindicación 1, en el que dicha primera capa (302a) de interceptación de API está configurada para interceptar dicha llamada API desde dicha aplicación (202) que se ejecuta en el dispositivo informático (100) después de que dicha llamada API acceda a un archivo de biblioteca compartida (204a, 204b, 204c) del entorno (400) de implementación de sistema operativo.
3. Sistema según la reivindicación 1, en el que el dispositivo informático es un terminal de pago o una consola de juegos.
4. Método para facilitar la ejecución de programas de aplicación en un dispositivo informático que tiene un entorno (400) de implementación de sistema operativo, ejecutándose el método en un procesador del dispositivo informático (100), que comprende las etapas de:
interceptar, mediante una primera capa (302a) de interceptación de interfaz de programación de aplicaciones, API, una llamada API desde una aplicación (202) que se ejecuta dentro del entorno (400) de implementación de sistema operativo que se ejecuta en el dispositivo informático (100);
en el que el manejo de dicha llamada API requiere un componente que no está implementado en el entorno (400) de implementación de sistema operativo; y
dar instrucciones, mediante un motor (304) de reglas de redirección de API, a dicha primera capa (302a) de interceptación de API para que redirija dicha llamada API lejos de dicho componente no implementado del entorno (400) de implementación de sistema operativo, en el que dicho motor (304) de reglas aplica al menos una regla de redirección;
en el que dicha llamada API se redirige (716) a un servidor en la nube u otro dispositivo en la misma red que el dispositivo informático (100) para manejar la llamada API.
5. Método según la reivindicación 4, en el que dicha primera capa (302a) de interceptación de API está configurada para interceptar dicha llamada API en una primera capa del sistema operativo de capacidad limitada.
6. Método según la reivindicación 4, en el que dicha primera capa (302a) de interceptación de API está configurada para interceptar dicha llamada API desde dicha aplicación (202) que se ejecuta en el dispositivo informático (100) después de que dicha llamada API acceda a un archivo de biblioteca compartida (204a, 204b, 204c) del entorno (400) de implementación de sistema operativo.
7. Producto de programa informático que comprende un medio que puede usarse por ordenador codificado en un ordenador que tiene un entorno (400) de implementación de sistema operativo con un sistema operativo de capacidad limitada y lógica de control almacenada en el mismo para provocar que el ordenador facilite la ejecución de programas de aplicación, comprendiendo dicha lógica de control:
primeros medios de código de programa legibles por ordenador para provocar que el ordenador intercepte (710), mediante una primera capa de interceptación de interfaz de programación de aplicaciones (API), una llamada API desde una aplicación (202) que se ejecuta dentro del entorno (400) de implementación de sistema operativo que se ejecuta en el ordenador (100);
en el que el manejo de dicha llamada API requiere un componente que no está implementado en el entorno (400) de implementación de sistema operativo; y
segundos medios de código de programa legibles por ordenador para provocar que el ordenador dé instrucciones, mediante un motor (304) de reglas de redirección de API, a dicha primera capa (302a) de interceptación de API para que redirija (716) dicha llamada API lejos de dicho componente no implementado del entorno (400) de implementación de sistema operativo, en el que dicho motor de reglas aplica al menos una regla de redirección; en el que dicha llamada API se redirige (716) a un servidor en la nube u otro dispositivo en la misma red que el dispositivo informático (100) para manejar la llamada API.
8. Producto de programa informático según la reivindicación 7, en el que dicha primera capa (302a) de interceptación de API está configurada para interceptar dicha llamada API desde dicha aplicación (202) que se ejecuta en el ordenador después de que dicha llamada API acceda a un archivo de biblioteca compartida (204a, 204b, 204c) del entorno (400) de implementación de sistema operativo.
ES13731615T 2012-06-22 2013-06-18 Redirección de API para sistemas operativos de capacidad limitada Active ES2886760T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/531,116 US9733953B2 (en) 2012-06-22 2012-06-22 API redirection for limited capability operating systems
PCT/US2013/046207 WO2013192117A2 (en) 2012-06-22 2013-06-18 Api redirection for limited capability operating systems

Publications (1)

Publication Number Publication Date
ES2886760T3 true ES2886760T3 (es) 2021-12-20

Family

ID=48699331

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13731615T Active ES2886760T3 (es) 2012-06-22 2013-06-18 Redirección de API para sistemas operativos de capacidad limitada

Country Status (5)

Country Link
US (1) US9733953B2 (es)
EP (1) EP2864869B1 (es)
CN (1) CN104364758B (es)
ES (1) ES2886760T3 (es)
WO (1) WO2013192117A2 (es)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140184613A1 (en) * 2013-01-01 2014-07-03 Doron Exterman Method for offloading graphic processing unit (gpu) processing tasks to remote computers
US10200508B2 (en) * 2013-09-17 2019-02-05 Nvidia Corporation System and method for sharing special-purpose processing resources
CN111831392A (zh) 2015-05-19 2020-10-27 华为技术有限公司 一种硬件加速方法以及相关设备
US10324693B2 (en) * 2015-11-24 2019-06-18 Nvidia Corporation Optimizing multiple invocations of graphics processing unit programs in Java
US10884761B2 (en) 2016-03-22 2021-01-05 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Best performance delivery in heterogeneous computing unit environment
US10860499B2 (en) 2016-03-22 2020-12-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Dynamic memory management in workload acceleration
US10503524B2 (en) * 2016-03-22 2019-12-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Interception of a function call, selecting a function from available functions and rerouting the function call
US11150925B2 (en) 2016-07-07 2021-10-19 Data Accelerator Ltd. Method and system for compound application virtualization
US11314565B2 (en) 2016-07-07 2022-04-26 Data Accelerator Ltd Method and system for application virtualization that includes resource access control
US11237857B2 (en) 2016-07-07 2022-02-01 Data Accelerator Ltd Method and system for application virtualization that includes machine learning
CN109218275B (zh) * 2017-07-07 2021-09-21 北京小米移动软件有限公司 应用交互方法及装置
WO2018227899A1 (zh) 2017-06-14 2018-12-20 北京小米移动软件有限公司 应用交互方法、交互方法及装置
CN114745495B (zh) * 2021-01-07 2023-06-23 北京小米移动软件有限公司 图像生成方法、装置及存储介质
US20220404956A1 (en) * 2021-06-17 2022-12-22 Samsung Electronics Co., Ltd. Method and electronic device for navigating application screen

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0546568A (ja) 1991-08-08 1993-02-26 Internatl Business Mach Corp <Ibm> 分散アプリケーシヨン実行装置および方法
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7209949B2 (en) * 1998-05-29 2007-04-24 Research In Motion Limited System and method for synchronizing information between a host system and a mobile data communication device
IL132916A (en) * 1999-11-14 2004-02-08 Mcafee Inc Method and system for intercepting an application program interface
US6754709B1 (en) * 2000-03-29 2004-06-22 Microsoft Corporation Application programming interface and generalized network address translator for intelligent transparent application gateway processes
US7624356B1 (en) 2000-06-21 2009-11-24 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US20020082717A1 (en) * 2000-10-31 2002-06-27 Isogon Corporation Method and system for centralizing and harmonizing the operations of plural software license managers
US20020154214A1 (en) * 2000-11-02 2002-10-24 Laurent Scallie Virtual reality game system using pseudo 3D display driver
US20030061279A1 (en) 2001-05-15 2003-03-27 Scot Llewellyn Application serving apparatus and method
US7783727B1 (en) 2001-08-30 2010-08-24 Emc Corporation Dynamic host configuration protocol in a storage environment
US8473620B2 (en) * 2003-04-14 2013-06-25 Riverbed Technology, Inc. Interception of a cloud-based communication connection
NO322710B1 (no) * 2003-04-29 2006-11-27 Telenor Asa En grensesnittanordning med apne og lukkede innretninger for kommunikasjon av tjenester i et personlig nettverk.
US20050160414A1 (en) 2004-01-21 2005-07-21 Nokia Corporation System and method for dynamically adding features to software applications
US7752601B1 (en) 2004-09-20 2010-07-06 The Mathworks, Inc. Runtime component hosting
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
WO2006101549A2 (en) 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
US7830388B1 (en) 2006-02-07 2010-11-09 Vitie Inc. Methods and apparatus of sharing graphics data of multiple instances of interactive application
US7941813B1 (en) * 2006-02-17 2011-05-10 Parallels Holdings, Ltd. System and method for using virtual machine for driver installation sandbox
US7505995B2 (en) 2006-06-30 2009-03-17 Microsoft Corporation Object-relational model based user interfaces
US8407699B2 (en) * 2008-03-10 2013-03-26 Citrix Systems, Inc. System and method for managing code isolation
US20110071997A1 (en) * 2007-07-30 2011-03-24 Sullivan Alan T Systems and methods for direction of communication traffic
US8578364B2 (en) 2008-04-25 2013-11-05 Microsoft Corporation Dynamic management of operating system resources
US20090328080A1 (en) 2008-06-25 2009-12-31 Microsoft Corporation Window Redirection Using Interception of Drawing APIS
US8381231B2 (en) 2008-09-09 2013-02-19 Dell Products L.P. Deployment and management of virtual containers
US8392982B2 (en) * 2009-03-20 2013-03-05 Citrix Systems, Inc. Systems and methods for selective authentication, authorization, and auditing in connection with traffic management
US8683554B2 (en) 2009-03-27 2014-03-25 Wavemarket, Inc. System and method for managing third party application program access to user information via a native application program interface (API)
US8645511B2 (en) 2009-10-13 2014-02-04 Google Inc. Pre-configuration of a cloud-based computer
US20110131330A1 (en) * 2009-12-02 2011-06-02 International Business Machines Corporation Collocating desktop virtual machines to proximity of the user
US8601499B2 (en) * 2009-12-15 2013-12-03 At&T Intellectual Property I, L.P. Systems, methods and computer readable media for routing requests from an application
US8375392B2 (en) 2010-01-12 2013-02-12 Nec Laboratories America, Inc. Data aware scheduling on heterogeneous platforms
CN102135893A (zh) 2010-01-21 2011-07-27 鸿富锦精密工业(深圳)有限公司 将操作系统集成到bios芯片及启动服务器上操作系统的方法
US9021354B2 (en) 2010-04-09 2015-04-28 Apple Inc. Context sensitive remote device
US8505003B2 (en) 2010-04-28 2013-08-06 Novell, Inc. System and method for upgrading kernels in cloud computing environments
US9420055B2 (en) 2010-05-13 2016-08-16 Futurewei Technologies, Inc. System, apparatus for content delivery for internet traffic and methods thereof
CN102270152A (zh) 2010-06-07 2011-12-07 华东师范大学 面向掌上型移动设备的远程应用程序系统
US8839256B2 (en) * 2010-06-09 2014-09-16 International Business Machines Corporation Utilization of special purpose accelerators using general purpose processors
US20120066760A1 (en) * 2010-09-10 2012-03-15 International Business Machines Corporation Access control in a virtual system
KR101581796B1 (ko) * 2010-09-24 2016-01-04 인텔 코포레이션 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유

Also Published As

Publication number Publication date
US9733953B2 (en) 2017-08-15
US20130347009A1 (en) 2013-12-26
EP2864869B1 (en) 2021-08-18
CN104364758B (zh) 2018-01-02
WO2013192117A2 (en) 2013-12-27
EP2864869A2 (en) 2015-04-29
WO2013192117A3 (en) 2014-02-13
CN104364758A (zh) 2015-02-18

Similar Documents

Publication Publication Date Title
ES2886760T3 (es) Redirección de API para sistemas operativos de capacidad limitada
EP4033693B1 (en) Trusted computing base evidence binding for a migratable virtual machine
US9588797B2 (en) Returning terminated virtual machines to a pool of available virtual machines to be reused thereby optimizing cloud resource usage and workload deployment time
US10394580B2 (en) Dynamic addition and removal of operating system components
US20190087212A1 (en) Android simulator and method for implementing android simulator
US20100275205A1 (en) Computer machine and access control method
US20170131999A1 (en) Detection of software or hardware incompatibilities in software packages
US9015325B2 (en) Performing maintenance operations on cloud computing node without requiring to stop all virtual machines in the node
JP2016515748A (ja) 実行時のアプリケーションメソッドを置き換えるためのシステム及び方法
US10742629B2 (en) Efficient cloud resource protection
US10608896B2 (en) Enforce pre-optimized service contracts associated with containers
CN109725867A (zh) 虚拟化屏幕共享方法、装置及电子设备
US11392512B2 (en) USB method and apparatus in a virtualization environment with multi-VM
CN111079125A (zh) 一种应用程序调用第三方库动态提升权限的方法及装置
CN114691300A (zh) 一种虚拟机实例的热迁移方法
US10169027B2 (en) Upgrade of an operating system of a virtual machine
US10474596B2 (en) Providing dedicated resources for a system management mode of a processor
US9710575B2 (en) Hybrid platform-dependent simulation interface
JP2006164266A (ja) オペレーティングシステムのパフォーマンスの改善
US20140245291A1 (en) Sharing devices assigned to virtual machines using runtime exclusion
US10203944B1 (en) Systems and methods for dynamically customizing software programs
US20240220626A1 (en) Secure boot using parallelization
US20180218132A1 (en) Application portability via application(s) installed on a portable storage device
KR20140039779A (ko) 안드로이드 운영 체제의 부팅 성능 향상 방법
CN117608756A (zh) 请求处理方法、装置、电子设备及存储介质