The accelerator control system has been developed with the primary target being the LHC machine. The approach used was pragmatic with the overall goal to design and develop a modular system, flexible and generic enough to be extended to the other accelerators at CERN. In the front-ends, the structure and behavior of equipment software was formalised, and an object-oriented programming framework (FESA) was developed based on the resulting formal model. This enables equipment specialists to capture their design in a standard form before implementing the specifics of their system. A new Controls Middleware (CMW) package for the "LHC era" was developed to offer publish-subscribe facilities in addition to synchronous equipment access and a better connectivity to industrial systems, such as PLCs and SCADA developments. The FESA framework using CMW communicates with the core controls software, which is made of a well-defined normalized data model, a set of software modules based on the model and an architecture description that provides guidance on the way to develop and deploy the complete system. High precision timing system coordinates the work of thousands of equipments. A set of high level JAVA applications, using the services offered by the core controls software, are running in the CERN Control Center. The controls architecture supports both 2 and 3 tier software developments. Since LHC operates with unprecedented energies a lot of effort were put into the development of a solid and thorough machine protection system. The LHC control system was progressively and thoroughly tested and validated during the LHC dry runs, machine development periods and commissioning phases, prior to its deployment for the operation of LHC and it is now extended to cover the LHC Injectors.