U.S. patent application number 14/528748 was filed with the patent office on 2015-02-19 for wireless sharing of device resources allowing device storage needs to be wirelessly offloaded to other devices.
The applicant listed for this patent is Seven Networks, Inc.. Invention is credited to Michael Luna.
Application Number | 20150052215 14/528748 |
Document ID | / |
Family ID | 47022122 |
Filed Date | 2015-02-19 |
United States Patent
Application |
20150052215 |
Kind Code |
A1 |
Luna; Michael |
February 19, 2015 |
WIRELESS SHARING OF DEVICE RESOURCES ALLOWING DEVICE STORAGE NEEDS
TO BE WIRELESSLY OFFLOADED TO OTHER DEVICES
Abstract
Systems and methods for wireless sharing of device resources How
device storage needs to be wirelessly offloaded to other devices.
In a method, which may be implemented on a system, storage is
shared among devices by offloading storage needs of a first device
to a second device among two devices coupled in a wireless network.
In offloading the storage needs, data for use at the first device
may be transmitted over the wireless network to be stored at the
second device.
Inventors: |
Luna; Michael; (San Carlos,
CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Seven Networks, Inc. |
San Carlos |
CA |
US |
|
|
Family ID: |
47022122 |
Appl. No.: |
14/528748 |
Filed: |
October 30, 2014 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13605475 |
Sep 6, 2012 |
|
|
|
14528748 |
|
|
|
|
13451327 |
Apr 19, 2012 |
|
|
|
13605475 |
|
|
|
|
61476976 |
Apr 19, 2011 |
|
|
|
Current U.S.
Class: |
709/213 |
Current CPC
Class: |
H04W 4/80 20180201; H04W
72/0446 20130101; G06F 9/5016 20130101; G06F 3/0605 20130101; H04L
67/2842 20130101; G06F 3/067 20130101; H04L 67/289 20130101; H04L
67/1097 20130101; H04L 67/04 20130101; H04L 67/2833 20130101; G06F
2209/509 20130101; H04L 67/288 20130101; G06F 3/0644 20130101; H04L
67/22 20130101; H04L 67/10 20130101; H04W 74/06 20130101; H04W 8/24
20130101 |
Class at
Publication: |
709/213 |
International
Class: |
H04W 8/24 20060101
H04W008/24; H04L 29/08 20060101 H04L029/08 |
Claims
1. A method of storing data in aggregate memory storage among
multiple devices, the method comprising: generating a state profile
of a first device at a location, the first device having a memory
storage, the state profile of the first device indicating at least
the location of the first device and a status of the memory storage
of the first device; generating a state profile of a second device
at a location, the second device having a memory storage, the state
profile of the second device indicating at least the location of
the second device and a status of the memory storage of the second
device; allocating, at least according to the state profile of the
first device, a portion of the memory storage of the first device
as a first portion of an aggregate memory storage; allocating, at
least according to the state profile of the second device, a
portion of the memory storage of the second device as a second
portion of the aggregate memory storage; storing first data in the
portion of the memory storage of the first device allocated as the
first portion of the aggregate memory storage; storing second data
in the portion of the memory storage of the second device allocated
as the second portion of the aggregate memory storage; and
accessing by the first device the second data stored in the memory
storage of the second device.
2. The method of claim 1, wherein said allocating a portion of the
memory storage of the second device as a second portion of an
aggregate memory storage is performed by the first device.
3. The method of claim 2, wherein accessing the second data by the
first device comprises wirelessly transmitting by the second device
at least a portion of the second data from the second device
directly to the first device.
4. The method of claim 3, wherein said allocating a portion of the
memory storage of the second device as a second portion of an
aggregate memory storage is performed when the location of the
second device is within a defined proximity of the location of the
first device.
5. The method of claim 2, wherein: the state profile of the first
device indicates whether the first device is running a particular
application; the state profile of the second device indicates
whether the second device is running the particular application;
and said allocating a portion of the memory storage of the second
device as a second portion of an aggregate memory storage is
performed when the first device and second device are running the
particular application.
6. The method of claim 2, wherein generating the state profile of
the first device and generating the state profile of the second
device are performed by the first device.
7. The method of claim 6, wherein allocating a portion of the
memory storage of the second device as a second portion of the
aggregate memory storage is performed when available memory of the
memory storage of the first device is insufficient to store both
the first data and the second data.
8. The method of claim 1, wherein accessing the second data by the
first device comprises: transmitting by the second device at least
a portion of the second data from the second device to a third
device; and transmitting the portion of the second data from the
third device to the first device.
9. The method of claim 8, wherein said allocating a portion of the
memory storage of the second device as a second portion of an
aggregate memory storage is performed by the third device.
10. The method of claim 1, wherein: storing the first data in the
portion of the memory storage of the first device comprises
transmitting the first data to the first device via a cellular
telephony network; storing the second data in the portion of the
memory storage of the second device comprises transmitting the
second data to the second device via at least the cellular
telephony network; and accessing by the first device the second
data stored in the memory storage of the second device comprises
transmitting at least a portion of the second data from the second
device to the first device.
11. The method of claim 10, wherein transmitting at least a portion
of the second data from the second device to the first device
comprises transmitting at least the portion of the second data from
the second device directly to the first device via a near field
wireless connection.
12. The method of claim 10, wherein transmitting at least a portion
of the second data from the second device to the first device
comprises transmitting at least the portion of the second data from
the second device to the first device via a Will network.
13. The method of claim 10, wherein transmitting at least a portion
of the second data from the second device to the first device
comprises transmitting at least the portion of the second data from
the second device to the first device via a Bluetooth
connection.
14. A system that stores data aggregate memory storage among
multiple devices, the system comprising: a first device, having a
memory storage, at a location; a second device, having a memory
storage, at a location; one or more state profile generators that
generate a state profile of the first device and a state profile of
the second device, the state profile of the first device indicating
at least the location of the first device and a status of the
memory storage of the first device, the state profile of the second
device indicating at least the location of the second device and a
status of the memory storage of the second device; a resource
sharing allocator that allocates, at least according to the state
profile of the first device, a portion of the memory storage of the
first device as a first portion of an aggregate memory storage, and
allocates, at least according to the state profile of the second
device, a portion of the memory storage of the second device as a
second portion of the aggregate memory storage; wherein the first
device stores first data in the portion of the memory storage of
the first device allocated as the first portion of the aggregate
memory storage; wherein the second device stores second data in the
portion of the memory storage of the second device allocated as the
second portion of the aggregate memory storage; and wherein the
first device accesses the second data stored in the memory storage
of the second device.
15. The system of claim 14, wherein the first device comprises the
resource sharing allocator,
16. The system of claim 14, the second device transmits at least a
portion of the second data from the second device directly to the
first device.
17. The system of claim 14, wherein the resource sharing allocator
allocates the portion of the memory storage of the second device as
the second portion of the aggregate memory storage when the
location of the second device is within a defined proximity of the
location of the first device.
18. The method of claim 14, wherein the resource sharing allocator
allocates the portion of the memory storage of the second device as
the second portion of the aggregate memory storage when available
memory of the memory storage of the first device is insufficient to
store both the first data and the second data.
19. The system of claim 14, wherein: the first device receives the
first data via a cellular telephony network; the second device
receives the second data via at least the cellular telephony
network; and the second device transmits at least a portion of the
second data to the first device.
20. The system of claim 19, wherein the second device transmits the
portion of the second data to the first device via at least one of
a near field wireless connection, a Wifi network, or a Bluetooth
connection.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 13/605,475 entitled "WIRELESS SHARING OF
DEVICE RESOURCES ALLOWING DEVICE STORAGE NEEDS TO BE WIRELESSLY
OFFLOADED TO OTHER DEVICES," which was filed Sep. 6, 20112. The
13/605,475 application is a divisional application of U.S. patent
application Ser. No. 13/451,327 entitled "SHARED RESOURCE AND
VIRTUAL RESOURCE MANAGEMENT !IN A NETWORKED ENVIRONMENT," which was
filed Apr. 19, 2012. The 13/451,327 application, now abandoned,
claimed the benefit of U.S. Provisional Patent Application No.
61476,976 entitled "VIRTUAL MEMORY, SHARED MEMORY MANAGEMENT AND
SOCIAL CACHING BASED ON GEO-LOCATION IN A NETWORKED ENVIRONMENT,"
which was filed on Apr. 19, 2011. Accordingly, this application
claims a priority of Apr. 19, 2011 by way of continuity through the
above referenced applications, the contents of which are all
incorporated by reference herein.
BACKGROUND
[0002] With the increase of computing power and enhancement in
functionality, every day electronic devices have expanded in
features to take upon multiple functions, beyond their traditional
uses. For example, our cellular phones have become our digital
cameras, our Smartphones have become our video recorders, in some
cases replaced or used in lieu of laptop computers, tablets have
now replaced some uses of laptops, and our mobile devices such as
laptops or mobile phones now drive or are used to control home
video/audio systems.
[0003] With this expansion in computing power and device capability
is the need for additional storage (e.g., memory, USB or hard disk,
etc.). Increasingly more types of devices handle, process, and/or
are used for accessing, capturing, or viewing media content the
storage needs for these devices have exploded and traditional
storage mechanisms have not kept up with data needs to ensure or
support the user experience enhancements that should accompany the
growth in computing power and device functionality expansions.
BRIEF DESCRIPTION OF THE DRAWINGS
[0004] FIG. 1 depicts an example diagram showing resource sharing
and/or virtual resource management among any electronic device in a
networked environment.
[0005] FIGS. 2A-B depict example diagrams showing how virtual
memory sharing and database management enables peer-to-peer
distribution of information in a network among any type of
electronic devices and among mobile devices such as mobile
phones/smart phones or tablet devices.
[0006] FIG. 3 depicts a block diagram illustrating an example of
components in a host server which is able to manage resource
sharing and generation of virtual resources from devices in a
networked environment.
[0007] FIG. 4 depicts a table showing an example state profile for
a device having location-based state profiles for resource sharing
and pooling with other devices.
[0008] FIGS. 5A-B depict a table showing virtual resource
allocation to a given device based on device state,
[0009] FIG. 6 depicts an example flow chart for storage sharing
among two devices.
[0010] FIG. 7 depicts an example flow chart for resource sharing
among devices in a network.
[0011] FIG. 8 depicts an example flow chart for managing sharing of
physical memory among devices.
[0012] FIG. 9 shows a diagrammatic representation of a machine in
the example form of a computer system within which a set of
instructions, for causing the machine to perform any one or more of
the methodologies discussed herein, may be executed.
DETAILED DESCRIPTION
[0013] The following description and drawings are illustrative and
are not to be construed as limiting. Numerous specific details are
described to provide a thorough understanding of the disclosure.
However, in certain instances, well-known or conventional details
are not described in order to avoid obscuring the description.
References to one or an embodiment in the present disclosure can
be, but not necessarily are, references to the same embodiment;
and, such references mean at least one of the embodiments.
[0014] Reference in this specification to "one embodiment" or "an
embodiment" means that a particular feature, structure, or
characteristic described in connection with the embodiment is
included in at least one embodiment of the disclosure. The
appearances of the phrase "in one embodiment" in various places in
the specification are not necessarily all referring to the same
embodiment, nor are separate or alternative embodiments mutually
exclusive of other embodiments. Moreover, various features are
described which may be exhibited by some embodiments and not by
others. Similarly, various requirements are described which may be
requirements for some embodiments but not other embodiments.
[0015] The terms used in this specification generally have their
ordinary meanings in the art, within the context of the disclosure,
and in the specific context where each term is used. Certain terms
that are used to describe the disclosure are discussed below, or
elsewhere in the specification, to provide additional guidance to
the practitioner regarding the description of the disclosure. For
convenience, certain terms may be highlighted, for example using
italics and/or quotation marks. The use of highlighting has no
influence on the scope and meaning of a term; the scope and meaning
of a term is the same, in the same context, whether or not it is
highlighted. It will be appreciated that same thing can be said in
more than one way.
[0016] Consequently, alternative language and synonyms may be used
for any one or more of the terms discussed herein, nor is any
special significance to be placed upon whether or not a term is
elaborated or discussed herein. Synonyms for certain terms are
provided. A recital of one or more synonyms does not exclude the
use of other synonyms. The use of examples anywhere in this
specification including examples of any terms discussed herein is
illustrative only, and is not intended to further limit the scope
and meaning of the disclosure or of any exemplified term. Likewise,
the disclosure is not limited to various embodiments given in this
specification.
[0017] Without intent to limit the scope of the disclosure,
examples of instruments, apparatus, methods and their related
results according to the embodiments of the present disclosure are
given below. Note that titles or subtitles may be used in the
examples for convenience of a reader, which in no way should limit
the scope of the disclosure. Unless otherwise defined, all
technical and scientific terms used herein have the same meaning as
commonly understood by one of ordinary skill in the art to which
this disclosure pertains. In the case of conflict, the present
document, including definitions will control,
[0018] Embodiments of the present disclosure include systems and
methods for shared resource and virtual resource management in a
networked environment.
[0019] FIG. 1 depicts an example diagram showing resource sharing
and/or virtual resource management among any electronic device
102A-N in a networked environment 150.
[0020] The client devices 102A-N can be any system and/or device,
and/or any combination of devices/systems that is able to establish
a connection, including wired, wireless, cellular connections with
another device, a server and/or other systems such as host server
100 and/or any additional servers. Client devices 102A-N can
typically include a display and/or other output functionalities to
present information and data exchanged between among the devices
102A-N and/or the host server 100.
[0021] For example, the client devices 102A-N can include mobile,
hand held or portable devices or non-portable devices and can be
any of, but not limited to, a server desktop, a desktop computer, a
computer cluster, or portable devices including, a notebook, a
laptop computer, a handheld computer, a palmtop computer, a mobile
phone, a cell phone, a smart phone, a PDA, a Blackberry device, a
Treo, a handheld tablet (e.g. an iPad), a hand held console, a hand
held gaming device or console, an iPhone, a TV set, a setup box, a
cable box, gaming consoles, home audio system components, and/or
any other portable, mobile, hand held devices, etc. in one
embodiment, the client devices 102A-N, host server 100, are coupled
via a network 106. In some embodiments, the devices 102A-N and host
server 100 may be directly connected to one another.
[0022] The devices 102A-N need not be limited to a computer or cell
phone and can generally be any electronic device with memory or
other forms of storage. The devices 102A-N may or may not have its
own processing/computing power/functionality and can include
storage devices (e.g., USB flash drive, disk drive, memory unit,
etc.), or thin clients or dumb devices, or a TV set, or any other
electronic devices (e.g., home appliances, vehicles, etc.) equipped
with network capabilities (e.g., wireless or wired network
capabilities) such that its storage or other types of resources can
be accessed by other devices 102A-N and/or the host server 100. The
client devices A-N may or may not include user interfaces and/or
input/output mechanisms.
[0023] The input mechanisms on client devices 102A-N can include
touch screen keypad (including single touch, multi-touch, gesture
sensing in 2D or 3D, etc.), a physical keypad, a mouse, a pointer,
a track pad, motion detector (e.g., including 1-axis, 2-axis,
3-axis accelerometer, etc.), a light sensor, capacitance sensor,
resistance sensor, temperature sensor, proximity sensor, a
piezoelectric device, device orientation detector (e.g., electronic
compass, tilt sensor, rotation sensor, gyroscope, accelerometer),
or a combination of the above.
[0024] In one embodiment, client devices 102A-N communicate with
the host server 100 and/or each other over network 106, which can
be a cellular network. In general, the network 106, over which the
client devices 102A-N, the host server 100 communicate, may be a
cellular network, a telephonic network, an open network, such as
the Internet, or a private network, such as an intranet and/or the
extranet, or any combination thereof. For example, the Internet can
provide file transfer, remote log in, email, news, RSS, cloud-based
services, instant messaging, visual voicemail, push mail, VOIP, and
other services through any known or convenient protocol, such as,
but is not limited to the TCP/IP protocol, Open System
Interconnections (OSI), FTP, UPnP, iSCSI, NSF, ISDN, PDH, RS-232,
SDH, SONET, etc.
[0025] The network 106 can be any collection of distinct networks
operating wholly or partially in conjunction to provide
connectivity to the client devices 102A-N and the host server 100
and may appear as one or more networks to the serviced systems and
devices. In one embodiment, communications to and from the client
devices 102 can be achieved by, an open network, such as the
Internet, or a private network, such as an intranet and/or the
extranet. In one embodiment, communications can be achieved by a
secure communications protocol, such as secure sockets layer (SSL),
or transport layer security (TLS).
[0026] In addition, communications can be achieved via one or more
networks, such as, but are not limited to, one or more of WiMax, a
Local Area Network (LAN), Wireless Local Area Network (WLAN), a
Personal area network (PAN), a Campus area network (CAN), a
Metropolitan area network (MAN), a Wide area network (WAN), a
Wireless wide area network (WWAN), enabled with technologies such
as, by way of example, Global System for Mobile Communications
(GSM), Personal Communications Service (PCS), Digital Advanced
Mobile Phone Service (D-Amps), Bluetooth, Wi-Fi, Fixed Wireless
Data, 2G, 2.5G, 3G, 4G, IMT-Advanced, pre-4G, 3G LTE, 3GPP LTE, LTE
Advanced, mobile WiMax, WiMax 2, WirelessMAN-Advanced networks,
enhanced data rates for GSM evolution (EDGE), General packet radio
service (GPRS), enhanced GPRS, iBurst, UNITS, HSPDA, HSUPA, HSPA,
UMTS-TDD, 1.times.RTT, EV-DO, messaging protocols such as, TCPIP,
SMS, MMS, extensible messaging and presence protocol (XIMPP), real
time messaging protocol (RTMP), instant messaging and presence
protocol (IMPP), instant messaging, USSD, IRC, or any other
wireless data networks or messaging protocols.
[0027] Inn One embodiment of the present disclosure includes
resource sharing and virtual resource management such as virtual
memory and virtual memory sharing among multiple devices 102A-N,
etc. having local storage such as memory, hard disk storage, flash
memory, database storage, and/or cache. The devices 102A-N, etc.
can generally be any device or electronic appliance, unit, gadget,
and can also include mobile devices such as mobile Smart phones,
PDA, cellular phones, tablets, PCs, laptops and the like.
[0028] The resources such as virtual memory/virtual storage can be
aggregated from the storage components (e.g., database, memory,
hard disk, flash, etc.) of each device 102A-N, etc. and shared for
use across each device such that each device 102A-N is not limited
in storage or memory capacity to the physical size of the local
memory present on each device (e.g., a larger pool of resources can
be leveraged by each device and information can be stored and
shared more efficiently). The virtual resource or virtual memory
includes various aspects of shared network, resource, database
elements, and other information, in addition to the physical memory
located and aggregated from each device 102A-N, etc.
[0029] Virtual resources/memory can also be used to manage shared
data, for example, such that any shared information among the
devices 102A-N, etc. need not be stored multiple times on multiple
devices. Specifically, virtual memory and shared databases can be
allocated based on certain commonalities between devices 102A-N,
etc. Examples of commonalities include co-location, functionality,
features, associated users, software capabilities, hardware
capabilities, etc. Database parameters and/or shared database
parameters can be used to track commonalities between devices
102A-N, etc. as a temporal function, spatial function, or a
combination thereof.
[0030] Virtual memory/virtual resources need not be used for
sharing information, For example, virtual memory may simply be a
pool of aggregated memory or cache for use by each device (e.g.,
co-located device) when there is a need (e.g., due to constraints
of local storage, memory space). For example, a virtual memory
manager may determine that one device in a particular shared memory
environment is running low on physical memory or storage space and
thus allocate some memory on another device or other devices for
temporary or tong term use by the device running low on memory.
Such allocation and assignment can be location based. In one
embodiment, device functionality may be enabled or changed based on
location or co-location, in accordance with information stored in
the virtual memory manager (e.g., state-location-functionality
mapping for various devices tracked and managed by a virtual memory
manager).
[0031] Such resource management and sharing by way of virtual
memory allocation and management enables machine-to-machine
dissemination of information and/or shared information for devices
102A-N, etc. having certain commonalities that would cause the
device to need to access, have the need to store the same
information. Machine-to-machine, or device to device, or
peer-to-peer sharing/communication of information, not only
provides savings on storage space but also takes the load off a
backend server and radio network or other network which now can
provide the updated data or content to one device. The updated
content can then be provided by the one device to other devices
102A-N, etc. in the network environment 150.
[0032] In one embodiment, the host server 100 can manage and/or
track the resource sharing among at least some of the devices
102A-N. For example, the host server 100 can track or determine
availability/status/state of physical memory and allocate resources
(e.g., memory, database, hard disk) on one device to another
device, based on various criteria (e.g., device software/hardware
compatibility, co-location, similar functionality, similar
installed application, same users, etc.). The host server 100 can
track the sharing of resources among devices 102A-N, use of the
shared resources and availability. The components of the host
server 100 are further illustrated in the example of FIG. 3.
[0033] Example configurations for peer-to-peer information sharing
in a network enabled via resource sharing and caching are
illustrated in FIG. 2A-B. FIG. 2A-B depicts example diagrams
showing how resource sharing including memory sharing and database
management enables peer-to-peer distribution of information in a
network among any type of electronic devices 202A-N and among
mobile devices such as mobile phones/smart phones or tablet devices
222A-N.
[0034] Device X 202A can receive, content or updates from an
external device (not shown in FIG. 2A) such as the host server
(e.g., host server 100, 200, in the examples of FIG. 1-2), or a
content provider/application server via a cellular network or other
network. The device 202A belongs to an environment where memory or
other resources are is shared and allocated among multiple devices
(Device X, Device Y, Device Z, etc.). Based on some commonality,
for example, temporal, geographical, functional, similarities, the
information received by Device 202A may be relevant to one or more
of the other Devices 202B, etc, in the same networked environment
of shared resources/memory/storage.
[0035] The information can then be provided to (push, pull, or a
combination thereof) by Device X, to any of the other Devices which
may need the same information. The other devices (e.g., Device Y,
Z, N, etc.) now need not request and receive the same information
from a host server or app server/content provider. Devices can
share information in the virtual memory pool using any
communications interface including but not limited to cellular,
mobile network, Wifi, Bluetooth, LAN, USB, Firewire, etc.
Commonalities can include location or geo-location since locations
may generally be associated with certain useful parameters.
[0036] Devices located in a kitchen versus a bedroom or a car may
need different parameters and/or information. For example, multiple
devices (e.g., a stove, a microwave, refrigerator, etc) may have
the need for information such as a timer information, ambient
information, stove, time left to cook, etc. Devices located in a
vehicle may have a need for different types of parameters, such as
contacts on contact book, maps, GPS data, driver-specific
information, etc.
[0037] Furthermore, devices (e.g., Smart phones or mobile phones
222A-N) with same operating systems use same types of OS files and
may share such information. Similarly, devices with the same
applications installed can share some application program files,
and/or user data if the users are also the same. Similar/same
temporal (time of a request, time of a poll, day of week, time of
day, etc.) and/or spatial (e.g., co-location, same/similar
geo-location) characteristics can result in some shared information
and content among mobile devices 222A-N; such parameters and
information sharing can be tracked by proxies on each device or on
one or more devices in a shared resource environment or shared
memory environment.
[0038] FIG. 3 depicts a block diagram illustrating an example of
components in a host server 300 (e.g., server 100 or 200 of the
examples of FIG. 1-FIG 2) which is able to manage resource sharing
and generation of virtual resources from devices in a networked
environment.
[0039] One embodiment of the host server 300 includes, a network
interface 320, a virtual memory manager 304, a virtual storage
manager 306, a distributed database manager 308, a device state
tracking engine 312 having a device state profile generator 313,
and/or a device commonality detector 314.
[0040] Some or all of the components of the host server 300 can, in
part or in whole, or the associated functions thereof, be performed
by the devices from which virtual resources are aggregated. The
managing/tracking of the virtual resources and the resource sharing
can in part or in whole be performed by the host server 300.
Additional or less components/modules/engines can be included in
the host server 300 and each illustrated component.
[0041] The resource sharing manager 302 can, for example, identify
or detect available resources among devices. The resource sharing
manager 302 can also detect, or track the state/status of resources
among devices in managing pooled virtual resources or in locating
available resources to be shared. For example, the virtual memory
manager 304 can manage memory sharing across devices, the virtual
storage manager can manage storage cross devices and the database
manager can manage database, database element or parameter sharing
across devices or systems.
[0042] In some instances, devices can take upon different states
under different conditions (e.g., time, location, device operation
mode, application which is launched or running, etc.). Device state
can affect resource sharing and as such can be tracked by tracking
engine 312. For example, when a device is in different physical
locations, it thus has the ability to share resources with
different sets of devices. When a device is running a given
application, certain information may be suited to access, retrieval
or storage with certain other devices running the same or similar
applications The device state profile generator 313 can thus
generate a device state profile for use in pooling resources and
allocating resources to other devices at a given point in time
and/or location. An example of a device state profile 402 based on
device location is illustrated in the example of FIG. 4.
[0043] Furthermore, since device resources can be shared wirelessly
based on commonalities, the device commonality detector 314 can
detect any of the commonalities including, one or more of,
functionality, device type, location, or user.
[0044] The network interface 320 can be a networking module that
enables the device 250 to mediate data in a network with an entity
that is external to the host server 250, through any known and/or
convenient communications protocol supported by the host and the
external entity, The network interface 320 can include one or more
of a network adaptor card, a wireless network interface card (e.g.,
SMS interface, WiFi interface, interfaces for various generations
of mobile communication standards including hut not limited to 1G,
2G, 3G, 3.5G, 4G, LTE, etc.,), Bluetooth, a router, an access
point, a wireless router, a switch, a multilayer switch, a protocol
converter, a gateway, a bridge, bridge router, a hub, a digital
media receiver, and/or a repeater.
[0045] As used herein, a "module," "a manager," a "handler," a
"detector," an "interface," or an "engine" includes a general
purpose, dedicated or shared processor and, typically, firmware or
software modules that are executed by the processor, Depending upon
implementation-specific or other considerations, the module,
manager, hander, or engine can be centralized or its functionality
distributed. The module, manager, hander, or engine can include
general or special purpose hardware, firmware, or software embodied
in a computer-readable (storage) medium for execution by the
processor. As used herein, a computer-readable medium or
computer-readable storage medium is intended to include all mediums
that are statutory (e.g., in the United States, under 35 U.S.C.
101) and to specifically exclude all mediums that are non-statutory
in nature to the extent that the exclusion is necessary for a claim
that includes the computer-readable (storage) medium to be valid.
Known statutory computer-readable mediums include hardware (e.g.,
registers, random access memory (RAM), non-volatile (NV) storage,
to name a few), but may or may not be limited to hardware.
[0046] FIG. 4 depicts a table showing an example state profile 402
for a device having location-based state profiles for resource
sharing and pooling with other devices.
[0047] Note that device state profiles, in addition to being
location-based, can also be time-based or include a timing
parameter. Device state profiles can also include information
regarding device state (e.g., on, off, background, foreground),
current user, applications installed, applications launched,
etc.
[0048] FIG. 5A-B depicts tables showing virtual resource allocation
to a given device based on device state. Table 502 illustrates
virtual memory allocation to Device X including Device X's own
memory and those of other devices allocated to Device X for each
state (state profiles 1-5) of device X. Table 522 illustrates
database allocation to device X for each state (state profile 1-5)
including Device X's, own database and those of other devices
(Device 2, 3, 5, 6, and 7) allocated to Device X
[0049] FIG. 6 depicts an example flow chart for storage sharing
among two devices.
[0050] In process 602, storage needs of a first device are
offloaded to a second device among two devices coupled in a
wireless network. The storage needs can be determined from various
scenarios, including by way of example, lack of availability of
physical storage space on the first device, and/or availability of
physical storage space on the second device. Storage needs can also
be determined from shared data or information between the two
devices.
[0051] In one embodiment, the data can be shared as a result of
co-location of the two devices, or other shared commonality, such
as similar/same functionality, same user, same user groups, same
applications installed, same/similar operating systems, similar
network services providers, etc. In process 604, data for use at
the first device is transmitted over the wireless network to be
stored at the second device. The storage that is shared can include
databases, memory (volatile and/or non-volatile), SD card, flash
memory, hard disk storage, etc.
[0052] In process 606, which portion of the data for use at the
first device is stored at the second device is tracked. The
tracking can be performed by the first device, and/or by a server
in the wireless network (e.g., host server 100 shown in the example
if FIG. 1). In process 608, storage is shared among two devices in
the wireless network. Note that the wireless network can include
any wireless network including, by way of example but not
limitation, Wifi, office network, or home network, mobile network
or cellular network, Bluetooth or other near field wireless
connections. In some instances, the devices can also share some or
all storage/resources via a wired connections some or all of the
times.
[0053] FIG. 7 depicts an example flow chart for resource sharing
among devices in a network.
[0054] In process 702, a first device, wirelessly accesses device
resources of a second device in the network. In process 704, data
for use by the first device is retrieved or stored using the device
resources of a second device wirelessly accessed by the first
device. In process 706, the second device, wirelessly accesses
device resources of the first device in the network. In process
708, data for use by the second device is retrieved or stored using
the device resources of the first device wirelessly accessed by the
second device.
[0055] The devices among which resources are shared can be selected
by random or can be selected based on some commonality or need. For
example, the devices among which resources are shared are similar
or same types of devices (e.g., smart phones, laptops, general
purpose appliances, vehicles, home appliances, general purpose
electronics, or storage devices, etc.). The devices among which
resources are shared can have same or similar functionalities
(e.g., are mobile phones, tablets, Smartphones, are cellular
phones, are servers, run on Windows OS, run on OS X, runs on iOS),
have certain applications installed, etc.
[0056] In one embodiment, the devices among which resources are
shared are co-located or are geographically proximate to one
another and/or are connected to or have access to a same network
(e.g., Wifi network, home network, office network, Internet service
provider, cellular network, Bluetooth network, same network
operator, etc.). In some instances, the devices among which
resources are shared wirelessly have a same user or groups of
users. For example, a user's mobile phone may share resources with
the same user's laptop computer or tablet when in close proximity
such that data can be cross accessed.
[0057] FIG. 8 depicts an example flow chart for managing sharing of
physical memory among devices.
[0058] In process 802, an aggregation of the physical memory of
devices is generated. In process 804, a virtual memory pool is
created from the aggregation of physical memory. The aggregation of
physical memory into the virtual memory pool can be performed by a
server managing the resource sharing among the devices, or
performed by one or more of the devices among those sharing
resources. The server can also manage, track, the resource/memory
sharing among some of all devices, for example, thin clients or
storage devices with little or no processing capabilities.
[0059] In process 806, portions of the virtual memory pool are
allocated to a given device among the devices. The allocation can
be performed by a server or by any of the devices among the devices
sharing resources. In process 808, the portions of the virtual
memory pool allocated to the given device, are accessed by the
given device over a wireless connection (e.g., Wifi, cellular,
Bluetooth, etc.) for data retrieval and storage.
[0060] In one embodiment, the portions of the virtual memory pool
allocated to the one device include physical memory located on
other devices among the devices. The other devices having the
physical memory which is a part of the portions of the virtual
memory pool allocated to the one device, can, for example, share a
common feature with the one device. The common feature can include
one or more of, functionality, device type, location, or user.
[0061] FIG. 9 shows a diagrammatic representation of a machine in
the example form of a computer system within which a set of
instructions, for causing the machine to perform any one or more of
the methodologies discussed herein, may be executed.
[0062] In alternative embodiments, the machine operates as a
standalone device or may be connected (e.g., networked) to other
machines. In a networked deployment, the machine may operate in the
capacity of a server or a client machine in a client-server network
environment, or as a peer machine in a peer-to-peer (or
distributed) network environment.
[0063] The machine may be a server computer, a client computer, a
personal computer (PC), a user device, a tablet PC, a laptop
computer, a set-top box (STB), a personal digital assistant (PDA),
cellular telephone, an iPhone, an iPad, a Blackberry, a processor,
a telephone, a web appliance, a network router, switch or bridge, a
console, a hand-held console, a (hand-held) gaming device, a music
player, any portable, mobile, hand-held device, or any machine
capable of executing a set of instructions (sequential or
otherwise) that specify actions to be taken by that machine.
[0064] While the machine-readable medium or machine-readable
storage medium is shown in an exemplary embodiment to be a single
medium, the term "machine-readable medium" and "machine-readable
storage medium" should be taken to include a single medium or
multiple media (e.g., a centralized or distributed database, and/or
associated. caches and servers) that store the one or more sets of
instructions. The term "machine-readable medium" and
"machine-readable storage medium" shall also be taken to include
any medium that is capable of storing, encoding or carrying a set
of instructions for execution by the machine and that cause the
machine to perform any one or more of the methodologies of the
presently disclosed technique and innovation.
[0065] In general, the routines executed to implement the
embodiments of the disclosure, may be implemented as part of an
operating system or a specific application, component, program,
object, module or sequence of instructions referred to as "computer
programs." The computer programs typically comprise one or more
instructions set at various times in various memory and storage
devices in a computer, and that, when read and executed by one or
more processing units or processors in a computer, cause the
computer to perform operations to execute elements involving the
various aspects of the disclosure.
[0066] Moreover, while embodiments have been described in the
context of filly functioning computers and computer systems, those
skilled in the art will appreciate that the various embodiments are
capable of being distributed as a program product in a variety of
forms, and that the disclosure applies equally regardless of the
particular type of machine or computer-readable media used to
actually effect the distribution.
[0067] Further examples of machine-readable storage media,
machine-readable media, or computer-readable (storage) media
include, but are not limited to, recordable type media such as
volatile and non-volatile memory devices, floppy and other
removable disks, hard disk drives, optical disks (e.g., Compact
Disk Read-Only Memory (CD ROMS), Digital Versatile Disks, (DVDs),
etc.), among others, and transmission type media such as digital
and analog communication links.
[0068] The network interface device enables the machine 1100 to
mediate data in a network with an entity that is external to the
host server, through any known and/or convenient communications
protocol supported by the host and the external entity. The network
interface device can include one or more of a network adaptor card,
a wireless network interface card, a router, an access point, a
wireless router, a switch, a multilayer switch, a protocol
converter, a gateway, a bridge, bridge router, a hub, a digital
media receiver, and/or a repeater.
[0069] The network interface device can include a firewall which
can, in some embodiments, govern and/or manage permission to
access/proxy data in a computer network, and track varying levels
of trust between different machines and/or applications. The
firewall can be any number of modules having any combination of
hardware and/or software components able to enforce a predetermined
set of access rights between a particular set of machines and
applications, machines and machines, and/or applications and
applications, for example, to regulate the flow of traffic and
resource sharing between these varying entities. The firewall may
additionally manage and/or have access to an access control list
which details permissions including for example, the access and
operation rights of an object by an individual, a machine, and/or
an application, and the circumstances under which the permission
rights stand.
[0070] Other network security functions can be performed or
included in the functions of the firewall, can be, for example, but
are not limited to, intrusion-prevention, intrusion detection,
next-generation firewall personal firewall, etc. without deviating
from the novel art of this disclosure.
[0071] Unless the context clearly requires otherwise, throughout
the description and the claims, the words "comprise," "comprising,"
and the like are to be construed in an inclusive sense, as opposed
to an exclusive or exhaustive sense; that is to say, in the sense
of "including, but not limited to." As used herein, the terms
"connected," "coupled," or any variant thereof, means any
connection or coupling, either direct or indirect, between two or
more elements; the coupling of connection between the elements can
be physical, logical, or a combination thereof. Additionally, the
words "herein," "above," "below," and words of similar import, when
used in this application, shall refer to this application as a
whole and not to any particular portions of this application. Where
the context permits, words in the above Detailed Description using
the singular or plural number may also include the plural or
singular number respectively. The word "or," in reference to a list
of two Of more items, covers all of the following interpretations
of the word: any of the items in the list, all of the items in the
list, and any combination of the items in the list.
[0072] The above detailed description of embodiments of the
disclosure is not intended to be exhaustive or to limit the
teachings to the precise form disclosed above. While specific
embodiments of, and examples for, the disclosure are described
above for illustrative purposes, various equivalent modifications
are possible within the scope of the disclosure, as those skilled
in the relevant art will recognize. For example, while processes or
blocks are presented in a given order, alternative embodiments may
perform routines having steps, or employ systems having blocks, in
a different order, and sonic processes or blocks may be deleted,
moved, added, subdivided, combined, and/or modified to provide
alternative or subcombinations. Each of these processes or blocks
may be implemented in a variety of different ways. Also, while
processes or blocks are at times shown as being performed in
series, these processes or blocks may instead be performed in
parallel, or may be performed at different times, Further, any
specific numbers noted herein are only examples: alternative
implementations may employ differing values or ranges.
[0073] The teachings of the disclosure provided herein can be
applied to other systems, not necessarily the system described
above. The elements and acts of the various embodiments described
above can be combined to provide further embodiments.
[0074] Any patents and applications and other references noted
above, including any that may be listed in accompanying filing
papers, are incorporated herein by reference. Aspects of the
disclosure can be modified, if necessary, to employ the systems,
functions, and concepts of the various references described above
to provide yet further embodiments of the disclosure.
[0075] These and other changes can be made to the disclosure in
light of the above Detailed Description. While the above
description describes certain embodiments of the disclosure, and
describes the best mode contemplated, no matter how detailed the
above appears in text, the teachings can be practiced in many ways.
Details of the system may vary considerably in its implementation
details, while still being encompassed by the subject matter
disclosed herein. As noted above, particular terminology used when
describing certain features or aspects of the disclosure should not
be taken to imply that the terminology is being redefined herein to
be restricted to any specific characteristics, features, or aspects
of the disclosure with which that terminology is associated. In
general, the terms used in the following claims should not be
construed to limit the disclosure to the specific embodiments
disclosed in the specification, unless the above Detailed
Description section explicitly defines such terms. Accordingly, the
actual scope of the disclosure encompasses not only the disclosed
embodiments, but also all equivalent ways of practicing or
implementing the disclosure under the claims.
[0076] While certain aspects of the disclosure are presented below
in certain claim forms, the inventors contemplate the various
aspects of the disclosure in any number of claim forms. For
example, while only one aspect of the disclosure is recited as a
means-plus-function claim under 35 U.S.C. .sctn.112, 6, other
aspects may likewise be embodied as a means-plus-function claim, or
in other forms, such as being embodied in a computer-readable
medium. (Any claims intended to be treated under 35 U.S.C.
.sctn.112, 6 will begin with the words "means for.") Accordingly,
the applicant reserves the right to add additional claims after
filing the application to pursue such additional claim forms for
other aspects of the disclosure.
* * * * *