SlideShare una empresa de Scribd logo
1 de 75
UNIVERSIDAD DE PANAMÁ
FACULTAD DE INFORMÁTICA, ELECTRÓNICA Y
COMUNICACIÓN
CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS
APUNTE: ORGANIZACIÓN Y ESTRUCTURA DE LOS
SISTEMAS OPERATIVOS
AUTOR: RAÚL ENRIQUE DUTARI DUTARI.
ASIGNATURA: SISTEMAS OPERATIVOS II INF 414.
CARRERA: LICENCIATURA EN INFORMÁTICA PARA LA
GESTIÓN EDUCATIVA Y EMPRESARIAL.
CÓDIGO DE ASIGNATURA: 28023.
CÓDIGO DE HORARIO: 8223.
PERÍODO ACADÉMICO: PRIMER SEMESTRE DE 2020.
SEDE: CENTRO REGIONAL UNIVERSITARIO DE
VERAGUAS.
ÍNDICE GENERAL
Índice general ....................................................................................................................ii
Índice de ilustraciones ....................................................................................................vii
1. Fines........................................................................................................... 1
1.1 Competencias........................................................................................... 1
1.2 Sub-competencias ................................................................................... 1
2. Introducción............................................................................................... 2
3. Concepto de sistema operativo ............................................................. 2
4. Servicios que ofrecen los Sistemas Operativos .................................. 3
4.1 Punto de vista del usuario....................................................................... 4
4.2 Punto de vista del sistema, organización interna del
computador: .............................................................................................. 7
4.2.1 El sistema operativo como administrador de recursos ...................... 7
4.2.2 El sistema operativo como software dinámico-evolutivo .................10
5. Características Principales de los Sistemas Operativos
(Atributos Esenciales)............................................................................12
5.1 Importancia Dentro De Los Sistemas Informáticos ..........................13
iii
6. Componentes funcionales de los Sistemas Operativos...................14
6.1 Interfaz de usuario .................................................................................14
6.2 Intérprete de comandos ........................................................................15
6.3 Llamadas al sistema ..............................................................................15
6.4 Administrador de recursos de Hardware y Software ........................16
7. Componentes Estructurales de los Sistemas Operativos ...............17
7.1 Kernel .......................................................................................................17
7.2 Shell..........................................................................................................17
7.3 Interfaz de usuario .................................................................................17
7.3.1 Funcionamiento básico del sistema operativo...................................18
7.3.1.1 Modo Consola.........................................................................................18
7.3.1.2 Modo Gráfico...........................................................................................22
8. Operación en bajo nivel de los Sistemas Operativos.......................24
8.1 Interrupciones de hardware ..................................................................26
8.2 Excepciones de software ......................................................................27
8.3 Operaciones en modo dual...................................................................27
iv
8.3.1 Modo supervisor.....................................................................................28
8.3.2 Modo usuario ..........................................................................................29
8.3.3 Funcionamiento del modo dual............................................................30
9. Clasificación de los Sistemas Operativos ..........................................31
9.1 Por su estructura ....................................................................................31
9.1.1 Estructura Simple / Monolítica .............................................................32
9.1.2 Estructura por niveles, capas o anillos ...............................................34
9.1.3 Estructura Microkernel...........................................................................36
9.1.4 Estructura Modular.................................................................................39
9.1.5 Máquinas virtuales .................................................................................40
9.1.5.1 Clasificación de las máquinas virtuales ..............................................41
9.1.5.2 Ventajas y desventajas de las máquinas virtuales ...........................43
9.2 Por los servicios que ofrece .................................................................45
9.2.1 Por el número de procesos...................................................................45
9.2.1.1 Uniproceso ..............................................................................................45
9.2.1.2 Multiproceso............................................................................................46
v
9.2.2 Por el número de usuarios....................................................................47
9.2.2.1 Monousuarios .........................................................................................47
9.2.2.2 Multiusuarios...........................................................................................47
9.2.3 Por el número de tareas........................................................................48
9.2.3.1 Monotareas .............................................................................................48
9.2.3.2 Multitareas ...............................................................................................48
9.2.4 De acuerdo a la forma en que ofrecen sus servicios .......................48
9.2.4.1 Sistemas centralizados .........................................................................49
9.2.4.2 Sistemas Operativos de red .................................................................50
9.2.4.3 Sistemas Operativos Distribuidos........................................................50
9.2.4.4 Sistemas operativos de escritorio........................................................51
10. Evolución / generaciones de los Sistemas Operativos ....................52
10.1 Generación cero (antecedentes) .........................................................52
10.2 Primera generación................................................................................53
10.3 Segunda generación..............................................................................55
10.4 Tercera generación................................................................................58
vi
10.5 Cuarta generación..................................................................................60
11. Conclusiones...........................................................................................63
12. Consignas de aprendizaje y evaluación.............................................64
12.1 Evaluación formativa .............................................................................65
12.2 Evaluación sumativa..............................................................................65
13. Referencias bibliográficas.....................................................................65
ÍNDICE DE ILUSTRACIONES
Ilustración 1: Niveles y vistas de un sistema informático...........................................4
Ilustración 2: El sistema operativo como administrador de recursos.......................9
Ilustración 3: Consola MS-DOS...................................................................................19
Ilustración 4: Consola MS-Windows 9X .....................................................................19
Ilustración 5: Consola MS-Windows 10......................................................................20
Ilustración 6: Consola GNU-Linux...............................................................................20
Ilustración 7: Ciclo de operación del modo consola .................................................21
Ilustración 8: Xerox Alto personal computer ..............................................................23
Ilustración 9: Escritorio de un sistema operativo gráfico .........................................24
Ilustración 10: Ciclo de ejecución de instrucciones con interrupciones ................25
Ilustración 11: Ejecución de instrucciones con y sin interrupciones ......................26
Ilustración 12: Interacción de los modos de operación del SO con el Hardware y
el Software del sistema .........................................................................................28
Ilustración 13: Transiciones entre los modos usuario y kernel...............................30
Ilustración 14: Estructuración básica para un sistema operativo monolítico........32
viii
Ilustración 15: Estructura por niveles del sistema operativo THE ..........................35
Ilustración 16: Estructura por anillos de los Sistemas Operativos .........................36
Ilustración 17: Estructura simplificada de un sistema operativo microkernel .......38
Ilustración 18: Taxonomía de los Sistemas Operativos según los servicios
ofrecidos ..................................................................................................................45
Ilustración 19: Colossus Mark 2 ...................................................................................53
Ilustración 20: IBM 701..................................................................................................54
Ilustración 21: Sistema SAGE ......................................................................................57
Ilustración 22: Instalación típica de un sistema IBM 7090.......................................58
Ilustración 23: Instalación Típica de un grupo de sistemas IBM/360.....................59
Ilustración 24: Computador PDP-11 ...........................................................................61
1. FINES
Este apunte está diseñado para el estudio de las características principales que
identifican a los sistemas operativos. Permite, al estudiante, conocer, comprender,
discutir y analizar estos sistemas.
En tal sentido, este documento realiza una introducción a los temas más
relevantes relacionados a los fundamentos de los sistemas operativos, señalando
las características más significativas y relevantes del funcionamiento de los
Sistemas Operativos, de acuerdo a su evolución y desarrollo dentro del entorno
informático.
1.1 COMPETENCIAS
 Debate el concepto, los servicios, las funciones la estructura, la operaciónla
evolución y las clasificaciones de los sistemas operativos modernos.
1.2 SUB-COMPETENCIAS
 Establece el concepto de sistema operativo.
 Debate los servicios que ofrecen los sistemas operativos.
 Analiza las funciones de los sistemas operativos.
 Contrasta la estructura de los sistemas operativos.
 Comprende la operación de los sistemas operativos.
 Describe la taxonomía de los sistemas operativos modernos.
 Esquematiza la evolución histórica de los sistemas operativos.
2
2. INTRODUCCIÓN
El desarrollo de los sistemas operativos, conjuntamente con las redes de
computadoras, han posibilitado enormemente la expansión del computador como
herramienta de trabajo universal.
Cada día es más frecuente encontrar puestos de trabajo donde anteriormente no
utilizaban las computadoras ni sus redes, y de un corto período de tiempo hacia
acá, se están implementando rápidamente, sistemas informáticos basados en
ambientes gráficos y que utilizan como soporte base a las redes de computadoras
y al Internet.
Sin embargo, ambas tecnologías son poco conocidas por el público en general.
En consecuencia, esta brecha tecnológica se pretende que sea cubierta, aunque
sea parcialmente, por este documento.
Inicialmente, se realizará una breve introducción a los conceptos, funciones,
estructura, importancia, para finalmente, analizar su estructura, funcionamiento,
evolución y taxonomía más importantes.
3. CONCEPTO DE SISTEMA OPERATIVO
Un sistema operativo, es un programa muy especial que se encarga
esencialmente de (HOLCOMBE & HOLCOMBE, 2017):
 Administrar los recursos de hardware y software en el sistema.
 Ofrecer al usuario un mecanismo de comunicación entre él y el hardware
del computador.
3
Es decir, un sistema operativo es un programa que controla la ejecución de los
programas de aplicación y que actúa como interfaz entre el usuario de un
computador y el hardware de la misma (TANENBAUM & BOS, 2015).
4. SERVICIOS QUE OFRECEN LOS SISTEMAS
OPERATIVOS
Las funciones principales que debe desempeñar cualquier sistema operativo
moderno se pueden englobar en dos grandes áreas (STALLINGS, Operating
system: Internals and design principles, 2018), (DÍAZ MARTÍNEZ, CHAOS
GARCÍA, MUÑOZ MANSILLA, & ARANDA ALMANSA, 2011):
 Desde el punto de vista del usuario: Ofrecer una interface Usuario /
Computadora funcional.
 Desde el punto de vista del sistema, en términos de la organización
interna del computador:
 Ofrecer un sistema eficiente de administración de recursos de
hardware y software.
 Ofrecer una plataforma de trabajo flexible y versátil, capaz de
evolucionar conjuntamente a los avances tecnológicos del hardware
y del software que coexisten con él.
A continuación, se tratarán estos aspectos de los sistemas operativos con mayor
nivel de detalle.
4
4.1 PUNTO DE VISTA DEL USUARIO
En la óptica del usuario final, el sistema operativo actúa simplemente como un
interfaz usuario / computadora. Con mayor detalle, el hardware y el software que
se utilizan para proveer de aplicaciones a los usuarios pueden contemplarse de
forma estratificada o jerárquica, como se muestra en la siguiente ilustración:
Ilustración 1: Niveles y vistas de un sistema informático
Fuente: (STALLINGS, Operating system: Internals and design principles, 2018)
Al usuario de estas aplicaciones se le llama usuario final y, generalmente, no tiene
que ocuparse de la arquitectura del computador. Por tanto, el usuario final ve al
sistema informático en términos de aplicaciones.
Las aplicaciones pueden construirse con un lenguaje de programación y son
desarrolladas por programadores de aplicaciones. Si se tuviera que desarrollar un
programa de aplicación como un conjunto de instrucciones máquina que sean del
todo responsables del control del hardware, se tendría una tarea abrumadora y
compleja. Para facilitar esta tarea, se ofrecen una serie de programas de sistemas.
Algunos de estos programas se denominan utilidades e implementan funciones
5
muy utilizadas que ayudan a la creación de los programas, la gestión de los
archivos y el control de los dispositivos de entrada / salida. Los programadores
hacen uso de estos servicios en el desarrollo de una aplicación y ésta, mientras
se está ejecutando, invoca a estas utilidades para llevar a cabo ciertas acciones.
El programa de sistemas más importante es el sistema operativo. El sistema
operativo oculta al programador los detalles del hardware y le proporciona una
interfaz cómoda para utilizar el sistema. Actúa como mediador, facilitándole al
programador y a los programas de aplicación el acceso y uso de todas esas
características y servicios.
De forma resumida, un sistema operativo ofrece servicios en las áreas siguientes
(DÍAZ MARTÍNEZ, CHAOS GARCÍA, MUÑOZ MANSILLA, & ARANDA
ALMANSA, 2011):
 Creación de programas: El sistema operativo ofrece una variedad de
características y servicios, tales como los editores y los depuradores
(debuggers), para ayudar al programador en la creación de programas.
Normalmente, estos servicios están en forma de programas de utilidad que
no forman realmente parte del sistema operativo, pero que son accesibles
a través del mismo.
 Ejecución de programas: Para ejecutar un programa se necesita un cierto
número de tareas. Las instrucciones y los datos se deben cargar en la
memoria principal, los archivos y los dispositivos de entrada / salida se
deben inicializar y se deben preparar otros recursos. El sistema operativo
administra todas estas tareas para el usuario.
 Acceso a los dispositivos de entrada salida (E/S): Cada dispositivo de
E/S requiere un conjunto propio y peculiar de instrucciones o de señales de
control para su funcionamiento. El sistema operativo tiene en cuenta estos
6
detalles de modo que el programador pueda pensar en forma de lecturas y
escrituras simples.
 Acceso controlado a los archivos: En el caso de los archivos, el control
debe incluir una comprensión, no sólo de la naturaleza del dispositivo de
E/S (controlador de disco, controlador de cinta) sino del formato de los
archivos y del medio de almacenamiento. Una vez más, es el sistema
operativo el que se encarga de los detalles. Es más, en el caso de sistemas
con varios usuarios trabajando simultáneamente, es el sistema operativo el
que brinda los mecanismos de control para controlar el acceso a los
archivos.
 Acceso al sistema: En el caso de un sistema compartido o público, el
sistema operativo controla el acceso al sistema como un todo y a los
recursos específicos del sistema. Las funciones de acceso pueden brindar
protección, a los recursos y a los datos, ante usuarios no autorizados y
debe resolver los conflictos en la propiedad de los recursos.
 Detección y respuesta a errores: Cuando un sistema informático está en
funcionamiento pueden producirse varios errores. Entre estos se incluyen
los errores internos y externos del hardware, tales como los errores de
memoria, fallos o mal funcionamiento de dispositivos y distintos tipos de
errores de software, como el desbordamiento aritmético, el intento de
acceder a una posición prohibida de memoria y la incapacidad del sistema
operativo para satisfacer la solicitud de una aplicación. En cada caso, el
sistema operativo debe dar una respuesta que elimine la condición de error
con el menor impacto posible sobre las aplicaciones que están en
ejecución. La respuesta puede ser desde terminar el programa que produjo
el error, hasta reintentar la operación o, simplemente, informar del error a
la aplicación.
7
 Contabilidad: Un buen sistema operativo debe recoger estadísticas de
utilización de los diversos recursos y supervisar los parámetros de
rendimiento tales como el tiempo de respuesta. Para cualquier sistema,
esta información es útil para anticiparse a la necesidad de mejoras futuras
y para ajustar el sistema y así mejorar su rendimiento. En un sistema
multiusuario, la información puede ser utilizada con propósito de cargar en
cuenta – para efectos de cobro por el uso de los servicios del sistema -.
4.2 PUNTO DE VISTA DEL SISTEMA, ORGANIZACIÓN
INTERNA DEL COMPUTADOR:
En otro orden de ideas, el sistema operativo cumple dos funciones primordiales,
a nivel interno del funcionamiento del computador, a saber (STALLINGS,
Operating system: Internals and design principles, 2018):
 Ofrecer un sistema eficiente de administración de recursos de hardware y
software.
 Ofrecer una plataforma de trabajo flexible y versátil, capaz de evolucionar
conjuntamente a los avances tecnológicos del hardware y del software que
coexisten con él.
A continuación, se analizan, brevemente, estas funciones.
4.2.1 EL SISTEMAOPERATIVOCOMOADMINISTRADORDE
RECURSOS
Un computador es un conjunto de recursos para el traslado, almacenamiento y
proceso de datos y para el control de estas funciones. El sistema operativo es el
responsable de la gestión de estos recursos.
8
¿Se puede afirmar que es el sistema operativo el que controla el traslado,
almacenamiento y proceso de los datos? Desde un cierto punto de vista, la
respuesta es afirmativa: Administrando los recursos del computador, el sistema
operativo tiene el control sobre las funciones básicas de la misma. Pero este
control se ejerce de una manera curiosa.
Normalmente, se piensa en un mecanismo de control como algo externo a lo
controlado o, al menos, como algo distinto y una parte separada de lo controlado.
(Por ejemplo, un sistema de calefacción de una estancia es controlado por un
termostato, que es algo completamente diferente de los aparatos de generación
de calor y de distribución del calor). Este no es el caso de un sistema operativo,
que no es habitual como mecanismo de control en dos aspectos:
 El sistema operativo funciona de la misma manera que el software normal
de un computador, es decir, es un programa ejecutado por el procesador.
 El sistema operativo abandona con frecuencia el control y debe depender
del procesador para recuperarlo.
El sistema operativo es, de hecho, nada más que un programa del computador.
Como otros programas de computador, da instrucciones al procesador. La
diferencia clave está en el propósito del programa.
El sistema operativo dirige al procesador en el empleo de otros recursos del
sistema y en el control del tiempo de ejecución de otros programas. Pero para que
el procesador pueda hacer estas cosas, debe cesar la ejecución del programa del
sistema operativo y ejecutar otros programas.
Así pues, el sistema operativo cede el control al procesador para hacer algún
trabajo "útil" y luego lo retoma durante el tiempo suficiente para preparar el
procesador para llevar a cabo la siguiente parte del trabajo. Los mecanismos
9
involucrados en estas acciones, se analizan con más detalle cuando se estudia la
teoría de control, descripción y sincronización de procesos, que rebasa los
propósitos de este documento.
La ilustración que se muestra a continuación, presenta los recursos principales
que son administrados por el sistema operativo:
Ilustración 2: El sistema operativo como administrador de recursos
Fuente: (STALLINGS, Operating system: Internals and design principles, 2018)
Una parte del sistema operativo está en la memoria principal. En esta parte está
el núcleo (kernel), que incluye las funciones utilizadas con más frecuencia en el
sistema operativo y, en un momento dado, puede incluir otras partes del sistema
operativo que estén en uso. El resto de la memoria principal contiene datos y otros
programas de usuario.
10
A grandes rasgos1, la asignación de este recurso (la memoria principal) es
controlada conjuntamente por el sistema operativo y por el hardware de gestión
de memoria en el procesador. El sistema operativo decide cuándo puede utilizarse
un dispositivo de E/S por parte de un programa en ejecución y controla el acceso
y la utilización de los archivos.
El procesador es, en sí mismo, un recurso y es el sistema operativo el que debe
determinar cuánto tiempo del procesador debe dedicarse a la ejecución de un
programa de usuario en particular. En el caso de sistemas multiprocesador, la
decisión debe distribuirse entre todos los procesadores.
4.2.2 EL SISTEMA OPERATIVO COMO SOFTWARE
DINÁMICO-EVOLUTIVO
Un sistema operativo importante no puede permanecer estático en el tiempo.
Obligatoriamente debe evolucionar a medida que transcurre su vida útil tiempo
por una serie de razones:
 Actualizaciones del hardware y nuevos tipos de hardware: Por
ejemplo, las primeras versiones de UNIX y OS/2 no empleaban
mecanismos de paginación, porque funcionaban en máquinas sin hardware
de paginación2. Las versiones más recientes de estos sistemas operativos
1 Esta temática es analizada con mayor profundidad en un curso formal de
Sistemas Operativos.
2 La paginación de memoria es un concepto que se estudia en los cursos de
sistemas operativos formales – cuando se analiza el concepto de memoria
11
se han modificado para aprovechar las capacidades de la paginación. Por
otro lado, el empleo de terminales gráficos y terminales de pantalla
completa, en lugar de los terminales de líneas, puede influir en el diseño de
los sistemas operativos. Por ejemplo, un terminal gráfico puede permitirle
al usuario ver diferentes aplicaciones al mismo tiempo, a través de
“ventanas” en la pantalla. Esto necesita un soporte más sofisticado en el
sistema operativo, que el simple sistema de terminal de líneas.
 Nuevos servicios: Como respuesta a Las demandas del usuario o a las
necesidades de los administradores del sistema, el sistema operativo
ampliará su oferta de servicios. Por ejemplo, si se determina que es difícil
de mantener un buen rendimiento para los usuarios con las herramientas
existentes, se deben añadir nuevas medidas y herramientas de control al
sistema operativo. Otro ejemplo es el de las nuevas aplicaciones que
exigen el uso de ventanas en la pantalla, que originalmente, el sistema
operativo no ofrece de manera nativa. Esta característica requiere
actualizaciones mayores en el sistema operativo.
 Correcciones: Desafortunadamente, el sistema operativo, como cualquier
otro componente tecnológico creado por el hombre, es propenso a tener
fallos, errores y omisiones en la programación del sistema, que se
descubrirán con el curso del tiempo y que es necesario corregir. Por
supuesto, estas correcciones pueden introducir nuevos fallos a su vez y así
sucesivamente.
virtual -, y se considera muy avanzado para los propósitos de este
documento.
12
La necesidad de hacer cambios en un sistema operativo de forma regular
introduce ciertos requisitos en el diseño. Una afirmación obvia es que el sistema
debe tener una construcción modular, con interfaces bien definidas entre los
módulos y debe estar bien documentado.
Para sistemas grandes, como normalmente son los sistemas operativos actuales,
no es adecuado lo que podría denominarse como descomposición modular
elemental. Es decir, debe hacerse mucho más que dividir simplemente un
programa en subrutinas. Se debe diseñar explícitamente el sistema para que
dichas actualizaciones se puedan implementar de manera sistemática, sin
comprometer las capacidades previamente implementadas en el sistema.
5. CARACTERÍSTICAS PRINCIPALESDE LOS SISTEMAS
OPERATIVOS (ATRIBUTOS ESENCIALES)
Cualquier software que, mínimamente, se considere como un sistema operativo,
debe evidenciar tres atributos esenciales, que a grandes rasgos pueden ser
descritos como (STALLINGS, Operating system: Internals and design principles,
2018):
 Comodidad: Un sistema operativo hace que un computador sea más
cómodo de utilizar.
 Eficiencia: Un sistema operativo permite que los recursos de un sistema
informático se aprovechen de una manera más eficiente.
 Capacidad de evolución: Un sistema operativo debe construirse de modo
que permita el desarrollo efectivo, la verificación y la introducción de nuevas
funciones en el sistema y, a la vez, no interferir en los servicios que brinda.
13
5.1 IMPORTANCIA DENTRO DE LOS SISTEMAS
INFORMÁTICOS
En función a la temática desarrollada en el apartado 4.1, así como lo que establece
(WOLF, RUIZ, BERGERO, & MEZA, 2015), el usuario final, en general, ignora la
importancia – y muchas veces, hasta la existencia -, del sistema operativo dentro
del computador. Sin embargo, al momento en que se presentan problemas de mal
funcionamiento del sistema – ya sea a nivel del hardware o del software -,
repentinamente este componente de software cobra una relevancia significativa.
Sin embargo, sólo desde el punto de vista del desarrollo de software, el sistema
operativo tiene una importancia crucial dentro del sistema. Esto por cuanto que,
si se tuviera que programar desde cero, las aplicaciones modernas, hablándole
directamente al hardware, simplemente sería una tarea colosal y extremadamente
difícil de alcanzar, tomando en cuenta las refinadas interfaces que se disponen,
así como la enorme funcionalidad que ofrecen las aplicaciones actuales.
Es por esta razón que existen los compiladores e intérpretes, para facilitar la tarea
de la programación de sistemas. Ellos implementan funciones muy utilizadas que
ayudan a la creación de los programas, la gestión de los archivos y el control de
los dispositivos de entrada / salida. El desarrollador de software utiliza estas
herramientas en la implementación de aplicación en tanto que ella (la aplicación),
en el momento que se ejecuta, utiliza a estas utilidades para llevar a cabo ciertas
acciones. Precisamente allí radica la importancia del sistema operativo, ya que es
la herramienta principal que permite ocultar, al programador, los detalles del
hardware y le proporciona una interfaz cómoda para implementar y utilizar los
sistemas. Actúa como mediador, facilitándole al programador y a los programas
de aplicación el acceso y uso de todas esas características y servicios de bajo
nivel.
14
6. COMPONENTES FUNCIONALES DE LOS SISTEMAS
OPERATIVOS
En términos funcionales, los sistemas operativos poseen los siguientes
componentes:
6.1 INTERFAZ DE USUARIO
La interface de usuario ofrece el entorno donde los usuarios finales pueden
interactuar con el sistema operativo, vía las muy conocidas interfaces gráficas de
usuario. En ellas, a través de un sistema icónico y con un apuntador, el usuario
final puede interactuar con el sistema operativo.
Este tipo de interface resulta muy fácil de utilizar por parte de los usuarios no
experimentados. Pero, sin embargo, generalmente no ofrece todas las
posibilidades que tienen las herramientas de software.
En tal sentido, actualmente se mantiene un debate entre la pertinencia o no de las
interfaces gráficas de usuario, frente a las interfaces de línea de comandos, al
momento de requerir que el software ofrezca todas sus posibilidades de acción;
en tanto que, por otro lado, se analizan sus facilidades de uso.
En ese orden de ideas el eje de la discusión gira desde la potencia que ofrecen
las herramientas, y llega hasta su facilidad de uso, estando la discusión centrada
en cuál es el punto intermedio entre estas tendencias de operación, donde se
logra explotar todo el potencial de las aplicaciones, al mismo tiempo que ellas
siguen siendo fáciles y sencillas de utilizar.
15
6.2 INTÉRPRETE DE COMANDOS
El componente llamado intérprete de mandatos o Shell (SILBERSCHATZ,
GALVIN, & GAGNE, 2018), se encarga de suministrar un medio de comunicación,
a través de la cual el usuario puede dialogar de forma interactiva con la
computadora, generalmente basada en una línea de comandos o consola
(TANENBAUM & BOS, 2015). Este componente, a la fecha, se encuentra en la
mayoría de los sistemas operativos populares.
El Shell recibe los mandatos u órdenes del usuario, los interpreta y, si puede, los
ejecuta. Dado que el Shell suele ejecutar en nivel de usuario, algunos autores
consideran que no forma parte del sistema operativo (TANENBAUM & BOS,
2015).
6.3 LLAMADAS AL SISTEMA
Por otro lado, la capa de servicios o llamadas al sistema ofrece a los programas
unos servicios en forma de una interfaz de programación o API (application
programming interface) (SILBERSCHATZ, GALVIN, & GAGNE, 2018),
(STALLINGS, Operating system: Internals and design principles, 2018).
A nivel de lenguajes de programación, generalmente se encuentras disponibles
como funciones que siguen la sintaxis de lenguajes como C o C++, así como en
algunos casos, lenguaje ensamblador (SILBERSCHATZ, GALVIN, & GAGNE,
2018).
Desde el punto de vista de los programas, esta capa extiende la funcionalidad de
la computadora, por lo que se suele decir que el sistema operativo ofrece una
máquina virtual extendida a los programas. De esta forma se facilita la elaboración
16
de éstos, puesto que se apoyan en las funciones que le suministra el sistema
operativo.
6.4 ADMINISTRADOR DE RECURSOS DE HARDWARE Y
SOFTWARE
También denominada como capa de abstracción de hardware (HAL, Hardware
Abstraction Layer), es un concepto aplicado en sistemas operativos tales como
Windows, Android (STALLINGS, Operating system: Internals and design
principles, 2018).
Esencialmente, constituye un sistema librerías de software que se ubican entre el
hardware propiamente dicho y el núcleo del sistema, aislándolo casi por completo
del hardware (TANENBAUM & BOS, 2015).
El nivel HAL es quien manipula casi todas las acciones sobre el hardware, y a su
vez, el núcleo del sistema, casi siempre debe interactuar con el HAL para realizar
operaciones sobre el hardware (STALLINGS, Operating system: Internals and
design principles, 2018).
En detalle, el HAL establece una correspondencia de órdenes y respuestas
genéricas del hardware, a nivel general – para comunicarse con el kernel -, y las
mismas órdenes y respuestas, ahora específicas a nivel de un hardware en
particular. Este sistema provoca que el bus del sistema, el controlador DMA, el
controlador de interrupciones, los relojes del sistema, así como el sistema de
memoria sean todos idénticos para el kernel del sistema operativo (STALLINGS,
Operating system: Internals and design principles, 2018).
17
7. COMPONENTES ESTRUCTURALES DE LOS
SISTEMAS OPERATIVOS
En otro orden de ideas, desde un punto de vista estructural, los sistemas
operativos se reducen a los siguientes componentes:
7.1 KERNEL
Es el componente menos conocido para el público en general, dentro de los
sistemas operativos. Normalmente, es la capa más cercana al hardware se
denomina núcleo (kernel) y es la que gestiona los recursos hardware del sistema
y la que suministra toda la funcionalidad básica del sistema operativo (HOLT &
HUANG, 2018).
Por seguridad para el sistema, los usuarios normalmente no pueden dar
instrucciones al núcleo del sistema de manera directa, mientras que si es posible
hacerlo a las otras capas, tales como los programas del sistema o las aplicaciones
de usuario (SILBERSCHATZ, GALVIN, & GAGNE, 2018).
7.2 SHELL
Previamente mencionado en el apartado 6.2, es importante resaltar que es un
componente reemplazable en la mayoría de los sistemas operativos, tales como
Linux, Unix o hasta en el mismo Windows (TANENBAUM & BOS, 2015)
7.3 INTERFAZ DE USUARIO
También desarrollado en el apartado 6.1. Sin embargo, es relevante detallar la
forma general en que opera un sistema operativo a nivel del usuario en general.
18
7.3.1 FUNCIONAMIENTO BÁSICO DEL SISTEMA
OPERATIVO
De acuerdo a (RAYA CABRERA & RAYA GONZÁLEZ, 2014), los sistemas
operativos funcionan en dos modos básicos:
 Modo Consola
 Modo Gráfico
A continuación, se detallarán ambos modos de operación.
7.3.1.1 MODO CONSOLA
También conocido como Modo Orden o Modo Comando. En este ambiente de
trabajo, cuando el computador completa su proceso de arranque, o cuando se
invoca este modo, se le presenta al usuario una pantalla similar a las que se
muestran a continuación.
19
Ilustración 3: Consola MS-DOS
Fuente: El Autor
Ilustración 4: Consola MS-Windows 9X
Fuente: El Autor
20
Ilustración 5: Consola MS-Windows 10
Fuente: El Autor
Ilustración 6: Consola GNU-Linux
Fuente: El Autor
21
Al final de este proceso, aparecerá en el fondo de la pantalla un simbolismo para
indicar que el sistema operativo ha sido capaz de ponerse en funcionamiento,
satisfactoriamente, en nuestra computadora. El simbolismo en mención se
denomina con toda propiedad “petición de orden”.
Una vez aparece la petición de orden en el sistema, el sistema operativo
funcionará describiendo un ciclo sin fin. La Ilustración 7 describe gráficamente
estas fases:
Ilustración 7: Ciclo de operación del modo consola
Pregunta:
Aparece la petición de orden
Proceso:
El sistema operativo acepta la
orden del usuario y la analiza de
acuerdo a su programación
interna
Orden:
El usuario anota la orden
correspondiente, pulsando
[Enter] al final
Respuesta:
El sistema operativo responde a
la orden del usuario, con la
acción solicitada, o con un
mensaje de error, cuando no
este contemplada dentro de su
programación
Fuente: El Autor
El ciclo se inicia al presentarse en la pantalla la petición de orden y finaliza con
ésta. Los procesos se repiten hasta que el fluido eléctrico se suprime a la
computadora (se desconecta).
22
Hay que resaltar que, en este modo de operación de los sistemas operativos, el
usuario tiene que teclear cada orden que realiza la acción deseada y pulsar
[Enter] para que el sistema operativo la ejecute, sin ratón, ventanas, iconos,
escritorio, o similares.
MS-DOS y las primeras versiones de Linux funcionaban en modo orden, así como
una gran mayoría de sistemas de servidores de distinta índole.
Muchos usuarios avanzados, por lo general, programadores, utilizan el modo
consola en muchas tareas, ya que declaran que en esta modalidad de trabajo son
más productivos, a través de atajos de teclas,
Además, en los servidores que están sometidos a altas cargas de trabajo, el modo
consola es necesario, para optimizar los recursos disponibles en el sistema.
Muchos administradores de servidores no instalan los entornos gráficos en sus
sistemas, en casos como Linux o Windows Server (opción Core), ya que no los
usarán.
7.3.1.2 MODO GRÁFICO
Por otro lado, (RAYA CABRERA & RAYA GONZÁLEZ, 2014) establecen que este
modo corresponde al caso en que el sistema operativo posee una Interfaz Gráfica
de Usuario (GUI, en inglés), es decir, que poseen ventanas, ratón, íconos y
ayudas contextuales.
Este sistema se atribuye a la compañía Xerox, que desarrolló sus componentes
fundamentales en la década de los 70, y los comercializó a través de su sistema
Xerox Alto Personal Computer (O'REGAN, 2016). La Ilustración 8 muestra el
computador previamente mencionado.
23
Ilustración 8: Xerox Alto personal computer
Fuente: (O'REGAN, 2016)
Gran parte del desarrollo de la informática a nivel universal, se debe al desarrollo
de los ambientes gráficos y la facilidad intrínseca que conllevan, al permitir al
usuario una interacción más amistosa con el sistema. A tal punto, que la gran
mayoría de los sistemas operativos de uso personal incluyen la interacción gráfica
como entorno de base en sus distribuciones. La Ilustración 9 muestra el escritorio
de un sistema operativo operando en modo gráfico.
24
Ilustración 9: Escritorio de un sistema operativo gráfico
Fuente: El Autor
8. OPERACIÓN EN BAJO NIVEL DE LOS SISTEMAS
OPERATIVOS
Es importante establecer un concepto relevante acerca de la forma en que
interactúan los Sistemas Operativos y su Hardware subyacente, para visualizar la
forma en que el Software utiliza los recursos del computador.
En tal sentido, se mencionan dos eventos importantes que interactúan entre sí, al
momento en que las aplicaciones y el hardware se comunican. Ellos son
(STALLINGS, Computer Organization and Architecture: Designing for
Performance, 2016):
 Interrupciones de hardware
 Excepciones de software
25
En ambos casos el evento en sí, consiste en la posibilidadque tiene el procesador
de suspender la ejecución de una aplicación cualquiera, atender otras tareas más
prioritarias y que se presentan en forma impredecible, para finalmente reanudar
la ejecución del programa previamente suspendido; cada vez que termina de
ejecutar una instrucción, como se aprecia en la Ilustración 10.
Ilustración 10: Ciclo de ejecución de instrucciones con interrupciones
Fuente: (STALLINGS, Operating system: Internals and design principles, 2018)
En general, estas suspensiones se presentan en los casos en que se llevan a
cabo operaciones de entrada / salida (E/S) a dispositivos lentos, tales como
impresoras o escáneres; y representan una ganancia significativa en el
rendimiento global del computador, frente al caso en que no se aplicaran, como
se puede observar en la Ilustración 11.
26
Ilustración 11: Ejecución de instrucciones con y sin interrupciones
Fuente: (STALLINGS, Computer Organization and Architecture: Designing for
Performance, 2016)
Dependiendo de la fuente que origina la suspensión, se tienen:
8.1 INTERRUPCIONES DE HARDWARE
Como su propio nombre lo indica, son originadas por el hardware y su presencia
se justifica por la gran diferencia de velocidades que presentan los dispositivos de
E/S, frente a la velocidad que presenta el CPU. Estas diferencias se presentan en
términos que el procesador es literalmente, millones de veces más rápido que los
dispositivos periféricos, como discos duros, por ejemplo (STALLINGS, Operating
system: Internals and design principles, 2018).
Se presentan en forma aleatoria e impredecible durante la ejecución de los
programas, pero son originadas por algún componente de hardware y siempre
son atendidas, en forma asíncrona, cuando se termina de ejecutar la instrucción
27
que se atiende en el momento (PARHAMI, 2007), (DÍAZ MARTÍNEZ, CHAOS
GARCÍA, MUÑOZ MANSILLA, & ARANDA ALMANSA, 2011).
8.2 EXCEPCIONES DE SOFTWARE
Estos eventos también interrumpen la ejecución normal de las instrucciones, pero
con la diferencia de que son originadas por algún estado que presenta el software,
al ejecutar las instrucciones y se atiende en forma síncrona. Generalmente son
causadas por acciones ilegales que, tales como divisiones por cero, o tratar de
acceder a posiciones de memoria inexistentes, entre otros casos. Por si, son
impredecibles por naturaleza propia, y su presencia es, por lo regular, infrecuente
e involucran que el programa en ejecución aborte (PARHAMI, 2007).
No obstante, muchas implementaciones de lenguajes de programación, tales
como Ensamblador, Java, C++, poseen estructuras de control, que permiten, en
cierta medida, la programación de las acciones a seguir, cuando estas se
presenten (LEE, 2017).
8.3 OPERACIONES EN MODO DUAL
Una de las funciones básicas de todo sistema operativo funcional es la de
administrar los recursos de hardware y software. Esta tarea de gestión involucra
velar que las instrucciones que ejecuten los programas de aplicación no afecten
(con o sin intención) a las estructuras de datos que permiten que el sistema
operativo opere (STALLINGS, Operating system: Internals and design principles,
2018).
De allí, surge la necesidad de que los procesadores puedan operar en dos modos,
con privilegios diferenciados, denominados (TANENBAUM & BOS, 2015):
 Modo usuario
28
 Modo supervisor
La Ilustración 12, evidencia la forma en que interactúan estos modos dentro del
computador.
Ilustración 12: Interacción de los modos de operación del SO con el Hardware y el
Software del sistema
Fuente: (TANENBAUM & BOS, 2015)
De seguido, se analizarán con más detalle estos modos de operación.
8.3.1 MODO SUPERVISOR
También conocido como modo kernel, privilegiado o núcleo3. En este modo, el
CPU puede ejecutar directamente cualquier instrucción de su repertorio de
instrucciones, sin ningún tipo de confirmación. Este es el modo en que se ejecuta
regularmente el sistema operativo como tal. Además, esta forma de operación
3 Este modo no debe ser confundido con los usuarios administradores del
sistema o root.
29
incluye lógicamente todas las instrucciones que se pueden ejecutar en modo
usuario (TANENBAUM & BOS, 2015), (SILBERSCHATZ, GALVIN, & GAGNE,
2018).
Es importante recalcar, que un fallo de programación, con el CPU operando en
modo supervisor, por lo general, llevará a que la sesión del sistema operativo se
cuelgue, con las pérdidas consabidas de la información no guardada, y que se
requiera reiniciar el computador en forma física (apagarlo y encenderlo
nuevamente).
Como ejemplo de instrucciones privilegiadas, se tienen a las que involucran
gestión de memoria o E/S.
8.3.2 MODO USUARIO
Se le conoce también como modo no privilegiado4. Son los conjuntos de
instrucciones que ejecutan regularmente las aplicaciones, vistas desde a nivel de
lenguaje de programación (TANENBAUM & BOS, 2015), (SILBERSCHATZ,
GALVIN, & GAGNE, 2018).
En consecuencia, de acuerdo a lo que se observa en la Ilustración 12, para que
una aplicación de usuario realice operaciones privilegiadas, ella debe solicitar su
ejecución al sistema operativo, para que él realice la acción solicitada, operando
en modo supervisor.
4 Esta modalidad de operación del Sistema Operativo, no tiene relación
alguna con los usuarios humanos que utilizan los ordenadores.
30
8.3.3 FUNCIONAMIENTO DEL MODO DUAL
A continuación, se modelará, el funcionamiento del modo dual (SILBERSCHATZ,
GALVIN, & GAGNE, 2018).
La necesidad de asegurar la ejecución correcta del sistema operativo, obliga a la
identificación del código que pertenece al sistema operativo, del código que
definen los usuarios. Esto se logra a través del denominado bit de modo que se
agrega al hardware del sistema, señalando el modo de ejecución actual y
permitiendo diferenciar si una tarea se ejecuta con privilegios de usuario o de
supervisor: 0 para modo supervisor y 1 para modo usuario.
La Ilustración 13, presenta la forma en que se utiliza el bit de modo para controlar
las transiciones entre los modos usuario y supervisor.
Ilustración 13: Transiciones entre los modos usuario y kernel
Fuente: (SILBERSCHATZ, GALVIN, & GAGNE, 2018)
Durante el encendido del ordenador, el hardware se activa bajo el modo kernel y
se completa la carga del sistema operativo bajo este modo. Luego, cada vez que
un software de usuario se va a cargar, antes de darle el control del sistema a la
aplicación, el sistema operativo cambia el modo de operación de kernel a usuario,
y luego entrega el control del sistema.
31
En consecuencia, las aplicaciones de usuario, se cargan inicialmente siempre, en
modo usuario, valga la redundancia. No obstante, en el momento en que estas
aplicaciones requieren un servicio del sistema (solicitándolo vía llamada al
sistema), la aplicación debe pasar a modo kernel, para poder completar el servicio.
Concretado el servicio, nuevamente regresa el sistema a operar en modo usuario.
Así mismo, cada vez que se produce una interrupción o excepción, el hardware
pasará de modo usuario al modo supervisor para atenderla. Completado el
servicio de la excepción o interrupción solicitadas, el sistema regresará al modo
usuario.
En consecuencia, el hardware o el sistema operativo siempre operarán en modo
supervisor.
9. CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS
En esta sección se describirán las características que sistematizan a los sistemas
operativos. Básicamente se cubrirán tres enfoques: sistemas operativos por su
estructura (visión interna), sistemas operativos por los servicios que ofrecen y,
finalmente, sistemas operativos por la forma en que ofrecen sus servicios (visión
externa).
9.1 POR SU ESTRUCTURA
Según (SILBERSCHATZ, GALVIN, & GAGNE, 2018), deben observar dos tipos
de requisitos cuando se construye un sistema operativo:
 Requisitos de usuario: El sistema debe ser fácil de usar y de aprender,
seguro, rápido y adecuado al uso al que se le quiere destinar.
32
 Requisitos del sistema: Bajo este enfoque, se engloban aspectos tales
como el mantenimiento del software, su forma de operación, las
restricciones de uso bajo las que funciona, su eficiencia, su tolerancia frente
a los errores y su flexibilidad en general.
En función a estas premisas, se describen las distintas estructuras que presentan
los actuales sistemas operativos para satisfacer las necesidades que de ellos se
quieren obtener.
9.1.1 ESTRUCTURA SIMPLE / MONOLÍTICA
Es la organización que utilizaron los primeros sistemas operativos, que estaban
constituidos fundamentalmente por un solo programa compuesto de un conjunto
de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra
(SILBERSCHATZ, GALVIN, & GAGNE, 2018), (TANENBAUM & BOS, 2015),
como se puede observar en la Ilustración 14:
Ilustración 14: Estructuración básica para un sistema operativo monolítico
Fuente: (TANENBAUM & BOS, 2015)
Las características fundamentales de este tipo de estructura son:
33
 La construcción del programa final se realiza a base de módulos
compilados separadamente, que se unen a través del enlazador.
 Poseen una buena definición de parámetros de enlace entre las distintas
rutinas existentes, que puede provocar mucho acoplamiento entre los
módulos.
 Carecen de protecciones y privilegios al entrar a rutinas que manejan
diferentes aspectos de los recursos de la computadora, como memoria,
disco, entre otros, lo que puede llevar a serios problemas de seguridad.
 Generalmente están hechos a la medida, por lo que son eficientes y rápidos
en su ejecución y gestión, pero, por la misma razón, carecen de la
flexibilidad necesaria para soportar diferentes ambientes de trabajo o tipos
de aplicaciones.
Un ejemplo bien conocido de este tipo de sistema operativo es el de MS-DOS,
que se diseñó sin pensar ni siquiera remotamente en la popularidad que
alcanzaría y en las capacidades del hardware en el que llegaría a ejecutarse.
Comenzó como un sistema pequeño y sobrepasó ampliamente el campo inicial
de su aplicación, al punto que, al momento de su eliminación, un fuerte
movimiento de resistencia al cambio (DÍAZ MARTÍNEZ, CHAOS GARCÍA,
MUÑOZ MANSILLA, & ARANDA ALMANSA, 2011).
La primera versión de Unix también poseía una estructura de este tipo, con dos
partes separadas: el núcleo y los programas del sistema (COULOURIS,
DOLLIMORE, KINDBERG, & BLAIR, 2012), (SILBERSCHATZ, GALVIN, &
GAGNE, 2018).
Estos sistemas, normalmente, tienen un diseño de estructura modular (a nivel de
su programación interna), sin embargo, para implementar grandes sistemas
34
operativos, de cientos de miles o de millones de líneas de código, basándose
únicamente en conceptos modulares resulta insuficiente y se ha impuesto la
aplicación de conceptos tales como los de niveles jerárquicos y abstracción de la
información, para lograr sistemas más elaborados (STALLINGS, Operating
system: Internals and design principles, 2018).
9.1.2 ESTRUCTURA POR NIVELES, CAPAS O ANILLOS
A medida que fueron creciendo las necesidades de los usuarios y se
perfeccionaron los sistemas, se hizo necesaria una mayor organización del
software, del sistema operativo, donde una parte del sistema contenía sub-partes,
todo organizado en forma de niveles (SILBERSCHATZ, GALVIN, & GAGNE,
2018).
Así, se dividió el sistema operativo en pequeñas partes, de tal forma que cada una
de ellas estuviera perfectamente definida y con un claro interface con el resto de
elementos.
La estructura jerárquica de un sistema operativo moderno diferencia sus funciones
de acuerdo a su complejidad, sus características en el tiempo y su nivel de
abstracción. En este caso se puede ver el sistema como una serie de niveles.
Cada uno implementa un subconjunto de las funciones requeridas por el sistema
operativo y a su vez dependen del nivel inmediato inferior para realizar funciones
más elementales y ocultar sus detalles a los niveles superiores a los que
proporciona un servicio. Los niveles se tienen que definir de forma que los
cambios que se hagan en un nivel no supongan modificaciones en los otros
(TANENBAUM & BOS, 2015).
Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el
primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven),
35
de Dijkstra, que se utilizó con fines didácticos. A grandes rasgos, la estructura
jerárquica de este sistema operativo, se puede apreciar en la siguiente ilustración.
Ilustración 15: Estructura por niveles del sistema operativo THE
Fuente: (TANENBAUM & BOS, 2015)
Estos sistemas pueden ser concebidos también como si fueran sistemas Multi
capas. En tal sentido, sistemas operativos legendarios tales como Multics y Unix,
caen en esa categoría (TANENBAUM & BOS, 2015), y de hecho es la estructura
que fundamenta a prácticamente la mayoría de los sistemas operativos modernos.
Una forma alterna de visualizar a éstos sistemas, bajo este enfoque, es la
denominada de anillos concéntricos o "rings", como se puede apreciar en la
Ilustración 16.
36
Ilustración 16: Estructura por anillos de los Sistemas Operativos
Fuente: (SILBERSCHATZ, GALVIN, & GAGNE, 2018)
Bajo el sistema de anillos (SILBERSCHATZ, GALVIN, & GAGNE, 2018), cada uno
de ellos tiene una apertura, conocida como puerta o trampa (trap), por donde
pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas más
internas del sistema operativo o núcleo del sistema estarán más protegidas de
accesos indeseados desde las capas más externas. Las capas más internas
serán, por tanto, más privilegiadas que las externas.
La mayor dificultad en el diseño de estas estructuras es definir los niveles, ya que
cada nivel sólo puede utilizar los servicios del nivel inferior.
9.1.3 ESTRUCTURA MICROKERNEL
Es el tipo más reciente de sistemas operativos, que puede ser ejecutado en la
mayoría de las computadoras, ya sean grandes o pequeñas. Adicionalmente, este
37
tipo de sistema operativo sirve para toda clase de aplicaciones, por tanto, es de
propósito general y cumple con las mismas actividades que los sistemas
operativos convencionales (SILBERSCHATZ, GALVIN, & GAGNE, 2018).
Goza de una estructura muy simple: el núcleo del sistema operativo se debe
estructurar de manera tal que se le eliminan todos los componentes no esenciales
para su funcionamiento interno; mientras que todos los componentes eliminados
del Kernel, se implementan como aplicaciones del sistema de nivel superior o de
nivel del usuario. El resultado es un Kernel significativamente más pequeño
(TANENBAUM & BOS, 2015).
Siguiendo el enfoque ha planteado, todas las aplicaciones que se ejecutan en el
sistema podrán desempeñar papeles tanto de cliente como de servidores; en tanto
que el núcleo tiene como únicas misiones el establecer la comunicación entre los
clientes y los servidores, y gestionar a un nivel muy básico a los procesos y a la
memoria del sistema. Para comunicarse, los módulos deben utilizar una técnica
conocida como paso de mensajes que, a nivel de programación, resulta un poco
difícil de implementar para los programadores con poca experiencia
(TANENBAUM & BOS, 2015), como se observa en la Ilustración 17.
38
Ilustración 17: Estructura simplificada de un sistema operativo microkernel
Fuente: (TANENBAUM & BOS, 2015)
Por ejemplo, un programa de aplicación normal es un cliente que llama al servidor
correspondiente para acceder a un archivo o realizar una operación de
entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede
actuar como servidor para otro.
Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el
sistema final, ya que el núcleo provee solamente funciones muy básicas de
memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer la
mayoría de los servicios que el usuario final o programador puede usar
(TANENBAUM & BOS, 2015).
Adicionalmente, esta estructura ofrece la facilidad de ampliación para el sistema
operativo; ya que todos los servicios nuevos se agregan como aplicaciones ya sea
a nivel del usuario por el sistema y, en consecuencia, son muy raras las ocasiones
en las que se requiere modificar al núcleo del sistema operativo.
Este diseño, también ofrece facilidades al momento de transportar al sistema
operativo de una plataforma de hardware a otra; asimismo, ofrece un mayor nivel
39
de seguridad y fiabilidad en su funcionamiento ya que, si un servicio falla, el resto
del sistema operativo no se ve comprometido.
Estos servidores deben tener mecanismos de seguridad y protección que, a su
vez, serán filtrados por el núcleo que controla el hardware. Actualmente, la
mayoría de los sistemas operativos modernos tanto Microsoft o como Unix
compatibles se estructuran contemplando en su diseño este paradigma.
9.1.4 ESTRUCTURA MODULAR
Quizá la mejor metodología actual para diseñar sistemas operativos es la que usa
técnicas de programación orientada a objetos para crear un Kernel modular. En
este caso, el Kernel dispone de un conjunto de componentes fundamentales y
enlaza dinámicamente a los servicios adicionales, bien durante el arranque del
sistema o en tiempo de ejecución (SILBERSCHATZ, GALVIN, & GAGNE, 2018).
Tal estrategia utiliza módulos que se cargan dinámicamente y resulta habitual
encontrarlos en las implementaciones modernas del Unix, tales como Solaris,
Linux, y Mac OS, así como en MS- Windows.
Este tipo de diseño permite al Kernel proporcionar servicios básicos, al mismo
tiempo que también permite implementar ciertas características de forma
dinámica. Por ejemplo, se puede añadir al Kernel controladores de bus y de
dispositivos para hardware específico y puede agregarse como módulos
cargables el soporte para diferentes sistemas de archivos (SILBERSCHATZ,
GALVIN, & GAGNE, 2018).
El resultado global, es similar a un sistema estructurado por niveles o anillos, en
el sentido que cada sección del Kernel tiene interfaces bien definidas y protegidas,
40
pero es más flexible que el sistema de niveles porque cualquier módulo puede
llamar a cualquier otro módulo.
Además, el método es similar a la utilización de micro Kernel, ya que módulo
principal sólo dispone de las funciones esenciales y de los conocimientos sobre
cómo cargar y comunicarse con los otros módulos; sin embargo, en más eficiente
que micro Kernel, ya que los módulos no necesitan invocar un mecanismo de paso
de mensaje para comunicarse (SILBERSCHATZ, GALVIN, & GAGNE, 2018).
9.1.5 MÁQUINAS VIRTUALES
Las máquinas virtuales consisten en un conjunto de tecnologías que emula el
funcionamiento de un sistema de computadoras, en diferentes ambientes,
permitiendo que en cada uno se ejecuten sistemas operativos o aplicaciones,
como si estuviesen en el computador real independiente. Se constituye como una
copia de un ordenador físico, que se comporta en forma eficiente y aislada
(SILBERSCHATZ, GALVIN, & GAGNE, 2018), (WOLF, RUIZ, BERGERO, &
MEZA, 2015).
Este concepto no se debe considerar como limitado por las arquitecturas de
hardware pre-existentes. Una máquina virtual puede ser diseñada pensando en
una arquitectura de hardware que no ha sido implementada físicamente (WOLF,
RUIZ, BERGERO, & MEZA, 2015).
En el ambiente de las máquinas virtuales hay dos conceptos que se manejan de
forma casi universal (SILBERSCHATZ, GALVIN, & GAGNE, 2018):
 Sistema Anfitrión (host en inglés): es el sistema real, el hardware donde
se implementan los mecanismos de virtualización.
41
 Sistema Huésped (guest en inglés): consisten en las aplicaciones o los
sistemas operativos que se ejecutan en el ambiente virtualizado.
9.1.5.1 CLASIFICACIÓN DE LAS MÁQUINAS VIRTUALES
Con base en su funcionalidad y el nivel de equivalencia frente a una máquina real,
existen un amplio abanico de implementaciones de máquinas virtuales, lo que
evidencia la importancia, profundidad y madurez que ha alcanzado este conjunto
de tecnologías, para la computación moderna. A saber, se tienen
(SILBERSCHATZ, GALVIN, & GAGNE, 2018):
 Soluciones basadasen hardware que ofrecen soporte para la creación
y gestión de máquinas virtuales vía firmware: Es decir, son equipos
físicos especialmente diseñados para tal fin y se encuentran centros de
datos de grandes corporaciones o agencias gubernamentales. Los
sistemas LPAR de IBM y LDOM de Oracle, son ejemplos de estas
implementaciones.
 Sistemas operativos construidos para ofrecer soporte a la
virtualización: En este caso, el soporte a la virtualización se presenta a
nivel del sistema operativo y no se requiere que el hardware subyacente
este diseñado para tal fin, lo que permite utilizar computadoras de menor
costo para la tarea señalada. Entre estos sistemas se encuentran: VMware
ESX de VMware, Smart OS de Joyent y XenServer de Citrix.
 Sistemas operativos de propósito general que ofrecen funciones
estándares de virtualización: ahora, en este contexto, a un sistema
operativo estándar, se le instalan complementos que posibilitan la creación
y administración de máquinas virtuales en dicho entorno. Ejemplos de este
escenario son: Microsoft Windows Server al que se le incorpora el
complemento HyperV, o Red Hat Linux con el paquete KVM.
42
 Aplicaciones que se ejecutan en sistemas operativos estándares pero
que permiten la creación y administración de máquinas virtuales: en
este escenario, simplemente se instala una aplicación en un equipo
personal, por ejemplo, y dentro de la aplicación, es que se gestionan las
máquinas virtuales. Entre estas herramientas, se encuentran: Workstation,
y Fusion de VMWare, Parallels Desktop para sistemas Mac, así como el
Oracle Virtual-Box.
 Paravirtualización: en esta técnica, el sistema operativo huésped se
modifica, para que pueda cooperar con el sistema operativo anfitrión, lo que
optimiza el rendimiento general de ambos sistemas. XenServer de Citrix
ofrece opciones de paravirtualización (WOLF, RUIZ, BERGERO, & MEZA,
2015).
 Ambientes de programación virtualizados: bajo este ambiente, se
virtualiza el ambiente de ejecución de un lenguaje de programación, de
manera que su código no requiera de ningún tipo de modificación, al migrar
de una plataforma de hardware a otra, en tanto exista una máquina virtual
del lenguaje en cuestión, para la plataforma de hardware donde se desea
ejecutar ese código. Esa es la idea subyacente en lenguajes de
programación como Java de Oracle, y la plataforma .NET de Microsoft, por
ejemplo.
 Emuladores Especializados: También se encuentran emuladores
especializados que posibilitan que las aplicaciones escritas para un
ambiente de hardware dado se ejecuten en un entorno de hardware muy
diferente, como un tipo diferente de CPU. El ejemplo clásico de este
escenario, lo encontramos en los emuladores de consolas de juego tales
como: Project 64, que emula al Nintendo 64, o Kega Fusion para Sega
Génesis, entre otros casos.
43
 Contenedores de Aplicaciones: hay ocasiones en que sólo se desea un
mecanismo que permita segregar a las aplicaciones, administrando su
rendimiento o uso de recursos, así como tener mecanismos simples de
iniciarlas, detenerlas, moverlas o administrarlas, pero manteniéndolas
dentro del mismo sistema operativo. Simplemente se desea que estén
segregadas del sistema operativo, contenidas en un ambiente controlado.
Es allí donde los contenedores de aplicaciones presentan fortalezas frente
a las otras tecnologías de virtualización, al permitir “separar” al sistema
operativo de las aplicaciones en cuestión. Los contenedores, o zonas,
simplemente crean una capa virtual entre el sistema operativo y las
aplicaciones que se desea aislar. En el contenedor, el sistema operativo,
así como sus dispositivos se encuentran virtualizados, de modo que las
aplicaciones de usuario dentro del contenedor, se comportan como si
fueran los únicos procesos corriendo dentro del sistema. Como ejemplo de
estas plataformas se encuentran: Oracle Solaris Zones, BSD Jails, IBM AIX
WPAR, así como docker y Kubernetes.
9.1.5.2 VENTAJAS Y DESVENTAJAS DE LAS MÁQUINAS
VIRTUALES
Todas las tecnologías tienen sus fortalezas y debilidades y las máquinas virtuales
no se escapan a esta realidad.
Entre las ventajas más relevantes que se pueden encontrar a las tecnologías de
virtualización, se puede resaltar (GARRIDO, SCHLESINGER, & HOGANSON,
2013), (SILBERSCHATZ, GALVIN, & GAGNE, 2018):
 Dentro de una plataforma de hardware, pueden coexistir varios sistemas
operativos distintos, todos aislados entre sí para por ejemplo probar un
44
sistema operativo diferente sin necesidad de instalarlo directamente en el
equipo.
 Las máquinas virtuales permiten simular hardware que no existe
físicamente.
 Se pueden reducir significativamente los costos de hardware, al consolidar
varios servidores como máquinas virtuales, en un único sistema físico, de
características adecuadas, sin interferencias entre sí, y compartiendo
dinámicamente los recursos del sistema.
 En ese mismo sentido, la consolidación de granjas de servidores en menor
cantidad de equipo puede representar un ahorro significativo en costos
asociados al mantenimiento de los servicios, tales como: reducción de las
facturas de energía eléctrica, disminución del tamaño de los locales
destinados a los centros de datos, disminución de la cantidad de equipos a
las que se debe dar mantenimiento preventivo, entre otros casos.
En otro orden de ideas, como desventaja, se puede observar que le agregan un
nivel de complejidad significativo al sistema en tiempo de ejecución, con la
consiguiente ralentización del mismo, frente a la ejecución del software en forma
nativa.
Esta situación se presenta sobre todo cuando el rendimiento del sistema anfitrión
no es lo suficientemente grande para ejecutar eficientemente todos los sistemas
huésped y se puede corregir con la selección adecuada de la plataforma, al
momento de comprarla, para que tenga las capacidades necesarias para ejecutar
eficientemente todas las tareas que se le asignarán, y que además tenga
posibilidades de ser actualizado y mejorado en la medida que se requiera.
45
9.2 POR LOS SERVICIOS QUE OFRECE
Esta clasificación es la más antigua, comúnmente usada y conocida desde el
punto de vista del usuario final; se puede comprender fácilmente con la ilustración
que se muestra y analiza a continuación (RAYA CABRERA & RAYA GONZÁLEZ,
2014).
Ilustración 18: Taxonomía de los Sistemas Operativos según los servicios ofrecidos
Fuente: (RAYA CABRERA & RAYA GONZÁLEZ, 2014)
9.2.1 POR EL NÚMERO DE PROCESOS
De acuerdo a la cantidad de procesadores que es capaz de administrar el sistema
operativo, ellos se clasifican como:
9.2.1.1 UNIPROCESO
Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un
procesador de la computadora, de manera que si la computadora tuviese más de
uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y
MacOS.
46
9.2.1.2 MULTIPROCESO
Un sistema operativo multiproceso se refiere al número de procesadores del
sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su
carga de trabajo.
Generalmente estos sistemas trabajan de dos formas: simétrica o
asimétricamente.
Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno
de los procesadores el cual jugará el papel de procesador maestro y servirá como
pivote para distribuir la carga a los demás procesadores, que reciben el nombre
de esclavos.
Por otro lado, cuando se trabaja de manera simétrica, los procesos o partes de
ellos (hilos o procesos ligeros5) son enviados indistintamente a cualquiera de los
procesadores disponibles, teniendo, teóricamente, una mejor distribución y
equilibrio en la carga de trabajo bajo este esquema.
Un aspecto importante a considerar en estos sistemas es la forma de crear
aplicaciones para aprovechar los varios procesadores.
5 Se dice que un hilo, proceso ligero o thread es la parte activa en memoria
y corriendo de un proceso, lo cual puede consistir de un área de memoria,
un conjunto de registros con valores específicos, la pila y otros valores de
contexto.
47
Así, existen aplicaciones que fueron hechas para correr en sistemas monoproceso
que no toman ninguna ventaja a menos que el sistema operativo o el compilador
detecte secciones de código paralelizable, los cuales son ejecutados al mismo
tiempo en procesadores diferentes.
Por otro lado, el programador puede modificar sus algoritmos y aprovechar por sí
mismo esta facilidad, pero esta última opción las más de las veces es costosa en
horas hombre y muy tediosa, obligando al programador a ocupar tanto o más
tiempo a la paralelización que a elaborar el algoritmo inicial.
9.2.2 POR EL NÚMERO DE USUARIOS
De acuerdo al número de los usuarios que soporta un sistema operativo, ellos se
clasifican como:
9.2.2.1 MONOUSUARIOS
Los sistemas operativos monousuarios son aquéllos que soportan a un usuario a
la vez, sin importar el número de procesadores que tenga la computadora o el
número de procesos o tareas que el usuario pueda ejecutar en un mismo instante
de tiempo. Las computadoras personales típicamente se han clasificado en este
renglón.
9.2.2.2 MULTIUSUARIOS
Los sistemas operativos multiusuarios son capaces de dar servicio a más de un
usuario a la vez, ya sea por medio de varias terminales conectadas a la
computadora o por medio de sesiones remotas en una red de comunicaciones.
No importa el número de procesadores en la máquina ni el número de procesos
que cada usuario puede ejecutar simultáneamente.
48
9.2.3 POR EL NÚMERO DE TAREAS
De acuerdo a la cantidad de tareas que se pueden realizar la vez por usuario, los
sistemas operativos se clasifican como:
9.2.3.1 MONOTAREAS
Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por
usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual
se admiten varios usuarios al mismo tiempo, pero cada uno de ellos puede estar
haciendo solo una tarea a la vez.
9.2.3.2 MULTITAREAS
Un sistema operativo multitarea es aquél que le permite al usuario estar realizando
varias labores al mismo tiempo. Por ejemplo, puede estar editando el código
fuente de un programa durante su depuración mientras compila otro programa, a
la vez que está recibiendo correo electrónico en un proceso en segundo plano.
Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el
ratón, lo cual permite un rápido intercambio entre las tareas para el usuario,
mejorando su productividad. Son la norma dentro de los sistemas operativos
modernos.
9.2.4 DE ACUERDO A LA FORMA EN QUE OFRECEN SUS
SERVICIOS
Esta clasificación también se refiere a una visión externa, que en este caso se
refiere a la del usuario, el cómo emplea los servicios.
49
Bajo esta clasificación se pueden identificar cuatro tipos principales (RAYA
CABRERA & RAYA GONZÁLEZ, 2014):
 Sistemas Centralizados
 Sistemas operativos en red
 Sistemas operativos distribuidos
 Sistemas operativos de escritorio
9.2.4.1 SISTEMAS CENTRALIZADOS
Fue el modelo predominante entre las computadoras mientras ellas fueron
dispositivos de costo elevado y bajo rendimiento.
Bajo esta arquitectura, los computadores centrales (conocidos como mainframe),
se ocupaban de realizar todo el procesamiento de los sistemas, en tanto que los
usuarios empleaban “terminales tontos”6.
En la actualidad este modelo se aplica en sistemas como los “Terminal Services”
de los sistemas operativos Microsoft, con la variante que sus terminales no son
tontos, en su lugar, utilizan computadores de escritorio.
6 Son sistemas que no poseen memoria RAM ni procesadores, únicamente
tienen mecanismos de entrada / salida y se conectan a un sistema
centralizado que realiza el procesamiento propiamente dicho.
50
9.2.4.2 SISTEMAS OPERATIVOS DE RED
Bajo este paradigma, los sistemas operativos de dos o más computadoras se
comunican a través de un medio de comunicación, con el objetivo de compartir
recursos e información.
En este escenario, cada computadora mantiene su sistema operativo, así como
su Sistema de Archivos locales, e independientes de los demás computadores.
El punto fundamental que deben tener los usuarios al utilizar estos sistemas, que
se debe aplicar la sintaxis de un grupo de comando o llamadas al sistema, para
efectuar operaciones entre los computadores, además de conocer la ubicación de
los recursos que se desea acceder.
Los sistemas operativos de red más populares son: Novell NetWare, Windows
Server, Linux Server, entre otros.
9.2.4.3 SISTEMAS OPERATIVOS DISTRIBUIDOS
Son sistemas casi independientes que posibilitan la distribución de tareas o
procesos entre un grupo de procesadores, localizados dentro del mismo equipo o
en computadores independientes, de forma transparente para el usuario.
Esta arquitectura de sistemas operativos permite abarcar las características de
los de red, al integrar recursos7 en una máquina virtual única que el usuario
7 Por recursos se debe entender: impresoras, unidades de almacenamiento,
memoria RAM, procesos, procesadores, entre otros componentes.
51
identifica como un único sistema. Es decir, el usuario no necesita conocer la
ubicación física de los recursos para utilizarlos, para el simplemente tienen un
nombre y los utiliza como si fueran locales.
Los sistemas operativos distribuidos más extendidos son los siguientes: Sprite,
Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, entre otros.
9.2.4.4 SISTEMAS OPERATIVOS DE ESCRITORIO
Son los que se utilizan regularmente en las computadoras personales, ya sean
equipos de sobremesa, computadoras portátiles o estaciones de trabajo
(TANENBAUM & BOS, 2015).
Dado que todos los computadores modernos, así como sus correspondientes
sistemas operativos tienen soporte para la multiprogramación, es normal que los
usuarios o los mismos sistemas operativos inicien docenas de programas en el
arranque del sistema, o a lo largo de las sesiones de trabajo.
La función de estos, en consecuencia, es la de ofrecer un soporte eficiente al
trabajo de un único usuario, que requiere ejecutar múltiples tareas, tales como
aplicaciones de ofimática básica o navegación por internet, entre otros casos.
Algunos de estos sistemas operativos son: MS-Windows, Apple macOS, Apple
iOS, GNU-Linux, FreeBSD, entre otros.
Estos sistemas operativos son tan conocidos que, hecho, muchos usuarios no
especializados ni siquiera son conscientes de que existen otros tipos de sistemas
operativos, fuera de estos.
52
10. EVOLUCIÓN / GENERACIONES DE LOS SISTEMAS
OPERATIVOS
En la evolución histórica de los sistemas operativos, al igual que en la del
hardware de las computadoras, se distinguen varios períodos o etapas evolutivas,
que se analizan a continuación:
10.1 GENERACIÓN CERO (ANTECEDENTES)
Abarca la década de los años 40 y se caracteriza por la ausencia de sistemas
operativos en los computadores. El usuario tenía acceso completo al lenguaje
máquina y todas las instrucciones se codificaban manualmente (O'REGAN, 2016).
Los propios usuarios eran quienes controlaban la ejecución de sus programas.
Era la época en que los computadores estaban compuestos totalmente por
sistemas electromecánicos (TANENBAUM & BOS, 2015), (CERUZZI, 2012).
Un ejemplo clásico de estos sistemas, es el Colossus, desarrollado por el gobierno
inglés durante la segunda guerra mundial, que les permitió la decodificación
eficiente de mensajes cifrados, para impulsar significativamente su victoria en
dicho conflicto.
53
Ilustración 19: Colossus Mark 2
Fuente: (O'REGAN, 2016)
10.2 PRIMERA GENERACIÓN
Abarca los años 50. La creación del primer sistema operativo se le atribuye a los
laboratorios de investigación de General Motors, y fue desarrollado para su
computador IBM 701 (CERUZZI, 2012). En 1955 General Motors y North
American Aviation colaboraron para desarrollar un sistema operativo para el IBM
704. Hacia 1957 ya se habían desarrollado, de manera particular, distintos
sistemas operativos para ese modelo de computador (O'REGAN, 2016). La
Ilustración 20, muestra el sistema antes mencionado.
54
Ilustración 20: IBM 701
Fuente: (O'REGAN, 2016)
El fin de estos primeros sistemas operativos era permitir en la máquina la
secuencia automática de los trabajos de los usuarios. De esta forma se conseguía
evitar el tiempo que se perdía, y que podía ser considerable, desde que un
proceso terminaba su ejecución hasta que comenzaba el siguiente. Para ello los
trabajos se organizaron en lotes (TANENBAUM & BOS, 2015).
Un trabajo en ejecución tenía el control total de la máquina y no comenzaba otro
hasta que se llegaba al final del que estaba en ejecución u ocurría un error. En
este último caso el sistema operativo daba alguna explicación rudimentaria sobre
lo que había ido mal y procedía inmediatamente con el siguiente trabajo del lote.
55
10.3 SEGUNDA GENERACIÓN
Con la introducción de la multiprogramación y el multiprocesamiento, se dio lugar
a la segunda generación, que ocupa la primera parte de la década de los años 60.
Estas tecnologías se desarrollaron debido al elevado coste que tenían los
computadores de aquella época, como un intento de mejorar el rendimiento en su
utilización y aumentar el número de trabajos ejecutados en un intervalo de tiempo
dado (CERUZZI, 2012).
El elemento clave en la concepción de la multiprogramación fue la diferencia de
velocidades entre los dispositivos de entrada y salida y el procesador. Un
programa que realizaba una petición de una operación de E/S, y que no podía
continuar hasta que esta se hubiera completado, dejaba al procesador, el recurso
más valioso del sistema, desocupado durante todo el tiempo de espera
(TANENBAUM & BOS, 2015).
Con la multiprogramación varios programas podían residir a la vez en memoria y
el procesador se podía conmutar rápidamente entre ellos, lo que permitía que un
trabajo pudiera estar realizando cálculos a la vez que otro leía de una cinta
magnética, un tercero escribía en un disco, y así sucesivamente.
En los sistemas con multiprocesamiento se utilizaban varios procesadores en un
único computador para lograr una mayor potencia de cálculo en la máquina.
También aparecieron en esta época los primeros sistemas de tiempo real
dedicados al control de procesos industriales y para monitorizar miles de puntos
con fines militares (O'REGAN, 2016).
En estos sistemas, más que tenerlos muy ocupados, se requería que su respuesta
ante una serie de sucesos externos sea lo más rápida que sea posible. Por
56
ejemplo, el aumento de la temperatura en un punto de una refinería de petróleo
debería comunicarse inmediatamente para tomar las acciones oportunas para
evitar una explosión.
Los sistemas más relevantes de esta época fueron:
 El Master Control Program (MCP) de Burroughs diseñado para su
computadora B5000: El MCP fue escrito en un lenguaje de alto nivel y
poseía muchas de las características que proporcionan los sistemas
actuales: multiprogramación, multiprocesamiento, memoria virtual y la
capacidad de depurar el lenguaje fuente.
 El sistema SABRE de IBM y American Airlines destinados a las reservas
de viajes: El sistema SABRE se diseñó bajo el enfoque del tiempo
compartido, con miles de terminales distribuidos por toda la geografía
norteamericana, desde los cuales se podía interactuar directamente con el
sistema central. El usuario hacía una petición desde un terminal y el
computador procesaba la petición y respondía a través del terminal tan
pronto como podía, a veces en un tiempo inferior a un segundo. Sin
embargo, este sistema estaba dirigido a una única función previamente
mencionada (STEARNS, 2011).
 El sistema SAGE (Semi-Automatic Ground Enviroment): desarrollado para
rastrear e interceptar aviones enemigos en Norteamérica, por parte del
Mando Norteamericano de Defensa Aeroespacial (NORAD).
La Ilustración 21, muestra la instalación completa del Sistema SAGE.
57
Ilustración 21: Sistema SAGE
Fuente: (O'REGAN, 2016)
El primer sistema de tiempo compartido de propósito general documentado fue el
Compatible Time-Sharing System (CTSS) desarrollado en el Instituto Tecnológico
de Massachusetts (MIT) bajo la dirección de Fernando Corbató y que corría en un
IBM 709/7090. El proyecto se inició en 1961 y se puso en funcionamiento en 1963.
Entre las características de este sistema estan (O'REGAN, 2016):
 Empleo de numerosos terminales conectados al computador que se podían
usar al mismo tiempo.
 Cada terminal de usuario parecía tener disponible toda la potencia de la
máquina y todo el software del computador.
 El tiempo necesario para realizar tareas no muy grandes era lo
suficientemente pequeño como para hacer pensar a los usuarios que
tenían la máquina sólo para su servicio.
58
 Disponía de varios compiladores, utilidades para el manejo de archivos y
aplicaciones específicas.
La Ilustración 22, presenta una instalación completa de un sistema IBM 7090.
Ilustración 22: Instalación típica de un sistema IBM 7090
Fuente: (MICHAEL, et al., 1983)
10.4 TERCERA GENERACIÓN
Esta generación se inicia con la introducción en 1964 de la familia de
computadores lBM/360. El sistema operativo de esta familia de computadores era
el OS/360. La Ilustración 23, exhibe una instalación típica de la época de estos
equipos.
59
Ilustración 23: Instalación Típica de un grupo de sistemas IBM/360
Fuente: (CERUZZI, 2012)
Aunque el sistema operativo no poseía algunas de las características más
avanzadas de otros sistemas, como el MCP de Burroughs, excedía con mucho al
resto de los sistemas en el área de apoyo al cliente (O'REGAN, 2016).
El sistema operativo disponía de la mayor cantidad de programas de utilidad para
facilitar el uso del computador que se había suministrado hasta la fecha. Además,
el sistema permitía avanzar en la serie de hardware, según aumentaban las
necesidades de potencia de cálculo, sin que fuera necesario cambiar de sistema
operativo, lo que representa un avance en la época, ya que significaba que se
ofrecía cierto nivel de independencia entre el hardware y el sistema operativo.
La generación se extiende hasta mediados de los años 70. Se caracteriza por el
desarrollo de sistemas operativos grandes y costosos que pretendían incorporar
todas las posibilidades. Algunos proporcionaban simultáneamente el
60
procesamiento por lotes, el procesamiento en tiempo real, el procesamiento en
tiempo compartido y el multiprocesamiento. El inconveniente era que obligaban a
muchos usuarios a pagar un precio muy elevado y aprender más de lo que
realmente necesitaban (O'REGAN, 2016).
10.5 CUARTA GENERACIÓN
La cuarta generación corresponde al estado actual del arte (TANENBAUM & BOS,
2015). La mayoría de los sistemas operativos de los computadores grandes son
descendientes directos de los de la tercera generación, tales como el Multics de
Honeywell, VMS y VM/370 de IBM y el Scope de Control Data. Así mismo,
encontramos para los sistemas móviles y de escritorio a los desarrollos tales como
Unix, MS-Windows, Mac OS, Linux o Android, entre otros. Todos estos sistemas
disponen de (O'REGAN, 2016):
 Multiprogramación.
 Tiempo compartido.
 Memoria virtual.
 Procesos secuenciales que cooperan por medio de semáforos.
 Sistemas de archivos jerárquicos.
 Entrada / Salida independiente del dispositivo.
Posiblemente el más influyente de los sistemas operativos actuales sea Unix. Su
desarrollo se realizó adoptando muchas de las ideas que se introdujeron en
Multics.
Sin embargo, existe una diferencia esencial entre ambos; consiste en que Multics
se desarrolló para grandes computadores; en cambio, Unix se diseñó a principio
61
de los años 70 en los laboratorios de la Bell en torno al minicomputador más
característico de la época, el PDP-11 de Digital y con una dimensión de un orden
de magnitud inferior a aquel, lo que lo convierte en un sistema operativo más
accesible al público en general (CERUZZI, 2012), (O'REGAN, 2016). La
Ilustración 24, presenta a un computador PDP-11.
Ilustración 24: Computador PDP-11
Fuente: (O'REGAN, 2016)
A pesar de su menor tamaño Unix retiene la mayor parte de las características
más útiles de su predecesor, tales como procesos, sistema de archivos
jerárquicos, independencia de los dispositivos, redirección de la entrada-salida y
un lenguaje de intérprete de órdenes (shell) de alto nivel. La mayor parte de Unix
se escribió en el lenguaje C, lo que le ha permitido ser transportado a una gran
62
variedad de procesadores, desde grandes máquinas a computadores personales
(O'REGAN, 2016).
En los años 80, paralelamente a la popularización de las computadoras
personales, se desarrollaron un gran número de sistemas operativos para ellas,
entre los que destacan el MS-DOS, Apple II, CP/M y Xenix. Todos estos sistemas
estaban muy limitados en sus funciones. Se desarrollaron inicialmente para
microprocesadores de 8 y16 bits con poca capacidad de memoria.
Sin embargo, la velocidad y la capacidad de memoria actuales son ahora
suficientes como para soportar sistemas operativos con todas sus posibilidades,
tales como la familia MS-Windows y los Linux, entre otros.
Dos aspectos que caracterizan los sistemas actuales son las redes de
computadores y los sistemas distribuidos. Los usuarios de la cuarta generación
no están limitados ya a comunicarse con un solo computador en tiempo
compartido. Los computadores personales están equipados con programas de
comunicaciones que les permiten acceder a informaciones localizadas en bases
de datos dispersas geográficamente (COULOURIS, DOLLIMORE, KINDBERG, &
BLAIR, 2012).
Sistemas operativos como Unix y VMS de Digital, creados originalmente con el fin
de servir a una única máquina, han evolucionado para adaptarse a las redes de
computadores. El sistema de archivos de red de Sun Microsystems conocido
como NFS (Network File System) fue uno de los primeros sistemas de archivos
basado en Unix en ofrecer un espacio único de nombres de archivos situado por
encima de una red de servidores y estaciones de trabajo.
63
Actualmente el diseño de los sistemas operativos encuentra nuevos retos con la
construcción de computadores paralelos que disponen de miles de procesadores
(COULOURIS, DOLLIMORE, KINDBERG, & BLAIR, 2012).
Para estas máquinas los sistemas operativos deben dar soporte a la comunicación
y a la sincronización extremadamente rápida de miles de procesadores. Cada
procesador puede disponer de sus propios dispositivos, lo que hace que el
sistema operativo deba controlar a la vez a miles de canales de entrada / salida.
Conceptos tales como memoria virtual y tiempo compartido deben extenderse
para adaptarse al paralelismo masivo.
Quizás el desafío más importante es conseguir que el entorno de programación
de estos sistemas permita desarrollar programas paralelos con un esfuerzo sólo
ligeramente superior al de la escritura de un programa secuencial (COULOURIS,
DOLLIMORE, KINDBERG, & BLAIR, 2012).
11. CONCLUSIONES
Al concluir este apunte, se pueden plantear las conclusiones que se exponen a
continuación:
 El sistema operativo es un programa muy especial que se encarga de
administrar los recursos de hardware y software, así como ofrecer al
usuario un mecanismo de comunicación con el hardware del computador.
 Los sistemas operativos han evolucionado paralelamente con el desarrollo
del hardware de la computadora.
 Los atributos esenciales de todo sistema operativo son: comodidad en su
uso, eficiencia y capacidad de evolución.
64
 El sistema operativo tiene como funciones principales: actuar como interfaz
entre el usuario y el computador, administrar los recursos de hardware y
software del sistema y evolucionar en forma dinámica con el tiempo.
 Estructuralmente todo sistema operativo está compuesto por tres
componentes básicos: el núcleo o Kernel, el interfaz de programación o API
y por el intérprete de comandos o Shell. Desarrollos recientes no
estandarizados establecen la inclusión de una nueva capa de abstracción
de hardware (HAL).
 Los sistemas operativos operan en los modos de Consola, a través de
ordenes escritas, así como en el modo Gráfico, donde poseen ayuda
contextual, interfaz gráfica y apoyo a señalar y tocar con dispositivos
apuntadores como el mouse.
 Los sistemas operativos pueden ser clasificados de múltiples maneras
tales como: por su estructura, de acuerdo a los servicios que ofrecen, así
como de acuerdo a la forma en que ofrecen sus servicios, entre otros
casos.
12. CONSIGNAS DE APRENDIZAJE Y EVALUACIÓN
Luego de haber leído y analizado el documento, en forma independiente, titulado:
ORGANIZACIÓN Y ESTRUCTURA DE LOS SISTEMAS
OPERATIVOS
Y de haber profundizado con el facilitador y sus compañeros, se espera que esté
en capacidad de realizar las siguientes tareas de evaluación:
65
12.1 EVALUACIÓN FORMATIVA
 DISCUTIR la historia, el concepto, las funciones e importancia de los
sistemas operativos.
 ESTABLECER los componentes fundamentales de todo sistema operativo.
 IDENTIFICAR las etapas evolutivas de los sistemas operativos.
 DEBATIR las clasificaciones que organizan a los sistemas operativos.
12.2 EVALUACIÓN SUMATIVA
1. Realizar una SÍNTESIS del contenido.
2. Extraer las IDEAS PRINCIPALES del contenido.
3. Construir un mapa conceptual que sintetice todo el apunte.
4. Prepararse para la prueba parcial correspondiente.
13. REFERENCIAS BIBLIOGRÁFICAS
CERUZZI, P. (2012). Computing: a concise history (First ed.). Cambridge, United
States of America: MIT Press.
COULOURIS, G., DOLLIMORE, J., KINDBERG, T., & BLAIR, G. (2012).
Distributed systems: Concepts and design (Fifth ed.). Boston, United States
of America: Addison-Wesley.
DÍAZ MARTÍNEZ, J., CHAOS GARCÍA, D., MUÑOZ MANSILLA, R., & ARANDA
ALMANSA, J. (2011). Fundamentos Básicos De Los Sistemas Operativos
(Primera ed.). Madrid, España: Sanz Y Torres.
66
GARRIDO, J., SCHLESINGER, R., & HOGANSON, K. (2013). Principles of
modern operating systems (Second ed.). Burlington, United States of
America: Jones & Bartlett Learning.
HOLCOMBE, J., & HOLCOMBE, C. (2017). Survey of operating systems (Fifth
ed.). New York, United States of America: McGraw-Hill Education.
HOLT, A., & HUANG, C.-Y. (2018). Embedded Operating Systems: A Practical
Approach (Second ed.). Cham, Switzerland: Springer.
LEE, K. (2017). Foundations of Programming Languages (Second ed.). Cham,
Switzerland: Springer.
MICHAEL, G., WILLIAMS, C., DANIELSON, S., DONNELLEY, J., COLEMAN, S.,
& DEBONI, T. (1983). The IBM 7090 and 7094 Systems. Retrieved April 15,
2018, from Stories of the Development of Large Scale Scientific Computing
at Lawrence Livermore National Laboratory: http://www.computer-
history.info/Page4.dir/pages/IBM.7090.dir/images/Picture.9.jpg
O'REGAN, G. (2016). Introduction to the history of computing: A computing history
primer (First ed.). Cham, Switzerland: Springer.
PARHAMI, B. (2007). Arquitectura de Computadoras: De los Microprocesadores
a las Supercomputadoras (Primera ed.). México, México: McGraw-Hill.
RAYA CABRERA, J., & RAYA GONZÁLEZ, L. (2014). Implantación de sistemas
operativos (Primera ed.). Madrid, España: Ra-Ma.
67
SILBERSCHATZ, A., GALVIN, P., & GAGNE, G. (2018). Operating System
Concepts (Tenth ed.). Hoboken, United States of America: John Wiley &
Sons.
STALLINGS, W. (2016). Computer Organization and Architecture: Designing for
Performance (Tenth ed.). Boston, United States of America: Pearson.
STALLINGS, W. (2018). Operating system: Internals and design principles (Ninth
ed.). Hoboken, United States of America: Pearson Education, Inc.
STEARNS, D. (2011). Electronic value exchange: Origins of the VISA electronic
payment system (First ed.). London, United Kingdom: Springer.
TANENBAUM, A., & BOS, H. (2015). Modern operating systems (Fourth ed.).
Upper Saddle River, United States of America: Pearson Education, Inc.
WOLF, G., RUIZ, E., BERGERO, F., & MEZA, E. (2015). Fundamentos de
sistemas operativos (Primera ed.). México, México: Universidad Nacional
Autónoma de México.

Más contenido relacionado

La actualidad más candente

Normas para cableado estructurado
Normas para cableado estructuradoNormas para cableado estructurado
Normas para cableado estructuradoJose
 
Banco de temas de tesis para la carrera de ing. de sistemas
Banco de temas de tesis para la carrera de ing. de sistemasBanco de temas de tesis para la carrera de ing. de sistemas
Banco de temas de tesis para la carrera de ing. de sistemasbrccq
 
Diseño e implementacíon de cableado de redes de datos Completo
Diseño e implementacíon de cableado de redes de datos CompletoDiseño e implementacíon de cableado de redes de datos Completo
Diseño e implementacíon de cableado de redes de datos Completorosa carolina rodriguez ventura
 
Algoritmos DEKKER y PETERSON
Algoritmos DEKKER y PETERSONAlgoritmos DEKKER y PETERSON
Algoritmos DEKKER y PETERSONPANAFMX
 
Medios de transmision guiados y no guiados
Medios de transmision guiados y no guiadosMedios de transmision guiados y no guiados
Medios de transmision guiados y no guiadosJennifer Tafur Gutierrez
 
Comparacion entre el modelo TCP/IP Y MODELO OSI
Comparacion entre el modelo TCP/IP Y MODELO OSIComparacion entre el modelo TCP/IP Y MODELO OSI
Comparacion entre el modelo TCP/IP Y MODELO OSIdariospeed
 
Sistemas paralelos vs distribuidos
Sistemas paralelos vs distribuidosSistemas paralelos vs distribuidos
Sistemas paralelos vs distribuidosJesús Navarro
 
MEDIOS DE TRANSMISION: GUIADOS Y NO GUIADOS
MEDIOS DE TRANSMISION:  GUIADOS Y NO GUIADOSMEDIOS DE TRANSMISION:  GUIADOS Y NO GUIADOS
MEDIOS DE TRANSMISION: GUIADOS Y NO GUIADOSJonathan Javier Poot Moo
 
El hardware de comunicaciones de datos
El hardware de comunicaciones de datosEl hardware de comunicaciones de datos
El hardware de comunicaciones de datosRoderick Cantera PTY
 
Mapa conceptual sobre
Mapa conceptual sobre Mapa conceptual sobre
Mapa conceptual sobre Juan Anaya
 
Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)claudiachiri
 
Procedimientos especiales
Procedimientos especialesProcedimientos especiales
Procedimientos especialesAnel Sosa
 
presupuesto de red lan
presupuesto de red lanpresupuesto de red lan
presupuesto de red lanDyfre Memenay
 

La actualidad más candente (20)

Normas para cableado estructurado
Normas para cableado estructuradoNormas para cableado estructurado
Normas para cableado estructurado
 
Banco de temas de tesis para la carrera de ing. de sistemas
Banco de temas de tesis para la carrera de ing. de sistemasBanco de temas de tesis para la carrera de ing. de sistemas
Banco de temas de tesis para la carrera de ing. de sistemas
 
VLSM y CIDR
VLSM   y  CIDRVLSM   y  CIDR
VLSM y CIDR
 
Tecnicas de Administracion de Memoria
Tecnicas de Administracion de MemoriaTecnicas de Administracion de Memoria
Tecnicas de Administracion de Memoria
 
Algoritmo de dekker
Algoritmo de dekker Algoritmo de dekker
Algoritmo de dekker
 
Diseño e implementacíon de cableado de redes de datos Completo
Diseño e implementacíon de cableado de redes de datos CompletoDiseño e implementacíon de cableado de redes de datos Completo
Diseño e implementacíon de cableado de redes de datos Completo
 
Algoritmos DEKKER y PETERSON
Algoritmos DEKKER y PETERSONAlgoritmos DEKKER y PETERSON
Algoritmos DEKKER y PETERSON
 
Medios de transmision guiados y no guiados
Medios de transmision guiados y no guiadosMedios de transmision guiados y no guiados
Medios de transmision guiados y no guiados
 
Comparacion entre el modelo TCP/IP Y MODELO OSI
Comparacion entre el modelo TCP/IP Y MODELO OSIComparacion entre el modelo TCP/IP Y MODELO OSI
Comparacion entre el modelo TCP/IP Y MODELO OSI
 
Sistemas paralelos vs distribuidos
Sistemas paralelos vs distribuidosSistemas paralelos vs distribuidos
Sistemas paralelos vs distribuidos
 
MEDIOS DE TRANSMISION: GUIADOS Y NO GUIADOS
MEDIOS DE TRANSMISION:  GUIADOS Y NO GUIADOSMEDIOS DE TRANSMISION:  GUIADOS Y NO GUIADOS
MEDIOS DE TRANSMISION: GUIADOS Y NO GUIADOS
 
Rangos de IPs Públicas y Privadas
Rangos de IPs Públicas y PrivadasRangos de IPs Públicas y Privadas
Rangos de IPs Públicas y Privadas
 
El hardware de comunicaciones de datos
El hardware de comunicaciones de datosEl hardware de comunicaciones de datos
El hardware de comunicaciones de datos
 
Medios de conexión de redes
Medios de conexión de redesMedios de conexión de redes
Medios de conexión de redes
 
Mapa conceptual sobre
Mapa conceptual sobre Mapa conceptual sobre
Mapa conceptual sobre
 
Direccionamiento Ip Y Subredes Ejercicios Resueltos
Direccionamiento Ip Y Subredes Ejercicios ResueltosDireccionamiento Ip Y Subredes Ejercicios Resueltos
Direccionamiento Ip Y Subredes Ejercicios Resueltos
 
Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)Base de datos (diseño conceptual,logico y fisico)
Base de datos (diseño conceptual,logico y fisico)
 
Procedimientos especiales
Procedimientos especialesProcedimientos especiales
Procedimientos especiales
 
presupuesto de red lan
presupuesto de red lanpresupuesto de red lan
presupuesto de red lan
 
DISEÑO DE SALIDA DEL SISTEMA
DISEÑO DE SALIDA DEL SISTEMADISEÑO DE SALIDA DEL SISTEMA
DISEÑO DE SALIDA DEL SISTEMA
 

Similar a Organización Y Estructura De Los Sistemas Operativos

Generalidades de la auditoria de sistemas
Generalidades de la auditoria de sistemasGeneralidades de la auditoria de sistemas
Generalidades de la auditoria de sistemasGlendyVirula
 
Windows Phone 2019
Windows Phone 2019Windows Phone 2019
Windows Phone 2019SimonFelipe
 
Servis desk ejemplo con ITIL
Servis desk  ejemplo con ITILServis desk  ejemplo con ITIL
Servis desk ejemplo con ITILCésar Ocampo
 
Guia desarrolloplancontinuidadnegocio
Guia desarrolloplancontinuidadnegocioGuia desarrolloplancontinuidadnegocio
Guia desarrolloplancontinuidadnegocioCesar Espinoza
 
Auditoria de sistemas
Auditoria de sistemas Auditoria de sistemas
Auditoria de sistemas Kery Maeda
 
Boletin_Convocatorias_Empleo_17Enero.pdf
Boletin_Convocatorias_Empleo_17Enero.pdfBoletin_Convocatorias_Empleo_17Enero.pdf
Boletin_Convocatorias_Empleo_17Enero.pdfEnlaceswebs
 
Manual supervivencia administracion_electronica
Manual supervivencia administracion_electronicaManual supervivencia administracion_electronica
Manual supervivencia administracion_electronicadomingosuarez
 
Sistema de control, secuencia y termino
Sistema de control, secuencia y terminoSistema de control, secuencia y termino
Sistema de control, secuencia y terminoYadira Fuentes
 
Proyecto de tesis - Policía de Transito del Perú
Proyecto de tesis - Policía de Transito del PerúProyecto de tesis - Policía de Transito del Perú
Proyecto de tesis - Policía de Transito del PerúLuigy Terrazos Luna
 

Similar a Organización Y Estructura De Los Sistemas Operativos (20)

Redes Internet
Redes InternetRedes Internet
Redes Internet
 
Tesis final
Tesis finalTesis final
Tesis final
 
1593.11 pliego
1593.11 pliego1593.11 pliego
1593.11 pliego
 
Generalidades de la auditoria de sistemas
Generalidades de la auditoria de sistemasGeneralidades de la auditoria de sistemas
Generalidades de la auditoria de sistemas
 
Windows Phone 2019
Windows Phone 2019Windows Phone 2019
Windows Phone 2019
 
Servis desk ejemplo con ITIL
Servis desk  ejemplo con ITILServis desk  ejemplo con ITIL
Servis desk ejemplo con ITIL
 
Guia desarrolloplancontinuidadnegocio
Guia desarrolloplancontinuidadnegocioGuia desarrolloplancontinuidadnegocio
Guia desarrolloplancontinuidadnegocio
 
Auditoria de sistemas
Auditoria de sistemas Auditoria de sistemas
Auditoria de sistemas
 
Manual de inf para negocios
Manual de inf para negociosManual de inf para negocios
Manual de inf para negocios
 
Boletin_Convocatorias_Empleo_17Enero.pdf
Boletin_Convocatorias_Empleo_17Enero.pdfBoletin_Convocatorias_Empleo_17Enero.pdf
Boletin_Convocatorias_Empleo_17Enero.pdf
 
Sesion 3. inteligencia de negocios
Sesion 3. inteligencia de negociosSesion 3. inteligencia de negocios
Sesion 3. inteligencia de negocios
 
Tesis pre - grado
Tesis pre - gradoTesis pre - grado
Tesis pre - grado
 
Vive Digital
Vive Digital Vive Digital
Vive Digital
 
Vivo vive digital
Vivo vive digitalVivo vive digital
Vivo vive digital
 
El rol de las tic en la competitividad de las PyME - María Verónica Alderete
El rol de las tic en la competitividad de las PyME - María Verónica AldereteEl rol de las tic en la competitividad de las PyME - María Verónica Alderete
El rol de las tic en la competitividad de las PyME - María Verónica Alderete
 
El rol de las TIC en la competitividad de las PyME - Verónica Alderete
El rol de las TIC en la competitividad de las PyME - Verónica AldereteEl rol de las TIC en la competitividad de las PyME - Verónica Alderete
El rol de las TIC en la competitividad de las PyME - Verónica Alderete
 
Manual supervivencia administracion_electronica
Manual supervivencia administracion_electronicaManual supervivencia administracion_electronica
Manual supervivencia administracion_electronica
 
Sistema de control, secuencia y termino
Sistema de control, secuencia y terminoSistema de control, secuencia y termino
Sistema de control, secuencia y termino
 
Proyecto de tesis - Policía de Transito del Perú
Proyecto de tesis - Policía de Transito del PerúProyecto de tesis - Policía de Transito del Perú
Proyecto de tesis - Policía de Transito del Perú
 
69369
6936969369
69369
 

Último

BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 

Último (7)

BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 

Organización Y Estructura De Los Sistemas Operativos

  • 1. UNIVERSIDAD DE PANAMÁ FACULTAD DE INFORMÁTICA, ELECTRÓNICA Y COMUNICACIÓN CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS APUNTE: ORGANIZACIÓN Y ESTRUCTURA DE LOS SISTEMAS OPERATIVOS AUTOR: RAÚL ENRIQUE DUTARI DUTARI. ASIGNATURA: SISTEMAS OPERATIVOS II INF 414. CARRERA: LICENCIATURA EN INFORMÁTICA PARA LA GESTIÓN EDUCATIVA Y EMPRESARIAL. CÓDIGO DE ASIGNATURA: 28023. CÓDIGO DE HORARIO: 8223. PERÍODO ACADÉMICO: PRIMER SEMESTRE DE 2020. SEDE: CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS.
  • 2. ÍNDICE GENERAL Índice general ....................................................................................................................ii Índice de ilustraciones ....................................................................................................vii 1. Fines........................................................................................................... 1 1.1 Competencias........................................................................................... 1 1.2 Sub-competencias ................................................................................... 1 2. Introducción............................................................................................... 2 3. Concepto de sistema operativo ............................................................. 2 4. Servicios que ofrecen los Sistemas Operativos .................................. 3 4.1 Punto de vista del usuario....................................................................... 4 4.2 Punto de vista del sistema, organización interna del computador: .............................................................................................. 7 4.2.1 El sistema operativo como administrador de recursos ...................... 7 4.2.2 El sistema operativo como software dinámico-evolutivo .................10 5. Características Principales de los Sistemas Operativos (Atributos Esenciales)............................................................................12 5.1 Importancia Dentro De Los Sistemas Informáticos ..........................13
  • 3. iii 6. Componentes funcionales de los Sistemas Operativos...................14 6.1 Interfaz de usuario .................................................................................14 6.2 Intérprete de comandos ........................................................................15 6.3 Llamadas al sistema ..............................................................................15 6.4 Administrador de recursos de Hardware y Software ........................16 7. Componentes Estructurales de los Sistemas Operativos ...............17 7.1 Kernel .......................................................................................................17 7.2 Shell..........................................................................................................17 7.3 Interfaz de usuario .................................................................................17 7.3.1 Funcionamiento básico del sistema operativo...................................18 7.3.1.1 Modo Consola.........................................................................................18 7.3.1.2 Modo Gráfico...........................................................................................22 8. Operación en bajo nivel de los Sistemas Operativos.......................24 8.1 Interrupciones de hardware ..................................................................26 8.2 Excepciones de software ......................................................................27 8.3 Operaciones en modo dual...................................................................27
  • 4. iv 8.3.1 Modo supervisor.....................................................................................28 8.3.2 Modo usuario ..........................................................................................29 8.3.3 Funcionamiento del modo dual............................................................30 9. Clasificación de los Sistemas Operativos ..........................................31 9.1 Por su estructura ....................................................................................31 9.1.1 Estructura Simple / Monolítica .............................................................32 9.1.2 Estructura por niveles, capas o anillos ...............................................34 9.1.3 Estructura Microkernel...........................................................................36 9.1.4 Estructura Modular.................................................................................39 9.1.5 Máquinas virtuales .................................................................................40 9.1.5.1 Clasificación de las máquinas virtuales ..............................................41 9.1.5.2 Ventajas y desventajas de las máquinas virtuales ...........................43 9.2 Por los servicios que ofrece .................................................................45 9.2.1 Por el número de procesos...................................................................45 9.2.1.1 Uniproceso ..............................................................................................45 9.2.1.2 Multiproceso............................................................................................46
  • 5. v 9.2.2 Por el número de usuarios....................................................................47 9.2.2.1 Monousuarios .........................................................................................47 9.2.2.2 Multiusuarios...........................................................................................47 9.2.3 Por el número de tareas........................................................................48 9.2.3.1 Monotareas .............................................................................................48 9.2.3.2 Multitareas ...............................................................................................48 9.2.4 De acuerdo a la forma en que ofrecen sus servicios .......................48 9.2.4.1 Sistemas centralizados .........................................................................49 9.2.4.2 Sistemas Operativos de red .................................................................50 9.2.4.3 Sistemas Operativos Distribuidos........................................................50 9.2.4.4 Sistemas operativos de escritorio........................................................51 10. Evolución / generaciones de los Sistemas Operativos ....................52 10.1 Generación cero (antecedentes) .........................................................52 10.2 Primera generación................................................................................53 10.3 Segunda generación..............................................................................55 10.4 Tercera generación................................................................................58
  • 6. vi 10.5 Cuarta generación..................................................................................60 11. Conclusiones...........................................................................................63 12. Consignas de aprendizaje y evaluación.............................................64 12.1 Evaluación formativa .............................................................................65 12.2 Evaluación sumativa..............................................................................65 13. Referencias bibliográficas.....................................................................65
  • 7. ÍNDICE DE ILUSTRACIONES Ilustración 1: Niveles y vistas de un sistema informático...........................................4 Ilustración 2: El sistema operativo como administrador de recursos.......................9 Ilustración 3: Consola MS-DOS...................................................................................19 Ilustración 4: Consola MS-Windows 9X .....................................................................19 Ilustración 5: Consola MS-Windows 10......................................................................20 Ilustración 6: Consola GNU-Linux...............................................................................20 Ilustración 7: Ciclo de operación del modo consola .................................................21 Ilustración 8: Xerox Alto personal computer ..............................................................23 Ilustración 9: Escritorio de un sistema operativo gráfico .........................................24 Ilustración 10: Ciclo de ejecución de instrucciones con interrupciones ................25 Ilustración 11: Ejecución de instrucciones con y sin interrupciones ......................26 Ilustración 12: Interacción de los modos de operación del SO con el Hardware y el Software del sistema .........................................................................................28 Ilustración 13: Transiciones entre los modos usuario y kernel...............................30 Ilustración 14: Estructuración básica para un sistema operativo monolítico........32
  • 8. viii Ilustración 15: Estructura por niveles del sistema operativo THE ..........................35 Ilustración 16: Estructura por anillos de los Sistemas Operativos .........................36 Ilustración 17: Estructura simplificada de un sistema operativo microkernel .......38 Ilustración 18: Taxonomía de los Sistemas Operativos según los servicios ofrecidos ..................................................................................................................45 Ilustración 19: Colossus Mark 2 ...................................................................................53 Ilustración 20: IBM 701..................................................................................................54 Ilustración 21: Sistema SAGE ......................................................................................57 Ilustración 22: Instalación típica de un sistema IBM 7090.......................................58 Ilustración 23: Instalación Típica de un grupo de sistemas IBM/360.....................59 Ilustración 24: Computador PDP-11 ...........................................................................61
  • 9. 1. FINES Este apunte está diseñado para el estudio de las características principales que identifican a los sistemas operativos. Permite, al estudiante, conocer, comprender, discutir y analizar estos sistemas. En tal sentido, este documento realiza una introducción a los temas más relevantes relacionados a los fundamentos de los sistemas operativos, señalando las características más significativas y relevantes del funcionamiento de los Sistemas Operativos, de acuerdo a su evolución y desarrollo dentro del entorno informático. 1.1 COMPETENCIAS  Debate el concepto, los servicios, las funciones la estructura, la operaciónla evolución y las clasificaciones de los sistemas operativos modernos. 1.2 SUB-COMPETENCIAS  Establece el concepto de sistema operativo.  Debate los servicios que ofrecen los sistemas operativos.  Analiza las funciones de los sistemas operativos.  Contrasta la estructura de los sistemas operativos.  Comprende la operación de los sistemas operativos.  Describe la taxonomía de los sistemas operativos modernos.  Esquematiza la evolución histórica de los sistemas operativos.
  • 10. 2 2. INTRODUCCIÓN El desarrollo de los sistemas operativos, conjuntamente con las redes de computadoras, han posibilitado enormemente la expansión del computador como herramienta de trabajo universal. Cada día es más frecuente encontrar puestos de trabajo donde anteriormente no utilizaban las computadoras ni sus redes, y de un corto período de tiempo hacia acá, se están implementando rápidamente, sistemas informáticos basados en ambientes gráficos y que utilizan como soporte base a las redes de computadoras y al Internet. Sin embargo, ambas tecnologías son poco conocidas por el público en general. En consecuencia, esta brecha tecnológica se pretende que sea cubierta, aunque sea parcialmente, por este documento. Inicialmente, se realizará una breve introducción a los conceptos, funciones, estructura, importancia, para finalmente, analizar su estructura, funcionamiento, evolución y taxonomía más importantes. 3. CONCEPTO DE SISTEMA OPERATIVO Un sistema operativo, es un programa muy especial que se encarga esencialmente de (HOLCOMBE & HOLCOMBE, 2017):  Administrar los recursos de hardware y software en el sistema.  Ofrecer al usuario un mecanismo de comunicación entre él y el hardware del computador.
  • 11. 3 Es decir, un sistema operativo es un programa que controla la ejecución de los programas de aplicación y que actúa como interfaz entre el usuario de un computador y el hardware de la misma (TANENBAUM & BOS, 2015). 4. SERVICIOS QUE OFRECEN LOS SISTEMAS OPERATIVOS Las funciones principales que debe desempeñar cualquier sistema operativo moderno se pueden englobar en dos grandes áreas (STALLINGS, Operating system: Internals and design principles, 2018), (DÍAZ MARTÍNEZ, CHAOS GARCÍA, MUÑOZ MANSILLA, & ARANDA ALMANSA, 2011):  Desde el punto de vista del usuario: Ofrecer una interface Usuario / Computadora funcional.  Desde el punto de vista del sistema, en términos de la organización interna del computador:  Ofrecer un sistema eficiente de administración de recursos de hardware y software.  Ofrecer una plataforma de trabajo flexible y versátil, capaz de evolucionar conjuntamente a los avances tecnológicos del hardware y del software que coexisten con él. A continuación, se tratarán estos aspectos de los sistemas operativos con mayor nivel de detalle.
  • 12. 4 4.1 PUNTO DE VISTA DEL USUARIO En la óptica del usuario final, el sistema operativo actúa simplemente como un interfaz usuario / computadora. Con mayor detalle, el hardware y el software que se utilizan para proveer de aplicaciones a los usuarios pueden contemplarse de forma estratificada o jerárquica, como se muestra en la siguiente ilustración: Ilustración 1: Niveles y vistas de un sistema informático Fuente: (STALLINGS, Operating system: Internals and design principles, 2018) Al usuario de estas aplicaciones se le llama usuario final y, generalmente, no tiene que ocuparse de la arquitectura del computador. Por tanto, el usuario final ve al sistema informático en términos de aplicaciones. Las aplicaciones pueden construirse con un lenguaje de programación y son desarrolladas por programadores de aplicaciones. Si se tuviera que desarrollar un programa de aplicación como un conjunto de instrucciones máquina que sean del todo responsables del control del hardware, se tendría una tarea abrumadora y compleja. Para facilitar esta tarea, se ofrecen una serie de programas de sistemas. Algunos de estos programas se denominan utilidades e implementan funciones
  • 13. 5 muy utilizadas que ayudan a la creación de los programas, la gestión de los archivos y el control de los dispositivos de entrada / salida. Los programadores hacen uso de estos servicios en el desarrollo de una aplicación y ésta, mientras se está ejecutando, invoca a estas utilidades para llevar a cabo ciertas acciones. El programa de sistemas más importante es el sistema operativo. El sistema operativo oculta al programador los detalles del hardware y le proporciona una interfaz cómoda para utilizar el sistema. Actúa como mediador, facilitándole al programador y a los programas de aplicación el acceso y uso de todas esas características y servicios. De forma resumida, un sistema operativo ofrece servicios en las áreas siguientes (DÍAZ MARTÍNEZ, CHAOS GARCÍA, MUÑOZ MANSILLA, & ARANDA ALMANSA, 2011):  Creación de programas: El sistema operativo ofrece una variedad de características y servicios, tales como los editores y los depuradores (debuggers), para ayudar al programador en la creación de programas. Normalmente, estos servicios están en forma de programas de utilidad que no forman realmente parte del sistema operativo, pero que son accesibles a través del mismo.  Ejecución de programas: Para ejecutar un programa se necesita un cierto número de tareas. Las instrucciones y los datos se deben cargar en la memoria principal, los archivos y los dispositivos de entrada / salida se deben inicializar y se deben preparar otros recursos. El sistema operativo administra todas estas tareas para el usuario.  Acceso a los dispositivos de entrada salida (E/S): Cada dispositivo de E/S requiere un conjunto propio y peculiar de instrucciones o de señales de control para su funcionamiento. El sistema operativo tiene en cuenta estos
  • 14. 6 detalles de modo que el programador pueda pensar en forma de lecturas y escrituras simples.  Acceso controlado a los archivos: En el caso de los archivos, el control debe incluir una comprensión, no sólo de la naturaleza del dispositivo de E/S (controlador de disco, controlador de cinta) sino del formato de los archivos y del medio de almacenamiento. Una vez más, es el sistema operativo el que se encarga de los detalles. Es más, en el caso de sistemas con varios usuarios trabajando simultáneamente, es el sistema operativo el que brinda los mecanismos de control para controlar el acceso a los archivos.  Acceso al sistema: En el caso de un sistema compartido o público, el sistema operativo controla el acceso al sistema como un todo y a los recursos específicos del sistema. Las funciones de acceso pueden brindar protección, a los recursos y a los datos, ante usuarios no autorizados y debe resolver los conflictos en la propiedad de los recursos.  Detección y respuesta a errores: Cuando un sistema informático está en funcionamiento pueden producirse varios errores. Entre estos se incluyen los errores internos y externos del hardware, tales como los errores de memoria, fallos o mal funcionamiento de dispositivos y distintos tipos de errores de software, como el desbordamiento aritmético, el intento de acceder a una posición prohibida de memoria y la incapacidad del sistema operativo para satisfacer la solicitud de una aplicación. En cada caso, el sistema operativo debe dar una respuesta que elimine la condición de error con el menor impacto posible sobre las aplicaciones que están en ejecución. La respuesta puede ser desde terminar el programa que produjo el error, hasta reintentar la operación o, simplemente, informar del error a la aplicación.
  • 15. 7  Contabilidad: Un buen sistema operativo debe recoger estadísticas de utilización de los diversos recursos y supervisar los parámetros de rendimiento tales como el tiempo de respuesta. Para cualquier sistema, esta información es útil para anticiparse a la necesidad de mejoras futuras y para ajustar el sistema y así mejorar su rendimiento. En un sistema multiusuario, la información puede ser utilizada con propósito de cargar en cuenta – para efectos de cobro por el uso de los servicios del sistema -. 4.2 PUNTO DE VISTA DEL SISTEMA, ORGANIZACIÓN INTERNA DEL COMPUTADOR: En otro orden de ideas, el sistema operativo cumple dos funciones primordiales, a nivel interno del funcionamiento del computador, a saber (STALLINGS, Operating system: Internals and design principles, 2018):  Ofrecer un sistema eficiente de administración de recursos de hardware y software.  Ofrecer una plataforma de trabajo flexible y versátil, capaz de evolucionar conjuntamente a los avances tecnológicos del hardware y del software que coexisten con él. A continuación, se analizan, brevemente, estas funciones. 4.2.1 EL SISTEMAOPERATIVOCOMOADMINISTRADORDE RECURSOS Un computador es un conjunto de recursos para el traslado, almacenamiento y proceso de datos y para el control de estas funciones. El sistema operativo es el responsable de la gestión de estos recursos.
  • 16. 8 ¿Se puede afirmar que es el sistema operativo el que controla el traslado, almacenamiento y proceso de los datos? Desde un cierto punto de vista, la respuesta es afirmativa: Administrando los recursos del computador, el sistema operativo tiene el control sobre las funciones básicas de la misma. Pero este control se ejerce de una manera curiosa. Normalmente, se piensa en un mecanismo de control como algo externo a lo controlado o, al menos, como algo distinto y una parte separada de lo controlado. (Por ejemplo, un sistema de calefacción de una estancia es controlado por un termostato, que es algo completamente diferente de los aparatos de generación de calor y de distribución del calor). Este no es el caso de un sistema operativo, que no es habitual como mecanismo de control en dos aspectos:  El sistema operativo funciona de la misma manera que el software normal de un computador, es decir, es un programa ejecutado por el procesador.  El sistema operativo abandona con frecuencia el control y debe depender del procesador para recuperarlo. El sistema operativo es, de hecho, nada más que un programa del computador. Como otros programas de computador, da instrucciones al procesador. La diferencia clave está en el propósito del programa. El sistema operativo dirige al procesador en el empleo de otros recursos del sistema y en el control del tiempo de ejecución de otros programas. Pero para que el procesador pueda hacer estas cosas, debe cesar la ejecución del programa del sistema operativo y ejecutar otros programas. Así pues, el sistema operativo cede el control al procesador para hacer algún trabajo "útil" y luego lo retoma durante el tiempo suficiente para preparar el procesador para llevar a cabo la siguiente parte del trabajo. Los mecanismos
  • 17. 9 involucrados en estas acciones, se analizan con más detalle cuando se estudia la teoría de control, descripción y sincronización de procesos, que rebasa los propósitos de este documento. La ilustración que se muestra a continuación, presenta los recursos principales que son administrados por el sistema operativo: Ilustración 2: El sistema operativo como administrador de recursos Fuente: (STALLINGS, Operating system: Internals and design principles, 2018) Una parte del sistema operativo está en la memoria principal. En esta parte está el núcleo (kernel), que incluye las funciones utilizadas con más frecuencia en el sistema operativo y, en un momento dado, puede incluir otras partes del sistema operativo que estén en uso. El resto de la memoria principal contiene datos y otros programas de usuario.
  • 18. 10 A grandes rasgos1, la asignación de este recurso (la memoria principal) es controlada conjuntamente por el sistema operativo y por el hardware de gestión de memoria en el procesador. El sistema operativo decide cuándo puede utilizarse un dispositivo de E/S por parte de un programa en ejecución y controla el acceso y la utilización de los archivos. El procesador es, en sí mismo, un recurso y es el sistema operativo el que debe determinar cuánto tiempo del procesador debe dedicarse a la ejecución de un programa de usuario en particular. En el caso de sistemas multiprocesador, la decisión debe distribuirse entre todos los procesadores. 4.2.2 EL SISTEMA OPERATIVO COMO SOFTWARE DINÁMICO-EVOLUTIVO Un sistema operativo importante no puede permanecer estático en el tiempo. Obligatoriamente debe evolucionar a medida que transcurre su vida útil tiempo por una serie de razones:  Actualizaciones del hardware y nuevos tipos de hardware: Por ejemplo, las primeras versiones de UNIX y OS/2 no empleaban mecanismos de paginación, porque funcionaban en máquinas sin hardware de paginación2. Las versiones más recientes de estos sistemas operativos 1 Esta temática es analizada con mayor profundidad en un curso formal de Sistemas Operativos. 2 La paginación de memoria es un concepto que se estudia en los cursos de sistemas operativos formales – cuando se analiza el concepto de memoria
  • 19. 11 se han modificado para aprovechar las capacidades de la paginación. Por otro lado, el empleo de terminales gráficos y terminales de pantalla completa, en lugar de los terminales de líneas, puede influir en el diseño de los sistemas operativos. Por ejemplo, un terminal gráfico puede permitirle al usuario ver diferentes aplicaciones al mismo tiempo, a través de “ventanas” en la pantalla. Esto necesita un soporte más sofisticado en el sistema operativo, que el simple sistema de terminal de líneas.  Nuevos servicios: Como respuesta a Las demandas del usuario o a las necesidades de los administradores del sistema, el sistema operativo ampliará su oferta de servicios. Por ejemplo, si se determina que es difícil de mantener un buen rendimiento para los usuarios con las herramientas existentes, se deben añadir nuevas medidas y herramientas de control al sistema operativo. Otro ejemplo es el de las nuevas aplicaciones que exigen el uso de ventanas en la pantalla, que originalmente, el sistema operativo no ofrece de manera nativa. Esta característica requiere actualizaciones mayores en el sistema operativo.  Correcciones: Desafortunadamente, el sistema operativo, como cualquier otro componente tecnológico creado por el hombre, es propenso a tener fallos, errores y omisiones en la programación del sistema, que se descubrirán con el curso del tiempo y que es necesario corregir. Por supuesto, estas correcciones pueden introducir nuevos fallos a su vez y así sucesivamente. virtual -, y se considera muy avanzado para los propósitos de este documento.
  • 20. 12 La necesidad de hacer cambios en un sistema operativo de forma regular introduce ciertos requisitos en el diseño. Una afirmación obvia es que el sistema debe tener una construcción modular, con interfaces bien definidas entre los módulos y debe estar bien documentado. Para sistemas grandes, como normalmente son los sistemas operativos actuales, no es adecuado lo que podría denominarse como descomposición modular elemental. Es decir, debe hacerse mucho más que dividir simplemente un programa en subrutinas. Se debe diseñar explícitamente el sistema para que dichas actualizaciones se puedan implementar de manera sistemática, sin comprometer las capacidades previamente implementadas en el sistema. 5. CARACTERÍSTICAS PRINCIPALESDE LOS SISTEMAS OPERATIVOS (ATRIBUTOS ESENCIALES) Cualquier software que, mínimamente, se considere como un sistema operativo, debe evidenciar tres atributos esenciales, que a grandes rasgos pueden ser descritos como (STALLINGS, Operating system: Internals and design principles, 2018):  Comodidad: Un sistema operativo hace que un computador sea más cómodo de utilizar.  Eficiencia: Un sistema operativo permite que los recursos de un sistema informático se aprovechen de una manera más eficiente.  Capacidad de evolución: Un sistema operativo debe construirse de modo que permita el desarrollo efectivo, la verificación y la introducción de nuevas funciones en el sistema y, a la vez, no interferir en los servicios que brinda.
  • 21. 13 5.1 IMPORTANCIA DENTRO DE LOS SISTEMAS INFORMÁTICOS En función a la temática desarrollada en el apartado 4.1, así como lo que establece (WOLF, RUIZ, BERGERO, & MEZA, 2015), el usuario final, en general, ignora la importancia – y muchas veces, hasta la existencia -, del sistema operativo dentro del computador. Sin embargo, al momento en que se presentan problemas de mal funcionamiento del sistema – ya sea a nivel del hardware o del software -, repentinamente este componente de software cobra una relevancia significativa. Sin embargo, sólo desde el punto de vista del desarrollo de software, el sistema operativo tiene una importancia crucial dentro del sistema. Esto por cuanto que, si se tuviera que programar desde cero, las aplicaciones modernas, hablándole directamente al hardware, simplemente sería una tarea colosal y extremadamente difícil de alcanzar, tomando en cuenta las refinadas interfaces que se disponen, así como la enorme funcionalidad que ofrecen las aplicaciones actuales. Es por esta razón que existen los compiladores e intérpretes, para facilitar la tarea de la programación de sistemas. Ellos implementan funciones muy utilizadas que ayudan a la creación de los programas, la gestión de los archivos y el control de los dispositivos de entrada / salida. El desarrollador de software utiliza estas herramientas en la implementación de aplicación en tanto que ella (la aplicación), en el momento que se ejecuta, utiliza a estas utilidades para llevar a cabo ciertas acciones. Precisamente allí radica la importancia del sistema operativo, ya que es la herramienta principal que permite ocultar, al programador, los detalles del hardware y le proporciona una interfaz cómoda para implementar y utilizar los sistemas. Actúa como mediador, facilitándole al programador y a los programas de aplicación el acceso y uso de todas esas características y servicios de bajo nivel.
  • 22. 14 6. COMPONENTES FUNCIONALES DE LOS SISTEMAS OPERATIVOS En términos funcionales, los sistemas operativos poseen los siguientes componentes: 6.1 INTERFAZ DE USUARIO La interface de usuario ofrece el entorno donde los usuarios finales pueden interactuar con el sistema operativo, vía las muy conocidas interfaces gráficas de usuario. En ellas, a través de un sistema icónico y con un apuntador, el usuario final puede interactuar con el sistema operativo. Este tipo de interface resulta muy fácil de utilizar por parte de los usuarios no experimentados. Pero, sin embargo, generalmente no ofrece todas las posibilidades que tienen las herramientas de software. En tal sentido, actualmente se mantiene un debate entre la pertinencia o no de las interfaces gráficas de usuario, frente a las interfaces de línea de comandos, al momento de requerir que el software ofrezca todas sus posibilidades de acción; en tanto que, por otro lado, se analizan sus facilidades de uso. En ese orden de ideas el eje de la discusión gira desde la potencia que ofrecen las herramientas, y llega hasta su facilidad de uso, estando la discusión centrada en cuál es el punto intermedio entre estas tendencias de operación, donde se logra explotar todo el potencial de las aplicaciones, al mismo tiempo que ellas siguen siendo fáciles y sencillas de utilizar.
  • 23. 15 6.2 INTÉRPRETE DE COMANDOS El componente llamado intérprete de mandatos o Shell (SILBERSCHATZ, GALVIN, & GAGNE, 2018), se encarga de suministrar un medio de comunicación, a través de la cual el usuario puede dialogar de forma interactiva con la computadora, generalmente basada en una línea de comandos o consola (TANENBAUM & BOS, 2015). Este componente, a la fecha, se encuentra en la mayoría de los sistemas operativos populares. El Shell recibe los mandatos u órdenes del usuario, los interpreta y, si puede, los ejecuta. Dado que el Shell suele ejecutar en nivel de usuario, algunos autores consideran que no forma parte del sistema operativo (TANENBAUM & BOS, 2015). 6.3 LLAMADAS AL SISTEMA Por otro lado, la capa de servicios o llamadas al sistema ofrece a los programas unos servicios en forma de una interfaz de programación o API (application programming interface) (SILBERSCHATZ, GALVIN, & GAGNE, 2018), (STALLINGS, Operating system: Internals and design principles, 2018). A nivel de lenguajes de programación, generalmente se encuentras disponibles como funciones que siguen la sintaxis de lenguajes como C o C++, así como en algunos casos, lenguaje ensamblador (SILBERSCHATZ, GALVIN, & GAGNE, 2018). Desde el punto de vista de los programas, esta capa extiende la funcionalidad de la computadora, por lo que se suele decir que el sistema operativo ofrece una máquina virtual extendida a los programas. De esta forma se facilita la elaboración
  • 24. 16 de éstos, puesto que se apoyan en las funciones que le suministra el sistema operativo. 6.4 ADMINISTRADOR DE RECURSOS DE HARDWARE Y SOFTWARE También denominada como capa de abstracción de hardware (HAL, Hardware Abstraction Layer), es un concepto aplicado en sistemas operativos tales como Windows, Android (STALLINGS, Operating system: Internals and design principles, 2018). Esencialmente, constituye un sistema librerías de software que se ubican entre el hardware propiamente dicho y el núcleo del sistema, aislándolo casi por completo del hardware (TANENBAUM & BOS, 2015). El nivel HAL es quien manipula casi todas las acciones sobre el hardware, y a su vez, el núcleo del sistema, casi siempre debe interactuar con el HAL para realizar operaciones sobre el hardware (STALLINGS, Operating system: Internals and design principles, 2018). En detalle, el HAL establece una correspondencia de órdenes y respuestas genéricas del hardware, a nivel general – para comunicarse con el kernel -, y las mismas órdenes y respuestas, ahora específicas a nivel de un hardware en particular. Este sistema provoca que el bus del sistema, el controlador DMA, el controlador de interrupciones, los relojes del sistema, así como el sistema de memoria sean todos idénticos para el kernel del sistema operativo (STALLINGS, Operating system: Internals and design principles, 2018).
  • 25. 17 7. COMPONENTES ESTRUCTURALES DE LOS SISTEMAS OPERATIVOS En otro orden de ideas, desde un punto de vista estructural, los sistemas operativos se reducen a los siguientes componentes: 7.1 KERNEL Es el componente menos conocido para el público en general, dentro de los sistemas operativos. Normalmente, es la capa más cercana al hardware se denomina núcleo (kernel) y es la que gestiona los recursos hardware del sistema y la que suministra toda la funcionalidad básica del sistema operativo (HOLT & HUANG, 2018). Por seguridad para el sistema, los usuarios normalmente no pueden dar instrucciones al núcleo del sistema de manera directa, mientras que si es posible hacerlo a las otras capas, tales como los programas del sistema o las aplicaciones de usuario (SILBERSCHATZ, GALVIN, & GAGNE, 2018). 7.2 SHELL Previamente mencionado en el apartado 6.2, es importante resaltar que es un componente reemplazable en la mayoría de los sistemas operativos, tales como Linux, Unix o hasta en el mismo Windows (TANENBAUM & BOS, 2015) 7.3 INTERFAZ DE USUARIO También desarrollado en el apartado 6.1. Sin embargo, es relevante detallar la forma general en que opera un sistema operativo a nivel del usuario en general.
  • 26. 18 7.3.1 FUNCIONAMIENTO BÁSICO DEL SISTEMA OPERATIVO De acuerdo a (RAYA CABRERA & RAYA GONZÁLEZ, 2014), los sistemas operativos funcionan en dos modos básicos:  Modo Consola  Modo Gráfico A continuación, se detallarán ambos modos de operación. 7.3.1.1 MODO CONSOLA También conocido como Modo Orden o Modo Comando. En este ambiente de trabajo, cuando el computador completa su proceso de arranque, o cuando se invoca este modo, se le presenta al usuario una pantalla similar a las que se muestran a continuación.
  • 27. 19 Ilustración 3: Consola MS-DOS Fuente: El Autor Ilustración 4: Consola MS-Windows 9X Fuente: El Autor
  • 28. 20 Ilustración 5: Consola MS-Windows 10 Fuente: El Autor Ilustración 6: Consola GNU-Linux Fuente: El Autor
  • 29. 21 Al final de este proceso, aparecerá en el fondo de la pantalla un simbolismo para indicar que el sistema operativo ha sido capaz de ponerse en funcionamiento, satisfactoriamente, en nuestra computadora. El simbolismo en mención se denomina con toda propiedad “petición de orden”. Una vez aparece la petición de orden en el sistema, el sistema operativo funcionará describiendo un ciclo sin fin. La Ilustración 7 describe gráficamente estas fases: Ilustración 7: Ciclo de operación del modo consola Pregunta: Aparece la petición de orden Proceso: El sistema operativo acepta la orden del usuario y la analiza de acuerdo a su programación interna Orden: El usuario anota la orden correspondiente, pulsando [Enter] al final Respuesta: El sistema operativo responde a la orden del usuario, con la acción solicitada, o con un mensaje de error, cuando no este contemplada dentro de su programación Fuente: El Autor El ciclo se inicia al presentarse en la pantalla la petición de orden y finaliza con ésta. Los procesos se repiten hasta que el fluido eléctrico se suprime a la computadora (se desconecta).
  • 30. 22 Hay que resaltar que, en este modo de operación de los sistemas operativos, el usuario tiene que teclear cada orden que realiza la acción deseada y pulsar [Enter] para que el sistema operativo la ejecute, sin ratón, ventanas, iconos, escritorio, o similares. MS-DOS y las primeras versiones de Linux funcionaban en modo orden, así como una gran mayoría de sistemas de servidores de distinta índole. Muchos usuarios avanzados, por lo general, programadores, utilizan el modo consola en muchas tareas, ya que declaran que en esta modalidad de trabajo son más productivos, a través de atajos de teclas, Además, en los servidores que están sometidos a altas cargas de trabajo, el modo consola es necesario, para optimizar los recursos disponibles en el sistema. Muchos administradores de servidores no instalan los entornos gráficos en sus sistemas, en casos como Linux o Windows Server (opción Core), ya que no los usarán. 7.3.1.2 MODO GRÁFICO Por otro lado, (RAYA CABRERA & RAYA GONZÁLEZ, 2014) establecen que este modo corresponde al caso en que el sistema operativo posee una Interfaz Gráfica de Usuario (GUI, en inglés), es decir, que poseen ventanas, ratón, íconos y ayudas contextuales. Este sistema se atribuye a la compañía Xerox, que desarrolló sus componentes fundamentales en la década de los 70, y los comercializó a través de su sistema Xerox Alto Personal Computer (O'REGAN, 2016). La Ilustración 8 muestra el computador previamente mencionado.
  • 31. 23 Ilustración 8: Xerox Alto personal computer Fuente: (O'REGAN, 2016) Gran parte del desarrollo de la informática a nivel universal, se debe al desarrollo de los ambientes gráficos y la facilidad intrínseca que conllevan, al permitir al usuario una interacción más amistosa con el sistema. A tal punto, que la gran mayoría de los sistemas operativos de uso personal incluyen la interacción gráfica como entorno de base en sus distribuciones. La Ilustración 9 muestra el escritorio de un sistema operativo operando en modo gráfico.
  • 32. 24 Ilustración 9: Escritorio de un sistema operativo gráfico Fuente: El Autor 8. OPERACIÓN EN BAJO NIVEL DE LOS SISTEMAS OPERATIVOS Es importante establecer un concepto relevante acerca de la forma en que interactúan los Sistemas Operativos y su Hardware subyacente, para visualizar la forma en que el Software utiliza los recursos del computador. En tal sentido, se mencionan dos eventos importantes que interactúan entre sí, al momento en que las aplicaciones y el hardware se comunican. Ellos son (STALLINGS, Computer Organization and Architecture: Designing for Performance, 2016):  Interrupciones de hardware  Excepciones de software
  • 33. 25 En ambos casos el evento en sí, consiste en la posibilidadque tiene el procesador de suspender la ejecución de una aplicación cualquiera, atender otras tareas más prioritarias y que se presentan en forma impredecible, para finalmente reanudar la ejecución del programa previamente suspendido; cada vez que termina de ejecutar una instrucción, como se aprecia en la Ilustración 10. Ilustración 10: Ciclo de ejecución de instrucciones con interrupciones Fuente: (STALLINGS, Operating system: Internals and design principles, 2018) En general, estas suspensiones se presentan en los casos en que se llevan a cabo operaciones de entrada / salida (E/S) a dispositivos lentos, tales como impresoras o escáneres; y representan una ganancia significativa en el rendimiento global del computador, frente al caso en que no se aplicaran, como se puede observar en la Ilustración 11.
  • 34. 26 Ilustración 11: Ejecución de instrucciones con y sin interrupciones Fuente: (STALLINGS, Computer Organization and Architecture: Designing for Performance, 2016) Dependiendo de la fuente que origina la suspensión, se tienen: 8.1 INTERRUPCIONES DE HARDWARE Como su propio nombre lo indica, son originadas por el hardware y su presencia se justifica por la gran diferencia de velocidades que presentan los dispositivos de E/S, frente a la velocidad que presenta el CPU. Estas diferencias se presentan en términos que el procesador es literalmente, millones de veces más rápido que los dispositivos periféricos, como discos duros, por ejemplo (STALLINGS, Operating system: Internals and design principles, 2018). Se presentan en forma aleatoria e impredecible durante la ejecución de los programas, pero son originadas por algún componente de hardware y siempre son atendidas, en forma asíncrona, cuando se termina de ejecutar la instrucción
  • 35. 27 que se atiende en el momento (PARHAMI, 2007), (DÍAZ MARTÍNEZ, CHAOS GARCÍA, MUÑOZ MANSILLA, & ARANDA ALMANSA, 2011). 8.2 EXCEPCIONES DE SOFTWARE Estos eventos también interrumpen la ejecución normal de las instrucciones, pero con la diferencia de que son originadas por algún estado que presenta el software, al ejecutar las instrucciones y se atiende en forma síncrona. Generalmente son causadas por acciones ilegales que, tales como divisiones por cero, o tratar de acceder a posiciones de memoria inexistentes, entre otros casos. Por si, son impredecibles por naturaleza propia, y su presencia es, por lo regular, infrecuente e involucran que el programa en ejecución aborte (PARHAMI, 2007). No obstante, muchas implementaciones de lenguajes de programación, tales como Ensamblador, Java, C++, poseen estructuras de control, que permiten, en cierta medida, la programación de las acciones a seguir, cuando estas se presenten (LEE, 2017). 8.3 OPERACIONES EN MODO DUAL Una de las funciones básicas de todo sistema operativo funcional es la de administrar los recursos de hardware y software. Esta tarea de gestión involucra velar que las instrucciones que ejecuten los programas de aplicación no afecten (con o sin intención) a las estructuras de datos que permiten que el sistema operativo opere (STALLINGS, Operating system: Internals and design principles, 2018). De allí, surge la necesidad de que los procesadores puedan operar en dos modos, con privilegios diferenciados, denominados (TANENBAUM & BOS, 2015):  Modo usuario
  • 36. 28  Modo supervisor La Ilustración 12, evidencia la forma en que interactúan estos modos dentro del computador. Ilustración 12: Interacción de los modos de operación del SO con el Hardware y el Software del sistema Fuente: (TANENBAUM & BOS, 2015) De seguido, se analizarán con más detalle estos modos de operación. 8.3.1 MODO SUPERVISOR También conocido como modo kernel, privilegiado o núcleo3. En este modo, el CPU puede ejecutar directamente cualquier instrucción de su repertorio de instrucciones, sin ningún tipo de confirmación. Este es el modo en que se ejecuta regularmente el sistema operativo como tal. Además, esta forma de operación 3 Este modo no debe ser confundido con los usuarios administradores del sistema o root.
  • 37. 29 incluye lógicamente todas las instrucciones que se pueden ejecutar en modo usuario (TANENBAUM & BOS, 2015), (SILBERSCHATZ, GALVIN, & GAGNE, 2018). Es importante recalcar, que un fallo de programación, con el CPU operando en modo supervisor, por lo general, llevará a que la sesión del sistema operativo se cuelgue, con las pérdidas consabidas de la información no guardada, y que se requiera reiniciar el computador en forma física (apagarlo y encenderlo nuevamente). Como ejemplo de instrucciones privilegiadas, se tienen a las que involucran gestión de memoria o E/S. 8.3.2 MODO USUARIO Se le conoce también como modo no privilegiado4. Son los conjuntos de instrucciones que ejecutan regularmente las aplicaciones, vistas desde a nivel de lenguaje de programación (TANENBAUM & BOS, 2015), (SILBERSCHATZ, GALVIN, & GAGNE, 2018). En consecuencia, de acuerdo a lo que se observa en la Ilustración 12, para que una aplicación de usuario realice operaciones privilegiadas, ella debe solicitar su ejecución al sistema operativo, para que él realice la acción solicitada, operando en modo supervisor. 4 Esta modalidad de operación del Sistema Operativo, no tiene relación alguna con los usuarios humanos que utilizan los ordenadores.
  • 38. 30 8.3.3 FUNCIONAMIENTO DEL MODO DUAL A continuación, se modelará, el funcionamiento del modo dual (SILBERSCHATZ, GALVIN, & GAGNE, 2018). La necesidad de asegurar la ejecución correcta del sistema operativo, obliga a la identificación del código que pertenece al sistema operativo, del código que definen los usuarios. Esto se logra a través del denominado bit de modo que se agrega al hardware del sistema, señalando el modo de ejecución actual y permitiendo diferenciar si una tarea se ejecuta con privilegios de usuario o de supervisor: 0 para modo supervisor y 1 para modo usuario. La Ilustración 13, presenta la forma en que se utiliza el bit de modo para controlar las transiciones entre los modos usuario y supervisor. Ilustración 13: Transiciones entre los modos usuario y kernel Fuente: (SILBERSCHATZ, GALVIN, & GAGNE, 2018) Durante el encendido del ordenador, el hardware se activa bajo el modo kernel y se completa la carga del sistema operativo bajo este modo. Luego, cada vez que un software de usuario se va a cargar, antes de darle el control del sistema a la aplicación, el sistema operativo cambia el modo de operación de kernel a usuario, y luego entrega el control del sistema.
  • 39. 31 En consecuencia, las aplicaciones de usuario, se cargan inicialmente siempre, en modo usuario, valga la redundancia. No obstante, en el momento en que estas aplicaciones requieren un servicio del sistema (solicitándolo vía llamada al sistema), la aplicación debe pasar a modo kernel, para poder completar el servicio. Concretado el servicio, nuevamente regresa el sistema a operar en modo usuario. Así mismo, cada vez que se produce una interrupción o excepción, el hardware pasará de modo usuario al modo supervisor para atenderla. Completado el servicio de la excepción o interrupción solicitadas, el sistema regresará al modo usuario. En consecuencia, el hardware o el sistema operativo siempre operarán en modo supervisor. 9. CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS En esta sección se describirán las características que sistematizan a los sistemas operativos. Básicamente se cubrirán tres enfoques: sistemas operativos por su estructura (visión interna), sistemas operativos por los servicios que ofrecen y, finalmente, sistemas operativos por la forma en que ofrecen sus servicios (visión externa). 9.1 POR SU ESTRUCTURA Según (SILBERSCHATZ, GALVIN, & GAGNE, 2018), deben observar dos tipos de requisitos cuando se construye un sistema operativo:  Requisitos de usuario: El sistema debe ser fácil de usar y de aprender, seguro, rápido y adecuado al uso al que se le quiere destinar.
  • 40. 32  Requisitos del sistema: Bajo este enfoque, se engloban aspectos tales como el mantenimiento del software, su forma de operación, las restricciones de uso bajo las que funciona, su eficiencia, su tolerancia frente a los errores y su flexibilidad en general. En función a estas premisas, se describen las distintas estructuras que presentan los actuales sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener. 9.1.1 ESTRUCTURA SIMPLE / MONOLÍTICA Es la organización que utilizaron los primeros sistemas operativos, que estaban constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra (SILBERSCHATZ, GALVIN, & GAGNE, 2018), (TANENBAUM & BOS, 2015), como se puede observar en la Ilustración 14: Ilustración 14: Estructuración básica para un sistema operativo monolítico Fuente: (TANENBAUM & BOS, 2015) Las características fundamentales de este tipo de estructura son:
  • 41. 33  La construcción del programa final se realiza a base de módulos compilados separadamente, que se unen a través del enlazador.  Poseen una buena definición de parámetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento entre los módulos.  Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, entre otros, lo que puede llevar a serios problemas de seguridad.  Generalmente están hechos a la medida, por lo que son eficientes y rápidos en su ejecución y gestión, pero, por la misma razón, carecen de la flexibilidad necesaria para soportar diferentes ambientes de trabajo o tipos de aplicaciones. Un ejemplo bien conocido de este tipo de sistema operativo es el de MS-DOS, que se diseñó sin pensar ni siquiera remotamente en la popularidad que alcanzaría y en las capacidades del hardware en el que llegaría a ejecutarse. Comenzó como un sistema pequeño y sobrepasó ampliamente el campo inicial de su aplicación, al punto que, al momento de su eliminación, un fuerte movimiento de resistencia al cambio (DÍAZ MARTÍNEZ, CHAOS GARCÍA, MUÑOZ MANSILLA, & ARANDA ALMANSA, 2011). La primera versión de Unix también poseía una estructura de este tipo, con dos partes separadas: el núcleo y los programas del sistema (COULOURIS, DOLLIMORE, KINDBERG, & BLAIR, 2012), (SILBERSCHATZ, GALVIN, & GAGNE, 2018). Estos sistemas, normalmente, tienen un diseño de estructura modular (a nivel de su programación interna), sin embargo, para implementar grandes sistemas
  • 42. 34 operativos, de cientos de miles o de millones de líneas de código, basándose únicamente en conceptos modulares resulta insuficiente y se ha impuesto la aplicación de conceptos tales como los de niveles jerárquicos y abstracción de la información, para lograr sistemas más elaborados (STALLINGS, Operating system: Internals and design principles, 2018). 9.1.2 ESTRUCTURA POR NIVELES, CAPAS O ANILLOS A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organización del software, del sistema operativo, donde una parte del sistema contenía sub-partes, todo organizado en forma de niveles (SILBERSCHATZ, GALVIN, & GAGNE, 2018). Así, se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos. La estructura jerárquica de un sistema operativo moderno diferencia sus funciones de acuerdo a su complejidad, sus características en el tiempo y su nivel de abstracción. En este caso se puede ver el sistema como una serie de niveles. Cada uno implementa un subconjunto de las funciones requeridas por el sistema operativo y a su vez dependen del nivel inmediato inferior para realizar funciones más elementales y ocultar sus detalles a los niveles superiores a los que proporciona un servicio. Los niveles se tienen que definir de forma que los cambios que se hagan en un nivel no supongan modificaciones en los otros (TANENBAUM & BOS, 2015). Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven),
  • 43. 35 de Dijkstra, que se utilizó con fines didácticos. A grandes rasgos, la estructura jerárquica de este sistema operativo, se puede apreciar en la siguiente ilustración. Ilustración 15: Estructura por niveles del sistema operativo THE Fuente: (TANENBAUM & BOS, 2015) Estos sistemas pueden ser concebidos también como si fueran sistemas Multi capas. En tal sentido, sistemas operativos legendarios tales como Multics y Unix, caen en esa categoría (TANENBAUM & BOS, 2015), y de hecho es la estructura que fundamenta a prácticamente la mayoría de los sistemas operativos modernos. Una forma alterna de visualizar a éstos sistemas, bajo este enfoque, es la denominada de anillos concéntricos o "rings", como se puede apreciar en la Ilustración 16.
  • 44. 36 Ilustración 16: Estructura por anillos de los Sistemas Operativos Fuente: (SILBERSCHATZ, GALVIN, & GAGNE, 2018) Bajo el sistema de anillos (SILBERSCHATZ, GALVIN, & GAGNE, 2018), cada uno de ellos tiene una apertura, conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas más internas del sistema operativo o núcleo del sistema estarán más protegidas de accesos indeseados desde las capas más externas. Las capas más internas serán, por tanto, más privilegiadas que las externas. La mayor dificultad en el diseño de estas estructuras es definir los niveles, ya que cada nivel sólo puede utilizar los servicios del nivel inferior. 9.1.3 ESTRUCTURA MICROKERNEL Es el tipo más reciente de sistemas operativos, que puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas. Adicionalmente, este
  • 45. 37 tipo de sistema operativo sirve para toda clase de aplicaciones, por tanto, es de propósito general y cumple con las mismas actividades que los sistemas operativos convencionales (SILBERSCHATZ, GALVIN, & GAGNE, 2018). Goza de una estructura muy simple: el núcleo del sistema operativo se debe estructurar de manera tal que se le eliminan todos los componentes no esenciales para su funcionamiento interno; mientras que todos los componentes eliminados del Kernel, se implementan como aplicaciones del sistema de nivel superior o de nivel del usuario. El resultado es un Kernel significativamente más pequeño (TANENBAUM & BOS, 2015). Siguiendo el enfoque ha planteado, todas las aplicaciones que se ejecutan en el sistema podrán desempeñar papeles tanto de cliente como de servidores; en tanto que el núcleo tiene como únicas misiones el establecer la comunicación entre los clientes y los servidores, y gestionar a un nivel muy básico a los procesos y a la memoria del sistema. Para comunicarse, los módulos deben utilizar una técnica conocida como paso de mensajes que, a nivel de programación, resulta un poco difícil de implementar para los programadores con poca experiencia (TANENBAUM & BOS, 2015), como se observa en la Ilustración 17.
  • 46. 38 Ilustración 17: Estructura simplificada de un sistema operativo microkernel Fuente: (TANENBAUM & BOS, 2015) Por ejemplo, un programa de aplicación normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operación de entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro. Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el sistema final, ya que el núcleo provee solamente funciones muy básicas de memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer la mayoría de los servicios que el usuario final o programador puede usar (TANENBAUM & BOS, 2015). Adicionalmente, esta estructura ofrece la facilidad de ampliación para el sistema operativo; ya que todos los servicios nuevos se agregan como aplicaciones ya sea a nivel del usuario por el sistema y, en consecuencia, son muy raras las ocasiones en las que se requiere modificar al núcleo del sistema operativo. Este diseño, también ofrece facilidades al momento de transportar al sistema operativo de una plataforma de hardware a otra; asimismo, ofrece un mayor nivel
  • 47. 39 de seguridad y fiabilidad en su funcionamiento ya que, si un servicio falla, el resto del sistema operativo no se ve comprometido. Estos servidores deben tener mecanismos de seguridad y protección que, a su vez, serán filtrados por el núcleo que controla el hardware. Actualmente, la mayoría de los sistemas operativos modernos tanto Microsoft o como Unix compatibles se estructuran contemplando en su diseño este paradigma. 9.1.4 ESTRUCTURA MODULAR Quizá la mejor metodología actual para diseñar sistemas operativos es la que usa técnicas de programación orientada a objetos para crear un Kernel modular. En este caso, el Kernel dispone de un conjunto de componentes fundamentales y enlaza dinámicamente a los servicios adicionales, bien durante el arranque del sistema o en tiempo de ejecución (SILBERSCHATZ, GALVIN, & GAGNE, 2018). Tal estrategia utiliza módulos que se cargan dinámicamente y resulta habitual encontrarlos en las implementaciones modernas del Unix, tales como Solaris, Linux, y Mac OS, así como en MS- Windows. Este tipo de diseño permite al Kernel proporcionar servicios básicos, al mismo tiempo que también permite implementar ciertas características de forma dinámica. Por ejemplo, se puede añadir al Kernel controladores de bus y de dispositivos para hardware específico y puede agregarse como módulos cargables el soporte para diferentes sistemas de archivos (SILBERSCHATZ, GALVIN, & GAGNE, 2018). El resultado global, es similar a un sistema estructurado por niveles o anillos, en el sentido que cada sección del Kernel tiene interfaces bien definidas y protegidas,
  • 48. 40 pero es más flexible que el sistema de niveles porque cualquier módulo puede llamar a cualquier otro módulo. Además, el método es similar a la utilización de micro Kernel, ya que módulo principal sólo dispone de las funciones esenciales y de los conocimientos sobre cómo cargar y comunicarse con los otros módulos; sin embargo, en más eficiente que micro Kernel, ya que los módulos no necesitan invocar un mecanismo de paso de mensaje para comunicarse (SILBERSCHATZ, GALVIN, & GAGNE, 2018). 9.1.5 MÁQUINAS VIRTUALES Las máquinas virtuales consisten en un conjunto de tecnologías que emula el funcionamiento de un sistema de computadoras, en diferentes ambientes, permitiendo que en cada uno se ejecuten sistemas operativos o aplicaciones, como si estuviesen en el computador real independiente. Se constituye como una copia de un ordenador físico, que se comporta en forma eficiente y aislada (SILBERSCHATZ, GALVIN, & GAGNE, 2018), (WOLF, RUIZ, BERGERO, & MEZA, 2015). Este concepto no se debe considerar como limitado por las arquitecturas de hardware pre-existentes. Una máquina virtual puede ser diseñada pensando en una arquitectura de hardware que no ha sido implementada físicamente (WOLF, RUIZ, BERGERO, & MEZA, 2015). En el ambiente de las máquinas virtuales hay dos conceptos que se manejan de forma casi universal (SILBERSCHATZ, GALVIN, & GAGNE, 2018):  Sistema Anfitrión (host en inglés): es el sistema real, el hardware donde se implementan los mecanismos de virtualización.
  • 49. 41  Sistema Huésped (guest en inglés): consisten en las aplicaciones o los sistemas operativos que se ejecutan en el ambiente virtualizado. 9.1.5.1 CLASIFICACIÓN DE LAS MÁQUINAS VIRTUALES Con base en su funcionalidad y el nivel de equivalencia frente a una máquina real, existen un amplio abanico de implementaciones de máquinas virtuales, lo que evidencia la importancia, profundidad y madurez que ha alcanzado este conjunto de tecnologías, para la computación moderna. A saber, se tienen (SILBERSCHATZ, GALVIN, & GAGNE, 2018):  Soluciones basadasen hardware que ofrecen soporte para la creación y gestión de máquinas virtuales vía firmware: Es decir, son equipos físicos especialmente diseñados para tal fin y se encuentran centros de datos de grandes corporaciones o agencias gubernamentales. Los sistemas LPAR de IBM y LDOM de Oracle, son ejemplos de estas implementaciones.  Sistemas operativos construidos para ofrecer soporte a la virtualización: En este caso, el soporte a la virtualización se presenta a nivel del sistema operativo y no se requiere que el hardware subyacente este diseñado para tal fin, lo que permite utilizar computadoras de menor costo para la tarea señalada. Entre estos sistemas se encuentran: VMware ESX de VMware, Smart OS de Joyent y XenServer de Citrix.  Sistemas operativos de propósito general que ofrecen funciones estándares de virtualización: ahora, en este contexto, a un sistema operativo estándar, se le instalan complementos que posibilitan la creación y administración de máquinas virtuales en dicho entorno. Ejemplos de este escenario son: Microsoft Windows Server al que se le incorpora el complemento HyperV, o Red Hat Linux con el paquete KVM.
  • 50. 42  Aplicaciones que se ejecutan en sistemas operativos estándares pero que permiten la creación y administración de máquinas virtuales: en este escenario, simplemente se instala una aplicación en un equipo personal, por ejemplo, y dentro de la aplicación, es que se gestionan las máquinas virtuales. Entre estas herramientas, se encuentran: Workstation, y Fusion de VMWare, Parallels Desktop para sistemas Mac, así como el Oracle Virtual-Box.  Paravirtualización: en esta técnica, el sistema operativo huésped se modifica, para que pueda cooperar con el sistema operativo anfitrión, lo que optimiza el rendimiento general de ambos sistemas. XenServer de Citrix ofrece opciones de paravirtualización (WOLF, RUIZ, BERGERO, & MEZA, 2015).  Ambientes de programación virtualizados: bajo este ambiente, se virtualiza el ambiente de ejecución de un lenguaje de programación, de manera que su código no requiera de ningún tipo de modificación, al migrar de una plataforma de hardware a otra, en tanto exista una máquina virtual del lenguaje en cuestión, para la plataforma de hardware donde se desea ejecutar ese código. Esa es la idea subyacente en lenguajes de programación como Java de Oracle, y la plataforma .NET de Microsoft, por ejemplo.  Emuladores Especializados: También se encuentran emuladores especializados que posibilitan que las aplicaciones escritas para un ambiente de hardware dado se ejecuten en un entorno de hardware muy diferente, como un tipo diferente de CPU. El ejemplo clásico de este escenario, lo encontramos en los emuladores de consolas de juego tales como: Project 64, que emula al Nintendo 64, o Kega Fusion para Sega Génesis, entre otros casos.
  • 51. 43  Contenedores de Aplicaciones: hay ocasiones en que sólo se desea un mecanismo que permita segregar a las aplicaciones, administrando su rendimiento o uso de recursos, así como tener mecanismos simples de iniciarlas, detenerlas, moverlas o administrarlas, pero manteniéndolas dentro del mismo sistema operativo. Simplemente se desea que estén segregadas del sistema operativo, contenidas en un ambiente controlado. Es allí donde los contenedores de aplicaciones presentan fortalezas frente a las otras tecnologías de virtualización, al permitir “separar” al sistema operativo de las aplicaciones en cuestión. Los contenedores, o zonas, simplemente crean una capa virtual entre el sistema operativo y las aplicaciones que se desea aislar. En el contenedor, el sistema operativo, así como sus dispositivos se encuentran virtualizados, de modo que las aplicaciones de usuario dentro del contenedor, se comportan como si fueran los únicos procesos corriendo dentro del sistema. Como ejemplo de estas plataformas se encuentran: Oracle Solaris Zones, BSD Jails, IBM AIX WPAR, así como docker y Kubernetes. 9.1.5.2 VENTAJAS Y DESVENTAJAS DE LAS MÁQUINAS VIRTUALES Todas las tecnologías tienen sus fortalezas y debilidades y las máquinas virtuales no se escapan a esta realidad. Entre las ventajas más relevantes que se pueden encontrar a las tecnologías de virtualización, se puede resaltar (GARRIDO, SCHLESINGER, & HOGANSON, 2013), (SILBERSCHATZ, GALVIN, & GAGNE, 2018):  Dentro de una plataforma de hardware, pueden coexistir varios sistemas operativos distintos, todos aislados entre sí para por ejemplo probar un
  • 52. 44 sistema operativo diferente sin necesidad de instalarlo directamente en el equipo.  Las máquinas virtuales permiten simular hardware que no existe físicamente.  Se pueden reducir significativamente los costos de hardware, al consolidar varios servidores como máquinas virtuales, en un único sistema físico, de características adecuadas, sin interferencias entre sí, y compartiendo dinámicamente los recursos del sistema.  En ese mismo sentido, la consolidación de granjas de servidores en menor cantidad de equipo puede representar un ahorro significativo en costos asociados al mantenimiento de los servicios, tales como: reducción de las facturas de energía eléctrica, disminución del tamaño de los locales destinados a los centros de datos, disminución de la cantidad de equipos a las que se debe dar mantenimiento preventivo, entre otros casos. En otro orden de ideas, como desventaja, se puede observar que le agregan un nivel de complejidad significativo al sistema en tiempo de ejecución, con la consiguiente ralentización del mismo, frente a la ejecución del software en forma nativa. Esta situación se presenta sobre todo cuando el rendimiento del sistema anfitrión no es lo suficientemente grande para ejecutar eficientemente todos los sistemas huésped y se puede corregir con la selección adecuada de la plataforma, al momento de comprarla, para que tenga las capacidades necesarias para ejecutar eficientemente todas las tareas que se le asignarán, y que además tenga posibilidades de ser actualizado y mejorado en la medida que se requiera.
  • 53. 45 9.2 POR LOS SERVICIOS QUE OFRECE Esta clasificación es la más antigua, comúnmente usada y conocida desde el punto de vista del usuario final; se puede comprender fácilmente con la ilustración que se muestra y analiza a continuación (RAYA CABRERA & RAYA GONZÁLEZ, 2014). Ilustración 18: Taxonomía de los Sistemas Operativos según los servicios ofrecidos Fuente: (RAYA CABRERA & RAYA GONZÁLEZ, 2014) 9.2.1 POR EL NÚMERO DE PROCESOS De acuerdo a la cantidad de procesadores que es capaz de administrar el sistema operativo, ellos se clasifican como: 9.2.1.1 UNIPROCESO Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS.
  • 54. 46 9.2.1.2 MULTIPROCESO Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Por otro lado, cuando se trabaja de manera simétrica, los procesos o partes de ellos (hilos o procesos ligeros5) son enviados indistintamente a cualquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema. Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios procesadores. 5 Se dice que un hilo, proceso ligero o thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un área de memoria, un conjunto de registros con valores específicos, la pila y otros valores de contexto.
  • 55. 47 Así, existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción las más de las veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o más tiempo a la paralelización que a elaborar el algoritmo inicial. 9.2.2 POR EL NÚMERO DE USUARIOS De acuerdo al número de los usuarios que soporta un sistema operativo, ellos se clasifican como: 9.2.2.1 MONOUSUARIOS Los sistemas operativos monousuarios son aquéllos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales típicamente se han clasificado en este renglón. 9.2.2.2 MULTIUSUARIOS Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente.
  • 56. 48 9.2.3 POR EL NÚMERO DE TAREAS De acuerdo a la cantidad de tareas que se pueden realizar la vez por usuario, los sistemas operativos se clasifican como: 9.2.3.1 MONOTAREAS Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo, pero cada uno de ellos puede estar haciendo solo una tarea a la vez. 9.2.3.2 MULTITAREAS Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico en un proceso en segundo plano. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad. Son la norma dentro de los sistemas operativos modernos. 9.2.4 DE ACUERDO A LA FORMA EN QUE OFRECEN SUS SERVICIOS Esta clasificación también se refiere a una visión externa, que en este caso se refiere a la del usuario, el cómo emplea los servicios.
  • 57. 49 Bajo esta clasificación se pueden identificar cuatro tipos principales (RAYA CABRERA & RAYA GONZÁLEZ, 2014):  Sistemas Centralizados  Sistemas operativos en red  Sistemas operativos distribuidos  Sistemas operativos de escritorio 9.2.4.1 SISTEMAS CENTRALIZADOS Fue el modelo predominante entre las computadoras mientras ellas fueron dispositivos de costo elevado y bajo rendimiento. Bajo esta arquitectura, los computadores centrales (conocidos como mainframe), se ocupaban de realizar todo el procesamiento de los sistemas, en tanto que los usuarios empleaban “terminales tontos”6. En la actualidad este modelo se aplica en sistemas como los “Terminal Services” de los sistemas operativos Microsoft, con la variante que sus terminales no son tontos, en su lugar, utilizan computadores de escritorio. 6 Son sistemas que no poseen memoria RAM ni procesadores, únicamente tienen mecanismos de entrada / salida y se conectan a un sistema centralizado que realiza el procesamiento propiamente dicho.
  • 58. 50 9.2.4.2 SISTEMAS OPERATIVOS DE RED Bajo este paradigma, los sistemas operativos de dos o más computadoras se comunican a través de un medio de comunicación, con el objetivo de compartir recursos e información. En este escenario, cada computadora mantiene su sistema operativo, así como su Sistema de Archivos locales, e independientes de los demás computadores. El punto fundamental que deben tener los usuarios al utilizar estos sistemas, que se debe aplicar la sintaxis de un grupo de comando o llamadas al sistema, para efectuar operaciones entre los computadores, además de conocer la ubicación de los recursos que se desea acceder. Los sistemas operativos de red más populares son: Novell NetWare, Windows Server, Linux Server, entre otros. 9.2.4.3 SISTEMAS OPERATIVOS DISTRIBUIDOS Son sistemas casi independientes que posibilitan la distribución de tareas o procesos entre un grupo de procesadores, localizados dentro del mismo equipo o en computadores independientes, de forma transparente para el usuario. Esta arquitectura de sistemas operativos permite abarcar las características de los de red, al integrar recursos7 en una máquina virtual única que el usuario 7 Por recursos se debe entender: impresoras, unidades de almacenamiento, memoria RAM, procesos, procesadores, entre otros componentes.
  • 59. 51 identifica como un único sistema. Es decir, el usuario no necesita conocer la ubicación física de los recursos para utilizarlos, para el simplemente tienen un nombre y los utiliza como si fueran locales. Los sistemas operativos distribuidos más extendidos son los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, entre otros. 9.2.4.4 SISTEMAS OPERATIVOS DE ESCRITORIO Son los que se utilizan regularmente en las computadoras personales, ya sean equipos de sobremesa, computadoras portátiles o estaciones de trabajo (TANENBAUM & BOS, 2015). Dado que todos los computadores modernos, así como sus correspondientes sistemas operativos tienen soporte para la multiprogramación, es normal que los usuarios o los mismos sistemas operativos inicien docenas de programas en el arranque del sistema, o a lo largo de las sesiones de trabajo. La función de estos, en consecuencia, es la de ofrecer un soporte eficiente al trabajo de un único usuario, que requiere ejecutar múltiples tareas, tales como aplicaciones de ofimática básica o navegación por internet, entre otros casos. Algunos de estos sistemas operativos son: MS-Windows, Apple macOS, Apple iOS, GNU-Linux, FreeBSD, entre otros. Estos sistemas operativos son tan conocidos que, hecho, muchos usuarios no especializados ni siquiera son conscientes de que existen otros tipos de sistemas operativos, fuera de estos.
  • 60. 52 10. EVOLUCIÓN / GENERACIONES DE LOS SISTEMAS OPERATIVOS En la evolución histórica de los sistemas operativos, al igual que en la del hardware de las computadoras, se distinguen varios períodos o etapas evolutivas, que se analizan a continuación: 10.1 GENERACIÓN CERO (ANTECEDENTES) Abarca la década de los años 40 y se caracteriza por la ausencia de sistemas operativos en los computadores. El usuario tenía acceso completo al lenguaje máquina y todas las instrucciones se codificaban manualmente (O'REGAN, 2016). Los propios usuarios eran quienes controlaban la ejecución de sus programas. Era la época en que los computadores estaban compuestos totalmente por sistemas electromecánicos (TANENBAUM & BOS, 2015), (CERUZZI, 2012). Un ejemplo clásico de estos sistemas, es el Colossus, desarrollado por el gobierno inglés durante la segunda guerra mundial, que les permitió la decodificación eficiente de mensajes cifrados, para impulsar significativamente su victoria en dicho conflicto.
  • 61. 53 Ilustración 19: Colossus Mark 2 Fuente: (O'REGAN, 2016) 10.2 PRIMERA GENERACIÓN Abarca los años 50. La creación del primer sistema operativo se le atribuye a los laboratorios de investigación de General Motors, y fue desarrollado para su computador IBM 701 (CERUZZI, 2012). En 1955 General Motors y North American Aviation colaboraron para desarrollar un sistema operativo para el IBM 704. Hacia 1957 ya se habían desarrollado, de manera particular, distintos sistemas operativos para ese modelo de computador (O'REGAN, 2016). La Ilustración 20, muestra el sistema antes mencionado.
  • 62. 54 Ilustración 20: IBM 701 Fuente: (O'REGAN, 2016) El fin de estos primeros sistemas operativos era permitir en la máquina la secuencia automática de los trabajos de los usuarios. De esta forma se conseguía evitar el tiempo que se perdía, y que podía ser considerable, desde que un proceso terminaba su ejecución hasta que comenzaba el siguiente. Para ello los trabajos se organizaron en lotes (TANENBAUM & BOS, 2015). Un trabajo en ejecución tenía el control total de la máquina y no comenzaba otro hasta que se llegaba al final del que estaba en ejecución u ocurría un error. En este último caso el sistema operativo daba alguna explicación rudimentaria sobre lo que había ido mal y procedía inmediatamente con el siguiente trabajo del lote.
  • 63. 55 10.3 SEGUNDA GENERACIÓN Con la introducción de la multiprogramación y el multiprocesamiento, se dio lugar a la segunda generación, que ocupa la primera parte de la década de los años 60. Estas tecnologías se desarrollaron debido al elevado coste que tenían los computadores de aquella época, como un intento de mejorar el rendimiento en su utilización y aumentar el número de trabajos ejecutados en un intervalo de tiempo dado (CERUZZI, 2012). El elemento clave en la concepción de la multiprogramación fue la diferencia de velocidades entre los dispositivos de entrada y salida y el procesador. Un programa que realizaba una petición de una operación de E/S, y que no podía continuar hasta que esta se hubiera completado, dejaba al procesador, el recurso más valioso del sistema, desocupado durante todo el tiempo de espera (TANENBAUM & BOS, 2015). Con la multiprogramación varios programas podían residir a la vez en memoria y el procesador se podía conmutar rápidamente entre ellos, lo que permitía que un trabajo pudiera estar realizando cálculos a la vez que otro leía de una cinta magnética, un tercero escribía en un disco, y así sucesivamente. En los sistemas con multiprocesamiento se utilizaban varios procesadores en un único computador para lograr una mayor potencia de cálculo en la máquina. También aparecieron en esta época los primeros sistemas de tiempo real dedicados al control de procesos industriales y para monitorizar miles de puntos con fines militares (O'REGAN, 2016). En estos sistemas, más que tenerlos muy ocupados, se requería que su respuesta ante una serie de sucesos externos sea lo más rápida que sea posible. Por
  • 64. 56 ejemplo, el aumento de la temperatura en un punto de una refinería de petróleo debería comunicarse inmediatamente para tomar las acciones oportunas para evitar una explosión. Los sistemas más relevantes de esta época fueron:  El Master Control Program (MCP) de Burroughs diseñado para su computadora B5000: El MCP fue escrito en un lenguaje de alto nivel y poseía muchas de las características que proporcionan los sistemas actuales: multiprogramación, multiprocesamiento, memoria virtual y la capacidad de depurar el lenguaje fuente.  El sistema SABRE de IBM y American Airlines destinados a las reservas de viajes: El sistema SABRE se diseñó bajo el enfoque del tiempo compartido, con miles de terminales distribuidos por toda la geografía norteamericana, desde los cuales se podía interactuar directamente con el sistema central. El usuario hacía una petición desde un terminal y el computador procesaba la petición y respondía a través del terminal tan pronto como podía, a veces en un tiempo inferior a un segundo. Sin embargo, este sistema estaba dirigido a una única función previamente mencionada (STEARNS, 2011).  El sistema SAGE (Semi-Automatic Ground Enviroment): desarrollado para rastrear e interceptar aviones enemigos en Norteamérica, por parte del Mando Norteamericano de Defensa Aeroespacial (NORAD). La Ilustración 21, muestra la instalación completa del Sistema SAGE.
  • 65. 57 Ilustración 21: Sistema SAGE Fuente: (O'REGAN, 2016) El primer sistema de tiempo compartido de propósito general documentado fue el Compatible Time-Sharing System (CTSS) desarrollado en el Instituto Tecnológico de Massachusetts (MIT) bajo la dirección de Fernando Corbató y que corría en un IBM 709/7090. El proyecto se inició en 1961 y se puso en funcionamiento en 1963. Entre las características de este sistema estan (O'REGAN, 2016):  Empleo de numerosos terminales conectados al computador que se podían usar al mismo tiempo.  Cada terminal de usuario parecía tener disponible toda la potencia de la máquina y todo el software del computador.  El tiempo necesario para realizar tareas no muy grandes era lo suficientemente pequeño como para hacer pensar a los usuarios que tenían la máquina sólo para su servicio.
  • 66. 58  Disponía de varios compiladores, utilidades para el manejo de archivos y aplicaciones específicas. La Ilustración 22, presenta una instalación completa de un sistema IBM 7090. Ilustración 22: Instalación típica de un sistema IBM 7090 Fuente: (MICHAEL, et al., 1983) 10.4 TERCERA GENERACIÓN Esta generación se inicia con la introducción en 1964 de la familia de computadores lBM/360. El sistema operativo de esta familia de computadores era el OS/360. La Ilustración 23, exhibe una instalación típica de la época de estos equipos.
  • 67. 59 Ilustración 23: Instalación Típica de un grupo de sistemas IBM/360 Fuente: (CERUZZI, 2012) Aunque el sistema operativo no poseía algunas de las características más avanzadas de otros sistemas, como el MCP de Burroughs, excedía con mucho al resto de los sistemas en el área de apoyo al cliente (O'REGAN, 2016). El sistema operativo disponía de la mayor cantidad de programas de utilidad para facilitar el uso del computador que se había suministrado hasta la fecha. Además, el sistema permitía avanzar en la serie de hardware, según aumentaban las necesidades de potencia de cálculo, sin que fuera necesario cambiar de sistema operativo, lo que representa un avance en la época, ya que significaba que se ofrecía cierto nivel de independencia entre el hardware y el sistema operativo. La generación se extiende hasta mediados de los años 70. Se caracteriza por el desarrollo de sistemas operativos grandes y costosos que pretendían incorporar todas las posibilidades. Algunos proporcionaban simultáneamente el
  • 68. 60 procesamiento por lotes, el procesamiento en tiempo real, el procesamiento en tiempo compartido y el multiprocesamiento. El inconveniente era que obligaban a muchos usuarios a pagar un precio muy elevado y aprender más de lo que realmente necesitaban (O'REGAN, 2016). 10.5 CUARTA GENERACIÓN La cuarta generación corresponde al estado actual del arte (TANENBAUM & BOS, 2015). La mayoría de los sistemas operativos de los computadores grandes son descendientes directos de los de la tercera generación, tales como el Multics de Honeywell, VMS y VM/370 de IBM y el Scope de Control Data. Así mismo, encontramos para los sistemas móviles y de escritorio a los desarrollos tales como Unix, MS-Windows, Mac OS, Linux o Android, entre otros. Todos estos sistemas disponen de (O'REGAN, 2016):  Multiprogramación.  Tiempo compartido.  Memoria virtual.  Procesos secuenciales que cooperan por medio de semáforos.  Sistemas de archivos jerárquicos.  Entrada / Salida independiente del dispositivo. Posiblemente el más influyente de los sistemas operativos actuales sea Unix. Su desarrollo se realizó adoptando muchas de las ideas que se introdujeron en Multics. Sin embargo, existe una diferencia esencial entre ambos; consiste en que Multics se desarrolló para grandes computadores; en cambio, Unix se diseñó a principio
  • 69. 61 de los años 70 en los laboratorios de la Bell en torno al minicomputador más característico de la época, el PDP-11 de Digital y con una dimensión de un orden de magnitud inferior a aquel, lo que lo convierte en un sistema operativo más accesible al público en general (CERUZZI, 2012), (O'REGAN, 2016). La Ilustración 24, presenta a un computador PDP-11. Ilustración 24: Computador PDP-11 Fuente: (O'REGAN, 2016) A pesar de su menor tamaño Unix retiene la mayor parte de las características más útiles de su predecesor, tales como procesos, sistema de archivos jerárquicos, independencia de los dispositivos, redirección de la entrada-salida y un lenguaje de intérprete de órdenes (shell) de alto nivel. La mayor parte de Unix se escribió en el lenguaje C, lo que le ha permitido ser transportado a una gran
  • 70. 62 variedad de procesadores, desde grandes máquinas a computadores personales (O'REGAN, 2016). En los años 80, paralelamente a la popularización de las computadoras personales, se desarrollaron un gran número de sistemas operativos para ellas, entre los que destacan el MS-DOS, Apple II, CP/M y Xenix. Todos estos sistemas estaban muy limitados en sus funciones. Se desarrollaron inicialmente para microprocesadores de 8 y16 bits con poca capacidad de memoria. Sin embargo, la velocidad y la capacidad de memoria actuales son ahora suficientes como para soportar sistemas operativos con todas sus posibilidades, tales como la familia MS-Windows y los Linux, entre otros. Dos aspectos que caracterizan los sistemas actuales son las redes de computadores y los sistemas distribuidos. Los usuarios de la cuarta generación no están limitados ya a comunicarse con un solo computador en tiempo compartido. Los computadores personales están equipados con programas de comunicaciones que les permiten acceder a informaciones localizadas en bases de datos dispersas geográficamente (COULOURIS, DOLLIMORE, KINDBERG, & BLAIR, 2012). Sistemas operativos como Unix y VMS de Digital, creados originalmente con el fin de servir a una única máquina, han evolucionado para adaptarse a las redes de computadores. El sistema de archivos de red de Sun Microsystems conocido como NFS (Network File System) fue uno de los primeros sistemas de archivos basado en Unix en ofrecer un espacio único de nombres de archivos situado por encima de una red de servidores y estaciones de trabajo.
  • 71. 63 Actualmente el diseño de los sistemas operativos encuentra nuevos retos con la construcción de computadores paralelos que disponen de miles de procesadores (COULOURIS, DOLLIMORE, KINDBERG, & BLAIR, 2012). Para estas máquinas los sistemas operativos deben dar soporte a la comunicación y a la sincronización extremadamente rápida de miles de procesadores. Cada procesador puede disponer de sus propios dispositivos, lo que hace que el sistema operativo deba controlar a la vez a miles de canales de entrada / salida. Conceptos tales como memoria virtual y tiempo compartido deben extenderse para adaptarse al paralelismo masivo. Quizás el desafío más importante es conseguir que el entorno de programación de estos sistemas permita desarrollar programas paralelos con un esfuerzo sólo ligeramente superior al de la escritura de un programa secuencial (COULOURIS, DOLLIMORE, KINDBERG, & BLAIR, 2012). 11. CONCLUSIONES Al concluir este apunte, se pueden plantear las conclusiones que se exponen a continuación:  El sistema operativo es un programa muy especial que se encarga de administrar los recursos de hardware y software, así como ofrecer al usuario un mecanismo de comunicación con el hardware del computador.  Los sistemas operativos han evolucionado paralelamente con el desarrollo del hardware de la computadora.  Los atributos esenciales de todo sistema operativo son: comodidad en su uso, eficiencia y capacidad de evolución.
  • 72. 64  El sistema operativo tiene como funciones principales: actuar como interfaz entre el usuario y el computador, administrar los recursos de hardware y software del sistema y evolucionar en forma dinámica con el tiempo.  Estructuralmente todo sistema operativo está compuesto por tres componentes básicos: el núcleo o Kernel, el interfaz de programación o API y por el intérprete de comandos o Shell. Desarrollos recientes no estandarizados establecen la inclusión de una nueva capa de abstracción de hardware (HAL).  Los sistemas operativos operan en los modos de Consola, a través de ordenes escritas, así como en el modo Gráfico, donde poseen ayuda contextual, interfaz gráfica y apoyo a señalar y tocar con dispositivos apuntadores como el mouse.  Los sistemas operativos pueden ser clasificados de múltiples maneras tales como: por su estructura, de acuerdo a los servicios que ofrecen, así como de acuerdo a la forma en que ofrecen sus servicios, entre otros casos. 12. CONSIGNAS DE APRENDIZAJE Y EVALUACIÓN Luego de haber leído y analizado el documento, en forma independiente, titulado: ORGANIZACIÓN Y ESTRUCTURA DE LOS SISTEMAS OPERATIVOS Y de haber profundizado con el facilitador y sus compañeros, se espera que esté en capacidad de realizar las siguientes tareas de evaluación:
  • 73. 65 12.1 EVALUACIÓN FORMATIVA  DISCUTIR la historia, el concepto, las funciones e importancia de los sistemas operativos.  ESTABLECER los componentes fundamentales de todo sistema operativo.  IDENTIFICAR las etapas evolutivas de los sistemas operativos.  DEBATIR las clasificaciones que organizan a los sistemas operativos. 12.2 EVALUACIÓN SUMATIVA 1. Realizar una SÍNTESIS del contenido. 2. Extraer las IDEAS PRINCIPALES del contenido. 3. Construir un mapa conceptual que sintetice todo el apunte. 4. Prepararse para la prueba parcial correspondiente. 13. REFERENCIAS BIBLIOGRÁFICAS CERUZZI, P. (2012). Computing: a concise history (First ed.). Cambridge, United States of America: MIT Press. COULOURIS, G., DOLLIMORE, J., KINDBERG, T., & BLAIR, G. (2012). Distributed systems: Concepts and design (Fifth ed.). Boston, United States of America: Addison-Wesley. DÍAZ MARTÍNEZ, J., CHAOS GARCÍA, D., MUÑOZ MANSILLA, R., & ARANDA ALMANSA, J. (2011). Fundamentos Básicos De Los Sistemas Operativos (Primera ed.). Madrid, España: Sanz Y Torres.
  • 74. 66 GARRIDO, J., SCHLESINGER, R., & HOGANSON, K. (2013). Principles of modern operating systems (Second ed.). Burlington, United States of America: Jones & Bartlett Learning. HOLCOMBE, J., & HOLCOMBE, C. (2017). Survey of operating systems (Fifth ed.). New York, United States of America: McGraw-Hill Education. HOLT, A., & HUANG, C.-Y. (2018). Embedded Operating Systems: A Practical Approach (Second ed.). Cham, Switzerland: Springer. LEE, K. (2017). Foundations of Programming Languages (Second ed.). Cham, Switzerland: Springer. MICHAEL, G., WILLIAMS, C., DANIELSON, S., DONNELLEY, J., COLEMAN, S., & DEBONI, T. (1983). The IBM 7090 and 7094 Systems. Retrieved April 15, 2018, from Stories of the Development of Large Scale Scientific Computing at Lawrence Livermore National Laboratory: http://www.computer- history.info/Page4.dir/pages/IBM.7090.dir/images/Picture.9.jpg O'REGAN, G. (2016). Introduction to the history of computing: A computing history primer (First ed.). Cham, Switzerland: Springer. PARHAMI, B. (2007). Arquitectura de Computadoras: De los Microprocesadores a las Supercomputadoras (Primera ed.). México, México: McGraw-Hill. RAYA CABRERA, J., & RAYA GONZÁLEZ, L. (2014). Implantación de sistemas operativos (Primera ed.). Madrid, España: Ra-Ma.
  • 75. 67 SILBERSCHATZ, A., GALVIN, P., & GAGNE, G. (2018). Operating System Concepts (Tenth ed.). Hoboken, United States of America: John Wiley & Sons. STALLINGS, W. (2016). Computer Organization and Architecture: Designing for Performance (Tenth ed.). Boston, United States of America: Pearson. STALLINGS, W. (2018). Operating system: Internals and design principles (Ninth ed.). Hoboken, United States of America: Pearson Education, Inc. STEARNS, D. (2011). Electronic value exchange: Origins of the VISA electronic payment system (First ed.). London, United Kingdom: Springer. TANENBAUM, A., & BOS, H. (2015). Modern operating systems (Fourth ed.). Upper Saddle River, United States of America: Pearson Education, Inc. WOLF, G., RUIZ, E., BERGERO, F., & MEZA, E. (2015). Fundamentos de sistemas operativos (Primera ed.). México, México: Universidad Nacional Autónoma de México.