Operating System Fundamentals: Memory, Scheduling, and Concurrency
Linux Memory Management Components
There are two primary components to memory management under Linux:
- The physical memory management system, which deals with allocating and freeing pages, groups of pages, and small blocks of memory.
- The virtual memory system, which handles memory mapped into the address space of running processes.
Physical Memory Management
The primary physical memory manager in the Linux kernel is the page allocator. This allocator is responsible for allocating and freeing all physical
Read MoreOperating System Memory Management: Single vs. Multiuser Techniques
Memory Management Fundamentals
Memory management is a function of an operating system (OS) that handles the allocation and deallocation of memory to programs and processes.
Single User Operating Systems (OS)
In a Single User OS, only one user can use the system at a time. Consequently, memory is managed in a simple way.
Key Features of Single User OS Memory
- Single Program in Memory: Only one program is loaded in memory at a time. No multitasking is supported.
- Contiguous Memory Allocation: The program
Data Link Layer Protocols: Services, Framing, and Error Control
Data-Link Layer Service Categories
Describe the three possible categories of services provided by the data-link layer:
Unacknowledged Connectionless Service
- This service is appropriate when the error rate is very low, so recovery is left to higher layers.
- It is also appropriate for real-time traffic, such as voice, where late data are worse than bad data.
Acknowledged Connectionless Service
- No logical connections are used, but each frame sent is individually acknowledged.
- Thus, the sender knows whether
Input/Output Systems, Storage, and CPU Security Mechanisms
Types of I/O Devices
Block Devices
Store data in fixed-size blocks. Data transfer happens in blocks (e.g., SSD).
Character Devices
Handle a stream of characters with no block structure (e.g., Keyboard, Mouse). They do not support seek operations.
Block vs. Character Devices
Block devices support random access and block-level operations, while character devices operate in a stream and cannot seek.
I/O Communication Methods
Separate I/O and Memory Space
Provides easier separation but is less flexible.
Memory-
Read MoreMastering C Programming Concepts: Data Structures, Control Flow, and File I/O
Two-Dimensional Arrays and Matrix Addition in C
A two-dimensional array (2D array) is a type of array that stores data in a matrix format, consisting of rows and columns. It can be visualized as an array of arrays. Each element in a 2D array is accessed by two indices: the row index and the column index.
Declaration of a Two-Dimensional Array
In C language, a 2D array is declared using the following syntax:
data_type array_name[rows][columns];Example: To declare a 2×2 integer matrix:
int matrix[2][2] Read More
Fundamental Definitions in Computer Systems and Programming
Core Concepts in Computer Architecture and Data Handling
Input-Output Interface (I/O Interface)
The Input-Output Interface (I/O Interface) is a method used for transferring information between internal storage devices (i.e., memory) and external peripheral devices. A peripheral device provides input and output for the computer and is often called an I/O device.
Examples of Peripheral Devices:
- Input Devices: Keyboard and mouse.
- Output Devices: Monitor and printer.
- Both Input and Output: External hard drives
