33 research outputs found

    Meta-evaluation of Actors with Side-effects

    Get PDF
    This report describes research done at the Artificial Intelligence Laboratory of the Massachusetts Institute of Technology. Support for the laboratory's artificial intelligence research is provided in part by the Advanced Research Projects Agency of the Department of Defense under Office of Naval Research contract N000-14-74-C-0643.Meta-evaluation is a process which symbolically evaluates an actor and checks to see whether the actor fulfills its contract (specification). A formalism for writing contracts for actors with side-effects which allow sharing of data is presented. Typical examples of actors with side-effects are the cell, actor counterparts of the LISP function rplaca and rplacd, and procedures whose computation depends upon their input history. Meta-evaluation of actors with side-effects is carried out by using situational tags which denotes a situation (local state of an actor systems at the moment of the transmissions of messages). It is illustrated how the situational tags are used for proving the termination of the activation of actors.MIT Artificial Intelligence Laborator

    Protection and Synchronization in Actor Systems

    Get PDF
    This paper presents a unified method [called ENCASING] for dealing with the closely related issues of synchronization and protection in actor systems [Hewitt et al. 1973a, 1973b, 1974a; Greif and Hewitt 1975]. Actors are a semantic concept in which no active process is ever allowed to treat anything as an object. Instead a polite request must be extended to accomplish what the activator [process] desires. Actors enable us to define effective and efficient protection schemes. Vulnerable actors can be protected before being passed out by ENCASING their behavior in a guardian which applies appropriate checks before invoking the protected actor. Protected actors can be freely passed out since they work only for actors which have the authority to use them where authority can be decided by an arbitrary procedure. Synchronization can be viewed as a [time-variant] kind of protection in which access is only allowed to the encased actor when it is safe to do so.MIT Artificial Intelligence Laborator

    Formal Derivation of Concurrent Garbage Collectors

    Get PDF
    Concurrent garbage collectors are notoriously difficult to implement correctly. Previous approaches to the issue of producing correct collectors have mainly been based on posit-and-prove verification or on the application of domain-specific templates and transformations. We show how to derive the upper reaches of a family of concurrent garbage collectors by refinement from a formal specification, emphasizing the application of domain-independent design theories and transformations. A key contribution is an extension to the classical lattice-theoretic fixpoint theorems to account for the dynamics of concurrent mutation and collection.Comment: 38 pages, 21 figures. The short version of this paper appeared in the Proceedings of MPC 201

    Garbage Collection in a Very Large Address Space

    Get PDF
    This research was done at the Artificial Intelligence Laboratory of the Massachusetts Institute of Technology and was supported by the Office of Naval Research under contract number N00014-75-C-0522.The address space is broken into areas that can be garbage collected separately. An area is analogous to a file on current systems. Each process has a local computation area for its stack and temporary storage that is roughly analogous to a job core image. A mechanism is introduced for maintaining lists of inter-area links, the key to separate garbage collection. This mechanism is designed to be placed in hardware and does not create much overhead. It could be used in a practical computer system that uses the same address space for all users for the life of the system. It is necessary for the hardware to implement a reference count scheme that is adequate for handling stack frames. The hardware also facilitates implementation of protection by capabilities without the use of unique codes. This is due to elimination of dangling references. Areas can be deleted without creating dangling references.MIT Artificial Intelligence Laboratory Department of Defense Office of Naval Researc

    High-level real-time programming in Java

    Full text link
    Real-time systems have reached a level of complexity beyond the scaling capability of the low-level or restricted languages traditionally used for real-time programming. While Metronome garbage collection has made it practical to use Java to implement real-time systems, many challenges remain for the construction of complex real-time systems, some specic to the use of Java and others simply due to the change in scale of such systems. The goal of our research is the creation of a comprehensive Java-based programming environment and methodology for the creation of complex real-time systems. Our goals include construction of a provably correct real-time garbage collec-tor capable of providing worst case latencies of 100 s, capa-ble of scaling from sensor nodes up to large multiprocessors; specialized programming constructs that retain the safety and simplicity of Java, and yet provide sub-microsecond la-tencies; the extension of Java's \write once, run anywhere" principle from functional correctness to timing behavior; on-line analysis and visualization that aids in the understanding of complex behaviors; and a principled probabilistic analy-sis methodology for bounding the behavior of the resulting systems. While much remains to be done, this paper describes the progress we have made towards these goals

    This is not the End: Rethinking Serverless Function Termination

    Full text link
    Elastic scaling is one of the central benefits provided by serverless platforms, and requires that they scale resource up and down in response to changing workloads. Serverless platforms scale-down resources by terminating previously launched instances (which are containers or processes). The serverless programming model ensures that terminating instances is safe assuming all application code running on the instance has either completed or timed out. Safety thus depends on the serverless platform's correctly determining that application processing is complete. In this paper, we start with the observation that current serverless platforms do not account for pending asynchronous I/O operations when determining whether application processing is complete. These platforms are thus unsafe when executing programs that use asynchronous I/O, and incorrectly deciding that application processing has terminated can result in data inconsistency when these platforms are used. We show that the reason for this problem is that current serverless semantics couple termination and response generation in serverless applications. We address this problem by proposing an extension to current semantics that decouples response generation and termination, and demonstrate the efficacy and benefits of our proposal by extending OpenWhisk, an open source serverless platform

    A concurrent, generational garbage collector for a multithreaded implementation of ML

    Get PDF
    International audienceThis paper presents the design and implementation of a "quasi real-time" garbage collector for Concurrent Caml Light, an implementation of ML with threads. This two-generation system combines a fast, asynchronous copying collector on the young generation with a non-disruptive concurrent marking collector on the old generation. This design crucially relies on the ML compile-time distinction between mutable and immutable objects

    Symbol IC-Evaluation as an Aid to Program Synthesis

    Get PDF
    This report describes research done at the Artificial Intelligence laboratory of the Massachusetts Institute of Technology. Support for the laboratory's artificial intelligence research is provided in part by the Advance Research Projects Agency of the Department of Defence under Office of Naval Research contract N00014-75-C0522.Symbolic-evaluation is the process which abstractly evaluates an actor program and checks to see whether the program fulfills its contract (specification). In this paper, a formalism based on the conceptual representation is proposed as a specification language and a proof system for programs which may include change of behavior (side-effects). The relation between algebraic specifications and the specifications based on the conceptual representation is discussed and the limitation of the current algebraic specifications is pointed out. The proposed formalism can deal with problems of side-effects which have been beyond the scope of Floyd-Hoare proof rules. Symbolic-evaluation is carried out with explicit use of the notion of situation (local state of an actor system). Uses of situational tags in assertions make it possible to state relations holding between objects in different situations. As an illustrative example, an impure actors which behave like a queue is extensively examined. The verification of a procedure which deals with the queue-actors and the correctness of its implementations are demonstrated by the symbolic-evaluation. Furthermore how the symbolic-evaluation serves as an aid to program synthesis is illustrated using two different implementations of the queue-actor.MIT Artificial Intelligence Laboratory Department of Defense Advanced Research Projects Agenc

    Eliminating read barriers through procrastination and cleanliness

    Get PDF
    Managed languages use read barriers to interpret forwarding pointers introduced to keep track of copied objects. For example, in a split-heap managed runtime for a multicore environment, an object initially allocated on a local heap may be copied to a shared heap if it becomes the source of a store operation whose target location resides on the shared heap. As part of the copy operation, a forwarding pointer may be established to allow existing references to the local object to reference the copied version. In this paper, we consider the design of a managed runtime that avoids the need for read barriers. Our design is premised on the availability of a sufficient degree of concurrency to stall operations that would otherwise necessitate the copy. Stalled actions are deferred until the next local collection, avoiding exposing forwarding pointers to the mutator. In certain important cases, procrastination is unnecessary- lightweight runtime techniques can sometimes be used to allow objects to be eagerly copied when their set of incoming references is known, or when it can be determined that having multiple copies would not violate program semantics. Experimental results over a range of parallel benchmarks on a number of different architectural platforms including an 864 core Azul Vega 3, and a 48 core Intel SCC, indicate that our approach leads to notable performance gains (20- 32 % on average) without incurring any additional complexity

    Lightweight Block-level Concurrent Sweeping for JavaScript Garbage Collection

    Get PDF
    ํ•™์œ„๋…ผ๋ฌธ (์„์‚ฌ)-- ์„œ์šธ๋Œ€ํ•™๊ต ๋Œ€ํ•™์› : ์ „๊ธฐยท์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€, 2014. 8. ์ด์žฌ์ง„.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์›นํŽ˜์ด์ง€์˜ ๋™์ ์ธ ๋™์ž‘์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๋™์  ํƒ€์ž… ์–ธ์–ด์ด๋‹ค. ์ฃผ๋กœ ๋ฐ์Šคํฌํƒ‘๊ณผ ์„œ๋ฒ„์˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉ๋˜์–ด ์™”๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‰ฌ์šด ๋ฌธ๋ฒ•์  ํŠน์„ฑ์œผ๋กœ ์ธํ•ด, ์ตœ๊ทผ ๋ฐ์Šคํฌํƒ‘ ์„œ๋ฒ„๋ฅผ ๋„˜์–ด ๋ชจ๋ฐ”์ผ์—์„œ ์‚ฌ์šฉ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ธฐ์กด์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„๋“ค์€, ์ฃผ๋กœ๋™์ž‘ํ•˜๋Š” ํ™˜๊ฒฝ์ด ์ž์›์ด ํ’๋ถ€ํ•œ ๋ฐ์Šคํฌํƒ‘๊ณผ ์„œ๋ฒ„์ด๋ฏ€๋กœ, ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ์ดˆ์ ์„ ๋งž์ถ”์—ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์‹œ์Šคํ…œ ์ž์›์ด ํ•œ์ •์ ์ธ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์— ์‚ฌ์šฉ๋˜๋ฉด์„œ, ๊ฐ€๋น„์ง€ ์ปฌ๋ž™์…˜์„ ํ†ตํ•ด ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์ด ์ฆ๋Œ€๋˜๊ณ  ์žˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—”์ง„๋“ค์€ ๊ณ ์œ ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํž™์„๊ด€๋ฆฌํ•˜๊ธฐ์œ„ํ•ด, ์ž์ฒด์ ์ธ ๊ฐ€๋น„์ง€ ์ปฌ๋ž™์…˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ๊ณต๊ฐ„์„ ์ตœ์†Œํ™” ํ•˜๊ธฐ ์œ„ํ•ด, ๊ฐ€๋น„์ง€ ์ปฌ๋ž™์…˜์ด ๋” ์ž์ฃผ ๋ถˆ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๊ฐ€๋น„์ง€ ์ปฌ๋ž™์…˜์˜ ๋นˆ๋ฒˆํ•œ ํ˜ธ์ถœ๋กœ ์ธํ•œ ์‹œ์Šคํ…œ ์ž์› ์†Œ๋ชจ๋กœ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์„ฑ ๋Šฅ์„ ์ €ํ•˜ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด์ฒ˜๋Ÿผ, ๊ฐ€๋น„์ง€ ์ปฌ๋ž™์…˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ์†Œํšจ๊ณผ์™€ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ๊ฐ„์—๋Š” ์ƒ์ถฉ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋ณธ ๋…ผ๋ฌธ์—์„œ๋Š” ๋ณดํŽธ์ ์œผ๋กœ ์“ฐ์ด๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ž™์…˜ ๊ธฐ๋ฒ•์ธ ๋งˆํฌ ์•ค ์Šค์œ• ๊ธฐ๋ฒ•์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ž™ํ„ฐ์— ๋Œ€ํ•ด ์„ฑ๋Šฅ ์ €ํ•˜ ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ–ฅ์ƒ ๊ธฐ๋ฒ•์„ ์ œ์‹œํ•œ๋‹ค. ์Šค์œ„ํ•‘๊ณผ์ •์„ ๋ณ„๋„์˜ ์“ฐ๋ ˆ๋“œ์— ํ• ๋‹นํ•˜๋ฉด์„œ, ๋งˆํ‚น ํ›„์— ๋ฐœ์ƒํ•˜๋Š” ๋นˆ ๋ธ”๋Ÿญ๋“ค์„ ์กฐ๊ธฐ์— ์ˆ˜๊ฑฐํ•˜์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ์‚ฌ์šฉํ•˜๊ณ  ๋‚จ์€ ๋ธ”๋Ÿญ๋“ค์€ ๋งˆํ‚น ์‹œ์— ๋ณ„๋„์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด ์†Œ๋ฉธํ•œ๋‹ค. ์ด๋Š” ๋™๊ธฐํ™” ๋น„์šฉ ์—†์ด ํž™ ๊ณต๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ œ์•ˆํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์›นํ‚ท ์—”์ง„์— ํฌํ•จ๋˜์–ด์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ธ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ฝ”์–ด์— ๊ตฌํ˜„๋˜์—ˆ๋‹ค. ์„ฑ๋Šฅ ๋น„๊ต๋Š” ARM ๊ธฐ๋ฐ˜์˜ ๋ชจ๋ฐ”์ผ ์šด์˜์ฒด์ œ์—์„œ ์ง„ํ–‰๋˜์—ˆ์œผ๋ฉฐ, ์„ฑ๋Šฅ ์ €ํ•˜์—†์ด ์ƒ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ์†Œํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.JavaScript is a dynamic-typed language originally developed for dynamic behaviors of web pages on client-side. It has been mainly used for web application development on desktop and servers. Because of its popularity and rapid development style, it is now also used beyond desktop and servers, especially on mobile devices. Most JavaScript engines has been improved putting higher priority on better performance because their target machines are desktop and servers having abundant system resources. However, as it starts to be used on embedded devices which have limited resources, it is required on JavaScript engines to make efficent use of system resources, esepecially memory resource. JavaScript engines uses their own garbage collection algorithms to manage JavaScript heap. To reduce memory footprint of JavaScript, garbage collections should be called more frequently. However, since aggressive use of time consuming operations in garbage collection can slow down the JavaScript application, there is a trade-off between the effectiveness and the execution time of garbage collection. In this paper, we present a lightweight, block-level concurrent sweeping mechanism for a mark-and-sweep garbage collector. The sweeping process is detached to an additional thread to eagerly collect free memory blocks and recycle it. To minimize the overhead that comes from the synchronization between the mutator thread and the new sweeping thread, we have chosen a course grained block-level collecting scheme for sweeping. To avoid contention that comes from object destruction, we execute the object destruction phase concurrently with the foreground marking phase. We have implemented our algorithm in JavaScript Core (JSC) engine embedded in the WebKit browser that uses a variant of mark-and-sweep algorithm to manage JavaScript objects. The original garbage collection implementation performs lazy sweeping that cannot reuse the free blocks. We evaluate our implementation on an ARM-based mobile system and show that memory utilization of the system is significantly improved without performance degradation.์ดˆ๋ก i ์ œ 1 ์žฅ ์„œ๋ก  1 ์ œ 2 ์žฅ ๋ณธ๋ก  5 2.1 ๊ฐ€๋น„์ง€ ์ปฌ๋ž™์…˜ ๊ฐœ๊ด€ 5 2.2 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ฝ”์–ด์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ 6 2.2.1 ํž™ ๊ณต๊ฐ„ ํ• ๋‹น 7 2.2.2 ๊ฐ€๋น„์ง€ ์ปฌ๋ž™์…˜ 8 2.2.3 ์ ์ฆ์  ์Šค์œ„ํ•‘ ๊ธฐ๋ฒ•(Incremental Sweeping) 11 2.3 ๋ธ”๋Ÿญ์ˆ˜์ค€ ๋™์‹œ์  ์Šค์œ„ํ•‘ ๊ธฐ๋ฒ• ๊ตฌํ˜„ 13 2.3.1 ํ•ต์‹ฌ ์•„์ด๋””์–ด 13 2.3.2 ๋ธ”๋Ÿญ ์ˆ˜์ค€ ์Šค์œ„ํ•‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜ 15 2.3.3 ์ ์ฆ์  ์Šค์œ„ํ•‘ ๊ธฐ๋ฒ•์˜ ๋ณ‘์šฉ 17 2.4 ์‹คํ—˜ ๊ฒฐ๊ณผ 17 2.4.1 ์‹คํ—˜ ํ™˜๊ฒฝ 18 2.4.2 ๋ฒค์น˜๋งˆํฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ 18 2.4.3 ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํŒจํ„ด ์ธก์ • 20 2.4.4 ๊ฐ€๋น„์ง€ ์ปฌ๋ž™์…˜ ํ›„ ํž™ ๊ณต๊ฐ„ ์ธก์ • 21 2.4.5 ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ธก์ • 23 2.4.6 ์„ฑ๋Šฅ ๋ณ€ํ™” 32 2.5 ๊ด€๋ จ ์—ฐ๊ตฌ 34 ์ œ 3 ์žฅ ๊ฒฐ๋ก  37 ์ฐธ๊ณ ๋ฌธํ—Œ 44 Abstract 45Maste
    corecore