# US 5,708,808 A · Method and apparatus for concurrency with critical regions

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 5,708,808 A
- Document ID: US5708808A
- Status: Granted
- Kind: A
- Application number: 08/607,377
- Filed: 1996-02-27
- Granted: 1998-01-13
- Earliest claimed: 1996-02-27
- Inventors: Horio Shoichi
- Web page: https://patentgrep.com/patent/US5708808A

## CPC

- G06F 13/105: {where the program performs an input/output emulation function}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Allows concurrency for user program and device operations for user program's device request (10), by returning immediately to user program (16) when device becomes busy (12), switching back to device driver (12) when the device becomes idle (19), and after device driver postprocessing, continue user program where interrupted (19). This disclosure discusses various problems including synchronization associated to above method.

## Claims

### Claim 1

A method for concurrency on a digital computer having a memory, devices, driver softwares, and user softwares, wherein
each of said devices having busy period and idle period in turn,
each of said user softwares having a user context and means for issuing a request to a driver software selected from said driver softwares,
said request having
a user context save area,
a driver context save area, and
a driver context area in said memory, and
a request identifier that identifies said request,
said driver software having critical regions, and
each of said critical regions having a request identifier storage area for storing predetermined number of said request identifier in memory,
comprising steps of
(a)
receiving said request,
saving said user context into said user context save area,
making a driver context from said driver context area,
driving said devices, and
restoring said user context from said user context save area,
(b)
detecting said start of busy period of said devices,
saving said driver context into said driver context save area, and
restoring said user context from said user context save area,
(c)
detecting said start of idle period of said devices,
saving said user context into said user context save area, and
restoring said driver context from said driver context save area,
(d)
detecting said start of each of critical regions,
adding said request identifier to said request identifier storage area, and
detecting said area having more than one member,
saving said driver context into said driver context save area, and
restoring said user context from said user context save area, and
(e)
detecting said end of each of critical regions,
removing said request identifier from said request identifier storage area, and
detecting said area having at least one member,
selecting a stored request identifier from said request identifier storage area,
saving said user context into the user context save area of the request identified by said stored request identifier, and
restoring said driver context from the driver context save area of the request identified by said stored request identifier,
whereby said user softwares operating concurrently with said devices.

### Claim 2

Apparatus on a digital computer having a memory, devices, driver softwares, and user softwares, wherein
each of said devices having busy period and idle period in turn,
each of said user softwares having a user context and means for issuing a request to a driver software selected from said driver softwares,
said request having
a user context save area,
a driver context save area, and
a driver context area in said memory, and
a request identifier that identifies said request,
said driver software having critical regions, and
each of said critical regions having a request identifier storage area for storing predetermined number of said request identifier in memory,
comprising means for
(a)
receiving said request,
saving said user context into said user context save area,
making a driver context from said driver context area,
driving said devices, and
restoring said user context from said user context save area,
(b)
detecting said start of busy period of said devices,
saving said driver context into said driver context save area, and
restoring said user context from said user context save area,
(c)
detecting said start of idle period of said devices,
saving said user context into said user context save area, and
restoring said driver context from said driver context save area,
(d)
detecting said start of each of critical regions,
adding said request identifier to said request identifier storage area, and
detecting said area having more than one member,
saving said driver context into said driver context save area, and
restoring said user context from said user context save area, and
(e)
detecting said end of each of critical regions,
removing said request identifier from said request identifier storage area, and
detecting said area having at least one member,
selecting a stored request identifier from said request identifier storage area,
saving said user context into the user context save area of the request identified by said stored request identifier, and
restoring said driver context from the driver context save area of the request identified by said stored request identifier,
whereby said user softwares operating concurrently with said devices.
