Then read kernel code. Too much? Start writing your own. Don't know how? Google. Programming on Linux isn't much different than on Windows, apart from the fact that some functionalities are named differently and some things work the other way; usually you don't touch these low level functions. Study whatever you want to do. Studying for the sake of studying can work, but is both tiresome and not as effective.