Virtual Memory System (VMS)
Antecedentes VMS
En 1975, Digital se dio cuenta de que sus competidores estaban desarrollando procesadores de 32 bits y que esta tecnología le quitaría clientes a la arquitectura 16 bits de PDP. Gordon Bell, una figura legendaria en la historia de la computación y entonces vicepresidente de ingeniería de Digital, coordinó el desarrollo del procesador de 32 bits, al cual Digital eventualmente nombró VAX.
Para ese entonces, Cutler, que ya una estrella dentro de Digital, formó parte del equipo de desarrollo inicial de VAX. Digital encargó a Cutler, además de a Dick Hustvedt y a Peter Lipman, el diseño del sistema operativo del VAX, el VMS. Los objetivos principales del diseño del hardware de VAX incluían una compatibilidad con los procesadores predecesores PDP-11 y la suficiente flexibilidad para que VAX fuera la base tanto de ordenadores de escritorio, como de estaciones de trabajo de bajo rendimiento, así como de servidores empresariales. Digital también hizo que VMS fuese compatible con el predecesor RSX-11M y diseñó VMS para ejecutar en máquinas de diferentes tamaños. De este período de desarrollo, Digital menciona en su historia empresarial, que estaba «apostando su futuro» en VAX y VMS. Como una curiosa repetición de la declaración de Digital, Bill Gates anunció recientemente que Microsoft "apostaba su futuro" en NT 5.0.
En 1977, Digital presentó VAX-11/780 y VMS 1.0 y comenzó a ofrecer el producto al mercado en 1978. Como líder del proyecto y uno de los arquitectos principales de VMS, Cutler continuó trabajando en las sucesivas versiones de VMS hasta que se empezó a aburrir. En 1981, Cutler insinuó que quería dejar Digital. Para retener a su desarrollador estrella, Digital formó un grupo de cerca de 200 ingenieros de hardware y software bajo la dirección de Cutler. Cutler instaló a su equipo a Seattle y comenzó un centro de desarrollo.
El objetivo de este grupo de élite era diseñar una nueva arquitectura CPU y un nuevo sistema operativo que llevase a Digital a los años 90s. Digital denominó este proyecto de hardware Prism, y a su sistema operativo, Mica.Pero en 1988, Digital canceló el proyecto de Cutler y despidieron a muchos de sus miembros. Cutler decidió dejar Digital, pero antes de que lo hiciera, Microsoft se dió cuenta de que tenían una oportunidad ideal para contratar a Cutler. En la época en que Cutler dejó Digital, la versión más reciente de VMS era la 5.0 (la versión actual es la 7.1).
El sistema operativo VMS (Virtual Memory System) es uno de los más robustos en el mercado Actualmente con su versión OpenVMS 5.x existe para los procesadores de las máquinas VAX (CISC) y con el Alpha-chip (RISC). Ofrece un amplio conjunto de comandos a través de su intérprete Digital Command Language (DCL), utilidades de red (DECnet), formación de 'clusters' de computadoras para compartir recursos, correo electrónico y otras facilidades. Es un sistema operativo multiusuario/multitarea monolítico.
Actualmente Gordon Bell es investigador senior en el Grupo de Investigación Audiovisual de Microsoft, una parte del centro de investigación del área de la bahía (BARC),que mantiene interés por las empresas de lanzamiento.
VMS (Virtual Memory System)
Conceptuado originalmente de los funcionamientos de VAX y Alfa, la familia de estos ordenadores fue creada por la Digital Equipment Corporation de Maynard, Massachusetts (esta empresa fue comprada entonces por la Compaq, que fue comprada más tarde por la Hewlett-Packard), es el más reciente sistema de la Hewlett-Packard construidos en torno a la arquitetura del núcleo del procesador Intel Itanium.
OpenVMS es un sistema operativo (SO) multiusuario, multiprocesador que utiliza memoria virtual y fue proyectado para procesamiento en lote (batch), en tiempo real y procesamiento transacional. El sistema ofrece elevada disponibilidad a través de cluster, o sea, la habilidad para distribuir en múltiples máquinas físicas la carga del sistema. Esto permite que el sistema sea "tolerante a desastre". VMS incluye también un sistema de prioridad de procesos que permite que el proceso en tiempo real funcione sin barreras, bloqueos o interferencias
El OpenVMS comercializó muchas características que son consideradas ahora exigencias para los sistemas operativos.
Estos incluyen:
Trabajo en red integrado del ordenador (originalmente DEC net y más tarde, TCP/IP).
Simétrico, asimétrica, y en una multiprocessing, incluyendo clustering .
Distribuir sistemas de archivos (Files-11).
Integrado banco de datos características como RMS y bases de datos buceadas incluyendo Rdb.
Sustentación para múltiples lenguajes de programación.
Un extensivo lenguaje de mando Shell (Lenguaje de mando DIGITAL).
Hardware particionado para multiprocessos.
Elevado - en nivel de la seguridad.
Los ambientes de empresas típicamente seleccionan y usan OpenVMS para varias finalidades como la mail server, servicios de red, manufactura o control y monitoreo del transporte, aplicaciones y bases de datos críticas, y particularmente ambientes donde la disponibilidade del sistema y el acceso de los datos son críticos. Los por encima del tiempo del sistema de diez o más fueron relatados, y las características tales como mejoramiento del Rolling y aglomerar-se permiten que las aplicaciones y datos aglomerados permanezcan continuamente accesibles cuando el software de sistema este operando y el mantenimiento y los mejoramientos de las herramientas estén en ejecucion, o cuando un centro de datos entero esté destruido. Los clientes que usan OpenVMS incluyen bancos y servicios financieros, hospitales y otras empresas del ramo de salud, Network Information Services, y fabricantes industriales en grande escala de varios productos.
La memoria virtual de VAX/VMS costa de 232 bytes; se divide en un espacio de direcciones del sistema y un espacio de direcciones de proceso, cada uno con 231 bytes. El espacio de direcciones del sistema es compartido por todos los procesos; sin embargo, cada proceso de usuario tiene su propio espacio de direcciones de proceso. Este último se divide a su vez en una región de programa y una región de control. La región de programa contiene el programa que está ejecutando el proceso, y la región de control contiene las pilas de usuario y de sistema, e información adicional que mantiene el sistema operativo.
La memoria virtual se divide en páginas de 512 bytes. Hay una tabla de páginas del sistema que contiene una entrada para cada página del espacio de direcciones del sistema. Esta entrada indica el marco de página en el que se encuentra cargada la página asociada, o la dirección de la página de almacenamiento auxiliar. La dirección inicial y la longitud de esta tabla de página del sistema se especifican con dos registros de aplicación especial. El espacio de direcciones de proceso se describe con dos tablas de páginas: una para la región de programas y otra para la región de control. Esas tablas residen en el espacio de direcciones del sistema y, a su vez, pueden estar paginadas. Las rutinas de administración de memoria también mantienen una tabla que describe el estado de todos los marcos de páginas de la memoria y el estado y la localización de todas las páginas virtuales del sistemas.
Los servicios de E/S del sistema proporcionan servicios dependientes e independientes de los dispositivos. Los usuarios con suficientes derechos pueden efectuar directamente operaciones E/S para definir sus propias estructuras de archivo en dispositivos privados de disco o cinta. Ambos tipos de manejo E/S usan las mismas rutinas de bajo nivel del sistema para poner en la cola y ejecutar operaciones físicas de E/S.
El manejo de archivos en VMS
El sistema de archivos de VMS es jerárquico aunque la descripción de sus senderos tiene una sintaxis propia.
Los archivos en VMS se referencían con la sintaxis 'nombre.tipo;versión', donde 'nombre' es una cadena de caracteres alfanuméricos, 'tipo' es la extensión del archivo y se usa generalmente para describir a qué aplicación pertenece ('pas'=pascal, 'for' fortran, etc.) y 'versión' es un número entero que el sistema se encarga de asignar de acuerdo al número de veces que el archivo ha sido modificado. Por ejemplo, si se ha editado tres veces el archivo 'lee.pas', seguro que existirán las versiones 'lee.pas;1', 'lee.pas;2' y 'lee.pas;3'. De esta forma el usuario obtiene automáticamente una 'historia' de sus archivos.
La protección de los archivos se realiza mediante listas de control de acceso (Access Control Lists). Se pueden establecer protecciones hacia el dueño del archivo, hacia los usuarios privilegiados (system), hacia los usuarios que pertenecen al mismo grupo de trabajo que el dueño y hacia el resto del mundo. Para cada uno de los anteriores usuarios se manejan cuatro permisos: lectura, escritura, ejecución y borrado. Por ejemplo, el siguiente comando:
$ set protection=(S:rwed,O:rwed,G:d:W:e) lee.pas:establece que el archivo 'lee.pas' dará todos los permisos al sistema (S:rwed) y al dueño (O:rwed), mientras que a los miembros del grupo de trabajo le da permiso de borrar (G:d) y al resto del mundo permiso de ejecución (W:e). [VMS89].
En VMS, a través de su 'Record Management System' (RMS) se obtienen las facilidades para la manipulación de archivos tanto locales como en red. En el RMS, se proveen facilidades tales como: múltiples modos de acceso a archivos para lograr accesarlos en forma concurrente y permitiendo su consistencia e integridad, establecimiento de candados automáticos al momento de apertura para evitar actualizaciones erróneas y optimización interna en las operaciones de entrada/salida al accesar los archivos. En el caso de que los archivos no son locales, sino remotos, se utiliza internamente el protocolo llamado 'Data Access Protocol' (DAP).
Manejo de procesos en VMS
Soporta muchos ambientes de usuario tales como : Tiempo crítico, desarrollo de programas interactivos, batch, ya sea de manera concurrente, independiente o combinado.
El calendarizador VAX/VMS realiza calendarización de procesos normales y de tiempo real, basados en la prioridad de los procesos ejecutables en el Balance Set.Un proceso normal es referido a como un proceso de tiempo compartido o proceso background mientras que los procesos en tiempo real se refieren a los de tiempo crítico.
En VMS los procesos se manejan por prioridades y de manera apropiativa. Los procesos se clasifican de la prioridad 1 a la 31, siendo las primeras quince prioridades para procesos normales y trabajos en lote, y de la 16 a la 31 para procesos privilegiados y del sistema. Las prioridades no permanecen fijas todo el tiempo sino que se varían de acuerdo a algunos eventos del sistema. Las prioridades de los procesos normales pueden sufrir variaciones de hasta 6 puntos, por ejemplo, cuando un proceso está esperando un dispositivo y éste fue liberado. Un proceso no suelta la unidad central de procesamiento hasta que exista un proceso con mayor prioridad.
El proceso residente de mayor prioridad a ser ejecutado siempre se selecciona para su ejecución. Los procesos en tiempo crítico son establecidos por el usuario y no pueden ser alterados por el sistema. La prioridad de los procesos normales puede ser alterada por el sistema para optimizar overlap de computación y otras actividades I/O.
Un aspecto importante del planificador de procesos en VMS es la existencia de proceso 'monitor' o 'supervisor', el cual se ejecuta periódicamente para actualizar algunas variables de desempeño y para re-calendarizar los procesos en ejecución.
Existen versiones de VMS que corren en varios procesadores, y se ofrece librerías para crear programas con múltiples 'threads'. En específico se proveen las interfaces 'cma', 'pthread' y 'pthread-exception-returning'. Todas estas librerías se conocen como DECthreads e incluyen librerías tales como semáforos y colas atómicas para la comunicación y sincronización entre threads. El uso de threads sirve para enviar porciones de un programa a ejecutar en diferentes procesadores aprovechando así el multiproceso.
Servicios del Sistema para el Control de Procesos
Crear un proceso: El servicio de creado de sistema permite a un proceso crear otro. El proceso creado puede ser un subproceso o un proceso completamente independiente. (se necesitan privilegios para hacer esto).
Suspender un proceso: Esto es que le permite a un proceso suspenderse a sí mismo o a otro (también necesita tener privilegios).
Reanudar un proceso: Permite a un proceso reanudar a otro si es que este tiene privilegios para hacerlo.
Borrar un proceso: Permite que se borre el proceso mismo o a otro si es que es un subproceso, o si no tiene que tener privilegios de borrado.
Dar Prioridad: Permite que el proceso mismo se ponga prioridad o a otros, para el calendarizador.
Dar el modo de espera: Permite que el proceso escoja de dos modos: el modo por default es cuando un proceso requiere un recurso y está ocupado y espera a que esté desocupado, y el otro modo es cuando está ocupado el recurso, el proceso no espera y notifica al usuario que el recurso no se encuentra disponible en ese momento en lugar de esperar.
Hibernar: Es cuando un proceso se hace inactivo pero está presente en el sistema. Para que el proceso continue necesita de un evento para despertar.
Wake: Esto activa a los procesos que están hibernando.
Exit: Es cuando se aborta un proceso.
Dar nombre al proceso: Este puede dar un nombre al proceso mismo o cambiarlo (el PCB contiene el nombre).
Manejo de memoria en VMS
El sistema operativo VMS utiliza un esquema de manejo de memoria virtual combinado de segmentación paginada que se describe exactamente como se vio en el capítulo de administración de memoria de este trabajo. Lo novedoso en VMS es que usa un doble esquema de paginación cuando las páginas se van a intercambiar de memoria RAM hacia disco duro. En primer lugar, cuando una página necesita cargarse a RAM ésta se carga junto con varias páginas que están adyacentes, justificando esto por medio de la teoría del conjunto de trabajo que especifica que es muy probable que las referencias a memoria en el futuro inmediato caerán precisamente en esas páginas. De este modo, se tiene un doble algoritmo: al hecho de cargarse las páginas cuando se necesitan se le llama 'paginación por demanda' y al hecho de traerse las otras páginas del conjunto de trabajo por anticipado se le llama 'paginación anticipada'.
El manejo de entrada/salida en VMS
En VMS, se usan nombres 'lógicos' para describir a los dispositivos existentes en el sistema. Un concepto importante tanto en archivos como en dispositivos es el 'User Identification Code' (UIC) que permite establecer protecciones adicionales a los ACL. En los dispositivos se manejan cinco tipos de permisos: leer, escribir, ejecutar, borrar y controlar. No todos los permisos se aplican a todos los dispositivos. El permiso de “control” no se maneja explícitamente sino que se otorga por omisión acudida al dueño y al sistema.
Los permisos de los discos, unidades de cinta y otros dispositivos son establecidos por el administrador del sistema.
Los dispositivos reciben nombres 'lógicos', por ejemplo, para una unidad de cinta el nombre puede ser 'MTA0'.
System Interface" (SCSI) que son ampliamente usados en diversas plataformas. El intercambio de datos entre la unidad central de proceso y los periféricos se lleva a cabo a través de los 'buses' normalizados UNIBUS y MASSBUS.
El sistema operativo OpenVMS (Sistema de Memoria Virtual) es un sistema multiusuario y multiproceso diseñado por Digital, ahora parte de Hewlett-Packard, para su utilización en entornos de tiempo compartido, tiempo real, procesamiento por lotes y procesamiento de transacciones. Conocido inicialmente como VMS, se ejecutaba sobre sistemas VAX, el nombre cambió a OpenVMS en 1990. Fue posteriormente portado a DEC Alpha (1992) e Intel Itanium (2005).
No hay comentarios:
Publicar un comentario