Tech moves fast! Stay ahead of the curve with Techopedia!
Join nearly 200,000 subscribers who receive actionable tech insights from Techopedia.
Atom is a concurrent and domain specific programming language that is used for real-time and embedded applications. It features compile time task scheduling and produces code with improved memory usage and execution time. Atom's concurrency model eliminates requirements for mutual exclusion algorithms.
Developed in 2007, Atom was released as open source in April of that year. It was designed to maximize operations executed in a given clock cycle without violating atomic operation semantics. However, Atom also balances processing loads and minimizes timing latencies.
Atom's circuit description is comprised of a set of state elements and rules. Every rule is made up of two components: state updates and enabling conditions. When rules are enabled, actions are selected to execute atomically. Rules are assigned linear and global priority, and multiple rules may be written to the same state element. Data dependencies between rules form a graph. Cyclic graphs are preferred as rules and may be sequentially composed. Compilers order rules to minimize edges that feed back from low to high priority rules. Because rule pairs are mutually exclusive, edges are not critical for a rule data dependency graph.
Atom objects (also known as active objects) are active entities similar to multithreaded servers. All processed messages create new threads within objects. Threads are sometimes created simultaneously during the creation of an object to execute internal activities. Thread execution is not preemptive, and only one thread is active in an object at a time. Threads relate to activation conditions that determine object states compatible with execution. Atom models are associated with features (like state notification, abstract states and state predicates) and are integrated with message passing and thread scheduling.