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

Introduction to Code Pages: Legacy Character Encoding Systems

Introduction to Code Pages: Legacy Character Encoding Systems

Code pages were once the backbone of character encoding in computers, providing a way to map binary values to text in different languages. However, they had significant limitations, particularly when dealing with multiple languages at once. This article explores the history of code pages, how they were used, and why they have been largely replaced by the modern Unicode standard, which offers a universal character set for all languages.

Trusting Software Security: A Comprehensive Approach

In software development, trust is not just a matter of functionality but a critical aspect of security. This article delves into the intricacies of software security, particularly in the context of Large Language Models (LLMs), emphasizing the need to trust not only the final product but also the data, models, training methods, and the checks and balances implemented within these systems.

Securing Credentials in Python Apps

Securing Credentials in Python Apps

Python has become a very popular language for software development. Over the decades since it was first introduced, the language has slowly grown and matured while keeping its ease of use and shallow learning curve. This has made it the go-to language for much of the AI and ML communities and many web applications have