From 778e43c0a2d1f1cc952c3ec0c0b9d5bd3ff4995a Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Wed, 28 Apr 2021 11:12:27 +0200 Subject: Update figure --- README.md | 17 +++ tools/ram.svg | 355 ++++++++++++++++++++++++++++++++++------------------------ 2 files changed, 227 insertions(+), 145 deletions(-) diff --git a/README.md b/README.md index a420cf9..caad335 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,21 @@ **What is Boucane** Boucane is a *64 bits* multi-tasking kernel for *x86* architecture written in pure *C* and *GNU Assembly*. It was developed for popularization purpose and propagating Operating System developement knowledge. +**What I will learn** +- Deep C/assembly +- Creating a Multiboot2 compliant kernel +- Managing memory segmentation +- Handle hardware interrupts (clock, keyboard etc..) +- Managing memory paging +- Userspace/Kernel Space +- Developping software interruptions (system calls) +- Making a scheduler +- And many tricks about the x86 architecture! + +**Requirements** +- A computer running a Linux distribution +- Time/Motivation + +**Memory Organization** +![Memory Organization](tools/ram.svg) diff --git a/tools/ram.svg b/tools/ram.svg index a66a4b5..1616b42 100644 --- a/tools/ram.svg +++ b/tools/ram.svg @@ -7,15 +7,86 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="210mm" - height="297mm" - viewBox="0 0 210 297" + width="249.3436mm" + height="158.54063mm" + viewBox="0 0 249.3436 158.54063" version="1.1" id="svg8" inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)" sodipodi:docname="ram.svg"> + id="defs2"> + + + + + + + + + + + + + + + + + inkscape:window-width="1920" + inkscape:window-height="1080" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> @@ -43,176 +118,166 @@ image/svg+xml - + + id="layer1" + transform="translate(-13.33324,-21.451468)"> + + 0x0 + id="tspan877" + x="27.445793" + y="28.870361" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.264583">RAM + 0x640 + id="tspan883" + x="30.266174" + y="128.31798" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46667px;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.264583">boot 0x800 + id="tspan887" + x="17.659321" + y="116.48973" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46667px;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.264583">trampoline + + 0x850 + id="tspan895" + x="26.91761" + y="106.10927" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46667px;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.264583">kernel - IDT - - GDT - + style="fill:#ffffff;fill-rule:evenodd;stroke:#333333;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" + id="rect899" + width="50.947662" + height="112.65762" + x="143.00732" + y="34.834328" /> Kernel + id="tspan903" + x="156.11989" + y="28.870361" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.264583">RAM + + 0x100000 - + id="tspan921" + x="155.59171" + y="59.443249" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46667px;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.264583">kernel 0x50000 + id="tspan925" + x="67.86396" + y="132.85098" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35px;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.264583">0x100000 Stack - + id="tspan929" + x="197.75453" + y="63.976246" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.35px;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.264583">0xFFFFFFFF80000000 + 0x200000 + x="75.17717" + y="178.42577" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46667px;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.264583" + id="tspan1497">trampoline call -- cgit v1.2.3