I find myself in a situation where I need to work on a embedded, real-time system at work without much prior knowledge. I've done a fair amount of research online, but found nothing satisfactory, so I'm now turning my attention to books.
I've seen this StackOverflow page but I'm not sure if the books that it points to are what I'm looking for. Here are some specific questions that I've accumulated on the job but am still clueless on: (this is a linux system, BTW)
User mode vs Kernel mode. I get that kernel mode is a privileged mode, is faster and so on, but how exactly do I get myself into kernel mode and program in it? Why do I need to go from user mode then to kernel mode? What is a proxy?
Task vs ISR context. Why is it called task context? If I'm in an ISR context already and receive another interrupt, do I exit my current ISR context immediately? If I'm in task context, can I prevent an ISR context from occurring?
Context switch. Does this refer to Task<->ISR switch or user mode <-> kernel mode switch? Why is this expensive?
Device drivers. Why do I need a user mode driver and a separate kernel mode driver?
Re-entrancy. Does this refer to different threads accessing the same function or is this related to ISR context?
I'm looking for a book that will shed some light on these questions. I certainly hope this is all standard material and I'm not asking obscure questions!
Many thanks for your input.