A software implementation of an application watchdog, comprising a restart service
operating in the user mode and a watchdog driver operating in the kernel mode of
a computer operating system. The driver incorporates a system thread configured
to monitor a plurality of user applications operating in the user mode. The driver
provides a first IOCTL signal interface for communicating control signals between
the watchdog driver and one of the user applications and a second IOCTL signal
interface for communicating control signals between the watchdog driver and the
restart service. A communication interface exists for coordinating timer events
with the operating system scheduler. If the system thread does not receive a message
from one of said applications within an allotted period of time, the timer event
alerts the watchdog driver that the allotted time has elapsed and the watchdog
driver signals the restart service to restart that application.