mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-10 12:16:48 +00:00
  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。   内存管理模块主要由以下类型的组件组成: - **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行 - **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中) - **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新) - **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator - **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成) - **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构) - **用户地址空间管理机制** - 提供对用户地址空间的管理。 - VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作 - 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射 - **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等 - **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。 除上面的新增内容以外,其它的更改内容: - 新增二进制加载器,以及elf的解析器 - 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。 - 解决local_irq_save未关中断的错误。 - 修复sys_gettimeofday对timezone参数的处理的bug --------- Co-authored-by: kong <kongweichao@dragonos.org>
129 lines
5.3 KiB
Markdown
129 lines
5.3 KiB
Markdown
# DragonOS
|
||
|
||
**Languages** [中文](README.md)|English
|
||
|
||
|
||
|
||
  DragonOS is an operating system running on the X86_64 Architecture. This project is currently under development!
|
||
|
||
[All you want to know about DragonOS is here - DragonOS](https://dragonos.org/?p=46)
|
||
|
||
## Websites
|
||
|
||
- Home Page **[DragonOS.org](https://dragonos.org)**
|
||
- Documentation **[docs.DragonOS.org](https://docs.dragonos.org)**
|
||
- **To learn about development dynamics and development tasks, please visit DragonOS's zulip community:** [https://DragonOS.zulipchat.com](https://DragonOS.zulipchat.com)
|
||
- BBS **[bbs.DragonOS.org](https://bbs.dragonos.org)**
|
||
- Software mirror website **[mirrors.DragonOS.org](https://mirrors.DragonOS.org)**
|
||
- QQ group **115763565**
|
||
- Code search engine [code.DragonOS.org](http://code.dragonos.org)
|
||
|
||
## How to run?
|
||
|
||
  The steps to run DragonOS are very simple. You can refer to the following information to run DragonOS within 15 minutes at the fastest!
|
||
|
||
- [Building DragonOS - DragonOS dev document](https://docs.dragonos.org/zh_CN/latest/introduction/build_system.html)
|
||
|
||
- [Teach you to run DragonOS in 15 minutes- Bilibili](https://www.bilibili.com/video/BV1zF411w7s2?share_source=copy_web&vd_source=41ab4a1b73e6f65219a785923511517e)
|
||
|
||
## DragonOS' Features
|
||
|
||
  See documentation:[Features](https://docs.dragonos.org/zh_CN/latest/introduction/features.html)
|
||
|
||
## How to join DragonOS ?
|
||
|
||
  If you are willing to join us, you can visit DragonOS's zulip community, learn about development dynamics and development tasks: [https://DragonOS.zulipchat.com](https://DragonOS.zulipchat.com)
|
||
|
||
  Or, you can also bring your ideas, discuss with community members, and create some new functions for DragonOS.
|
||
|
||
## How to contact the community?
|
||
|
||
  You can send an email to the project's maintainer: longjin. His email address is [longjin@DragonOS.org](mailto: longjin@DragonOS.org) .
|
||
|
||
  Or join our development exchange QQ group: **115763565**
|
||
|
||
  For the discussion of formal issues, we recommend that you use the official language to post on the corresponding section of **[DragonOS's zulip community](https://DragonOS.zulipchat.com)**. Or you can post questions under the issue of this repository.
|
||
|
||
|
||
## List of contributors
|
||
|
||
[Contributors to DragonOS-Community/DragonOS · GitHub](https://github.com/DragonOS-Community/DragonOS/graphs/contributors)
|
||
|
||
## Get contact with us
|
||
|
||
Community Contact Email: contact@DragonOS.org
|
||
|
||
Maintainer longjin's Email:longjin@DragonOS.org
|
||
|
||
|
||
## Reward
|
||
|
||
  DragonOS is an open source public welfare project, but its development cannot be separated from the support of funds. If you want, you can visit **[Sponsor - DragonOS](https://dragonos.org/?page_id=37)** , so as to promote the development of this project. The list of all sponsors will be published. Every bit of your sponsorship will contribute to the development of DragonOS!
|
||
|
||
### Where will the sponsorship funds be used?
|
||
|
||
We guarantee that all sponsorship funds and items will be used for:
|
||
|
||
- Subsidies or equipment support for active community developers
|
||
- Cloud service expenditure of DragonOS
|
||
- Equipment purchase
|
||
- Any use conducive to the development and construction of DragonOS
|
||
|
||
### Sponsor List
|
||
|
||
**Not yet**
|
||
|
||
We hope that in the future, some enterprises can sponsor DragonOS and inject financial power into its development!
|
||
|
||
### Individual Sponsor List
|
||
|
||
- 万晓兰
|
||
- David Wen
|
||
- [Seele.Clover](https://github.com/seeleclover)
|
||
- [FindWangHao](https://github.com/FindWangHao)
|
||
- [ferchiel](https://github.com/ferchiel)
|
||
- 叶锦毅
|
||
- 林
|
||
- Albert
|
||
- [TerryLeeSCUT · GitHub](https://github.com/TerryLeeSCUT)
|
||
- slientbard
|
||
- 悟
|
||
|
||
## Open source statement
|
||
|
||
  This project adopts GPLv2 LICENSE for open source. You are welcome to use the code of this project on the basis of abiding by the open source license!
|
||
|
||
**What we support:** using this project to create greater value and contribute code to this project under the condition of abiding by the agreement.
|
||
|
||
**What we condemn**: any non-compliance with the open source license. Including but not limited to: plagiarizing the code of the project as your graduation project and other academic misconduct, as well as commercial closed source use without payment.
|
||
|
||
If you find any violation of the open source license, we welcome you to send email feedback! Let's build an honest open source community together!
|
||
|
||
## References
|
||
|
||
  This project refers to the following materials. I sincerely give my thanks to the authors of these projects, books and documents!
|
||
|
||
- Implementation of a 64 bit operating system, Tian Yu (POSTS&TELECOM PRESS)
|
||
|
||
- Principle and implementation of modern operating system, Chen Haibo, Xia Yubin (China Machine Press)
|
||
|
||
- [SimpleKernel](https://github.com/Simple-XX/SimpleKernel)
|
||
|
||
- [osdev.org](https://wiki.osdev.org/Main_Page)
|
||
|
||
- ACPI_6_3_final_Jan30
|
||
|
||
- the GNU GRUB manual
|
||
|
||
- Intel® 64 and IA-32 Architectures Software Developer’s Manual
|
||
|
||
- IA-PC HPET (High Precision Event Timers) Specification
|
||
|
||
- [skiftOS]([GitHub - skiftOS/skift: 🥑 A hobby operating system built from scratch in modern C++. Featuring a reactive UI library and a strong emphasis on user experience.](https://github.com/skiftOS/skift))
|
||
|
||
- [GuideOS](https://github.com/Codetector1374/GuideOS)
|
||
|
||
- [redox-os](https://gitlab.redox-os.org/redox-os/redox)
|
||
|
||
- [rcore](https://github.com/rcore-os/rCore)
|