Agents are not independent objects. They must have a context to function properly. Each copy of Agent Information Server may open one or more agent contexts in which any number of agents may operate. When an agent context is opened, a request is made for workspace memory and stack memory. The agent context is the environment in which the individual agents will operate.
While Agent Information Server is primarily an agent-oriented database, there is a significant memory management component in every Agent Information Server application. Often hundreds of megabytes of RAM memory are required to run the agent context of a complex application. So while the disk component often involves many gigabytes of agent repositories, the memory management component is often not insignificant. Agent Information Server uses the latest in advanced memory management strategies, supporting full garbage collection, freeing the agents from such concerns.
The complete contents of an agent context's RAM memory, known as its Workspace, can be saved and loaded (see the loadWorkspace and saveWorkspace built-in functions). The Workspace can be cleared to start loading fresh new agents, and certain global variables, in the agent context, can be locked to protect them from inadvertent clearing.
At context startup, Agent Information Server loads all of its built-in functions into RAM memory. This includes the Lisp compiler, the Virtual Machine, the Memory Manager, the core Repository Manager, etc. Each built-in function is made available in one or more global symbols.
All of the basic building blocks of Agent Information Server are contained in its global symbols. In addition, Agent Information Server supports user defined global symbols, allowing the user to assign any valid Agent Information Server object to the newly created global symbol. User defined global symbols behave just like their built-in cousins; however, Agent Information Server even allows the user to redefine any of the Agent Information Server built-in Function symbols.
System variables always begin with the underscore character _ to distinguish them from standard built-in functions or user defined global symbols. Many system variables contain important system configuration information. Other system variables are delivered empty, and are provided, by convention, for the server side agents to store important coordinating information.