-
Notifications
You must be signed in to change notification settings - Fork 9
/
release_notes.txt
114 lines (108 loc) · 5.68 KB
/
release_notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
*******************************************************************************
MiniOS v1.2.6 Date:18/12/28
**************
版本描述:
调整和完善了原有的异常处理方式。修复了一些bug。
**************
加入的新特性:
--实现了异常处理流程的框架化。
--使得异常处理方式更完善,进程内发生异常后,系统不会停机,而是会暂停出现异常的程序
的运行,其它进程和OS本身的运行不受影响。
--支持异常处理程序执行期间发生中断。
**************
修复的bug:
--修改了用于进程切换的sched()子程序中开关中断的时机。
--将文件系统代码中用到的全局fsbuf缓冲区修改为局部缓冲区,以避免内核可抢占(内核可
重入)情况下可能出现的多进程对fsbuf缓冲区的读写冲突问题。
--在文件系统代码中,修复了do_open()、do_rdwt()等函数中使用的进行参数传递的结构体
中部分参数未初始化的问题。
--在文件系统代码中,对do_open()函数里的在全局文件描述符表f_desc_table[]中寻找空
描述符的代码进行了调整,以减少内核可抢占情况下能发生的数据冲突。
*******************************************************************************
MiniOS v1.2 Date:18/8/29
**************
版本描述:
移植了文件系统,加入了IDE硬盘设备。对系统进行了一些改进。
**************
加入的新特性:
--向MiniOS中移植了原于渊在Orange's中实现的扁平文件系统,但从微内核改为了宏内核。
--通过read/write系统调用读写硬盘设备时,在等待硬盘设备的数据时使用了之前实现的主动
放弃CPU特性,无需忙等待。
--加入了内核和init用户程序二进制文件的内存映射图kerne.map和init.map,可以为调试
程序提供参考。
--修改了内核在内存中的部署位置。
--添加了脚本文件,支持通过Qemu+gdb在C源码级调试MiniOS。
**************
修复的bug:
--
*******************************************************************************
MiniOS v1.1.1 Date:18/4/27
**************
版本描述:
修复了系统中的一些bug并进行了改进。
**************
加入的新特性:
--在系统调用返回前进行调度,增加进行进程切换的时机。
--在调度程序(sched()和schedule())中加入进程指针p_proc_next指向新选中的进程,
之前只使用了进程指针p_proc_current。
--添加了新源文件ktest.c,其中包含了多组测试代码,用于在对系统进行改动后对已有的
特性或新特性进行测试。
**************
修复的bug:
--修复了系统调用yield()的实现函数中的一个bug,当前进程调用yield()时,分配的ticks
值应该置0,而非自减1。
*******************************************************************************
MiniOS v1.1 Date:18/4/21
**************
版本描述:
通过加入内核态上下文context将中断处理和主动放弃CPU的实现方式在进程切换部分进行了
统一,使得进程切换部分的处理逻辑更清晰。
**************
加入的新特性:
--加入了内核态上下文context,在进行进程切换时,会先在内核栈中保存内核态上下文,
然后选中新的进程,再恢复新进程的内核态上下文。
--sched()
sched()是一个汇编子程序段,位于kernel/kernel.asm。sched()是进程切换的入口点,
只能在内核空间中调用。
--schedule()
schedule()是一个C函数,位于proc.c。它是系统事实上的调度函数,用于选中新的进程
投入运行。
--通过对系统调用fork()和pthread()的内核实现函数进行必要的修改,使得它们能兼容新
引入的内核态context并正常工作。
--全局变量k_reenter当前用于处理中断嵌套,只有中断发生时它的值才会变化。
**************
修复的bug:
--通过对分配给各进程的初始ticks进行修改,使得实际投入运行的第一个进程是PCB表内的第
一个进程,之前实际运行的第一个进程是PCB表内的第二个进程。
*******************************************************************************
MiniOS v1.0 Date:18/3/18
**************
版本描述:
加入了进程主动放弃CPU的功能以及新的系统调用。
**************
加入的新特性:
--加入了主动放弃CPU的功能,使得像read这样的函数,在等待设备的数据时,无需忙等待,
可以让出CPU资源给其它进程使用,提高CPU利用率。
--加入了yield()系统调用。进程调用yield()时,会释放占用的CPU让下一个进程运行。
--加入了sleep()系统调用。sleep()含有一个整型参数n,进程调用sleep(n)后会睡眠n个
ticks,期间不继续往下运行。
**************
修复的bug:
--
*******************************************************************************
MiniOS v0.9 Date:17/12/13
**************
版本描述:
加入内核可重入(内核抢占)功能,使用了新的进程内核栈结构。实现了内核重入后,一个
系统调用不必执行完才能选中新的进程运行,即系统调用执行期间可以被中断,且被中断期间
可以运行其它进程。
**************
加入的新特性:
--使用了新的进程内核栈结构,当前内核栈和进程PCB共用一段8KB的内存空间,进程PCB位于
低地址处,内核栈的栈底位于8KB的最高地址处(压栈方向为高地址向低地址)。
--在进程PCB中加入了新的字段以支持内核可重入。
**************
修复的bug:
--对系统调用fork()和pthread()的内核实现函数进行必要的修改,以支持内核重入,并能
正常工作。
*******************************************************************************