CP/M like MS-DOS is only an operating system acording to the loosest definition of such. It basically consists of a set of routines for doing basic I/O functions on the machines hardware (to add a certain degree of software portability across differing hardware) and a set of programs for loading and executing software, and to provide an interface to the user. Many of the characteristics of CP/M will seem familiar to the user of MS-DOS, this is because MS-DOS started out as a stripped down clone of CP/M, in fact Novell DOS 7 is really the latest incarnation of CP/M-86. CP/M was originally written for use on machines built around the Intel 8080 microprocessor, but due to its great popularity four major incarnations came into being.
Unlike MS-DOS the vasy majority of CP/M software maintained portability across differing platforms. This meant that the constraints on the systems were the actual ones built into the specific hardware, rather than those of the original hardware i.e. the 640k ram limit in MS-DOS machines.