Update Utility containers
parent
e9b2c2b168
commit
b6be2e74e7
@ -2,7 +2,51 @@
|
||||
|
||||
(Add a section for each new utility container, as well as documentation)
|
||||
|
||||
Preliminary list of essential software:
|
||||
- QEMU: open-source machine emulator
|
||||
- gcc:
|
||||
- gdb:
|
||||
- make:
|
||||
- objdump:
|
||||
- ...
|
||||
|
||||
(ubuntu dockerfile...)
|
||||
|
||||
### Step 1: Make a bootloader that prints 'dmzOS'
|
||||
> **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.
|
||||
* The x86_64 architecture has two primary [modes of operation](https://en.wikipedia.org/wiki/X86-64#Operating_modes), each having different sub-modes. A 64-bit and 32-bit kernel require the processor to operate in different modes.
|
||||
|
||||
*Decision*: In order to prevent running into chaos, we will first stick to the steps outlined in [Operating Systems: From 0 to 1][os01], which will result in our developing a 32-bit kernel stub. At that point, we will have necessary information to decide whether it aligns better with our goals to keep the kernel 32-bit or to convert it into a 64-bit version.
|
||||
|
||||
***Intel or AT&T syntax for asm code?***
|
||||
* This is simply a matter of personal preference, as both are translated into the same machine code.
|
||||
|
||||
*Decision*: Intel syntax, as it is used both in [AMD][amd64v1] and [Intel][intel64] architecture manuals.
|
||||
(...)
|
||||
|
||||
### Step 2:
|
||||
(...)
|
||||
|
||||
## List of command cheatsheets
|
||||
### Docker
|
||||
### gcc, gdb, clang-format...
|
||||
(...)
|
||||
|
||||
## Useful links
|
||||
### Wiki
|
||||
* [OSDev Wiki](https://wiki.osdev.org/Expanded_Main_Page): a good way to get acquainted with multiple topics at a high level, though a bit outdated.
|
||||
### Books
|
||||
* [Operating Systems: From 0 to 1][os01]: pretty in-depth and with hands-on instructions on how to use many of the tools needed.
|
||||
* [OpenCSF](https://w3.cs.jmu.edu/kirkpams/OpenCSF/Books/csf/html/index.html): an all-encompassing CS guide with a focus on many important OS-related topics.
|
||||
### Blogs
|
||||
* [CPU Land](https://cpu.land/): an avid learner's perspective on the CS fundamentals.
|
||||
|
||||
[//]: # (Second part of reference-style links)
|
||||
[os01]: https://github.com/tuhdo/os01
|
||||
|
Loading…
Reference in New Issue
Block a user