Basic principles of an operating system : learn the internals and design principles