El hardware y software que se utilizan para proporcionar las aplicaciones de usuario puede verse como una estructura jerárquica como se muestra en la figura.
El usuario de las aplicaciones, el usuario, no tiene conocimiento de los detalles del hardware existente y necesario para hacer funcionar la aplicación ni de las librerías necesarias para ello, por lo que ve al sistema como un conjunto de aplicaciones.
- El programador utiliza librerías del sistema operativo para crear las aplicaciones de usuario.
- Estas librerías ofrecen una abstracción del hardware al programador, si este tuviera que programar directamente el hardware los programas serían muy complejos y difíciles.
- Estas librerías o utilidades las ofrece el Sistema Operativo
- Implementan rutinas necesarias en todo programa como gestión de ficheros y control de dispositivos I/O.
- El conjunto más importante de librerías es lo que compone el S.O.
- El S.O. enmascara vía estas librerías los detalles del hardware proporcionando un interface de acceso al mismo.
El Sistema Operativo ofrece además servicios para:
Ordenes de usuario: Permite al usuario emitir ordenes mediante un Shell (gráfico o de consola) para realizar distintas funciones. El Shell espera la orden, la analiza, la ejecuta y vuelve a esperar otra orden. Ofrece una variedad de Shells.
Archivos de comandos: Permite la programación usando los comandos del sistema mediante diversos lenguajes de scripting. Ofrece Scripts ya disponibles y permite al usuario crear los suyos.
Planificación de la ejecución: Permite la ejecución programada de comandos y scripts.
Desarrollo de programas: Editores, debuggers. Aplicaciones para desarrolladores.
Ejecución de programas: Para ejecutar un programa el sistema operativo hace por nosotros diversas tareas como: carga de instrucciones y datos a memoria principal, inicialización de dispositivos I/O, inicialización de otros recursos…
Acceso a dispositivos I/O: Cada dispositivo requiere de su conjunto de instrucciones, los drivers que proporciona el S.O. enmascaran dichas instrucciones ofreciendo un interfaz común.
Acceso controlado a ficheros: El sistema operativo enmascara la estructura interna del fichero y la ubicación de sus datos. Además proporciona seguridad y mecanismos para compartir.
Acceso al sistema: El S.O. controla el acceso al sistema en sí y a sus recursos protegiendo los mismos de accesos no autorizados y resolviendo conflictos de asignación.
Detección de errores y respuesta: Debe gestionar y dar respuesta a los errores del hardware (memoria, I/O, …) del software (división por cero, accesos prohibidos a memoria, …). La respuesta puede ir desde matar a el/los procesos intervinientes, reintentar la operación o simplemente reportar el error.
Contabilidad: Recoje estadísticas de uso de los recursos (hardware y software) y monitoriza parámetros como tiempos de respuesta, tiempos de retorno, utilización de la CPU, etc.. Esta información es útil para anticiparse y mejorar la eficiencia en la ejecución y asignación de recursos. También se puede usar para facturar por los servicios consumidos por el usuario.
ISA (Instruction Set Arquitecture): Define el repertorio de instrucciones del hardware. Es la frontera entre hardware y software. Para los programas de aplicación y utilidades sólo un conjunto de estas instrucciones (User ISA) está disponible. El S.O. accede adicionalmente al System ISA para gestionar recursos y hardware.
ABI (Application Binary Interface): Estandariza la portabilidad de programas definiendo una interfaz de llamadas con el User ISA.
API (Application Program Interface): Da acceso a las aplicaciones y utilidades a los recursos del hardware via al ABI junto con librerías de alto nivel. Cualquier llamada al sistema es realizada mediante estas librerías. Los sistemas que comparten el API pueden recompilar el software de otro sistema.