Abstract:
A method of memory management can include creating an initial root set of pointers for a program during execution of the program and performing a marking process by iteratively marking referred objects of each pointer of the root set and expanding the root set with filtered, encoded pointers. The method also can include identifying each non-live object for any marked object as red-marked and performing, using a processor, a re-marking process on the root set in which red-marked objects are excluded. Each object of the root set not marked can be designated as including a memory leak.
Abstract:
A decision support system called Mounties that is designed for managing applications and resources using rule-based constraints in scalable mission-critical clustering environments. Mounties consists of four active service components: (1) a repository of resource proxy objects for modeling and manipulating the cluster configuration; (2) an event notification mechanism for monitoring and controlling interdependent and distributed resources; (3) a rule evaluation and decision processing mechanism; and (4) a global optimization service for providing decision making capabilities. The focus of this paper is on the design of the first three services that together connect and coordinate the distributed resources with the decision making component.
Abstract:
An analysis and source-to-source transformation framework covers dialects of programming languages that lack formal definition for all individual dialects. Multiple instantiations of the same compiler front-end tools can be used with different settings to create distinct intermediate forms and maps. Intermediate forms and maps are used in an individual analysis and source-to-source transformation context, and performing the analysis and source-to-source transformation thereupon. A unified tool set is desirably provided, including standard compiler front-end tools and code transformation/generation tools, wherein source code edits are carried out in order to make the source code more amenable to translation to intermediate forms. The analysis results or intermediate forms created by individual tools are used by other tools as well as further analyzed to create a map of the regions of validity and invalidity of the intermediate forms, and tracking the source-code edits performed in order to obtain the same. Among other benefits, this provides a choice of the best tools combination for maximum code analysis coverage.
Abstract:
A static, double-edge-triggered flip-flop has an upper data path and a lower data path connected between a data input node and an output terminal. The upper path includes a switch connected to a first data loop, and the lower path includes a switch connected to a second data loop. The first and second data loops share a forward path having a data-inverting circuit. In addition, each loop has a feedback path which contains only one element in the form of a switch. However, no data-inverting circuit is included in either of the feedback paths. Advantageously, all the elements of the flip-flop may be constructed using MOSFET transistors implemented according to any one of a variety of semiconductor technologies. In more than one particularly advantageous embodiments, the flip-flop is constructed using a total of twelve transistors. Through this simplified two-loop design, operational efficiency is improved, low metastability is achieved and costs of manufacture are lowered, all while maintaining low power requirements.
Abstract:
A distributed server for real-time collaboration is substituted for a centralized server to address the problem of the development of unacceptable communication and computation bottlenecks resulting from the use of a one-software-process-based centralized server running somewhere on the available network. The substitute distributed server improves scaleability of real-time collaboration by being based on multiple, independently-communicating, asynchronous, independent (i.e., no shared memory, data, variables, etc.) software processes. The processes can be distributed to multiple machines throughout the network and run simultaneously in order to avoid the centralized server's bottlenecks. To be used, a distributed server requires a disjoint, fully covering partitioning of a work space, wherein it can handle partition hierarchies and groups comprehensively. The distributed server solution is general because of the ability of distributed servers to work with different definitions of a modification. The distributed server solution is extensible because of its simple and comprehensive treatment of inter-partition synchronization.
Abstract:
Boxed pointers are disclosed, for all pointers, for safe and sequential or parallel use. Since a pointer box can be arbitrarily large, it supports any fat pointer encoding possible. The boxed pointers are managed out of the same heap or stack space as ordinary objects, providing scalability by a shared use of the entire program memory. The boxed pointers and objects are managed together by the same parallel, safe, memory management system including an optional precise, parallel garbage collector. To manage boxes independently of the garbage collector, explicit allocation and de-allocation means are provided including explicit killing of boxes using immediate or deferred frees. The entire system is constructed out of atomic registers as the sole shared memory primitive, avoiding all synchronization primitives and related expenses. Atomic pointer operations including pointer creation or deletion (malloc or free) are provided.
Abstract:
A concurrent, wait-free compiler/compiler front-end for C/C++ and other programming languages, comprising parallel stages that carry out the steps of character translation, line translation, macro rewriting, lexing, parsing, and handling errors in input text and translating it to an object form, with features including (a) long lexenes, (b) display modifiers, (c) look ahead isolation, (d) line-by-line processing followed by tokenization, (e) complete error handlers, and/or (f) precise and inline context switches.
Abstract translation:用于C / C ++和其他编程语言的并发等待编译器/编译器前端,包括执行字符转换,行转换,宏重写,词法,解析和处理输入文本中的错误的步骤的并行级,以及 将其转换为对象形式,其特征包括(a)长词,(b)显示修饰符,(c)预先隔离,(d)逐行处理,随后进行标记化,(e)完整的错误处理程序,以及 /或(f)精确和内联上下文切换。
Abstract:
A memory and access management system for reducing memory access errors or management errors or runtime errors while dynamically allocating, moving or de-allocating memory to one or more objects of an application program is disclosed. The object may have a data part containing one or more values and a pointer part containing one or more pointers. The system may include a heap memory pool containing memory space to be assigned to the object and a processor for reading the pointer part. An interface coupled with the processor may be provided for dynamically allocating, moving or de-allocating the data part of the object to defragment, manage or optimize the heap memory pool and updating the address location of the data part contained in one or more pointers upon moving the data part, thereby reducing memory access errors, management errors or runtime errors while allocating, moving or de-allocating memory to the object.
Abstract:
A decision support system called Mounties that is designed for managing applications and resources using rule-based constraints in scalable mission-critical clustering environments. Mounties consists of four active service components: (1) a repository of resource proxy objects for modeling and manipulating the cluster configuration; (2) an event notification mechanism for monitoring and controlling interdependent and distributed resources; (3) a rule evaluation and decision processing mechanism; and (4) a global optimization service for providing decision making capabilities. The focus of this paper is on the design of the first three services that together connect and coordinate the distributed resources with the decision making component.
Abstract:
Methods, compiler apparatus and a computer program product for compiling UPC source code are disclosed. UPC-unique constructs are converted into C-level form. The C-level constructs are inserted into the source code to form a combined code. The combined code is translated into an intermediate form, wherein any surviving UPC-unique components are discarded. All UPC-unique data or statements are converted to a form that can be handled by general compiler architectures, yet retain UPC properties. The resultant intermediate form is converted to compiled machine code. The generation of C-level constructs occurs at a compiler front end module, avoiding difficulties in intermediate code handling.