Chapter 6 — Building the First Kernel Heap

Chapter 6 — Building the First Kernel Heap
This entry is part 6 of 29 in the series Writing A Linux Style Operating System From Scratch

In Chapter 5, we enabled paging with a simple identity map: That gave us a working paged kernel, but not yet a comfortable way to allocate variable-sized objects. The physical memory manager gives us whole pages: But kernel code usually needs smaller objects: So this chapter builds the first kernel heap. We will keep it

Chapter 5 — Turning On Paging

Chapter 5 — Turning On Paging
This entry is part 5 of 29 in the series Writing A Linux Style Operating System From Scratch

In Chapter 4, we built the first memory-management layer: Now we add the next layer: paging. Paging lets the CPU translate a virtual address into a physical address through page tables. In 32-bit x86 paging without PAE, a virtual address is split into a page-directory index, page-table index, and page offset; page directories and page

Writing a Linux-style Operating System From Scratch

Writing a Linux-style Operating System From Scratch
This entry is part 1 of 29 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.

An Introduction to C for Arduino Users

Explore the essentials of C programming tailored for Arduino users. This comprehensive guide covers variables, data types, control structures, functions, arrays, and pointers, with practical code examples to help you harness the full potential of the Arduino platform.

Programming Languages: Loved, Loathed, and Long-Standing

The world of programming languages is vast and ever-evolving. Over the decades, many languages have been introduced, gained popularity, and sometimes faded into obscurity. Yet, some languages, despite being widely criticized, have managed to maintain a strong foothold in the industry. Conversely, others, once heralded as the future, have declined in use. This article delves into this phenomenon, examining why some languages are resilient despite criticism, while others have fallen out of favor. We will explore these dynamics globally, understanding regional preferences and the historical context that has shaped the programming landscape.

Understanding Memory & Memory Management Systems: A Journey from the Past to Present

Explore the evolution of memory management in computing, from early 8 and 16-bit systems to the sophisticated mechanisms of modern virtual memory. Dive into the challenges faced by developers in systems like the IBM 5150 PC and discover a simplified demonstration of a paging system implemented in C.

Modern C Programming: Embracing New Features, Standards, and Historical Changes

Delve into the evolution of C programming, from historical changes to embracing new features like C11. Explore its enduring usefulness in modern software development and understand its impact on programming languages and the fast-paced world of technology.

Rebuttal to Eric Normand’s Article: “How is Haskell Faster than C?”

Delve into the nuanced debate between Haskell and C programming languages. This article dissects the claims about Haskell’s speed superiority over C, emphasizing the importance of well-crafted code and developer expertise in determining programming efficiency. Discover the complex interplay of factors that influence the performance of these languages in real-world applications.

Kalman Filters: Theory, Applications, Implementation, and Considerations

Explore the power of Kalman filters in state estimation and sensor fusion. Understand their theoretical foundations, versatile applications in navigation, robotics, finance, and signal processing, and learn how to implement them using Python and C. Delve into their strengths, limitations, and considerations, and gain hands-on experience through practical examples. Uncover the mathematical framework behind Kalman filters and harness their potential to enhance accuracy in estimating dynamic system states amidst noise and uncertainties.

Mastering Control: A Comprehensive Guide to Proportional, PD, and PID Algorithm Implementations in C

Discover the world of control systems engineering as we delve into the intricacies of Proportional, Proportional-Derivative (PD), and Proportional-Integral-Derivative (PID) control algorithms. This comprehensive guide offers both theoretical insights and hands-on implementations in the C programming language. From the foundational Proportional control to the advanced PID control, join us on a journey through code examples and in-depth discussions on how these algorithms work, their strengths, and when to choose each for precise and stable control of various processes.