El software de una máquina esta dividido en dos categorías muy amplias: software de aplicación y software del sistema.
El software de aplicación está compuesto por todos los programas que realizan tareas relacionadas con al utilización concreta de la máquina.
El software del sistema realiza las tareas que son comunes en general a todas las computadoras. En un cierto sentido, proporciona la infraestructura que necesita el software de aplicación, de forma bastante similar a como la infraestructura de un país proporciona la base de la que los ciudadanos dependen para llevar su propio estilo de vida individual.
Dentro de la clase del software del sistema hay dos categorías: una es el propio sistema operativo y la otra está compuesta por unidades de software que se conocen colectivamente como software de utilidad. La mayor parte del software de utilidad de una instalación esta compuesto por programas que se emplean para realizar actividades fundamentales para esa computadora, pero que no incluyen el sistema operativo. En cierto sentido amplía las capacidades del sistema operativo.
Clasificación de software
La parte de un sistema operativo que se encarga de gestionar la comunicación con los usuarios se suele denominar interfaz de usuario. Las antiguas interfaces de usuario, conocida como shell, se comunicaban con los usuarios mediante mensajes de texto, utilizando un teclado y la pantalla de un monitor. Los sistemas más modernos realizan esta tarea por medio de una interfaz gráfica de usuario (GUI, Grapgical User Interface) en al que los objetos que hay que manipular se representan de manera pictórica en la pantalla mediante íconos.
La interfaz de usuario actúa como intermediario entre los usuarios y el núcleo del sistema operativo
Un componente importante de las interfaces gráficas de usuario actuales es el administrador de ventanas, que asignan bloques de espacio en la pantalla, denominados ventanas y controla qué aplicación está asociada con cada ventana. Cuando una aplicación desea mostrar algo en la pantalla, se lo notifica al administrador de ventanas y este coloca la imagen deseada en la ventana asignada a dicha aplicación.
Por contraste con al interfaz de usuario de un sistema operativo, la parte interna de ese sistema se denomina núcleo. El núcleo de un sistema operativo contiene aquellos componentes software que realizan las funciones más básicas requeridas por el hardware de la computadora. Una de dichas unidades es administrador de archivos, cuya tarea consiste en coordinar el uso de los dispositivos de almacenamiento masivo de la máquina. El administrador de archivos mantiene un registro de todos los archivos que se encuentran en el almacenamiento masivo.
La mayoría de los administradores de archivos permiten agrupar los archivos en una serie de conjuntos; cada uno de estos conjuntos recibe el nombre de directorio o carpeta. Esto permite al usuario organizar sus archivos de acuerdo con el propósito que tengan, colocando los archivos relacionados en un mismo directorio.
Una cadena de directorios incluidos dentro de otros directorios se denomina ruta de directorio.
Cualquier acceso a un archivo por parte de otras unidades software debe ser autorizado por el administrador de archivos.
Otro componente del núcleo es un conjunto de controladores de dispositivo, que son las unidades software que se comunican con tarjetas controladoras para llevar a cabo operaciones con los dispositivos periféricos conectados a la máquina.
Además el gestor de la memoria se encarga de la tarea de coordinar el uso de la memoria principal de la máquina. El gestor de memoria debe localizar y asignar espacio de memoria para los distintos programas y asegurarse de que las acciones que cada programa lleva a cabo están restringidas al espacio que se le ha asignado, a medida que van variando las necesidades de los diferentes programas, el gestor de la memoria debe controlas qué áreas de memoria dejan de estar ocupadas.
El trabajo del gestor de la memoria se complica más aún cuando el espacio total de memoria principal requerido por los distintos programas es superior al espacio disponible realmente en la computadora. En este caso, el gestor de memoria puede crear la ilusión de que existe espacio de memoria adicional, intercambiando los programas y los datos una y otra vez entre la memoria principal y el almacenamiento masivo (técnica de paginación o paging). Los datos se dividen en unidades de tamaño uniforme denominadas páginas, que suelen tener unos pocos KB de tamaño. Entonces, el gestor de la memoria mueve estas páginas entre la memoria principal y el almacenamiento masivo según va siendo necesario, asegurándose de que siempre estén presentes en los GB de memoria principal las páginas que verdaderamente se necesitan en cada momento concreto. El resultado es que la computadora es capaz de funcionar como si tuviera realmente más GB de memoria principal, denominado memoria virtual.
Otros dos componentes adicionales dentro del núcleo de un sistema operativo son el planificador y el despachador. En un sistema de multiprogramación, el planificador determina qué actividades son las que pueden ejecutarse, mientras que el despachador controla la asignación de tiempo a esas actividades.
El inicio del sistema operativo se lleva a cabo mediante un procedimiento conocido como proceso de arranque (boot stapping o booting) que es realizado por la computadora cada vez que se enciende. Es este procedimiento el que transfiere el sistema operativo desde el almacenamiento masivo a la memoria principal.
Un procesador está diseñado para que su contador de programa comience en una dirección concreta predeterminada cada vez que se inicia el procesador. En esta ubicación donde el procesador espera encontrar el inicio del programa que hay que ejecutar, por tanto, todo lo que necesitamos es almacenar el sistema operativo en esa ubicación. Necesitamos que esté presente un programa en la memoria principal cuando enciende la computadora por primera vez, pero la memoria volátil de la memoria se borra cada vez que se apaga la máquina. Para resolver este dilema, una pequeña parte de la memoria principal de la computadora, precisamente esa parte donde el procesador espera encontrar su programa inicial, se construye con celdas especiales de memoria no volátil, conocida como memoria de solo lectura (ROM, Read-Only Memory) porque su contenido puede leerse pero no modificarse.
En una computadora de propósito general, la ROM de la máquina almacena de forma permanente un programa denominado cargador de arranque (boot loader), que se ejecuta inicialmente cuando la máquina se enciende. Las instrucciones del cargador de arranque hacen que el procesador transfiera el sistema operativo desde una ubicación predeterminada hasta el área volátil de la memoria principal.
El proceso global de ejecución del cargador de arranque y por tanto de inicio del sistema operativo se denomina arranque de la computadora.
Procesa de arranque
Aunque es posible actualizar sistemas operativos y cargadores de arranque almacenados en ROM (actualización de firmware), los límites tecnológicos hacen que el almacenamiento masivo sea la opción más común en los sistemas de computadora más tradicionales.