layered architecture of a computer system