Queries on bottom halves

Chinmay V S cvs268 at gmail.com
Mon Aug 27 14:31:29 EDT 2018


> 1. Which stack does the bottom halves use for their execution ?
Modern "bottom-half" implementations built on top of kernel threads
use the stack of the underlying thread.
(just like how any thread on the system does)

> 2. Why can't we sleep in bottom halves ?
We can!
Modern bottom half implementations can sleep i.e. relinquish CPU to
other threads.


Q. What are Bottom Halves?

Ans. A piece of code that is...

a. scheduled/executed asynchronously from the triggering event (interrupt).
(compared to the "top-half" i.e. the ISR that is executed synchronously)

b. and usually can take significant amount of time.
(compared to the time taken by the "top-half" i.e. ISR)

Over the years, several implementations of the "Bottom Halves" concept
have been developed on the Linux kernel. Co-incidentally, one of the
oldest (now deprecated) implementation was itself called Bottom-Halves.

There are several modern implementations of bottom-halves :
Soft-IRQs, Tasklets, and Workqueues. The latter/recent approaches to
implementing bottom-halves are wrappers around Linux kernel threads.

I have tried to summarize these various "Bottom Half" implementations
within the Linux kernel and provide some commentary of their
development over the years in the following slide deck:
https://thecodeartist.blogspot.com/2018/06/bottom-halves-on-linux.html

For more details,
checkout the various links to wikis and articles in
the last slide "References / Recommended Reading" in the above slide-deck.

regards
CVS



More information about the Kernelnewbies mailing list