This paper describes a Data Acquisition System which has been specifically designed to take advantage of modern operating systems. It is modular, structured as a set of independent tasks communicating via a shared data area. The design is based on the concept of circular buffers with associated data producer and (parallel) consumer tasks. By using privileged tasks in time critical areas, a fast and efficient system has been obtained: interrupt latency of less than 100 microseconds, and data transfer speeds essentially limited by hardware (CAMAC DMA or magnetic tape recording). The tasks may be distributed over different processors. For example, 16/32 bit multi-processors with a shared multi-port memory are used to implement systems where powerful data reduction and/or monitoring tasks are required. The system is in use at over 25 high energy and nuclear physics experiments at CERN and in other European laboratories.