linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Richard B. Johnson" <root@chaos.analogic.com>
To: "Jeff V. Merkey" <jmerkey@timpanogas.org>
Cc: Andi Kleen <ak@suse.de>,
	mingo@elte.hu, Pavel Machek <pavel@suse.cz>,
	linux-kernel@vger.kernel.org
Subject: Re: 2.2.18Pre Lan Performance Rocks!
Date: Tue, 31 Oct 2000 18:05:33 -0500 (EST)	[thread overview]
Message-ID: <Pine.LNX.3.95.1001031174047.165A-100000@chaos.analogic.com> (raw)
In-Reply-To: <39FF465F.4EEB811A@timpanogas.org>

On Tue, 31 Oct 2000, Jeff V. Merkey wrote:

> 
> A "context" is usually assued to be a "stack".  The simplest of all
> context switches 
> is:
> 
>    mov    x, esp
>    mov    esp, y
> 
> A context switch can be as short as two instructions, or as big as a TSS
> with CR3 hardware switching,
> 
> i.e.  
> 
>    ltr    ax
>    jmp    task_gate
> 
> (500 clocks later)
> 
>    ts->eip gets exec'd
> 
> you can also have a context switch that does an int X where X is a gate
> or TSS.
> 
> you can also have a context switch (like linux) that does
> 
>     mov    x, esp
>     mov    esp, y
>     mov    z, CR3
>     mov    CR3, w
> 
> etc.
> 
> In NetWare, a context switch is an in-line assembly language macro that
> is 2 instructions long for a stack switch and 4 instructions for a CR3
> reload -- this is a lot shorter than Linux.
> Only EBX, EBP, ESI, and EDI are saved and this is never done in the
> kernel, but is a natural
> affect of the Watcom C compiler.  There's also strict rules about
> register assignments that re enforced between assembler modules in
> NetWare to reduce the overhead of a context switch.  The code path is
> very complex in NetWare, and priorities and all this stuff exists, but
> these code paths are segragated so these types of checks only happen
> once in a while and check a pre-calc'd "scoreboard" that is read only
> across processors and updated and recal'd by a timer every 18 ticks.
> 
> Jeff
> 
>    

I have this feeling that this is an April Fools joke. Unfortunately
it's Halloween.

One could create a 'kernel' that does:
	for(;;)
        {
          proc0();
          proc1();
          proc2();
          proc3();
          etc();
        }

... and loop forever. All 'tasks' would just be procedures and no
context-switching would even be necessary. This is how some network
file-servers worked in the past (Vines comes to mind). Since all
possible 'tasks' are known at compile-time, there isn't even any
need for memory protection because every task cooperates and doesn't
destroy anything that it doesn't own.

The only time you need to save anything is for interrupt handlers.
This was some simple push/pops of only the registers actually
used in the ISR.

Now, the above example may seem absurd, however it's not. Inside
each of the proc()'s is a global state-variable that allows the
code to start executing at the place it left off the last time
through. If the code was written in 'C' it would be a 'switch'
statement. The state-variable for each of the procedures is global
and can be changed in an interrupt-service-routine. This allows
interrupts to change the state of the state-machines.

This kind of 'kernel' is very fast and very effective for things
like file-servers and routers, things that do the same stuff over
and over again.

However, there techniques are not useful with a kernel that
has an unknown number of tasks that execute 'programs' that are
not known to the kernel at compile-time, such as a desk-top
operating system.

These operating systems require context-switching. This requires
that every register that a user could possibly alter, be saved
and restored. It also requires that the state of any hardware
that a user could be using, also be save and restored. This
cannot be done in 2 instructions as stated. Further, this saving
and restoring cannot be a side-effect of a particular compiler, as
stated.

Cheers,
Dick Johnson

Penguin : Linux version 2.2.17 on an i686 machine (801.18 BogoMips).

"Memory is like gasoline. You use it up when you are running. Of
course you get it all back when you reboot..."; Actual explanation
obtained from the Micro$oft help desk.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

  parent reply	other threads:[~2000-11-01  0:06 UTC|newest]

Thread overview: 152+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-10-29 23:19 2.2.18Pre Lan Performance Rocks! Jeff V. Merkey
     [not found] ` <E13q2R7-0006S7-00@the-village.bc.nu>
2000-10-30  1:35   ` Jeff V. Merkey
2000-10-30  6:47     ` Andi Kleen
2000-10-30  6:58       ` Jeff V. Merkey
2000-10-30  7:08         ` Andi Kleen
2000-10-30  7:16           ` Jeff V. Merkey
2000-10-30  7:38             ` Andi Kleen
2000-10-30  8:04               ` Jeff V. Merkey
2000-10-30  8:16                 ` Andi Kleen
2000-10-30 12:47                 ` Alan Cox
2000-10-30 12:50                   ` Andi Kleen
2000-10-30  8:26           ` Ingo Molnar
2000-10-30  7:20             ` Jeff V. Merkey
2000-10-30  8:39               ` Ingo Molnar
2000-10-30  8:08                 ` Jeff V. Merkey
2000-10-30  9:52                   ` Ingo Molnar
2000-10-30  8:55                     ` Jeff V. Merkey
2000-10-30 10:13                       ` Ingo Molnar
2000-10-30  9:11                         ` Jeff V. Merkey
2000-10-30 10:41                           ` Ingo Molnar
2000-10-30  9:33                             ` Jeff V. Merkey
2000-10-30 10:56                               ` Ingo Molnar
2000-10-30  9:45                                 ` Jeff V. Merkey
2000-10-30 11:04                               ` Ingo Molnar
2000-10-30  9:56                                 ` Jeff V. Merkey
2000-10-30 11:13                                   ` Ingo Molnar
2000-10-30 10:08                                     ` Jeff V. Merkey
2000-10-30 17:41                                     ` Andrea Arcangeli
2000-10-30 17:58                                       ` Chris Evans
2000-10-30 18:01                                         ` Jeff V. Merkey
2000-10-30 18:21                                           ` Andrea Arcangeli
2000-10-30 17:59                                       ` Jeff V. Merkey
2000-10-31  8:08                                         ` Ingo Molnar
2000-10-31 20:04                                           ` Jeff V. Merkey
2000-10-30 19:11                                       ` Dan Hollis
2000-10-31 18:59                                         ` Pavel Machek
2000-10-30 10:27                       ` Ingo Molnar
2000-10-30  9:20                         ` Jeff V. Merkey
2000-10-30 10:44                           ` Ingo Molnar
2000-10-30  9:38                             ` Jeff V. Merkey
2000-10-30 11:01                               ` Ingo Molnar
2000-10-30  9:54                                 ` Jeff V. Merkey
2000-10-30 11:12                                   ` Ingo Molnar
2000-10-30 10:06                                     ` Jeff V. Merkey
2000-10-30 10:56                                       ` john slee
2000-10-30 18:04                                         ` Jeff V. Merkey
2000-10-30 11:31                                       ` Ingo Molnar
2000-10-30 12:57                                   ` Alan Cox
2000-10-30 17:55                                     ` Jeff V. Merkey
2000-10-30 18:34                                       ` Alan Cox
2000-10-30 21:17                                         ` Jeff V. Merkey
2000-10-31  9:25                                         ` Erik Andersen
2000-10-31 18:50                               ` Pavel Machek
2000-10-31 20:06                                 ` Jeff V. Merkey
2000-10-31 20:13                                   ` Jeff V. Merkey
2000-10-31 21:31                                     ` Ingo Molnar
2000-10-31 21:56                                       ` Ingo Molnar
2000-10-31 21:57                                       ` Jeff V. Merkey
2000-11-01  0:27                                   ` Ingo Molnar
2000-10-31 23:18                                     ` Jeff V. Merkey
2000-11-01  0:47                                       ` Ingo Molnar
2000-11-01  0:56                                       ` Davide Libenzi
     [not found]                                       ` <20001102031546.B10806@cerebro.laendle>
     [not found]                                         ` <20001101212835.A2425@vger.timpanogas.org>
     [not found]                                           ` <20001102043332.A27126@fuji.laendle>
     [not found]                                             ` <3A0195DA.DDEBAC51@timpanogas.org>
     [not found]                                               ` <20001102194323.D2790@cerebro.laendle>
     [not found]                                                 ` <3A01CBB5.48C3094A@timpanogas.org>
     [not found]                                                   ` <20001102214903.F2790@cerebro.laendle>
     [not found]                                                     ` <3A01E71A.778BD898@timpanogas.org>
     [not found]                                                       ` <20001102232210.H2790@cerebro.laendle>
     [not found]                                                         ` <3A01ECD2.76DE10FF@timpanogas.org>
2000-11-02 22:46                                                           ` Jeff V. Merkey
2000-11-03  0:12                                                             ` Davide Libenzi
2000-11-02 23:00                                                               ` Jeff V. Merkey
2000-10-31 21:34                                 ` Ingo Molnar
2000-10-31 21:52                                   ` Jeff V. Merkey
2000-10-31 22:05                                     ` Andi Kleen
2000-10-31 22:23                                       ` Jeff V. Merkey
2000-10-31 22:45                                         ` Jeff V. Merkey
2000-10-31 22:44                                           ` David Lang
2000-10-31 22:57                                             ` Jeff V. Merkey
2000-10-31 22:52                                               ` David Lang
2000-10-31 23:02                                           ` Alan Cox
2000-10-31 23:03                                             ` Jeff V. Merkey
2000-11-01  0:08                                           ` Ingo Molnar
2000-10-31 22:59                                             ` Jeff V. Merkey
2000-11-01  2:30                                           ` Horst von Brand
2000-10-31 23:05                                         ` Richard B. Johnson [this message]
2000-10-31 23:14                                           ` Jeff V. Merkey
2000-11-01  0:32                                             ` Ingo Molnar
2000-10-31 23:23                                               ` Jeff V. Merkey
2000-11-01  0:55                                           ` Ingo Molnar
2000-10-31 23:54                                         ` Ingo Molnar
2000-10-31 22:47                                           ` Jeff V. Merkey
2000-10-31 22:56                                             ` Larry McVoy
2000-10-31 22:55                                               ` Jeff V. Merkey
2000-11-01  0:10                                             ` Ingo Molnar
2000-11-01  5:38                                         ` Daniel Phillips
2000-11-03  6:42                                         ` Daniel Phillips
2000-10-31 22:59                                     ` Michael H. Warfield
2000-10-31 23:12                                     ` Ingo Molnar
2000-10-31 22:28                                       ` Jeff V. Merkey
2000-11-01  5:01                                         ` Peter Samuelson
2000-11-01  5:09                                           ` Larry McVoy
2000-11-01  5:20                                             ` Peter Samuelson
2000-10-30 10:50                           ` Ingo Molnar
2000-10-30  9:40                             ` Jeff V. Merkey
2000-10-30 23:26                 ` David Woodhouse
2000-10-30 23:49                   ` Jeff V. Merkey
2000-10-31 23:34                     ` Roger Larsson
2000-10-31 15:18 ` Reto Baettig
2000-10-31 20:26   ` Alan Cox
2000-10-31 15:30     ` Reto Baettig
2000-10-31 20:37       ` Alan Cox
2000-10-31 20:48         ` Jesse Pollard
2000-10-31 20:58           ` Alan Cox
2000-11-01  1:33           ` Horst von Brand
2000-11-01  3:42             ` Jesse Pollard
2000-11-01 13:26               ` Horst von Brand
2000-10-31 21:43     ` Jeff V. Merkey
2000-10-31 21:50       ` Jeff V. Merkey
2000-10-31 20:36   ` Rik van Riel
2000-10-31 15:47     ` Reto Baettig
2000-10-31 21:05       ` Rik van Riel
2000-10-31 21:33     ` Jeff V. Merkey
2000-10-31 21:48       ` Rik van Riel
2000-10-31 16:54         ` Reto Baettig
2000-10-31 21:58           ` Rik van Riel
2000-10-31 21:53         ` Jeff V. Merkey
     [not found] <200010300823.BAA19834@vger.timpanogas.org>
2000-10-30  8:36 ` Jeff V. Merkey
2000-10-31 21:44 Jeff V. Merkey
2000-10-31 21:36 ` Paul Menage
2000-10-31 21:44   ` David S. Miller
2000-10-31 23:21   ` Matti Aarnio
2000-10-31 23:39     ` David Weinehall
2000-10-31 22:05 ` Larry McVoy
2000-10-31 22:15   ` Jeff V. Merkey
2000-10-31 22:27     ` Larry McVoy
2000-10-31 22:38       ` Jeff V. Merkey
2000-10-31 22:48         ` Rik van Riel
2000-10-31 22:50           ` Jeff V. Merkey
2000-10-31 22:49         ` Larry McVoy
2000-10-31 22:53           ` Jeff V. Merkey
2000-10-31 23:15         ` Nathan Paul Simons
2000-10-31 23:20           ` Jeff V. Merkey
2000-11-01  0:00             ` Michael H. Warfield
2000-11-01  0:07               ` Alan Cox
2000-11-01  0:13                 ` Michael H. Warfield
2000-11-01  1:30         ` Andrea Arcangeli
     [not found]           ` <20001031183809.C9733@.timpanogas.org>
2000-11-01 15:41             ` Andrea Arcangeli
2000-11-01 17:25               ` Jeff V. Merkey
2000-11-01 17:35                 ` Jeff V. Merkey
2000-11-01 18:07                   ` Andrea Arcangeli
2000-11-01 18:34                     ` Jeff V. Merkey
2000-11-01 21:13                       ` Daniel Phillips
2000-11-01 21:32                         ` Jeff V. Merkey
2000-11-01 11:13         ` David Woodhouse
2000-11-01 15:00           ` Andrea Arcangeli
2000-11-01  9:51       ` Anton Altaparmakov
2000-11-01 17:28         ` Jeff V. Merkey
2000-11-02 21:58         ` Anton Altaparmakov

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=Pine.LNX.3.95.1001031174047.165A-100000@chaos.analogic.com \
    --to=root@chaos.analogic.com \
    --cc=ak@suse.de \
    --cc=jmerkey@timpanogas.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=pavel@suse.cz \
    /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;
as well as URLs for NNTP newsgroup(s).