Let us examine each option using standard deadlock theory concepts.
Option (A) – True:
Circular wait is one of the four necessary conditions for deadlock (the others being mutual exclusion, hold and wait, and no preemption).
In a circular wait, each process in a set is waiting for a resource held by another process in the same set, forming a cycle.
Without circular wait, deadlock cannot occur. Hence, this statement is true.
Option (B) – False:
A cycle in a wait-for graph does not necessarily imply deadlock when resources have multiple instances.
In such cases, even if a cycle exists, resources may still be allocated in a way that allows processes to proceed.
A cycle guarantees deadlock only when each resource type has a single instance. Therefore, this statement is false.
Option (C) – False:
An unsafe state does not automatically imply deadlock.
An unsafe state only indicates that the system cannot guarantee a safe execution sequence for all processes.
Deadlock may or may not occur depending on future resource requests and scheduling. Hence, this statement is false.
Option (D) – True:
If a resource-allocation graph contains only assignment edges (from resources to processes) and no request edges, then no process is waiting for a resource.
Since deadlock requires circular waiting involving request edges, deadlock cannot occur in this situation.
Thus, this statement is true.
Final Answer:
The correct options are (A) and (D).