1/47
A collection of vocabulary terms and definitions covering the fundamental concepts of operating system I/O systems, hardware interfaces, interrupt mechanisms, and kernel subsystems as described in the lecture notes.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Bus
A set of wires and a rigidly defined protocol that specifies a set of messages that can be sent on the wires, such as the PCI bus.
Port
A connection point, also referred to as a PHY in data-center nomenclature, through which a device communicates with a computer system.
Daisy chain
An arrangement where device A plugs into device B, device B plugs into device C, and device C plugs into a port on the computer, usually operating as a bus.
PCIe Lane
A component of a PCIe link composed of two signaling pairs, one for receiving data and the other for transmitting, used as a full-duplex byte stream.
Controller
A collection of electronics that can operate a port, a bus, or a device, such as a serial-port controller or a host bus adapter (HBA).
Memory-mapped I/O
A technique where device-control registers are mapped into the address space of the processor, allowing the CPU to execute I/O requests using standard data-transfer instructions.
Status register
A device register containing bits that indicate states, such as whether a command has completed, if data is available to be read, or if a device error occurred.
Control register
A register that can be written by the host to start a command or change the mode of a device, such as choosing between full-duplex and half-duplex communication.
Polling
A process where the host repeatedly reads the busy bit in the status register until it becomes clear, also known as busy-waiting.
Interrupt
A hardware mechanism that enables a device to notify the CPU when it becomes ready for service, triggered via an interrupt-request line.
Interrupt-handler routine
A routine at a fixed address in memory that determines the cause of an interrupt, performs necessary processing, and executes a return from interrupt instruction.
Nonmaskable interrupt
An interrupt reserved for unrecoverable events such as memory errors that cannot be turned off by the CPU.
Maskable interrupt
An interrupt that can be turned off by the CPU before the execution of critical instruction sequences to prevent interruption.
Interrupt vector
A table containing the memory addresses of specialized interrupt handlers used to reduce the search time for the source of an interrupt.
Interrupt chaining
A technique where each element in the interrupt vector points to a list of interrupt handlers that are called sequentially until the request is serviced.
FLIH (First-Level Interrupt Handler)
A handler that performs the context switch, state storage, and queuing of a handling operation in a split interrupt management system.
SLIH (Second-Level Interrupt Handler)
A separately scheduled handler that performs the actual processing of an I/O operation requested via an interrupt.
Trap
A software interrupt triggered by an instruction that saves the state of user code, switches to kernel mode, and dispatches to a kernel routine for a specific service.
Programmed I/O (PIO)
A method of data transfer where the CPU watches status bits and feeds data into a controller register one byte at a time.
DMA (Direct Memory Access) controller
A special-purpose processor that offloads data-transfer work from the main CPU by operating the memory bus directly.
Scatterāgather
A method that allows multiple I/O transfers to non-contiguous memory locations to be executed via a single DMA command.
Cycle stealing
A condition where the DMA controller seizes the memory bus, momentarily preventing the CPU from accessing main memory.
DVMA (Direct Virtual Memory Access)
A transfer method using virtual addresses that undergo translation to physical addresses, allowing transfers between two memory-mapped devices without CPU intervention.
Device-driver module
A kernel module that encapsulates the specific details and protocols of a hardware device to present a uniform device-access interface to the I/O subsystem.
Block device
A device category that transfers a block of bytes as a unit and supports commands like read(), write(), and seek(), such as a disk drive.
Character-stream device
A device that transfers bytes one by one, such as a keyboard, mouse, or modem.
ioctl()
A UNIX system call standing for I/O control that allows an application to access any functionality implemented by a device driver without inventing a new system call.
Major device number
An identifier used by the operating system to route I/O requests to the appropriate device driver.
Minor device number
An identifier passed to a device driver to index into a device table and select a specific instance of a hardware device.
Network socket interface
An interface that enables applications to create a local socket, connect to remote addresses, and send or receive packets over a network.
select()
A socket interface function that manages a set of sockets and returns information about which ones have data waiting or room for sent packets, eliminating polling.
Programmable interval timer
Hardware that measures elapsed time and can trigger an interrupt after a specified duration, used by the scheduler for time-slicing.
HPET (High-performance event timer)
A hardware timer in modern PCs that runs at rates in the 10āmegahertz range and uses comparators to trigger interrupts.
Blocking I/O
A system call that suspends the execution of the calling thread and moves it to a wait queue until the I/O operation completes.
Nonblocking I/O
A system call that returns immediately with whatever data are available, indicating how many bytes were transferred without halting the thread.
Asynchronous I/O
A system call that returns immediately and performs the transfer in its entirety in the background, signaling the thread upon completion.
Vectored I/O
A method, such as the UNIX readv system call, that allows a single system call to perform multiple I/O operations involving multiple memory buffers.
Buffer
A memory area that stores data being transferred between two devices to cope with speed mismatches or different transfer sizes.
Double buffering
An optimization that uses two buffers to decouple the producer of data from the consumer, allowing one to be filled while the other is being written.
Cache
A region of fast memory that holds copies of data residing on slower storage to improve access efficiency.
Copy semantics
A guarantee that the version of data written to disk is the version present at the time of the system call, independent of subsequent changes to the application buffer.
Spool
A buffer that holds output for a device that cannot accept interleaved data streams, such as a printer.
Power collapse
A deep sleep state in mobile devices where individual components are powered off, allowing the device to consume very little power while still responding to stimuli.
Wakelock
A kernel mechanism in Android that allows applications to prevent the system from entering power collapse.
ACPI (Advanced Configuration and Power Interface)
An industry standard providing routines for the kernel to manage device state discovery, error management, and power management.
Stream
A full-duplex connection in the STREAMS mechanism consisting of a stream head, a driver end, and optional modules containing read and write queues.
I/O channel
A dedicated, special-purpose CPU found in high-end systems that offloads I/O work from the main CPU.
FUSE
A system interface that allows file systems to be written and run in user mode rather than within the kernel.