Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COMUNICACIÓN II.
SISTEMAS OPERATIVOS.
Y claro está, puede verse al mundo en general, fuera del entorno del cómputo, como una serie
de modelos interactuantes. Abstracción Los programas no deben tener que preocuparse de los
detalles de acceso a hardware, o de la configuración particular de una computadora. El sistema
operativo se encarga de proporcionar una serie de abstracciones para que los programadores
puedan enfocarse en resolver las necesidades particulares de sus usuarios. Un ejemplo de tales
abstracciones es que la información está organizada en archivos y directorios.
Del mismo modo, la computadora central guardaba sus resultados en cinta para que equipos
especializados la leyeran e imprimieran para el usuario solicitante.
La programación multitareas o los sistemas multiprogramados buscaban maximizar el
tiempo de uso efectivo del procesador ejecutando varios procesos al mismo tiempo. El
hardware requerido cambió fuertemente. Memoria, presente en todas las
computadoras de uso genérico desde los años noventa. El modo de interactuar con las
computadoras se modificó drásticamente durante los años sesenta, al extenderse la
multitarea para convertirse en sistemas interactivos y multiusuarios, en buena medida
diferenciados de los anteriores por la aparición de las terminales.
En primer término, la tarea de programación y depuración del código se simplificó
fuertemente al poder hacer el programador directamente cambios y someter el
programa a la ejecución inmediata. Un cambio fundamental entre el modelo de
multiprogramación y de tiempo compartido es el tipo de control sobre la multitarea.
Multitarea cooperativa o no apropiativa. CPU hasta que éste hacía una llamada al
sistema.
Un cálculo largo no era interrumpido por el sistema operativo, en consecuencia, un
error de programador podía congelar la computadora completa. Multitarea preventiva
o apropiativa. En los sistemas de tiempo compartido, el reloj del sistema interrumpe
periódicamente a los diversos procesos, transfiriendo forzosamente el control
nuevamente al sistema operativo. Éste puede entonces elegir otro proceso para
continuar la ejecución.
La PC de IBM fue la primera arquitectura de computadoras personales en desarrollar
una amplia familia de clones, computadoras compatibles diseñadas para trabajar con
el mismo sistema operativo, y que eventualmente capturaron casi 100% del mercado.
Prácticamente todas las computadoras de escritorio y portátiles en el mercado hoy
derivan de la arquitectura de la IBM PC. Ante las aplicaciones, el sistema operativo
ofrecía la ya conocida serie de interfaces y abstracciones para administrar los archivos
y la entrada/salida a través de sus puertos. Cabe destacar que, particularmente en sus
primeros años, muchos programas se ejecutaban directamente sobre el hardware,
arrancando desde el BIOS y sin emplear el sistema.
Hacia mediados de los ochenta comenzaron a aparecer computadoras con interfaces
usuario gráficas basadas en el paradigma WIMP , que permitían la interacción con
varios programas al mismo tiempo. Y si bien los entornos que más éxito tuvieron no
implementaban multitarea real, sí hubo desde el principio sistemas como la
Commodore Amiga o la Atari ST que hacían un multitasking apropiativo verdadero.
Microsoft Windows se fue haciendo prevalente hasta ser la norma. Windows pasó de
ser un sistema meramente de aplicaciones propias y que operaba únicamente por
reemplazo de aplicación activa a ser un sistema de multitarea cooperativa y, finalmente
un sistema que requería protección en hardware e implementaba multitarea
apropiativa. Y otro importante jugador que entró en escena durante los años noventa
fue el software libre, por medio de varias implementaciones distintas de sistemas tipo
Unix, principalmente, Linux y los *BSD . Estos sistemas implementaron,
colaborativamente y bajo un esquema de desarrollo geográficamente distribuido,
software compatible tanto con las PC como con el que se ejecutaba en las estaciones
de trabajo a gran escala, con alta confiabilidad, y cerrando por fin la divergencia del
árbol del desarrollo de la computación en fierros grandes y fierros chicos.
Hoy en día, la arquitectura derivada de Intel es el claro ganador de este proceso de 35
años, habiendo conquistado casi la totalidad de los casos de uso, incluso las máquinas
Apple.
Multitarea.
Consumo eléctrico.
Entorno cambiante
Un aspecto frecuente de estos programas es que engañan al usuario presentándose como código
legítimo, y si éste reacciona como el código malicioso busca, le permitirá la ejecución en el sistema
con sus privilegios. La complejidad del tema de los sistemas operativos requiere que se haga de una
forma modular. En este texto no se busca enseñar cómo se usa un determinado sistema
operativo, ni siquiera comparar el uso de uno con otro. En el nivel que se estudiará, un sistema
operativo es más bien un gran programa, que ejecuta otros programas y les provee un conjunto de
interfaces para que puedan aprovechar los recursos de cómputo.
Y si bien no se puede marcar una línea clara a rajatabla que indique en qué clasificación cae cada
sistema, no es difícil encontrar líneas base. Microkernel El núcleo del sistema operativo se
mantiene en el mínimo posible de funcionalidad, descargando en procesos especiales sin privilegios
las tareas que implementan el acceso a dispositivos y las diversas políticas de uso del sistema. La
principal ventaja de diseñar un sistema siguiendo un esquema monolítico es la simplificación de
una gran cantidad de mecanismos de comunicación, que lleva a una mayor velocidad de
ejecución. Además, al manejarse la comunicación directa como paso de estructuras en memoria, el
mayor acoplamiento permite más flexibilidad al adecuarse para nuevos requisitos.
Esta es la encargada de ejecutar tanto los programas del usuario como el sistema operativo en sí
mismo. Atender las interrupciones y excepciones Como se verá más adelante, la unidad de
procesamiento puede encontrar una situación que no puede resolver por sí misma , ante lo cual le
pasa el control al sistema operativo para que éste trate o resuelva la situación. Las computadoras
que siguen la arquitectura von Neumann, esto es, prácticamente la totalidad hoy en día,1
podrían resumir su operación general a alimentar a una unidad de proceso con los
datos e instrucciones
almacenados en memoria, que pueden incluir llamadas a servicio originados en medios
externos. La arquitectura von Neumann fue planteada, obviamente, sin considerar la posterior
diferencia entre la velocidad que adquiriría el CPU y la memoria.
1977, John Backus presentó al recibir el premio Turing un artículo describiendo el cuello de botella
de von Neumann. Aproximadamente un factor de 50 para la tecnología en un nivel costo-beneficio
suficiente para usarse como memoria primaria. Una respuesta parcial a este problema es la
creación de una jerarquía de almacenamiento, yendo de una pequeña área de memoria mucho
más cara pero extremadamente rápida y hasta un gran espacio de memoria muy
económica, aunque mucho más lenta, como lo ilustran la figura 2.1 y el cuadro 2.1. En particular, la
relación entre las capas superiores está administrada por hardware especializado de modo que su
existencia resulta transparente al programador.
Algunos argumentarán que muchas de las computadoras en uso hoy en día siguen la arquitectura
Harvard modificada, dado que empleando distintos bancos de memoria caché, un procesador
puede, tanto referirse a la siguiente instrucción, como iniciar una transferencia de memoria
primaria. Como se verá, el sistema operativo es el encargado de mantener la información
almacenada en todos estos tipos de memoria de forma consistente, y de realizar las transferencias
entre unas y otras.
Unidad de procesamiento.
Es la parte fundamental de todo sistema de cómputo. Esta es la encargada de ejecutar tanto los
programas del usuario como el sistema operativo en sí mismo. Atender las interrupciones y
excepciones Como se verá más adelante, la unidad de procesamiento puede encontrar una
situación que no puede resolver por sí misma , ante lo cual le pasa el control al sistema operativo
para que éste trate o resuelva la situación. Las computadoras que siguen la arquitectura von
Neumann, esto es, prácticamente la totalidad hoy en día,1 podrían resumir su operación general a
alimentar a una unidad de proceso con los datos e instrucciones almacenados en memoria, que
pueden incluir llamadas a servicio originados en medios externos.
Registros.
La memoria más rápida de la computadora son los registros, ubicados en cada uno de los
núcleos de cada CPU. Las arquitecturas tipo RISC (Reduced Instruction Set Computer) sólo
permiten la ejecución de instrucciones entre registros (excepto, claro, las de carga y
almacenamiento a memoria primaria).
Las terminales.
Son dispositivos electrónicos utilizados para ingresar datos y
emitir resultados dentro de un sistema de cómputo. Las primeras
terminales, también llamadas teletipos, utilizaban tarjetas
perforadas e impresiones en papel. Debido a su limitada
velocidad e imposibilidad de “editar” el papel ya impreso, éstas
fueron cediendo terreno ante la entrada, a principios de los
setenta, de las terminales de texto con pantalla de video y
teclado.
Dispositivos de almacenamiento.
El almacenamiento en memoria primaria es volátil, esto es, se
pierde al interrumpirse el suministro eléctrico. Esto no era muy
importante en la época definitoria de los conceptos que se
presentan en esta sección, dado que el tiempo total de vida de un
conjunto de datos en almacenamiento bajo el control 50 CAPÍTULO
2. RELACIÓN CON EL HARDWARE del procesador iba únicamente
desde la entrada y hasta el fin de la ejecución del trabajo del
usuario. Pero desde la década de los sesenta se popularizó la
posibilidad de almacenar en la computadora información a largo
plazo y con expectativas razonables de permanencia.
Relojes y temporizadores.
Todas las computadoras incluyen uno o más relojes y
temporizadores que son utilizados para funciones varias como
mantener la hora del sistema actualizada, implementar
alarmas tanto para los programas de usuario como para el
sistema operativo, ejecutar tareas de mantenimiento
periódicas, cumplir con requisitos temporales de aplicaciones
de tiempo real, etcétera
Acceso directo a memoria (DMA)
La operación de dispositivos de entrada/salida puede ser
altamente ineficiente. Cuando un proceso está en una
sección limitada por entrada-salida (esto es, donde la
actividad principal es la transferencia de información entre
la memoria principal y cualquier otra área del sistema), si el
procesador tiene que encargarse de la transferencia de
toda la información7, se crearía un cuello de botella por la
cantidad y frecuencia de interrupciones. Hoy en día, para
evitar que el sistema se demore cada vez que hay una
transferencia grande de datos, todas las computadoras
implementan controladores de acceso directo a memoria
(DMA, por sus siglas en inglés) en uno o más de sus subsistemas.
Multiprocesamiento
El multiprocesamiento es todo entorno donde hay más de un procesador (CPU). En un entorno
multiprocesador, el conjunto de procesadores se vuelve un recurso más a gestionar por el
sistema operativo — y el que haya concurrencia real tiene un fuerte impacto en su diseño.
Cómputo distribuido.
Se denomina cómputo distribuido a un proceso de cómputo realizado entre computadoras
independientes, o, más formalmente, entre procesadores que no comparten memoria
(almacenamiento primario). Puede verse que un equipo de diseño NUMA está a medio camino
entre una computadora multiprocesada y el cómputo distribuido.