What does Oracle use for handling a client connection (process or thread)? SQL Server 2016 and MySQL 5.7 use thread-based connection handling.

PostgreSQL 9.5 uses one operating system process for each individual connection. 

According to Oracle 12c documentation it's not clear if a thread-based or a process-based model is used. So how does Oracle handle user connections?
Oracle up to 11g used a thread based model on Windows and a process based model on Linux.

Quote from the manual: 


  A process is a mechanism in an operating system that can run a series of steps. The mechanism depends on the operating system. For example, on Linux an Oracle background process is a Linux process. On Windows, an Oracle background process is a thread of execution within a process


You can optionally enable so called "shared processes" where one process handles several client connections. Think of that as a kind of in-database connection pooling. On Windows this would mean a single thread handles multiple connections, on Linux this would mean a single process handles multiple connections.

Starting with 12c you can optionally enable the thread-based model for a Linux installation.

Quote from the manual: 


  In releases earlier than Oracle Database 12c, Oracle processes did not run as threads on UNIX and Linux systems. Starting in Oracle Database 12c, the multithreaded Oracle Database model enables Oracle processes to execute as operating system threads in separate address spaces