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