Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some new thoughts on NEUOS #13

Open
VOID001 opened this issue Sep 27, 2018 · 5 comments
Open

Some new thoughts on NEUOS #13

VOID001 opened this issue Sep 27, 2018 · 5 comments

Comments

@VOID001
Copy link
Owner

VOID001 commented Sep 27, 2018

Current version of NEUOS contains many design problems, I will list them below

  1. Handmade bootup process
    now it use a custom hand-made bootloader that can only boot from floppy and harddik(maybe no hdd suport, I forgot) It will have problem booting up on bare metal. To ensure the bootloader works correctly even if run directly on bare metal, we need to use standard bootup process. Such as multiboot, for example grub. May be we will support EFI bootup
  2. Messy build system
    NEUOS now using Makefile alone to build the whole system, which is impractical for a normal C project. We need to use auto build systems, such as automake, kernel now using kconfig system, maybe we can learn from it. Also, we could add support for configurable build options, (for example kernel .config file) to allow users to build flexible customized image
  3. Lack of core function
    Currently, NEUOS supports following functions
    • multiprocess
    • paging
    • VGA and Serial Output
    • Keyboard IO
    • kernel syscall interface
    • scheduling and timer
    • some libraries

However these functions are not enough for a real operating system. At least the following funtion should be added:

  • Virtual Filesystem Support
  • exec syscall support
  • (not part of kernel) A minimal shell should be supported
  • char / block device
    Moreover, it will be better if we can support following functions
  • networking
  • advanced file system such as ext4
  • green thread support
  • media driver support (such as audio) P.S. These are very hard works and need tremendous time and efforts :(
  • multi-architecture support ( we need to consider it at first so that we can add different arch support later)
  1. Hard and unnecessary coding for students.
    Many students are not familiar with AT&T assembly or the Intel Manual. Some assignments such as hardware init and floppy IO now require them to write in full AT&T assembly, thus make them frustrating. Learned from AIM-public, these unnecessary but complicated code need to be implemented by the NEUOS developer, and provide API to students, they could just use the API to issue disk IO commands, hardware init, etc.
    And for a cleaner codebase, we need to remove the hand-written assembly as much as possible, instead, use C inline assembly as an alternative.

  2. More formal debugging, cross building toolkit
    We now combined QEMU gdb and Bochs GUI together to debug the project, but these methods are not enough, for example we need to have some internal debug tool, debug function.
    And the toolchain for building NEUOS should be universal, from a specific architecture and ELF format, everyone can build NEUOS from its own toolchain, providing a Virtual Machine image is not a good choice for environment setup.

  3. To be continued

@swordfeng
Copy link

2 Maybe cleaner makefile (I actually believe no make systems are clean)
3 Always make it run first, make it better later

@VOID001
Copy link
Owner Author

VOID001 commented Oct 13, 2018

@swordfeng Yeah, now the system is in an "It works!" state. So I want to improve it.
Any idea on what essential parts are needed for the OS?

@Anduin2017
Copy link

I need a document about how to build it and how to run it on my machine.

@VOID001
Copy link
Owner Author

VOID001 commented Oct 13, 2018

@Anduin2017 that's fine cross build instructions will be provided later

@QianYuan-master
Copy link

汇编写起来实在是太吃力了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants