Is it possible to have an operating system with multiple kernels?

Asked

Viewed 163 times

0

I was thinking along with my team to make an operating system that runs the applications and drivers Windows and Linux kernel Linux and React OS kernel hybrid, but I’m curious to know if it would be possible to have more than one kernel.

  • You can install GNU/Linux distribution and then install Wine. This way you can also run Windows applications in addition to those native to the base operating system. There are limitations. Wine: https://www.winehq.org/

  • Did the answer solve your question? Do you think you can accept it? See [tour] if you don’t know how you do it. This would help a lot to indicate that the solution was useful for you. You can also vote on any question or answer you find useful on the entire site (when you have 15 points).

1 answer

2

If you are asking this you and your team are far from making a simple operating system, plus still a complex one like that. Keep in mind that no one did this not because they did not have the idea, but because it is not feasible and/or does not bring the expected advantages.

In theory it is possible, but it must be extremely difficult and in practice you will probably need a kernel to manage others. And I don’t even know if there’s an advantage to it. If you add something to the processor, it might be easier to do this. Virtual machines have become "easy" to implement and viable in use after the processor has its own control for this.

That goes for anything in the operating system. It was always possible to make virtual memory, but only became viable when the processor had its own mechanism to control it without cost to the software.

You’d have to wonder what the advantage of having several kernels. Probably none. Want to do drivers and different applications? Ok, make it work, don’t need to have more than one kernel. The OS API has nothing to do with the kernel. Deliver different Apis in the same kernel.

One thing is you develop an operating system with several kernels or several Apis, which in practice I see no direct advantage, another very different is to develop one or more kernels providing existing Apis with 100% compatibility.

Reactos so far has not achieved 100% compatibility with Windows XP, and close to zero, if I am not outdated, with what was added in Vista, 7, 8, 10. Including the drivers are incompatible with drivers current Windows.

If it were easy, or even feasible, Linux would have been compatible with drivers of Windows, this would have taken a leap in its adoption. They did not stop doing it because they did not have the idea or did not want to have done it.

Compatibilizar apps is already a little easier, even so needs effort and a lot of competence. Microsoft invested in its best engineers, and most of the best in the world work there, and they managed to do two things: they managed to make the Linux user API available on Windows, so today "any" Linux application runs on Windows kind of natively; and made SQL Server which is very integrated with Windows run on Linux fully, without modifications (are making modifications for optimizations), and this opens up the possibility of almost any Windows application running on Linux. That is, it is not yet 100% mature, but there is already what you want.

What you’re doing today is using full virtual machines or not to run more than one operating system on the same machine at the same time and communicate in such a way that it’s almost transparent when you’re running an application on Windows, Linux or other OS, although only one of them is the host and the rest are guests. Windows itself has technology that does this to run old applications that no longer run in newer versions.

The other day I saw a group of people who proposed to make an operating system free of bugs. It is very naive to think that others make mistakes because they are stupid, lazy, without creativity, or anything like that. If they didn’t, it’s because at the very least, it’s not worth the effort.

I think that with the current hardware in practice will end up doing what already exists. The best thing to do is to make a nanokernel be available to others kernels work.

  • You said about a kind of virtualization where it communicates in such a way to the base operating system that it’s an almost transparent interaction, as it’s called?

  • I don’t know, I don’t think it has a specific name

  • I asked about making an operating system with several kernels pq each one would have the job of processing the information of each corresponding operating system as a kernel to run application only for Windows and another only for Linux

  • Maybe it is better to make several virtual kernels?

  • That doesn’t make sense, kernel is not what you probably think it is, as I have already demonstrated in the answer.

  • A kernel would be better if it were developed in C or Assembly right?

  • This is irrelevant, in fact some minimal Assembly has to have, the rest is each one’s decision, and it’s a simple decision, the amount of decisions you need to make when you make a kernel and their complexity can’t compare to this decision.

  • For this situation what kind of kernel would you recommend (Microkernel or monolithic)?

  • You can not answer this and is already running away from the focus of the question, see the [tour].

Show 4 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.