From 75f5fdf4024a782e1d2b6c1f4c60afd8bb12bbe9 Mon Sep 17 00:00:00 2001 From: ianchen0119 Date: Mon, 9 Aug 2021 13:49:59 +0800 Subject: [PATCH] update the document --- README.md | 2 ++ doc/tw/09-MemoryAllocator.md | 2 +- logo.png | Bin 0 -> 34556 bytes 3 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 logo.png diff --git a/README.md b/README.md index 25a80ea..d89c061 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ # mini-riscv-os + + Build a minimal multi-tasking OS kernel for RISC-V from scratch Mini-riscv-os was inspired by [jserv](https://github.com/jserv)'s [mini-arm-os](https://github.com/jserv/mini-arm-os) project. diff --git a/doc/tw/09-MemoryAllocator.md b/doc/tw/09-MemoryAllocator.md index 8483297..cc17fd1 100644 --- a/doc/tw/09-MemoryAllocator.md +++ b/doc/tw/09-MemoryAllocator.md @@ -79,7 +79,7 @@ MEMORY 本文中所提到的 Heap 與資料結構的 Heap 不同,這邊的 Heap 是指可供作業系統與 Process 分配的記憶體空間,我們都知道, Stack 會存放已經初始化的固定長度資料,比起 Stack , Heap 有了更多彈性,我們想要使用多少空間就分配多少空間,並且在使用後可以進行記憶體回收避免浪費。 -```c= +```cpp #include int *p = (int*) malloc(sizeof(int)); // ... diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f87316cb8d20c903a1718d8c881fb09e33016fd6 GIT binary patch literal 34556 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ⅇZ4JzCYf;%)TlyGW*ch~l? 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%0DmJ@zz zfl@T4dV6WeDZs{;pJ{g9Lri%>^ErW6Qw?A;i1vSMFCK$#=oAyN!aN1l7g2T@ZXq8>fQWW zS_IiCSIJ+&ZT4*r7twDI#~BXDwgLXX-u6~sq2v}OCf%7M?KF+Xxpv?_>BR}<)?D&C zo#?8bPI_aOX~pe59vgR{Kn{!>fqlU=lSPwr7b9^bX9zQp4v2E%GB)Rvj$L$p8M`?S zv+r9juoXFhimEOlh0rged^Xj3s&gB!0lGxsUIXySAp|xFbi~5qW@wSJS