The control algorithm hierarchy of motion control for over-actuated mechanical systems with a redundant set of effectors and actuators commonly includes three levels. First, a high-level motion control algorithm commands a vector of virtual control efforts (i.e. forces and moments) in order to meet the overall motion control objectives. Second, a control allocation algorithm coordinates the different effectors such that they together produce the desired virtual control efforts, if possible. Third, low-level control algorithms may be used to control each individual effector via its actuators. Control allocation offers the advantage of a modular design where the high-level motion control algorithm can be designed without detailed knowledge about the effectors and actuators. Important issues such as input saturation and rate constraints, actuator and effector fault tolerance, and meeting secondary objectives such as power efficiency and tear-and-wear minimization are handled within the control allocation algorithm. The objective of the present paper is to survey control allocation algorithms, motivated by the rapidly growing range of applications that have expanded from the aerospace and maritime industries, where control allocation has its roots, to automotive, mechatronics, and other industries. The survey classifies the different algorithms according to two main classes based on the use of linear or nonlinear models, respectively. The presence of physical constraints (e.g input saturation and rate constraints), operational constraints and secondary objectives makes optimization-based design a powerful approach. The simplest formulations allow explicit solutions to be computed using numerical linear algebra in combination with some logic and engineering solutions, while the more challenging formulations with nonlinear models or complex constraints and objectives call for iterative numerical optimization procedures. Experiences using the different methods in aerospace, maritime, automotive and other application areas are discussed. The paper ends with some perspectives on new applications and theoretical challenges.