Chapter 4 — Reading the Memory Map and Building a Physical Page Allocator

Chapter 4 — Reading the Memory Map and Building a Physical Page Allocator
This entry is part 4 of 4 in the series Writing A Linux Style Operating System From Scratch

Before we add paging, a heap, processes, filesystems, or user programs, the kernel must answer a basic question: Which physical 4 KiB pages of RAM are safe for me to use? Right now, our kernel can boot, print text, catch CPU exceptions, and receive timer/keyboard interrupts. But it still cannot safely allocate memory. This chapter

Chapter 3 — Hardware Interrupts: PIC, PIT Timer, and Keyboard Input

Chapter 3 — Hardware Interrupts: PIC, PIT Timer, and Keyboard Input
This entry is part 3 of 4 in the series Writing A Linux Style Operating System From Scratch

In Chapter 2 we taught the CPU how to call our code when something goes wrong: Now we will teach the machine how to call our code when hardware wants attention: This is the first step toward a living kernel. A timer interrupt eventually gives us scheduling. Keyboard input eventually gives us a kernel monitor

Chapter 2 — GDT, IDT, and Surviving Your First Kernel Crash

Chapter 2 — GDT, IDT, and Surviving Your First Kernel Crash
This entry is part 2 of 4 in the series Writing A Linux Style Operating System From Scratch

In Chapter 1, we got control of the machine: Now we need something more important than printing text: we need the CPU to call our code when something goes wrong. Right now, if the kernel executes an invalid instruction, divides by zero, touches unmapped memory later, or faults during setup, the machine may reset, hang,

Writing a Linux-style Operating System From Scratch

Writing a Linux-style Operating System From Scratch
This entry is part 1 of 4 in the series Writing A Linux Style Operating System From Scratch

Today, we are beginning a new article series: “Writing a Linux-Style Operating System From Scratch.” In this series, we will walk step by step through the process of creating our own operating system from the ground up. Many operating system tutorials stop shortly after the system boots and prints a simple message on the screen.

Building the i686-elf-gcc Cross-Compiler

Together, these tools allow us to assemble, compile, link, inspect, and transform kernel binaries without using the host operating system’s normal compiler target.

Developing an Open Hardware Device Programmer

This entry is part 1 of 1 in the series Open Universal Device Programmer

Introduction As an electronics enthusiast with over 50 years of experience, I’ve had the privilege of witnessing the dramatic evolution of computing systems. From the early days of 4 and 8-bit machines with minimal RAM to today’s powerful 64-bit computers with terabytes of storage, the progress has been nothing short of extraordinary. The same transformative

The Definitive Guide to RS-232 Communication: History, Standards, and Relevance in the Modern World

The Definitive Guide to RS-232 Communication: History, Standards, and Relevance in the Modern World
Serial COnnector Sub-D9

Introduction RS-232, often referred to as a legacy serial communication standard, has been the backbone of communication in electronics and computer systems for decades. Developed in the early 1960s, RS-232 became the standard for robust, reliable data transfer between computers, modems, and peripherals. While USB, TTL serial, and wireless protocols have supplanted RS-232 in consumer

Understanding Inductors: Types, Ratings, Applications, and Selection

This entry is part 6 of 6 in the series Introduction to Electronics

Inductors are essential components in electronics, used for storing energy in magnetic fields and managing current flow. This article explores the various types of inductors, their values, ratings, and applications in power supplies, RF circuits, and high-voltage systems. Learn how to select the right inductor for your project and understand key calculations like Q factor, voltage, and energy storage.

Resistor Basics: A Comprehensive Tutorial with Experiments

Resistor Basics: A Comprehensive Tutorial with Experiments
This entry is part 3 of 6 in the series Introduction to Electronics

Resistors are essential components in electronics, used to control current and voltage in a circuit. This tutorial explores the basics of resistors, including how to read resistor color codes, apply Ohm’s Law, and measure resistance with a multimeter. By completing a few simple experiments, you’ll gain practical knowledge about how resistors behave in series and parallel circuits, and how they limit current in real-world applications like LED circuits.

Understanding Resistors: Types, Power Ratings, High Voltage Applications, and Series & Parallel Circuits

Understanding Resistors: Types, Power Ratings, High Voltage Applications, and Series & Parallel Circuits
This entry is part 2 of 6 in the series Introduction to Electronics

Resistors are fundamental components in electronics, playing a crucial role in controlling current, dividing voltage, and safeguarding sensitive components. Though often simple in appearance, selecting the right resistor becomes complex when considering factors such as material, mounting, power dissipation, and performance in different circuit configurations. For high-voltage applications, additional considerations such as the resistor’s voltage