(1) In a network, a hierarchy of software layers in both clients and servers that are required to communicate with each other. See
protocol stack and
OSI model.
(2) The set of programs used in the computer. A stack can refer to software infrastructure only (see
software stack) or to the applications the company gives its employees (see
application stack). It may also refer to an industry set or a developer set of programs. For example, the phrase "they don't offer a complete stack" could imply that a software company has an incomplete set of applications for a particular industry or niche.
(3) A set of hardware registers or a reserved amount of memory used for arithmetic calculations, local variables or to keep track of internal operations (the sequence of routines called in a program). For example, one routine calls another, which calls another and so on. As each routine is completed, the computer returns control to the calling routine all the way back to the first one that started the sequence. Stacks used in this way are LIFO based: the last item, or address, placed (pushed) onto the stack is the first item removed (popped) from the stack.
Stacks are also used to hold interrupts until they can be serviced. Used in this manner, they are FIFO stacks, in which the first item onto the stack is the first one out of the stack.
It Can Be "The" Programming Language
An entire programming language can be stack based; for example, Bitcoin's Script is entirely stack based and embedded in its transactions (see
Bitcoin transaction). See
internal stack failure,
stack dump and
stack fault.
(4) Various functions in a Mac (see
Stacks and
Hypercard).