Operating systems are generally large and complicated, and therefore difficult to write, debug and maintain. This thesis approaches the problem of simplifying these complex descriptions by writing operating system prototypes using a very high-level programming language that significantly relieves the burden of low-level and machine dependent details. The language used includes special constructs designed to facilitate clear and concise description of the mechanisms involved in multiprocessing systems: (1) a coroutine mechanism to implement concurrent processes, (2) a interprocess communication mechanism, (3) a real I/O facility that provides access to I/O system services. Using these intermediate-level constructs simplifies the problem of describing the high-level structure of operating systems significantly. These constructs are written in a high-level programming language, using several simple low-level primitives. They can be modified easily and new operations can be added at will. The main purpose of our high-level approach is to provide a tool for describing and designing operating systems. The high-level description can be used as a blueprint for writing the real operating system in a suitable lower-level implementation language. The thesis also describes an implementation of the suggested language that can be used to test the high-level description of an operating system and possibly also to simulate the real system to predict its potential performance. We test our descriptive tools by giving extended descriptions of two well-known operating systems using the proposed high-level language. Several basic design issues concerning these operating systems are then examined and the operating systems are compared in a manner that emphasizes the design issues that emerge. Some modifications of these systems, inspired by the high-level representation, are suggested.