How Does Software Interact With Hardware