US Pat. No. 9,563,499

PROCESSING RUN-TIME ERROR MESSAGES AND IMPLEMENTING SECURITY POLICIES IN WEB HOSTING

Parallels International G...

1. A system for processing and fixing run-time errors, the system comprising:
a computer system processor configured to generate run-time error messages including generic error data and error data specific
to the computer system;

a database configured to store error codes and corresponding human-readable articles for fixing the errors associated with
the error codes; and

an error detection module configured to detect error messages and provide visual representation of an error on a user monitor,
wherein the error message data specific to the computer system is encrypted, and
wherein:
a server receives the error message and queries the database for human-readable articles corresponding to the error message
and fills out the human-readable article based on the error data specific to the computer system; and

the computer system receives the human-readable article, decrypts the error data and applies the human-readable article to
the error.

US Pat. No. 10,152,290

UNIVERSAL PRINTING USING REMOTE APPLICATION SERVERS

Parallels International G...

1. A method for managing by an application server a print job in a virtual environment, the method comprises:receiving, by the application server, a request from a client device to choose a virtual printer in a remote session established between the client device and the application server;
determining a tag associated with the virtual printer, wherein the tag indicates one or more capabilities that an available printer requires to execute a printing job of the virtual printer;
determining a location of the client device;
selecting a physical printer from a plurality of available printers in the remote session based on the determined location and the determined tag of the virtual printer;
generating an association between the selected physical printer and the virtual printer for use with a printing job, wherein the association is generated by:
saving a reference to the selected physical printer in a driver-specific portion of a device-mode data structure associated with the virtual printer, and
creating in the remote session a printer device context associated with the virtual printer and based on the device-mode data structure; and
transmitting the print job for printing based on the generated association.

US Pat. No. 9,983,761

METHOD FOR INTERCEPTION AND BLOCKING OF MOUSE MOVE AND RESIZE EVENTS ON MOBILE DEVICE

Parallels International G...

1. A system for intercepting events on a mobile device, the system comprising:a mobile device in communication with a remote host running a remote application;
a Remote Access component for representing a remote application window on a mobile device screen;
a control-agent on the remote host;
a server connected between the mobile device and the remote host for selecting a proxy broker closest to the remote host for connecting the mobile device to the remote host,
wherein:
the Remote Access component provides coordinates of user touches on the mobile device screen to the control-agent; and
the control-agent compares the user touches to a list of restricted elements for the remote application window, and blocks corresponding user actions if the user action matches an element from the list, and forwards the user actions otherwise.

US Pat. No. 10,037,334

MEMORY MANAGEMENT AND SHARING HOST OS FILES FOR VIRTUAL MACHINES USING EXECUTION-IN-PLACE

Parallels International G...

1. A system for memory management for Virtual Machines (VMs), the system comprising:a host computer system running a host operating system (OS);
at least two Virtual Machines (VMs) running on the host computer system, wherein each of the VMs has a Guest OS supporting a guest file system with execution-in-place that allows code execution without an intermediate buffer cache;
a hypervisor configured to control the VMs; and
a thin provisioning block device configured to store shared pages and formed of at least one delta file,
wherein:
the hypervisor is configured to receive a page fault;
the hypervisor is configured to read the shared pages from the thin provisioning block device; and
the Guest OS executes the one delta file that is stored on the thin provisioning block device.

US Pat. No. 9,804,872

METHOD FOR EMULATION OF A VIRTUAL OS BOOKMARK ON A HOST DESKTOP

PARALLELS INTERNATIONAL G...

1. A computer-implemented system for emulation of an application bookmark on a host desktop, the system comprising:
a memory device; and
a hardware processor of a host computer system configured to execute a host operating system (OS) with a host desktop and
a Virtual Machine (VM) with a guest OS supporting a virtualized desktop, at least one non-native application and at least
one non-native application shortcut for the non-native application, wherein the guest OS is a different type of operating
system than the host OS and wherein the non-native application is incompatible with the host OS and cannot execute under the
host OS;

wherein the processor is further configured to:
generate a native shortcut on the host side when the non-native application shortcut is dragged or copied from the VM to the
host side, wherein the native shortcut includes a wrapper representing a first file within a second file, the first file representing
the non-native shortcut of the Guest OS and the second file representing the native shortcut visible to the host OS, and wherein
the first file includes a source icon file;

generate a host-side native icon on the host desktop, the host-side native icon corresponding to the native shortcut, wherein
an image of the host-side native icon is generated by a virtual machine monitor for the host desktop by (i) issuing a system
call inside to the guest OS, (ii) receiving from the guest OS a guest icon in a native format of the Guest OS, and (iii) converting
the received guest icon to a native format of the host OS,

wherein the host-side native icon has an appearance that matches the non-native shortcut instead of a generic icon; and
launch the non-native application inside the VM from the host desktop using the host-side native shortcut.

US Pat. No. 9,716,688

VPN FOR CONTAINERS AND VIRTUAL MACHINES IN LOCAL AREA NETWORKS

Parallels International G...

1. A computer-implemented method for combining Virtual Environments (VEs) into a Virtual Private Network (VPN), the method
comprising:
connecting at least two host nodes into an Ethernet network;
launching at least two VEs on each of the hosts;
combining the VEs from both hosts into a VPN;
assigning a number to the VPN;
launching an additional VE on one of the hosts to perform network function virtualization (NFV) for the other VEs;
configuring a first switch on each of the hosts to route packets to VEs that subscribe to the VPN;
using a second switch connected to the first switches of the host nodes to join different host nodes into a segment of the
Ethernet network;

analyzing an incoming broadcast packet by the first switch;
replacing a standard destination MAC address in a packet header by a number of the VPN to which a source VE belongs;
for each arriving packet, looking up which VEs belong to the VPN whose VPN number replaced the destination MAC address; and
for each such found VE, replacing the number of the VPN with the destination MAC address of the VE and delivering the packet
to the found VE,

wherein the host nodes receive VE-related traffic via a proxy.

US Pat. No. 9,535,567

METHOD FOR INTERCEPTION AND BLOCKING OF MOUSE MOVE AND RESIZE EVENTS ON MOBILE DEVICE

Parallels International G...

1. A system for intercepting events on an application window generated on a mobile device, the system comprising:
a mobile device in communication with a remote host running a remote application;
a Remote Access component on the mobile device for representing a remote application window on a mobile device screen;
at least one proxy broker for connecting the mobile device to the remote host;
at least one control-agent on the remote host;
a manager server connected between the mobile device and the host for validating the mobile device user to the remote host
and for selecting the broker closest to the remote host,

wherein:
the Remote Access component detects user touches on a remote application window displayed on a mobile device screen and provides
coordinates of the user touches to the control-agent;

the control-agent obtains element identifiers and application identifiers of the user touches from a host OS;
the control-agent obtains a list of restricted elements for the remote application window; and
the control-agent compares the user touches to a list of restricted elements for the remote application window, and blocks
corresponding user actions if the user action matches an element from the list, and forwards the user actions otherwise.

US Pat. No. 9,740,380

METHOD FOR INTERCEPTION AND BLOCKING OF MOUSE MOVE AND RESIZE EVENTS ON MOBILE DEVICE

Parallels International G...

1. A method comprising:
receiving, from a remote access client executing on a mobile device, user input provided in a portion of an application window
being displayed on the mobile device, the application window on the mobile device corresponding to an application executing
on a remote host, the user input requesting an operation to be performed on the application window and specifying a location
of the portion of the application window in which the user input was provided;

determining, by a processor of the remote host, whether the portion of the application window is a restricted portion with
respect to the requested operation to be performed on the application window; and

preventing, by the processor of the remote host, the remote access client on the mobile device from performing the requested
operation responsive to a determination that the portion of the application window is the restricted portion.

US Pat. No. 9,760,400

SYSTEM AND METHOD FOR JOINING CONTAINERS RUNNING ON MULTIPLE NODES OF A CLUSTER

Parallels International G...

1. A computer-implemented method for joining containers running on a cluster of hardware nodes, the method comprising:
on a plurality of nodes connected into the cluster, where each node hosts at least one container, executing a plurality of
real processes in the containers, where each real process is executed on a single container and other containers execute fake
processes corresponding to the real process, and

wherein the fake process includes interfaces identical to interfaces of a corresponding real process;
for at least one container, executing a backup process that represents a state of the corresponding real process on each node,
and

wherein the node on which the backup process executes has no other fake processes corresponding to the real process of that
backup process;

determining the real process on a source container to be migrated and a target container where the real process is to be migrated;
for the target container, replacing the fake process with the real process and replacing the real process with the fake process
on the source container; and

re-launching a process on the same hardware node with settings from another node;
wherein interfaces of real processes are connected to corresponding interfaces of the corresponding fake process to establish
data flow of the interfaces of fake processes identical to the data flow outputted by interfaces of a corresponding real process.

US Pat. No. 10,181,054

SYSTEM AND METHOD FOR SECURE FILE MANAGEMENT BY A LOCAL CLIENT DEVICE

Parallels International G...

1. A method for secure file access by a client device, the method comprising:receiving, at a server, an identifier of a data block and a first portion of the data block from a client device;
encrypting, by a the server and with a master encryption key stored by the server, the first portion of the data block;
generating an encryption key based at least partially on the identifier of the data block;
transmitting, by the server, the generated encryption key and the encrypted first portion of the data block to the client device to be stored locally in memory of the client device;
causing the client device to encrypt a second portion of the data block using the generated encryption key, such that the encrypted second portion of the data block is stored in the memory of the client device in connection with the encrypted first portion of the data block;
receiving, at the server, the encrypted first portion of the data block, which indicates a client device request to access the encrypted data block;
decrypting, by the server, the encrypted first portion of the data block using the master encryption key stored by the server; and
transmitting, to the client device, the decrypted first portion of the data block and a decryption key for the client device to decrypt the second portion of the data block.

US Pat. No. 10,050,957

SMART CARD REDIRECTION

Parallels International G...

1. A method comprising:establishing, by a processing device of a server executing an application, a network connection to a client device having a smart card;
detecting a program call directed to a smart card application programming interface (API) to authenticate a user of the client device for accessing the application;
determining, based on the program call, whether the smart card is a remote smart card for the server;
responsive to determining that the smart card is the remote smart card, redirecting the program call to the client device via a separate communication channel of the network connection; and
authenticating, by the server using a local security authority system, the user of the client device in view of data returned by the client device in response to the program call, the local security authority system considering the remote smart card to be local to the server.

US Pat. No. 10,211,991

METHOD FOR DOWNLOADING PREAUTHORIZED APPLICATIONS TO DESKTOP COMPUTER USING SECURE CONNECTION

Parallels International G...

1. A computer-implemented method for launching a server application, the method comprising:(a) installing a mobile client application on a mobile device;
(b) generating mobile user credentials;
(c) registering the mobile user credentials with a virtual desktop for accessing a remote server;
(d) establishing a session with the content manager from the virtual desktop using the mobile user credentials;
(e) connecting the virtual desktop to a content storage using the content manager;
(f) on the virtual desktop, requesting, from the content storage, a download of a server application package along with the mobile user credentials embedded into the server application package;
(g) requesting an automatic registration of the mobile device user on the virtual desktop after installation of the server application package;
(h) using the mobile user credentials, installing the server application from the application package on the virtual desktop;
(i) loading the mobile user credentials into an operating system of the virtual desktop from the server application package; and
(j) activating the server application on the virtual desktop using the mobile user credentials.

US Pat. No. 10,019,282

VIRTUAL MACHINE EXIT PROCESSING ACCELERATOR

PARALLELS INTERNATIONAL G...

1. A method, comprising:reading, by a processing device, from a first memory location, a first virtual machine (VM) exit handler address referencing a hypervisor;
storing, in a second memory location, the first VM exit handler address;
storing, in the first memory location, a second VM exit handler address referencing a VM exit processing accelerator;
receiving, by the VM exit processing accelerator, a VM exit associated with a virtual machine;
responsive to determining that an identifier of a reason of the VM exit satisfies a first condition, processing the VM exit by the VM exit processing accelerator; and
resuming execution of the virtual machine.

US Pat. No. 10,180,855

SYSTEM AND METHOD FOR CONTROLLING IDLE STATE OF OPERATING SYSTEM

Parallels International G...

1. A method for controlling an operating state of a virtual processor, the method comprising:determining if a guest system has entered a blocked state by executing an instruction halting the virtual processor until the next interrupt;
upon detecting the blocked state of the guest system, determining a number of interrupt events during a first time period;
if the number of interrupts is less than a first threshold during the first time period, protecting a plurality of memory pages from execution by the virtual processor;
detecting, during a second time period, when the virtual processor attempts to execute at least one of the plurality of protected memory pages;
unprotecting the at least one protected memory page that the virtual processor attempts to execute during the second time period;
monitoring execution by the virtual processor of the at least one unprotected memory page during a third time period; and
maintaining the virtual processor in an idle state based on the number of executed unprotected memory pages during the third time period.

US Pat. No. 10,581,995

HIGH AVAILABILITY VIRTUAL DESKTOP INFRASTRUCTURE

PARALLELS INTERNATIONAL G...

1. A system for providing high availability Virtual Desktop Infrastructure (VDI), comprising:at least two datacenters comprising a first datacenter and a second datacenter and configured to provide virtual desktops to users;
at least one VDI broker assigned to each datacenter;
a VDI management node residing in each datacenter and configured to control its corresponding assigned VDI broker(s);
at least one VDI hardware node residing in each datacenter configured to run at least one Virtual Execution Environment (VEE) representing a virtual desktop;
a domain controller implemented at each datacenter; and
a VDI database located within each datacenter accessible by the VDI broker(s) assigned to the corresponding datacenter, the VDI database configured to store global desktop pool configuration data, user group template data, and user desktops;
wherein the VDI databases of the at least two datacenters are synchronized, and wherein the domain controllers of the at least two datacenters are synchronized, and
wherein the at least one assigned VDI broker of the second datacenter is configured to, when the user cannot connect to the first datacenter selected from the at least two datacenters, redirect the user to the second datacenter selected from the at least two datacenters.

US Pat. No. 10,313,474

SYSTEM AND METHOD OF LOAD BALANCING BY OFFLOADING REDUNDANT QUERIES TO CLIENT DEVICES

Parallels International G...

1. A method for offloading redundant queries for load balancing, the method comprising:receiving, from a load balancing node, a listing of client services hosted by a plurality of servers remotely coupled to the load balancing node;
storing the listing of client services in electronic memory of a client device;
identifying at least one of the client services to be transmitted to the client device;
accessing the listing of client services in the electronic memory and determining if at least one of the plurality of servers is hosting the identified client service to be transmitted to the client device;
in response to determining that the at least one of the plurality of servers is hosting the identified client service, establishing a connection between the client device and the at least one server hosting the identified client service, otherwise sending a request to the load balancer and receiving server information of at least another server that can host the identified client service; and
transmitting the identified client service from the at least one server or the at least another server to the client device.

US Pat. No. 10,228,864

PRE-FETCHING DATA BASED ON MEMORY USAGE PATTERNS

PARALLELS INTERNATIONAL G...

1. A method, comprising:receiving, by a processing device, a first memory access request identifying a first memory block by a first memory block identifier;
receiving a second memory access request identifying a second memory block by a second memory block identifier;
determining a first index by applying a pre-defined transformation to the first memory block identifier;
determining a second index by applying the pre-defined transformation to the second memory block identifier;
updating a memory access tracking data structure by incrementing a first sequence counter corresponding to a memory access sequence identified by the first index and the second index, wherein the memory access tracking data structure is provided by a rectangular matrix comprising a plurality of sequence counters, wherein a position of the first sequence counter is identified by an intersection of a row of the matrix and a column of the matrix, wherein the row is identified by the first index and the column is identified by the second index;
receiving a third memory access request identifying a third memory block;
identifying, based on the memory access tracking data structure, a second sequence counter having a maximal value among sequence counters associated with memory access sequences that reference the third memory block; and
pre-fetching a fourth memory block corresponding to the second sequence counter.

US Pat. No. 10,404,805

INITIATING REMOTE ACCESS SESSION BASED ON CONNECTION HISTORY

Parallels International G...

1. A method comprising:determining, by a processing device in a remote access system, one or more historical days and times of day corresponding to initiation of a remote access session between a server device and a client device;
comparing, by the processing device, the one or more historical days and times of day to one another to determine that the one or more historical days and times of day are within a threshold range from a target day and time of day;
storing, in a data storage at the remote access system, first session information identifying the target day and time of day for the remote access session; and
in response to an occurrence of the target day and time of day, causing the server device to initiate the remote access session with the client device.

US Pat. No. 10,230,855

ASYNCHRONOUS USAGE OF REDIRECTED SCANNERS WITH A SINGLE DRIVER

Parallels International G...

1. A method comprising:generating, by a processing device, a first instance of a universal scanner driver on a server and a second instance of the universal scanner driver on the server, wherein the first instance is customized for use with a first scanner at a first user device by a first unique information file associated with the first instance and the second instance is customized for use with a second scanner at a second user device by a second unique information file associated with the second instance, wherein the first scanner and the second scanner are of two different types, wherein the first and second unique information files comprise configuration details for the first and second scanners received from the first and second user devices, and wherein the universal scanner driver is configured to support a plurality of different types of redirected scanners including the two different types of the first scanner and the second scanner;
receiving a first request for an application running on the server to scan a first document using the first scanner and a second request for the application to scan a second document using the second scanner concurrently;
sending, using the first instance of the universal scanner driver, the first request to a first redirect client on the first user device and, using the second instance of the universal scanner driver, the second request to a second redirect client on the second user device concurrently;
receiving first scan data corresponding to the first document from the first redirect client and second scan data corresponding to the second document from the second redirect client; and
in response to the first request to scan the first document being completed, destroying, by the server, the first instance of the universal scanner driver that is configured to support the plurality of different types of redirected scanners including the two different types of the first scanner and the second scanner, the first instance being destroyed having been run on the server along with the second instance, wherein the second instance continues to run on the server after the first instance is destroyed.

US Pat. No. 10,341,338

SMART CARD REDIRECTION

PARALLELS INTERNATIONAL G...

1. A method comprising:establishing, by a processing device of a server executing an application, a network connection to a client device having a smart card;
detecting a program call associated with an authentication of a user of the client device for accessing the application;
determining, based on the program call, whether the smart card is a remote smart card for the server;
responsive to determining that the smart card is the remote smart card, redirecting the program call to the client device via a communication channel of the network connection; and
authenticating, by the server using a local component, the user of the client device in view of data returned by the client device in response to the program call, the local component handling the remote smart card as local to the server.

US Pat. No. 10,185,597

METHOD FOR HIGH AVAILABILITY OF SERVICES IN CLOUD COMPUTING SYSTEMS

Parallels International G...

1. A system for providing a high availability (HA) of services, the system comprising:a plurality of nodes forming a cluster, wherein at least some of the nodes have services running on them such that the cluster has only a single instance of that service;
a plurality of node locks active while accessing the active nodes;
a router providing access to services hosted on the nodes, wherein the services utilize the resources that are subject to the node locks;
an HA daemon running on each node;
an HA master daemon running on one of the nodes,
wherein
the HA daemons track availability of services hosted on the nodes and generate requests to HA master daemon to restore failed services and redirect the router to live services;
the HA daemons activate node locks, and
the master daemon re-launches corresponding services on another node and updates the router so as to redirect requests to active services;
a target node being brought online; and
a source node with the service about to be deactivated,
wherein the target node executes a lock revoke to acquire the node lock from the source node when the services of the source node are live-migrated to the target node from the source node.

US Pat. No. 10,380,195

GROUPING DOCUMENTS BY CONTENT SIMILARITY

Parallels International G...

1. A method to facilitate grouping a corpus of documents by content similarity, the method comprising:determining, by a processing device, a first set of document identifiers (IDs) for a first set of documents of the corpus of documents, the first set of documents identified responsive to a search query;
obtaining at least one shingle corresponding to the first set of document IDs;
identifying a second set of document IDs corresponding to the obtained at least one shingle;
grouping, by the processing device, the second set of document IDs in a grouping data structure based on document IDs;
determining, by the processing device, resulting document IDs from the grouping data structure, wherein each resulting document ID from the resulting document IDs is determined based on a threshold number of occurrences; and
associating, by the processing device, resulting documents of the first set of documents that correspond to the resulting document IDs with one another in search results generated responsive to the search query to create a final search result to send to a user.

US Pat. No. 10,372,497

OFFLOADING GPU COMPUTATIONS FOR COMPUTERS AND VIRTUAL MACHINES

Parallels International G...

1. A method for performing computations on a virtual machine without a special hardware computation unit, the method comprising:intercepting, from a user application executing in the virtual machine, a request to load accelerated code prepared for the special hardware computation unit in the virtual machine, wherein the virtual machine is executing in a first physical computer;
transmitting the accelerated code comprised of special hardware computation unit instructions to a remote node executing on a second physical computer having a physical special hardware computation unit;
responsive to intercepting from the user application a request to start execution of the accelerated code by the special hardware computation unit of the virtual machine, transmitting to the second physical computer a request to execute the accelerated code using the physical special hardware computation unit of the second physical computer; and
responsive to intercepting from the user application a request to transfer results of the accelerated code execution, retrieving, by the virtual machine, results from the physical special hardware computation unit of the second physical computer, and loading the retrieved results into a memory of the virtual machine.

US Pat. No. 10,379,823

CONVERSION OF REMOTE APPLICATION DIALOGS TO NATIVE MOBILE CONTROLS

Parallels International G...

1. A method comprising:identifying, by a processing device of a remote server, pixel mapping data corresponding to an active application window, the active application window comprising a user interface in a first format generated by an application running on the remote server;
identifying, based on the pixel mapping data corresponding to the active application window, at least one control in the active application window and a plurality of control options associated with the at least one control;
generating a first metadata representation of the at least one control and of the plurality of control options; and
sending the first metadata representation to a mobile device communicatively coupled to the remote server, the mobile device to generate a user interface in a second format based on the first metadata representation to present the control and the plurality of control options on the mobile device.

US Pat. No. 10,331,471

BROWSER CREDENTIAL MANAGEMENT FOR VIRTUAL EXECUTION ENVIRONMENTS

PARALLELS INTERNATIONAL G...

1. A method, comprising:upon initializing a virtual machine (VM) managed by a virtual machine manager (VMM) running on a host computer system, communicating credential manager data stored in a local database of the host computer system to a credential manager application programming interface (API) of the VM;
receiving, by the VMM, a credential manager API request intercepted by a hook module installed into a browser running on the VM;
forwarding the intercepted API request to a VM client application;
receiving, from the VM client application, a client response to the intercepted API request;
producing, using the client response, a VMM response to the intercepted API request; and forwarding the VMM response to the hook module.

US Pat. No. 10,282,235

SINGLE-CLICK EJECTION OF PERIPHERAL DEVICES ASSOCIATED WITH VIRTUAL MACHINES

PARALLELS INTERNATIONAL G...

1. A method, comprising:receiving, by a guest agent running on a virtual machine managed by a virtual machine manager (VMM) of a host computer system, a device removal request from the VMM, the device removal request identifying a peripheral device to be unmounted by the virtual machine;
causing, by the guest agent, a guest operating system (OS) of the virtual machine to unmount the peripheral device;
receiving, by the guest agent, a notification of completion of a device unmounting operation performed by the virtual machine with respect to the peripheral device; and
transmitting, by the guest agent to the VMM, an operation completion status identified by the notification.

US Pat. No. 10,270,888

SYSTEM AND METHOD FOR SELECTING CONNECTION MODE BETWEEN A CLIENT AND A SERVER

PARALLELS INTERNATIONAL G...

12. A method for determining a communication mode between a client device and a server device, the method comprising:checking a memory of the client device to determine whether information about a connection mode for accessing one or more server devices is cached, wherein the connection mode includes at least one of a direct connection between the client device and a server device and an indirect connection via a gateway device between the client device and the server device;
determining whether a location of the client device has changed;
in response to detecting that: no connection mode has been cached, or the connection mode has been cached and a location of the client device has changed, identifying the gateway device and transmitting a query to the gateway device to obtain the information about the connection mode; and
in response to detecting that: the connection mode has been cached and the location of the client device has not changed, or the information about the connection mode is obtained from the gateway device, connecting with the at least one desired server device using the determined connection mode.

US Pat. No. 10,423,774

SYSTEM AND METHOD FOR ESTABLISHING SECURE COMMUNICATION CHANNELS BETWEEN VIRTUAL MACHINES

PARALLELS INTERNATIONAL G...

1. A method for establishing a secure communication channel between at least two virtual machines, comprising:generating, by a first virtual machine, an encryption key compatible with a symmetric encryption algorithm and storing the encryption key in a memory of the first virtual machine;
generating a second virtual machine by performing a virtual machine forking operation on the first virtual machine, wherein a memory of the generated second virtual machine contains the encryption key, and wherein the virtual machine forking operation comprises:
generating, by the first virtual machine, a unique identifier associated with the first virtual machine;
communicating, by the first virtual machine, a request to a virtual machine manager to generate the second virtual machine by cloning the first virtual machine; and
assigning, by the virtual machine manager, parent or clone status to the at least two virtual machines;
receiving, by one of the at least two virtual machines, a communication transmitted by another of the at least two virtual machines, wherein the communication comprises data encrypted using the encryption key; and
decrypting the data, by the recipient virtual machine, using the encryption key.

US Pat. No. 10,496,848

SYSTEM AND METHOD FOR ACCESSING SECURE FILES

Parallels International G...

1. A method for secure file access comprising:receiving, by a client device, an access request to access an encrypted file on the client device;
in response to the access request, transmitting, to a server, a decryption request to decrypt a remote processing portion of a block of the encrypted file;
receiving, by the client device, in response to the decryption request, the decrypted remote processing portion of the block of the encrypted file, and receiving a local decryption key; and
applying, by the client device, the local decryption key to decrypt one or more local portions of the block of the encrypted file to obtain a fully decrypted block of the encrypted file.

US Pat. No. 10,404,663

FILE SHARING OVER SECURE CONNECTIONS

Parallels International G...

1. A method for a file sharing proxy server, comprising:establishing, by the file sharing proxy server, a secure client connection with a client computing device;
receiving, by the file sharing proxy server, a client request originated by the client computing device, the client request identifying a file sharing host and a file residing on a file system associated with the file sharing host;
responsive to identifying, by the file sharing proxy server, a management connection with the file sharing host, transmitting, to the file sharing host via the management connection, an identifier of the secure client connection and a state parameter of the secure client connection;
receiving, by the file sharing proxy server, a host request originated by the file sharing host to establish a secure host connection with the file sharing proxy server, the host request comprising the identifier of the secure client connection;
establishing, by the file sharing proxy server, the secure host connection with the file sharing host using the state parameter of the secure client connection identified by the received identifier of the secure client connection;
forwarding, by the file sharing proxy server, over the secure host connection, a first data packet received over the secure client connection, the first data packet comprising at least part of the client request; and
forwarding, by the file sharing proxy server, over the secure client connection, a second data packet received over the secure host connection, the second data packet comprising at least part of a content of the file identified by the client request.

US Pat. No. 10,394,860

ZERO KNOWLEDGE SEARCH ENGINE

PARALLELS INTERNATIONAL G...

1. A method to facilitate indexing of a plurality of documents stored in a document repository, the method comprising:obtaining, by a processing device of a client device, a document of the plurality of documents stored in the document repository, the document comprising a plurality of morphemes;
encoding, by the processing device, a morpheme of the plurality of morphemes using an encryption passphrase associated with the client device to generate an encoded morpheme;
encoding, by the processing device, a location array using the encryption passphrase to generate an encoded location array, wherein the location array comprises each location of the morpheme within the document;
encoding, by the processing device, a unique identifier associated with a location of the document in the document repository using the encryption passphrase to generate an encoded document identifier; and
sending, by the processing device, the encoded morpheme, the encoded location array, and the encoded document identifier to a server device to be stored in a search index.

US Pat. No. 10,534,637

SYSTEMS AND METHODS FOR MANAGING CHAIN OF SOFTWARE APPLICATIONS

Parallels International G...

1. A computer-implemented method for managing software applications, comprising:receiving, via a graphical user interface, a user input request to chain together a first application and a second application, wherein the user input request indicates a sequence of execution of the first application followed by the second application;
identifying a first input type and a first output type of the first application;
identifying a second input type and a second output type of the second application;
in response to determining that the first output type of the first application is not compatible with the second input type of the second application, updating, without further user input, the sequence of execution such that the second application precedes the first application; and
generating a chain application configured to execute the first application and the second application in the updated sequence of execution in which an intermediate output of the second application is passed to the first application as an input.

US Pat. No. 10,432,681

METHOD AND SYSTEM FOR CONTROLLING LOCAL DISPLAY AND REMOTE VIRTUAL DESKTOP FROM A MOBILE DEVICE

Parallels International G...

1. A method comprising:receiving, by a processing device of a client device, a video stream from a remote server, wherein the video stream comprises a graphical object generated by an application running on the remote server and controllable by a command issued by a mobile device communicatively coupled with the client device, the command to be executed by the remote server;
detecting whether the video stream comprises a result of an execution of the command with respect to the graphical object by the remote server;
responsive to the video stream not comprising the result, generating, by the processing device of the client device, a substitute graphical object to replace the graphical object in the video stream; and
causing display of the substitute graphical object on the client device.

US Pat. No. 10,359,969

CREATING VIRTUAL MACHINE SNAPSHOTS WITHOUT INTERFERING WITH ACTIVE USER SESSIONS

Parallels International G...

1. A method, comprising:receiving, by a processor, a request to create a snapshot of a virtual machine running on a host computer system;
protecting from modification a plurality of virtual memory pages of the virtual machine;
responsive to detecting an attempt to modify a virtual memory page of the plurality of memory pages, copying the virtual memory page to a queue residing in a random access memory (RAM) of the host computer system;
making the virtual memory page writable;
retrieving the virtual memory page from the queue;
writing the virtual memory page to a disk of the host computer system; and
responsive to exhausting the queue, completing creation of the snapshot of the virtual machine.

US Pat. No. 10,528,512

IMPROVING EFFICIENCY OF ASYNCHRONOUS INPUT/OUTPUT OPERATIONS BASED ON OBSERVED PERFORMANCE

Parallels International G...

1. A method, comprising:initializing a list of sockets that are ready for performing input/output (I/O) operations;
traversing the list of sockets, wherein a traversal operation of the list includes, for each socket referenced by the list:
performing I/O operations using the socket,
updating a state flag associated with the socket to reflect a state of the socket,
updating one or more observed I/O performance statistics of the socket; and
responsive to detecting less than a threshold number of I/O operation errors during the traversal operation, updating the list of sockets based on updated state flags and observed I/O performance statistics.

US Pat. No. 10,496,547

EXTERNAL DISK CACHE FOR GUEST OPERATING SYSTEM IN A VIRTUALIZED ENVIRONMENT

PARALLELS INTERNATIONAL G...

1. A method for managing computing resources of a physical server executing a plurality of virtual machines (VMs), the method comprising:executing, in a first virtual machine (VM) of the plurality of VMs, a guest block device driver configured to provide an interface to a memory-mapped virtual storage device;
maintaining, by a virtual machine monitor, a disk cache associated with the virtual storage device, wherein the disk cache resides in a host physical memory of the physical server outside of portions of the host physical memory associated with guest physical memory of the first VM; and
responsive to determining that available host physical memory satisfies a threshold condition, reclaiming a target portion of the host physical memory allocated to the disk cache.

US Pat. No. 10,498,864

SYSTEM AND METHOD FOR SELECTING CONNECTION MODE BETWEEN A CLIENT AND A SERVER

PARALLELS INTERNATIONAL G...

1. A method for selecting a connection mode, comprising:receiving a request from a client device to access one or more desired server devices;
detecting a location of the client device and a location of the one or more desired server devices in a communication network;
selecting a connection mode for the client device to access the one or more desired server devices based on the location of the client device and the one or more desired server devices;
in response to a direct connection mode being selected, informing the client device to access the one or more desired server devices directly; and
in response to an indirect connection mode being selected, establishing a proxy connection between the client device and the one or more desired server devices.

US Pat. No. 10,481,941

VIRTUAL MACHINE EXIT PROCESSING ACCELERATOR

Parallels International G...

1. A method, comprising:storing, in a memory location, a VM exit handler address specified by a Virtual Machine Control Structure (VMCS) associated with a virtual machine;
intercepting, by a VM exit processing accelerator, a VM exit associated with the virtual machine;
responsive to determining that an identifier of a reason of the VM exit satisfies a first condition, processing the VM exit by the VM exit processing accelerator; and
resuming execution of the virtual machine.

US Pat. No. 10,529,327

SYSTEM AND METHOD FOR ENABLING VOICE RECOGNITION FOR OPERATING SYSTEM

Parallels International G...

1. A method for controlling a remote computer over a remote session established via a cloud infrastructure using an intelligent personal assistant (IPA) executing on a mobile device of a user, the method comprising:receiving, by the IPA, a speech-based instruction from a user of the mobile device, the speech-based instruction indicating a request to execute a task on the remote computer, wherein an operating system of the remote computer does not natively support speech-based instructions;
analyzing, by the IPA, the speech-based instruction to determine whether the speech-based instruction includes an intent of the user to initiate a remote session to the computer;
determining, by the IPA, a remote client on the mobile device for creating a remote session with the computer, wherein the remote client is configured to:
authenticate the user with the cloud infrastructure;
determine whether the remote computer is registered as a remote host with the cloud infrastructure;
obtain security tokens associated with the remote computer from the cloud infrastructure; and
establish a secure remote session with the registered computer using the security tokens;
generating, by the IPA, a command object that includes parameters relating to the execution of the task and transmitting the command object through the secure remote session to the computer, wherein the command object causes a software agent on the computer to execute the task based at least partially on the parameters included in the command object; and
presenting results of the task execution in an interface of the remote client.

US Pat. No. 10,528,380

VIRTUAL MACHINE TO HOST COMMUNICATION CHANNEL

Parallels International G...

1. A method comprising:receiving an instruction to create a communication channel between a guest operating system (OS) of a virtual machine and a host OS of a host system;
in response to receiving the instruction to create the communication channel, transmitting, to a virtual Universal Serial Bus (USB) hub executed by the host OS, a first request to create a virtual USB device on the virtual USB hub;
providing the virtual USB device to the guest OS;
identifying, by a processing device, an operation to be performed by the guest OS on the virtual USB device;
causing a second request, comprising the operation to be performed by the guest OS, to be provided from the guest OS to the virtual USB hub; and
causing the second request to be provided from the virtual USB hub to the host OS.

US Pat. No. 10,509,688

SYSTEM AND METHOD FOR MIGRATING VIRTUAL MACHINES BETWEEN SERVERS

Parallels International G...

1. A method for migrating a virtual machine (VM) from a first server to a second server to access physical resources, the method comprising:intercepting, by a VM manager, a request from a client device to access a physical resource associated with the second server, wherein the interception comprises:
registering the VM manager using a globally unique identifier;
accessing, by the VM manager, functions of an original library of the physical resource; and
sending, by the VM manager, function calls from the client device directly to the original library of the physical resource;
identifying, by the VM manager, a virtual machine on the first server that is currently hosting a remote application for the client device;
identifying, by the VM manager, the second server associated with the physical resource; and
migrating, by the VM manager, the virtual machine from the first server to the second server, such that the client device accesses the physical resource using the second server.

US Pat. No. 10,496,849

SYSTEMS AND METHODS FOR SECURE FILE ACCESS

PARALLELS INTERNATIONAL G...

1. A method for secure file access by a client device, the method comprising:receiving, at a server, an identifier of a data block and a first portion of the data block from the client device;
encrypting, with a master encryption key, the first portion of the data block;
transmitting, by the server, a generated encryption key and the encrypted first portion of the data block to the client device to be stored locally in memory of the client device, wherein the generated encryption key is based on the master encryption key and the identifier; and
causing the client device to encrypt a second portion of the data block using the generated encryption key, and causing the client device to store the encrypted second portion of the data block in the memory of the client device.

US Pat. No. 10,542,078

SYSTEM AND METHOD OF LOAD BALANCING TRAFFIC BURSTS IN NON-REAL TIME NETWORKS

Parallels International G...

1. A method for balancing loads of computing resources among a plurality of servers by a plurality of load balancers, wherein the method comprises:receiving, by a first load balancer of the plurality of load balancers, from each of the plurality of servers, resource usage statistics associated with services executing in the server, wherein the resource usage statistics received from the server indicate a current load of the server;
receiving, by the first load balancer, a plurality of requests for the services executing in the servers, wherein the plurality of requests are received from a front-end device that selects a load balancer from among the plurality of load balancers to which each of the plurality of requests is to be directed according to a cyclical pattern;
determining, by the first load balancer, a total number of requests received by the plurality of load balancers for the services executing in the servers, the total number being determined based on the cyclical pattern;
determining, by the first load balancer, an estimated increased load of each of the plurality of servers based on the received resource usage statistics and the total number of requests; and
for each of the plurality of requests, by the first load balancer, selecting a server of the plurality of servers to fulfill the request and forwarding the request to the selected server, the selection being based on respective estimates of increased loads of the plurality of servers.

US Pat. No. 10,542,072

UTILITIES TOOLBOX FOR REMOTE SESSION AND CLIENT ARCHITECTURE

PARALLELS INTERNATIONAL G...

1. A method for executing utility applications in a remote session, wherein the method comprises:establishing, by a remote session client, a remote session between a client device and a remote application server;
determining one or more characteristics of the client device;
responsive to receiving a user request to execute a utility component on the client device, wherein the utility component performs an action on a target file, determining an execution location of the utility component based on both the characteristics of the client device and a location of the target file;
responsive to determining the execution location of the utility component is on the client device, executing the utility component on the client device; and
responsive to determining the execution location of the utility component is on the remote application server, transmitting the user request to be executed within the remote session.

US Pat. No. 10,594,661

SYSTEM AND METHOD FOR RECOVERY OF DATA PACKETS TRANSMITTED OVER AN UNRELIABLE NETWORK

Parallels International G...

1. A method for recovery of data packets transmitted from a sending device to a receiving device over a network, the method comprising:calculating, by the receiving device, a parameter L associated with a frequency of packet losses in the data packets transmitted from the sending device to the receiving device over the network;
transmitting, by the receiving device, the parameter L in a UDP packet to the sending device;
receiving, from the sending device, a sequence of UDP data packets including (i) data encrypted by the sending device prior to being transmitted to the receiving device, the encryption being performed using a protocol with encryption and numbering and (ii) Forward Error Correction (FEC) data generated by the sending device, wherein the sequence of UDP packets comprises a number of L UDP packets having the encrypted data transmitted between each UDP packet having the FEC data, wherein the FEC data is generated based on the encrypted data and the parameter L; and
calculating, by the receiving device, the parameter L based on, for sequentially arriving UDP packets, differences between a number of each packet of the sequentially arriving packets and a sequence number of the respective protocol with encryption and numbering.

US Pat. No. 10,579,322

CONNECTING TO REMOTE ACCESS SESSION BASED ON PROXIMITY OF MOBILE DEVICE

PARALLELS INTERNATIONAL G...

1. A method comprising:storing, in a memory at a remote access system, first client information identifying a location of a first client device and identifying a first remote access session, the first remote access session providing the first client device access to resources of the remote access system;
receiving, by an interface of the remote access system, first mobile information identifying a first location of a mobile device;
comparing, by a processing device of the remote access system, the received first mobile information to the stored first client information to determine that the first location of the mobile device is within a first threshold distance from the location of the first client device; and
in response to the determination that the first location of the mobile device is within the first threshold distance from the location of the first client device, causing the first client device to connect to the first remote access session with the remote access system as a background process of the first client device while a user interface of the first client device remains locked.

US Pat. No. 10,628,203

FACILITATING HIBERNATION MODE TRANSITIONS FOR VIRTUAL MACHINES

Parallels International G...

1. A method, comprising:saving a memory state of a virtual machine to produce a saved memory state, wherein the virtual machine is running in an active state on a host computer system;
causing the virtual machine to transition to a hibernation state;
determining that while the virtual machine was in the hibernation state, a hardware configuration parameter of the virtual machine has been modified; and
responsive to the determining, causing the virtual machine to discard, upon awakening, the saved memory state.

US Pat. No. 10,606,493

SYSTEM AND METHOD FOR ADJUSTING MEMORY ALLOCATION FOR VIRTUAL MACHINES

Parallels International G...

1. A method for managing memory allocation for a virtual machine running on a host platform, the method comprising:continuously calculating an amount of free physical memory of the host platform depending on a difference between a size of physical memory of the host platform and an amount of the physical memory of the host platform allocated for exclusive use by a kernel of an operating system of the host platform;
allocating, to a first virtual machine running on the host platform, a first amount of the free physical memory; and
prior to a launch of a second virtual machine on the host platform:
calculating a guest memory adjustment A based on patterns of user activity, over a plurality of memory measurements, of the operating system of the host platform and an operating system of the first virtual machine;
if the guest memory adjustment A is a negative value, determining a second amount of the free physical memory to allocate to the second virtual machine; and
if the guest memory adjustment A is a positive value, determining a third amount of the free physical memory to allocate to the second virtual machine, wherein the third amount is greater than the second amount.

US Pat. No. 10,581,636

NETWORK TUNNELING FOR VIRTUAL MACHINES ACROSS A WIDE-AREA NETWORK

Parallels International G...

1. A method for exchanging network traffic between a client and a virtual machine, wherein the method comprises:emulating a virtual network interface controller (NIC) of a virtual machine executing on a physical server, wherein the virtual NIC emulates access to a physical local area network of the physical server;
detecting a guest network packet at the virtual NIC to be transmitted to a client; and
transmitting the guest network packet to the client using a communication channel between the physical server and the client without injecting the guest network packet into the local area network of the physical server.

US Pat. No. 10,628,317

SYSTEM AND METHOD FOR CACHING DATA IN A VIRTUAL STORAGE ENVIRONMENT BASED ON THE CLUSTERING OF RELATED DATA BLOCKS

PARALLELS INTERNATIONAL G...

1. A method for caching data in a virtual storage environment, comprising:monitoring, by a hardware processor, operations on a virtual storage device;
identifying, by the hardware processor, transitions between blocks of the virtual storage device that have the operations performed thereon;
determining, by the hardware processor, a relationship between each of the blocks based on the identified transitions;
clustering the blocks into groups of related blocks based on the relationship; and
applying, by the hardware processor, one of a plurality of different caching policies to blocks in each of the groups based on the clustering.

US Pat. No. 10,616,336

FILE ACCESS SERVICE

Parallels International G...

1. A method, comprising:receiving, by a computer system implementing a control node, a file access request initiated by a client computing device, wherein the file access request comprises an identifier of a file, an identifier of a file storage service, and an access token associated with the file stored by the file storage service;
requesting, using the access token, metadata associated with the file from the file storage service;
defining, using the metadata, a plurality of portions forming the file;
identifying a plurality of file access nodes associated with the file storage service, wherein a number of the file access nodes is determined based on a size of the file; and
forwarding, to the plurality of file access nodes, identifiers of the plurality of portions.

US Pat. No. 10,691,438

ACCESS FREQUENCY-BASED FILE MANAGEMENT IN VIRTUALIZED COMPUTING ENVIRONMENTS USING SPARSE FILES

Parallels International G...

1. A method comprising:executing, by a processing device of a computer system, a hypervisor to manage one or more virtual machines that each include a guest operating system, wherein the guest operating system comprises a guest file system and supports an access to the virtual machine from a client device;
receiving, by the processing device, from within the guest operating system, a request to store a first data file in the guest file system;
in response to receiving the request to store the first data file:
storing the first data file in a first storage device for a file system outside the guest file system, the first data file having a first file path in a folder structure of the file system outside the guest file system;
storing a second data file in the guest file system, wherein the second data file is a sparse file for the first data file, the second data file having a second file path in a folder structure of the guest file system, wherein the second file path shares a common portion with the first file path; and
storing metadata for the second data file, wherein the metadata directs requests to access the second data file from within the guest operating system to the first data file stored in the first storage device, the metadata comprising an identifier of the common portion for determining a location of the second data file;
receiving, from within the guest operating system, a plurality of requests to access the second data file;
responsive to each of the plurality of requests, accessing the first data file using the metadata for the second data file;
storing a record of the requests to access the second data file;
identifying, based on the stored record, an access frequency of the requests to access the second data file; and
moving, based on the access frequency, the first data file from the first storage device outside the guest file system to a second storage device outside the guest file system.

US Pat. No. 10,649,709

LOCATION-BASED UNIVERSAL PRINTING USING REMOTE APPLICATION SERVERS

PARALLELS INTERNATIONAL G...

1. A method for managing by an application server a print job in a virtual environment, the method comprising:receiving, by the application server, a request from a client device to choose a virtual printer in a remote session established between the client device and the application server;
selecting a physical printer from a plurality of available printers in the remote session;
generating an association between the selected physical printer and the virtual printer for use with the print job by:
saving a reference to the selected physical printer in a driver-specific portion of a device-mode data structure associated with the virtual printer;
creating in the remote session a printer device context associated with the virtual printer and based on the device-mode data structure; and
transmitting the print job for printing based on the generated association.

US Pat. No. 10,664,311

TIMER OBJECT MANAGEMENT FOR A MULTIPROCESSOR VIRTUAL ENVIRONMENT

Parallels International G...

1. A method comprising:identifying, by a host computer system, a particular timer object associated with an expiration time;
identifying a first virtual processor implemented by the host computer system to be associated with the particular timer object;
identifying a global list referencing a plurality of timer objects associated with the host computer system, wherein the global list is sorted by expiration times of the timer objects associated with the host computer system;
inserting, based on the expiration time, a global element associated with the particular timer object into the global list;
identifying a first processor-specific list referencing a plurality of timer objects associated with the first virtual processor, wherein the first processor-specific list is sorted by expiration times of the timer objects associated with the first virtual processor;
inserting, based on the expiration time, a first element associated with the particular timer object into the first processor-specific list, wherein the first element references the global element and a second element of a second processor-specific list associated with a second virtual processor implemented by the host computer system;
identifying, using the first processor-specific list, a nearest timer event corresponding to a nearest timer object associated with the first virtual processor; and
executing, by the first virtual processor, guest executable code until the nearest timer event.

US Pat. No. 10,698,931

INPUT PREDICTION FOR DOCUMENT TEXT SEARCH

PARALLELS INTERNATIONAL G...

1. A method to facilitate input prediction for searching content of a plurality of stored documents associated with a user, the method comprising:maintaining, by a processing device, a data structure comprising entries that are each associated with one of the plurality of stored documents associated with the user, wherein each entry comprises textual content from a document of the plurality of stored documents associated with the user, and wherein the textual content comprises a plurality of characters;
determining an amount of textual content stored in the data structure associated with the user;
responsive to determining that the amount of textual content stored in the data structure associated with the user meets a threshold, analyzing, by the processing device, the textual content of each entry in the data structure to identify one or more sequential relationships between the plurality of characters in the textual content, wherein analyzing the textual content comprises training a neural network using the textual content to identify a following set of characters that follows a preceding set of characters most often as compared to other following sets of characters in the plurality of characters in the textual content;
receiving, from a client device, an input text entered by the user as part of a search query, wherein the input text comprises a text character;
determining, by the processing device, a predicted text to follow the input text, wherein the predicted text is based on the one or more sequential relationships between the plurality of characters in the textual content; and
providing the search query including the input text and the predicted text to the client device.

US Pat. No. 10,698,731

SYSTEMS AND METHODS FOR EXECUTING PARALLEL COMPUTATIONS FOR VIRTUAL MACHINES

PARALLELS INTERNATIONAL G...

1. A method for performing computations on a virtual machine without a special hardware computation unit, the method comprising:intercepting from a user application executing in the virtual machine a request to load accelerated code prepared for the special hardware computation unit in the virtual machine, wherein the virtual machine is executing in a first physical computer;
transmitting to a second physical computer a request to execute the accelerated code using a physical special hardware computation unit of the second physical computer;
intercepting from the user application a request to transfer results of the accelerated code execution; and
retrieving, by the virtual machine, results from the physical special hardware computation unit of the second physical computer, and loading the retrieved results into a memory of the virtual machine.

US Pat. No. 10,691,638

FILE MANAGEMENT IN VIRTUALIZED COMPUTING ENVIRONMENTS USING SPARSE FILES

Parallels International G...

1. A method comprising:executing, by a processing device of a computer system, a hypervisor to manage one or more virtual machines that each include a guest operating system, wherein the guest operating system comprises a guest file system and supports an access to the virtual machine from a client device;
receiving, by the processing device, from within the guest operating system, a request to store a first data file in the guest file system;
in response to receiving the request to store the first data file:
storing the first data file in a first storage device for a file system outside the guest file system, the first data file having a first file path in a folder structure of the file system outside the guest file system;
storing a second data file in the guest file system, wherein the second data file is a sparse file for the first data file, the second data file having a second file path in a folder structure of the guest file system, wherein the second file path shares a common portion with the first file path; and
storing metadata for the second data file, wherein the metadata directs requests to access the second data file from within the guest operating system to the first data file stored in the first storage device, the metadata comprising an identifier of the common portion for determining a location of the second data file;
receiving, from the guest operating system, a request to access the second data file;
receiving the metadata for the second data file; and
in response to receiving the request to access the second data file, providing access to the first data file in the first storage device based on the metadata for the second data file.

US Pat. No. 10,691,435

PROCESSOR REGISTER ASSIGNMENT FOR BINARY TRANSLATION

Parallels International G...

1. A method comprising:decoding a current source code fragment compatible with a source instruction set architecture (ISA);
identifying a first source register referenced by the current source code fragment;
determining that the first source register is not referenced by a register mapping table, wherein the register mapping table comprises a plurality of entries, each entry specifying a source register, a target register, and a weight value, wherein the weight value is proportional to a value of a usage path length of the target register;
identifying, among the plurality of mapping table entries, a mapping table entry comprising a highest weight value, wherein the identified mapping table entry specifies a second source register and a second target register;
replacing, in the identified mapping table entry, an identifier of the second source register with an identifier of the first source register; and
translating, using the mapping table entry, the current source code fragment into a target code fragment, wherein the target code fragment is compatible with a target ISA.