Sign In to Follow Application
View All Documents & Correspondence

Sharing Random Access Memory Between Computing Devices

Abstract: The present subject matter describes a method and system for sharing a RAM of a first computing device with a second computing device. The method comprises receiving a request to access the RAM of a first computing device from a process executing on a second computing device. On receiving such a request, the first computing device allocates at least one location of free memory space of the RAM of the first computing device for the process and provides a pointer to the at least one location to an operating system of the second computing device. Further, the operating system of the second computing device provides the pointer to the at least one location to the process in response to a memory usage request from the process. Accordingly, the first computing device receives data associated with the process from the second computing device for storing at the least one location.

Get Free WhatsApp Updates!
Notices, Deadlines & Correspondence

Patent Information

Application #
Filing Date
16 July 2014
Publication Number
36/2016
Publication Type
INA
Invention Field
COMPUTER SCIENCE
Status
Email
iprdel@lakshmisri.com
Parent Application

Applicants

ALCATEL LUCENT
148/152 route de la Reine, 92100 Boulogne-Billancourt

Inventors

1. KARUNAMURTHY, Jagannath
Alcatel-Lucent India Limited TVH Agnitio Park, 4th Floor No.141, Rajiv Gandhi Salai, (Old Mahabalipuram Road), Kandanchavadi, Chennai 600096
2. THIAGARAJAN, Asha
Alcatel-Lucent India Limited TVH Agnitio Park, 4th Floor No.141, Rajiv Gandhi Salai, (Old Mahabalipuram Road), Kandanchavadi, Chennai 600096

Specification

FIELD OF INVENTION
[0001] The present subject matter relates to communication devices and,
particularly but not exclusively, to sharing a random access memory 10 (RAM) amongst
communication devices.
BACKGROUND
[0002] Computer memories are broadly classified into two categories: readonly
memory (ROM) and random-access memory (RAM). ROM is the semi15
conductor based memory that contains information that can only be read and not
modified by a processor of the computer implementing the ROM. ROM is generally
used to store programs for the computer or instructions that the computer needs in
order to perform various tasks.
[0003] RAM, on the other hand, can be read and written by the processor. A
20 portion of RAM is used to hold the operating system and the programs and files
relating to tasks currently being executed by the processor. A notable functional
characteristic of the RAM is that any memory location of the RAM can be randomly
accessed in equal time. That is, the time required to obtain information from one
memory location is generally the same as that required to obtain it from any other
25 memory location of the RAM.
SUMMARY
[0004] This summary is provided to introduce concepts related to sharing of a
RAM of a computing device with other computing devices. This summary is not
intended to identify essential features of the claimed subject matter nor is it intended
30 for use in determining or limiting the scope of the claimed subject matter.
3
[0005] In an embodiment of the present subject matter, a method 5 for sharing a
RAM of a first computing device with a second computing device is described. The
method comprises receiving a request to access the RAM of the first computing
device from a process executing on the second computing device. On receiving such
a request, the first computing device allocates at least one location of free memory
10 space of the RAM of the first computing device for the process and provides a
pointer to the at least one location to an operating system of the second computing
device, such that the operating system of the second computing device may provide
the pointer to the at least one location to the process, in response to a memory usage
request from the process. Further, the first computing device receives data associated
15 with the process from the second computing device and stores the data at the least
one location.
[0006] In an embodiment of the present subject matter, a computing device for
sharing a RAM of another device is described. The computing device comprises a
processor and a runtime module, coupled to the processor, to execute a process in an
20 operating system of the computing device, wherein during execution, data associated
with the process is accessed by the runtime module. A RAM access request module,
coupled to the processor, to generate a RAM access request to access a RAM of another
computing device to store the data associated with the process. Further, the computing
device comprises a RAM sharing module, coupled to the processor, to receive a pointer
25 to a location of the RAM of the another computing device, in response to the RAM
access request, and provide data associated with the process to the another computing
device to store the data associated with the process at the location of the RAM of the
another computing device, wherein the location is accessible by the runtime module for
execution of the process.
30 [0007] In yet another embodiment, non-transitory computer-readable medium
having embodied thereon a computer program for executing a method of sharing a
random access memory (RAM) is described. The computer program may be
4
executable by a processing resource to receive a request to access 5 the RAM of a first
computing device from a process executing on a second computing device. Based on
the request, the computer program may be executable to allocate at least one location
of free memory space of the RAM of the first computing device for the process and
provide a pointer to the at least one location to an operating system of the second
10 computing device, wherein the operating system of the second computing device
provides the pointer to the at least one location to the process in response to a
memory usage request from the process. The computer program may be further
executable to store data associated with the process, received from the second
computing device, at the least one location.
15 BRIEF DESCRIPTION OF THE FIGURES
[0008] The detailed description is described with reference to the
accompanying figures. In the figures, the left-most digit(s) of a reference number
identifies the figure in which the reference number first appears. The same numbers
are used throughout the figures to reference like features and components. Some
20 embodiments of system and/or methods in accordance with embodiments of the
present subject matter are now described, by way of example only, and with
reference to the accompanying figures, in which:
[0009] Figure 1 schematically illustrates a network environment for sharing a
random access memory (RAM) of a computing device, in accordance with an
25 embodiment of the present subject matter; and
[0010] Figure 2 illustrates a method for sharing a RAM of a computing
device with another computing device, in accordance with an embodiment of the
present subject matter.
[0011] Figure 3 illustrates a method for sharing a RAM of a computing
30 device with another computing device, in accordance with another embodiment of the
present subject matter.
5
DESCRIPTION 5 OF EMBODIMENTS
[0012] The amount of data that a computing device can hold depends on a
size of the memory associated with the computing device. Many computing devices
incorporate a secondary memory comprising secondary storage device to increase the
memory of the computing device. The data stored in such a secondary memory is not
10 directly accessible by a processor of the computing device and is accessible only by
input/output (I/O) operations, which is much slower than the time required to directly
access data in a volatile memory, such as a RAM of the computing device.
Furthermore, although data may reside in the secondary memory, it can be processed
only when it resides in RAM.
15 [0013] Thus, given that the RAM may be accessed directly and very quickly
by the processor, the more RAM a computing device has, the more data it can
actively work with at one time. Accordingly, it may be desirable to store all the data
required by the processor for the various functions of the computing device in the
RAM. However, storing all the data in the RAM is often restricted by the limited size
20 of the RAM in computing devices. The size of the RAM in computing devices may
be limited due to several reasons. In an example, the size of the RAM in portable
devices, such as smart phones and tablets, may be restricted due to design
considerations since there is a need to keep the size of such portable devices compact.
In another example, the size of the RAM in a computing device may be restricted due
25 to cost considerations, since RAM is a fairly expensive commodity.
[0014] In some cases, users of a computing device may upgrade the RAM of
the computing device to include more RAM in the computing device in order to
enhance the performance of the computing device. Upgrading the RAM of the
computing device allows the user to use more RAM than originally provided in the
30 hardware of the computing device. Upgrading the RAM, however, is only possible in
larger computing devices, such as servers and desktop computers, and not in portable
computing devices, such as mobile phones, smart phones, and tablets. This limits the
6
ability of users of such portable computing devices to use additional 5 RAM than that
originally included in the hardware of the portable computing device.
[0015] Further, generally users actively use only one of the several computing
devices they may possess at a given time. For example, a user having a laptop and a
smartphone may play a game on the smartphone, while his laptop may be laying idle
10 or may be performing a passive task, such as downloading a video. A passive task
may be understood as one that requires limited user intervention for its execution and
utilizes less processing capacity of the processor of the computing device on which it
may be executing. In such a situation, the RAM of the computing device performing
the passive task may often be underutilized.
15 [0016] Thus, while users desirous of using more RAM than available in a
computing device, may be spending resources in either upgrading the RAM or, in
some cases, replacing the computing device with a later version of the computing
device having more RAM, such underutilized RAM of another computing device that
the user may already have, goes unexploited.
20 [0017] According to an embodiment of the present subject matter, methods
and systems for sharing a RAM of a computing device with other computing devices
are described. In accordance with an embodiment of the present subject matter, the
methods and the systems allow a user to utilize the above-described underutilized
RAM of other computing devices of the user. The present methods and systems for
25 sharing the RAM eliminate the need to upgrade the RAM of a computing device
thereby saving the resources involved in upgrading of a RAM. Further, the present
methods and systems involve no hardware changes to be made to an existing
hardware configuration of a computing device for the computing device to use
additional RAM apart from the RAM provided in the computing device. Thus, the
30 methods and systems of the present subject matter, enable a user to use more RAM
than that available in a computing device by allowing access to the unused RAM of
another available computing device.
7
[0018] In accordance with an embodiment of the present subject 5 matter, for
sharing a RAM of a computing device, herein referred to as a first computing device,
with another computing device, herein referred to as a second computing device, the
second computing device may be coupled to the first computing device. The first and
the second devices may be coupled through a wired or wireless connection or may be
10 connected through a communication network. For sharing the RAM, a process
executing on the second computing device may send a request to access the RAM of
the first computing device to the first computing device. On receiving such a request,
the first computing device may allocate at least one location of free memory space of
the RAM for the process. Once allocated, the first computing device may provide
15 pointers to the allocated locations to an operating system of the second computing
device. The second computing device, through the pointers, uses the allocated
location to store data associated with the process.
[0019] Generally, for every process to be executed by a processor of a
computing device, data associated with the process is stored in a RAM of the
20 computing device by the processor and is execute on a runtime basis to execute the
process. According to an embodiment of the present subject matter, the data
associated with the process executing on the second computing device is stored in the
RAM of the first computing device. In operation, the operating system of the second
computing device provides the pointers to the locations of the RAM of the first
25 computing device in response to a memory usage requests from the process. A
memory usage request from the process may be understood as a request to access a
memory of the computing device executing the process to store or fetch data
associated with the process for execution of the process.
[0020] Based on the pointers received from the operating system, the process
30 interacts with the RAM of the first computing device in a manner it would have
otherwise interacted with the RAM of the second computing device. Needless to
mention, typically, the operating system of the second computing device would have
8
provided a pointer to a location of its own RAM to a process being 5 executed on the
second computing device based on which the processor of the second computing
device would store and fetch data associated with the process from the RAM to
execute the process.
[0021] Thus, in accordance with one embodiment of the present subject
10 matter, the methods and systems for RAM sharing allow a process executing on a
computing device to store its data in the RAM of another computing device. This
facilitates a computing device having a lower RAM capacity to execute a process that
require a higher RAM usage. For example, a device having a RAM of 1 Gigabyte
(GB) may execute a gaming application that may require a 1.2 GB of RAM for its
15 execution by sharing a RAM capacity of 0.2GB with another computing device to
store some of the data of the gaming application, in accordance with one embodiment
of the present subject matter.
[0022] The manner in which the systems and methods for sharing a RAM of a
computing device with another computing device shall be explained in details with
20 respect to the Figures 1, 2, and 3. While aspects of described systems and methods
for sharing the RAM, can be implemented in any number of different computing
systems, transmission environments, and/or configurations, the embodiments are
described in the context of the following exemplary system(s).
[0023] It should be noted that the description merely illustrates the principles
25 of the present subject matter. It will thus be appreciated that those skilled in the art
will be able to devise various arrangements that, although not explicitly described
herein, embody the principles of the present subject matter and are included within its
spirit and scope. Furthermore, all examples recited herein are principally intended
expressly to be only for pedagogical purposes to aid the reader in understanding the
30 principles of the invention and the concepts contributed by the inventor(s) to
furthering the art, and are to be construed as being without limitation to such
specifically recited examples and conditions. Moreover, all statements herein reciting
9
principles, aspects, and embodiments of the invention, as well as 5 specific examples
thereof, are intended to encompass equivalents thereof.
[0024] It will also be appreciated by those skilled in the art that the words
during, while, and when as used herein are not exact terms that mean an action takes
place instantly upon an initiating action but that there may be some small but
10 reasonable delay, such as a propagation delay, between the initial action and the
reaction that is initiated by the initial action. Additionally, the word “connected” and
“coupled” is used throughout for clarity of the description and can include either a
direct connection or an indirect connection.
[0025] Figure 1 illustrates a network environment 100 implementing systems
15 and methods for sharing a RAM of a computing device 102-1 with other computing
devices 102-2, 102-3…102-N. For ease of reference, a first computing device 102-1,
that allows other computing devices 102-2, 102-3…102-N to use its RAM, may be
referred to as a RAM sharing enabled device 102-1. Likewise, other computing
devices 102-2, 102-3…102-N, that use RAM of the sharing enabled device 102-1,
20 may be referred to as requesting devices 102-2, 102-3…102-N. Examples of the
RAM sharing enabled device 102-1 and requesting devices 102-2, 102-3…102-N
include various user devices and communication devices, such as a tablet, laptop or
desktop computer, or smart phones, that may connect to each other through a
communication network 104 using Wi-Fi, Wi-Max, Bluetooth or wireless hotspots,
25 for example.
[0026] Although, the RAM sharing enabled device 102-1 may allow more
than one requesting devices 102-2, 102-3…102-N to use its RAM at a time, based on
an availability of free RAM space in the RAM sharing enabled device 102-1, the
present discussion is provided with reference to only one requesting device 102-2 for
30 the ease of explanation. Also, for the purpose of explanation and clarity, exploded
view of only one RAM sharing enabled device 102-1 and requesting device 102-2
have been illustrated in Figure 1.
10
[0027] The communication network 104 communicatively 5 couples the RAM
sharing enabled device 102-1 and requesting device 102-2. The communication
network 104 may be a combination of wired and wireless networks. The
communication network 104 may be implemented through terrestrial communication,
or may be implemented through the use of routers and access points connected to
10 various Digital Subscriber Line Access Multiplexers (DSLAMs) of wired networks.
The communication network 104 can be implemented as one of the different types of
networks, such as intranet, local area network (LAN), wide area network (WAN),
Virtual Private Network (VPN), internetwork, the Internet, and such. The
communication network 104 may either be a dedicated network or a shared network,
15 which represents an association of the different types of networks that use a variety of
protocols, for example, Hypertext Transfer Protocol (HTTP), Transmission Control
Protocol/Internet Protocol (TCP/IP), Wireless Application Protocol (WAP), etc., to
communicate with each other.
[0028] In one embodiment of the present subject matter, the RAM sharing
20 enabled device 102-1 and requesting device 102-2 include one or more processor(s)
106-1 and 106-2, respectively. Respective I/O interface(s) 108-1 and 108-2, and
memories 110-1 and 110-2 of the RAM sharing enabled device 102-1 and requesting
device 102-2 are coupled to the processor(s) 106-1 and 106-2. The processor(s) 106-1
and 106-2 may be implemented as one or more microprocessors, microcomputers,
25 microcontrollers, digital signal processors, central processing units, state machines,
logic circuitries, and/or any devices that manipulate signals based on operational
instructions. Among other capabilities, the processor(s) 106-1 and 106-2 are
configured to fetch and execute computer-readable instructions stored in the
respective memories 110-1 and 110-2.
30 [0029] The functions of the various elements shown in the figures, including
any functional blocks labeled as “processor(s)”, may be provided through the use of
dedicated hardware as well as hardware capable of executing software in association
11
with appropriate software. When provided by a processor, the 5 functions may be
provided by a single dedicated processor, by a single shared processor, or by a
plurality of individual processors, some of which may be shared. Moreover, explicit
use of the term “processor” should not be construed to refer exclusively to hardware
capable of executing software, and may implicitly include, without limitation, digital
10 signal processor (DSP) hardware, network processor, application specific integrated
circuit (ASIC), field programmable gate array (FPGA), read only memory (ROM) for
storing software, random access memory (RAM), and non volatile storage. Other
hardware, conventional and/or custom, may also be included.
[0030] The I/O interface(s) 108-1 and 108-2 may include a variety of
15 software and hardware interfaces, for example, interfaces for peripheral device(s),
such as data input output devices, referred to as I/O devices, storage devices, network
devices, etc. For example, the RAM sharing enabled device 102-1 and requesting
device 102-2 may interact with each other through their respective I/O interface(s)
108-1 and 108-2. The I/O device(s) may include Universal Serial Bus (USB) ports,
20 Ethernet ports, host bus adaptors, etc., and their corresponding device drivers. The
I/O interface(s) 108-1 and 108-2 facilitate the communication of the RAM sharing
enabled device 102-1 and requesting device 102-2, respectively, with various
networks.
[0031] The memories 110-1 and 110-2 may include any computer-readable
25 medium known in the art including, for example, volatile memory, such as static
random access memory (SRAM) and dynamic random access memory (DRAM),
and/or non-volatile memory, such as read only memory (ROM), erasable
programmable ROM, flash memories, hard disks, optical disks, and magnetic tapes.
[0032] The RAM sharing enabled device 102-1 and requesting device 102-2
30 may also include various modules 112-1 and 112-2, respectively. The modules 112-1
and 112-2, amongst other things, include routines, programs, objects, components,
data structures, etc., which perform particular tasks or implement particular abstract
12
data types. The modules 112-1 and 112-2 may also be implemented 5 as, signal
processor(s), state machine(s), logic circuitries, and/or any other device or component
that manipulate signals based on operational instructions.
[0033] Further, the modules 112-1 and 112-2 can be implemented in
hardware, instructions executed by a processing unit, or by a combination thereof.
10 The processing unit can comprise a computer, a processor, such as the processors
106-1 and 106-2, a state machine, a logic array or any other suitable devices capable
of processing instructions. The processing unit can be a general-purpose processor
which executes instructions to cause the general-purpose processor to perform the
required tasks or, the processing unit can be dedicated to perform the required
15 functions.
[0034] In another aspect of the present subject matter, the modules 112-1 and
112-2 may be machine-readable instructions (software) which, when executed by a
processor/processing unit, perform any of the described functionalities. The machinereadable
instructions may be stored on an electronic memory device, hard disk,
20 optical disk or other machine-readable storage medium or non-transitory medium. In
one implementation, the machine-readable instructions can be also be downloaded to
the storage medium via a network connection.
[0035] The module(s) 112-1 of the RAM sharing enabled device 102-1
further include a runtime module 114-1, a network quality determination module
25 116-1, a pairing and authentication module 118-1, a RAM allocation module 120 and
other modules 122-1. The other module(s) 122-1 may include programs or coded
instructions that supplement applications and functions of the RAM sharing enabled
device 102-1.
[0036] The RAM sharing enabled device 102-1 may further include data 124-
30 1, which amongst other things, serves as a repository for storing data processed,
received, associated, and generated by one or more of the module(s) 112-1. The data
13
124-1 includes, for example, process data 126-1, network 5 parameters 128-1,
authentication data 130, and other data 132-1. The other data 132-1 includes data
generated as a result of the execution of one or more modules in the other module(s)
122-1.
[0037] In a similar manner, the requesting device 102-2 may also include
10 various modules 112-2 comprising a runtime module 114-2, a network quality
determination module 116-2, and a pairing and authentication module 118-2 that may
have similar implementation and functionality as that of the runtime module 114-1,
the network quality determination module 116-1, and the pairing and authentication
module 118-1, respectively, of the RAM sharing enabled device 102-1. The
15 requesting device 102-2 may further include a RAM access request module 134, a
RAM sharing module 136 and other modules 122-2. The other module(s) 122-2 may
include programs or coded instructions that supplement applications and functions of
the requesting device 102-2.
[0038] The requesting device 102-2 may also include data 124-2, which
20 amongst other things, serves as a repository for storing data processed, received,
associated, and generated by one or more of the module(s) 112-2. Alike the data 124-
1 of the RAM sharing enabled device 102-1, the data 124-1 includes, for example,
process data 126-2, and network parameters 128-2. Additionally, data 124-2 may also
include pointer data 138 and other data 132-2. The other data 132-2 includes data
25 generated as a result of the execution of one or more modules in the other module(s)
122-2.
[0039] In accordance with one embodiment of the present subject matter, the
runtime modules 114-1 and 114-2 of the RAM sharing enabled device 102-1 and the
requesting device 102-2, respectively, execute various process in the respective
30 devices. The execution of such processes utilize RAM of the respective devices. In
addition, some of the RAM of the respective devices may also be used to execute
operating system files that are required to perform essential functions of the
14
respective devices, such as enabling communication between 5 the RAM sharing
enabled device 102-1 and the requesting device 102-2 through the communication
network 104, such as a wireless network in a home of a user that may couple the
RAM sharing enabled device 102-1 and the requesting device 102-2 together.
[0040] In one embodiment of the present subject matter, when the processes
10 executing on requesting device 102-2 exceed the available RAM capacity of the
requesting device 102-2, the requesting device 102-2 may request the RAM sharing
enabled device 102-1 to donate some of its available RAM to the process executing
on the requesting device 102-2. Such a process of RAM sharing may be explained
herein with the help of an illustrative example considering the RAM sharing enabled
15 device 102-1 and the requesting device 102-2 to have a total RAM capacity of 1GB
each.
[0041] In the example, the RAM sharing enabled device 102-1 may be
executing two processes, for example, installing updates to an application residing in
the RAM sharing enabled device 102-1 and downloading e-mails. Similarly, the
20 requesting device 102-2 may be executing a process, for example, downloading and
playing an interactive game for the user. The data associated with the various
processes executing in the RAM sharing enabled device 102-1 and the requesting
device 102-2, may be saved in the RAM of the respective devices as process data
126-1 and 126-2, respectively.
25 [0042] Accordingly, in the present example, the RAM sharing enabled device
102-1 may use 300MB of the RAM for executing operating system files, while the
other two processes may consume 200 MB of the remaining RAM capacity.
Similarly, the requesting device 102-2 may consume 300MB of its RAM for
executing operating system files and may dedicate the remaining 700MB for the
30 game. In a situation where the RAM requirement of the game is greater than 700MB,
the user may observe the game to be rendered sluggishly on the requesting device
102-2. To use more RAM to execute the game on the requesting device 102-2 more
15
efficiently, the user may request the RAM sharing enabled device 5 102-1 donate some
of its available RAM for executing the game. Accordingly, in the present example,
the RAM sharing enabled device 102-1 may share up to 500MB of its available RAM
with the requesting device 102-2 to execute the game.
[0043] In operation, for a process executing on the requesting device 102-2,
10 to use the RAM of the RAM sharing enabled device 102-1, the RAM access request
module 134 of the requesting device 102-2 may generate a RAM access request to
access the RAM to store the data associated with the process executing on the
requesting device 102-2. In accordance with one implementation of the present
subject matter, the RAM access request module 134 of the requesting device 102-2
15 generates the RAM access request based on a quality of connectivity between the
RAM sharing enabled device 102-1 and the requesting device 102-2. In an example,
in case the quality of connectivity is such that the speed or bandwidth of the
communication network 104 between the two devices is below a predefined
threshold, the RAM access request is not generated since initiation of a RAM sharing
20 process between the two devices in poor connectivity may result in slow execution of
the process and further result in poor user experience.
[0044] In an implementation, the requesting device 102-2 comprises a
network quality determination module 116-1 to determine quality-of-service parameters
of the communication network 104 connecting the two devices to ascertain the quality of
25 connectivity between them. The network quality determination module 116-1 saves
network parameters 128-2 indicative of the quality of connectivity in the data 124-2 for
the RAM access request module 134 to generate the RAM access request based on
the quality of connectivity.
[0045] A RAM access request generated by the RAM access request module
30 134 of the requesting device 102-2 is communicated to the RAM sharing enabled
device 102-1. For the purposes of enabling communication between the RAM
sharing enabled device 102-1 and the requesting device 102-2 the pairing and
16
authentication modules 118-1 and 118-2 implemented in the respective 5 devices may
perform a pairing function. In one example, the pairing function may be alike one
generally performed while pairing two devices to communicate over Bluetooth. Also,
the pairing and authentication modules 118-1 of the RAM sharing enabled device
102-1 may request the authentication credentials, such as a password from the pairing
10 and authentication modules 118-2 of the requesting device 102-2. If the password
provided by the pairing and authentication modules 118-2 of the requesting device
102-2 matches a pre-stored password, associated with the requesting device 102-2,
saved in authentication data 130 of the RAM sharing enabled device 102-1, the
requesting device 102-2 may be authenticated. Such an authentication process
15 prevents of sharing of the RAM of the RAM sharing enabled device by
unauthenticated devices.
[0046] In an embodiment, based on the pairing and authentication, once the
RAM access request generated by the RAM access request module 134 of the
requesting device 102-2 is communicated to the RAM sharing enabled device 102-1,
20 the RAM sharing enabled device 102-1 may also determine the quality of
connectivity. For the purpose, the network quality determination module 116-2 of the
RAM sharing enabled device 102-1 may use network parameters 128-1 indicative of
the quality of connectivity. Upon the connectivity being determined to be
satisfactory, a RAM allocation module 120 of the RAM sharing enabled device 102-1
25 responds to the RAM access request.
[0047] In one embodiment of the present subject matter, in response to the
RAM access request, the RAM allocation module 120 allocates at least one location
of free memory space of the RAM of the RAM sharing enabled device 102-1 for the
process executing on the requesting device 102-2. The at least one location comprises
30 consecutive or non-consecutive memory locations in same or different portions of the
RAM of the RAM sharing enabled device 102-1.
17
[0048] To this end, the RAM allocation module 120 5 may determine the
availability of the free RAM in the RAM sharing enabled device 102-1. Further, in an
implementation, the RAM allocation module 120 may also determine whether the
free RAM is of a size greater than a predefined threshold size. In an implementation,
the predefined size may be user configurable. In an example, the RAM allocation
10 module 120 may not allocate any location for the process in case the free RAM in the
RAM sharing enabled device 102-1 is less than 100MB. Accordingly, in cases where
the availability of free RAM in the RAM sharing enabled device 102-1 is low, it may
be restricted from sharing its RAM and the free RAM may be kept reserved for
addition RAM requirements that may arise from the process already executing on the
15 RAM sharing enabled device 102-1. In cases where the availability of free RAM in
the RAM sharing enabled device 102-1 is greater than the predefined threshold size,
the RAM allocation module 120 may allocate the at least one location for the process
executing on the requesting device 102-2.
[0049] The location of free memory space of the RAM of the RAM sharing
20 enabled device 102-1, allocated to the process executing on the requesting device
102-2, is indicated to the RAM sharing module 136 of the requesting device 102-2.
The RAM sharing module 136 is provided with pointers to the allocated location. As
will be apparent to persons skilled in the art, that pointers to the allocated location
may comprise a pointer to each memory block of the consecutive or non-consecutive
25 memory locations in same or different portions of the RAM of the RAM sharing
enabled device 102-1 that may have been allocated for the process. In one
implementation of the present subject matter, the RAM sharing module 136 may
store the pointer(s) in the pointer data 138 of the requesting device 102-2.
[0050] Based on the pointers provided to the RAM sharing module 136 of
30 requesting device 102-2, the RAM sharing module 136 provides data associated with
the process executing on the runtime module 122-2 of the requesting device 102-2 to
the RAM sharing enabled device 102-1 for storing the data in its RAM. In one
18
embodiment, the RAM sharing module 136 provides the data associated 5 with the
process to the runtime module 122-1 of the RAM sharing enabled device 102-1 to
enable the processor 106-1 of the RAM sharing enabled device 102-1 to store the
data in the process data 126-1.
[0051] Generally, when the requesting device 102-2 may not be sharing the
10 RAM of the RAM sharing enabled device 102-1, execution of the process in the
requesting device 102-2 involves storing and fetching data associated with the
process from process data 126-2 in the RAM of the requesting device 102-2 by the
processor 106-2. In such cases, the runtime module 122-2 of the requesting device
102-2 provides pointers to locations of RAM of the requesting device 102-2 to the
15 processor 106-2 of the requesting device 102-2. However, in the present case, once
the pointer to the allocated location is provided to the RAM sharing module 136 of
the requesting device 102-2, the processor 106-2 of the requesting device 102-2 is
indicated the allocated location in the RAM of the RAM sharing enabled device 102-
1 from where it may fetch and store the data associated with the process for executing
20 the process. In one implementation, the processor 106-2 of the requesting device 102-
2 interacts with the runtime module 122-1 of the RAM sharing enabled device 102-1
to access the process data 126-1 in the RAM of the RAM sharing enabled device
102-1.
[0052] As mentioned previously, the RAM allocation module 120 allocates
25 free memory space of the RAM of the RAM sharing enabled device 102-1 for the
process executing on the requesting device 102-2 based on the availability of free
memory space in the RAM of the RAM sharing enabled device 102-1. In one
implementation, if the availability of free memory space in the RAM changes, the
allocation of RAM to the process executing on the requesting device 102-2 may
30 change accordingly. For example, in case a new process is initiated on the RAM
sharing enabled device 102-1, and the RAM requirement of the RAM sharing
enabled device 102-1 increases; the previous allocation of RAM made to the process
19
executing on the requesting device 102-2 may be deallocated to 5 give priority of
processes executing on the RAM sharing enabled device 102-1.
[0053] For the sake of simplicity, the explanation herein has been restricted to
a single process of a requesting device 102-2 to be sharing the RAM of a RAM
sharing enabled device 102-1. However, one skilled in the art will appreciate that
10 more than one process of the same of different requesting devices 102-2 may share
the RAM sharing enabled device 102-1. Likewise, it is also possible that for a given
process executing on a requesting device 102-2, RAM of more than one RAM
sharing enabled devices 102-1may be utilized.
[0054] In some embodiments where one or more processes of the same of
15 different requesting devices 102-2 share the RAM of the RAM sharing enabled
device 102-1, a process identifier may be assigned to each of the process. The process
identifier may be any identifier that may be used to distinctly identify one process
from the other. Further, in such embodiments, the different processes may be
allocated different portions of free memory space of the RAM of the RAM sharing
20 enabled device 102-1. Each such portion associated with a different process may be
demarcated based on the process identifier. Thus, the free RAM of the RAM sharing
enabled device 102-1 may be utilized by one or more processes executing on other
devices. Such a method of RAM sharing allows user to run processes with higher
RAM requirement on devices having lower RAM capacity without any changes in
25 the hardware of the RAM sharing enabled device 102-1 or the requesting device 102-
2.
[0055] Figure 2 and Figure 3 illustrate method 200 and method 300,
respectively, for sharing a RAM of a computing device with another computing
device, in accordance with another embodiment of the present subject matter.
30 [0056] The order in which the methods are described is not intended to be
construed as a limitation, and any number of the described method blocks can be
20
combined in any order to implement the methods, or an alternative 5 method.
Additionally, individual blocks may be deleted from the methods without departing
from the spirit and scope of the subject matter described herein. Furthermore, the
methods can be implemented in any suitable hardware, software, firmware, or
combination thereof.
10 [0057] The method(s) may be described in the general context of computer
executable instructions. Generally, computer executable instructions can include
routines, programs, objects, components, data structures, procedures, modules,
functions, etc., that perform particular functions or implement particular abstract data
types. The method may also be practiced in a distributed computing environment
15 where functions are performed by remote processing devices that are linked through a
communications network. In a distributed computing environment, computer
executable instructions may be located in both local and remote computer storage
media, including memory storage devices.
[0058] A person skilled in the art will readily recognize that steps of the
20 method can be performed by programmed computers. Herein, some embodiments are
also intended to cover program storage devices, for example, digital data storage
media, which are machine or computer readable and encode machine-executable or
computer-executable programs of instructions, wherein said instructions perform
some or all of the steps of the described method. The program storage devices may
25 be, for example, digital memories, magnetic storage media, such as a magnetic disks
and magnetic tapes, hard drives, or optically readable digital data storage media. The
embodiments are also intended to cover all the communication networks and
communication devices configured to perform said steps of the exemplary method.
[0059] Although the methods 200 method 300 can be implemented in any
30 computing devices or communication devices, in the following description, the
method 200 is described in context of a first computing device whose RAM is shared
by another computing devices; while method 300 is described in context of a second
21
computing device that uses RAM of the first computing device. In 5 one example, the
first computing device may have implementation and functionality same as that of the
RAM sharing enabled device 102-1 that has been described earlier. Similarly, the
second computing device may have implementation and functionality as that of the
requesting device 102-2 which is also described earlier.
10 [0060] As explained previously, in accordance with one embodiment of the
present subject matter, the initiation of the method of sharing RAM between two or
more computing devices is based on a quality of the connectivity between the
computing devices. Accordingly, referring to figure 200, at block 202, the second
computing device may determine the quality of the connectivity between the first and
15 the second computing devices. Based on the determined quality of the connectivity, a
process executing on the second computing device may further generate a RAM
access request to access a RAM of the first computing device to store the data associated
with the process. At block 206, the second computing device may receive a pointer to a
location of the RAM of the first computing device, in response to the RAM access
20 request.
[0061] In accordance with one embodiment of the present subject matter, upon
receiving the pointers, the second computing device uses the pointers to store data
associated with the process executing on the second computing device in the
corresponding location in the RAM of the first computing device. Accordingly, at block
25 208, the data associated with the process executing on the second computing device is
provided to the first computing device for storing in the RAM of the first computing
device. The location of the RAM of the first computing device that stores the data
associated with the process is accessible by the second computing device for executing
the process in the second computing device.
30 [0062] Referring to figure 300, at block 302, a request to access a RAM of a
first computing device may be received from a process executing on the second
computing device. For example, the first computing device may receive the above22
mentioned RAM access request generated by the second computing 5 device. Upon
receiving such a request, at block 304, the first computing device verifies the availability
of free memory space in its RAM to be of a size greater than a predefined threshold size.
As described earlier in the description of figure 1, in one example implementation, the
RAM sharing process may not be initiated if the size of the free memory space in the
10 RAM of the first computing device is small. This measures ensure that a user's
experience of accessing RAM of a computing device to execute a process on another
computing device is seamless and effective.
[0063] Further, once if it is verified that the size of the available RAM of the first
computing device is more than the predefined threshold size, in accordance with one
15 embodiment, at block 306, at least one location of the free memory space of the RAM of
the first computing device is allocated for the process. At block 308, a pointer to the at
least one location is provided to an operating system of the second computing device.
Further, when a memory usage request arises from the process during its execution on
the second computing device, the operating system of the second computing device
20 provides the pointer to the at least one location of the RAM of the first computing device
to the process in response to a memory usage request.
[0064] Since the process receives pointers to locations of the RAM of the first
computing device, instead of locations of the RAM of the second computing device, in
response to the memory usage requests it may generate, the process is directed to store
25 data in the RAM of the first computing device. Accordingly, at block 310, the first
computing device receives data associated with the process from the second computing
device and stores the same at the allocated locations of the RAM of the first computing
device. The allocated locations of the RAM of the first computing device are accessed by
the processor of the second computing device to fetch and store data associated with the
30 process to execute the process in the second computing device.
[0065] Thus, in the present subject matter, users desirous of using more RAM
than available in a computing device for executing various processes are enabled to
23
do so without spending resources in upgrading the RAM of the computing 5 device or
without carrying out any hardware changes in the computing device. The methods
and system of RAM sharing described in the present subject matter provide for
utilization of underutilized RAM of other computing devices that may already be
available with a user.
10 [0066] Although implementations for sharing a RAM of a computing device
with another computing device have been described in a language specific to
structural features and/or methods, it is to be understood that the appended claims are
not necessarily limited to the specific features or methods described. Rather, the
specific features and methods are disclosed as exemplary implementations for sharing
15 RAM in computing devices.

I/We claim:
1. A method of sharing random access memory (RAM) between computing
devices, the method comprising:
receiving a request to access a RAM of a first computing device from a
process executing on a second computing device;
allocating at least one location of free memory space of the RAM of the first
computing device for the process;
providing a pointer to the at least one location to an operating system of the
second computing device, wherein the operating system of the second computing
device provides the pointer to the at least one location to the process in response to a
memory usage request from the process; and
storing data associated with the process, received from the second
computing device, at the least one location.
2. The method as claimed in claim 1, wherein the allocating comprises
verifying the free memory space of the RAM of the first computing device to be of
a size greater than a predefined threshold size.
3. The method as claimed in claim 2, wherein the predefined threshold size is
user configurable.
4. The method as claimed in claim 1 further comprising deallocating the at
least one location based on a change in availability of the free memory space of the
RAM the first computing device.
5. The method as claimed in claim 1, wherein the allocating further comprises:
25
assigning a process identifier to the process; and
associating the at least one location with the process identifier to demarcate
the at least one location of the RAM of the first computing device allocated to the
process.
6. The method as claimed in claim 1, further comprising determining qualityof-
service parameters of a network connecting the first and the second computing
device to ascertain a quality of connectivity between the first and the second
computing device, wherein the allocating is based on the quality.
7. The method as claimed in claim 1, wherein the allocating comprises
requesting authentication credentials from the second computing device.
8. A computing device comprising:
a processor;
a runtime module, coupled to the processor, to execute a process in an operating
system of the computing device, wherein during execution, data associated with the process
is accessed by the runtime module;
a RAM access request module, coupled to the processor, to generate a RAM access
request to access a RAM of another computing device to store the data associated with the
process; and
a RAM sharing module, coupled to the processor, to
receive a pointer to a location of the RAM of the another computing device, in response to
the RAM access request, and
provide data associated with the process to the another computing device to store at
the location of the RAM of the another computing device, wherein the location is accessible
by the runtime module for execution of the process.
26
9. The computing device as claimed in claim 8, further comprising a network quality
determination module to determine quality-of-service parameters of a network connecting the
computing device to the another computing device to ascertain a quality of connectivity
between the computing device and the another computing device, wherein the RAM access
request module generates the RAM access request based on the quality.
10. The computing device as claimed in claim 8, further comprising a pairing and
authentication module coupled to the processor, to communicatively couple the computing
device to the another computing device to provide the RAM access request to the another
computing device.
11. A non-transitory computer-readable medium having embodied thereon a computer
program for executing a method of sharing a random access memory (RAM), executable by
a processing resource to:
receive a request to access the RAM of a first computing device from a process
executing on a second computing device;
allocate at least one location of free memory space of the RAM of the first computing
device for the process;
provide a pointer to the at least one location to an operating system of the second
computing device, wherein the operating system of the second computing device provides
the pointer to the at least one location to the process in response to a memory usage request
from the process; and
store data associated with the process, received from the second computing device, at
the least one location.
12. The non-transitory computer-readable medium as claimed in claim 11, comprising
instructions executable to verify the free memory space of the RAM of the first computing
27
device to be of a size greater than a predefined threshold size.

Documents

Orders

Section Controller Decision Date

Application Documents

# Name Date
1 2006-DEL-2014-Correspondence to notify the Controller [15-09-2022(online)].pdf 2022-09-15
1 SPECIFICATION.pdf 2014-07-23
2 FORM 5.pdf 2014-07-23
2 2006-DEL-2014-Correspondence to notify the Controller [08-09-2022(online)].pdf 2022-09-08
3 FORM 3.pdf 2014-07-23
3 2006-DEL-2014-US(14)-HearingNotice-(HearingDate-23-09-2022).pdf 2022-09-07
4 2006-DEL-2014-CLAIMS [19-05-2020(online)].pdf 2020-05-19
4 FIGURES.pdf 2014-07-23
5 ALCATEL LUCENT_GPOA _FRANCE.pdf 2014-07-23
5 2006-DEL-2014-COMPLETE SPECIFICATION [19-05-2020(online)].pdf 2020-05-19
6 2006-DEL-2014-FER_SER_REPLY [19-05-2020(online)].pdf 2020-05-19
6 2006-del-2014-Correspondence-Others-(11-08-2014).pdf 2014-08-11
7 2006-DEL-2014-FER.pdf 2019-11-21
8 2006-DEL-2014-FER_SER_REPLY [19-05-2020(online)].pdf 2020-05-19
8 2006-del-2014-Correspondence-Others-(11-08-2014).pdf 2014-08-11
9 ALCATEL LUCENT_GPOA _FRANCE.pdf 2014-07-23
9 2006-DEL-2014-COMPLETE SPECIFICATION [19-05-2020(online)].pdf 2020-05-19
10 2006-DEL-2014-CLAIMS [19-05-2020(online)].pdf 2020-05-19
10 FIGURES.pdf 2014-07-23
11 2006-DEL-2014-US(14)-HearingNotice-(HearingDate-23-09-2022).pdf 2022-09-07
11 FORM 3.pdf 2014-07-23
12 FORM 5.pdf 2014-07-23
12 2006-DEL-2014-Correspondence to notify the Controller [08-09-2022(online)].pdf 2022-09-08
13 SPECIFICATION.pdf 2014-07-23
13 2006-DEL-2014-Correspondence to notify the Controller [15-09-2022(online)].pdf 2022-09-15

Search Strategy

1 search_13-11-2019.pdf