Data collection and restoration for homogeneous or...

Electrical computers and digital processing systems: memory – Address formation – Address mapping

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C709S241000

Reexamination Certificate

active

06442663

ABSTRACT:

This invention pertains to methods and apparatus for collecting and restoring the data contents of a process in the memory space of a computer, more particularly for data collection and restoration between computers which may or may not have the same computing platform.
Creation of a national communication infrastructure, the so-called “information superhighway,” marked the beginning of a new era in computer communication. Network computing has emerged as an essential component of the infrastructure; however, current network environments do not meet rapidly increasing computational demands. Efficient process migration, i.e., transfer of a process between different computers, is one of the critical issues of a national effort to solve this problem.
In distributed network computing, adaptability of process assignment is desirable for high throughput and resource utilization, especially for a long-running application. A “process” is a piece of a program in execution. It represents a job assigned to a computer during the execution of an application. An application can comprise one or more processes running on single or multiple computers.
The software and hardware on a computer create a distinct computing platform. In the development of a user application, users provide an executable file via a compiler for that particular computer. The executable file contains a sequence of machine instructions in form of platform-specific binary code. One or more processes are created on a computer before an executable file can be executed on a computer, so that the operating system of the computer can load those instructions into the computer's main memory and assign the instructions to the central processing unit, or CPU.
In building an executable file, a user can write a program (or source code) in the form of a high-level computer language such as C, C++, or FORTRAN, and pass it to a compiler for that language. A user program comprises a global data definition area and a description of functions. Each function description comprises parameter variable declarations, local variable declarations, and programming language statements. The compiler translates the program source code into the platform-specific binary code, and stores them in an executable file. During compilation, the compiler can also optimize the machine instructions according to specific features of the computing platform. At runtime, the operating system loads the executable file into the computer's memory. The loaded executable file is then ready to be executed by the CPU and is recognized as one or more processes.
Efficient process migration, where the execution of a process is suspended on one computer and then resumed on another computer, is a mechanism to adapt process and resource assignment. “Heterogeneous” process migration occurs when a process is transferred between two machines that differ in hardware or software environments such as CPU, memory, compiler, operating system, or software tools. The process can be transferred via direct network-to-network communication (network migration) as opposed to file migration. Applications of process migration include load distribution, migrating processes from overloaded machines to underloaded machines to exploit otherwise unused computing cycles; fault resilience, migrating processes from machines that may experience partial failure; resource sharing, migrating processes to machines with special hardware or other unique resources such as databases or peripherals required for computations; data access locality, migrating processes towards the source of the data; and mobile computing, migrating processes from a host to a mobile computer.
In terms of resource sharing, processes can be migrated to computers that have resources such as databases or peripherals required for computations. In addition to clustered network computing, mobile computing and ubiquitous computing (two emerging computing disciplines) also demand efficient process migration. The advantage of process migration can be significantly scaled up when the underlying computers are heterogeneous, but the complexity of heterogeneous process migration becomes significantly scaled up as well. While software environments have been developed for homogeneous process migration, currently no solution exists for efficient heterogeneous process migration.
Fundamentally, there are three steps to make source code migratable in a heterogeneous environment:
(1) Identify the subset of language features that is migration-safe, i.e. features that theoretically can be carried across a network;
(2) Implement a methodology to transform migration-safe code into a “migratable” format so that it can be migrated at run-time; and
(3) Develop mechanisms to migrate the “migratable” processes reliably and efficiently.
Three different strategies have been used for process migration: Operating System (OS) support, checkpointing, and mobile agent. The traditional OS support approach for process migration is very difficult to implement, and nearly impossible to extend to a heterogeneous environment because the operating system approach is based on the run-time image of platform-specific binary code. Checkpointing has been developed primarily for fault tolerance, by transferring and restarting the checkpointed processes on working machines. Checkpointing requires access to file systems and roll backs to a consistent global state in parallel processes. To checkpoint a process requires the additional step of saving the data contents of a process to a file periodically. Later, when recovery is needed, data from the checkpointed file will be read and restored in a new process to resume execution of the application. Checkpointing, although successful in homogeneous environments, is still difficult in heterogeneous environments because it is too slow to meet the needs of high performance network computing, especially for distributed parallel processing.
The mobile agent approach is an alternative to “true” process migration. Mobile agents are implemented on top of safe languages, such as Java. Interpreted, or safe, languages are more secure and promising for certain applications. The interpreter acts as a virtual machine to create an artificial homogeneous environment. However, these languages are less powerful, slow, and require rewrites of existing software.
In any approach to process migration, there is a need for efficient methods to recognize, collect, and restore data contents of a process. To migrate a process, all data necessary for future execution of the process has to be collected and then restored in the data segment of the new process on another machine.
There are two basic types of data objects that can be contained in the memory space of a process: the storage object and the memory reference object. The storage object (or a memory block) is a piece of memory space that is used to store a value such as a character, an integer, a floating-point number, or a memory address. The memory reference object (or a pointer, an indirect memory reference) is the memory address of a storage object. Accessing the content of a storage object via its pointer is called “dereferencing”.
FIG. 1
shows examples of storage objects and reference objects. A storage object comprises a memory address and a memory storage space. In
FIG. 1
, the storage object at memory address 3010 contains an integer value, 10. Likewise, the storage objects at addresses 2001 and 1120 contain a floating-point value, 9.99999, and a character, ‘A’, respectively.
A memory reference object is a memory address of a storage object. A memory reference object is also called a pointer. A pointer can be used to access a storage object and its contents. For instance, the pointer value 2001 is a reference to the storage object containing the value 9.99999. Dereferencing the pointer 2001 gives a floating-point value, 9.99999, as a result. At the address 0109, the storage object contain a memory address 1120 as its value. The pointer 1120 is a reference to the storage object a

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Data collection and restoration for homogeneous or... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Data collection and restoration for homogeneous or..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Data collection and restoration for homogeneous or... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2951327

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.