throbber
342
`
`IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 24, NO. 5, MAY 1998
`
`Understanding Code Mobility
`
`Alfonso Fuggetta, Member, IEEE, Gian Pietro Picco, Member, IEEE,
`and Giovanni Vigna, Member, IEEE
`
`Abstract—The technologies, architectures, and methodologies traditionally used to develop distributed applications exhibit a variety of
`limitations and drawbacks when applied to large scale distributed settings (e.g., the Internet). In particular, they fail in providing the
`desired degree of configurability, scalability, and customizability. To address these issues, researchers are investigating a variety of
`innovative approaches. The most promising and intriguing ones are those based on the ability of moving code across the nodes of a
`network, exploiting the notion of mobile code. As an emerging research field, code mobility is generating a growing body of scientific
`literature and industrial developments. Nevertheless, the field is still characterized by the lack of a sound and comprehensive body of
`concepts and terms. As a consequence, it is rather difficult to understand, assess, and compare the existing approaches. In turn, this
`limits our ability to fully exploit them in practice, and to further promote the research work on mobile code. Indeed, a significant symptom
`of this situation is the lack of a commonly accepted and sound definition of the term “mobile code” itself.
`This paper presents a conceptual framework for understanding code mobility. The framework is centered around a classification
`that introduces three dimensions: technologies, design paradigms, and applications. The contribution of the paper is two-fold. First, it
`provides a set of terms and concepts to understand and compare the approaches based on the notion of mobile code. Second, it
`introduces criteria and guidelines that support the developer in the identification of the classes of applications that can leverage off
`of mobile code, in the design of these applications, and, finally, in the selection of the most appropriate implementation technologies.
`The presentation of the classification is intertwined with a review of state-of-the-art in the field. Finally, the use of the classification is
`exemplified in a case study.
`
`Index Terms—Mobile code, mobile agent, distributed application, design paradigm.
`——————————(cid:3)(cid:3)(cid:3)F(cid:3)(cid:3)(cid:3)——————————
`
`C
`
`1 INTRODUCTION
`OMPUTER networks are evolving at a fast pace, and this
`evolution proceeds along several lines. The size of net-
`works is increasing rapidly, and this phenomenon is not
`confined just to the Internet, whose tremendous growth
`rate is well-known. Intra- and inter-organization networks
`experience an increasing diffusion and growth as well, fos-
`tered by the availability of cheap hardware and motivated
`by the need for uniform, open, and effective information
`channels inside and across the organizations. A side effect
`of this growth is the significant increase of the network traf-
`fic, which in turn triggers research and industrial efforts to
`enhance the performance of the communication infrastruc-
`ture. Network links are constantly improved, and techno-
`logical developments lead to increased computational
`power on both intermediate and end network nodes.
`The increase in size and performance of computer net-
`works is both the cause and the effect of an important
`phenomenon: networks are becoming pervasive and
`ubiquitous. By pervasive, we mean that network connec-
`tivity is no longer an expensive add-on. Rather it is a basic
`feature of any computing facility, and, in perspective, also
`of many products in the consumer electronics market (e.g.,
`
`††††††††††††††††
`•(cid:3) A. Fuggetta and G. Vigna are with the Dipartimento di Elettronica e Infor-
`mazione, Politecnico di Milano, P.za Leonardo da Vinci, 32, I-20133 Milano,
`Italy. E-mail: {fuggetta, vigna}@elet.polimi.it.
`•(cid:3) G.P. Picco is with the Dipartimento di Automatica e Informatica, Politec-
`nico di Torino, C.so Duca degli Abruzzi 24, I-10129 Torino, Italy.
`E-mail: picco@polito.it.
`Manuscript received 16 July 1997; revised 18 Dec. 1997.
`Recommended for acceptance by G.-C. Roman.
`
`For information on obtaining reprints of this article, please send e-mail to:
`tse@computer.org, and reference IEEECS Log Number 106411.
`
`televisions). By ubiquitous, we refer to the ability of exploit-
`ing network connectivity independently of the physical
`location of the user. Developments in wireless technology
`free network nodes from the constraint of being placed at a
`fixed physical location and enable the advent of so-called
`mobile computing. In this new scenario, mobile users can
`move together with their hosts across different physical
`locations and geographical regions, still being connected to
`the net through wireless links.
`Another important phenomenon is the increasing avail-
`ability of easy-to-use technologies accessible also to naive
`users (e.g., the World Wide Web). These technologies have
`triggered the creation of new application domains and even
`new markets. This is changing the nature and role of net-
`works, and particularly of the Internet. They cannot be con-
`sidered just plain communication technologies. Nowadays,
`modern computer networks constitute innovative media
`that support new forms of cooperation and communication
`among users. Terms like “electronic commerce,” or “Inter-
`net phone” are symptomatic of this change.
`However, this evolution path is not free of obstacles and
`several challenging problems must be addressed. The
`growing size of networks raises a problem of scalability.
`Most results that are significant for small networks are of-
`ten inapplicable when scaled to a world-wide network like
`the Internet. For instance, while it might be conceivable to
`apply a global snapshot algorithm to a LAN, its perform-
`ance is unacceptable in an Internet setting. Wireless con-
`nectivity poses even tougher problems [1], [2]. Network
`nodes may move and be connected discontinuously, hence
`the topology of the network is no longer defined statically.
`As a consequence, some of the basic tenets of research on
`
`0098-5589/98/$10.00 © 1998 IEEE
`Authorized licensed use limited to: IEEE Staff. Downloaded on August 06,2021 at 16:23:41 UTC from IEEE Xplore. Restrictions apply.
`
`Netflix, Inc. - Ex. 1015, Page 000001
`IPR2022-00322 (Netflix, Inc. v. CA, Inc.)
`
`

`

`FUGGETTA ET AL.: UNDERSTANDING CODE MOBILITY
`
`343
`
`distributed systems are undermined, and we need to adapt
`and extend existing theoretical and technological results to
`this new scenario. Another relevant issue is the diffusion of
`network services and applications to very large segments of
`our society. This makes it necessary to increase the custom-
`izability of services, so that different classes of users are en-
`abled to tailor the functionality and interface of a service
`according to their specific needs and preferences. Finally,
`the dynamic nature of both the underlying communication
`infrastructure and the market requirements demand in-
`creased flexibility and extensibility.
`There have been many attempts to provide effective an-
`swers to this multifaceted problem. Most of the proposed
`approaches, however, try to adapt well-established models
`and technologies within the new setting, and usually take
`for granted the traditional client-server architecture. For
`example, CORBA [3] integrates remote procedure calls
`(RPCs) with the object-oriented paradigm. It attempts to
`combine the benefits of the latter in terms of modularity
`and reuse, with
`the well-established communication
`mechanism of the former. However, this approach does not
`ensure the degree of flexibility, customizability, and recon-
`figurability needed to cope with the challenging require-
`ments discussed so far.
`A different approach originates in the promising re-
`search area exploiting the notion of mobile code. Code mo-
`bility can be defined informally as the capability to dy-
`namically change the bindings between code fragments and
`the location where they are executed [4]. The ability to relo-
`cate code is a powerful concept that originated a very inter-
`esting range of developments. However, despite the wide-
`spread interest in mobile code technology and applications,
`the field is still quite immature. A sound terminological and
`methodological framework is still missing, and there is not
`even a commonly agreed term to qualify the subject of this
`research.1 In addition, the interest demonstrated by markets
`and media, due to the fact that mobile code research is
`tightly bound to the Internet, has added an extra level of
`noise, by introducing hypes and sometimes unjustified ex-
`pectations. In the next section we present the main differ-
`ences between mobile code and other related approaches,
`and the motivations and main contributions of this paper.
`
`2 MOTIVATIONS AND APPROACH
`Code mobility is not a new concept. In the recent past, sev-
`eral mechanisms and facilities have been designed and im-
`plemented to move code among the nodes of a network.
`Examples are remote batch job submission [5] and the use
`of PostScript [6] to control printers. The research work on
`distributed operating systems has followed a more struc-
`tured approach. In that research area, the main problem is
`to support the migration of active processes and objects
`(along with their state and associated code) at the operating
`system level [7]. In particular, process migration concerns the
`transfer of an operating system process from the machine
`where it is running to a different one. Migration mecha-
`
`1. Hereafter, we use interchangeably the terms code mobility and mobile
`code, although other authors prefer different terms such as mobile computa-
`tions, mobile object systems, or program mobility.
`
`nisms handle the bindings between the process and its exe-
`cution environment (e.g., open file descriptors and envi-
`ronment variables) to allow the process to seamlessly re-
`sume its execution in the remote environment. Process mi-
`gration facilities have been introduced at the operating
`system level to achieve load balancing across network
`nodes. Therefore, most of these facilities provide transpar-
`ent process migration: the programmer has neither control
`nor visibility of the migration process. Other systems pro-
`vide some form of control over the migration process. For
`example, in Locus [8] process migration can be triggered
`either by an external signal or by the explicit invocation of
`the migrate system call. Object migration makes it possible
`to move objects among address spaces, implementing a
`finer grained mobility with respect to process-level migra-
`tion. For example, Emerald [9] provides object migration at
`any level of granularity ranging from small, atomic data to
`complex objects. Emerald does not provide complete trans-
`parency since the programmer can determine objects loca-
`tions and may request explicitly the migration of an object
`to a particular node. An example of system providing
`transparent migration is COOL [10], an object-oriented ex-
`tension of the Chorus operating system [11]. COOL is able
`to move objects among address spaces without user inter-
`vention or knowledge.
`Process and object migration address the issues that arise
`when code and state are moved among the hosts of a
`loosely coupled, small scale distributed system. However,
`they are insufficient when applied in larger scale settings.
`Nevertheless, the migration techniques discussed so far
`have been taken as a starting point for the development of a
`new breed of systems providing enhanced forms of code
`mobility. These systems, often referred to as Mobile Code
`Systems (MCSs), exhibit several innovations with respect to
`existing approaches:
`Code mobility is exploited on an Internet-scale. Distributed
`systems providing process or object migration have been
`designed having in mind small-scale computer networks,
`thus assuming high bandwidth, small predictable latency,
`trust, and, often, homogeneity. Conversely, MCSs are con-
`ceived to operate in large scale settings where networks are
`composed of heterogeneous hosts, managed by different
`authorities with different levels of trust, and connected by
`links with different bandwidths (e.g., wireless slow con-
`nections and fast optical links).
`Programming is location aware. Location is a pervasive ab-
`straction that has a strong influence on both the design and
`the implementation of distributed applications. Mobile
`code systems do not paper over the location of application
`components, rather, applications are location-aware and
`may take actions based on such knowledge.
`Mobility is under programmer’s control. The programmer is
`provided with mechanisms and abstractions that enable the
`shipping and fetching of code fragments (or even entire
`components) to/from remote nodes. The underlying run-
`time support provides basic functionalities (e.g., data mar-
`shaling, code check-in, and security), but does not have any
`control over migration policies.
`
`Authorized licensed use limited to: IEEE Staff. Downloaded on August 06,2021 at 16:23:41 UTC from IEEE Xplore. Restrictions apply.
`
`Netflix, Inc. - Ex. 1015, Page 000002
`
`

`

`344
`
`IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 24, NO. 5, MAY 1998
`
`Mobility is not performed just for load balancing. Process
`and object migration aim at supporting load balancing and
`performance optimization. Mobile code systems address a
`much wider range of needs and requirements, such as
`service customization, dynamic extension of application
`functionality, autonomy, fault tolerance, and support for
`disconnected operations.
`To cope with this variety of requirements and needs, in-
`dustrial and academic researchers have proposed a number
`of MCSs. This lively and sometimes chaotic research activ-
`ity has generated some confusion about the semantics of
`mobile code concepts and technologies.
`A first problem is the unclear distinction between im-
`plementation technologies, specific applications, and para-
`digms used to design these applications. In an early and yet
`valuable assessment of code mobility [12], the authors
`analyze and compare issues and concepts that belong to
`different abstraction levels. Similarly, in a recent work
`about autonomous objects [13], mechanisms like REV [14]
`and RPC [15] are compared to the Echo distributed algo-
`rithms [16], to applications like “intelligent e-mail” and Web
`browsers, and to paradigms for structuring distributed ap-
`plications, like mobile agents. We argue that these different
`concepts and notions cannot be compared directly. It is as
`inappropriate and misleading as trying to compare the
`emacs editor, the fork Unix system call, and the client-
`server design paradigm.
`There is also confusion about terminology. For instance,
`several systems [17], [18] claim to be able to move the state
`of a component along with its code. This assertion is justi-
`fied by the availability of mechanisms that allow the pro-
`grammer to pack some portion of the data space of an exe-
`cuting component before the component’s code is sent to a
`remote destination. Indeed, this is quite different from the
`situation where the run-time image of the component is
`transferred as a whole, including its execution state (i.e.,
`program counter, call stack, etc.). In the former case, it is the
`programmer’s task to rebuild the execution state of a com-
`ponent after its migration, using the data transferred with
`the code. Conversely, in the latter case this task is carried
`out by the run-time support of the MCS. Another termino-
`logical confusion stems from the excessive overload of the
`term “mobile agent.” This term is used with different and
`somewhat overlapping semantics in both the distributed
`systems and artificial intelligence research communities. In
`the distributed system community the term “mobile agent”
`is used to denote a software component that is able to move
`between different execution environments. This definition
`has actually different interpretations. For example, while in
`Telescript [19] an agent is represented by a thread that can
`migrate among different nodes carrying its execution state,
`in TACOMA [17] agents are just code fragments associated
`with initialization data that can be shipped to a remote
`host. They do not have the ability to migrate once they have
`started their execution. On the other hand, in the artificial
`intelligence community the term “agent” denotes a soft-
`ware2 component that is able to achieve a goal by perform-
`ing actions and reacting to events in a dynamic environ-
`
`2. In this paper we ignore the implications of broader notions of agent
`which are not restricted to the software domain.
`
`ment [20]. The behavior of this component is determined by
`the knowledge of the relationships among events, actions,
`and goals. Moreover, knowledge can be exchanged with
`other agents, or increased by some inferential activity [21].
`Although mobility is not the most characterizing aspect of
`these entities [22], there is a tendency to blend this notion of
`intelligent agent with the one originating from distributed
`systems and thus assume implicitly that a mobile agent is
`also intelligent (and vice versa). This is actually generating
`confusion since there is a mix of concepts and notions that
`belong to two different layers, i.e., the layer providing code
`mobility and the one exploiting it. Finally, there is no defi-
`nition or agreement about the distinguishing characteristics
`of languages supporting code mobility. In [23], Knabe lists
`the essential characteristics of a mobile code language. They
`include support for manipulating, transmitting, receiving,
`and executing “code-containing objects.” However, there is
`no discussion about how to manage the state of mobile
`components. Other contributions [24], [12] consider only
`the support for mobility of both code and state, without
`mentioning weaker forms of code mobility involving code
`migration alone—as we discuss later on in the paper.
`Certainly, confusion and disagreement are typical of a
`new and still immature research field. Nevertheless, re-
`search developments are fostered not only by novel ideas,
`mechanisms, and systems, but also by a rationalization and
`conceptualization effort that re-elaborates on the raw ideas,
`seeking for a common and stable ground on which to base
`further endeavors. Research on code mobility is not an ex-
`ception. The technical concerns raised by performance and
`security of MCSs are not the only factors hampering full
`acceptance and exploitation of mobile code. A conceptual
`framework is needed to foster understanding of the multi-
`faceted mobile code scenario. It will enable researchers and
`practitioners to assess and compare different solutions with
`respect to a common set of reference concepts and abstrac-
`tions—and go beyond it. To be effective, this conceptual
`framework should also provide valuable information to
`application developers, actually guiding the evaluation of
`opportunities for exploitation of code mobility during the
`different phases of application development.
`These considerations provide the rationale for the classi-
`fication presented in this paper. The classification intro-
`duces abstractions, models, and terms to characterize the
`different approaches to code mobility proposed so far,
`highlighting commonalities, differences, and applicability.
`The classification is organized along three dimensions that
`are of paramount importance during the actual develop-
`ment process: technologies, design paradigms, and application
`domains. Mobile code technologies are the languages and
`systems that provide mechanisms enabling and supporting
`code mobility. Some of these technologies have been al-
`ready mentioned and are discussed in greater detail in the
`next section. Mobile code technologies are used by the ap-
`plication developer in the implementation stage. Design
`paradigms are the architectural styles that the application
`designer uses in defining the application architecture. An
`architectural style identifies a specific configuration for the
`components of the system and their mutual interactions.
`Client-server and peer-to-peer are well-known examples of
`
`Authorized licensed use limited to: IEEE Staff. Downloaded on August 06,2021 at 16:23:41 UTC from IEEE Xplore. Restrictions apply.
`
`Netflix, Inc. - Ex. 1015, Page 000003
`
`

`

`FUGGETTA ET AL.: UNDERSTANDING CODE MOBILITY
`
`345
`
`design paradigms. Application domains are classes of appli-
`cations that share the same general goal, e.g., distributed
`information retrieval or electronic commerce. They play a
`role in defining the application requirements. The expected
`benefits of code mobility in a number of application do-
`mains is the motivating force behind this research field.
`Our classification will break down in a vertical distinc-
`tion among these three layers, as well as in an horizontal
`distinction among the peculiarities of the various ap-
`proaches found in literature. Section 3 presents a general
`model and a classification of the mechanisms provided by
`mobile code technologies. The classification is then used to
`survey and characterize several MCSs. Section 4 presents
`mobile code design paradigms and discusses their relation-
`ships with mobile code technologies. Section 5 discusses the
`advantages of the mobile code approach and presents some
`application domains that are supposed to benefit from the
`use of some form of code mobility. Finally, in Section 6 we
`exemplify the use of the classification by applying it to a
`case study in the network management application domain.
`
`3(cid:3) MOBILE CODE TECHNOLOGIES
`Mobile code technologies include programming languages
`and their corresponding run-time supports. At a first
`glance, these technologies provide quite different concepts
`and primitives. For this reason, the first part of this section
`introduces some reference abstractions, and then seeks out
`and classifies the different mechanisms that allow an appli-
`cation to move code and state across the nodes of a net-
`work. We are concerned here only with the issues strictly
`related to mobility. Other aspects of mobile code technology
`are indeed relevant, such as security or strategies for trans-
`lation and execution. On-going work is defining a similar
`framework for these aspects as well. In the second part of
`the section (Section 3.3), the classification of mobility
`mechanisms is used to characterize the features provided
`by several existing MCSs. The classification accommodates
`several technologies found in literature. The set of tech-
`nologies considered is not exhaustive, and is constrained by
`space and by the focus of the paper. However, the reader
`may actually verify the soundness of the classification by
`applying it to other MCSs not considered here, like the ones
`described in [25], [26], [27]. Also, the reader interested in a
`more detailed analysis of the linguistic problems posed by
`the introduction of mobility in programming languages can
`refer to [28], [29].
`
`3.1 A Virtual Machine for Code Mobility
`Traditional distributed systems can be accommodated in
`the virtual machine shown on the left-hand side of Fig. 1.
`The lowest layer, just upon the hardware, is constituted by
`the Core Operating System (COS). The COS can be regarded
`as the layer providing the basic operating system function-
`alities, such as file system, memory management, and proc-
`ess support. No support for communication or distribution
`is provided by this layer. Nontransparent communication
`services are provided by the Network Operating System
`(NOS) layer. Applications using NOS services address ex-
`plicitly the host targeted by communication. For instance,
`
`socket services can be regarded as belonging to the NOS
`layer, since a socket must be opened by specifying explicitly
`a destination network node. The NOS, at least conceptually,
`uses the services provided by the COS, e.g., memory man-
`agement. Network transparency is provided by the True
`Distributed System (TDS) layer. A TDS implements a plat-
`form where components, located at different sites of a net-
`work, are perceived as local. Users of TDS services do not
`need to be aware of the underlying structure of the net-
`work. When a service is invoked, there is no clue about the
`node of the network that will actually provide the service,
`and even about the presence of a network at all. As an ex-
`ample, CORBA [3] services can be regarded as TDS services
`since a CORBA programmer is usually unaware of the net-
`work topology and always interacts with a single well-
`known object broker. At least in principle, the TDS is built
`upon the services provided by the underlying NOS.
`Technologies supporting code mobility take a different
`perspective. The structure of the underlying computer
`network is not hidden from the programmer, rather it is
`made manifest. In the right-hand side of Fig. 1 the TDS is
`replaced by Computational Environments (CEs) layered
`upon the NOS of each network host. In contrast with the
`TDS, the CE retains the “identity” of the host where it is
`located. The purpose of the CE is to provide applications
`with the capability to dynamically relocate their compo-
`nents on different hosts. Hence, it leverages off of the
`communication channels managed by the NOS and of the
`low-level resource access provided by the COS to handle
`the relocation of code, and possibly of state, of the hosted
`software components.
`We distinguish the components hosted by the CE in exe-
`cuting units (EUs) and resources. Executing units represent
`sequential flows of computation. Typical examples of EUs
`are single-threaded processes or individual threads of a
`multi-threaded process. Resources represent entities that
`can be shared among multiple EUs, such as a file in a file
`system, an object shared by threads in a multi-threaded
`object-oriented language, or an operating system variable.
`Fig. 2 illustrates our modeling of EUs as the composition of
`a code segment, which provides the static description for the
`behavior of a computation, and a state composed of a data
`space and an execution state. The data space is the set of ref-
`erences to resources that can be accessed by the EU. As ex-
`plained later on, these resources are not necessarily co-
`located with the EU on the same CE. The execution state
`contains private data that cannot be shared, as well as con-
`trol information related to the EU state, such as the call
`stack and the instruction pointer. For example, a Tcl inter-
`preter PX executing a Tcl script X can be regarded as an EU
`where the code segment is X; the data space is composed of
`variables containing the handles for files and references to
`system environment variables used by PX; the execution
`state is composed of the program counter and the call stack
`maintained by the interpreter, along with the other vari-
`ables of X.
`
`3.2 Mobility Mechanisms
`In conventional systems, each EU is bound to a single CE
`for its entire lifetime. Moreover, the binding between the
`
`Authorized licensed use limited to: IEEE Staff. Downloaded on August 06,2021 at 16:23:41 UTC from IEEE Xplore. Restrictions apply.
`
`Netflix, Inc. - Ex. 1015, Page 000004
`
`

`

`346
`
`IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 24, NO. 5, MAY 1998
`
`Fig. 1. Traditional systems vs. MCSs. Traditional systems, on the left-hand side, may provide a TDS layer that hides the distribution from the pro-
`grammer. Technologies supporting code mobility, on the right hand side, explicitly represent the location concept, thus the programmer needs to
`specify where—i.e., in which CE—a computation has to take place.
`
`Fig. 2. The internal structure of an executing unit.
`
`EU and its code segment is generally static. Even in envi-
`ronments that support dynamic linking, the code linked
`belongs to the local CE. This is not true for MCSs. In MCSs,
`the code segment, the execution state, and the data space of
`an EU can be relocated to a different CE. In principle, each
`of these EU constituents might move independently. How-
`ever, we will limit our discussion to the alternatives
`adopted by existing systems.
`The portion of an EU that needs to be moved is deter-
`mined by composing orthogonal mechanisms supporting
`mobility of code and execution state with mechanisms for
`data space management. For this reason, we will analyze
`them separately. Fig. 3 presents a classification of mobility
`mechanisms.
`
`3.2.1 Code and Execution State Mobility
`Existing MCSs offer two forms of mobility, characterized by
`the EU constituents that can be migrated. Strong mobility is
`the ability of an MCS (called strong MCS) to allow migra-
`tion of both the code and the execution state of an EU to a
`different CE. Weak mobility is the ability of an MCS (called
`weak MCS) to allow code transfer across different CEs; code
`may be accompanied by some initialization data, but no
`migration of execution state is involved.
`Strong mobility is supported by two mechanisms: migra-
`tion and remote cloning. The migration mechanism suspends
`an EU, transmits it to the destination CE, and then resumes
`it. Migration can be either proactive or reactive. In proactive
`migration, the time and destination for migration are deter-
`mined autonomously by the migrating EU. In reactive migra-
`tion, movement is triggered by a different EU that has some
`kind of relationship with the EU to be migrated, e.g., an EU
`acting as a manager of roaming EUs. The remote cloning
`
`mechanism creates a copy of an EU at a remote CE. Remote
`cloning differs from the migration mechanism because the
`original EU is not detached from its current CE. As in migra-
`tion, remote cloning can be either proactive or reactive.
`Mechanisms supporting weak mobility provide the ca-
`pability to transfer code across CEs and either link it dy-
`namically to a running EU or use it as the code segment for
`a new EU. Such mechanisms can be classified according to
`the direction of code transfer, the nature of the code being
`moved, the synchronization involved, and the time when
`code is actually executed at the destination site. As for di-
`rection of code transfer, an EU can either fetch the code to be
`dynamically linked and/or executed, or ship such code to
`another CE. The code can be migrated either as stand-alone
`code or as a code fragment. Standalone code is self-contained
`and will be used to instantiate a new EU on the destination
`site. Conversely, a code fragment must be linked in the
`context of already running code and eventually executed.
`Mechanisms supporting weak mobility can be either syn-
`chronous or asynchronous, depending on whether the EU
`requesting the transfer suspends or not until the code is
`executed. In asynchronous mechanisms, the actual execu-
`tion of the code transferred may take place either in an im-
`mediate or deferred fashion. In the first case, the code is exe-
`cuted as soon as it is received, while in a deferred scheme
`execution is performed only when a given condition is sat-
`isfied—e.g., upon first invocation of a portion of the code
`fragment or as a consequence of an application event.
`
`3.2.2 Data Space Management
`Upon migration of an EU to a new CE, its data space, i.e.,
`the set of bindings to resources accessible by the EU, must be
`rearranged. This may involve voiding bindings to resources,
`
`Authorized licensed use limited to: IEEE Staff. Downloaded on August 06,2021 at 16:23:41 UTC from IEEE Xplore. Restrictions apply.
`
`Netflix, Inc. - Ex. 1015, Page 000005
`
`

`

`FUGGETTA ET AL.: UNDERSTANDING CODE MOBILITY
`
`347
`
`Fig 3. A classification of mobility mechanisms.
`
`re-establishing new bindings, or even migrating some re-
`sources to the destination CE along with the EU. The choice
`depends on the nature of the resources involved, the type of
`binding to such resources, as well as on the requirements
`posed by the application.
`We model resources as a triple Resource = Æ I, V, T æ , where
`I is a unique identifier, V is the value of the resource, and T is
`its type, which determines the structure of the information
`contained in the resource as well as its interface. The type of
`the resource determines also whether the resource is transfer-
`rable or not transferrable, i.e., whether, in principle, it can be
`migrated over the network or not. For example, a resource of
`type “stock data” is likely to be transferrable, while a re-
`source of type “printer” probably is not. Transferrable re-
`source instances can be marked as free or fixed. The former
`can be migrated to another CE, while the latter are associated
`permanently with a CE. This characteristic is determined
`according to application requirements. For instance, even if it
`might be conceivable to transfer a huge file or an entire data-
`base over the network, this might be undesirable for per-
`formance reasons. Similarly, it might be desirable to

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket