{
    "api": "YAML JSON TOON Database",
    "version": "1.0.0",
    "format": "json",
    "dataset": {
        "slug": "deadlock-handling",
        "title": "Deadlock Handling",
        "description": "Conditions and strategies for dealing with deadlocks.",
        "category": "Operating Systems",
        "category_slug": "operating-systems",
        "tags": "os,deadlock,concurrency",
        "view_count": 0
    },
    "data": [
        {
            "concept": "Mutual Exclusion",
            "description": "At least one resource must be non-sharable."
        },
        {
            "concept": "Hold and Wait",
            "description": "A process holds resources while waiting for additional ones."
        },
        {
            "concept": "No Preemption",
            "description": "Resources cannot be forcibly taken from a process."
        },
        {
            "concept": "Circular Wait",
            "description": "A circular chain of processes each waiting for a resource held by the next."
        },
        {
            "concept": "Banker's Algorithm",
            "description": "Deadlock avoidance using safety checks on resource allocation."
        },
        {
            "concept": "Deadlock Prevention",
            "description": "Design the system so at least one necessary condition cannot hold."
        },
        {
            "concept": "Deadlock Detection",
            "description": "Periodically check the resource allocation graph for cycles."
        }
    ]
}