Abstract:
Embodiments of the present invention provide an architecture for securely and efficiently executing byte code generated from a general programming language. In particular, a computer system is divided into a hierarchy comprising multiple types of virtual machines. A thin layer of software, known as a virtual machine monitor, virtualizes the hardware of the computer system and emulates the hardware of the computer system to form a first type of virtual machine. This first type of virtual machine implements a virtual operating domain that allows running its own operating system. Within a virtual operating domain, a byte code interpreter may further implement a second type of virtual machine that executes byte code generated from a program written in a general purpose programming language. The byte code interpreter is incorporated into the operating system running in the virtual operating domain. In addition, an operating system running in a virtual operating domain may be configured as a special purpose operating system that is optimized for the functions of a particular byte code interpreter.
Abstract:
Embodiments of the present invention provide an architecture for efficiently loading and executing byte code generated from a general programming language. In particular, a byte code interpreter implements a virtual machine that executes the byte code and is divided into a kernel component and one or more user components. The kernel component of the virtual machine is integrated into the operating system kernel. The user component runs in the same virtual address space as the applet, provides support for executing an applet and couples the applet to the operating system. In addition, the kernel component of the virtual machine may share code with multiple user components.
Abstract:
An embodiment relates generally to an apparatus for debugging. The apparatus includes a memory configured to store data and an arithmetic logic unit configured to perform logical and arithmetic operations. The apparatus also includes a control unit configured to interface with the memory and arithmetic logic unit and to decode instructions. The control unit is configured to write a data state designated to be overwritten by a currently executing instruction to a buffer allocated in the memory in response to a trace debug flag being set.
Abstract:
An embodiment relates to a method of managing primitives. The method includes providing a data structure available in user-space where the data structure comprises at least one futex. The method also includes detecting a termination of the process and searching the data structure for status of the at least one futex. The method further includes releasing the at least one futex in response to status of the at least one futex being held and setting a flag for at least one futex. The method further includes notifying at least one process waiting for the released at least one futex.
Abstract:
An embodiment generally pertains to a method of secure address handling in a processor. The method includes detecting an instruction that implicitly designates a target address and retrieving an encoded location associated with the target address. The method also includes decoding the encoded location to determine the target address. Another embodiment generally relates to detecting an instruction having an operand designating an encoded target address and determining a location of a target instruction associated with the target address. The method also includes determining a location of a subsequent instruction and encoding the location of the subsequent instruction. The method further includes storing the encoded location of the subsequent instruction.
Abstract:
An embodiment relates to a method of managing primitives. The method includes providing a data structure available in user-space where the data structure comprises at least one futex. The method also includes detecting a termination of the process and searching the data structure for status of the at least one futex. The method further includes releasing the at least one futex in response to status of the at least one futex being held and setting a flag for at least one futex. The method further includes notifying at least one process waiting for the released at least one futex.
Abstract:
A method and apparatus for facilitating availability of object data types at runtime are described. In one embodiment, the method may include parsing debug information generated by a compiler for a software program, identifying in the debug information desired data types and objects associated with the desired data types, and creating for each desired data type an object list including references to associated objects. The method may further include adding resulting object lists to a set of object files generated by the compiler for the software program. The set of object files with the added object lists may then be used by a linker when creating an executable file for the software program.
Abstract:
An embodiment relates generally to an apparatus for debugging. The apparatus includes a memory configured to store data and an arithmetic logic unit configured to perform logical and arithmetic operations. The apparatus also includes a control unit configured to interface with the memory and arithmetic logic unit and to decode instructions. The control unit is configured to write a data state designated to be overwritten by a currently executing instruction to a buffer allocated in the memory in response to a trace debug flag being set.
Abstract:
An embodiment of the invention pertains to a method of filtering messages in a kernel of an operating system. The method includes receiving message traffic from network and determining information that indicates contents of each message in the kernel. The method also includes selectively passing the message from the kernel to one or more applications based on the information and according to at least one criterion, where the least one criterion is associated with a respective application of the one or more applications.
Abstract:
A computing device includes a local directory service cache. The local directory service cache is a live database. The directory service cache is stored in a shared memory space. In certain embodiments of the invention, client processes needing directory services can directly access the local directory service cache via memory mapping. A caching program updates and maintains the database and obtains the needed data if a cache miss is encountered. Some socket communications between the client processes and the caching program may be used to update database entries, notify the caching program of cache misses, etc.