On Microsoft Windows, the kernel of the database instance runs as an individual operating system process. On UNIX, the kernel uses two operating system processes: upon starting, the database system generates a watchdog process which then directly starts the actual kernel. See Overview of Processes and Overview of Services.
The kernel executes all of the central database tasks of the database instance. These include establishing connections, reading and writing data (I/O), monitoring the database instance and processing SQL requests (user tasks). Every user who logs on to the database is assigned a user task. The user tasks create the main load for the processor. See Overview of Tasks and Overview of Task States.
For tasks that are to be executed in parallel, the kernel generates operating system threads.
On Linux systems without NPTL (Native Posix Thread Library), each thread is simulated by a clone process.
Threads and Tasks of a Database Instance
The database system differentiates between two types of threads:
? User Kernel Threads (UKT)
UKTs process client requests. They are the threads that use the most processor time. A database instance generally has several UKTs.
In general, several tasks share a UKT. The database system controls the sequence in which the tasks run in a UKT, and can therefore avoid conflicts in access to resources (Task Switching). To distribute tasks optimally to the UKTs, the database system performs internal load balancing.
? Special Threads
Special threads provide services for the user kernel threads. In special threads, the database system executes tasks whose duration cannot be predicted, such as operating system calls for reading and writing to volumes and connection requests from clients. The database system processes special threads asynchronously to the user kernel threads. See Overview of Special Threads.