Glossary

absolute pathname See pathname.

access rights In an operating system, the rights of processes to access system-maintained objects. For example, the ability to write data into a file. Rights are recognized and enforced by the system, and typically are associated with capabilities. The passing of access rights in messages is supported by the 4.4BSD interprocess-communication facilities. For example, the local communication domain supports the transmission of file descriptors and their associated access rights.

address family A collection of related address formats, as found in a communication domain.

address format A set of rules used in creating network addresses of a particular format. For example, in the Internet communication domain, a version 4 IP host address is a 32-bit value that is encoded with one of four rules, according to the type of network on which the host resides.

Address Resolution Protocol (ARP) A communication protocol used to map one network address to another dynamically. For example, ARP is used in 4.4BSD to map Internet addresses into Ethernet addresses dynamically.

address translation A mechanism, typically implemented in hardware, that translates memory addresses supplied by a program into physical memory addresses. This facility is important in supporting multiprogramming because it allows an operating system to load programs into different areas of memory, and yet to have each program execute as though it were loaded at a single, fixed memory location.

advisory lock A lock that is enforced only when a process explicitly requests its enforcement. An advisory lock is contrasted with a mandatory lock, which is always enforced. See also mandatory lock.

AGE buffer list A list in the filesystem buffer cache. This list holds buffers whose contents have not yet proved useful—for example, read-ahead blocks. See also buffer cache; least recently used.

ancillary data Specially interpreted data sent on a network connection. Ancillary data may include protocol-specific data, such as addressing or options, and also specially interpreted data, called access rights.

anonymous object An anonymous object represents a region of transient backing storage. Pages of an anonymous object are zero-filled on first reference, and modified pages will be stored in the swap area if memory becomes tight. The object is destroyed when no references remain.

ARP See Address Resolution Protocol.

association In the interprocess-communication facilities, a logical binding between two communication endpoints that must be established before communication can take place. Associations may be long lived, such as in virtual-circuit–based communication, or short lived, such as in a datagram-based communication paradigm.

AST See asynchronous system trap.

asynchronous system trap (AST) A software-initiated interrupt to a service routine. ASTs enable a process to be notified of the occurrence of a specific event asynchronously with respect to its execution. In 4.4BSD, ASTs are used to initiate process rescheduling.

autoconfiguration phase A phase of operation that the system goes through when bootstrapping itself into operation. In the autoconfiguration phase, the system probes for hardware devices that might be present in the machine and attaches each device that it locates. See also attach routine; probe routine; slave routine.

background process In job-control–oriented process-management systems, a process whose process group is different from that of its controlling terminal; thus, this process is currently blocked from most terminal access. Otherwise, a background process is one for which the command interpreter is not waiting; that is, the process was set running with the “&” operator. The opposite of a background process is a foreground process.

backing storage Storage that is used to hold objects that are removed from main memory during paging and swapping operations. See also secondary storage. block In the filesystem, a unit of allocation. The filesystem allocates space in block-size units, or in fragments of block-size units.

block accounting The process of maintaining a count of the number of disk blocks available for writing in the Log-Structured Filesystem or for the storage of new data in either the Fast Filesystem or the Log-Structured Filesystem.

block device A random-access mass-storage device that supports a block-oriented interface—for example, a disk drive. See also character device.

block-device interface The conventions established for accessing block devices within the kernel. These conventions include the set of procedures that can be called to do I/O operations, as well as the parameters that must be passed in each call. See also character device interface.

block-device table A table within the kernel in which the device-driver routines that support the block-device interface for each device are recorded. The ordering of entries in the block-device table is important, because it defines the major-device number for block devices. See also character-device table.

block I/O I/O to a block device. block size The natural unit of space allocated to a file (filesystem block size), or the smallest unit of I/O that a block device can do (for disk devices, usually the sector size). In 4.4BSD, the filesystem block size is a parameter of the filesystem that is fixed at the time that the filesystem is created.

bootstrapping The task of bringing a system up into an operational state. When a machine is first powered on, it is typically not running any program. Bootstrapping initializes the machine, loads a program from secondary storage into main memory, and sets that program running.

bottom half With regard to system operation, the collection of routines in the kernel that is invoked as a result of interrupts. These routines cannot depend on any per-process state, and, as a result, cannot block by calling the sleep () routine. See also top half.

breakpoint fault A hardware trap that is generated when a process executes a breakpoint instruction.

broadcast A transmission to all parties. In a network, a broadcast message is transmitted to all stations attached to a common communication medium.

bss segment The portion of a program that is to be initialized to zero at the time the program is loaded into memory. The name bss is an abbreviation for “block started by symbol.” See also data segment; stack segment; text segment.

buffer cache A cache of recently used disk blocks. In 4.4BSD, approximately 10 percent of the main memory on the machine is used for the buffer cache. Most cache entries are maintained on a least-recently used list; some are kept on a separate AGE buffer list. See also AGE buffer list; least recently used.

buffered As in “buffered I/O”; a technique whereby data are held, or buffered, to minimize the number of I/O operations that are done. For example, the standard I/O library buffers output to files by accumulating data to be written until there is a full filesystem block to write, or until the application requests that the data be flushed to disk.

bus A standardized electrical and mechanical interconnection for components of a computer.

byte A unit of measure applied to data. A byte is almost always 8 bits. See also octet.

callback A scheme where a server keeps track of all the objects that each of its clients has cached. When a cached object is held by two or more clients and one of them modifies it, the server sends an eviction notice to all the other clients holding that object so that they can purge it from their cache. See also eviction notice; lease.

canonical mode A terminal mode. Characters input from a terminal or a pseudo-terminal that is running in canonical mode are processed to provide standard line-oriented editing functions, and input is presented to a process on a line-by-line basis. When the terminal is processing in noncanonical mode, input is passed through to the reading process immediately and without interpretation. Canonical mode is also known as cooked mode, and noncanonical mode is also known as raw mode. Cbreak mode is similar to raw mode, although some input processing is done.

capability Data presented by a process to gain access to an object. See also access rights.

catenet A network in which hosts are connected to networks with varying characteristics, and the networks are interconnected by gateways. The Internet is an example of a catenet.

cathode ray tube (CRT) A screen-display device commonly used in computer terminals. A terminal that includes a CRT is often called a CRT.

caught signal A signal the delivery of which to a process results in a signal-handler procedure being invoked. A signal handler is installed by a process with the sigaction system call.

C-block The buffer that holds the actual data in a C-list data structure.

cbreak mode A mode of operation for a terminal device whereby processes reading from the terminal receive input immediately as it is typed. This mode differs from raw mode in that certain input processing, such as interpreting the interrupt character, is still performed by the system. See also canonical mode.

central processing unit (CPU) The primary computational unit in a computer. The CPU is the processing unit that executes applications. Additional processing units may be present in a computer—for example, for handling I/O.

character A datum that represents a single printable or control symbol. Characters are usually 8 or 16 bits long. See also byte; octet.

character device A device that provides either a character-stream oriented I/O interface or, alternatively, an unstructured (raw) interface. For example, a terminal multiplexer is a character device that exhibits a character-oriented I/O interface, whereas all magnetic-tape devices support a character-device interface that provides a raw interface to the hardware. Devices that are not character devices are usually block devices. See also block device.

character-device interface The conventions established for accessing character-oriented devices within the kernel. These conventions include the set of procedures that can be called to do I/O operations, as well as the parameters that must be passed in each call. See also block-device interface.

character-device table A table within the kernel in which the device-driver routines that support the character-device interface for each device are recorded. The ordering of entries in the character-device table is important because it defines the major-device number for character devices. See also block-device table.

checkpoint The task of writing all modified information stored in volatile memory to stable storage. A filesystem does a checkpoint by writing all modified information in main memory to disk so that the filesystem data structures are consistent.

checksum The value of a mathematical function computed for a block of data; used to detect corruption of the data block.

child process A process that is a direct descendent of another process as a result of being created with a fork system call.

cleaning The process of garbage collection used by the Log-Structured Filesystem to reclaim space. Logical file blocks that were written to disk but have been deleted or superseded are periodically reclaimed and used for future filesystem writes.

client process In the client–server model of communication, a process that contacts a server process to request services. A client process is usually unrelated to a server process; the client process’s only association with the server process is through a communication channel. See also server process.

C-list A linked-list data structure, used by the system in supporting serial line I/O.

cloning route A routing entry that is not used directly, but that causes a new instance of a route to be created. For example, the route to a local Ethernet is set up as a cloning route so that individual host routes will be created for each local host when referenced.

cluster The logical grouping of contiguous physical pages of memory. In 4.4BSD, this grouping is used by the virtual-memory system to simulate memory pages with sizes larger than the physical page size supported by the hardware.

cold start The initial phase of a bootstrap procedure. The term is derived from the fact that the software assumes nothing about the state of the machine—as though the machine had just been turned on and were cold.

communication domain An abstraction used by the interprocess-communication facilities to organize the properties of a communication network or similar facility. A communication domain includes a set of protocols, termed the protocol family; rules for manipulating and interpreting names; the address family; and, possibly, other intrinsic properties, such as the ability to transmit access rights. The facilities provided by the system for interprocess communication are defined such that they are independent of the communication domains supported by the system. This design makes it possible for applications to be written in a communication-domain–independent manner.

communication protocol A set of conventions and rules used by two communicating processes.

configuration file A file that contains parameters for the system-configuration program /usr/sbin/config. This file describes the hardware devices and topology that the system should be able to support, as well as miscellaneous parameters, such as the maximum number of users that are expected to use the system simultaneously.

configuration procedure The procedure followed by a system administrator in configuring a kernel for a machine, or for a collection of machines. The configuration procedure requires a configuration file, which is then supplied to the /usr/sbin/config program to create the necessary data files for building a kernel.

connect request A request passed to the user-request routine of a communication-protocol module as a result of a process making a connect system call on a socket. The request causes the system to attempt to establish an association between a local and a remote socket.

console monitor The terminal attached to a console-terminal interface.

console processor An auxiliary processor to the main CPU that allows an operator to start and stop the system, to monitor system operation, and to run hardware diagnostics.

context switching The action of interrupting the currently running process and of switching to another process. Context switching occurs as one process after another is scheduled for execution. An interrupted process’s context is saved in that process’s process control block, and another process’s context is loaded.

continue signal Signal 19 (SIGCONT). A signal that, when delivered to a stopped or sleeping process, causes that process to resume execution.

controlling process The session leader that established the connection to the controlling terminal. See also session leader.

controlling terminal The terminal device associated with a process’s session from which keyboard-related signals may be generated. The controlling terminal for a process is normally inherited from the process’s parent.

control request A request passed to the user-request routine of a communication-protocol module as a result of a process making an ioctl or setsockopt system call on a socket.

cooked mode See canonical mode.

copy-on-write A technique whereby multiple references to a common object are maintained until the object is modified (written). Before the object is written, a copy is made; the modification is made to the copy, rather than to the original. In virtual-memory management, copy-on-write is a common scheme that the kernel uses to manage pages shared by multiple processes. All the page-table entries mapping a shared page are set such that the first write reference to the page causes a page fault. When the page fault is serviced, the faulted page is replaced with a private copy, which is writable.

core file A file (named core) that is created by the system when certain signals are delivered to a process. The file contains a record of the state of the process at the time the signal occurred. This record includes the contents of the process’s virtual address space and, on most systems, the user structure.

CPU See central processing unit.

crash Among computer scientists, an unexpected system failure.

crash dump A record of the state of a machine at the time of a crash. This record is usually written to a place on secondary storage that is thought to be safe, so that it can be saved until the information can be recovered.

CRT See cathode ray tube.

current working directory The directory from which relative pathnames are interpreted for a process. The current working directory for a process is set with the chdir or fchdir system call.

cylinder The tracks of a disk that are accessible from one position of the head assembly.

cylinder group In the Fast Filesystem, a collection of cylinders on a disk drive that is grouped together for the purpose of localizing information. That is, the filesystem allocates inodes and data blocks on a per–cylinder-group basis.

daemon A long-lived process that provides a system-related service. There are daemon processes that execute in kernel mode (e.g., the pagedaemon), and daemon processes that execute in user mode (e.g., the routing daemon). The old English term, daemon, means “a deified being,” as distinguished from the term, demon, which means an “evil spirit.”

DARPA Defense Advanced Research Projects Agency. An agency of the U.S. Department of Defense that is responsible for managing defense-sponsored research in the United States.

datagram socket A type of socket that models potentially unreliable connectionless packet communication.

data segment The segment of a process’s address space that contains the initialized and uninitialized data portions of a program. See also bss segment; stack segment; text segment.

decapsulation In network communication, the removal of the outermost header information on a message. The inverse of encapsulation.

demand paging A memory-management technique in which memory is divided into pages and the pages are provided to processes as needed—that is, on demand. See also pure demand paging.

demon See daemon.

descriptor An integer assigned by the system when a file is referenced by the open system call, or when a socket is created with the socket, pipe, or socketpair system calls. The integer uniquely identifies an access path to the file or socket from a given process, or from any of that process’s children. Descriptors can also be duplicated with the dup and fcntl system calls.

descriptor table A per-process table that holds references to objects on which I/O may be done. I/O descriptors are indices into this table.

device In UNIX, a peripheral connected to the CPU.

device driver A software module that is part of the kernel and that supports access to a peripheral device.

device flags Data specified in a system configuration file and passed to a device driver. The use of these flags varies across device drivers. Device drivers for terminal devices use the flags to indicate the terminal lines on which the driver should ignore modem-control signals on input.

device number A number that uniquely identifies a device within the block- or character-device classes. A device number comprises two parts: a major-device number and a minor-device number.

device special file A file through which processes can access hardware devices on a machine. For example, a tape drive is accessed through such a file.

directed broadcast A message that is to be broadcast on a network to which the sender is not connected directly.

direct memory access (DMA) A facility whereby a peripheral device can access main memory without the assistance of the CPU. DMA is typically used to transfer contiguous blocks of data between main memory and a peripheral device.

directory In UNIX, a special type of file that contains entries that are references to other files. By convention, a directory contains at least two entries: dot (.) and dot-dot (..). Dot refers to the directory itself; dot-dot refers to the parent directory.

directory entry An entry that is represented by a variable-length record structure in the directory file. Each structure holds an ASCII string that represents the filename, the number of bytes of space provided for the string, the number of bytes of space provided for the entry, the type of the file referenced by the entry, and the number of the inode associated with the filename. By convention, a directory entry with a zero inode number is treated as unallocated, and the space held by the entry is available for use.

dirty In computer systems, modified. A system usually tracks whether or not an object has been modified—is dirty—because it needs to save the object’s contents before reusing the space held by the object. For example, in the filesystem, a buffer in the buffer cache is dirty if its contents have been modified. Dirty buffers must be written back to the disk before they are reused.

disk partition A contiguous region of a disk drive that is used as a swap area or to hold a filesystem.

distributed program A program that is partitioned among multiple processes, possibly spread across multiple machines.

DMA See direct memory access.

double indirect block See indirect block.

effective GID See effective group identifier.

effective group identifier (effective GID) The first entry in the groups array. The effective GID, along with the other GIDs in the groups array, is used by the filesystem to check group access permission. The effective GID is set when a set-group-identifier program is executed. See also group identifier; real group identifier; saved group identifier.

effective UID See effective user identifier.

effective user identifier (effective UID) The UID that the system uses to check many user permissions. For example, the effective UID is used by the filesystem to check owner access permission on files. The effective UID is set when a set-user-identifier program is executed. See also user identifier; real user identifier; saved user identifier.

elevator sorting algorithm An algorithm used by the device drivers for I/O requests for moving head disks. The algorithm sorts requests into a cyclic ascending order based on the cylinder number of the request. The name is derived from the fact that the algorithm orders disk requests in a manner similar to the way ride requests for an elevator would be handled most efficiently.

emulate To simulate. Many ports of 4.4BSD can emulate the system-call interface of the UNIX operating system provided by the hardware vendor. For example, the HP300 version of 4.4BSD can run binaries compiled for HP-UX.

encapsulation In network communication, the procedure by which a message is created that has an existing message enclosed in it as data. A protocol normally encapsulates a message by crafting a leading protocol header that indicates that the original message is to be treated as data. The inverse of decapsulation.

erase character The character that is recognized by the terminal handler, when the latter is running in canonical mode, to mean “delete the last character in the line of input.” Each terminal session can have a different erase character, and that erase character can be changed at any time with a tcsetattr system call. The terminal handler does not recognize the erase character on terminals that are in noncanonical mode. See also word-erase character; kill character.

errno The global variable in C programs that holds an error code that indicates why a system call failed. The value to be placed in errno is returned by the kernel in the standard return register; it is moved from this return register to errno by code in the C run-time library.

error-message buffer See message buffer.

eviction notice A call-back message from a server to a client notifying the client that its lease for an object is being terminated. A lease is usually terminated because another client wants to modify the object that the lease represents. See also callback; lease.

fault rate The rate at which a process generates page faults. For a reference string, the fault rate is defined to be time independent by its being specified as the number of page faults divided by the length of the reference string.

fetch policy The policy used by a demand-paged virtual-memory–management system in processing page faults. Fetch policies differ primarily in the way that they handle prepaging of data.

FIFO file In the filesystem, a type of file that can be used for interprocess communication. Data written by one process to a FIFO are read by another in the order in which they were sent. The name refers to the fact that data are transferred in a first-in, first-out fashion.

file An object in the filesystem that is treated as a linear array of bytes. A file has at least one name, and it exists until all its names are deleted explicitly.

file handle A globally unique token created by an NFS server and passed back to an NFS client. The client can then use the file handle to refer to the associated file on the server. A handle is created when a file is first opened; it is passed to the server by the client in later operations, such as read and write, that reference the open file.

filename A string of ASCII characters that is used to name an ordinary file, special file, or directory. The characters in a filename cannot include null (0) or the ASCII code for slash (‘/’).

file offset A byte offset associated with an open file descriptor. The file offset for a file descriptor is set explicitly with the lseek system call, or implicitly as a result of a read or write system call.

file structure The data structure used by the kernel to hold the information associated with one or more open file descriptors that reference a file. In most cases, each open file descriptor references a unique file structure. File structures may be shared, however, when open descriptors are duplicated with the dup and dup2 system calls, inherited across a fork system call, or received in a message through the interprocess-communication facilities.

filesystem A collection of files. The UNIX filesystem is hierarchical, with files organized into directories, and filesystems, in most cases, restricted to a single physical hardware device, such as a disk drive. Filesystems typically include facilities for naming files and for controlling access to files.

fill-on-demand page fault The first page fault for an individual page; it must be resolved by retrieval of data from the filesystem or by allocation of a zero-filled page.

first-level bootstrap The initial code that is executed in a multilevel bootstrapping operation. Usually, the first-level bootstrap is limited in size and does little more than bootstrap into operation a larger, more intelligent, program. Typically, the first-level bootstrap loads the /boot program, so that /boot can, in turn, bootstrap the kernel.

foreground process In job-control–oriented process-management systems, a process whose process group is the same as that of its controlling terminal; thus, the process is allowed to read from and to write to the terminal. Otherwise, a foreground process is one for which the command interpreter is currently waiting. The opposite of a foreground process is a background process.

forward-mapped page table A large contiguous array indexed by the virtual address that contains one element, or page-table entry, for each virtual page in the address space. This element contains the physical page to which the virtual page is mapped, as well as access permissions and status bits telling whether the page has been referenced or modified, and a bit indicating whether the entry contains valid information. Most current memory-manage-ment–unit designs use some variant of a forward-mapped page table. See also inverted page table.

fragment In the filesystem, a part of a block. The filesystem allocates new disk space to a file as a full block or as one or more fragments of a block. The filesystem uses fragments, rather than allocating space in only full block-size units, to reduce wasted space when the size of a full block is large.

fragment-descriptor table A data structure in the Fast Filesystem that describes the fragments that are free in an entry of the allocation map. The filesystem uses the fragment-descriptor table by taking a byte in the allocation map and using the byte to index into the fragment-descriptor table. The value in the fragment-descriptor table indicates how many fragments of a particular size are available in the entry of the allocation map. By doing a logical AND with the bit corresponding to the desired fragment size, the system can determine quickly whether a desired fragment is contained within the allocation-map entry.

free list In the memory-management system, the list of available clusters of physical memory (also called the memory free list). There is a similar free list in the system for dynamically allocated kernel memory. Many kernel data structures are dynamically allocated, including vnodes, file-table entries, and disk-quota structures.

free-space reserve A percentage of space in a filesystem that is held in reserve to ensure that certain allocation algorithms used by the filesystem will work well. By default, 10 percent of the available space in the Fast Filesystem and 2 clean segments in the Log-Structured Filesystem, are held in reserve.

garbage collection A memory-management facility in which unused portions of memory are reclaimed without an application having to release them explicitly.

gateway See router.

generation number The number assigned to an inode each time that the latter is allocated to represent a new file. Each generation number is used only once. Most NFS implementations use a random-number generator to select a new generation number; the 4.4BSD implementation selects a generation number that is approximately equal to the creation time of the file.

GID See group identifier.

global page-replacement algorithm An algorithm that does page replacement according to systemwide criteria. A global-page-replacement strategy tends to make the most efficient use of the system memory. However, a single process can thrash the entire system by trying to use all the available memory.

group identifier (GID) An integer value that uniquely identifies a collection of users. GIDs are used in the access-control facilities provided by the filesystem. See also effective group identifier; real group identifier; saved group identifier; set-group-identifier program.

half-open connection A connection that is thought to be open by only one of the two endpoints. For example, a connection that is lost because of a crash or timeout on one peer, but is still considered established by the other, is half-open.

handler A procedure that is invoked in response to an event such as a signal.

hard limit A limit that cannot be exceeded. See also soft limit.

hard link A directory entry that directly references an inode. If there are multiple hard links to a single inode and if one of the links is deleted, the remaining links still reference the inode. By contrast, a symbolic link is a file that holds a pathname that is used to reference a file.

header prediction A heuristic used by TCP on incoming packets to detect two common cases: the next expected data segment for an existing connection, or an acknowledgment plus a window update for one or more data segments. When one of these two cases arise, and the packet has no additional flags or state indications, the fully general TCP input processing is skipped.

heap The region of a process that can be expanded dynamically with the sbrk system call (or malloc() C library call). The name is derived from the disorderly fashion in which data are placed in the region.

high watermark An upper bound on the number of data that may be buffered.

In the interprocess-communication facilities, each socket’s data buffer has a high watermark that specifies the maximum number of data that may be queued in the data buffer before a request to send data will block the process (or will return an error if nonblocking I/O is being used). See also low water-mark.

hole In a file, a region that is part of the file, but that has no associated data blocks. The filesystem returns zero-valued data when a process reads from a hole in a file. A hole is created in a file when a process positions the file pointer past the current end-of-file, writes some data, and then closes the file. The hole appears between the previous end-of-file and the beginning of the newly written data.

home directory The current working directory that is set for a user’s shell when the user logs into a system. This directory is usually private to the user. The home directory for a user is specified in a field in the password-file entry for the user.

host-unreachable message An ICMP message that indicates that the host to which a previous message was directed is unavailable because there is no known path to the desired host.

ICMP See Internet Control Message Protocol.

idempotent An operation that can be repeated several times without changing the final result or causing an error. For example, writing the same data to the same offset in a file is idempotent, because it will yield the same result whether it is done once or many times. However, trying to remove the same file more than once is nonidempotent because the file will no longer exist after the first try.

idle loop The block of code inside the kernel that is executed when there is nothing else to run. In 4.4BSD, the idle loop waits for a process to be added to the run queue.

index file The Log-Structured Filesystem read-only file, visible in the filesystem, that contains segment-usage information and the inode number to disk-block address mapping. By convention, the index file is named ifile.

indirect block In the filesystem, an auxilliary data block that holds the number of a data block. The first 12 blocks of a file are pointed to directly by the inode. Additional data blocks are described with a pointer from the inode to an indirect data block; the system must first fetch the indirect block that holds the number of the data block. In 4.4BSD, the kernel may have to fetch as many as three indirect blocks to locate the desired data block. An indirect block that contains data-block numbers is termed a single-level indirect block; an indirect block that contains block numbers of single-level indirect blocks is called a double-level indirect block; an indirect block that contains block numbers of double-level indirect blocks is called a triple-level indirect block.

init The first user program (/sbin/init) that runs when the system is booted.

initial sequence number See sequence space.

inode A data structure used by the filesystem to describe a file. The contents of an inode include the file’s type, the UID of the file’s owner, and a list of the disk blocks and fragments that make up the file. Note that inodes do not have names; directory entries are used to associate a name with an inode.

input/output (I/O) The transfer of data between the computer and its peripheral devices.

intelligent gateway A gateway machine that is capable of making intelligent decisions about routing network data. Such machines usually participate in a scheme whereby routing information is updated dynamically to reflect changes in network topology. An intelligent gateway is also expected to respond with routing redirect messages to hosts that make poor routing decisions.

interactive program A program that must periodically obtain user input to do its work. A screen-oriented text editor is an example of an interactive program.

Internet Control Message Protocol (ICMP) A host-to-host communication protocol used in the Internet for reporting errors and controlling the operation of IP.

Internet domain A communication domain in the interprocess-communication facilities that supports the Internet architecture. This architecture supports both stream- and datagram-oriented styles of communication between processes on machines on an Internet.

Internet host address In the Internet, a number that identifies both the network on which a host is located and the host on that network. For version 4 of IP, the address is 32 bits.

Internet Protocol (IP) The network-layer communication protocol used in the Internet. IP is responsible for host-to-host addressing and routing, packet forwarding, and packet fragmentation and reassembly.

interpreter A program that parses and executes a descriptive language in a single step, rather than using the more common two-stage process of compiling the language and executing the resulting binary. The shell is an example of an interpreter; it parses and executes a shell script, rather than first compiling it.

interprocess communication (IPC) The transfer of data between processes. Most facilities for interprocess communication are designed such that data are transferred between objects other than processes. An interprocess-communication model that is not directly process oriented is advantageous because it is possible to model scenarios in which communication endpoints are location independent and, possibly, are migrated dynamically. For example, in 4.4BSD, communication is between sockets, rather than between processes.

interrupt In computer systems, an event external to the currently executing process that causes a change in the normal flow of instruction execution. Interrupts usually are generated by hardware devices that are external to the CPU.

interrupt priority level The priority that is associated with a device interrupt. This value is usually defined by switches or jumpers located on a device controller and transmitted with each interrupt request made by the hardware device. See also processor priority level.

interrupt stack A run-time stack that is used by procedures that are invoked to respond to interrupts and traps. On most architectures, a systemwide interrupt stack is provided that is independent of the normal kernel run-time stack located in the user structure of each process.

inverted page table (reverse-mapped page table) A hardware-maintained memory-resident table that contains one entry per physical page, and that is indexed by physical address instead of by virtual address. An entry contains the virtual address to which the physical page is currently mapped; the entry also includes protection and status attributes. The hardware does virtual-to-physical address translation by computing a hash function on the virtual address to select an entry in the table. The hardware handles collisions by linking together table entries, and making a linear search of this chain until it finds the matching virtual address. See also forward-mapped page table.

I/O See input/output.

I/O redirection The redirection of an I/O stream from the default assignment.

For example, all the standard shells permit users to redirect the standard output stream to a file or process.

I/O stream A stream of data directed to, or generated from, a process. Most I/O streams in UNIX have a single common data format that permits users to write programs in a tool-oriented fashion, and to combine these programs in pipelines by directing the standard output stream of one program to the standard input stream of another.

iovec A data structure used to specify user I/O requests made to the kernel. Each structure holds the address of a data buffer and the number of bytes of data to be read or written. Arrays of such structures are passed to the kernel in readv and writev system calls.

I/O vector See iovec.

IP See Internet Protocol.

IPC See interprocess communication.

job In UNIX, a set of processes that all have the same process-group identifier. Jobs that have multiple processes are normally created with a pipeline. A job is the fundamental object that is manipulated with job control.

job control A facility for managing jobs. With job control, a job may be started, stopped, and killed, as well as moved between the foreground and the background. The terminal handler provides facilities for automatically stopping a background job that tries to access the controlling terminal, and for notifying a job’s controlling process when such an event occurs.

keepalive packet A type of packet used by TCP to maintain information about whether or not a destination host is up. Keepalive packets are sent to a remote host, which, if it is up, must respond. If a response is not received in a reasonable time to any of several keepalive packets, then the connection is terminated. Keepalive packets are used on only those TCP connections that have been created for sockets that have the SO_KEEPALIVE option set on them.

keepalive timer A timer used by the TCP protocol in conjunction with keepalive packets. The timer is set when a keepalive packet is transmitted. If a response to the packet is not received before the timer expires several times, then the connection is shut down.

kernel The central controlling program that provides basic system facilities. The 4.4BSD kernel creates and manages processes, provides functions to access the filesystem, and supplies communication facilities. The 4.4BSD kernel is the only part of 4.4BSD that a user cannot replace.

kernel mode The most privileged processor-access mode. The 4.4BSD kernel operates in kernel mode.

kernel process A process that executes with the processor in kernel mode. The pagedaemon and swapper processes are examples of kernel processes.

kernel state The run-time execution state for the kernel. This state, which includes the program counter, general-purpose registers, and run-time stack, must be saved and restored on each context switch.

kill character The character that is recognized by the terminal handler in canonical mode to mean “delete everything typed on this terminal after the most recent end-of-line character.” Each terminal session can have a different kill character, and the user can change that kill character at any time with an tcsetattr system call. The terminal handler does not recognize the kill character on terminals that are in noncanonical mode. See also erase character; word-erase character.

lease A ticket permitting an activity that is valid until a specified expiration time. In the NQNFS protocol, a client gets a lease from its server to read, write, or read and write a file. As long the client holds a valid lease, it knows that the server will notify it if the file status changes. Once the lease has expired, the client must contact the server to request a new lease before using any data that it has cached for the file. See also callback; eviction notice.

least recently used (LRU) A policy of reuse whereby the least recently used items are reused first. For example, in the filesystem, there is a fixed number of data buffers available for doing I/O. Buffers that hold valid data are reallocated in an LRU order on the LRU buffer list, in the hope that the data held in the buffer may be reused by a subsequent read request. See also AGE buffer list; buffer cache.

line discipline A processing module in the kernel that provides semantics for an asynchronous serial interface or for a software emulation of such an interface. Line disciplines are described by a procedural interface whose entry points are stored in the linesw data structure.

line mode See canonical mode.

link layer Layer 2 in the ISO Open Systems Interconnection Reference Model. In this model, the link layer is responsible for the (possibly unreliable) delivery of messages within a single physical network. The link layer corresponds most closely to the network-interface layer of the 4.4BSD network subsystem.

listen request A request passed to the user-request routine of a communication-protocol module as a result of a process making a listen system call on a socket. This request indicates that the system should listen for requests to establish a connection to the socket. Otherwise, the system will reject any connection requests that it receives for the socket.

load average A measure of the CPU load on the system. The load average in 4.4BSD is defined as an average of the number of processes ready to run or waiting for disk I/O to complete, as sampled over the previous 1-minute inter-valof system operation.

local domain A communication domain in the interprocess-communication facilities that supports stream- and datagram-oriented styles of communication between processes on a single machine.

locality of reference A phenomenon whereby memory references of a running program are localized within the virtual address space over short periods. Most programs tend to exhibit some degree of locality of reference. This locality of reference makes it worthwhile for the system to prefetch pages that are adjacent to a page that is faulted, to reduce the fault rate of a running program.

local page-replacement algorithm An algorithm for page replacement that first chooses a process from which to replace a page, and then chose a page within that process based on per-process criteria. Usually, a process is given a fixed number of pages, and must then select from among its own pages when it needs a new page.

log An append-only file. A file where existing data are never overwritten; the kernel thus modifies the file only by appending new data. The Log-Structured Filesystem implements an abstraction of a log on the disk. See also no-overwrite policy.

logical block A block defined by dividing a file’s linear extent by the underlying filesystem block size. Each logical block of a file is mapped into a physical block. This additional level of mapping permits physical blocks to be placed on disk without concern for the linear organization of the logical blocks in a file.

logical drive partitions A software scheme that divides a disk drive into one or more linear extents or partitions.

logical unit An integer that specifies the unit number of a hardware device. The hardware device and unit number are specified in terms of logical devices and units as discovered by the system during the autoconfiguration phase of its bootstrap sequence. For example, a reference to “partition 1 on disk drive 2” typically refers to partition 1 on the third disk drive identified at boot time (devices are numbered starting at 0). The actual mapping between logical unit numbers and physical devices is defined by the configuration file that is used to build a kernel. For flexibility, most systems are configured to support a reasonably dynamic mapping between physical and logical devices. This dynamic mapping permits, for example, system administrators to move a disk drive from one controller to another without having to reconfigure a new kernel or to reconstruct the associated special files for the device.

long-term–scheduling algorithm See short-term–scheduling algorithm.

lossy A communication medium that has a high rate of data loss.

low watermark A lower bound that specifies the minimum number of data that must be present before an action can be taken. In the interprocess-communication facilities, each socket’s data buffer has a low watermark that specifies the minimum number of data that must be present in the data buffer before a reception request will be satisfied. See also high watermark.

LRU See least recently used.

machine check An exceptional machine condition that indicates that the CPU detected an error in its operation. For example, a machine check is generated if a parity error is detected in a cache memory.

magic number The number located in the first few bytes of an executable file that specifies the type of the executable file.

main memory The primary memory system on a machine.

major-device number An integer number that uniquely identifies the type of a device. This number is defined as the index into the array of device-driver entry points for the device. It is used, for example, when a user creates a device special file with the mknod system call.

mandatory lock A lock that cannot be ignored or avoided. A mandatory lock is contrasted with an advisory lock, which is enforced only when a process explicitly requests its enforcement. See also advisory lock.

mapped object An object whose pages are mapped into a process address space.

Processes map objects into their virtual address space using the mmap system call.

mapping structure The machine-dependent state required to describe the translation and access rights of a single page. See also page-table entry.

mark and sweep algorithm A garbage-collection algorithm that works by sweeping through the set of collectable objects, marking each object that is referenced. If, after this marking phase, there are any objects that are unmarked, they are reclaimed.

marshalling Preparing a set of parameters to be sent across a network. Marshalling includes replacing pointers by the data to which they point, and converting binary data to the canonical network byte order. See also remote procedure call.

masked signal A signal blocked in a sigprocmask system call. When a signal is masked, its delivery is delayed until it is unmasked. In addition, in 4.4BSD, the system automatically masks a caught signal while that signal is being handled.

master device See slave device.

maximum segment lifetime (MSL) The maximum time that a segment of data may exist in the network. See also 2MSL timer.

mbuf A data structure that describes a block of data; mbufs are used in the interprocess-communication facilities. “Mbuf” is shorthand for “memory buffer.”

memory address A number that specifies a memory location. Memory addresses are often categorized as physical or virtual according to whether they reference physical or virtual memory.

memory free list See free list.

memory-management system The part of the operating system that is responsible for the management of memory resources available on a machine.

memory-management unit A hardware device that implements memory-management–related tasks, such as address translation and memory protection. Most contemporary memory-management units also provide support for demand-paged virtual-memory management.

message buffer A circular buffer in which the system records all kernel messages directed to the console terminal. The device /dev/klog can be used by a user program to read data from this buffer in a manner that ensures that no data will be lost. On most systems, the message buffer is allocated early in the bootstrapping of the system; it is placed in high memory so that it can be located after a reboot, allowing messages printed out just before a crash to be saved.

minor-device number An integer number that uniquely identifies a subunit of a device. For example, the minor-device number for a disk device specifies a subunit termed a partition, whereas the minor-device number for a terminal multiplexer identifies a specific terminal line. The minor-device number is interpreted on a per-device basis and is used, for example, when a user creates adevice special file with the mknod system call.

modem control For data-communication equipment, the support of a set of signals used to ensure reliable initiation and termination of connections over asynchronous serial lines, defined by the RS-232 standard. Support for modem control is normally important for only serial lines that are accessed via dialup modems.

MSL See maximum segment lifetime.

multilevel feedback queue A queueing scheme in which requests are partitioned into multiple prioritized subqueues, with requests moving between subqueues based on dynamically varying criteria. The 4.4BSD kernel uses a multilevel-feedback-queueing scheme for scheduling the execution of processes.

multiplexed file A type of file used for interprocess communication that was supported in the Seventh Edition UNIX system.

network address A number that specifies a host machine.

network architecture The collection of protocols, facilities, and conventions (such as the format of a network address) that define a network. Like machine architectures, network architectures may be realized in different ways. For example, some network architectures are specifically designed to permit their implementation in hardware devices.

network byte order The order defined by a network for the transmission of protocol fields that are larger than one octet. In the Internet protocols, this order is “most significant octet first.”

network-interface layer The layer of software in the 4.4BSD network subsystem that is responsible for transporting messages between hosts connected to a common transmission medium. This layer is mainly concerned with driving the transmission media involved, and with doing any necessary link-level protocol encapsulation and decapsulation.

network layer The layer of software in the 4.4BSD network subsystem that is responsible for the delivery of data destined for remote transport or network-layer protocols.

network mask A value that is used in the subnet addressing scheme of the Internet. A network mask specifies which bits in a local Internet address the system should include when extracting a network identifier from a local address.

network virtual terminal A terminal device that receives and transmits data across a network connection.

nice A user-controllable process-scheduling parameter. The value of a process’s nice variable is used in calculating that process’s scheduling priority. Positive values of nice mean that the process is willing to receive less than its share of the processor. Neg ative values of nice mean that the process requests more than its share of the processor.

nonblocking I/O A mode in which a descriptor may be placed, whereby the system will return an error if any I/O operation on the descriptor would cause the process to block. For example, if a read system call is done on a descriptor that is in nonblocking I/O mode, and no data are available, the system will return the error code EWOULDBLOCK, rather than block the process until data arrive. See also polling I/O; signal-driven I/O.

noncanonical mode See canonical mode.

nonlocal goto A transfer in control that circumvents the normal flow of execution in a program across routine boundaries. For example, if procedure A calls procedure B, and B calls C, then a direct transfer of control from C back to A (bypassing B) would be a nonlocal goto.

nonresident object An object that is not present in main memory. For example, a page in the virtual address space of a process may be nonresident if it has never been referenced.

no-overwrite policy A policy such that, when existing data are modified, new copies of the data are created, rather than the data being overwritten in place. The Log-Structured Filesystem implements a no-overwrite policy for files. See also log.

object See virtual-memory object.

object cache A cache in the virtual-memory system for inactive objects. Inactive file objects are retained in a least-recently-used cache so that future uses of the associated file can reuse the object and that object’s associated cached physical pages.

octet A basic unit of data representation; an 8-bit byte. The term octet is used instead of byte in the definition of many network protocols because some machines use other byte sizes.

optimal replacement policy A replacement policy that optimizes the performance of a demand-paging virtual-memory system. In this book, a policy whereby the full reference string of a program is known in advance, and pages are selected such that the number of page faults is minimized.

orphaned process group A process group in which the parent of every member is either itself a member of the group or is not a member of the group’s session. Such a parent would normally be a job-control shell capable of resuming stopped child processes.

out-of-band data Data transmitted and received out of the normal flow of data. Stream sockets support a logically separate out-of-band data channel through which at least one message of at least 1 octet of data may be sent. The system immediately notifies a receiving process of the presence of out-of-band data, and out-of-band data may be retrieved out of received order.

overlay In computer systems, a region of code or data that may be replaced with other such regions on demand. Overlays are usually loaded into a process’s address space on demand, possibly on top of another overlay. Overlays are a commonly used scheme for programs that are too large to fit in the address space of a machine that does not support virtual memory.

page In memory management, the fixed-sized unit of measure used to divide a physical or virtual address space. See also demand paging.

pagedaemon In 4.4BSD, the name of the kernel process that is responsible for writing parts of the address space of a process to secondary storage, to support the paging facilities of the virtual-memory system. See also swapper.

page fault An exception generated by a process’s reference to a page of that process’s virtual address space that is not marked as resident in memory.

pagein An operation done by the virtual-memory system in which the contents of a page are read from secondary storage.

pageout An operation done by the virtual-memory system in which the contents of a page are written to secondary storage.

page push A pageout of a dirty page.

pager A kernel module responsible for providing the data to fill a page, and for providing a place to store that page when it has been modified and the memory associated with it is needed for another purpose.

page reclaim A page fault, where the page that was faulted is located in memory, usually on the inactive list.

page-table entry (PTE) The machine-dependent data structure that identifies the location and status of a page of a virtual address space. When a virtual page is in memory, the PTE contains the page-frame number that the hardware needs to map the virtual page to a physical page.

page-table pages The second level of a three-level hierarchy of data structures used by a forward-mapped page-table algorithm to describe the virtual address space of a process. Page-table pages are pointed to by entries in the top-level segment table; each entry in a page-table page points to a page of bottom-level page-table entries. See also forward-mapped page table; page-table entry; segment table.

paging The actions of bringing pages of an executing process into main memory when they are referenced, and of removing them from memory when they are replaced. When a process executes, all its pages are said to reside in virtual memory. Only the actively used pages, however, need to reside in main memory. The remaining pages can reside on disk until they are needed.

panic In UNIX, an unrecoverable system failure detected by the kernel. 4.4BSD automatically recovers from a panic by rebooting the machine, repairing any filesystem damage, and then restarting normal operation. See also crash dump.

parent process A process that is a direct relative of another process as a result of a fork system call.

partition See disk partition.

pathname A null-terminated character string starting with an optional slash (“/”), followed by zero or more directory names separated by slashes, and optionally followed by a filename. If a pathname begins with a slash, it is said to be an absolute pathname, and the path search begins at the root directory. Otherwise, the pathname is said to be a relative pathname, and the path search begins at the current working directory of the process. A slash by itself names the root directory. A null pathname refers to the current working directory.

PCB See process control block.

persist timer A timer used by TCP for maintaining output flow on a connection. This timer is started whenever data are ready to be sent, but the send window is too small to bother sending and no data are already outstanding. If no window update is received before the timer expires, a window probe is sent.

physical block One or more contiguous disk sectors to which the system maps a logical block.

physical mapping (pmap) The software state, also referred to as the pmap structure, needed to manage the machine-dependent translation and access tables that are used either directly or indirectly by the memory-management hardware. This mapping state includes information about access rights, in addition to address translation.

PID See process identifier.

pipe An interprocess-communication facility that supports the unidirectional flow of data between related processes. Data transfer is stream-oriented, reliable, and flow controlled. A pipe is specified to the shell with the “|” symbol. For example, to connect the standard output of program a to the standard input of program b, the user would type the command “a | b”.

pipeline A collection of processes in which the standard output of one process is connected to the standard input of the next with a pipe.

placement policy The policy used by the virtual-memory system to place pages in main memory when servicing a page fault.

pmap See physical mapping.

polling I/O The normal mode for a descriptor whereby the system will block if a read request has no data available or a write request has no buffering available. A process can determine whether an I/O operation will block by polling the kernel using the select system call. The select system call can be requested to return immediately with the information or to block until at least one of the requested I/O operations can be completed. See also nonblocking I/O; signal-driven I/O.

POSIX The standards group for P1003, the portable operating-system interfaces established by the IEEE. Its first established standard was the kernel interface, 1003.1, which was ratified in 1988.

prefetching The retrieval of data before they are needed. Many machines prefetch machine instructions so that they can overlap the time spent fetching instructions from memory with the time spent decoding instructions.

prepaging The prefetching of pages of memory. Prepaging is a technique used by virtual-memory systems to reduce the number of page faults.

probing The operation of checking to see whether a hardware device is present on a machine. Each different type of hardware device usually requires its own technique for probing.

process In operating systems, a task or thread of execution. In UNIX, user processes are created with the fork system call.

process control block (PCB) A data structure used to hold process context. The hardware-defined PCB contains the hardware portion of this context. The software PCB contains the software portion, and is located in memory immediately after the hardware PCB.

process group A collection of processes on a single machine that all have the same process-group identifier. The kernel uses this grouping to arbitrate among multiple jobs contending for the same terminal.

process-group identifier A positive integer used to identify uniquely each active process group in the system. Process-group identifiers are typically defined to be the PID of the process-group leader. Process-group identifiers are used by command interpreters in implementing job control, when the command interpreter is broadcasting signals with the killpg system call, and when the command interpreter is altering the scheduling priority of all processes in a process group with the setpriority system call.

process-group leader The process in a process group whose PID is used as the process-group identifier. This process is typically the first process in a pipeline.

process identifier (PID) A nonnegative integer used to identify uniquely each active process in the system.

process open-file table See descriptor table.

processor priority level A priority that the kernel uses to control the delivery of interrupts to the CPU. Most machines support multiple priority levels at which the processor may execute. Similarly, interrupts also occur at multiple levels. When an interrupt is posted to the processor, if the priority level of the interrupt is greater than that of the processor, then the interrupt is recognized by the processor and execution is diverted to service the interrupt. Otherwise, the interrupt is not acknowledged by the CPU and is held pending until the processor priority drops to a level that permits the interrupt to be acknowledged. Changing the processor priority level is usually a privileged operation that can be done only when the processor is executing in kernel mode.

process priority A parameter used by the kernel to schedule the execution of processes. The priority for a process changes dynamically according to the operation of the process. In addition, the nice parameter can be set for a process to weight the overall scheduling priority for the process.

process structure A data structure maintained by the kernel for each active process in the system. The process structure for a process is always resident in main memory, as opposed to the user structure, which is moved to secondary storage when the process is swapped out.

/proc filesystem A filesystem-based interface to active processes that provides process-debugging facilities. Each process is represented by a directory entry in a pseudodirectory named /proc. Applications access the virtual address space of a process by opening the file in /proc that is associated with the process, and then using the read and write system calls as though the process were a regular file.

programmed I/O Input or output to a device that is unable to do direct-memory access. Each character must be loaded into the device’s output-character register for transmission. Depending on the device, the CPU may then have to wait after each character for the transmit-complete interrupt before sending the next character.

protocol family A collection of communication protocols, the members of which are related by being part of a single network architecture. For example, the TCP, UDP, IP, and ICMP protocols are part of the protocol family for the Internet.

protocol switch structure A data structure that holds all the entry points for a communication protocol supported by the kernel.

PTE See page-table entry.

pure demand paging Demand paging without prepaging.

race condition A condition in which two or more actions for an operation occur in an undefined order. Trouble arises if there exists a possible order that results in an incorrect outcome.

raw-device interface The character-device interface for block-oriented devices such as disks and tapes. This interface provides raw access to the underlying device, arranging for direct I/O between a process and the device.

raw mode See canonical mode.

raw socket A socket that provides direct access to a lower-level communication protocol.

real GID See real group identifier.

real group identifier (real GID) The GID that is recorded in the accounting record when a process terminates. The real GID for a process is initially set at the time that a user logs into a system, and is then inherited by child processes across subsequent fork and exec system calls (irrespective of whether or not a program is set-group-identifier). See also effective group identifier; set-group-identifier program; saved group identifier.

real UID See real user identifier.

real user identifier (real UID) With respect to a process, the true identity of the user that is running the process. The real UID for a process is initially set at the time a user logs into a system, and is then inherited by child processes across subsequent fork and exec system calls (irrespective of whether or not a program is set-user-identifier). The real UID is recorded in the accounting record when a process terminates. See also effective user identifier; set-user-identifier program; saved user identifier.

receive window In TCP, the range of sequence numbers that defines the data that the system will accept for a connection. Any data with sequence numbers outside this range that are received are dropped. See also sliding-window scheme.

reclaim See page reclaim.

reclaim from inactive A page reclaim from the inactive list. A page can be reclaimed from the inactive list if that page is freed by the page-replacement algorithm, but the page is not reassigned before a process faults on it.

record In networking, a message that is delimited from other messages on a communication channel. The message boundaries are created by the sender, and are communicated to the receiver. A write or read operation transfers data from a single record, but certain protocols allow a record to be transferred via multiple write or read operations.

recovery storm A failure condition that can occur when a server is congested on returning to service after a period of being unavailable. If there is heavy pent-up demand for the server, it may be with requests. If the server simply ignores requests that it cannot handle, the clients will quickly resend them. So, the server typically replies “try again later” to the requests that it is not yet ready to service. Clients receiving such a response will wait considerably longer than a typical timeout period before resending their request.

red zone A read-only region of memory immediately below the last page of the per-process kernel-mode run-time stack. The red zone is set up by the system so that a fault will occur if a process overflows the space allocated for its kernel stack.

referenced page In the virtual-memory system, a page that is read or written.

reference string A dataset that describes the pages referenced by a process over the time of the process’s execution. This description represents the memory-related behavior of the process at discrete times during that process’s lifetime.

region A range of memory that is being treated in the same way. For example, the text of a program is a region that is read-only and is demand paged from the file on disk that contains it.

relative pathname See pathname.

reliably-delivered–message socket A type of socket that guarantees reliable data delivery and preservation of message boundaries, and that is not connection based.

relocation The copying of a program's contents from one place in an address space to another. This copying may be accompanied by modifications to the image of the program, so that memory references encoded in the program remain correct after that program is copied. Code that is not bound to a particular starting memory address is said to be relocatable.

remote procedure call (RPC) A procedure call made from a client process to a subroutine running in a different server process. Typically, the client and server processes are running on different machines. A remote procedure call operates much like a local procedure call: the client makes a procedure call, then waits for the result while the procedure executes. See also marshalling.

replacement policy The policy that a demand-paged virtual-memory–management system uses to select pages for reuse when memory is otherwise unavailable.

resident object An object that is present in main memory. For example, a page in the virtual address space of a process is resident if its contents are present in main memory.

resident-set size The number of pages of physical memory held by a process. In a well-tuned system, the resident-set size of a process will be that process's working set. Usually, the precise working set cannot be calculated, so a process will have additional pages beyond that needed for its working set.

resource map A data structure used by the system to manage the allocation of a resource that can be described by a set of linear extents.

retransmit timer A timer used by TCP to trigger the retransmission of data. This timer is set each time that data are transmitted to a remote host. It is set to a value that is expected to be greater than the time that it will take the receiving host to receive the data and return an acknowledgment.

re verse-mapped page table See inverted page table.

roll forward The double act of reading a log of committed operations, beginning at a checkpoint, and of reapplying any operations that are not reflected in the underlying storage system.

root directory The directory that the kernel uses in resolving absolute pathnames. Each process has a root directory that can be set with the chroot system call, and the system has a unique root directory, the identity of which is set at the time that the system is bootstrapped.

root filesystem The filesystem containing the root directory that is considered the root of all filesystems on a machine. The identity of a default root filesystem is compiled into a kernel, although the actual root filesystem used by a system may be set to some other filesystem at the time that a system is bootstrapped.

rotational-layout table A Fast Filesystem data structure that describes the rotational position of blocks in the filesystem. The Fast Filesystem uses the rotational-layout table in selecting rotationally optimal blocks for allocation to a file.

round robin In queueing, an algorithm in which each requester is serviced for a fixed time in a first-come first-served order; requests are placed at the end of the queue if they are incomplete after service.

route In packet-switched–network communication, a route to a destination specifies the host or hosts through which data must be transmitted to reach the destination.

router A machine, also known as a gateway, that has two or more network interfaces, and that forwards packets between the networks to which it has access. Typically, a router runs a routing process that gathers information on the network topology; it uses that information to devise a set of next-hop routes that it installs in the kernel's routing table. See also routing mechanism; routing policy.

routing daemon The process in 4.4BSD that provides a routing-management service for the system. This service uses a protocol that implements a distributed database of routing information that is updated dynamically to reflect changes in topological connectivity.

routing mechanism The routing facilities included in the kernel that implement externally defined policies. The routing mechanism uses a lookup mechanism that provides a first-hop route (a specific network interface and immediate destination) for each destination. See also router; routing policies.

routing policies The routing facilities provided in a user-level process that define external policies. Routing policies include all the components that the routing daemon uses in choosing the first-hop routes, such as discovery of the local network topology, implementation of various routing protocols, and configuration information specifying local policies. See also router; routing mechanism.

routing redirect message A message generated by a gateway when the latter recognizes that a message that it has received can be delivered via a more direct route.

RPC See remote procedure call.

run queue The queue of those processes that are ready to execute.

saved GID A mechanism that records the identity of a setgid program by copying the value of the effective GID at the time that the program is exec'ed. During its execution, the program may temporarily revoke its setgid privilege by setting is effective GID to its real GID. It can later recover its setgid privilege by setting its effective GID back to its saved GID. See also effective group identifier.

saved UID A mechanism that records the identity of a setuid program by copying the value of the effective UID at the time that the program is exec’ed. During its execution, the program may temporarily revoke its setuid privilege by setting is effective UID to its real UID. It can later recover its setuid privilege by setting its effective UID back to its saved UID. See also effective user identifier.

scheduling In operating systems, the planning used to share a resource. For example, process scheduling is used to share the CPU and main memory.

scheduling priority A per-process parameter maintained by the kernel that spec-ifies the priority with which the latter will schedule the execution of a process. When a process is executing in user mode, the system periodically calculates the scheduling priority, using the process priority and the nice parameter.

secondary storage Storage that is used to hold data that do not fit in main memory. Secondary storage is usually located on rotating magnetic media, such as disk drives. See also backing storage.

sector The smallest contiguous region on a disk that can be accessed with a single I/O operation.

segment A contiguous range of data defined by a base and an extent. In memory management, a segment describes a region of a process's address space. In communication protocols, a segment is defined by a contiguous range of sequence numbers for which there are associated data. In the Log-Structured Filesystem, a segment is the logical unit of cleaning.

segment table The top level of a three-level hierarchy of data structures used by a forward-mapped page-table algorithm to describe the virtual address space of a process. Each entry in a segment-table points to a page of middle-level page-table pages. A three-level mapping hierarchy is used on the PC and Motorola 68000 architectures. See also forward-mapped page table; page-table entry; page-table pages.

send window In TCP, the range of sequence numbers that defines the data that the system can transmit on a connection and be assured that the receiving party has space to hold the data on receipt. Any data with sequence numbers prior to the start of the send window have already been sent and acknowledged. Any data with sequence numbers after the end of the window will not be sent until the send window changes to include them. See also sliding-window scheme.

sense request A request passed to the user-request routine of a communication-protocol module as a result of a process making a stat system call on a socket.

sequenced-packet socket A type of socket that models sequenced, reliable, unduplicated, connection-based communication that preserves message boundaries.

sequence space The range of sequence numbers that are assigned to data transmitted over a TCP connection. In TCP, sequence numbers are taken from a 32-bit circular space that starts with an arbitrary value called the initial sequence number.

serial-line IP (SLIP) An encapsulation used to transfer IP datagrams over asynchronous serial lines. Also, the line discipline that implements this encapsulation.

server process A process that provides services to client processes via an interprocess-communication facility. See also client process.

session A collection of process groups established for job control purposes. Normally, a session is created for each login shell. All processes started by that login shell are part of its session.

session leader A process that has created a session. The session leader is the controlling process for the session and is permitted to allocate and assign the controlling terminal for the session. Normally, a session is created for each login shell. All processes started by that login shell are part of its session.

set-group-identifier program A program that runs with an additional group privilege. Set-group-identifier programs are indicated by a bit in the inode of the file. When a process specifies such a file in an exec system call, the GID of the file is made the effective GID of the process.

set-priority-level (SPL) A request that sets the current processor priority level. In 4.4BSD, all such requests are made with calls to routines that have a name with the prefix “spl.” For example, to set the processor priority level high enough to block interrupts that cause terminal processing, the kernel would call the spltty() routine. See also processor priority level.

set-user-identifier program A program that runs with an UID different from that of the process that started it running. Set-user-identifier programs are indicated by a bit in the inode of the file. When a process specifies such a file in an exec system call, the UID of the file is made the effective UID of the process.

shadow object An anonymous object that is interposed between a process and an underlying object to prevent changes made by the process from being reflected back to the underlying object. A shadow object is used when a process makes a private mapping of a file, so that changes made by the process are not reflected in the file.

shell A program that interprets and executes user commands. When a user logs into a UNIX system, a shell process is normally created with its standard input, standard output, and standard error descriptors directed to the terminal or network virtual terminal on which the user logged in.

short-term–scheduling algorithm The algorithm used by the system to select the next process to run from among the set of processes that are deemed runnable. The long-term–scheduling algorithm, on the other hand, can influence the set of runnable processes by swapping processes in and out of main memory (and thus in and out of the set of runnable processes).

signal In UNIX, a software event. In 4.4BSD, this event is modeled after a hardware interrupt.

signal-driven I/O A mode in which a descriptor can be placed, whereby the system will deliver a SIGIO signal to a process whenever I/O is possible on the descriptor. See also nonblocking I/O; polling I/O.

signal handler A procedure that is invoked in response to a signal.

signal post A notification to a process that a signal is pending for that process. Since most of the actions associated with a signal are done by the receiving process, a process that is posting a signal usually does little more than to record the pending signal in the receiving process's process structure and to arrange for the receiving process to be run.

signal-trampoline code A piece of code that is used to invoke a signal handler. The signal-trampoline code contains instructions that set up parameters for calling a signal handler, do the actual call to the signal handler, and, on return, do a sigreturn system call to reset kernel state and resume execution of the process after the signal is handled.

silly-window syndrome A condition observed in window-based flow-control schemes in which a receiver sends several small (i.e., silly) window allocations, rather than waiting for a reasonable-sized window to become available.

single indirect block See indirect block.

slave device A hardware device that is controlled by a master device. For example, a disk drive is a slave device to a SCSI bus controller. The distinction between master and slave devices is used by the autoconfiguration system. A slave device is assumed to be accessible only if its corresponding master device is present.

slave routine A device-driver routine that is responsible for deciding whether or not a slave device is present on a machine. Slave routines are never called unless the master device for the slave has been probed successfully.

sleep queue The queue of those processes that are blocked awaiting an event. The name is derived from the sleep() routine that places processes on this queue.

sliding-window scheme A flow-control scheme in which the receiver limits the number of data that it is willing to receive. This limit is expressed as a contiguous range of sequence numbers termed the receive window. It is periodically communicated to the sender, who is expected to transmit only those data that are within the window. As data are received and acknowledged, the window slides forward in the sequence space. See also sequence space; receive window; send window.

SLIP See serial-line IP.

small-packet avoidance In networking, avoiding the transmission of a packet so small that its transmission would be inefficient.

socket In the 4.4BSD interprocess-communication model, an endpoint of communication. Also, the data structure that is used to implement the socket abstraction, and the system call that is used to create a socket.

soft limit A limit that may be temporarily exceeded, or exceeded a limited number of times. A soft limit is typically used in conjunction with a hard limit. See also hard limit.

soft link See symbolic link.

software interrupt A software-initiated interrupt. It is requested with an asynchronous system trap.

software-interrupt process A process that is set running in response to a software interrupt. In 4.4BSD, input processing for each transport-layer communication protocol is embodied in a software-interrupt process.

special file See device special file.

spin loop A sequence of instructions that causes the processor to do a specific operation repeatedly. Standalone device drivers use spin loops to implement real-time delays.

SPL See set-priority-level.

stack An area of memory set aside for temporary storage, or for procedure and interrupt-service linkages. A stack uses the last-in, first-out (LIFO) concept. On most architectures, the stack grows from high memory addresses to low memory addresses. As items are added to (pushed onto) the stack, the stack pointer decrements; as items are retrieved from (popped off) the stack, the stack pointer increments.

stack segment A segment that holds a stack. See also bss segment; data segment; text segment.

stale translation A translation or mapping that was true previously, but that is no longer valid. For example, on machines that have a translation lookaside buffer, if a page-table entry in memory is changed to alter the mapping, any address translation for that page that is present in the translation lookaside buffer must be flushed to avoid a stale translation.

standalone Software that can run without the support of an operating system.

standalone device driver A device driver that is used in a standalone program. A standalone device driver usually differs from a device driver used in an operating system in that it does not have interrupt services, memory management, or full support for virtual-memory mapping. In the 4.4BSD standalone I/O library, for example, a standalone device driver polls a device to decide when an operation has completed, and is responsible for setting up its own memory mapping when doing transfers between the device and main memory.

standalone I/O library A library of software that is used in writing standalone programs. This library includes standalone device drivers that are used to do I/O.

standard error The I/O stream on which error messages are conventionally placed. This stream is usually associated with descriptor 2 in a process.

standard input The I/O stream on which input is conventionally received. This stream is usually associated with descriptor 0 in a process.

standard output The I/O stream to which output is conventionally directed. This stream is usually associated with descriptor 1 in a process.

start routine A device-driver routine that is responsible for starting a device operation after the system has acquired all the resources that are required for the operation.

stateless server A server that does not need to maintain any information about which clients it is serving or which data have been passed to them. Every request that is received by such a server must be completely self-contained, providing all information needed to fulfill it.

sticky bit The bit in an inode representing a directory that indicates that an unprivileged user may not delete or rename files of other users in that directory. The sticky bit may be set by any user on a directory that the user owns or for which she has appropriate permissions. Historically, the bit in an inode that indicated that the text segment of the program was to be shared and kept memory or swap-space resident because of expected future use. That bit is no longer needed for this purpose because the virtual-memory system tracks recently used executables.

stream I/O system A facility in System V Release 4 that permits the flexible configuration of processing for streams of data. In this system, it is possible to connect kernel-resident modules dynamically in a stack-oriented fashion, and to have these modules process data sent and received on an I/O stream.

stream socket A type of socket that models a reliable, connection-based, byte stream that can support out-of-band data transmission.

subnetwork A physical network that is a part of a larger logical network with a single shared network address. The subnet is assigned a subset of the logical network's address space.

superblock A data structure in the on-disk filesystem that specifies the basic parameters of the filesystem.

superuser The user whose UID is 0. Processes owned by the superuser are granted special privileges by UNIX. The superuser's login name is usually root.

swap area A region on secondary storage that is used for swapping and paging.

swap device A device on which a swap area resides.

swapper In 4.4BSD, the name of the kernel process that implements the swapping portion of the memory-management facilities. Historically, the swapper is process 0. See also pagedaemon.

swapping A memory-management algorithm in which entire processes are moved to and from secondary storage when main memory is in short supply.

swap space See swap area.

symbolic link A file whose contents are interpreted as a pathname when it is supplied as a component of a pathname. Also called a soft link.

synchronous Synchronized with the currently running process. For example, in UNIX, all I/O operations appear to be synchronous: The read and write system calls do not return until the operation has been completed. (For a write, however, the data may not actually be written to their final destination until some time later—for example, in writing to a disk file.)

system activity An entry into the kernel. System activities can be categorized according to the event or action that initiates them: system calls, hardware interrupts, hardware traps, and software-initiated traps or interrupts.

system call In operating systems, a request to the system for service; also called a system service request.

system clock The device that is used to maintain the system's notion of time of day. On most systems, this device is an interval timer that periodically interrupts the CPU. The system uses these interrupts to maintain the current time of day, as well as to do periodic functions such as process scheduling.

system mode See kernel mode.

TCP See Transmission Control Protocol.

terminal In computer systems, a device used to enter and receive data interactively from a computer. Most terminals include a CRT, which displays data that are received from a computer. In the Electrical Industry Association (EIA) standard RS-232-C for connecting computers and data-terminal equipment (DTE), a terminal is a device that is placed at the other end of a wire that is connected to data-communications equipment (DCE). In this standard, a terminal might be any kind of device, rather than only a device on which people type.

terminal multiplexer A hardware device that connects multiple serial lines to a computer. These serial lines can be used to connect terminals, modems, printers, and similar devices.

termios structure The structure used to describe terminal state. Terminal state includes special characters, such as the erase, kill, and word-erase characters; modes of operation, such as canonical or noncanonical; and hardware serial-line parameters, such as parity and baud rate.

text segment The segment of a program that holds machine instructions. The system usually makes a program's text segment read-only and shareable by multiple processes when the program image is loaded into memory. See also bss segment; data segment; stack segment.

thrashing A condition where requested memory utilization far exceeds the memory availability. When a machine is thrashing, it usually spends more time doing system-related tasks than executing application code in user mode.

thread The unit of execution of a process. A thread requires an address space and other resources, but it can shared many of those resources with other threads. Threads sharing an address space and other resources are scheduled independently, and can all do system calls simultaneously.

three-level mapping hierarchy See segment table.

tick An interrupt by the system clock.

time quantum In a timesharing environment, the period of time that the process scheduler gives a process to run before it preempts that process so that another process can execute. Also called a time slice.

timer backoff The rate at which a timer value is increased. For example, in TCP, the value of the retransmit timer is determined by a table of multipliers that provide a near-exponential increase in timeout values.

time slice See time quantum.

time-stable identifier An identifier that refers uniquely to some entity both while it exists and for a long time after it is deleted. A time-stable identifier allows a system to remember an identity across transient failures, and to detect and report errors for attempts to access deleted entities.

TLB See translation lookaside buffer.

top half With regard to system operation, the routines in the kernel that are invoked synchronously as a result of a system call or trap. These routines depend on per-process state and can block by calling sleep(). See also bottom half.

trace trap A trap used by the system to implement single-stepping in program debuggers. On architectures that provide trace-bit support, the kernel sets the hardware-defined trace bit in the context of the process being debugged, and places the process on the run queue. When the process next runs, the trace bit causes a trap to be generated after the process executes one instruction. This trap is fielded by the kernel, which stops the process and returns control to the debugging process.

track In computer systems, the sectors of a disk that are accessible by one head at one of its seek positions.

track cache When the kernel is reading from a disk, memory associated with the disk that holds data that are passing under the disk heads regardless of whether they have been requested explicitly. When the kernel is writing to a disk, memory associated with the disk in which data are stored until the disk heads reach the correct position for writing them.

translation lookaside buffer (TLB) A processor cache containing translations for recently used virtual addresses.

Transmission Control Protocol (TCP) A connection-oriented transport protocol used in the Internet. TCP provides for the reliable transfer of data, as well as for the out-of-band indication of urgent data.

transport layer The layer of software in the network subsystem that provides the addressing structure required for communication between sockets, as well as any protocol mechanisms necessary for socket semantics such as reliable data delivery.

triple indirect block See indirect block.

tty driver The software module that implements the semantics associated with a terminal device. See also line discipline.

2MSL timer A timer used by the TCP protocol during connection shutdown. The name refers to the fact that the timer is set for twice the maximum time that a segment may exist in the network. This value is chosen to ensure that future shutdown actions on the connection are done only after all segments associated with the connection no longer exist. See also maximum segment lifetime.

type-ahead Transmission of data to a system, usually by a user typing at a keyboard, before the data are requested by a process.

u-dot See user structure.

UDP See User Datagram Protocol.

UID See user identifier.

uio A data structure used by the system to describe an I/O operation. This structure contains an array of structures; the file offset at which the operation should start; the sum of the lengths of the I/O vectors; a flag showing whether the operation is a read or a write; and a flag showing whether the source and destination are both in the kernel's address space, or whether the source and destination are split between user and kernel address spaces.

urgent data In TCP, data that are marked for urgent delivery.

user area See user structure.

User Datagram Protocol (UDP) A simple, unreliable, datagram protocol used in the Internet. UDP provides only peer-to-peer addressing and optional data checksums.

user identifier (UID) A nonnegative integer that identifies a user uniquely. UIDs are used in the access-control facilities provided by the filesystem. See also effective user identifier; real user identifier; saved user identifier; set-user-identifier program.

user mode The least privileged processor-access mode. User processes run in user mode.

user-request routine A routine provided by each communication protocol that directly supports a socket (a protocol that indirectly supports a socket is layered underneath a protocol that directly supports a socket). This routine serves as the main interface between the layer of software that implements sockets and the communication protocol. The interprocess-communication facilities make calls to the user-request routine for most socket-related system calls. See also connect request; control request; listen request; sense request.

user structure A data structure maintained by the kernel for each active process in the system. The user structure contains the process control block, process statistics, signal actions, and kernel-mode run-time stack. Unlike the process structure, the user structure for a process is moved to secondary storage if the process is swapped out. Also referred to as the u-dot area and user area.

virtual address An address that references a location in a virtual address space.

virtual-address aliasing Two or more processes mapping the same physical page at different virtual addresses. When using an inverted page table, there can only be one virtual address mapping any giv en physical page at any one time. Here, the kernel must invalidate the page-table entry for the aliased page whenever it switches between the processes with the conflicting virtual addresses for that page. See also inverted page table.

virtual address space A contiguous range of virtual-memory locations.

virtual machine A machine whose architecture is emulated in software.

virtual memory A facility whereby the effective range of addressable memory locations provided to a process is independent of the size of main memory; that is, the virtual address space of a process is independent of the physical address space of the CPU.

virtual-memory object A kernel data structure that represents a repository of data—for example, a file. An object contains a pager to get and put the data from and to secondary storage, and a list of physical pages that cache pieces of the repository in memory.

vnode An extensible object-oriented interface containing generic information about a file. Each active file in the system is represented by a vnode, plus filesystem-specific information associated with the vnode by the filesystem containing the file. The kernel maintains a single systemwide table of vnodes that is always resident in main memory. Inactive entries in the table are reused on a least-recently used basis.

wait The system call that is used to wait for the termination of a descendent process.

wait channel A value used to identify an event for which a process is waiting. In most situations, a wait channel is defined as the address of a data structure related to the event for which a process is waiting. For example, if a process is waiting for the completion of a disk read, the wait channel is specified as the address of the buffer data structure supplied to the block I/O system.

wildcard route A route that is used if there is no explicit route to a destination.

window probe In TCP, a message that is transmitted when data are queued for transmission, the send window is too small for TCP to bother sending data, and no message containing an update for the send window has been received in a long time. A window-probe message contains a single octet of data.

wired page Memory that is not subject to replacement by the pageout daemon. A nonpageable range of virtual addresses has physical memory assigned when the addresses are allocated. Wired pages must never cause a page fault that might result in a blocking operation. Wired pages are typically used in the kernel's address space.

word-erase character The character that is recognized by the terminal handler in canonical mode to mean “delete the most recently typed word on this terminal.” By default, preceding whitespace and then a maximal sequence of non-whitespace characters are erased. Alternatively, an alternate erase algorithm tuned to deleting pathname components may be specified. Each terminal session can have a different word-erase character, and the user can change that character at any time with an tcsetattr system call. The terminal handler does not recognize the word-erase character on terminals that are in non-canonical mode. See also erase character; kill character.

working directory See current working directory.

working set The set of pages in a process's virtual address space to which memory references have been made over the most recent few seconds. Most processes exhibit some locality of reference, and the size of their working set is typically less than one-half of their total virtual-memory size.

zombie process A process that has terminated, but whose exit status has not yet been received by its parent process (or by init).

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.118.1.232