B. SISTEMAS OPERATIVOS I. CONCEPTOS Y ESTRUCTURAS BÁSICAS 1. HISTORIA Y EVOLUCIÓN NECESIDAD DEL SISTEMA OPERATIVO, ADMINISTRACIÓN DE RECURSOS Y DESEMPEÑO DEL SISTEMA Necesidad del sistema operativo : Tiene 16 comandos, cada uno de los cuales queda determinado durante la acción de carga entre 1 y 9 bytes en un registro de dispositivos, estos comandos se utilizan para leer y escribir datos, mover el brazo del disco, dar formato a las pistas, así como inicializar, sensibilizar, volver a inicializar y volver a calibrar el controlador y las unidades. Administración de recursos : Un punto de vista alternativo, de arriba hacia abajo, sostiene que el sistema operativo está ahí para controlar todas las piezas de un complejo sistema. La computadoras modernas constan de procesador, memorias, cronómetros, discos, terminales, unidades de cintas magnéticas, interfaces de red, impresoras y una amplia gama de otros dispositivos. Desde este punto de vista la labor de un sistema operativo es la de proporcionar una asignación ordenada y controlada de los procesadores, memorias y dispositivos de E/S para los varios programas que compiten por ellos. Desempeño del sistema : El sistema operativos sostiene que su principal tarea es la de llevar un registro de la utilización de los recursos, dar paso a las solicitudes de recursos, llevar la cuenta de uso y mediar entre las solicitudes en conflicto de los distintos programas y usuarios. GENERACIONES DE SISTEMAS OPERATIVOS (R) Primera generación (1945 – 1955). En esos primeros días, un solo grupo de personas diseñaban, construía, programaba, operaba y daba mantenimiento a cada maquina. Toda la programación se lleva a cabo en lenguaje maquina absoluto y con frecuencia se utilizaban conexiones para controlar la funciones básicas de las maquinas. Los lenguajes de programación eran desconocidos (incluso el lenguaje ensamblador), no se oía de los sistemas operativos. A principio de la década de los años cincuentas. La rutina mejoro un poco con la introducción de las tarjetas perforadas. Fue entonces posibles escribir los programas en las tarjetas y leerlas en vez de insertar conexiones; por lo demás, el proceso era el mismo. La segunda Generación (1955 – 1965). Para ejecutar un trabajo (es decir un programa o conjunto de programas) el programador debía escribir el programa en hojas de papel (en fortran o ensamblador) para después perforar las tarjetas, después debía llevar el paquete de tarjetas perforadas al cuarto de lectura y dárselas a uno de los programadores. Se desperdiciaba demasiado tiempo de cómputo mientras que los operadores caminaban para realizar todo el proceso. Dado al alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por demás rápidas vías para reducir el tiempo invertido. La solución que por lo general se adoptó, fue la de los sistemas de procesamiento por lotes. La tercera generación ( 1965 – 1980). Aquí fue donde se introdujo el primer sistema operativo, la IBM fue quien lo introdujo, llamado sistema/360. El 360 era una serie de maquinas con software compatible, y estas solo se diferenciaban el precio y desempeño, (máximo memoria, velocidad de procesador, número permitido de dispositivos E/S), Puesto que las maquinas tenían las mismas arquitectura y conjunto de instrucciones, al menos en teoría, los programas escritos para una maquina pacían ejecutarse en las otras. El OS/360 se diseño para hacer cálculos tantos científicos como comerciales. La cuarta generación (1980 -1990). Surgen las computadoras personales, dos sistemas operativos a dominado la escena de las computadoras personales y las estaciones de trabajo, MS-DOS de Microsoft y UNIX. Aunque la versión inicial de MS-Dos era realmente primitiva, las subsecuentes versiones del MS-Dos han incluido características más avanzadas entre ellas algunas de UNIX. Este desarrollo nos es del todo sorprendente, puesto que Microsoft es uno de los principales proveedores de UNIX. El otro contendiente principal es UNIX, que dominaba en la computadoras que no utilizaban Intel, así como las estaciones de trabajo, en particular las que poseen chips de alto desempeño RISC. Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década de los ochenta ha sido el crecimiento de las redes de computadoras personales con sistemas operativos de red y sistemas operativos distribuidos. 2. ESQUEMA BÁSICO ESTRUCTURA INTERNA: MONOLÍTICO Y MODULAR (R) Monolítico : El sistema operativo se escribe como una colección de procesamientos, cada uno de los cuales puede llamara a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procesamiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si éste último proporciona cierto cálculo útil para el primero. Modular : TIPOS DE SISTEMAS: MONOUSUARIO, MULTIUSUARIO, DISTRIBUIDO, DE RED, DE TIEMPO REAL, DE PROPÓSITO ESPECIAL . Sistemas Monousuario : 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. Sistemas Multiusuario : Sistemas Operativos de Red : Los sistemas operativos de red se definen como aquellos que tiene la capacidad de interactuar con sistemas operativos en otras computadoras por medio de un medio de transmisión con el objeto de intercambiar información, transferir archivos, ejecutar comandos remotos y un sin fin de otras actividades. El punto crucial de estos sistemas es que el usuario debe saber la sintaxis de un conjunto de comandos o llamadas al sistema para ejecutar estas operaciones, además de la ubicación de los recursos que desee acceder. Sistemas Operativos Distribuidos : Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando integrar recursos ( impresoras, unidades de respaldo, memoria, procesos, unidades centrales de proceso ) en una sola máquina virtual que el usuario acceso en forma transparente. Es decir, ahora el usuario ya no necesita saber la ubicación de los recursos, sino que los conoce por nombre y simplemente los usa como si todos ellos fuesen locales a su lugar de trabajo habitual. Todo lo anterior es el marco teórico de lo que se desearía tener como sistema operativo distribuido, pero en la realidad no se ha conseguido crear uno del todo, por la complejidad que suponen: distribuir los procesos en las varias unidades de procesamiento, reintegrar subresultados, resolver problemas de concurrencia y paralelismo, recuperarse de fallas de algunos recursos distribuidos y consolidar la protección y seguridad entre los diferentes componentes del sistema y los usuarios. Los avances tecnológicos en las redes de área local y la creación de microprocesadores de 32 y 64 bits lograron que computadoras mas o menos baratas tuvieran el suficiente poder en forma autónoma para desafiar en cierto grado a los mainframes, y a la vez se dio la posibilidad de intercomunicarlas, sugiriendo la oportunidad de partir procesos muy pesados en cálculo en unidades más pequeñas y distribuirlas en los varios microprocesadores para luego reunir los subresultados, creando así una máquina virtual en la red que exceda en poder a un mainframe. El sistema integrador de los microprocesadores que hacer ver a las varias memorias, procesadores, y todos los demás recursos como una sola entidad en forma transparente se le llama sistema operativo distribuido. Las razones para crear o adoptar sistemas distribuidos se dan por dos razones principales: por necesidad ( debido a que los problemas a resolver son inherentemente distribuidos ) o porque se desea tener más confiabilidad y disponibilidad de recursos. Sistemas operativos de tiempo real : Un sistema de tiempo real es aquel en el que para que las operaciones computacionales estén correctas no depende solo de que la lógica e implementación de los programas computacionales sea correcto, sino también en el tiempo en el que dicha operación entregó su resultado. Si las restricciones de tiempo no son respetadas el sistema se dice que ha fallado. Por lo tanto, es esencial que las restricciones de tiempo en los sistemas sean cumplidas. El garantizar el comportamiento en el tiempo requerido necesita que el sistema sea predecible. Es también deseable que el sistema obtenga un alto grado de utilización a la vez que cumple con los requerimientos de tiempo.” LENGUAJES DE CONTROL (SHELL), INTERFACES UTILITARIOS DE UN SISTEMA OPERATIVO. GRÁFICAS Y LLAMADAS AL SISTEMA. Llamadas al Sistema : Esta sección está dedicada a las llamadas al sistema que te permiten acceder a la funcionalidad de red de una máquina Unix. Cuando llamas a una de estas funciones, el núcleo toma el control y realiza todo el trabajo por ti automáticamente. 3. ARQUITECTURA DE UN SISTEMA OPERATIVO MANEJO DEL PROCESADOR: POLÍTICAS Y TÉCNICAS PARA LA GESTIÓN (SCHEDULING) (E) MANEJO DE MEMORIA SECUNDARIA: POLÍTICAS Y TÉCNICAS PARA LA GESTIÓN (E) MANEJO DE DISPOSITIVOS DE E/S (E) SISTEMA DE ARCHIVOS: ARCHIVOS Y DIRECTORIOS. ESTRUCTURA, ORGANIZACIÓN Y TIPOS (E) SEGURIDAD Y PROTECCIÓN (E) 4. DESEMPEÑO DE UN SISTEMA OPERATIVO HERRAMIENTAS MATEMÁTICAS ASOCIADAS: TEORÍA DE CÁLCULO DE PROBABILIDADES, PROCESOS DE MARKOV (R, E) ALGORITMOS DE SCHEDULING (R, E) COLAS, 5. DISPOSITIVOS Y SERVICIOS ESPECIALES CONFIGURACIÓN (E) II. SISTEMAS OPERATIVOS ESPECIALIZADOS 1. TIPOS ESPECIALES DE SISTEMAS OPERATIVOS INTERCOMUNICACIÓN ENTRE PROCESOS (R) SISTEMAS OPERATIVOS DE RED: SERVIDORES DE ARCHIVOS Y DE IMPRESIÓN, ARQUITECTURA CLIENTE-SERVIDOR, ARQUITECTURA PAR A PAR (R) SISTEMAS OPERATIVOS DISTRIBUIDOS: SISTEMA DE ARCHIVOS DISTRIBUIDOS, MEMORIA DISTRIBUIDA, BALANCEO DE CARGA (R) MODELOS DE PROCESOS DISTRIBUIDOS Y MULTIHILOS (R) SISTEMAS EN TIEMPO REAL (R, E) SISTEMAS PARA COMPUTADORAS PARALELAS (MEMORIA COMPARTIDA, MEMORIA DISTRIBUIDA, MEMORIA DISTRIBUIDA/COMPARTIDA) (R) 2. AMBIENTES GRÁFICOS MANEJO DE VENTANAS (E) ENTORNOS MULTITAREA (R)