diff --git a/README.md b/README.md index 811b8f58..8529f503 100644 --- a/README.md +++ b/README.md @@ -4,95 +4,57 @@   -这是一个运行于x86_64平台的64位操作系统。目前正在开发之中! +  这是一个运行于x86_64平台的64位操作系统。目前正在开发之中! + +[关于DragonOS,你想了解的都在这儿 - DragonOS](https://dragonos.org/uncategorized/summary/) ## 网站 + - 项目官网 **[DragonOS.org](https://dragonos.org)** + - 项目文档 **[docs.DragonOS.org](https://docs.dragonos.org)** + - 开源论坛 **[bbs.DragonOS.org](https://bbs.dragonos.org)** + - 开发交流QQ群 **115763565** -- 代码搜索引擎 [code.DragonOS.org](http://code.dragonos.org)  -## 开发环境 -GCC>=8.0 - -qemu==6.2 - -grub==2.06 +- 代码搜索引擎 [code.DragonOS.org](http://code.dragonos.org) + +   ## 如何运行? -1. clone本项目 +  运行DragonOS的步骤非常简单,您可以参考以下几个资料,在最短15分钟内运行DragonOS! -2. 运行命令 bash run.sh +- [构建DragonOS — DragonOS dev 文档](https://docs.dragonos.org/zh_CN/latest/introduction/build_system.html#docker) -## To do list: +- [如何在电脑的虚拟机上运行DragonOS? | | 龙进的博客](https://longjin666.cn/?p=1514) -- [x] multiboot2 +- [教你在15分钟内运行DragonOS!- Bilibili](https://www.bilibili.com/video/BV1zF411w7s2?share_source=copy_web&vd_source=41ab4a1b73e6f65219a785923511517e) -- [x] printk +## 系统特性 -- [x] 简单的异常捕获及中断处理 +  请参见文档:[系统特性](https://docs.dragonos.org/zh_CN/latest/introduction/features.html) -- [x] APIC +## 如何加入? -- [x] 初级内存管理单元 +  如果你愿意加入我们,你可以查看GitHub仓库的Project面板,选择近期已规划的功能,对他们进行完善。 -- [x] SLAB内存池 +  或者,你也可以带着你的创意与想法,和社区的小伙伴一起讨论,为DragonOS创造一些新的功能。 -- [x] PS/2 键盘、鼠标驱动 +## 如何与社区建立联系? -- [x] PCI 总线驱动 +  你可以发邮件给我,我的邮件地址是[longjin@RinGoTek.cn](mailto:longjin@RinGoTek.cn)。 -- [ ] usb驱动 +  或者是加入我们的开发交流QQ群:**115763565** -- [x] SATA硬盘驱动(AHCI) +  对于正式问题的讨论,我们建议在论坛[bbs.DragonOS.org](https://bbs.dragonos.org/)上的对应板块,使用正式的语言发帖讨论。亦或者是在本仓库的issue下提出问题。 -- [ ] 驱动程序框架 - -- [ ] 网卡驱动 - -- [ ] 网络协议栈 - -- [ ] 图形驱动 - -- [x] 第一个进程 - -- [x] 进程管理 - -- [ ] IPC进程间通信 - -- [x] 第一个系统调用函数 - -- [x] 在物理平台上启动DragonOS(AMD处理器上存在自动重启的问题) - -- [x] 多核启动 - -- [ ] 多核调度及负载均衡 - -- [x] FAT32文件系统 - -- [x] VFS虚拟文件系统 - -- [x] 解析ELF文件格式 - -- [x] 浮点数支持 - -- [x] 基于POSIX实现系统调用库 - -- [x] Shell - -- [x] 内核栈反向跟踪 - -- [ ] 动态加载模块 - -## 贡献代码 - -如果你愿意跟我一起开发这个项目,请先发邮件到我的邮箱~ +  在发帖的同时,可以把帖子转发到交流QQ群,这样能使得问题的交流更加高效,也便于问题的归档。 ## 贡献者名单 -fslongjin +[Contributors to fslongjin/DragonOS · GitHub](https://github.com/fslongjin/DragonOS/graphs/contributors) ## 联系我 @@ -102,11 +64,19 @@ fslongjin ## 赞赏 -如果你愿意的话,点击下面的链接,请我喝杯咖啡吧~请在付款备注处留下您的github ID,我会将其贴到这个页面. 捐赠所得资金将用于网站、论坛社区维护以及一切与本项目所相关的用途。 +  DragonOS是一个公益性质的开源项目,但是其日常维护仍需要一些资金,如果你愿意的话,可以通过[赞助 - DragonOS](https://dragonos.org/donate/),从而促进这个项目的发展。所有的赞助者的名单都会被公示。 -[捐赠 | 龙进的博客](https://longjin666.cn/?page_id=54) +### 赞助的资金都会被用到哪里? -## 赞赏者列表 +- 官网及社区论坛的服务器开支 + +- 代码搜索引擎服务器的开支(这不是一个小数目) + +- 域名、CDN等服务的开支 + +- 任何有助于DragonOS发展建设的用途 + +### 赞赏者列表 - 悟 - [TerryLeeSCUT · GitHub](https://github.com/TerryLeeSCUT) @@ -123,7 +93,7 @@ fslongjin ## 参考资料 -本项目参考了以下资料,我对这些项目、书籍、文档的作者表示感谢! +  本项目参考了以下资料,我对这些项目、书籍、文档的作者表示感谢! - 《一个64位操作系统的实现》田宇(人民邮电出版社) diff --git a/README_EN.md b/README_EN.md index e2033aa4..d149ecaf 100644 --- a/README_EN.md +++ b/README_EN.md @@ -4,96 +4,51 @@   -This project is a operating system running on computer which is in X86_ 64 Architecture . The DragonOS is currently under development! +  This project is a operating system running on computer which is in X86_ 64 Architecture . The DragonOS is currently under development! + +[All you want to know about DragonOS is here - DragonOS](https://dragonos.org/uncategorized/summary/) ## Websites + - Home Page **[DragonOS.org](https://dragonos.org)** - Documentation **[docs.DragonOS.org](https://docs.dragonos.org)** - BBS **[bbs.DragonOS.org](https://bbs.dragonos.org)** - QQ group **115763565** - code search engine [code.DragonOS.org](http://code.dragonos.org)  -## Development Environment - -GCC>=8.0 - -qemu==6.2 - -grub==2.06 - ## How to run? -1. clone the project +  The steps to run DragonOS are very simple. You can refer to the following materials to run DragonOS in the shortest 15 minutes! -2. Run the run.sh +- [Building DragonOS - DragonOS dev document](https://docs.dragonos.org/zh_CN/latest/introduction/build_system.html#docker) -## To do list: +- [How to run DragonOS on a computer's virtual machine? || Long Jin's blog](https://longjin666.cn/?p=1514) -- [x] multiboot2 +- [Teach you to run DragonOS in 15 minutes- Bilibili](https://www.bilibili.com/video/BV1zF411w7s2?share_source=copy_web&vd_source=41ab4a1b73e6f65219a785923511517e) -- [x] printk +## DragonOS' Features -- [x] Simple exception capture and interrupt handling +  See documentation:[Features](https://docs.dragonos.org/zh_CN/latest/introduction/features.html) -- [x] APIC +## How to join DragonOS ? -- [x] Primary memory management unit +  If you are willing to join us, you can check the project panel of GitHub warehouse, select the recently planned functions, and improve them. -- [x] SLAB memory pool +  Or, you can also bring your ideas and ideas, discuss with the community partners, and create some new functions for dragonos. -- [x] PS/2 Keyboard and mouse driver +## How to come in contact with the community? -- [x] PCI bus driver +  You can send me an email. My email address is[ longjin@RinGoTek.cn ](mailto: longjin@RinGoTek.cn )。 -- [ ] USB Driver +  Or join our development exchange QQ group: **115763565** -- [x] SATA Hard disk driver(AHCI) +  For the discussion of formal issues, we suggest that they be discussed in the forum [BBS.Dragonos.org](https://bbs.dragonos.org/) In the corresponding section of the, use formal language to post for discussion. Or ask questions under the issue of the warehouse. -- [ ] Driver Framework - -- [ ] Network card driver - -- [ ] Internet protocol stack - -- [ ] Graphics driver - -- [x] First process - -- [x] Process management - -- [ ] IPC - -- [x] First system call function - -- [x] Start dragonos on the physical platform (There is a bug which can make the computer automatically reboot on AMD processor) - -- [x] Multi core boot - -- [ ] Multi core scheduling and load balancing - -- [x] FAT32 file system - -- [x] virtual file system - -- [x] Parsing ELF file format - -- [x] Floating point support - -- [x] Implementation of system call library based on POSIX - -- [x] Shell - -- [x] Kernel stack backtracking - -- [ ] Dynamic loading module - -## Contribute code - -If you are willing to develop this project with me, please email me first~ +  While posting, you can forward the post to the communication QQ group, which can make the communication of problems more efficient and facilitate the archiving of problems. ## List of contributors -fslongjin +[Contributors to fslongjin/DragonOS · GitHub](https://github.com/fslongjin/DragonOS/graphs/contributors) ## Contact with me @@ -103,9 +58,17 @@ Blog:[longjin666.cn](https://longjin666.cn) ## Reward -If you like, click the link below and buy me a cup of coffee ~ please leave your GitHub ID in the payment remarks and I will post it to this page. The donated funds will be used for website, forum community maintenance and all purposes related to the project. +  Dragonos is a public welfare open source project, but its daily maintenance still needs some funds. If you want, you can visit [Sponsor - DragonOS](https://dragonos.org/donate/), so as to promote the development of this project. The list of all sponsors will be published. -[The reward webpage](https://longjin666.cn/?page_id=54) +### Where will the sponsorship funds be used? + +- Server expenses of official website and community forum + +- Code search engine server expenses (this is not a small amount) + +- Expenses for domain name, CDN and other services + +- Any use that is conducive to the development and construction of DragonOS ## Sponsors @@ -114,14 +77,17 @@ If you like, click the link below and buy me a cup of coffee ~ please leave your ## 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! +  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! +  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) diff --git a/docs/conf.py b/docs/conf.py index 0fd4e8da..b298f514 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -58,4 +58,8 @@ html_theme = 'sphinx_rtd_theme' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] \ No newline at end of file +html_static_path = ['_static'] + +myst_enable_extensions = [ + "tasklist", +] \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index 0edb1ed3..216ed6fd 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -10,7 +10,7 @@ :maxdepth: 1 :caption: 入门 - introduction/intro + introduction/index introduction/build_system .. toctree:: diff --git a/docs/introduction/features.md b/docs/introduction/features.md new file mode 100644 index 00000000..d1b84576 --- /dev/null +++ b/docs/introduction/features.md @@ -0,0 +1,117 @@ +(_genreal_features)= + +# DragonOS的功能 + +## 规范 + +- [x] 启动引导:Multiboot2 + +- [x] 接口:posix 2008 + +## 内核层 + +### 内存管理 + +- [x] 页分配器 +- [x] slab分配器 +- [x] VMA +- [x] MMIO地址空间自动分配 + +### 多核 + +- [x] 多核引导 +- [x] ipi框架 + +### 进程管理 + +- [x] 进程创建 +- [x] 进程回收 +- [x] 内核线程 +- [x] fork +- [x] exec +- [x] 进程睡眠(支持高精度睡眠) + +#### 同步原语 + +- [x] mutex互斥量 +- [x] semaphore信号量 +- [x] atomic原子变量 +- [x] spinlock自旋锁 +- [x] wait_queue等待队列 + +### 调度 + +- [x] CFS调度器 +- [x] 单核调度 + +### IPC + +- [x] 匿名pipe管道 + +### 文件系统 + +- [x] VFS +- [x] fat32 +- [x] devfs + +### 异常及中断处理 + +- [x] APIC +- [x] softirq 软中断 +- [x] 内核栈traceback + +### 内核数据结构 + +- [x] 普通二叉树 +- [x] kfifo缓冲区 +- [x] 循环链表 + +### 内核实用库 + +- [x] LZ4压缩库(1.9.3) +- [x] 字符串操作库 +- [x] ELF可执行文件支持 +- [x] printk +- [x] 基础数学库 +- [x] 屏幕管理器 +- [x] textui框架 + +### 系统调用 + +  [请见系统调用文档](https://docs.dragonos.org/zh_CN/latest/syscall_api/index.html) + +### 测试框架 + +- [x] ktest + +### 驱动程序 + +- [x] ACPI 高级电源配置模块 +- [x] IDE硬盘 +- [x] AHCI硬盘 +- [x] PCI +- [x] XHCI(usb3.0) +- [x] ps/2 键盘 +- [x] ps/2 鼠标 +- [x] HPET高精度定时器 +- [x] RTC时钟 +- [x] local apic定时器 +- [x] UART串口 +- [x] VBE显示 + +## 用户层 + +### LibC + +- [x] 基础系统调用 +- [x] 基础标准库函数 +- [x] 部分数学函数 + +### shell命令行程序 + +- [x] 基于字符串匹配的解析 +- [x] 基本的几个命令 + +### 驱动程序 + +- [x] ps/2键盘用户态驱动 diff --git a/docs/introduction/index.rst b/docs/introduction/index.rst new file mode 100644 index 00000000..3ebc0ddd --- /dev/null +++ b/docs/introduction/index.rst @@ -0,0 +1,13 @@ +DragonOS简介 +==================================== + + DragonOS龙操作系统(以下简称“DragonOS”)是一个基于x86-64体系结构开发的,基于GPLv2协议开放源代码的64位操作系统 + + + + 你可能对DragonOS中已经实现了哪些功能感兴趣,您可以转到这里::ref:`功能特性 <_genreal_features>` + +.. toctree:: + :maxdepth: 1 + + features diff --git a/docs/introduction/intro.md b/docs/introduction/intro.md deleted file mode 100644 index 59834167..00000000 --- a/docs/introduction/intro.md +++ /dev/null @@ -1,3 +0,0 @@ -# DragonOS简介 - -DragonOS龙操作系统(以下简称“DragonOS”)是一个基于x86-64体系结构开发的,基于GPLv2协议开放源代码的64位操作系统。