iv had a similar problem really.
Iv a solid background in C++, and i was doing a bit of Java. Im interested on coding Linux Device Drivers, so i went out and bought the 2 O'Reilly books "Understanding the Linux kernel" and "Linux Device Drivers"
i found a lot of it difficult to follow, and i got to the stage that i wasnt sure if i was reading it or just turning pages. I took a step back and thought i should do some more pure C, so i bought "The C Programming Language" (i think its called that)
My problem is that im familiar with Linux (not so much the kernel), familiar with C/C++, but im not good with Hardware. Hopefully its something il improve on in the following months/years.
I find a lot of it really boring though when im reading it, but i think thats because iv spent almost every night for months reading books on programming/linux/certifications that im burning myself out. 1 year ago i was completely new to it all, iv come a long way though
(to put it another way, 1 year ago id never heard of Linux, didnt know what a Shell was, and didnt realise C++ or Java existed)