Síntesis final
Material de estudio basado en la edición de 2014. Borrador pendiente de revisión editorial independiente.
Síntesis final del tema
Un sistema operativo resuelve dos necesidades complementarias: gestionar y proteger recursos compartidos, y presentar una máquina más sencilla de utilizar. Gestionar significa repartir CPU, memoria y dispositivos entre programas y usuarios; abstraer significa permitir operaciones como leer un fichero sin exigir conocer la geometría del disco o el control de sus cabezales. Una explicación completa debe incluir ambas funciones.
El núcleo se distingue de las herramientas que lo acompañan. Un shell, compilador o editor pertenece al software de sistema, pero puede ser sustituido y se ejecuta en modo usuario. El código del SO dispone de operaciones privilegiadas. Esta separación permite que los programas soliciten servicios sin asumir el control sin restricciones del hardware. Cuando se utiliza «SO» en sentido amplio, «kernel» identifica la capa más próxima al hardware.
La historia se entiende siguiendo los tiempos que se desperdician. Primero, programar mediante interruptores y conexiones consumía trabajo manual. Los lenguajes, traductores y cargadores simplificaron la preparación y ejecución. Los lotes agruparon trabajos para no repetir operaciones auxiliares; JCL permitió describir su secuencia y recursos. Pero automatizar la secuencia no eliminó la espera de la CPU durante la E/S.
El siguiente paso fue solapar actividades. Off-line utiliza equipos o dispositivos fuera de línea para preparar trabajos mientras otros se ejecutan. Buffering solapa cálculo y E/S del mismo trabajo. Spooling organiza E/S de distintos trabajos aprovechando el disco. Debes diferenciarlos por las actividades y trabajos implicados, en lugar de aprender tres nombres para una misma idea.
La multiprogramación mantiene varios programas compitiendo por los recursos: cuando uno pide E/S, otro puede utilizar la CPU. El grado de multiprogramación cuenta esos programas. El ejemplo del tema reduce de diez a seis unidades el tiempo de dos ejecuciones, pero es idealizado: las fases de cálculo y E/S reales no garantizan actividad constante de todos los recursos. La finalidad principal es aprovechar las esperas.
La interacción plantea otro problema: un programa con mucho cálculo puede retrasar a los demás. El tiempo compartido limita cada turno con un quantum. El programa abandona la CPU al terminar, pedir E/S o agotar su turno. Esta tercera causa distingue el mecanismo de la multiprogramación pura descrita en el tema y permite mejorar la respuesta percibida por varios usuarios.
Los entornos posteriores cambian las prioridades. En red se accede a recursos remotos con conocimiento de la máquina; en un sistema distribuido se busca transparencia de ubicación. En tiempo real importa responder dentro del plazo, no simplemente ejecutar rápido. Los sistemas empotrados se adaptan a una función concreta; los de bolsillo deben atender periféricos variados y cuidar la autonomía. Estas categorías se estudian con el contexto de la edición de 2014.
UNIX y sus variantes ilustran cómo la difusión y evolución del código generan una familia de sistemas y una necesidad de compatibilidad, abordada por POSIX. La evolución de MS-DOS/Windows relaciona las prestaciones del hardware con la protección y la estabilidad. GNU/Linux vuelve a mostrar la diferencia entre núcleo y entorno utilizable: una distribución reúne Linux con herramientas y aplicaciones, entre ellas las de GNU.
La visión externa culmina en los servicios: procesos, comunicación y sincronización, E/S, memoria, archivos, protecciones y tiempo. El programador los solicita mediante llamadas con parámetros, resultados y semántica. El tema llama API a su repertorio y compara interfaces UNIX y Win32 para mostrar que una finalidad parecida no garantiza una firma igual. El usuario final suele acceder mediante el shell u otra aplicación, que transforma sus órdenes en peticiones al sistema.
Comprobación final
- Explica una lectura de fichero desde las dos funciones del SO.
- Distingue núcleo, biblioteca, shell y aplicación.
- Relaciona lotes, solapamiento, multiprogramación y tiempo compartido con el problema que resuelve cada uno.
- Enumera las tres causas de cambio de programa en tiempo compartido.
- Compara red y distribuido, y justifica la prioridad del tiempo real.
- Recorre el camino usuario → aplicación o shell → llamada → servicio del SO.