public inbox for linux-8086@vger.kernel.org
 help / color / mirror / Atom feed
From: Alan Cox <alan@lxorguk.ukuu.org.uk>
To: u-vpoa@aetey.se
Cc: linux-8086@vger.kernel.org
Subject: Re: We have a whole new ton of goodies to investigate...
Date: Mon, 27 Apr 2015 11:53:27 +0100	[thread overview]
Message-ID: <20150427115327.072762af@www.etchedpixels.co.uk> (raw)
In-Reply-To: <20150427070643.GV8197@example.net>

> > ELKS is not that bloated to be honest. It's got a few areas that would
> > probably save a chunk of memory if fixed but the basic architecture is
> > pretty sound including basic 286 mode support.
> 
> Nice! I had an impression that it was severely constrained by the
> 64k limit for itself, which would make it very hard to extend the
> functionality. Of course a part of the problem is the compiler
> efficiency limitations.

Code space there is a lot to save with a better compiler (eg the coherent
one) or bcc improvements and architectural changes here and there. Data
can be drastically improved by getting the wait logic to not put pointer
chains on the stacks. That would mean that you only needed to keep a few
instances of kernel stacks in the kernel map.

In fact some of the Fuzix ports go so far as to only have one kernel and
interrupt stack in kernel data, and to save it on a task switch out and
restore it on a switch in (if the arriving task is not the old one).
Small machines don't task switch a lot and the hard cases can be
restructured so that the wakeup intelligence is in the waker not the
sleeper (which is more efficient anyway)

ie you avoid the plague of what is effectively

		while(!i_am_ready()) {
	                sleep_on(&foo);
		}

type stuff in the big Linux kernel and instead of waking one queue you
end up doing

		foreach(task_waiting_foo) {
			if (task_is_ready(task))
				wakeup(task);
		}

in the context of the waker.

You can't always do that but most cases work.

More seriously though what do you need to find extra space to add ? The
network stack needs work but is mostly out of kernel mapping (and
probably should stay so as with 2.11BSD), the rest of the basic POSIX
infrastructure is pretty complete. The Linux kernel has grown over ten
times bigger since 1.2 days but I don't think it's added that much useful
to the core code.

Alan

  reply	other threads:[~2015-04-27 10:53 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-26 21:22 We have a whole new ton of goodies to investigate u-vpoa
2015-04-26 23:31 ` Alan Cox
2015-04-27  7:06   ` u-vpoa
2015-04-27 10:53     ` Alan Cox [this message]
2015-04-27 12:30       ` u-vpoa
2015-04-27 13:35         ` Alan Cox
2015-04-27 14:44           ` u-vpoa
  -- strict thread matches above, loose matches on Subject: below --
2015-04-16 11:14 LM
2015-04-16 11:39 ` Alan Cox
2015-04-03 20:40 Alan Cox
2015-04-15 17:10 ` MFLD
2015-04-15 21:41   ` Alan Cox
2015-04-16  7:35     ` MFLD
2015-04-16 11:49       ` Alan Cox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150427115327.072762af@www.etchedpixels.co.uk \
    --to=alan@lxorguk.ukuu.org.uk \
    --cc=linux-8086@vger.kernel.org \
    --cc=u-vpoa@aetey.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox