Concurrency in Operating Systems: Understanding Principles, Challenges