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:
A synchronous collaboration environment that supports real-time collaboration of multiple participants, each having shared and independent views of the shared workspace. Multiple views per participant are provided. Some of the views seen by a participant can be shared views with the usual common cursor and annotation tools. The shared views need not be homogeneous, which means that for a given view, each participant can see more than just some common data in his or window for the view. What the participant sees separately from the common data can make his or her shared view different from that of other participants. The view can be different due to different data being exposed in the view. Some of the views seen by a participant can be independent views. This allows to the participant synchronous working with the shared workspace alone on his or her own. The collaboration system includes a user interface and support for aligning views including goto and overlaying. Participants can modify the workspace through their views in a synchronized manner provided the sharing and access rights of their views allow them to do so.
Abstract:
Effective real-time collaboration across remote sites in which any type of data can be shared in a common work space in a consistent manner is made possible by an annotation layer having multiple distinct modes of operation during a collaborative session with two or more people sharing the same work space. One mode is a discussion mode in which one or more users simply share a common view of the shared data and manipulate the view independent of the shared data. During the discussion mode, all user input is handled by the annotation layer which interprets user inputs to move common cursors, create, move or delete markings and text which, since the annotation layer is transparent, appear over the application. Another mode is an edit mode in which one or more users actually edit the shared data. The applications and the data are synchronized among all clients to display the same view. Manipulating the view includes moving a common cursor and placing markings on the common view using text and/or drawing tools.
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:
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.