Важной задачей операционной системы является распределение ресурсов машины между процессами. Здесь мы используем термин «ресурсы» в широком смысле, включая в него и периферийные устройства машины, и средства внутри машины. Программа управления файлами распределяет доступ к файлам и пространство на диске для создания новых файлов; модуль управления памятью распределяет пространство памяти; планировщик распределяет пространство в таблице процессов; диспетчер распределяет кванты времени. На первый взгляд задача распределения ресурсов кажется простой. Однако существует множество трудностей, возникновение которых может вызвать неправильную работу системы. Помните, что машина не думает сама, она только следует указаниям. Поэтому для того чтобы создать надежную операционную систему, мы должны разрабатывать алгоритмы, которые учитывают все возможные проблемы, какими бы несущественными они ни казались.