Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 11:05
    yashrajkakkad commented #23
  • 10:35
    yashrajkakkad commented #23
  • 04:35
    yashrajkakkad commented #23
  • Oct 20 23:47
    nuta commented #23
  • Oct 20 13:27
    yashrajkakkad commented #23
  • Oct 18 08:02
    yashrajkakkad commented #23
  • Oct 18 07:58
    nuta commented #23
  • Oct 18 07:55
    yashrajkakkad commented #23
  • Oct 18 07:30
    yashrajkakkad commented #23
  • Oct 18 06:58
    nuta commented #23
  • Oct 18 06:57
    nuta commented #23
  • Oct 18 06:50
    nuta commented #23
  • Oct 18 05:24
    yashrajkakkad commented #23
  • Oct 18 05:01
    nuta commented #23
  • Oct 17 10:01
    yashrajkakkad commented #23
  • Oct 17 10:01
    yashrajkakkad commented #23
  • Oct 16 12:45
    nuta commented #25
  • Oct 14 14:17
    nuta commented #26
  • Oct 14 14:17

    nuta on master

    Fixed typo in docs Conding -> C… (compare)

  • Oct 14 14:17
    nuta closed #26
Seiya Nuta
@nuta

and small kernel makes it easier to make it reliable after all :)

I believe so too :D

0xqf
@0xqf
and the microkernel architecture makes it quite easily customizable
image a website where you could choose what you want in your OS image and it builds the image for you to download :D not that easily doable with a monolithic model
Seiya Nuta
@nuta
Maybe I'm a bit nitpicky but to be fair, modular monolithic kernels also allows creating heavily customized image. That said, a microkernel-based OS tends to be more customizable since they don't implement OS personality (like *nix-like system calls) within the kernel-space.
If you go with Resea, you'll be faced with its bugs and hard-to-understand (or undocumented) code. If you need help or have any questions, feel free to talk to me :)
0xqf
@0xqf
well yeah but dont you usually need to rebuild the kernel when you wanna costumize it
well to be fair there are kernel modules but they run in kernel mode :)
Ghost
@ghost~56508c2f16b6c7089cbb9805
qemu-system-x86_64: -device virtio-net,netdev=net1,mac=52:54:00:ab:cd:ef,packed=on: Property '.packed' not found
why we need this config?
and which qemu version that you use @nuta
Seiya Nuta
@nuta

well yeah but dont you usually need to rebuild the kernel when you wanna costumize it

Good point. That's a strength of microkernels :)

why we need this config?

Recently I've implemented a virtio-net driver which supports the latest features in the specification. The packed option enables a feature called Packed Virtqueue.

and which qemu version that you use @nuta

I'm using 5.0.0. It seems the option is added in this commit: qemu/qemu@74b3e46

Seiya Nuta
@nuta
By the way, I implemented the driver to run a web server on Resea on Google Compute Engine, however, after finishing its implementation I noticed that GCE only supports the legacy virtio spec :(
0xqf
@0xqf
:(
is it hard to backport?
Ghost
@ghost~56508c2f16b6c7089cbb9805
i have 4.1.0 at qemu
i deleted this packed=on option
and it booted but:
resim.png
just didnt get why it halted because of packed disabled or?
Seiya Nuta
@nuta

is it hard to backport?

I think supporting the so-called legacy virtio spec is easier than the modern virtio spec which I've implemented.

just didnt get why it halted because of packed disabled or?

Hmm, that's strange... I think it's not occurred by disabling the packed option.

Seiya Nuta
@nuta

my config: https://0x0.st/ilS0.txt

Please enable Kernel > Use semihosting features config in make menuconfig. If the option is enabled, the kernel terminates QEMU using a special I/O port.

0xqf
@0xqf
i don't really understand why the modern stuff is always so much harder...
our mission should be to make it simpler
Seiya Nuta
@nuta

i don't really understand why the modern stuff is always so much harder...

Regarding the virtio devices, the modern virtio spec adopts more cleaner (but slightly more complicated) design to improve flexibility, etc.

Ghost
@ghost~56508c2f16b6c7089cbb9805
@nuta is there any plan to prepare an academic paper for resea?
Seiya Nuta
@nuta
Currently no. I don't have strong motivation to write paper as I'm no longer a university student.
Yashraj Kakkad
@yashrajkakkad

Hello everyone!

This is Yashraj, a third-year undergraduate student from Ahmedabad University, India. I and my friends came across Resea recently and are looking forward to dedicating 6-weeks of our time to contribute as a part of our course project on Operating Systems.

We went through the documentation and the project board, but we're not able to create a timeline for ourselves for the coming weeks as we're just learning the subject. We're really excited about this and want to make quality contributions to this project.

We'd be really grateful if some regular contributor can show us some direction.

Thanks a lot!

Seiya Nuta
@nuta
Hello Yashraj, welcome to Resea! Please feel free to ask anything here if you have questions, etc. I hope that Resea deepen your knowledge of (microkernel) operating systems :)
Since Resea is still a hobby-level project, there're a lot things we need to work on. Do you have any interested topics on operating system? (e.g. memory management, file systems, device drivers, TCP/IP, ...)
Yashraj Kakkad
@yashrajkakkad

Hello Mr. Seiya,

Thanks a lot for a quick response!

We're looking for things which connect to what we learn in an elementary OS course - process management, scheduling, memory management, virtual memory, threading, interprocess communication etc. We also don't mind shifting a bit out of our comfort zones. We'd possibly want to avoid subjects which are not related to core OS concepts for example, such as networking-related things as of now.

Please let us know how this sounds to you. We're really excited to work with Resea for our project.

Seiya Nuta
@nuta

Sounds great! Off the top of my head, project ideas for Resea are:

  • Improving malloc implementation. Currently it uses a very primitive algorithm. We need to implement another smarter algorithm to mitigate fragmentation.
  • User-level scheduler. In microkernel-based systems, task schedulers are implemented in the user-space using special kernel interfaces. I've implemented task_schedule system call for that purpose, but we haven't yet implemented various scheduling algorithms (in the userspace). See MINIX3's approach for more details.

I'll let you know if I come up with other ideas.

Of course I welcome your idea if you have :)
Seiya Nuta
@nuta

By the way, you might already know but a microkernel-based OS is quite different from monolithic kernel based OS. AFAIK most operating system courses are implicitly based on monolithic ones.

For example, microkernels are based on a philosophy called "separation of mechanism and policy": we avoid adding code to the kernel as much as possible. Instead, we implement operating system features (like high-level process/memory management, process scheduler, referred to as policy) in the userspace. The kernel only provides a simple but flexible features (mechanism) to implement them.

For that reason, I highly recommend surveying microkernel research (e.g. MINIX3, L4) a little. You don't have to understand everything but they would stimulate your curiocity.

Yashraj Kakkad
@yashrajkakkad
Hello Seiya! Thanks a lot for the wonderful insights .
We went through everything and are about to submit our project proposal to our faculty.
Yashraj Kakkad
@yashrajkakkad

Hello @nuta, we have finalized working on resea for our project with our instructor. We have proposed the malloc implementation and zero-copy IPC as the issues that we'd like to tackle.

Also, we're looking forward to try our hands with implementing new features. We saw your project board and we were hooked by some of the ideas like - random number generation and Datetime management server. We're also excited by the idea of writing applications in Rust. As the maintainer and the person behind the thinking, can you please tell us what is in our mind regarding these?

Also, we'll be putting up our thoughts in the issue comments as we go through them. I hope you won't mind assigning them to us once we do so.

Seiya Nuta
@nuta
Sounds great! Let's enjoy projects you mentioned! I'll update issues on GItHub tomorrow to clarify what we need to do.
Seiya Nuta
@nuta
That said, since you have a deadline (6 weeks), I think it's good idea to give priority to projects according to your interests and preferences.
Yashraj Kakkad
@yashrajkakkad
Thank you very much @nuta. We went through the malloc function and understood the implementation. We could relate to the ideas we are currently learning in memory management related to fragmentation. We are just not sure what "smart" algorithm you're expecting as the solution.
Yashraj Kakkad
@yashrajkakkad
Yes, about the deadline, we want to go by the "easiest" first strategy and gain confidence. About the topics, we're fine with literally anything which we can relate to our course.
As you mentioned MINIX once, I did check out its implementation of malloc() and its pretty daunting
Seiya Nuta
@nuta
As you say implementing a smart malloc is not obvious and it would be difficult since it is one of crucial research topic on operating system. As the first step, I'd recommend adding a small but effective heuristic improvement to the existing malloc on Resea. For example, supporting multiple bins ( I'll describe more details in #23 later).
If you're new to malloc, have a look at an article about the internals of glibc's malloc.
Seiya Nuta
@nuta
You just need to understand high-level algorithms, and you don't need to understand the implementation.
Yashraj Kakkad
@yashrajkakkad
Thank you very much. I went through the article and we have started working on the problems.
Seiya Nuta
@nuta
Enjoy ;)