摘要:
An embodiment of the present invention provides an efficient and robust way to facilitate interoperability between two or more processes which were initially written to execute on top of two different operating systems but instead execute on top of a third operating system. Typically, the preferred embodiment begins by launching a parent process which was initially written to execute on top of a first operating system. The preferred embodiment then obtains a context object that implements a naming graph for the parent process. The context object includes bindings between a given set of names and an associated set of objects that are specific to the first operating system. At some point during execution of the parent process, the parent process spawns a child process which was initially written to execute on top of a second operating system. Next, the parent process instantiates a copy of its context object. The parent process then performs a context merge operation which ensures that object names used by the second process are interpreted relative to a context object associated with the second operating system before (or in lieu of) being interpreted relative to the context object for the first operating system. Once the context merge operation is complete, the new context object is passed to the child process and execution of the second process begins. System calls initiated by the child process will therefore be interpreted relative to the name space for the second operating system. In this way two processes which were initially written to execute on top of two different operating systems can interoperate while executing on top of yet a third operating system.
摘要:
A linkage editor executing at a server receives instructions for packaging software components that are required for program execution at a client. The linkage editor generates an output file by iteratively analyzing the program for references to other software components and extracting those components from their parent classes. The linkage editor sends the completed output file to an interface task, which transmits it to the client.
摘要:
A file system includes a file allocation table (FAT) and a file allocation table extension. Each FAT element of the file allocation table corresponds to a unique cluster on disk and represents the status of that cluster. These FAT elements are indexed by a cluster number that corresponds to that cluster on disk. Each element of the file allocation table extension does not correspond to any region on disk. Writing a file divided into clusters to disk first involves determining whether the cluster may be represented by a hole. If not, the cluster is written to disk at a particular cluster number and a status indicator is stored in the file allocation table at a FAT element indexed by that cluster number indicating that the cluster is allocated. If the cluster may be represented by a hole, a status indicator is stored in the file allocation table extension at an element indicating that the cluster is not stored on the disk of the computer. The status indicators in the FAT and FAT extension form a linked list representing the clusters of a file. The holes of the FAT extension may also be used to store compressed files. A plurality of file allocation table extensions may be used. One file allocation table extension may indicate holes in stored data that result from expanded files having clusters full of zeros. Additional file allocation table extensions may be used to represent holes in stored data that result from the use of various compression algorithms on the data. Each FAT extension may represent holes resulting from the use of a different compression algorithm.
摘要:
A task executing at a server receives a request to package program code for remote execution on a client, and determines the software components that already reside at the client. The task uses this information to formulate a set of instructions to another task that creates the package. The created package is transmitted to the client, and program execution begins.
摘要:
A linkage editor executing at a server receives instructions for packaging software components that are required for program execution at a client. The linkage editor generates an output file by iteratively analyzing the program for references to other software components and extracting those components from their parent classes. The linkage editor sends the completed output file to an interface task, which transmits it to the client.
摘要:
A system for controlling a device using a computer coupled to the device through a communication medium. The device contains an program code capable of generating control signals used by the device. A message is broadcast from the device across the communication medium indicating the existence of the device on the communication medium. The computer requests transmission of the device program code across the communication medium. The device then transmits the program code from the device to the computer. The program code is executed by the computer to generate control signals for controlling the device.
摘要:
A method, apparatus, and computer-usable medium for compressing data in a file system utilizing the concept of "holes". A mapping table in a file system maps the logical blocks of a file to actual physical blocks on disk where the data is stored. Blocks may be arranged in units of a cluster, and the file may be compressed cluster-by-cluster. Holes are used within a cluster to indicate not only that a cluster has been compressed, but also the compression algorithm used. Different clusters within a file may be compressed with different compression algorithms. A unit of data is compressed, with the result that the file occupies fewer physical blocks than it has logical blocks. The mapping table is updated to indicate that for a given unit of data compressed, fewer physical blocks are needed. Certain logical blocks belonging to this unit of data are not mapped to physical blocks but are mapped to a hole. A hole indicates that the unit of data was compressed, and may also indicate the particular compression algorithm used to compress the unit of data. If a unit of data begins or ends within the middle of a cluster, to avoid overwriting the data not to be changed the whole cluster must first be read from disk. If a hole indicates the cluster had been compressed, the data must be expanded first. The cluster is read into a buffer and the portion to be changed is overwritten. The cluster is compressed and written back to disk. Those clusters within which the unit of data neither begins nor ends may be written to directly.
摘要:
Large files in a file system are mapped by extents of contiguous indirect blocks in order to reduce the time for read or write access to the large files while allowing allocation of data blocks one at a time. The inode of a file includes an indication of whether file mapping metadata of the file includes either an extent of contiguous indirect blocks or a tree of blocks. In a preferred mapping scheme, an inode contains an array of block pointer entries, and each entry includes a flag indicating whether the block pointer is pointing to either an extent of indirect blocks or a tree of blocks. For sharing of data blocks between files, the block pointer fields of the indirect blocks each contain an ownership flag indicating whether the pointed-to block is shared or not.
摘要:
Disclosed is a system having a power input line. A power supply facility provides the system with a combined set of signals including a power signal and a status signal over the power input line.Additionally, disclosed is a system having at least two power input lines. Uninterruptible power supply facilities provide the system with combined sets of signals including a power signal and a status signal over the power input lines. Each combined set of signals includes a unique UPS identifier, which can be used to determine whether power sources for power input lines are unique.
摘要:
An apparatus and method for locating free data blocks in a microprocessor-based system for which snapshots are maintained. The snapshots are stored periodically, but only a subset of live snapshots is retained in order to reduce the total amount of storage needed for the snapshot information, such that their snapshot numbers are not sequential and there are gaps in the snapshot times. For each data block to be accessed, an allocation time and a deallocation time are stored in an allocation table. When a data block is needed, its allocation and deallocation times are compared with the live snapshot times to determine whether that data block is available. If not, the system iterates through the other data block allocation information until a free data block is located. If so, the system writes to that data block, and repeats the procedure as necessary to locate additional free data blocks.