This new book provides a clear description of the concepts that underlie all operating systems, using a real language--Java--to present many of the ideas. Rather than concentrating on a particular operating system or hardware, the authors discuss key concepts that are applicable to a wide variety of systems such as processes and inter-process communication, process scheduling, memory management, and IO. In addition to numerous examples of current operating systems, the book includes chapter-long case studies of UNIX, LINUX, and Windows NT.