За Википедия ,
Состояние (как в приведенном выше примере) считается безопасным, если все процессы могут завершиться (завершиться). Поскольку система не может знать, когда процесс завершится или сколько ресурсов будет запрошено к тому времени, система предполагает, что все процессы в конечном итоге попытаются получить свои заявленные максимальные ресурсы и вскоре завершатся. В большинстве случаев это разумное предположение, поскольку система не особенно заботится о продолжительности каждого процесса (по крайней мере, с точки зрения предотвращения тупиков). Кроме того, если процесс завершается без получения максимальных ресурсов, это облегчает работу системы.
Процесс может быть запущен до завершения, когда доступно число каждого типа ресурсов, которое ему необходимо, между собой и системой. Если процессу требуется 8 единиц данного ресурса и он выделил 5 единиц, он может завершиться до завершения, если есть еще как минимум 3 единицы, которые он может выделить.
В вашем примере система управляет одним ресурсом с 10 доступными единицами. Запущенные процессы уже выделили 8 (1 + 1 + 2 + 4) единиц, поэтому осталось 2 единицы. Сумма, которую должен завершить любой процесс, - это максимум меньше того, что он уже выделил, поэтому в начале A нужно еще 5 (6-1), B нужно еще 4 (5-1), C нужно еще 2 (4- 2), а D нужно еще 3 (7-4). Доступно 2 варианта, поэтому процесс C может быть запущен до завершения, что освобождает 2 блока (оставляя 4 в наличии). В этот момент можно запустить B или D (предположим, D). После завершения D будет доступно 8 единиц, после чего можно запустить A или B (предположим, A). После завершения A будет доступно 9 единиц, а затем можно будет запустить B, что оставит все 10 единиц для дальнейшей работы. Поскольку мы можем выбрать порядок процессов, который позволит запускать все процессы, состояние считается «безопасным».