САмое простое - держать 1.прямой список - в дескрипторе задачи (ссылки на объекты синхронизации, заблокированные задачей) 2.инвертированный список - в ядре (ссылки на дескрипторы задач, владеющие объектом) поскольку система работает с задачами, а задачи - с объектами.
Обязательное условие - процедуры ядра для работы со списками д.б. обеспечивать атоммарность операции изменения списков.