Deferral
In the mainframe context, **deferral** refers to the act of postponing an operation, task, or resource request until a later time or until specific conditions are met. This is often a mechanism to manage resource contention, ensure data integrity, or optimize system throughput by avoiding immediate processing when resources are unavailable or an operation cannot complete synchronously. In the context of z/OS and transaction processing systems like CICS, deferral refers to the temporary suspension or postponement of an active task or transaction's execution. This occurs until a specific condition is met, a required resource becomes available, or an external event completes, allowing the system to efficiently manage resources and prevent busy-waiting.
Key Characteristics
-
- Conditional Postponement: Operations are typically deferred based on the unavailability of a required resource (e.g., a locked record, a full buffer), the completion of another task, or explicit programmatic control.
- Resource Management: Deferral is a fundamental technique for managing shared resources, preventing deadlocks, and allowing other tasks to proceed while a blocked task waits.
- Implicit or Explicit: Deferral can be implicit (e.g., an
ENQrequest waiting for a resource to beDEQed) or explicit (e.g., a CICSWAITcommand or a batch job being held). - Event-Driven Resumption: Deferred tasks are typically resumed when the blocking condition is resolved or the awaited event occurs, often managed by the operating system (z/OS) or a subsystem (CICS, IMS).
- Impact on Throughput: While necessary for integrity, excessive deferrals can indicate contention issues and negatively impact transaction response times and overall system throughput.
Use Cases
-
- CICS Transaction Management: A CICS transaction might be deferred (suspended) if it attempts to access a record currently locked by another transaction, waiting for the lock to be released. This is often handled by CICS's dispatching mechanism.
- Resource Contention (ENQ/DEQ): A batch job or started task attempting to obtain an exclusive
ENQon a dataset or resource that is currently held by another job will be deferred until the resource isDEQed. - Asynchronous I/O Operations: When an application initiates an I/O operation, the program execution might be deferred (waits) until the I/O completes, though modern systems often allow for asynchronous I/O where the program continues and is notified later.
- Message Queueing: Messages placed on an IBM MQ queue might be deferred for processing by a consumer application until system load permits, or until a specific time, ensuring orderly and resilient message delivery.
- Batch Job Scheduling: A job submitted to JES might be deferred from execution (held in the job queue) if its
CLASSorPRIORITYdictates, or if it's waiting for predecessor jobs to complete or specific resources to become available.
Related Concepts
Deferral is closely related to concurrency control mechanisms like locking (e.g., DB2 locks, IMS locks, CICS file locks) and serialization (e.g., z/OS ENQ/DEQ services), as these mechanisms often lead to deferral when contention occurs. It is a core aspect of multitasking and multiprogramming, allowing the operating system to manage multiple active tasks by suspending some while others execute. Deferral also ties into transaction management in environments like CICS and IMS, where transactions are suspended and resumed to maintain atomicity and isolation.
- Minimize Contention: Design applications and database schemas to reduce contention