1/72
For Dr. Bennet's CSC422 class at Mississippi College
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
Memory hierarchy
A system where smaller, faster storage (like cache) is used to keep recent data, working with larger, cheaper storage (like main memory) to create a seemingly large and cheap storage system
Address Mapping
The process where the CPU translates virtual addresses used by programs into real addresses before sending them to the memory unit
Real addresses
The actual memory locations used by the hardware
Virtual addresses
Kernel
The core component of an operating system
Applications
Programs designed for specific user tasks, distinct from the operating system kernel and utilities
Utilities
Software tools that provide services between the operating system kernel and applications
Extended machine
The concept that an operating system adds functionality to the machine, making it seem more capable (also sometimes called a virtual machine in this context)
Resource manager
The role of an operating system in allocating and enforcing the use of resources such as memory, disk, and exclusive devices
First Generation (OS History)
The earliest era (1940s-1950s) of computing, characterized by hardware like relays or vacuum tubes, direct programmer interaction, and no operating systems
Second Generation (Batch systems)
An era (mid-1960s to mid-1970s) using transistors, where jobs were collected into batches on magnetic tape and run sequentially by the computer
Third Generation
An era (1965-1980) marked by integrated circuits, multiprogramming, spooling, and time-sharing systems like the IBM 360
Multiprogramming
A technique allowing multiple programs to reside in memory at the same time, combining compute- and I/O-bound jobs to improve CPU utilization
Spooling
A method allowing the CPU and peripheral devices to operate in parallel on a single machine
Time-sharing
An application of multiprogramming that allows multiple users to interact with a computer simultaneously, often via text-based terminals (TTYs)
Multics
A large, ambitious joint project (MIT and ATT) to create a utility-like computing service, which was a commercial failure but advanced technology
Unix
An influential operating system developed by ex-Multics programmers at ATT, known for its "small-is-beautiful" approach and having many descendants
Minicomputers
Smaller and cheaper computers than mainframes, such as the DEC PDP series, on which Unix was first developed
Fourth Generation (Personal computing)
The era (1980-present) defined by integrated CPUs, personal computers (e.g., Apple II, IBM PC), and graphical user interfaces (GUIs)
GUI (Graphical User Interface)
A user interface paradigm, pioneered at Xerox PARC and popularized by Apple Mac, which uses visual elements like windows, icons, and menus
Fifth Generation (Mobile computing)
The current generation of computing, characterized by devices with limited power, computing power, and peripherals, such as smartphones running iOS or Android
Registers
Small, high-speed storage locations within the CPU, including general-purpose registers, the program counter, stack pointer, and program status register
Program counter (PC)
A CPU register that stores the memory address of the next instruction to be executed
Context switch
The process of saving the current CPU state (registers) of one program and loading the saved state of another program to allow the CPU to switch between them
Multi-threaded processor
A CPU designed to run multiple threads concurrently, often by having multiple sets of registers (e.g., Intel's Hyperthreaded technology)
Multi-core
A CPU architecture where multiple processing units (cores) are integrated onto a single chip, essentially providing multiple CPUs
Solid-State storage (flash)
A type of storage (e.g., SSDs) that offers much faster reads than mechanical disks, without concern for operation order, but where writes cause wear and must be distributed
Memory-mapped I/O
A technique where device control registers are assigned memory addresses, allowing the CPU to communicate with devices by reading from and writing to these addresses
Port address space I/O
A technique where device control registers have their own dedicated address space, separate from memory, for CPU communication
Polling
A method of device control where the CPU continuously checks the status of an I/O device until it is ready
Interrupts
Hardware signals that cause the CPU to suspend its current task and transfer control to an interrupt handler in the operating system, used for I/O completion, errors, or periodic clock ticks
DMA (Direct Memory Access)
A hardware feature that allows I/O devices to transfer data directly to and from main memory without involving the CPU, improving efficiency
Traps
Software-initiated events, such as system calls, that cause the CPU to switch from user mode to supervisor (kernel) mode, transferring control to the operating system
CPU modes (User and Supervisor/Kernel)
Distinct operating modes of the CPU; user mode restricts access to privileged instructions (like direct I/O), while supervisor (kernel) mode grants full access to hardware
System Call (Syscall)
An interface through which user programs request services from the operating system kernel, typically involving a trap to switch to kernel mode
Memory Protection
Hardware mechanisms that enforce memory allocations, preventing programs from accessing memory regions they are not authorized to use, and generating an interrupt on violations
Clock interrupt
A periodic interrupt generated by a hardware timer, used by the operating system to regain control, enforce time-sharing, and perform scheduling
Process
An operating system abstraction that represents a running program, encompassing its identity, ownership, communication, control, and its own address space
Address space
The range of memory addresses that a process can refer to
Files
An abstraction used by the operating system to store and organize data on storage devices, characterized by hierarchy, permissions, and handles
Protection
The mechanisms, both hardware and software, used by the operating system to control access to system resources like memory and files
I/O (Input/Output)
Operations that involve data transfer between the computer and the outside world, which are exclusively performed by the OS at the request of user programs
Shell
A program that acts as a command interpreter, allowing users to interact with the operating system, either through a text-based interface or a graphical one
Monolithic structure
An operating system architecture where the entire OS, including all services, runs as a single, large program in kernel mode
Layered system
An operating system architecture where functions are organized into hierarchical layers, with each layer only communicating with the layer directly below it
Microkernels
An operating system architecture that minimizes the kernel by moving most OS services (like file systems and device drivers) into user-space server processes, which communicate via message passing
Virtual machines
Software that simulates a complete hardware environment, allowing one or more guest operating systems to run on top of a host system
Hypervisor (Type 1)
A virtual machine monitor that runs directly on the host hardware without a separate host operating system
Hypervisor (Type 2)
A virtual machine monitor that runs as an application on a host operating system, which then hosts guest operating systems
Paravirtualization
A virtualization technique where the guest operating system is modified to cooperate with the hypervisor, improving performance and efficiency, though sacrificing some generality
Multiprogramming
The rapid switching of the CPU among multiple processes, giving the illusion that they are running concurrently (pseudoparallelism)
Pseudoparallelism
The appearance of multiple processes running at the same time, achieved by rapid CPU switching in a single-processor system
Program in execution
Synonymous with a process; it includes the program code and its complete execution context (CPU state, registers, memory, etc.)
Process switching
The operating system's action of saving the current process's CPU state, updating system records, and loading the state of another process to give it control of the CPU
Process Creation
The act of initiating a new process, typically done by the kernel either during system boot, at the request of an existing process, or by a user command
Process Termination
The ending of a process, which can be voluntary (normal exit, error) or involuntary (killed by another process)
Process Hierarchies (Unix)
A system where processes are organized in a parent-child relationship, forming a tree structure, with process 1 (init) as the ultimate ancestor
Process table (Process Control Block / PCB)
A data structure maintained by the OS for each running process, containing essential information like process ID, state, scheduling parameters, resources, and saved register values
CreateProcess (Windows)
A Windows API function used to create a new process and execute a specified program, returning a handle for future management
Fork (Unix)
A Unix system call that creates an exact copy of the calling process, with both parent and child processes returning from the call
Exec (Unix)
A Unix system call that replaces the current process's memory space with a new program, effectively running a new program within the existing process context and not returning to the caller
CPU Utilization
The percentage of time the CPU is actively performing work, which can be estimated by the formula 1 - p^n, where p is the fraction of time a process waits for I/O and n is the degree of multiprogramming
Degree of multiprogramming
The number of active programs currently loaded into memory at the same time
Thread
A light-weight unit of execution within a process that has its own program counter, registers, and stack, but shares the memory space and other resources (like open files) with other threads in the same process
Traditional process
A process that contains only a single thread of execution
Threaded process (Modern process)
A process that can contain multiple threads of execution
Race condition
A situation that occurs when multiple threads access and modify shared data concurrently, and the final outcome depends on the non-deterministic order in which the threads' operations are interleaved
User space threads
Threads managed entirely by a user-level library without kernel awareness, meaning the kernel only schedules the containing process
Kernel threads
Threads that are directly managed and scheduled by the operating system kernel
Hybrid threads
A threading model that combines aspects of both user-level and kernel-level threads, often by mapping multiple user-level threads to a smaller number of kernel threads
Scheduler Activations
A model where the kernel provides a set of virtual processors (kernel threads) to a user-level thread library, and the kernel notifies the library (via an "up-call") of events like a thread blocking
Up-call
A mechanism where the operating system (kernel) invokes a function in a user-space scheduler, essentially a "system call in reverse"
Pop-up thread
A thread that is automatically created by the system in response to an incoming event, such as a network message, often used for quickly handling requests
Thread-local storage
A mechanism that allows each thread to have its own private copy of data that would otherwise be shared global or static variables, preventing race conditions without explicit synchronization