Update Home

sborovic 2024-02-11 17:12:29 +00:00
parent 489ff33141
commit ce5747c074

11
Home.md

@ -6,12 +6,10 @@ A great way to learn something new is to retrace the steps taken by someone who
> **Suggested reading**:
> [Operating Systems: From 0 to 1, Chapters 16][os01]
To safeguard against dependency hell, all the essential software needed to develop and run our OS will be provided through a set of Docker images orchestrated using Docker Compose. For those unfamiliar with Docker, a command cheatsheet will be provided later on.
To safeguard against dependency hell, all the essential software needed to develop and run our OS will be provided through a set of Docker images. For those unfamiliar with Docker, a command cheatsheet will be provided later on.
Dilemmas:
* gcc or clang?
* 32-bit or 64-bit?
* bootloader from scratch or use Limine?
To-dos:
* Choose a git workflow.
@ -30,6 +28,13 @@ Preliminary list of essential software:
> **Suggested reading**:
> [Operating Systems: From 0 to 1, Chapter 7: *Bootloader*][os01]
A few dilemmas had already emerged before even having started writing any code.
**Should the kernel be 32-bit or 64-bit?**
* A 32-bit kernel can provide access to 2<sup>32</sup> memory addresses. For a byte-addressable memory, that equals 2<sup>32</sup> B = 4*2<sup>30</sup> B = 4 GiB of physical memory. On the other hand, a 64-bit kernel can provide access to 2<sup>64</sup> B = 16 EiB of physical memory.
* Having more RAM available makes heavy multitasking and memory-intensive operations perform better. On the other hand, 64-bit programs use about 50% more memory then their 32-bit counterpart; this is due to numerous reasons, one of which is that 64-bit pointers take up twice as much space as 32-bit ones.
* Booting a 64bit kernel vs 32-bit kernel is different. For example, 64-bit kernels require running the processor in [long mode](https://en.wikipedia.org/wiki/Long_mode).
### Step 2:
...