:::{note}
**AI Translation Notice**

This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.

- Source document: community/ChangeLog/V0.1.x/V0.1.4.md

- Translation time: 2025-05-19 01:42:41

- Translation model: `Qwen/Qwen3-8B`

Please report issues via [Community Channel](https://github.com/DragonOS-Community/DragonOS/issues)

:::

# V0.1.4

:::{note}
Author: Longjin <longjin@RinGoTek.cn>

February 4, 2023
:::

## Contributors List

The DragonOS V0.1.4 version was contributed by the following developers:

- Longjin <longjin@RinGoTek.cn>
- Gou Ngai <sujintao@DragonOS.org>
- Kong Weichao <kongweichao@DragonOS.org>
- Hou Jiaying <houjiaying@DragonOS.org>

## Sponsors List

Thank you to the following individuals for their support. We will continue to strive for excellence!

- David Wen (2000 RMB)
- [Seele.Clover](https://github.com/seeleclover) (500 RMB)
- Ye Jinyi (100 RMB)
- Lin (50 RMB)
- Albert (9.99 RMB)
- TerryLeeSCUT (6.66 RMB)
- slientbard (6.66 RMB)
- Wu (2.00 RMB)
- [Other anonymous contributors] (1.00 RMB)

## Update Content - Kernel

- Spinlock: new: Added SpinLock with guards, supporting compile-time checking of lock usage. (#_translated_label__148_en)
- Spinlock: feature: Added lock_irqsave and unlock_irqrestore for raw spin lock (#_translated_label__151_en)
- Mutex: new: Rust version of Mutex (#_translated_label__157_en)
- doc: new: Rust code style document (#_translated_label__161_en)
- WaitQueue: new: Rust version of WaitQueue (#_translated_label__162_en)
- WaitQueue: update: For the C version of wait_queue, changed to immediate wake-up (#_translated_label__158_en)
- block io: new: Block IO scheduler. When there are multiple cores, the IO scheduler runs on core 1. (#_translated_label__158_en)
- smp: bugfix: Start apic_timer for AP cores, making them able to run scheduling (#_translated_label__158_en)
- smp: new: Added kick_cpu function, supporting making a specific core run the scheduler immediately (#_translated_label__158_en)
- smp: new: Added process migration functionality between cores (#_translated_label__158_en)
- scheduler: new: Added real-time process scheduler (supporting FIFO and RR strategies) (#_translated_label__139_en)
- scheduler: update: CFS scheduler sets a separate IDLE process pcb (pid is 0) for each core (#_translated_label__158_en)
- scheduler: bugfix: When process_wakeup, reset the virtual runtime for CFS processes. Solves the problem of other processes starving due to small virtual runtime of sleeping processes. (#_translated_label__158_en)
- process: new: Added migrate_to field in pcb (#_translated_label__158_en)

## Update Content - User Environment

None

## Update Content - Others

None

## Update Content - Software Porting

None

## Source Code and Release Image Download

&emsp;&emsp;You can obtain the source code through the following methods:

### Get via Git

- You can visit [https://github.com/fslongjin/DragonOS/releases](https://github.com/fslongjin/DragonOS/releases) to download the release code, as well as the compiled and runnable disk image.
- We also have a mirror repository on gitee for download: [https://gitee.com/DragonOS/DragonOS](https://gitee.com/DragonOS/DragonOS)

### Get via DragonOS Software Mirror Site

&emsp;&emsp;To solve the problem of slow and unstable access to GitHub in China, and to make it convenient for developers to download the code of each version of DragonOS, we have specially set up a mirror site. You can access the mirror site through the following address:

&emsp;&emsp;You can get the DragonOS code package and the compiled and runnable disk image through the mirror site.

- [https://mirrors.DragonOS.org](https://mirrors.DragonOS.org)
- [https://mirrors.DragonOS.org.cn](https://mirrors.DragonOS.org.cn)
- Domestic mirror acceleration: [https://mirrors.ringotek.cn/](https://mirrors.ringotek.cn/)

## Open Source Declaration

:::{note}
To promote the healthy development of the DragonOS project, DragonOS is released under the GPLv2 open source license. Anyone who can obtain the DragonOS source code and corresponding software products (including but not limited to binary copies and documents) will enjoy the rights granted by us through the GPLv2 license, and you must also comply with the obligations stipulated in the agreement.

This is a rather strict license that protects the healthy development of open source software and prevents it from being encroached upon.

For most well-intentioned people, you will not violate our open source license.

We encourage the free dissemination and promotion of DragonOS, but please ensure that all actions do not infringe on the legitimate rights and interests of others and do not violate the GPLv2 license.

Please pay special attention to the fact that violations of the open source license, especially **commercial closed-source use and any acts of plagiarism or academic misconduct**, will be subject to serious accountability. (This is the easiest scenario to violate our open source license.)

Also, please note that according to the requirements of the GPLv2 license, any software modified or developed based on DragonOS must also be open-sourced under the GPLv2 license and must clearly indicate that it is based on DragonOS. It must also ensure that users of these modified versions can conveniently obtain the original version of DragonOS.

You must make it possible for the DragonOS developers to obtain the source code of your modified version through public channels in the same way, otherwise you will violate the GPLv2 license.

For detailed information about the license, please read the **LICENSE** file in the root directory of the project. Please note that according to the GPLv2 license, **only the English original version is legally binding**. Any translated version is for reference only.
:::

### Open Source Software Usage

&emsp;&emsp;During the development of DragonOS, we have referenced the design of some open source projects, or introduced parts of their code, or been inspired by them. Below is a list of these open source projects. We sincerely thank the contributors of these open source projects!

Format: <Project Name> - <Link> - <Open Source License>

- 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 - "A Design and Implementation of a 64-bit Operating System" by Tian Yu; People's Posts and Telecommunications Press
- chcore - "Modern Operating Systems: Design and Implementation" by Chen Haibo, Xia Yubin; Machinery Industry Press
- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT
- rcore-fs - https://github.com/rcore-os/rcore-fs.git - MIT

## All Commit Records of the Current Version

```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: 功能特性文档


```
