The problem of real-time systems scheduling spans a very broad spectrum of algorithms from simple uniprocessor systems to highly sophisticated multiprocessor scheduling algorithms. In this book we study the characteristics and constraints of real-time tasks which should be scheduled to be executed. Analysis methods and the concept of optimality criteria, which leads to design appropriate scheduling algorithms, will also be addressed. Then, we study real-time scheduling algorithms for uniprocessor systems, which can be divided into two major off-line and on-line.