Los sistemas operativos actuales explotan la idea de mover el código a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo. Lo usual es el de implantar la mayoría de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente) envía la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos, servicio a terminales o servicio a la memoria, cada parte es pequeña y controlable. Además como todos los servidores se ejecutan como procesos en modo usuario y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de archivos, éste puede fallar, pero esto no afectará en general a toda la máquina.
A la estructura cliente-servidor se ha llegado por tres necesidades:
- Integrar los sistemas informáticos "básicos" de la empresa (software financiero, de personalnóminas, administración de beneficios, etc., control de almacenes, marketingmailings, ventas), con los "de superficie" como tratamiento de texto, hojas de cálculo y pequeñas bases de datos en microordenador.
- Gestionar y usar una gran cantidad de bases de datos y servicios de la empresa por parte de un número importante de empleados en distintos departamentos.
- Interconectar una variedad de ordenadores grandes, minis y micros.
Ventajas: Flexibilidad. Cada proceso servidor se encarga de una función, siendo cada parte más pequeña y flexible y facilita el desarrollo y la depuración de cada proceso servidor.
Desventajas: Mayor sobrecarga al manejar servicios de los sistemas operativos monolíticos, la razón es que los componentes están en espacios de memoria distintos por lo que su activación requiere mayor tiempo.


