# V0.1.4

:::{note}
本文作者：龙进 <longjin@RinGoTek.cn>

2023年2月4日
:::

## 贡献者名单

DragonOS V0.1.4版本由以下小伙伴贡献代码：

- 龙进 <longjin@RinGoTek.cn>
- Gou Ngai <sujintao@DragonOS.org>
- 孔维超 <kongweichao@DragonOS.org>
- 侯嘉滢 <houjiaying@DragonOS.org>

## 赞助者名单

感谢以下同学的赞赏，我们将不断努力！

- David Wen (人民币2000元)
- [Seele.Clover](https://github.com/seeleclover) (人民币500元)
- 叶锦毅 (人民币100元)
- 林 (人民币50元)
- Albert (人民币9.99元)
- TerryLeeSCUT (人民币6.66元)
- slientbard (人民币6.66元)
- 悟 (人民币2.00元)
- 【其他匿名的热心人士】（人民币1.00元）

## 更新内容-内核

- Spinlock: new: 新增具有守卫的自旋锁SpinLock，支持编译期对锁的使用进行检查。 (#148)
- Spinlock: feature: Raw spin lock 增加lock_irqsave、unlock_irqrestore(#151)
- Mutex: new: Rust版本的Mutex (#157)
- doc: new: Rust代码风格文档 (#161)
- WaitQueue: new: Rust版本的WaitQueue (#162)
- WaitQueue: update: C版本的wait_queue的唤醒，改为立即唤醒 (#158)
- block io: new: Block IO 调度器. 当具有多核时，io调度器在核心1上运行。 (#158)
- smp: bugfix: 为AP核启动apic_timer,使其能够运行调度 (#158)
- smp: new: 增加kick_cpu功能，支持让某个特定核心立即运行调度器 (#158)
- smp: new: 增加进程在核心间迁移的功能 (#158)
- scheduler: new: 增加实时进程调度器（支持FIFO、RR策略） (#139)
- scheduler: update: CFS调度器为每个核心设置单独的IDLE进程pcb（pid均为0） (#158)
- scheduler: bugfix: process_wakeup时，对cfs的进程，重设虚拟运行时间。解决由于休眠的进程，其虚拟运行时间过小，导致其他进程饥饿的问题 (#158)
- process: new: pcb中增加migrate_to字段 (#158)


## 更新内容-用户环境

无

## 更新内容-其他

无

## 更新内容-软件移植

无

## 源码、发布版镜像下载

&emsp;&emsp;您可以通过以下方式获得源代码:

### 通过Git获取

- 您可以访问[https://github.com/fslongjin/DragonOS/releases](https://github.com/fslongjin/DragonOS/releases)下载发布版的代码，以及编译好的，可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载：[https://gitee.com/DragonOS/DragonOS](https://gitee.com/DragonOS/DragonOS)

### 通过DragonOS软件镜像站获取

&emsp;&emsp;为解决国内访问GitHub慢、不稳定的问题，同时为了方便开发者们下载DragonOS的每个版本的代码，我们特意搭建了镜像站，您可以通过以下地址访问镜像站：

&emsp;&emsp;您可以通过镜像站获取到DragonOS的代码压缩包，以及编译好的可运行的磁盘镜像。

- [https://mirrors.DragonOS.org](https://mirrors.DragonOS.org)
- [https://mirrors.DragonOS.org.cn](https://mirrors.DragonOS.org.cn)
- 国内镜像加速： [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/)

## 开放源代码声明


:::{note}
为促进DragonOS项目的健康发展，DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品（包括但不限于二进制副本、文档）的人，都能享有我们通过GPLv2协议授予您的权利，同时您也需要遵守协议中规定的义务。

这是一个相当严格的，保护开源软件健康发展，不被侵占的协议。

对于大部分的善意的人们而言，您不会违反我们的开源协议。

我们鼓励DragonOS的自由传播、推广，但是请确保所有行为没有侵犯他人的合法权益，也没有违反GPLv2协议。

请特别注意，对于违反开源协议的，尤其是**商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责**。（这是最容易违反我们的开源协议的场景）。

并且，请注意，按照GPLv2协议的要求，基于DragonOS修改或二次开发的软件，必须同样采用GPLv2协议开源，并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。

您必须使得DragonOS的开发者们，能够以同样的方式，从公开渠道获取到您二次开发的版本的源代码，否则您将违反GPLv2协议。

关于协议详细内容，还敬请您请阅读项目根目录下的**LICENSE**文件。请注意，按照GPLv2协议的要求，**只有英文原版才具有法律效力**。任何翻译版本都仅供参考。
:::

### 开源软件使用情况

&emsp;&emsp;DragonOS在开发的过程中，参考了一些开源项目的设计，或者引入了他们的部分代码，亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢！

格式：<项目名> - <链接> - <开源协议>

- Linux - 	https://git.kernel.org/ - GPLv2
- skiftOS - https://github.com/skiftOS/skift - MIT
- FYSOS - https://github.com/fysnet/FYSOS - [FYSOS' License](https://github.com/fysnet/FYSOS/blob/9a8968e3d6600de34539c028c843f4c06d134039/license.txt)
- LemonOS - https://github.com/LemonOSProject/LemonOS.git - BSD 2-Clause License
- LZ4 - https://github.com/lz4/lz4 - BSD 2-Clause license
- SerenityOS - https://github.com/SerenityOS/serenity.git - BSD 2-Clause license
- MINE - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社
- chcore - 《现代操作系统：设计与实现》陈海波，夏虞斌; 机械工业出版社
- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT
- rcore-fs - https://github.com/rcore-os/rcore-fs.git - MIT

## 当前版本的所有提交记录

```text
commit f6ba114bb0420e848ef7fc844c96c0d7a0552d93
Author: houmkh <100781004+houmkh@users.noreply.github.com>
Date:   Sat Feb 4 12:31:15 2023 +0800

    Block IO Scheduler (#158)
    
    * Block io调度器
    * process_wakeup时，对cfs的进程，重设虚拟运行时间。解决由于休眠的进程，其虚拟运行时间过小，导致其他进程饥饿的问题
    
    * 1、为AP核启动apic_timer,使其能够运行调度
    2、增加kick_cpu功能，支持让某个特定核心立即运行调度器
    3、wait_queue的唤醒，改为立即唤醒。
    4、增加进程在核心间迁移的功能
    5、CFS调度器为每个核心设置单独的IDLE进程pcb（pid均为0）
    6、pcb中增加migrate_to字段
    7、当具有多核时，io调度器在核心1上运行。
    
    * io调度器文件位置修改
    
    * 修改io的makefile
    
    * 更新makefile中的变量名
    
    * 修改io调度器函数名
    
    ---------
    
    Co-authored-by: login <longjin@ringotek.cn>

commit 151251b50b7ed55596edd32ffec49a4041010e2a
Author: login <longjin@ringotek.cn>
Date:   Tue Jan 31 19:27:02 2023 +0800

    Patch add rust waitqueue (#162)
    
    * new: rust版本的waitqueue
    
    * new:等待队列的文档

commit 3c369b1430e8d571bcc74a8ef7fefc1c4cae5dd2
Author: login <longjin@ringotek.cn>
Date:   Mon Jan 30 15:43:42 2023 +0800

    new:新增rust代码风格 (#161)

commit c28bd540ac856cd9d8d5597852af8f2588a660e4
Author: login <longjin@ringotek.cn>
Date:   Mon Jan 30 15:10:24 2023 +0800

    更新赞助者名单 (#160)
    
    * 更新赞赏者列表

commit 935f40ec174fec217aed4553d45996327443bc0e
Author: login <longjin@ringotek.cn>
Date:   Tue Jan 17 21:30:16 2023 +0800

    new: Rust版本的Mutex (#157)

commit d8a064128a8a06b90ff4c7b87c193518d9572641
Author: Gou Ngai <94795048+AlbertSanoe@users.noreply.github.com>
Date:   Mon Jan 16 19:58:50 2023 +0800

    Raw spin lock 增加lock_irqsave、unlock_irqrestore(#151)
    
    Raw spin lock 增加lock_irqsave、unlock_irqrestore

commit 06b09f34ed64a006a80ae8df383e3c8b176f02e0
Author: kong <45937622+kkkkkong@users.noreply.github.com>
Date:   Sat Jan 14 22:38:05 2023 +0800

    Patch sched rust (#139)
    
    * update
    
    * 添加rt调度器的rust初步实现
    
    * 完善rt调度逻辑
    
    * 调试rt调度器
    
    * 修改sched的返回值
    
    * cargo fmt 格式化
    
    * 删除无用代码，修补rt bug
    
    * 删除无用的代码，和重复的逻辑
    
    * 软中断bugfix
    
    * 删除一些代码
    
    * 添加kthread_run_rt文档
    
    * 解决sphinix警告_static目录不存在的问题
    
    Co-authored-by: longjin <longjin@RinGoTek.cn>

commit ec53d23ed03347854189d92b7e175f309779321b
Author: login <longjin@ringotek.cn>
Date:   Sat Jan 14 10:35:49 2023 +0800

    new: 新增具有守卫的自旋锁SpinLock，支持编译期对锁的使用进行检查。 (#148)

commit 41474ba3df99b6822ce452dc94dc53a4da62cba1
Author: login <longjin@ringotek.cn>
Date:   Tue Jan 10 22:07:41 2023 +0800

    更新Readme中关于DragonOS的介绍部分 (#146)

commit 8ad2e358fd3b05eed2919de50640682e51687fb5
Author: login <longjin@ringotek.cn>
Date:   Sun Jan 8 15:51:59 2023 +0800

    更新about app中的版本号 (#145)
    
    * 更新about app中的版本号

commit a8b621c8d1fe77251b8e4eafe258dc0ee7366dd5
Author: login <longjin@ringotek.cn>
Date:   Sun Jan 8 15:47:44 2023 +0800

    修正由于libc中具有crti.S和crtn.S，造成的与x86_64-elf-gcc不兼容的问题 (#144)

commit 9358ff0f6f7daa18d6fab4497de025736b3d6725
Author: login <longjin@ringotek.cn>
Date:   Sun Jan 8 15:06:52 2023 +0800

    Add v0.1.3 changelog (#143)
    
    * new: 0.1.3发行日志
    
    * 新增输出指定时间范围内的贡献者名单的脚本
    
    * 更新bootloader文档
    
    * update: 简介文档
    
    * new: 镜像站文档
    
    * update: 功能特性文档


```