I am used to the word primitive being used for basic data types: boolean, integer, float, etc. However, in William Stallings' Operating Systems: Internals and Design Principles, he uses it in the context of operating system algorithms referring to some callable (function or instruction); for example, he says that send
and receive
is the pair of primitives which "is the minimum set of operations needed for processes to engage in message passing" (7th edition, 233). Am I rightly understanding this to mean "a basic building block" (just as when referring to data types), an operation which is taken for granted in the construction of an algorithm? Is this a widespread usage, or something peculiar to Stallings? What is the best way to define primitive given this usage?
For me, it means something that cannot be decomposed (people use also the atomic word sometimes in that sense, but atomic is often also used for explanation on concurrency or parallelism with a different meaning).
For instance, on Unix (or Linux) the system calls, as seen by the application are primitive or atomic, they either happen or not (sometimes, they got interrupted and give an EINTR
or ERESTART
error).
And inside an interpreter, or even in the formal specification, of a language, the primitive are those operations which you cannot define, and which the interpreter deals with specially. Very often, cons
is a primitive operation for Lisp dialects.