Chapter 40 — Shell Job References with %1

Chapter 40 — Shell Job References with %1
This entry is part 37 of 38 in the series Writing A Linux Style Operating System From Scratch

Before reading the shell examples in this chapter, be explicit about the prompt transition: toyix> is the kernel monitor. ush> is the user shell. So when this chapter shows commands like: those commands must be typed inside the user shell after toyix> run shell. Chapter 39 made /programs/<name> usable as a launch target. That fixed

Chapter 39 — Path-Based Program Launching with /programs

Chapter 39 — Path-Based Program Launching with /programs
This entry is part 36 of 38 in the series Writing A Linux Style Operating System From Scratch

Before reading the shell examples in this chapter, be explicit about the prompt transition: toyix> is the kernel monitor. ush> is the user shell. So when this chapter shows commands like: those commands must be typed inside the user shell after toyix> run shell. Two other constraints still apply in this chapter: So cat README

Chapter 38 — Turning /programs into a Real Directory

Chapter 38 — Turning /programs into a Real Directory
This entry is part 35 of 38 in the series Writing A Linux Style Operating System From Scratch

Before reading the shell examples in this chapter, be explicit about the prompt transition: toyix> is the kernel monitor. ush> is the user shell. So when this chapter shows commands like: those commands must be typed inside the user shell after toyix> run shell. In Chapter 37, Toyix gained its first real directory support at

Chapter 37 — Directories, SYS_READDIR, and ls

Chapter 37 — Directories, SYS_READDIR, and ls
This entry is part 34 of 38 in the series Writing A Linux Style Operating System From Scratch

In Chapter 36, Toyix gained file metadata: The shell could now do: Now we are ready for the next filesystem milestone: This chapter adds: After this chapter: For compatibility with the previous chapters, /programs will remain a regular text file for now: The root directory / becomes the first actual directory. 1. What this chapter

Chapter 21 — Process Teardown and Address-Space Cleanup

Chapter 21 — Process Teardown and Address-Space Cleanup
This entry is part 20 of 38 in the series Writing A Linux Style Operating System From Scratch

In Chapter 20, we added the TOYEXE loader: But there is still a lifecycle problem. The process can exit, but we are not yet reclaiming everything it owns. Right now this leaks: This chapter closes that loop. After this chapter, the process lifecycle becomes: The milestone output will look like: 1. What this chapter adds

Chapter 9 — Cooperative Multitasking and Kernel Threads

This entry is part 9 of 38 in the series Writing A Linux Style Operating System From Scratch

We now have enough foundation to start multitasking: This chapter adds the first scheduler. Not a preemptive scheduler yet. A cooperative scheduler. That means each kernel thread keeps running until it voluntarily calls: “` cthread_yield(); textkernel thread objectper-thread kernel stackready queuex86 context switch assemblythread_create()thread_yield()thread_exit()round-robin cooperative schedulingtwo-thread test textcreate two kernel threadsswitch between them cooperativelyprove both

Chapter 7 — A Real Virtual Memory Mapping Layer

Chapter 7 — A Real Virtual Memory Mapping Layer
This entry is part 7 of 38 in the series Writing A Linux Style Operating System From Scratch

In Chapter 5 we enabled paging, but only with a fixed identity map: In Chapter 6 we built a heap, but it still had an important weakness: because only the first 16 MiB were identity-mapped. Now we fix the architectural problem. This chapter adds a small virtual memory manager, or VMM: This lets the kernel

Chapter 6 — Building the First Kernel Heap

Chapter 6 — Building the First Kernel Heap
This entry is part 6 of 38 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

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.

Why GAMBAS BASIC Deserves a Place in Your Development Toolbox

One of GAMBAS’s biggest advantages is its fully integrated development environment (IDE), which resembles VB6 and offers an easy-to-use graphical interface. This makes creating forms, handling events, and connecting to databases significantly faster than using more complex frameworks.