You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+11-1Lines changed: 11 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,16 +14,26 @@ The below depicts an early "schedule" or rather a path I will be taking in terms
14
14
-[x] Keyboard Driver
15
15
-[x] Memory Management (Physical + Virtual)
16
16
-[x] Higher Half Kernel
17
+
-[x] Multitasking and Scheduling
17
18
-[ ] File System
18
19
-[ ] Process Creation and Managements
19
-
-[ ] Multitasking and Scheduling
20
20
-[ ] Networking
21
21
-[ ] ELF Binary Support
22
22
-[ ] Interactive Shell
23
23
-[ ] Graphical User Interfaces
24
24
25
25
#Progress Update & Changelog
26
26
27
+
## Version .002a
28
+
29
+
It took me a while, but finally, I've got it! Multitasking! Currently, the CPU may as well be a uniprocessor, but I do implement task switching that allows me to have a VERY simple and __minimal__ multitasking kernel! They are still only threads because they do not have their own page directory (and hence share the same virtual address space). This meant that to create these tasks I had to copy the 'parent' stack for the 'child', and do a ton of trickery to get it working.
30
+
31
+
As well, the time sharing has no current way to 'yield' to the 'scheduler' either, as I use the software context switching method (meaning, I only task switch from an interrupt handler).
32
+
33
+
Good news is that I have fixed the Real-Time Clock, and I have it update in the top right corner, and as well as have the last pressed key right below it. I've also taken the time to implement scrolling! Now it buffers each line of the VGA buffer so that scrolling up and down will save and restore them appropriately!
34
+
35
+

36
+
27
37
## Version .002
28
38
29
39
It is FINALLY here! I have implemented not only memory management (paging and a heap allocator), but even converted to a higher-half kernel approach, which was also easier, surprisingly, than a normal identity-mapped system. I've also fixed up the tests and their output format to better portray the significance of the initialization of the kernel thus far. I am very satisfied with what I have done, but unfortunately, I have to attend to another project for the time being.
0 commit comments