SO - Clase 1
SO - Clase 1
SO - Clase 1
Unidad 1: Introducción
¿QUÉ ES UN SISTEMA OPERATIVO?:
Una computadora moderna consta de uno o más procesadores, una memoria principal, discos,
impresoras, un teclado, un ratón, una pantalla o monitor, interfaces de red y otros dispositivos de
entrada/salida. En general es un sistema complejo. Si todos los programadores de aplicaciones
tuvieran que comprender el funcionamiento de todas estas partes, no escribirían código alguno. Es
más: el trabajo de administrar todos estos componentes y utilizarlos de manera óptima es una tarea
muy desafiante. Por esta razón, las computadoras están equipadas con una capa de software
llamada sistema operativo, cuyo trabajo es proporcionar a los programas de usuario un modelo de
computadora mejor, más simple y pulcro, así como encargarse de la administración de todos los
recursos antes mencionados.
El programa con el que los usuarios generalmente interactúan se denomina shell, cuando está
basado en texto, y GUI (Graphical User Interface; Interfaz gráfica de usuario) cuando utiliza
elementos gráficos o iconos.
La figura 1, presenta un esquema general de los componentes principales que aquí se analizan. En la
parte inferior se muestra el hardware, que consiste en circuitos integrados (chips), tarjetas, discos,
un teclado, un monitor y objetos físicos similares. Por encima del hardware se encuentra el
software. La mayoría de las computadoras tienen dos modos de operación: modo kernel y modo
usuario. El sistema operativo es la pieza fundamental del software y se ejecuta en modo kernel
(también conocido como modo supervisor). En este modo, el sistema operativo tiene acceso
completo a todo el hardware y puede ejecutar cualquier instrucción que la máquina sea capaz de
ejecutar. El resto del software se ejecuta en modo usuario, en el cual sólo un subconjunto de las
instrucciones de máquina es permitido. En particular, las instrucciones que afectan el control de la
máquina o que se encargan de la E/S (entrada/salida) están prohibidas para los programas en modo
usuario.
La ubicación del sistema operativo se muestra en la figura 1. Se ejecuta directamente sobre el
hardware y proporciona la base para las demás aplicaciones de software. Una distinción importante
entre el sistema operativo y el software que se ejecuta en modo usuario es que, si a un usuario no le
gusta, por ejemplo, su lector de correo electrónico es libre de conseguir otro o incluso escribir el
propio si así lo desea; sin embargo, no es libre de escribir su propio manejador de interrupciones de
reloj, que forma parte del sistema operativo y está protegido por el hardware contra cualquier
intento de modificación por parte de los usuarios.
Los sistemas operativos difieren de los programas de usuario (es decir, de aplicación) en varias
cuestiones además del lugar en el que residen. En particular, son enormes, complejos y de larga
duración. El código fuente de un sistema operativo como Linux o Windows contiene cerca de cinco
millones de líneas de código.
Es difícil definir qué es un sistema operativo aparte de decir que es el software que se ejecuta en
modo kernel. Parte del problema es que los sistemas operativos realizan dos funciones básicas que
no están relacionadas: proporcionar a los programadores de aplicaciones, un conjunto abstracto de
recursos simples, en vez de los complejos conjuntos de hardware; y administrar estos recursos de
hardware.
Una de las principales tareas del sistema operativo es ocultar el hardware y presentar a los
programas (y a sus programadores) abstracciones agradables, elegantes, simples y consistentes con
las que puedan trabajar. Hay que recalcar que los verdaderos clientes del sistema operativo son los
programas de aplicación (a través de los programadores de aplicaciones, desde luego). Son los que
tratan directamente con el sistema operativo y sus abstracciones. En contraste, los usuarios finales
tienen que lidiar con las abstracciones que proporciona la interfaz de usuario, ya sea un shell de
línea de comandos o una interfaz gráfica.
Cuando una computadora (o red) tiene varios usuarios, la necesidad de administrar y proteger la
memoria, los dispositivos de E/S y otros recursos es cada vez mayor; de lo contrario, los usuarios
podrían interferir unos con otros.
Esta visión del sistema operativo sostiene que su tarea principal es llevar un registro de qué
programa está utilizando qué recursos, de otorgar las peticiones de recursos, de contabilizar su uso y
de mediar las peticiones en conflicto provenientes de distintos programas y usuarios.
La tarea de determinar cómo se multiplexa el recurso en el tiempo (quién sigue y durante cuánto
tiempo) es responsabilidad del sistema operativo.
El otro tipo de multiplexaje es en el espacio. En vez de que los clientes tomen turnos, cada uno
obtiene una parte del recurso.
Otro recurso que se multiplexa en espacio es el disco duro. En muchos sistemas, un solo disco puede
contener archivos de muchos usuarios al mismo tiempo. Asignar espacio en disco y llevar el registro
de quién está utilizando cuáles bloques de disco es una tarea típica de administración de recursos
común del sistema operativo.