El Sistema Operativo como Máquina Extendida
El sistema operativo como máquina extendida: abstracciones, controladores, archivos y la interfaz entre hardware y programas.
Tesis
Un sistema operativo es el software que corre en modo kernel y proporciona abstracciones limpias a los programas de aplicación, además de gestionar los recursos de hardware. Su diseño tiene una doble función: ofrecer un conjunto abstracto de recursos que simplifiquen la programación y gestionar de manera eficiente los recursos físicos de la computadora.
Desglose arquitectónico
Por qué el hardware es hostil a la programación
La arquitectura de bajo nivel es difícil de programar porque es primitiva y complicada, especialmente para operaciones de entrada/salida (I/O). Para facilitar esta interacción, el SO introduce controladores (disk drivers) que abstraen el hardware y permiten operaciones como leer y escribir bloques sin conocer los detalles físicos.
La capa de abstracción de archivos
Sobre esa capa, el SO provee abstracciones aún más útiles, como el concepto de archivo. Los programas pueden trabajar con fotos, documentos o canciones sin saber nada sobre el tipo de disco o el protocolo utilizado. Esta capacidad de "convertir lo horrible en hermoso" — una interfaz de hardware inconsistente en una interfaz de abstracciones elegante — es la característica clave del diseño de SO.
El cliente real del SO
El cliente principal del SO no es el usuario final, sino los programas de aplicación que usan sus servicios. Los usuarios finales interactúan con una interfaz (CLI o GUI), que es una capa adicional sobre las abstracciones del sistema operativo — no parte de él.
Q&A de referencia
- ¿Qué es un sistema operativo? Software que corre en modo kernel, proporciona abstracciones limpias a los programas y gestiona los recursos de hardware.
- ¿Qué dos funciones esenciales realiza? Proveer un conjunto abstracto de recursos a los programas y gestionar los recursos de hardware.
- ¿Por qué la arquitectura de bajo nivel es difícil de programar? Es primitiva, complicada y especialmente difícil para operaciones de I/O.
- ¿Qué pieza de software controla el hardware del disco? El controlador de disco (disk driver).
- ¿Qué abstracción proporciona el SO para facilitar el uso de los discos? Archivos.
- ¿Por qué son importantes las abstracciones? Convierten tareas imposibles en tareas manejables mediante su definición e implementación.
- ¿Qué ejemplos comunes de archivos comprende cualquier usuario? Fotos digitales, correos guardados, canciones o páginas web.
- ¿Cuál es una función principal del SO respecto al hardware? Ocultar su complejidad y ofrecer interfaces limpias, elegantes y consistentes.
- ¿Por qué los dispositivos de hardware presentan interfaces difíciles e inconsistentes? Por compatibilidad con hardware antiguo, reducción de costos o desinterés de los diseñadores hacia los programadores.
- ¿Qué convierte el SO (Fig. 1-2)? Una interfaz de hardware horrible en una interfaz de abstracciones hermosa para los programas.
- ¿Quiénes son los verdaderos clientes del SO? Los programas de aplicación (y los programadores que los escriben).
- ¿Con qué interactúan los usuarios finales? Con la interfaz de usuario — línea de comandos o GUI.
- ¿Un usuario de Linux con Gnome/KDE ve el mismo conjunto de abstracciones que uno usando X Window directamente? Sí, las abstracciones del SO son las mismas.
- ¿A qué se dedica el estudio de los SO? Al estudio de las abstracciones ofrecidas a los programas de aplicación.