Patent Publication Number: US-9411615-B1

Title: Personalization of shared resources

Description:
BACKGROUND 
     1. Field of the Invention 
     The present invention generally relates to shared resources. More specifically, the present invention relates to personalization of shared computing resources. 
     2. Description of the Related Art 
     Currently, there are multiple ways for providing computing resources to a group of users. One such implementation involves virtual desktop infrastructure (VDI) in which an individual virtual desktop environment (e.g., individual sets of resources) is maintained for each user. The advantages of such a system include ease of deploying applications, ease of provisioning, security/privacy, and the ability to rollback for each user to a pre-existing condition (e.g., prior to corruption or damage). For example, an administrator may simply create duplicate environments for new users or restore a corrupted user device by reference to information stored for that particular user. 
     One disadvantage to such a system, however, is that heavy resource usage (and concurrent expenses) may be incurred. For example, because an entire virtual desktop environment is stored for each user, large amounts of memory may be required. This is especially the case where an enterprise may be very large, require heavy usage of computing resources by its users, and/or need to provide such computing resources to numerous users. 
     One alternative to the system described above may include use of a terminal services model, in which a set of shared resources (e.g., operating system) may be shared by a plurality of users. Each user may access such a shared environment via individual sessions. Because the operating system is shared, however, changes made by one user (e.g., installing applications) may affect other users, which may be disadvantageous in certain circumstances. Likewise, addressing corruption or damage may require restoration of the underlying computing environment to a status prior to corruption or damage, which also affects multiple users. In addition, a terminal services model lacks many of the advantages of a virtual desktop infrastructure model, described above (e.g., ability to rollback). Because a single computing environment is shared, however, such a system may be less expensive, as well as less heavy on resource usage, than the virtual desktop infrastructure model. 
     There is, therefore, a need in the art for improved systems and methods for personalization of shared resources. 
     SUMMARY OF THE CLAIMED INVENTION 
     Embodiments of the present invention include methods and systems for personalization of shared resources. Information is stored in memory regarding the shared resources to which a plurality of users are provided with access. A plurality of files are also stored in memory. Each file is specific to one of the users and may be updated to include information regarding changes to a resource as made in a session associated with the user. Subsequent access by the user to the resource may be based at least in part on the updated file. A request is received over a communication network; the request may concern a rollback for an identified user. A session associated with the identified user may then be restored based on a file associated with the identified user and including information regarding changes to the session associated with the identified user. 
     Various embodiments of the present invention include methods for personalization of shared resources. Such methods may include storing information in memory regarding shared resources to which multiple users may access via individual sessions. Methods may additionally include storing a plurality of files in memory. Each file may be specific to one of the users and may be updated to include information regarding changes to a resource as made in a session associated with the user. Methods may further include receiving a subsequent request over a communication network concerning access to the resource, which is then based on the updated file. One example may be a rollback for an identified user, which may involve executing instructions stored in memory to restore a session associated with the identified user based on the file associated with the identified user and including information regarding changes to the session associated with the identified user. 
     Embodiments of the present invention may further include systems for personalization of shared resources. Such systems may include a server and multiple user devices used to open individual user sessions to access the shared resources. The server may store information regarding the shared resources, as well as files for each user associated with the user devices. Each file may be updated to include information regarding changes made to the session associated with the user. A subsequent request by the user to access the resource may allow the user to access the resource as modified by the change indicated in the user-specific file. One embodiment allows for the server to additionally receive a request regarding a rollback for an identified user and in response, restore a session associated with the identified user based on the file associated with the identified user. 
     Other embodiments of the present invention include non-transitory computer-readable storage media on which is embodied instructions executable to perform a method for personalization of shared resources as previously set forth above. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates a network environment in which an exemplary system for personalization of shared resources may be implemented. 
         FIG. 2  is a flowchart illustrating an exemplary method for personalization of shared resources. 
     
    
    
     DETAILED DESCRIPTION 
     Personalization of shared resources may be provided. Information is stored in memory regarding the shared resources to which a plurality of users are provided with access via individual sessions. A plurality of files are also stored in memory. Each file is associated with one of the users and may be updated to include information regarding changes to a resource as made in a session by a particular user. Subsequent access by that user may be governed by information regarding changes indicated by the user-specific file. For example, a request may be received over a communication network concerning a rollback for an identified user. A session associated with the identified user may then be restored based on a file associated with the identified user and including information regarding changes to the session associated with the identified user. 
       FIG. 1  illustrates a network environment  100  in which a system for personalization of shared resources may be implemented. Network environment  100  may include a communication network  110 , one or more user devices  120 A-C, and a server  130 . Devices in network environment  100  may communicate with each other via communications network  110 . 
     Communication network  110  may be a local, proprietary network (e.g., an intranet) and/or may be a part of a larger wide-area network (e.g., the cloud). The communications network  110  may be a local area network (LAN), which may be communicatively coupled to a wide area network (WAN) such as the Internet. The Internet is a broad network of interconnected computers and servers allowing for the transmission and exchange of Internet Protocol (IP) data between users connected through a network service provider. Examples of network service providers are the public switched telephone network, a cable service provider, a provider of digital subscriber line (DSL) services, or a satellite service provider. Communications network  110  allows for communication between the various components of network environment  100 . 
     Users may use any number of different electronic user devices  120 A-C, such as general purpose computers, mobile phones, smartphones, personal digital assistants (PDAs), portable computing devices (e.g., laptop, netbook, tablets), desktop computing devices, handheld computing device, or any other type of computing device capable of communicating over communication network  110 . User devices  120  may also be configured to access data from other storage media, such as memory cards or disk drives as may be appropriate in the case of downloaded services. User device  120  may include standard hardware computing components such as network and media interfaces, non-transitory computer-readable storage (memory), and processors for executing instructions that may be stored in memory. 
     Each user device  120  may act as a host device interacting with a client device; likewise, each user device  120  may act as the client device in communication with a host. A user device  120  may further include a client application, a client 3D library, and a client display driver. Collectively, these elements may enable the user device and the user to consume computer graphics resources or services provided by server  110 . 
     Server  130  may include any type of server or other computing device as is known in the art, including standard hardware computing components such as network and media interfaces, non-transitory computer-readable storage (memory), and processors for executing instructions or accessing information that may be stored in memory. The functionalities of multiple servers may be integrated into a single server. Any of the aforementioned servers (or an integrated server) may take on certain client-side, cache, or proxy server characteristics. These characteristics may depend on the particular network placement of the server or certain configurations of the server. 
     Server  130  may associated with the same user and located in the same local network as user device  120 C. Alternatively, server  130  may be located remotely (e.g., in the cloud) and may be associated with a third party that provides services in accordance with embodiments of the present invention. In some instances, the services may be provided via software (e.g., software as a service) downloaded from server  130  to one or more user devices  120 . Updated software may similarly be downloaded as the updates become available or as needed. 
     Server application may represent an application executing (“running”) on server  130 . The functionality of server application may be visible to and accessible by client  120  via application publishing over the cloud (e.g., communication network  110 ), such as that supported by GraphOn™ GO-Global™, Microsoft Remote Desktop Services, and Citrix™ XenApp™. Examples of server application  132  may include a computer-aided design (CAD) application, such as AutoCAD® (by Autodesk, Inc. of San Rafael, Calif.) or Cadence™ Virtuoso (by Cadence Design Systems of San Jose, Calif.), a medical clinical workflow application such as Symbia.net™ (by Siemens AG of Munich, Germany), an interactive mapping application such as Google™ Earth (by Google, Inc. of Mountain View, Calif.), or a 3D game. 
       FIG. 2  illustrates a method  200  for personalization of shared resources. The method  200  of  FIG. 2  may be embodied as executable instructions in a non-transitory computer readable storage medium including but not limited to a CD, DVD, or non-volatile memory such as a hard drive. The instructions of the storage medium may be executed by a processor (or processors) to cause various hardware components of a computing device hosting or otherwise accessing the storage medium to effectuate the method. The steps identified in  FIG. 2  (and the order thereof) are exemplary and may include various alternatives, equivalents, or derivations thereof including but not limited to the order of execution of the same. 
     In method  200  of  FIG. 2 , information regarding a set of resources shared by multiple users may be stored, a file regarding changes in a session may be stored for each user, information regarding a change by a user may be received, the user-specific file may be updated, and subsequent access to the resource by the user may be based at least in part by the information in the user-specific file. An example of such access may include a rollback request regarding a particular user is received, the user may be identified, and the session associated with the identified user may be restored based on the file stored for the identified user. 
     In step  210 , information regarding a set of shared resources is stored in memory. Such resources (e.g., operating system) may be multiplexed and allows for use by multiple users, who may each access the shared resources through individual sessions. As such, the resources may be shared, and the stored information regarding the same may be accessed and manipulated by each of the multiple users. 
     In step  220 , a file is stored for each user. Such a file maintains information that is specific to the user. User-specific information may concern user preferences, user settings, and various customization options known in the art. A user-specific file may additionally include information regarding any changes made by a user to a resource. Within a session, a user may be allowed to add, delete, or otherwise change a file associated with one or more resources. For example, installing an application in an operating system may involve addition of information associated with the application, as well as deletion or alteration of information that conflicts with the application. As such, all the information regarding current status of a particular user session may be discerned from the stored information regarding the underlying shared resources and the stored file regarding the changes (e.g., made by the user) made within the individual session. In some instances, a set of multiple files may be stored for a particular user. Each file in the set may represent a snapshot of the status of the particular user session at different points in time (e.g., changes made up to yesterday, the day before, the week before, the year before). 
     In step  230 , information is received regarding a change made to a resource by a user, and in step  240 , the user-specific file is updated to include the change. The information may be received and stored to a user-specific file in real-time or periodically at predefined intervals. There may be default intervals, or an administrator may set the intervals based on the needs of a particular enterprise. 
     In step  250 , subsequent access to the resource by the user may be based at least in part on the updated file. As noted above, current status of a particular user session may be discerned from the stored information regarding the underlying shared resources and the stored file regarding the changes. The user-specific file allows for individualized sessions and manipulation of the same, all the while reaping the benefits of sharing resources. 
     As a specific example, a subsequent access request may indicate that a rollback is desired. Such a request may be made where a user device may experience corruption or damage. As such, the user device may need restoration. Alternatively, a new user device may need to be provided. Rather than just providing the underlying computing resources on the restored or new user device, it may be preferable to rollback to a status prior to corruption or damage. As such, the user may be provided with the same level of services that he or she was receiving before the user device was corrupted or damaged. In addition, the user (or administrator) may not be required to go through an extensive process of installing various applications, designating various preferences, etc. in order to achieve the same. As such, the user session may be restored in response to the request. The rollback request may identify a particular user whose session requires restoration. Where there is a set of files stored for a user, the rollback request may further specify which file (e.g., timeframe) to use for restoration. In some embodiments, a prompt may request that a particular file (or timeframe) be specified for use in the restoration. The restoration may be based on the stored information regarding the shared environment, as well as the stored file regarding specific changes associated with the session of the identified user. 
     Various embodiments of the present invention allow for server  130  to reside elsewhere in the network (e.g., in the cloud). Such may be the case where the shared environment may be cloud-based, which may be the case for various software-as-a-service (SAAS) or platform-as-a-service (PAAS) implementations. 
     The present invention may be implemented in an application that may be operable using a variety of devices. Non-transitory computer-readable storage media refer to any medium or media that participate in providing instructions to a central processing unit (CPU) for execution. Such media can take many forms, including, but not limited to, non-volatile and volatile media such as optical or magnetic disks and dynamic memory, respectively. Common forms of non-transitory computer-readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM disk, digital video disk (DVD), any other optical medium, RAM, PROM, EPROM, a FLASHEPROM, and any other memory chip or cartridge. 
     Various forms of transmission media may be involved in carrying one or more sequences of one or more instructions to a CPU for execution. A bus carries the data to system RAM, from which a CPU retrieves and executes the instructions. The instructions received by system RAM can optionally be stored on a fixed disk either before or after execution by a CPU. Various forms of storage may likewise be implemented as well as the necessary network interfaces and network topologies to implement the same. 
     While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. The descriptions are not intended to limit the scope of the invention to the particular forms set forth herein. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments. It should be understood that the above description is illustrative and not restrictive. To the contrary, the present descriptions are intended to cover such alternatives, modifications, and equivalents as may be included within the spirit and scope of the invention as defined by the appended claims and otherwise appreciated by one of ordinary skill in the art. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents.