TCB size in ix86 L4

Michael Hohmuth hohmuth at innocent.com
Wed Jan 6 15:09:26 CET 1999


[ As a courtesy to new readers: TCB = "thread control block", the
  kernel data structure holding thread-specific data including the
  thread's stack. ]

"Adam 'WeirdArms' Wiggins" <awiggins at cse.unsw.edu.au> writes:

> 	I was woundering why the TCB size in ix86 L4 is 1K, how much of
> the stack at the end of the TCB is actually used? 

Very little: Most of the time, less than 150 bytes.

> Could the TCB be reduced to 512K? If not why not?
			      ^^^^
			      512 bytes?

I think it could.  L4/x86 has disabled hardware interrupts most of the 
time, so the theoretical maximal stack usage probably isn't much
higher than the one we see, maybe 100 bytes more.  I guess Jochen
didn't know it was so little when he designed L4, and never changed it 
later.

In the Fiasco kernel, things are different: This kernel had been
written in C++, and it may be interrupted at almost any time; handlers
may interrupt each other and stack up on one thread's stack.  That's
why the theoretical maximal stack usage is much higher.  Although I
haven't computed it yet, I have estimated that a < 1K stack is too
small for the current implementation.  That's why Fiasco by default is
configured to use 2-KByte TCBs.

Michael
-- 
hohmuth at innocent.com, hohmuth at sax.de
http://www.sax.de/~hohmuth/



More information about the l4-hackers mailing list