Cosc 2p13

operating system: A program that manages a computer's hardware, provides a basis for application programs, and acts as an intermediary between the computer user and the computer hardware.

hardware: The CPU, memory devices, input/output (I/O) devices, and any other physical components that are part of a computer.

application program: A program designed for end-user execution, such as a word processor, spreadsheet, compiler, or Web browser.

ease of use: The amount of difficulty and complexity involved in using some aspect of computing.

resource utilization: The amount of a given resource (hardware or software) that is being used.

touch screen: A touch-sensitive screen used as a computer input device.

voice recognition: A computer interface based on spoken commands, which the computer parses and turns into actions.

Siri: The Apple voice-recognition system.

embedded computer: A computer system within some other, larger system (such as a car) that performs specific, limited functions and has little or no user interface.

resource allocator: An operating system or application that determines how resources are to be used.

control program: A program that manages the execution of user programs to prevent errors and improper use of the computer. It is especially concerned with the operation and control of I/O devices.

Moore's Law: A law predicting that the number of transistors on an integrated circuit would double every eighteen months.

kernel: The operating system component running on the computer at all times after system boot.

system program: A program associated with the operating system but not necessarily part of the kernel.

middleware: A set of software frameworks that provide additional services to application developers.
bus: A communication system; e.g., within a computer, a bus connects various components, such as the CPU and I/O devices, allowing them to transfer data and commands.

device driver: An operating system component that provides uniform access to various devices and manages I/O to those devices.

interrupt: A hardware mechanism that enables a device to notify the CPU that it needs attention.

interrupt vector: An operating-system data structure indexed by interrupt address and pointing to the interrupt handlers. A kernel memory data structure that holds the addresses of the interrupt service routines for the various devices.

interrupt-request line: The hardware connection to the CPU on which interrupts are signaled.

interrupt-handler routine: An operating system routine that is called when an interrupt signal is received.

interrupt-controller hardware: Computer hardware components for interrupt management.

nonmaskable interrupt: An interrupt that cannot be delayed or blocked (such as an unrecoverable memory error)

maskable: Describes an interrupt that can be delayed or blocked (such as when the kernel is in a critical section).

interrupt chaining: A mechanism by which each element in an interrupt vector points to the head of a list of interrupt handlers, which are called individually until one is found to service the interrupt request.

interrupt priority level: Prioritization of interrupts to indicate handling order.

random-access memory (RAM): Rewritable memory, also called main memory. Most programs run from RAM, which is managed by the kernel.

dynamic random-access memory (DRAM): The common version of RAM, which features high read and write speeds.

bootstrap program: The program that allows the computer to start running by initializing hardware and loading the kernel.

volatile: Describes storage whose content can be lost in a power outage or similar event.

firmware: Software stored in ROM or EEPROM for booting the system and managing low level hardware.

bit: The basic unit of computer storage. A bit can contain one of two values, 0 or 1.

byte: Eight bits.

word: A unit made up of one or more bytes. For example, a computer that has 64-bit registers and 64-bit memory addressing typically has 64-bit (8-byte) words.

kilobyte (KB): 1,024 bytes.

megabyte (MB): 1,024² bytes.

gigabyte (GB): 1,024³ bytes.

terabyte (TB): 1,024^4 bytes.

petabyte (PB): 1,024^5 bytes.

von Neumann architecture: The structure of most computers, in which both process instructions and data are stored in the same main memory.

secondary storage: A storage system capable of holding large amounts of data permanently; most commonly, HDDs and NVM devices.

hard disk drive (HDD): A secondary storage device based on mechanical components, including spinning magnetic media platters and moving read-write heads.

nonvolatile memory (NVM): Persistent storage based on circuits and electric charges.

tertiary storage: A type of storage that is slower and cheaper than main memory or secondary storage; frequently magnetic tape or optical disk.

semiconductor memory: The various types of memory constructed from semiconductors.

memory: Volatile storage within a computer system.

nonvolatile storage (NVS): Storage in which data will not be lost in a power outage or similar event.

nonvolatile memory (NVM): Persistent storage based on circuits and electric charges.

direct memory access (DMA): A resource-conserving and performance-improving operation for device controllers allowing devices to transfer large amounts of data directly to and from main memory.

core: Within a CPU, the component that executes instructions.

multiprocessor systems: Systems that have two or more hardware processors (CPU cores) in close communication, sharing the computer bus and sometimes the clock, memory, and peripheral devices.

symmetric multiprocessing (SMP): Multiprocessing in which each processor performs all tasks equally, including operating-system tasks and user processes.

multicore: Multiple processing cores within the same CPU chip or within a single system.

multiprocessor: multiple processors within the same cpu chip or within a single system.

heterogeneous multiprocessing (HMP): Multiprocessing in which processor cores are differentiated by power consumption and clock speed.

P-core: A performance core, which is used for high performance and consumes more power.

E-core: An efficiency core, which is used for less demanding tasks and consumes less power.

system-on-a-chip: A computer system that combines multiple components of a computer system on the same integrated circuit chip.

graphics processing unit (GPU): The Graphics Processing Unit which is the specialized hardware to run computer graphics.

shared system interconnect: A bus connecting CPUs to memory in such a way that all CPUs can access all system memory; the basis for NUMA systems.

non-uniform memory access (NUMA): An architecture aspect of many computer systems in which the time to access memory varies based on which core the thread is running on (e.g., a core interlink is slower than accessing DIMMs directly attached to core).

blade server: A computer with multiple processor boards, I/O boards, and networking boards placed in the same chassis. The difference between these and traditional multiprocessor systems is that each blade-processor board boots independently and runs its own operating system.

clustered system: A system that gathers together multiple CPUs. Clustered systems differ from multiprocessor systems in that they are composed of two or more individual systems—or nodes—joined together.

high-availability: Describes a service that will continue even if one or more systems in the cluster fail.

graceful degradation: The ability of a system to continue providing service proportional to the level of surviving hardware.

fault-tolerant system: A system that can suffer a failure of any single component and still continue operation.

asymmetric clustering: A configuration in which one machine in a cluster is in hot-standby mode while the other is running applications.

hot-standby mode: A condition in which a computer in a cluster does nothing but monitor the active server. If that server fails, the hot-standby host becomes the active server.

symmetric clustering: A situation in which two or more hosts are running applications and are monitoring each other.

high-performance computing: A computing facility designed for use with a large number of resources to be used by software designed for parallel operation.

parallelization: The process of dividing a program into separate components that run in parallel on individual cores in a computer or computers in a cluster.

distributed lock manager (DLM): A function used by a clustered system to supply access control and locking to ensure that no conflicting operations occur.

storage-area network (SAN): A local-area storage network allowing multiple computers to connect to one or more storage devices.

big data: Extremely large sets of data; distributed systems are well suited to working with big data.

MapReduce: A Google-created big data programming model and implementation for parallel processing across nodes in a distributed cluster. A layer on top of the Google file system (GFS), it allows developers to carry out large-scale parallel computations easily.

system daemon: A service that is provided outside the kernel by system programs that are loaded into memory at boot time and run continuously.

trap: A software interrupt. The interrupt can be caused either by an error (e.g., division by zero or invalid memory access) or by a specific request from a user program that an operating-system service be performed.

exception: A software-generated interrupt caused either by an error (such as division by zero or invalid memory access) or by a specific request from a user program than an operating-system service be performed.

system call: Software-triggered interrupt allowing a process to request a kernel service.

multiprogramming: A technique that increases CPU utilization by organizing jobs (code and data) so that the CPU always has a job to execute.

process: A program loaded into memory and executing.

multitasking: The concurrent performance of multiple jobs. A CPU executes multiple jobs by switching among them, but the switches occur so frequently that users can interact with the processes.

response time: The amount of time it takes the system to respond to user action.

CPU scheduling: The process by which the system chooses which job will run next if several jobs are ready to run at the same time.

virtual memory: A technique that allows the execution of a process that is not completely in memory. Also, separation of computer memory address space from physical into logical, allowing easier programming and larger name space.

logical memory: Memory as viewed by the user; usually a large uniform array, not matching physical memory in virtual memory systems.

user mode: A CPU mode for executing user processes in which some instructions are limited or not allowed. See also kernel mode.

kernel mode: A CPU mode in which all instructions are enabled. The kernel runs in this mode. See also user mode.

supervisor mode: A CPU mode in which all instructions are enabled. The kernel runs in this mode. See also user mode.

system mode: A CPU mode in which all instructions are enabled. The kernel runs in this mode. See also user mode.

privileged mode: A CPU mode in which all instructions are enabled. The kernel runs in this mode. See also user mode.

mode bit: A CPU status bit used to indicate the current mode: kernel (0) or user (1).

privileged instructions: Instructions that can execute only if the CPU is in in kernel mode.

protection rings: A model of privilege separation consisting of a series of rings, with each successive ring representing greater execution privileges.

virtual machine manager (VMM): The computer function that manages the virtual machine; also called a hypervisor.

timer: A hardware component that can be set to interrupt the computer after a specified period.
resource manager: The role of an operating system in managing the computer's resources.

program counter: A CPU register indicating the main memory location of the next instruction to load and execute.

file: The smallest logical storage unit; a collection of related information defined by its creator.

caching: The use of temporary data storage areas to improve performance.

cache management: The management of a cache's contents.

cache coherency: The coordination of the contents of caches such that an update to a value stored in one cache is immediately reflected in all other caches that hold that value.

I/O subsystem: The I/O devices and the part of the kernel that manages I/O.
protection: A category of system calls. Any mechanism for controlling the access of processes or users to the resources defined by a computer system.

security: The defense of a system from external and internal attacks. Such attacks include viruses and worms, denial-of-service attacks, identity theft, and theft of service.

user identifier (user ID) (UID): A unique numerical user identifier.

user IDs: A unique numerical user identifier.

security ID (SID): In Windows, a value used to uniquely identify a user or group for security purposes.

group identifier: Similar to a user identifier, but used to identify a group of users to determine access rights.

escalate privileges: To gain extra permissions for an activity, as when a user needs access to a device that is restricted.

effective UID: The UID the process is currently using, which can be different from the login UID due to, e.g., escalating privileges.
virtualization: A technology for abstracting the hardware of a single computer into several different execution environments, thereby creating the illusion that each environment is running on its own private computer.

virtual machine (VM): The abstraction of hardware allowing a virtual computer to execute on a physical computer. Multiple virtual machines can run on a single physical machine (and each can have a different operating system).

emulation: A methodology used to enable a process to run when the compiled program's original (source) CPU type is different from the target CPU type on which the program is to run.

guest: In virtualization, an operating system running in a virtual environment (rather than natively on the computer hardware).

host: In virtualization, the location of the virtual machine manager, which runs guest operating systems; generally, a computer.

virtual machine manager (VMM): The computer function that manages the virtual machine; also called a hypervisor.
network: In the simplest terms, a communication path between two or more systems.

transmission control protocol/Internet protocol (TCP/IP): The most common network protocol; it provides the fundamental architecture of the Internet.

local-area network (LAN): A network that connects computers within a room, a building, or a campus.

metropolitan-area network (MAN): A network linking buildings within a city.

personal-area network (PAN): A network linking devices within several feet of each other (e.g., on a person).

wide-area network(WAN): A network which usually links buildings, cities, or countries.

network operating system: A type of operating system that provides features such as file sharing across a network, along with a communication scheme that allows different processes on different computers to exchange messages. It provides an environment in which users can access remote resources by remote login or data transfer between remote and local systems.
list: A data structure that presents a collection of data values as a sequence.

linked list: A data structure in which items are linked to one another.

stack: A sequentially ordered data structure that uses the last-in, first-out (LIFO) principle for adding and removing items; the last item placed onto a stack is the first item removed.

queue: A sequentially ordered data structure that uses the first-in, first-out (FIFO) principle; items are removed from a queue in the order in which they were inserted.

tree: A data structure that can be used to represent data hierarchically; data values in a tree structure are linked through parent-child relationships.

general tree: A tree data structure in which a parent may have unlimited children.

binary tree: A tree data structure in which a parent may have at most two children.

binary search tree: A type of binary tree data structure that requires an ordering between the parent's two children in which left child <= right child.

balanced binary search tree: A tree containing items that has, at most, levels, thus ensuring worst-case performance of ().

red-black tree: A tree containing n items and having at most lg n levels, thus ensuring worst-case performance of O(lg n).

hash function: A function that takes data as its input, performs a numeric operation on the data, and returns a numeric value. Also, an algorithm for creating a hash (a small, fixed-size block of data calculated from a larger data set, used to determine if a message has been changed).

hash map: A data structure that maps [key:value] pairs using a hash function; a hash function can then be applied to a key to obtain its matching value.

bitmap: A string of n binary digits that can be used to represent the status of n items. The availability of each item is indicated by the value of a binary digit: 0 means that the resource is available, while 1 indicates that it is unavailable (or vice-versa).
portals: Gateways between requestors and services running on provider computers.

network computer: A limited computer that understands only web-based computing.

thin client: A limited computer (terminal) used for web-based computing.

wireless network: A communication network composed of radio signals rather than physical wires.

firewall: A computer, appliance, process, or network router that sits between trusted and untrusted systems or devices. It protects a network from security breaches by managing and blocking certain types of communications.

mobile computing: A mode of computing involving small portable devices like smartphones and tablet computers.

Apple iOS: The mobile operating system created by Apple Inc.

Google Android: The mobile operating system created by Google Inc.

server system: A system providing services to other computers (e.g., a web server).

client system: A computer that uses services from other computers (such as a web client).

client-server model: A mode of computing in which a server provides services to one or more clients. In distributed computing, a model in which a computer acts as a resource server to other computers that are clients of those resources.

compute-server system: A server that provides an interface to which a client can send a request for an action (e.g., read data). In response, the server executes the action and sends the results to the client.

file-server system: A server that provides a file-system interface where clients can create, update, read, and delete files (e.g., a web server that delivers files to clients running web browsers).

cloud computing: A computing environment in which hardware, software, or other resources are made available to customers across a WAN, such as the Internet, usually with APIs for management. A type of computing that delivers computing, storage, and even applications "as a service" across a network.

Amazon Elastic Compute Cloud (ec2): An instance of cloud computing implemented by Amazon.

public cloud: Cloud computing available via the Internet to anyone willing to pay for the services offered.

private cloud: Cloud computing run by a company for that company's own use.

hybrid cloud: A type of cloud computing that includes both public and private cloud components.

Software as a Service (SaaS): A type of computing in which one or more applications (such as word processors or spreadsheets) are available as a service via the Internet.

platform as a service (PaaS): A software stack ready for application use via the Internet (e.g., a database server).

infrastructure as a service (IaaS): A type of computing in which servers or storage are available over the Internet (e.g, storage available for making backup copies of production data).

ASIC: An application-specific integrated circuit (hardware chip) that performs its tasks without an operating system.

real-time operating systems (RTOS): Systems used when rigid time requirements have been placed on the operation of a processor or the flow of data; often used as control devices in dedicated applications.

free operating system: An operating system released under a license that makes its source code available and allows no-cost use, redistribution, and modification.

open-source operating system: An operating system or other program available in source-code format rather than as compiled binary code.

closed-source: An operating system or other program available only in compiled binary code format.

reverse engineering: The procedure of converting a compiled binary file into a human-readable format.

GNU General Public License (GPL): A license agreement that codifies copylefting (allowing and requiring open sourcing of the associated programs); a common license under which free software is released.

GNU/Linux (aka Linux): An open-source operating system composed of components contributed by the GNU foundation and Linus Torvalds, as well as many others.

distribution: A release of a version of an operating system.

LiveCD: An operating system that can be booted and run from a CD-ROM (or more generally from any media) without being installed on a system's boot disk(s).

LiveDVD: An operating system that can be booted and run from a DVD (or more generally from any media) without being installed on a system's boot disk(s).

UnixBSD: A UNIX derivative based on work done at the University of California at Berkeley (UCB).

version control system: Software that manages software distributions by allowing contributors to "push" changes into a repository and "pull" a version of the software source-code tree to a system (e.g., for compilation).

git: A version control system used for GNU/Linux and other programs.

Solaris: A UNIX derivative that is the main operating system of Sun Microsystems (now owned by Oracle Corporation). There is an active open source version called Illumos.

SunOS: The predecessor of Solaris by Sun Microsystems Inc.