* [Adeos-main] Using ADEOS to run multiple Linux kernels
@ 2007-12-18 17:32 Jonathan Day
2007-12-18 18:21 ` Jan Kiszka
0 siblings, 1 reply; 3+ messages in thread
From: Jonathan Day @ 2007-12-18 17:32 UTC (permalink / raw)
To: adeos-main
Hi,
According to the white papers and other documentation
on the ADEOS site, it is possible to use the ADEOS
nanokernel to run multiple kernels in parallel.
However, what I am not entirely sure on is how you
would actually do so.
What I am wanting to do is run two Linux kernels in
parallel, minus the overheads of virtualization (I
don't need it), where the only requirements are that
if one Linux kernel crashes, it won't take out the
other and that there's some way of restarting a
crashed kernel.
The documentation I can find suggests that ADEOS would
be perfect for the job. It's lightweight, doesn't have
anything I don't need, and is designed to run multiple
kernels within it. The only bit left is to find an
example, a HOWTO, or some other information on how I'd
actually do something like this.
Can anyone give me a recommendation on where I'd find
the information I'd need?
Jonathan
____________________________________________________________________________________
Looking for last minute shopping deals?
Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Adeos-main] Using ADEOS to run multiple Linux kernels
2007-12-18 17:32 [Adeos-main] Using ADEOS to run multiple Linux kernels Jonathan Day
@ 2007-12-18 18:21 ` Jan Kiszka
2007-12-18 21:48 ` Jonathan Day
0 siblings, 1 reply; 3+ messages in thread
From: Jan Kiszka @ 2007-12-18 18:21 UTC (permalink / raw)
To: Jonathan Day; +Cc: adeos-main
[-- Attachment #1: Type: text/plain, Size: 1712 bytes --]
Jonathan Day wrote:
> Hi,
>
> According to the white papers and other documentation
> on the ADEOS site, it is possible to use the ADEOS
> nanokernel to run multiple kernels in parallel.
> However, what I am not entirely sure on is how you
> would actually do so.
>
> What I am wanting to do is run two Linux kernels in
> parallel, minus the overheads of virtualization (I
> don't need it), where the only requirements are that
> if one Linux kernel crashes, it won't take out the
> other and that there's some way of restarting a
> crashed kernel.
I guess you are rather looking for para-virtualized Linux over something
like the Xen hypervisor. This comes with some overhead, but it is fairly
low. The point is that you need memory protection for crash recovery -
otherwise you risk that the crash corrupts memory of the backup kernel.
And with memory protection comes the (para-)virtualization overhead.
In contrast, Adeos, also in its broader original design, is intended to
run multiple kernel _cooperatively_, and that conflicts with your
requirement of crash isolation.
>
> The documentation I can find suggests that ADEOS would
> be perfect for the job. It's lightweight, doesn't have
> anything I don't need, and is designed to run multiple
> kernels within it. The only bit left is to find an
> example, a HOWTO, or some other information on how I'd
> actually do something like this.
AFAIK, this vision of the paper always remained a vision. In practice,
the non-root domains are always some specialized, cooperating real-time
kernels.
>
> Can anyone give me a recommendation on where I'd find
> the information I'd need?
>
> Jonathan
>
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 254 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Adeos-main] Using ADEOS to run multiple Linux kernels
2007-12-18 18:21 ` Jan Kiszka
@ 2007-12-18 21:48 ` Jonathan Day
0 siblings, 0 replies; 3+ messages in thread
From: Jonathan Day @ 2007-12-18 21:48 UTC (permalink / raw)
To: Jan Kiszka; +Cc: adeos-main
I think I can get away without strict memory
protection, because of quirks in the way the project
has been defined. (One kernel will be controlling the
hardware, the other kernel will be running management
applications.)
This means that I can get away with far less than what
would be needed in the general case. There is no risk
of one kernel interfering with hardware operations of
the other. The risk being tackled is that of a driver
failure paralyzing the kernel running the
applications.
Xen would, unfortunately, not work for this. Hardware
is controlled entirely by the host OS, so if a driver
crashes, it'll take out the whole system. On the other
hand, two full kernels running in parallel with no
other protection or isolation should be adequate.
Cooperative multitasking the two kernels is more of an
issue. Even so, the level of protection needed to
handle a hard lockup placing hardware in an unknown or
unrecoverable state is outside what can be done for
this project, and soft lockups can be handled with
kexec or the software watchdog.
This reduces the problem to three parts:
a) Getting two Linux kernels to load over ADEOS
b) Getting ADEOS to multitask or task switch them
c) Convincing Linux' recovery to be ADEOS-friendly
Everything else drops out of the equation because of
the project definition, which is a Good Thing. The
third part should also be relatively easy - it's just
a matter of getting ADEOS to reload that kernel.
Provided moderately heavy tasks can be defined during
normal operation and not just at initialization time,
that should not pose a problem, and I see nothing in
ADEOS that precludes that.
Given RTAI supports the Linux kernel and realtime
threads, the task switching should be a non-issue as
well, so long as more than one task can be a kernel.
Since passing interrupts along a chain would not be
that useful if there can be only one target, this
would seem to answer the question of can it be done.
The remaining problem there is that I can't find an
example of it actually being done.
That just leaves loading two Linux kernels in the
first place. Again, without an example of this being
done, it's not altogether obvious what steps are
needed to do this. Two kernels run side-by-side is
quite a different proposition from one kernel inside
another a-la usermode Linux.
Personally, I'd have no problems hacking kernel code
to get this working. I'm probably going to have to
make some changes to both ADEOS and Linux to do what I
want, the way that I want it. The worst-case is that
nobody has got an example close enough to what I want
to do for me to reuse code/ideas. That's only going to
be a problem, though, if I don't know that I'm working
from the worst case.
Hopefully, there's some project - however incomplete -
that does do at least some of what I want. That would
be sufficient. I can do the rest from there. Finding
that example, though, is proving tough and that's
where I'm hoping for help at this point.
Jonathan
--- Jan Kiszka <jan.kiszka@domain.hid> wrote:
> I guess you are rather looking for para-virtualized
> Linux over something
> like the Xen hypervisor. This comes with some
> overhead, but it is fairly
> low. The point is that you need memory protection
> for crash recovery -
> otherwise you risk that the crash corrupts memory of
> the backup kernel.
> And with memory protection comes the
> (para-)virtualization overhead.
>
> In contrast, Adeos, also in its broader original
> design, is intended to
> run multiple kernel _cooperatively_, and that
> conflicts with your
> requirement of crash isolation.
____________________________________________________________________________________
Looking for last minute shopping deals?
Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-12-18 21:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-12-18 17:32 [Adeos-main] Using ADEOS to run multiple Linux kernels Jonathan Day
2007-12-18 18:21 ` Jan Kiszka
2007-12-18 21:48 ` Jonathan Day
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.