Download 6.2 Funciones de la gestión de archivos - soperativos
Document related concepts
Transcript
SISTEMAS OPERATIVOS COMPILACION BIBLIOGRAFICA DE LOS SISTEMAS OPERATIVOS PRESENTADO A: CARLOS HERNAN GOMEZ PRESENTADO POR: LUKAS CAICEDO CORRALES NATALY ARENAS VARGAS LAURA ANDREA BEDOYA MARULANDA JESUS DAVID JIMENEZ RODRIGUEZ UNIVERSIDAD NACIONAL DE COLOMBIA, SEDE MANIZALES ADMINISTRACIÓN DE SISTEMAS INFORMÁTICOS MANIZALES MARZO 9 DE 2009 INDICE 1. INTRODUCCION 1.1 HISTORIA Y EVOLUCION DE LOS SISTMEAS OPERATIVOS 1.1.1 La Generación Cero (década de 1940) 1.1.2. La primera generación (1945 - 1955): Tubos de vacío y Tableros enchufables. 1.1.3. La segunda generación (1955 - 1965): Transistores y Sistemas de lotes 1.1.4. La tercera generación (1965 - 1980): Circuitos Integrados (CI) y multiprogramación 1.1.5. La cuarta generación (1980 - 1990): Computadoras Personales. 1.2 CONCEPTOS Y VISION GENERAL DE LOS SISTEMAS OPERATIVOS 1.2.1 Visión amplia. 1.2.2 Visión restringida. 1.2.3 Administración de tareas. 1.2.3.1 Monotarea. 1.2.3.2 Multitarea. 1.2.4 Administración de usuarios. 1.2.4.1 Monousuario. 1.2.4.2 Multiusuario. 1.2.5 Manejo de recursos. 1.2.5.1 Centralizado. 1.2.5.2 Distribuido. 1.2.6 Interfaces del usuario. 1.2.7 Administración de recursos. 1.2.8 Administración de archivos. 1.2.9 Administración de tareas. 1.2.10 Servicio de soporte. 1.2.11 Características de los Sistemas Operativos. 1.2.12 Clasificación de los sistemas operativos. 1.2.12.1 Sistemas Operativos por lotes. 1.2.12.2 Sistemas Operativos de tiempo real. 1.2.12.3 Sistemas Operativos de multiprogramación o sistemas operativos multitarea. 1.2.12.4 Sistemas Operativos de tiempo compartido. 1.2.12.5 Sistemas Operativos distribuidos. 2. ESTRUCTURA DE LOS SISTEMAS OPERATIVOS 2.1 Estructura Monolítica 2.1.2 Estructura Jerárquica. 2.1.3 Máquina Virtual. 2.1.4 Cliente-Servidor (Microkernel). 2.2 Administración de recursos. 3. GESTION DEL PROCESADOR 3.1 Planeación del espacio 3.2 Administración de procesos 4. GESTION DE MEMORIA 4.1 Memoria real. 4.2 Memoria virtual. 4.3 Espacio De Direcciones. 4.4 Administración de Almacenamiento Secundario. 5. CONCURRENCIA 6. GESTION DE ARCHIVOS / ENTRADA / SALIDA 6.1 Objetivos para un sistema de gestión de archivos 6.2 Funciones de la gestión de archivos 6.3 Arquitectura de los sistemas de archivos 6.4 Criterios en la elección de una organización de archivos 6.5 Las cinco organizaciones fundamentales son 7. PRINCIPIOS DE DISEÑO 8. SISTEMAS OPERATIVOS MULTIPROCESADORES 9. SISTEMAS OPERATIVOS DISTRIBUIDOS 10. SISTEMAS OPERATIVOS TIEMPO REAL / EMBEDIDOS 10.1 Windows XP Embedded 10.2 RTLinux 10.3 ChorusOS 10.4 VxWorks 10.5 QNX 10.6 S.O µltron 10.7 Windows Embedded CE 10.8 Freertos 10.9 Net BSD 10.10 Open BSD 10.11 Linux empotrado 11. PRESENTACION TECNICA DE DISTINTOS SISTEMAS OPERATIVOS DISPONIBLES EN EL MERCADO 11.1 Sistemas operativos Unix y similares 11.1.1 Unix 11.1.2 Solaris 11.1.3 Linux 11.1.4 Mac os X 11.2 Sistemas operativos Windows 11.2.1 Windows server 2000/2003 11.2.2 Sistema operativo Windows NT 3.51 y 4.0 11.2.3 Windows vista 11.2.4 Windows CE 12. RESUMEN 13. CONCLUCIONES 14. BIBLIOGRAFIA INTRODUCCION En el transcurso del tiempo se han referenciado diferentes cambios, que en su afán de mejoramiento han permitido utilizar nuevas herramientas de comunicación. Dichas herramientas han tenido un enfoque tecnológico, que ha sido utilizado para mejorar los procesos y procedimientos de las diferentes actividades realizadas por un computador; el cual acompañado de su Sistema Operativo, ha sido de gran utilidad para que las personas puedan comprender de una manera mas adecuada la funcionalidad de este sistema en todas las aéreas. El primer computador llamado “Maquina analítica” fue creado por Charles Babage (1792 – 1871), este no poseía un sistema operativo; desde ese entonces el hombre en su afán por desarrollar nuevas tecnologías trato de acercarse a la interpretación del lenguaje de máquina. Los Sistemas Operativos han venido evolucionando a través de los años, ya que estos se han apegado íntimamente a la arquitectura de las computadoras en las cuales se ejecutan, logrando el hombre desarrollar diferentes tipos de Sistemas Operativos, todo ello para que la persona que manipule estos sistemas pueda tener una interacción amena con este. Hoy día se encuentran en el mercado diferentes tipos de Sistemas Operativos, que le permiten al usuario seleccionar el que se acomode a sus exigencias. No solo se requiere un buen sistema operativo para llevar a cabo las diferentes funciones que este requiere, sino también, una buena maquina para que haya una comunicación adecuada entre “hombre y maquina”. En este trabajo se pretende dar a conocer la importancia de los sistemas operativos en el ámbito de la información y la sistematización; sus comienzos y evoluciones a lo largo del tiempo en beneficio de las personas que requieren hacer uso de funciones para que sean interpretadas, analizadas y ejecutadas; además se traen a colación algunos sistemas operativos más comunes en el campo. INTRODUCCION A LOS SISTEMAS OPERATIVOS Un Sistema Operativo es un programa que actúa como interface entre el usuario y el hardware de una computadora. El propósito es proveer un entorno en el cual el usuario puede ejecutar programas, es decir que un objetivo principal de un Sistema Operativo es hacer que un sistema sea conveniente de usar. Otro objetivo es que se use el hardware de manera eficiente, o sea que está íntimamente ligado a él. Un Sistema Operativo es un programa para un determinado hardware. Otro objetivo es administrar los recursos de una computadora, tanto de hardware como de software. Por lo tanto, un Sistema Operativo es un conjunto de programas que administran un sistema. Para entender qué son los Sistemas Operativos hay que entender como fueron desarrollándose, Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales características de uno contemporáneo, es útil considerar como han ido evolucionando éstos con el tiempo; desde inicios de los 40's hasta la fecha. 1. 1 HISTORIA Y EVOLUCION DE LOS SISTEMAS OPERATIVOS Los sistemas operativos han venido evolucionando a través de los años, ya que estos se han apegado íntimamente a la arquitectura de las computadoras en las cuales se ejecutan. Inicialmente solo hubo hardware. Las primeras computadoras eran máquinas muy grandes que se programaban desde una consola. El programador podía escribir un programa, y luego operar el programa directamente desde la consola del operador. Primero, el programa tenía que cargarse manualmente en la memoria, ya sea por medio de switches (llaves de conmutación), cinta de papel, o tarjetas perforadas. Luego, se apretaban los botones apropiados para cargar la dirección de comienzo y comenzaba la ejecución del programa. A medida que el programa corría, el programador/operador podía monitorear su ejecución por medio de luces en la consola. Si se descubrían errores, el programador podía parar el programa, examinar los contenidos de la memoria y registros, y corregir el programa directamente desde la consola. La salida se imprimía o perforaba en cintas o tarjetas para una impresión posterior. Un aspecto importante de este entorno era la naturaleza interactiva HANDS-ON. El programador era el operador. Muchos sistemas usaban un esquema de reserva para otorgar tiempo de maquina: para usar la maquina. La primera computadora digital real fue diseñada por el matemático ingles Charles Babbage (1792 - 1871). Aunque Babbage gasto la mayor parte de su vida y de su fortuna intentando construir su “ maquina analítica “ , nunca la hizo funcionar adecuadamente porque era un diseño puramente mecánico y la tecnología de su época no podía producir las ruedas, el engranaje, levas y otras partes mecánicas con la alta precisión que el necesitaba. Sin tener que decirlo, la maquina analítica no tuvo un sistema operativo. 1.1.1. LA GENERACIÓN CERO (DÉCADA DE 1940) Los sistemas operativos han ido evolucionando durante los últimos 40 años a través de un número de distintas fases o generaciones que corresponden a décadas. En 1940, las computadoras electrónicas digitales más nuevas no tenían sistema operativo. Las Máquinas de ese tiempo eran tan primitivas que los programas por lo regular manejaban un bit a la vez en columnas de switch's mecánicos. Eventualmente los programas de lenguaje máquina manejaban tarjetas perforadas, y lenguajes ensamblador fueron desarrollados para agilizar el proceso de programación. Los usuarios tenían completo acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano. 1.1.2. PRIMERA GENERACIÓN (1945 - 1955): TUBOS DE VACIO Y TABLEROS ENCHUFABLES Los laboratorios de investigación de la General Motors implementaron el primer sistema operativo en los 50's, el cual generalmente corría una tarea a la vez y suavizó la transición entre tareas para obtener máxima utilización del sistema de la computadora. Los sistemas operativos de los años cincuenta fueron diseñados para hacer mas fluida la transmisión entre trabajos. Antes de que los sistemas fueran diseñados, se perdía un tiempo considerable entre la terminación de un trabajo y el inicio de siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunían por grupo o lotes. Cuando el trabajo estaba en ejecución, esta tenia control total de la maquina. Al terminar cada trabajo (bien normal o anormalmente), el control era devuelto al sistema operativo, el cual "limpiaba" y leía e inicia el trabajo siguiente. Durante la segunda guerra mundial, alrededor de la mitad de la década de 1940, Howard Aiken en Hardvard, Jon Von Neumann en el Instituto de Estudios Avanzados en Princeton, J. Presper Ecker y William Mauchley en la Universidad de Pennsylvania y Konrad Zuse en Alemania, entre otros, todos obtuvieron resultados óptimos en la construcción de maquinas de calculo mediante el uso de tubos de vacío. En estos primeros días, un grupo singular de personas diseño, construyo, programo, opero y dio mantenimiento a cada maquina. Toda la programación se realizo en lenguaje de maquina absoluto. Los lenguajes de programación se desconocían (todavía no existía el lenguaje ensamblador). Los primeros sistemas operativos eran extraños. El modo usual de operación consistía en que el programador firmaba para tener acceso a un bloque de tiempo en la hoja de registro situada en la pared, después bajaba al cuarto de maquinas, insertaba su tablero enchufable en la computadora y pasaba las siguientes horas esperando que ninguno de los 20,000 tubos de vació se fundiera durante la ejecución de su programa. Al inicio de la década de 1950, la rutina había mejorado un poco con la introducción de la tarjetas perforadas. Ahora era posible escribir en tarjetas y leerlos, en vez de utilizar tableros enchufables; de lo contrario el procedimiento era el mismo. 1.1.3. SEGUNDA GENERACIÓN (1955 - 1965): TRANSISTORES Y SISTEMAS DE LOTE La característica de la segunda generación de los sistemas operativos fue el desarrollo de los sistemas compartido con multiprogramación, y los principios del multiprocesamiento. En los sistemas de multiprogramación, varios programas de usuarios se encuentran el mismo tiempo en el almacenamiento principal, y el procesador se cambia rápidamente de un trabajo a otro. En los sistemas de multiprocesamiento se utilizan varios procesadores en un solo sistema computacional, con la finalidad de incrementar el poder de procesamiento de la maquina. La independencia de dispositivos aparece después. Un usuario que deseara escribir datos en una cinta en sistemas de la primera generación tenia que hacer referencia especifica a una unidad en particular. En los sistemas de la segunda generación, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto número de pistas y cierta densidad. El sistema operativo localizaba, entonces, una unidad de cinta disponible con las características deseadas, y le indicaba al operador que montara una cinta en esa unidad. La introducción del transistor a mediados de la década de 1950 cambio la imagen radicalmente. Las computadoras se volvieron lo suficientemente confiables, en un principio hubo una clara separación entre los diseñadores, armadores, operadores, programadores y personal de mantenimiento. Estas maquinas se instalaban en cuartos de computadoras especialmente acondicionados con aire, con cuerpo de operadores profesionales para accionarlas. Un programador primeramente escribiría el programa en papel (en FORTRAN o en lenguaje ensamblador) y después lo perforaría en tarjetas. Después llevaría la pila de tarjetas al cuarto de introducción al sistema y la entregaría a uno de los operadores el cual iniciaba el proceso en la computadora, este proceso desperdiciaba mucho tiempo. Dado el alto costo del equipo, no es sorprendente que las personas buscaran rápidamente maneras de reducir el tiempo perdido. La solución que generalmente se adoptaba era el sistema de lote. La idea implícita en este sistema era la de conjuntar un cajón lleno de trabajos en el cuarto de introducción al sistema y después leerlos en una cinta magnética mediante el uso de una computadora ( relativamente ) pequeña y poco costosa, como la IBM 1401. Después de casi una hora de recolectar un lote de trabajos, la cinta se volvía a enrollar y se llevaba al cuarto de maquinas. Después el operador cargaba un programa especial ( el ancestro del sistema operativo de hoy en día ) , el cual leía el primer trabajo y lo ejecutaba, la salida se escribía en una segunda cinta, en vez de imprimirse. Después de terminar cada trabajo, el sistema operativo leía automáticamente el siguiente trabajo de la cinta, y comenzaba a ejecutarlo. La estructura de un trabajo de entrada común arrancaba con una tarjeta $JOB, que especifica el tiempo máximo de ejecución en minutos, el numero de cuenta que se cargara y el nombre del programador. Después venia una tarjeta $FORTRAN, que indicaba al sistema operativo que debía cargar el compilador de FORTRAN. Venia seguido de un programa que debía compilarse y después de una tarjeta $LOAD, que ordenaba al sistema operativo cargar el programa objeto recién compilado, después venia la tarjeta $RUN, que indicaba al sistema operativo que debía ejecutar el programa con los datos que le seguían. Por ultimo, la tarjeta $END marcaba el final del trabajo. Los sistemas operativos comunes eran FMS (el sistema monitor del FORTRAN) e IBSYS, sistema operativo de IBM de la 7094. 1.1.4. TERCERA GENERACIÓN (1965 - 1980): CIRCUITOS INTEGRADOS (CI) Y MULTIPROGRAMACIÓN La tercera generación de sistemas operativos comenzó en forma efectiva, en 1964, con la introducción de la familia de computadores Sistemas/360 de IBM. Las variadas computadoras 360 fueron diseñadas para ser compatibles con el hardware, para usar el OS/360 sistema operativo, y para ofrecer mayor poder computacional a cómo iba avanzando el usuario en las series. Sistemas operativos más avanzados fueron desarrollados para servir a múltiples usuarios interactivos a la vez. Los usuarios interactivos se comunicaban con la computadora vía terminales que están en línea conectadas directamente a la computadora. Los computadores de la tercera generación fueron diseñados como sistemas de usos generales. Casi siempre eran sistemas grandes, voluminosos, con el propósito de serlo todo para toda la gente. Este concepto vendió gran cantidad de computadores, pero tenía su precio. Los usuarios que necesitaban de algunas aplicaciones particulares que no requerían de este tipo de poder pagaban caro el elevado tiempo de ejecución, tiempo de, tiempo de depuración, mantenimiento, etc. Los sistemas operativos de la tercera generación eran sistemas de modos múltiples. Algunos soportan simultáneamente procesos por lotes, tiempo compartido, procesamiento de tiempo real y multiprocesamiento. Eran grandes y costosos, nunca antes se había construido algo similar, y muchos de los esfuerzos de desarrollo terminaron muy arriba del presupuesto y mucho después de lo que el planificador marcaba como fecha de terminación. Al inicio de la década de 1960 muchos fabricantes de computadoras tenían dos líneas de trabajo distintas y totalmente incompatibles. Por un lado existían las computadoras científicas de grande escala orientadas a las palabras, como la 7094, que se utilizaban para realizar cálculos numéricos de ciencias e ingeniería. Por el otro lado estaban las computadoras comerciales orientadas a los caracteres, como 1401, que se utilizaban para el ordenamiento de cintas e impresión por parte de bancos y compañías de seguros. El desarrollo y mantenimiento de dos líneas de productos diferentes era una proposición costosa para los fabricantes. Además, muchos nuevos compradores de computadoras necesitaban una maquina pequeña, pero después se expandían y querían una maquina de mayor tamaño que ejecutara todos sus programas antiguos, pero con mayor velocidad. IBM intento resolver estos dos problemas de un solo golpe introduciendo en el mercado el Sistema/360. El 360 era una serie de maquinas compatibles con el software que variaban del tamaño de la 1401 a una mucho mas poderosa que la 7094, el 360 estaba diseñado para realizar cálculos tanto científicos como comerciales. Por lo tanto una sola familia de maquinas podía satisfacer las necesidades de todos los clientes. El sistema 360 fue la primera línea importante de computadoras que utilizo circuitos integrados (CI), con lo cual ofreció una mayor ventaja de precio/rendimiento sobre las maquinas de la segunda generación. La intención era que todo el software, como el sistema operativo, tenía que funcionar en todos los modelos. Tenia que correr en sistemas pequeños, y en sistemas muy grandes. Tenia que funcionar adecuadamente en sistemas con algunos periféricos y en sistemas con muchos periféricos. No había manera de que IBM escribiera una pieza de software que cumpliera todos esos requisitos conflictivos. El resultado fue un sistema operativo enorme y extraordinariamente complejo. Constaba de millones de líneas de lenguaje ensamblador escritas por miles de programadores, y contenía miles y miles de errores ocultos. A pesar de tamaño y problemas enormes, OS/360 y los sistemas operativos similares de la tercera generación satisfacían a muchos de sus clientes razonablemente bien, También popularizaron varias técnicas importantes ausentes en los sistemas operativos de la segunda generación. La más importante de estas fue la multiprogramación. Cuando el trabajo corriente se detenía para esperara a que se completara una operación en cinta u otra operación de E/S, la unidad central de procesamiento (CPU) simplemente permanecía ociosa hasta que terminara la operación de E/S. La solución que evoluciono consistía en partir la memoria en varias partes, con trabajo diferente en cada partición. Mientras que un trabajo esperaba a que se completara la E/S, otro trabajo podía estar utilizando la CPU. Si se podían mantener suficientes trabajos en la memoria central al mismo tiempo, la CPU podía mantenerse ocupada casi el 100% del tiempo. Otra característica de importancia en los sistemas operativos de la tercera generación era la capacidad de leer trabajos de tarjetas contenidas en el disco tan pronto como se llevaban al cuarto de computación. Siempre que se terminaba un trabajo, el sistema operativo podía cargar uno nuevo del disco en la partición no vacía y ejecutarlo, esta técnica se denomina manejo por cola de impresión. Los sistemas operativos de la tercera generación seguían siendo básicamente sistemas de lote. Con los sistemas operativos de la tercera generación, el tiempo entre la entrega de un trabajo y la devolución de la salida comprendía a menudo varias horas. El deseo de obtener un tiempo de respuesta corto marco el camino para el tiempo compartido, variante de la multiprogramación, en la cual cada usuario tiene una terminal en línea. En un sistema de tiempo compartido si hay 20 usuarios dentro del sistema y 17 de ellos están pensando o platicando o bien tomando café, la CPU puede distribuirse en turno para los tres trabajos que necesitan servicio. Aunque el primer sistema de tiempo compartido (CTSS) serio fue creado en MIT en una unidad 7094 especialmente modificada, no se volvió popular sino hasta que el hardware de protección necesario se disemino durante la tercera generación. Otro avance durante la tercera generación fue el crecimiento de las minicomputadoras, comenzando con DEC PDP-1 en 1961. Uno de los científicos que había trabajado en el proyecto MULTICS, Ken Thompson, hallo después una pequeña PDP-7 y empezó a escribir después una versión desguarnecida de MULTICS para un usuario. Este sistema se llamo “UNICS” (Uniplexed information and computing service, información unicanalizada y servicio de computación), pero su ortografía cambio mas tarde por UNIX. UNIX se ha desplazado a más computadoras que ningún otro sistema operativo de la historia y su uso sigue aumentando rápidamente. 1.1.5. CUARTA GENERACIÓN (1980 - 1990): COMPUTADORAS PERSONALES Los sistemas de la cuarta generación constituyen el estado actual de la tecnología. Muchos diseñadores y usuarios se sienten aun incómodos, después de sus experiencias con los sistemas operativos de la tercera generación, y se muestran cautelosos antes de comprometerse con sistemas operativos complejos. Con la ampliación del uso de redes de computadores y del procesamiento en línea los usuarios obtienen acceso a computadores alejados geográficamente a través de varios tipos de terminales. El microprocesador ha hecho posible la aparición de la computadora personal, uno de los desarrollos de notables consecuencias sociales más importantes de las últimas décadas. Ahora muchos usuarios han desarrollado sistemas de computación que son accesibles para su uso personal en cualquier momento del día o de la noche. La potencia de computador, que costaba varios cientos de miles de dólares al principio de la década de 1960, hoy es accesible por menos de mil dólares. El porcentaje de la población que tiene acceso a un computador en la década de los ochenta es mucho mayor y aumento rápidamente. Individuos podían tener su propia computadora para realizar parte de su trabajo, y utilizar facilidades de comunicación para transmitir datos entre sistemas. La aplicación de paquetes de software tales como procesadores de palabras, paquetes de bases de datos y paquetes de gráficos ayudaron a la evolución de la computadora personal. La llave era transferir información entre computadoras en redes de trabajo de computadoras. El correo electrónico, transferencia de archivos, y aplicaciones de acceso a bases de datos proliferaron. El modelo cliente-servidor fue esparcido. El campo de ingeniería de software continuó evolucionando con una mayor confianza proveniente de los E.U. Los ambientes del usuario, altamente simbólicos, mnemónicos y orientados hacia las siglas de las décadas de los sesenta y setenta, están siendo reemplazados, en la década de los ochenta, por los sistemas controlados por menú, los cuales guían al usuario a lo largo de varias opciones expresadas en un lenguaje sencillo. En los 90's habremos de entrar a la era de la verdadera distribución de computación en la cual calcula dentro de subcalculos que pueden ser ejecutados en otros procesadores en computadoras de múltiples procesadores y en conmutadores de red. Estos tipos de conectividad son facilitados para abrir sistemas estándar y protocolos que se empiezan desarrollar para grupos. Con la creación de los circuitos integrados LSI (integración a grande escala), chips que contiene miles de transistores en un centímetro cuadrado de silicón, la era de computadora personal vio sus inicios. Dos sistemas operativos han dominado la escena de la computadora personal: MS-DOS, escrito por Microsoft, Inc., para la IBM PC y otras computadoras que utilizan la CPU Intel 8088 y sus sucesores. y UNIX, que domina en las computadoras personales mayores que hacen uso de CPU Motorola 68000. Aunque la versión inicial de MS-DOS era relativamente primitiva, versiones subsiguientes han incluido más y más características de UNIX, lo que no es totalmente sorprendente dado que Microsoft es un proveedor importante de UNIX, que usa el nombre comercial de XENIX. Un avance importante que empezó a tomar su sitio a mediados de la década de 1980 es el desarrollo de redes de computadoras personales que corren sistemas operativos en red y sistemas operativos distribuidos. En un sistema operativo en red, los usuarios tienen conocimiento de la existencia de múltiples computadoras y pueden ingresar en maquinas remotas y reproducir archivos de una maquina a la otra. Cada maquina ejecuta su sistema operativo local y tiene un usuario propio (o usuarios). Un sistema distribuido, es aquel que se presenta ante sus usuarios como un sistema uniprocesador tradicional, aunque en realidad este compuesto de múltiples procesadores. En un sistema distribuido real, los usuarios no tienen conocimiento de donde se están ejecutando sus programas o de donde están ubicados sus archivos; todo esto se debe manejar en forma automática y eficiente por medio del sistema operativo. Los sistemas operativos en red no son fundamentalmente diferentes de los sistemas operativos uniprocesadores. Sin duda necesitan un controlador de interfaz en red y algún software de bajo nivel para impulsarlo, así como programas para lograr un ingreso remoto al sistema y un acceso remoto del archivo. Los sistemas operativos distribuidos reales requieren más que simplemente agregar un poco de código a un sistema operativo uniprocesador, ya que los sistemas operativos distribuidos y centralizados difieren de manera decisiva. 1.2 CONCEPTOS Y VISION GENERAL DE LOS SISTEMAS OPERATIVOS Un Sistema Operativo es un administrador de recursos y una interfaz con los programas, los usuarios y el Hardware. Sus funciones son: Compartir el hardware entre usuarios Facilitar la entrada salida Planificar recursos entre usuarios Definir la “interfaz de usuario” Permitir a los usuarios compartir los datos Recuperarse de los errores Los recursos claves que un Sistema Operativo administra son: Los procesadores y los dispositivos de E/S, el almacenamiento y los datos. 1.2.1 Visión amplia Disponer de un entorno para crear y mantener programas, Disponer de una interfaz sofisticada para las operaciones del programador, gestionar los recursos del sistema. 1.2.2 Visión restringida Básicamente el núcleo del sistema con las funciones y estructuras de datos necesarios para gestionar los recursos CPU, memoria, dispositivos de E/S, procesos. 1.2.3 Administración de tareas 1.2.3.1 Monotarea: Solamente puede ejecutar un proceso (aparte de los procesos del propio S.O.) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará haciéndolo hasta su finalización y/o interrupción. 1.2.3.2 Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente. 1.2.4 Administración de usuarios 1.2.4.1 Monousuario: Si sólo permite ejecutar los programas de un usuario al mismo tiempo. 1.2.4.2 Multiusuario: Si permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario. 1.2.5 Manejo de recursos 1.2.5.1 Centralizado: Si permite utilizar los recursos de una sola computadora. 1.2.5.2 Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos.) de más de una computadora al mismo tiempo. 1.2.6 Interfaces del usuario Es la parte del sistema operativo que permite comunicarse con él de tal manera que se puedan cargar programas, acceder archivos y realizar otras tareas. Existen tres tipos básicos de interfaces: las que se basan en comandos, las que utilizan menús y las interfaces gráficas de usuario. 1.2.7 Administración de recursos Sirven para administrar los recursos de hardware y de redes de un sistema informativo, como el CPU memoria, dispositivos de almacenamiento secundario y periféricos de entrada y de salida. 1.2.8 Administración de archivos Un sistema de información contiene programas de administración de archivos que controlan la creación, borrado y acceso de archivos de datos y de programas. También implica mantener el registro de la ubicación física de los archivos en los discos magnéticos y en otros dispositivos de almacenamiento secundarios. 1.2.9 Administración de tareas Los programas de administración de tareas de un sistema operativo administran la realización de las tareas informáticas de los usuarios finales. Los programas controlan que áreas tiene acceso al CPU y por cuánto tiempo. Las funciones de administración de tareas pueden distribuir una parte específica del tiempo del CPU para una tarea en particular, e interrumpir al CPU en cualquier momento para sustituirla con una tarea de mayor prioridad. 1.2.10 Servicio de soporte Los servicios de soporte de cada sistema operativo dependerán de la implementación particular de éste con la que estemos trabajando. Entre las más conocidas se pueden destacar las implementaciones de Unix, desarrolladas por diferentes empresas de software, los sistemas operativos de Apple Inc, como Mac OS X para las computadoras de Apple, los sistemas operativos de Microsoft, y las implementaciones de Software libre, como Linux o BSD producidas por empresas, universidades, administraciones públicas, organizaciones sin fines de lucro y/o comunidades de desarrollo. Estos servicios de soporte suelen consistir en: Actualización de versiones. Mejoras de seguridad. Inclusión de alguna nueva utilidad (un nuevo entorno gráfico, un asistente para administrar alguna determinada función). Controladores para manejar nuevos periféricos (este servicio debe coordinarse a veces con el fabricante del hardware). Corrección de errores de Software. Otros. No todas las utilidades de administración o servicios forman parte del sistema operativo, además de éste, hay otros tipos importantes de software de administración de sistemas, como los sistemas de administración de base de datos o los programas de administración de redes. El soporte de estos productos deberá proporcionarlo el fabricante correspondiente (que no tiene porque ser el mismo que el del sistema operativo). 1.2.11 Características de los Sistemas Operativos. En general, se puede decir que un Sistema Operativo tiene las siguientes características: Conveniencia. Un Sistema Operativo hace más conveniente el uso de una computadora. Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más eficiente posible. Habilidad para evolucionar. Un Sistema Operativo deberá construirse de manera que permita el desarrollo, prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a través del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos periféricos, cuando el usuario así lo requiera. Organizar datos para acceso rápido y seguro. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalación y uso de las redes de computadoras. Procesamiento por bytes de flujo a través del bus de datos. Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. Técnicas de recuperación de errores. Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informándoles si esa aplicación esta siendo ocupada por otro usuario. Generación de cálculos estadísticas. Permite que se puedan compartir el hardware y los datos entre los usuarios. El software de aplicación son programas que se utilizan para diseñar, tal como el procesador de palabras, lenguajes de programación, hojas de cálculo, etc. El software de base sirve para interactuar el usuario con la máquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite el diseño del mismo. El Software de base está compuesto por : Cargadores. Compiladores. Ensambladores. Macros. 1.2.12 Clasificación de los sistemas operativos. Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus características: 1.2.12.1 Sistemas Operativos por lotes. Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico. Algunas otras características con que cuentan los Sistemas Operativos por lotes son: Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interacción usuario/programa en ejecución. Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuario. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea. Conveniente para programas de largos tiempos de ejecución (ej. análisis estadísticos, nóminas de personal, etc.) Se encuentra en muchos computadores personales combinados con procesamiento serial. Planificación del procesador sencilla, típicamente procesados en orden de llegada. Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios. No requieren gestión crítica de dispositivos en el tiempo. Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control de concurrencia para el acceso. 1.2.12.2 Sistemas Operativos de tiempo real. Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. Se utilizan en entornos donde son procesados un gran número de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes: Control de trenes. Telecomunicaciones. Sistemas de fabricación integrada. Producción y distribución de energía eléctrica. Control de edificios. Sistemas multimedia. Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características: Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos. Se utilizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc. Objetivo es proporcionar rápidos tiempos de respuesta. Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso se activa tras ocurrencia de suceso, mediante interrupción. Proceso de mayor prioridad expropia recursos. Por tanto generalmente se utiliza planificación expropiativa basada en prioridades. Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. Población de procesos estática en gran medida. Poco movimiento de programas entre almacenamiento secundario y memoria. Gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso. 1.2.12.3 Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea). Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización. Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP. Sistemas Operativos como UNIX, WINDOWS 95, WINDOWS 98, WINDOWS NT, MAC-OS, OS/2, soportan la multitarea. Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes: Mejora productividad del sistema y utilización de recursos. Multiplexa recursos entre varios programas. Generalmente soportan múltiples usuarios (multiusuarios). Proporcionan facilidades para mantener el entorno de usuarios individuales. Requieren validación de usuario para seguridad y protección. Proporcionan contabilidad del uso de los recursos por parte de los usuarios. Multitarea sin soporte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real. Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores. En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos. 1.2.12.4 Sistemas Operativos de tiempo compartido. Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Características de los Sistemas Operativos de tiempo compartido: Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseño asistido por computador, procesamiento de texto etc. Dan la ilusión de que cada usuario tiene una máquina para sí. La Mayoría utilizan algoritmo de reparto circular. Los Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye después de concedido el servicio. Evitan monopolización del sistema asignando tiempos de procesador (time slot). La Gestión de memoria proporciona protección a programas residentes. La Gestión de archivo debe proporcionar protección y control de acceso debido a que pueden existir múltiples usuarios accesando un mismo archivo. 1.2.12.5 Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Características de los Sistemas Operativos distribuidos: Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software . Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios. El Objetivo clave es la transparencia. Generalmente proporcionan medios para la compartición global de recursos. Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.). Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o más computadoras unidas a través de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red más ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic. 2. ESTRUCTURA DE LOS SISTEMAS OPERATIVOS La estructura interna de los sistemas operativos puede ser muy diferente. Se deben tener en cuenta: Metas de los usuarios: ser amigable, intuitivo, confiable, seguro, rápido. Metas del sistema: fácil de diseñar, implementar y mantener, también flexible, confiable y eficiente. Estas son unas de las distintas ESTRUCTURAS que presentan los actuales sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener. 2.1 Estructura Monolítica. Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra. Las características fundamentales de este tipo de estructura son: Construcción del programa final a base de módulos compilados separadamente que se unen a través del ligador. Buena definición de parámetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento. Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, etc. Generalmente están hechos a medida, por lo que son eficientes y rápidos en su ejecución y gestión, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones. 2.1.2 Estructura Jerárquica. 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 subpartes y esto organizado en forma de niveles. 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. Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos. Se puede pensar también en estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa categoría. En la estructura anterior se basan prácticamente la mayoría de los sistemas operativos actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concéntricos o "rings". En el sistema de anillos, cada uno 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. 2.1.3 Máquina Virtual. Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una máquina que parece idéntica a la máquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramación y la máquina extendida. El objetivo de los sistemas operativos de máquina virtual es el de integrar distintos sistemas operativos dando la sensación de ser varias máquinas diferentes. El núcleo de estos sistemas operativos se denomina monitor virtual y tiene como misión llevar a cabo la multiprogramación, presentando a los niveles superiores tantas máquinas virtuales como se soliciten. Estas máquinas virtuales no son máquinas extendidas, sino una réplica de la máquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que será el que ofrezca la máquina extendida al usuario 2.1.4 Cliente-Servidor El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas. Este sistema sirve para toda clase de aplicaciones por tanto, es de propósito general y cumple con las mismas actividades que los sistemas operativos convencionales. El núcleo tiene como misión establecer la comunicación entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. 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." [Alcal92]. 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 que el usuario final o programador puede usar. 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 se está trabajando en una versión de UNIX que contempla en su diseño este paradigma. 2.2. Administración de recursos: Debido a la creciente demanda de recursos de almacenamiento, a medida que las organizaciones van desarrollando cada día una mayor dependencia de sus datos, los administradores de tecnologías de la información se enfrentan al reto de supervisar una infraestructura de almacenamiento cada vez más compleja y de mayor tamaño y, al mismo tiempo, realizar un seguimiento del tipo de información disponible en ella. Actualmente, la administración de recursos de almacenamiento no sólo abarca el tamaño y la disponibilidad de los datos, sino también la aplicación de directivas empresariales y una buena comprensión del uso del almacenamiento existente que permita contar con un planeamiento estratégico sólido y dar una respuesta adecuada a los cambios organizativos. El Administrador de recursos del servidor de archivos es un conjunto de herramientas que permite a los administradores entender, controlar y administrar la cantidad y el tipo de datos almacenados en los servidores. Los administradores pueden utilizarlo para asignar cuotas a carpetas y volúmenes, realizar un filtrado activo de los archivos y generar informes de almacenamiento exhaustivos. Este conjunto de instrumentos avanzados no sólo permite al administrador supervisar los recursos de almacenamiento existentes, sino que además le ayudan a planear e implementar futuros cambios de directivas. 3. GESTION DEL PROCESADOR 3.1 Planeación y despacho El sistema debe ser capaz de cargar un programa a memoria y ejecutarlo. El programa deberá poder finalizar su ejecución y finalizar de forma normal o anormal (indicando un error). Los llamados al sistema (system calls) son una interfaz, provista por el núcleo, para que los procesos de usuarios accedan a los diferentes servicios que brinda el sistema operativo. Al principio los system calls estaban programados en lenguaje ensamblador. En los sistemas modernos están programados en lenguajes de programación como C o C++. De esta forma, los programas de usuario tienen un acceso más directo a los servicios. Los servicios son invocados por los procesos en modo usuario, cuando ejecutan lo hacen en modo monitor, y al retornar vuelven al modo usuario. Típicamente a los system call se les asocia un número. La llamada de un system call incluye las siguientes tareas: Cargar los parámetros en el lugar adecuado (Stack). Cargar el número de system call en algún registro específico (Ej: eax en Intel). Invocar a la interrupción por software (trap) adecuada (system call handler). La interrupción cambia el bit de modo a monitor, controla que el número de system call pasado en el registro sea menor que el mayor del sistema y, finalmente, invoca al system call correspondiente. El valor retornado por el system call es puesto en un registro específico (Ej: eax en Intel). 3.2 Administración de Procesos Proceso: Un programa en la memoria más CPU, dispositivos y recursos constituyen un proceso. Un programa es una entidad pasiva, mientras que un proceso es una entidad activa. Cada proceso cuenta con un contador de programa (PC program counter) que determina la próxima instrucción de código a ejecutar. El proceso necesita de ciertos recursos (CPU, memoria, archivos, y dispositivos de E/S) para realizar su tarea. Un proceso es un programa en ejecución con un estado asociado. Las distintas aplicaciones que se pueden ejecutar en un sistema operativo multitarea son procesos independientes. Con independientes queremos decir que cada una de ellas ocupa un espacio de memoria independiente (para no interferir con la ejecución de otros procesos). En realidad, una aplicación puede implementarse como un conjunto de procesos independientes en el sentido anterior pero que colaboren entre sí para lograr sus objetivos, para lo que se pueden emplear distintos mecanismos de comunicación entre procesos (entre los que se encuentran los sockets TCP/IP, .NET Remoting y los Servicios Web, entre otros muchos). El sistema albergará muchos procesos compitiendo por los recursos y será el responsable de proveer de medios o servicios para que realicen su tarea: Crear y destruir procesos. Suspensión y reanudación de procesos. Proveer mecanismos para la cooperación (sincronización) y comunicación entre los procesos. Proveer mecanismos para prever la generación de deadlocks o lograr salir de ellos. A través de los registros se pasan lo parámetros al sistema. Se utilizan un conjunto de registros para pasar los parámetros. Tiene el problema de la cantidad 4. GESTION DE MEMORIA La memoria principal es un arreglo de palabras o bytes. También se pasan por acá los parámetros al sistema con un bloque de memoria apuntado a través de un registro. Es un repositorio de datos de rápido acceso compartido por los CPUs y los dispositivos. La memoria es un área de almacenamiento común a los procesadores y dispositivos del sistema dónde se almacenan programas, para su ejecución, y datos. El vincular programas a direcciones absolutas es fuertemente dependiente del hardware igual que la posibilidad de reubicación. El sistema deberá administrar el lugar libre y ocupado, decidir qué proceso podrá comenzar cuándo es cargado en memoria. Para lograr la multiprogramación es necesario mantener varios programas en memoria al mismo tiempo. Existen varios esquemas para la administración de la memoria y requieren distinto soporte del hardware. El sistema operativo es responsable de las siguientes tareas: Mantener que partes de la memoria están siendo utilizadas y por quién. Decidir cuales procesos serán cargados a memoria cuando exista espacio de memoria disponible. Asignar y quitar espacio de memoria según sea necesario. 4.1 Memoria real La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor. 4.2 Memoria virtual El término memoria virtual se asocia a dos conceptos que normalmente a parecen unidos: 1. El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener mas memoria RAM de la que realmente hay en el sistema. Esta ilusión de existe tanto a nivel del sistema, es decir, teniendo en ejecución mas aplicaciones de las que realmente caben en la memoria principal, sin que por ello cada aplicación individual pueda usar mas memoria de la que realmente hay o incluso de forma mas general, ofreciendo a cada aplicación mas memoria de la que existe físicamente en la maquina. 2. Ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo. Esta técnica facilita enormemente la generación de código, puesto que el compilador no tiene porque preocuparse sobre dónde residirá la aplicación cuando se ejecute. 4.3 Espacio De Direcciones Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos: Direcciones físicas: Son aquellas que referencian alguna posición en la memoria física. Direcciones lógicas: Son las direcciones utilizadas por los procesos. Sufren una serie de transformaciones, realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas. Direcciones lineales: Direcciones lineales se obtienen a partir de direcciones lógicas tras haber aplicado una transformación dependiente de la arquitectura. Los programas de usuario siempre tratan con direcciones virtuales ; nunca ven las direcciones físicas reales. 4.4 Administración de Almacenamiento Secundario La memoria principal es volátil y demasiado pequeña para guardar todos los datos y programas que son necesarios para el funcionamiento del sistema. La mayoría de los sistemas actuales utilizan discos como principal medio para guardar toda la información. El sistema operativo es responsable de las siguientes actividades en administración de almacenamiento secundario: Administrar el espacio libre. Asignación del lugar de la información. Algoritmos de planificación de disco. Subsistema de archivos. Proporciona una vista uniforme de todas las formas de almacenamiento en los diferentes dispositivos implementando el concepto de archivo como una colección arbitraria de bytes u otras clases o organizaciones mas sofisticadas aunque habitualmente obsoletas. Implementará los métodos de: Abrir, Cerrar, Extender. Leer, Escribir. 5. CONCURRENCIA Aunque en su principio la programación concurrente era feudo de los sistemas operativos (además de programarse a bajo nivel en ensamblador), la llegada del concepto de thread (hilo), de los lenguajes orientados a objetos que permiten la concurrencia e Internet han propiciado que este tipo de programación tenga más importancia en estos momentos. Algunas definiciones y conceptos fundamentales: Dos procesos serán concurrentes cuando la primera instrucción de uno de ellos se ejecuta después de la primera del otro y antes de la última. Si se ejecutan los dos procesos al mismo tiempo, se trata de programación paralela. Un programa en ejecución puede dar lugar a más de un proceso, cada uno de ellos ejecutando una parte del programa. Un proceso es una actividad asíncrona susceptible de ser asignada a un procesador. Para que los procesos puedan colaborar y competir por los recursos son necesarios mecanismos de comunicación y sincronización entre procesos. La concurrencia en sistemas monoprocesador hace que el Sistema operativo alterne el tiempo de procesador entre los distintos procesos, dando lugar a la multiprogramación. En los sistemas multiprocesador, se encuentran: o o o Sistemas multiprocesador fuertemente acoplados: Tanto procesadores como memoria y otros dispositivos están conectados a un bus. Ello hace que todos los procesadores compartan la misma memoria. En estos sistemas la sincronización y comunicación entre procesos se hace mediante variables compartidas. Sistemas multiprocesador débilmente acoplados: no existe memoria compartida por los procesadores. Cada procesador tiene su memoria local y se conecta a otros procesadores mediante algún tipo de comunicación. Un ejemplo de este tipo de sistemas son los distribuidos, formados por nodos distribuidos geográficamente y conectados de alguna forma. Multiproceso: Gestión de varios procesos dentro de un sistema multiprocesador donde cada procesador puede acceder a una memoria común. o Procesamiento distribuido: Gestión de varios procesos en procesadores separados, cada uno con su memoria local. La forma de comunicar y sincronizar en este caso es mediante paso de mensajes. Programación concurrente orientada paradigmas concurrente y objetos. a objetos: Programa concurrente: Conjunto de acciones que pueden ser ejecutadas simultáneamente. Programa paralelo: Programa concurrente diseñado para ejecutarse en un sistema multiprocesador. Programa distribuido: Programa paralelo diseñado para ejecutarse en un sistema distribuido. Unión de los 6. GESTION DE ARCHIVOS /Entrada/Salida Un Sistema de gestión de archivos es aquel conjunto de software del sistema que proporciona servicios a usuarios y aplicaciones para el uso de archivos. Normalmente la única forma en que un usuario o aplicación puede acceder a los archivos es mediante el sistema de gestión de archivos. Esto libera al usuario o programador, de la necesidad de desarrollar software de propósito especifico para cada aplicación. Cuando se habla de archivos, habitualmente se utilizan cuatro términos: 1. Campo: Es el elemento de datos básico. Un campo individual contiene un valor único, se caracteriza por su longitud y por el tipo de datos, dependiendo del diseño del archivo, los campos pueden ser de tamaño fijo o variable. En este último caso el campo consta de dos o tres subcampos: el valor real a almacenar, el nombre del campo y la longitud del campo. 2. Registro: Es un conjunto de campos relacionados que pueden tratarse como una unidad en algunos programas de aplicación. Los registros pueden ser de longitud fija o variable, es de longitud variable si algunos de sus campos son de longitud variable o si el número de campos puede variar, el registro entero incluye un campo de longitud. 3. Archivo: Es un conjunto de registros similares, los usuarios y las aplicaciones tratan al archivo como una entidad única y se refieren a él por un nombre, tienen nombres únicos y pueden crearse y borrarse, las restricciones al control de accesos suelen aplicarse a los archivos. 4. Base de datos: Es un conjunto de datos relacionados, el aspecto fundamental es que las relaciones que existen entre los elementos son explícitas, y que esta diseñada para ser usada por varias aplicaciones diferentes, consta de una o más clases de archivos, se dispone de un sistema de gestión de base de datos que es independiente del Sistema Operativo. Un programa en ejecución necesitará de operaciones de E/S para acceder a un archivo o dispositivo. Por eficiencia y protección los usuarios no accederán directamente al dispositivo. El sistema deberá proveer un mecanismo de acceso. El sistema operativo deberá encapsular y ocultar las características específicas de los diferentes dispositivos de almacenamiento y ofrecer servicios comunes para todos los medios de almacenamiento. Para ello proveerá de: Un conjunto de servicios que provean la interface con el subsistema e implementen técnicas de cache, buffering y spooling. Una interface cliente con el sistema operativo para los manejadores de dispositivos o device drivers que permitirá interactuar (mediante cargas dinámicas) con cualquier modelo de dispositivo. Device drivers específicos. Montaje y desmontaje (Mount/Dismount) de dispositivo. 6.1 Objetivos para un sistema de gestión de archivos: Cumplir con las necesidades de gestión de datos y con los requerimientos del usuario, que incluyen el almacenamiento de datos y la capacidad de realizar las operaciones. Para un sistema interactivo, de propósito general, deben cumplirse los siguientes requisitos mínimos: 1. Cada usuario debe ser capaz de crear, borrar y cambiar los archivos. 2. Cada usuario puede tener acceso controlado a los archivos de otros usuarios. 3. Cada usuario puede controlar qué tipos de acceso estarán permitidos a sus archivos. 4. Cada usuario debe poder reestructurar sus archivos de manera adecuada al problema. 5. Cada usuario debe ser capaz de mover datos entre los archivos. 6. Cada usuario debe ser capaz de guardar una copia de reserva y recuperar sus archivos en el caso de que hayan sufrido algún daño. 7. Cada usuario debe ser capaz de acceder a sus archivos mediante un nombre simbólico. Garantizar que los datos de los archivos sean válidos. Optimizar el rendimiento, en términos de productividad global y en tiempo de respuesta. Ofrecer soporte de E/S para la variedad de tipos de dispositivos de almacenamiento. Minimizar o eliminar la pérdida o destrucción de datos. Ofrecer un conjunto estándar de rutinas de interfaz de E/S. Proporcionar soporte de E/S para múltiples usuarios en el caso de sistemas multiusuario. 6.2 Funciones de la gestión de archivos: Los usuarios y los programas de aplicación interactúan con el sistema de archivos por medio de órdenes de creación y eliminación de archivos, realizando operaciones sobre los archivos, debe identificar y ubicar el archivo en cuestión, requiere el uso de algún tipo de directorio que describa la ubicación de todos los archivos y sus atributos, los sistemas compartidos aplican algún control de acceso de los usuarios. Las operaciones básicas que tienen lugar en los registros, como una estructura secuencial para traducir las órdenes del usuario a órdenes específicas de manipulación de archivos, debe emplearse el método de acceso apropiado para esta estructura de archivo. La E/S se lleva acabo por bloques, los registros de un archivo deben traducirse a bloques para la salida y los bloques traducirse a registros después de la entrada, para respaldar la E/S de bloques se necesitan varias funciones, debe gestionarse el almacenamiento secundario esto implica la asignación de archivos a los bloques disponibles del almacenamiento secundario, y la gestión del espacio libre de manera que se conozca qué bloques están disponibles para la creación de archivos nuevos y el crecimiento de los existentes, deben planificarse las solicitudes de bloques individuales. 6.3 Arquitectura de los sistemas de archivos La representación de una organización típica del software, en el nivel más bajo, los gestores de dispositivos (device drivers) se comunican directamente con los dispositivos periféricos o sus controladores o canales, cada controlador de dispositivo es responsable de comenzar las operaciones de E/S en un dispositivo y procesar la terminación de una petición de E/S, son considerados como parte del sistema operativo. El siguiente nivel es el sistema de archivos básico o nivel de E/S física, que constituye la interfaz primaria con el entorno exterior del sistema informático, trata con bloques de datos que se intercambian con sistemas de disco o cinta, no comprenderá el contenido de los datos o la estructura de los archivos implicados, se considera a menudo parte del sistema operativo. El supervisor básico de E/S es el responsable de la iniciación y terminación de toda la E/S con archivos, se ocupa de la selección del dispositivo donde va a realizarse la E/S con los archivos que depende del archivo seleccionado, también se ocupa de la planificación de los accesos a disco y cinta para optimizar el rendimiento, se asignan los buffers de E/S y se reserva la memoria secundaria. La E/S lógica es la parte del sistema de archivos que permite a usuarios y aplicaciones acceder a los registros. El nivel de sistema de archivos más cercano al usuario es el método de acceso, cada método proporciona una interfaz estándar entre las aplicaciones y los sistemas de archivos y dispositivos que guardan datos. Los diferentes métodos de acceso reflejan las distintas estructuras de archivos y las formas diferentes de acceder y procesar los datos. Programa de usuario Pila Secuencial Secuencial indexado Indexado Dispersión E/S Lógica Supervisor básico de E/S Sistemas de archivos básico Gestor del dispositivo Disco Gestor del dispositivo Cinta 6.4 Criterios en la elección de una organización de archivos: Acceso rápido. Facilidad de actualización. Economía de almacenamiento. Mantenimiento sencillo. Fiabilidad. La prioridad relativa de estos criterios dependerá de las aplicaciones que usarán el archivo. 6.5 Las cinco organizaciones fundamentales son: 1. Pilas 2. Archivos secuénciales 3. Archivos secuénciales indexados 4. Archivos indexados 5. Archivos directos o de dispersión 7. PRINCIPIOS DE DISEÑO Abstracción: Es un nivel en el que el software no debe necesitar conocer los detalles sobre la implementación en otros niveles. Por ejemplo, un usuario de correo-electrónico no debe requerir de conocimientos de los protocolos de red. Robustez y gestión de errores: Los sistemas operativos futuros deben ser considerablemente sólidos, para que ninguna acción ejecutada por el usuario haga que el sistema se comporte de manera ilógica, al igual que ningún programa pueda interrumpir el funcionamiento de otros programas, o de la computadora en su totalidad. Es decir sin importar las acciones y las decisiones del usuario, la computadora nunca debe colapsarse. 8. SISTEMAS OPERATIVOS MULTIPROCESADORES Sistemas fuertemente acoplados, los procesadores comparten la memoria y el reloj; la comunicación por lo general se realiza atreves de la memoria compartida, algunas ventajas son incremento del rendimiento económico, incremento en confiabilidad (degradación gradual, sistemas de fallos controlados por sw). Las capacidades funcionales de los Sistemas Operativos de multiprogramación y de multiprocesadores incluyen lo siguiente: • Asignación y administración de recursos. • Protección de tablas y conjuntos de datos. • Prevención contra el ínter bloqueo del sistema. • Terminación anormal. • Equilibrio de cargas de Entrada / Salida. • Equilibrio de carga del procesador. • Reconfiguración. Las tres últimas son especialmente importantes en Sistemas Operativos de multiprocesadores, donde es fundamental explotar el paralelismo en el hardware y en los programas y hacerlo automáticamente. El multiprocesamiento simétrico consiste en que cada corre una copia idéntica del sistema operativo, muchos procesos pueden correr a la vez sin deterioro del rendimiento, la mayoría de los sistemas modernos soportan smp, multiprocesamiento asimétrico: a cada procesador se le asigna una tarea específica; el procesador maestro califica y asigna el trabajo a los procesadores esclavos el mas común en sistemas más grandes. Un sistema de multiprocesadores debe tener capacidad para gestionar la repartición de memoria entre varios procesadores, pero también debe distribuir la carga de trabajo. Los procesadores no cooperan en la ejecución de un proceso individual, que habrá sido asignado a uno de ellos. Tratamiento Simétrico Es la organización más complicada de implementar y también la más poderosa y confiable. El Sistema Operativo administra un grupo de procesadores idénticos, donde cualquiera puede utilizar cualquier dispositivo de Entrada / Salida y cualquiera puede referenciar a cualquier unidad de almacenamiento. El Sistema Operativo precisa código reentrarte y exclusión mutua. Es posible equilibrar la carga de trabajo más precisamente que en las otras organizaciones. Adquieren significativa importancia el hardware y el software para resolución de conflictos. Todos los procesadores pueden cooperar en la ejecución de un proceso determinado; El procesador ejecutivo es el responsable (uno sólo) en un momento dado de las tablas y funciones del sistema; así se evitan los conflictos sobre la información global. 9. SISTEMAS OPERATIVOS DISTRIBUIDOS Este sistema está encargado de distribuir los cálculos entre procesadores, su objetivo principal es compartir recursos y datos entre usuarios ofreciendo transparencia, eficiencia, flexibilidad y fiabilidad. El concepto de transparencia de un sistema distribuido va ligado a la idea de que todo el sistema funcione de forma similar en todos los puntos de la red, independientemente de la posición del usuario. La idea base de los sistemas distribuidos es la de obtener sistemas mucho mas rápidos que los ordenadores actuales, para lograr un sistema eficiente hay que descartar la idea de ejecutar un programa en un único procesador de todo el sistema. La flexibilidad hace referencia a un desarrollo como el diseño de un sistema operativo, distribuido debe estar abierto a cambios y actualizaciones que mejoren el funcionamiento del sistema. Esta necesidad ha provocado una diferenciación entre las dos diferentes arquitecturas de núcleo del sistema operativo; el núcleo monolítico y el micronucleo. Las diferencias entre ambos son los servicios que ofrece el núcleo del sistema operativo. Mientras el núcleo monolítico ofrece todas las funciones básicas del sistema integradas en el núcleo; el micronucleo incorpora solamente las fundamentales, que incluyen únicamente el control de los procesos y la comunicación entre ellos y la memoria. El resto de servicios se cargan dinámicamente a partir de servidores en el nivel de usuario. Escalabilidad La escalabilidad propone que cualquier ordenador individual ha de ser capaz de trabajar independientemente como un sistema distribuido, pero también debe poder hacerlo conectado a muchas otras máquinas. Fiabilidad Una de las ventajas claras que nos ofrece la idea de sistema distribuido es que el funcionamiento de todo el sistema no debe estar ligado a ciertas máquinas de la red, sino que cualquier equipo pueda suplir a otro en caso de que uno se estropee o falle. La forma más evidente de lograr la fiabilidad de todo el sistema está en la redundancia. La información no debe estar almacenada en un solo servidor de archivos, sino en por lo menos dos máquinas. Mediante la redundancia de los principales archivos o de todos evitamos el caso de que el fallo de un servidor bloquee todo el sistema, al tener una copia idéntica de los archivos en otro equipo. 10. SISTEMAS OPERATIVOS DE TIEMPO REAL/ EMBEBIDOS Los sistemas embebidos y los de tiempo real son tecnologías inmersas en el diario vivir y generalmente no se identifican fácil y tampoco se definen los sistemas operativos que hacen posible su manipulación y que a la vez administran los recursos de dichos dispositivos para maximizar el desempeño. Un sistema operativo embebido es aquel que esta integrado en los circuitos de los dispositivos electrónicos, entre estos dispositivos se encuentran electrodomésticos, teléfonos móviles, radios, televisores, automóviles, lectores de códigos de barras, equipos médicos, asistentes digitales personales (PDA), etc. Estos sistemas suelen tener algunas características de los sistemas de tiempo real pero también tienen limitaciones de tamaño, memoria y consumo de electricidad que los hace especiales y no suelen ser visibles. Características Suelen utilizar un par de KB de RAM y ROM. Trabaja con procesadores poco potentes. Son sistemas operativos tolerantes a fallos. SISTEMAS OPERATIVOS DE TIEMPO REAL (SOTR o RTOS -Real Time Operating System en inglés) Sistema operativo que ha sido desarrollado para aplicaciones de tiempo real con el fin de garantizar el cumplimiento de forma adecuada de las tareas teniendo en cuenta las restricciones de tiempo lo que hace necesario que el sistema sea determinista. Es los SOTR no importa el usuario sino los procesos, generalmente se subutilizan los recurso con el fin de estar disponibles y atentos a los procesos en el momento que este los requiera, es utilizado en entornos donde se procesan gran cantidad de eventos. Son empleados para aplicaciones muy específicas como pueden ser: Control del tráfico aéreo. Bolsas de valores. Control de refinerías. Control de trenes. Telecomunicaciones. Sistemas de fabricación integrada. Características de los sistemas de tiempo real Objetivo es proporcionar rápidos tiempos de respuesta y cambios de contexto. Minimizar el tiempo en el que esta deshabilitadas las interrupciones. Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso de mayor prioridad expropia recursos. Generalmente se utiliza planificación expropiativa basada en prioridades. Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. Poco movimiento de programas entre almacenamiento secundario y memoria. La gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso. Debe ser multihebrado y apropiativo. Poseer un tamaño pequeño. Debe existir mecanismos de sincronización predecibles y de herencia de prioridad. Gestión de memoria que no afecte a la Predicibilidad. Muchas aplicaciones de tiempo real son embebidas, pero no todas las aplicaciones embebidas se desempeñan en tiempo real. Mientras que aplicaciones en tiempo real siempre se adhieren a características estrictas en el tiempo, los sistemas embebidos no son tan simples de categorizar. Algunos sistemas operativos embebidos y de tiempo real son: 10.1 Windows XP Embedded Es una versión de Windows XP recortada (componetizada) para dispositivos móviles. Está pensado para arquitecturas tipo X86 y soporta practicamente el mismo software y hardware que XP. Sistema operativo y plataforma de desarrollo que permite a los desarrolladores elegir entre más de 10000 componentes individualmente para conseguir la máxima funcionalidad en una huella reducida. Permite reducir el tiempo al mercado aprovechando un modelo de programación familiares y un poderoso conjunto de herramientas. Ejemplos de dispositivos construidos con Windows XP Embedded: Cajeros automáticos. Impresoras y escáneres Avanzada Set-Top Boxes Industria robótica Servidores de los medios de comunicación en red Dispositivos médicos 10.2 RTLinux Es un sistema operativo en tiempo real que ejecuta Linux como un thread (hilo de ejecución) de menos prioridad que las tareas de tiempo real. Con este diseño, las tareas de tiempo real y los manejadores de interrupciones nunca se ven retrasados por operaciones que no son de tiempo real. La primera versión de RTLinux estaba diseñada para ejecutarse en la plataforma x86 y proporcionaba una pequeña API y un pequeño entorno de programación. La versión 2, que fue totalmente reescrita, fue diseñada para el soporte de multiprocesamiento simétrico (SMP) y para ser ejecutada en una amplia variedad de arquitecturas. RTLinux proporciona la capacidad de ejecutar tareas de tiempo real y manejadores de interrupciones en la misma máquina que el Linux estándar. Estas tareas y los manejadores ejecutan cuando se necesitan en detrimento de lo que estuviera ejecutando Linux. El peor caso de tiempo es entre que se detecta la interrupción hardware y el procesador ejecuta la primera instrucción del manejador de la interrupción. Este tiempo es del orden de los 10 microsegundos en la plataforma x86. Características de los sistemas RTLinux Sistema operativo de tiempo real estricto. Extensiones para entorno multiprocesador SMP (x86). API "próximo" al de POSIX threads. Planificador expulsivo por prioridades fijas, señales, sistema de archivos POSIX (open, close, etc.) semáforos y variables condición. Depuración de código mediante GDB (GNU Debugger). Soporte para arquitecturas x86 y PPC. Acceso directo al hardware (puertos e interrupciones). Comunicación con procesos linux mediante memoria compartida y "tubos". Estructura modular para crear sistemas pequeños. Eficiente gestión de tiempos. En el peor caso se dispone de una resolución próxima al microsegundo (para un i486). Facilidades para incorporar nuevos componentes: relojes, dispositivos de E/S y planificadores. 10.3 ChorusOS ChorusOS es un sistema operativo para aplicaciones empotradas o en tiempo real, desarrollado por la empresa Sun Microsystems. Actualmente está liberado bajo código abierto. Es sistema operativo altamente escalable y estable, sirve para sistemas distribuidos, en red, empotrados o en tiempo real y se ha establecido como un sistema operativo muy utilizado en hardware para comunicaciones, desde móviles hasta switches. Pero también se encuentra en otras aplicaciones empotradas, tales como impresoras, autómatas, etc. Es de arquitectura basada en componentes (módulos), lo que le dota de una alta configurabilidad y escalabilidad. Este sistema operativo pertenece a la quinta generación de los sistemas operativos. 10.4 VxWorks VxWorks es un sistema operativo de tiempo real, basado en Unix, vendido y fabricado por Wind River Systems. Las características distintivas de VxWorks son: La compatibilidad con POSIX. El tratamiento de memoria. Las características de multi-procesador. VxWorks se usa generalmente en sistemas empotrados. 10.5 QNX QNX (pronunciado Q.N.X. o Q-nix) es un sistema operativo de tiempo real basado en Unix que cumple con la norma POSIX. Es desarrollado principalmente para su uso en dispositivos empotrados. Desarrollado por QNX Software Systems empresa canadiense. QNX está basado en una estructura de micronúcleo, que proporciona características de estabilidad avanzadas frente a fallos de dispositivos, aplicaciones, etc. Está disponible para las siguientes arquitecturas: x86, MIPS, PowerPC, SH4 (incluida la videoconsola Dreamcast con una versión muy limitada de este), ARM, StrongARM y xScale. 10.6 S. O. µlTRON µMore es un sistema operativo en tiempo real para dispositivos móviles de próxima generación que cumple las especificaciones de perfiles estándar ulTRON 4.0. Entre sus prestaciones se incluye la función Easy Power Save (ahorro de energía sencillo) y el módulo de red AVE-TCP (que cumple las especificaciones IPv6). µMore puede implementarse independientemente o en combinación con los navegadores ACCESS para la electrónica de consumo, NetFront o Compact NetFront. Funciones y prestaciones Código abierto libre de cánones Compatible con ITRON4.0. Tamaño de código compacto. Requisitos de ROM: 7-9 KB para configuración mínima. Alto rendimiento. Los gastos indirectos del S. O. se reducen llevando a cabo llamadas de sistema a través de llamadas de subrutina. Cambio de tarea: 6,8 segundos, aproximadamente. Cambio de contexto: 2 segundos, aproximadamente. (Condiciones de la prueba: SH7709A ejecutándose a 133MHz, con uso de caché) Las partes clave están escritas en lenguaje C. Puede portarse a distintas plataformas de CPU. Función Easy Power Save (ahorro de energía sencillo). Cambia automáticamente a modo de suspensión cuando el sistema está inactivo. Funciones de red disponibles (opcional). AVE-TCP: pila de protocolos TCP/IP para aplicaciones embebidas fiable y con buenos resultados. MMSO: observador de sistema Micro More Herramienta de análisis del funcionamiento de tareas/S. O. Emulador de PC. Desarrollo y depuración basado en PC de aplicaciones escritas en VC++. CPU compatibles: SH-3, SH-4, ARM7TDMI. Configurador de sistema gráfico compatible con ITRON4.0. Ofrece soluciones completas en combinación con la máquina virtual de Java JV-Lite2, conexión de redes AVE-TCP, sistema de ficheros AVE-File, servidor web AVE-HTTPD, protocolo de infrarrojos IrFront y el navegador NetFront /Compact NetFront. 10.7 Windows Embedded CE Es una versión distinta de Windows pensada para dispositivos móviles solamente y construida desde cero para este fin. Es más pequeña que XP Embeded llegando a tener como mínimo 300KB (vs 40MB de XPe) y con 700 componentes que se pueden escoger (como un lego tambien). El release 5 fue el que hasta ahora se ha incluido en diversos dispositivos como thin clients, equipo médico, cámaras digitales, teléfonos VOIP y otros, con la versión 6 se anuncia el inicio de una nueva generación (incluyendo un nuevo kernel que seria el 3o) de versiones especializadas de CE. Está pensado para diversas arquitecturas además de la x86 como ARM, MIPS. 10.8 freertos Sistema operativo de tiempo real para los sistemas empotrados pequeños. Los programas preconfigurados de la demostración son incluidos para varias arquitecturas del microcontrolador - ARM7, CORTEZA M3, 8051, AVR (MegaAVR), x86, PIC (PicMicro PIC18), HCS12, H8S, RDC del BRAZO.。 10.9 NetBSD Es un sistema operativo de la familia Unix (en sí no se le puede llamar "un Unix", ya que esta es una marca comercial de AT&T, pero se denomina como "sistema de tipo UNIX" o "derivado de UNIX"), open source y libre, y, a noviembre de 2006, disponible para más de 50 plataformas hardware. Su diseño y sus características avanzadas lo hacen ideal para multitud de aplicaciones. NetBSD ha surgido como resultado del esfuerzo de un gran número de personas que tienen como meta producir un sistema operativo tipo Unix accesible y libremente distribuible. Es utilizado en varios dispositivos empotrados y no ha requerido de software de desarrollo adicional más que el juego de herramientas. Características de los sistemas NetBSD: Actualmente NetBSD se centra en ofrecer un sistema operativo estable, multiplataforma, seguro y orientado a la investigación. Está diseñado teniendo como prioridad escribir código de calidad y bien organizado, y teniendo muy en cuenta también el cumplimiento de estándares (POSIX, X/Open y otros más relevantes): prueba de este buen diseño es su amplia portabilidad, actualmente a 56 plataformas. Se trata de un sistema operativo maduro, producto de años de desarrollo (los orígenes de BSD están sobre el año 1977), y partiendo del sistema UNIX sexta edición. 10.10 OpenBSD Sistema operativo libre tipo Unix, multiplataforma, basado en 4.4BSD. Es un descendiente de NetBSD, con un foco especial en la seguridad y la criptografía. Este sistema operativo, se concentra en la portabilidad, cumplimiento de normas y regulaciones, corrección, seguridad proactiva y criptografía integrada. Se distribuye bajo la licencia BSD, aprobada por la OSI. Características Sistema operativo tipo UNIX. Se distingue de Linux por sus fuentes y su licencia. Libre, Funcional, Seguro. Base de desarrollo en Calgary. Nueva versión cada 6 meses. Acceso CVS al código fuente. Actualmente esta en la versión 3.6. 10.11 Linux empotrado (Embedded Linux) Se refiere al uso del sistema operativo Linux en un sistema embebido, como por ejemplo PDA's, teléfonos móviles, robots, enrutadores / servidores, dispositivos electrónicos y aplicaciones industriales con microcontroladores y microprocesadores. El núcleo de Linux, combinado con un conjunto de algunas otras utilidades de Software Libre, puede ajustarse dentro del limitado espacio de hardware de los sistemas embedidos. Una instalación típica de un Linux empotrado ocupa en promedio 2 MB. Linux Empotrado tiene algunas ventajas en relación a otros sistemas operativos empotrados, como pueden ser el Código abierto, pequeño (Windows CE ocupa 21 MB comparado con los 2 MB para Linux Empotrado), puede no tener costos por derechos, maduro y estable (Más de 10 años de edad y utilizado en muchos dispositivos) y con respaldado. 11 PRESENTACION TECNICA DE DISTINTOS SISTEMAS OPERATIVOS DISPONIBLES EN EL MERCADO Como bien se sabe, el hardware provee los recursos básicos de un sistema de computación. Mediante los programas de aplicación se definen las formas en que se usan esos recursos para resolver problemas para los usuarios. Hay diversos programas de aplicación. Un sistema operativo controla y coordina el uso del hardware entre los distintos programas de aplicación para los diversos usuarios. El Sistema Operativo provee los medios para utilizar de forma correcta los recursos de un sistema de computación; no hace ninguna función útil por sí mismo. Simplemente provee un entorno en el cual otros programas pueden hacer trabajo útil. Se ve al Sistema Operativo como un “Asignador de recursos”. Un sistema tiene diversos recursos que pueden requerirse para resolver un problema: tiempo de CPU, espacio de memoria, espacio de almacenamiento de archivos, procesos, dispositivos de E/S, etc. El Sistema Operativo actúa como el gerente de esos recursos y se los otorga a programas específicos y usuarios a medida que son necesarios. Como puede haber diversos pedidos conflictivos para recursos, el Sistema Operativo tiene qué decidir que pedidos son atendidos y cuáles no. Su fuente principal de trabajo es un conjunto de tablas en las cuales se describen los recursos y a que procesos están asignados los mismos. Otra orientación de los Sistemas Operativos apunta a la necesidad de controlar los distintos dispositivos de E/S y programas del usuario. Un Sistema Operativo es un programa de control. Un programa de control inspecciona la ejecución de programas de usuario para prevenir errores y uso impropio de la computadora. Está relacionado especialmente con la operación y control de dispositivos de E/S. Viendo esta evolución, se identifican elementos en común, y cómo fueron mejorando. Los Sistemas Operativos y la arquitectura de los computadores tienen una gran influencia el uno sobre el otro. Para facilitar el uso del hardware se construyeron los Sistemas Operativos. A medida que se diseñaron y usaron Sistemas Operativos, se volvieron obvios ciertos cambios en el diseño del hardware que simplificaron los sistemas operativos. En esta recopilación fidedigna se ve que el desarrollo de nuevo hardware es la solución natural para muchos de los problemas de sistemas operativos. Recursos administrados por el Sistema Operativo 11.1 SISTEMAS OPERATIVOS UNIX Y SIMILARES 11.1.1 SISTEMA OPERATIVO UNIX Escrito en lenguaje de alto nivel (C) fácil de leer, comprender, cambiar y trasladar a otras máquinas. Tiene una interfaz de usuario simple. Proporciona primitivas para construir programas complejos partiendo de otros más simples. Utiliza un sistema de archivos jerárquico mantenimiento fácil e implementación eficiente. Formato consistente para los archivos (cadena de bytes) fácil la escritura de programas de aplicación. Proporciona una interfaz simple y consistente para los dispositivos periféricos. Sistema multiusuario y multiprogramado (varios procesos simultáneos por usuario). Oculta la arquitectura de la máquina al usuario más fácil escribir programas portables (Multiplataforma). Soporte hardware necesario: Dos o más niveles de ejecución: usuario y supervisor. El núcleo siempre se ejecuta por la llamada de procesos (es parte de cada proceso). Permite que dispositivos de E/S y el reloj del sistema interrumpa asíncronamente la CPU. Cuando el núcleo sirve una interrupción, bloquea a las de igual o menor prioridad (no a las de mayor). Diferencia entre interrupciones y excepciones: la excepción (síncrona) ocurre durante la ejecución de una instrucción el hardware reinicia la instrucción y la interrupción (asíncrona) ocurre entre dos instrucciones el hardware continúa con la segunda. El núcleo reside permanentemente en memoria principal. El compilador genera un espacio de direcciones virtuales para los programas (reubicación dinámica). El núcleo coordina con el hardware la traducción de direcciones virtuales a físicas (p.e. hay máquinas con hardware para paginación por demanda) Las principales entidades de Unix son los archivos y los procesos. Principales componentes: Subsistema de archivos y de procesos. Llamadas al sistema como llamadas a funciones C. En lenguaje ensamblador, las llamadas al sistema se pueden invocar directamente. Los programas utilizarán otras bibliotecas (E/S estándar) para un uso más sofisticado de las llamadas al sistema. Interfaces en Unix 11.1.2 SISTEMA OPERATIVO SOLARIS Solaris es una interfaz fácil de utilizar que proporciona una apariencia homogénea entre los entornos UNIX. SunSoft, Inc., Hewlett-Packard Company, IBM Corporation y Novell, Inc. aportaron sus tecnologías “mejor desarrolladas” para establecer un nuevo estándar para las interfaces de usuario y las aplicaciones basado en el Sistema de ventanas X y en Motif. La contribución de SunSoft a la implementación del CDE incluye su protocolo de mensajes ToolTalk, la herramienta de desarrollo DevGuide, herramientas de correo y agenda de sus utilidades DeskSet de Open Windows y las capacidades de arrastrar y soltar y de clasificación de datos. El Solaris ofrece beneficios adicionales a sus usuarios y programadores y a su vez mantiene la conformidad con los estándares. Por ejemplo, puede utilizar un visualizador de imágenes para visualizar, girar, ampliar y convertir imágenes y archivos PostScript. Si está acostumbrado al entorno Windows, tiene acceso a los fondos, las paletas de color y el menú emergente del Espacio de trabajo que ya conoce. Puede también ejecutar las aplicaciones Open Windows sin necesidad de modificaciones, con la interacción de arrastrar y soltar entre las aplicaciones Open Windows. Los programadores pueden utilizar las utilidades de conversión de archivos para simplificar la transición de sus aplicaciones Open Windows y Motif. La historia comienza en Silicon Valley en febrero de 1982 fecha en la que nace la empresa Sun Microsystems fundada por el alemán Andy Bechtolsheim y los norteamericanos Vinod Khosla, Bill Joy, y Scott McNealy. En el mismo año de su fundación Sun comercializa su primera estación y fue bautizada como Sun-1, dicha máquina estaba gobernada por un microprocesador Motorola a 6 MHz, tenía un 1 Mbyte de RAM y un disco duro de 60 Mbyte. El sistema operativo al mando era el SunOS 1 basado en BSD 4.1 (1981) incorporando TCP/IP. En el año 1984 Sun desarrolla el Sistema de archivos de red NFS (Network File System) que permite a cualquier máquina conectada a la red acceder a discos remotos como si estuvieran en la máquina local. La tecnología NFS fue licenciada gratuitamente para la industria estableciendo un nuevo estándar que incorporan en su nueva versión de sistema SunOs 2 en el año 1985. Un año más tarde con la salida de la versión de SunOS 3 (1986) se introducen utilidades de System V y coincide en el tiempo con el lanzamiento de la estación Sun-3 que todavía continúa basándose en un micro Motorola a 25 MHz y 32 Mbyte de RAM. Ya en 1987 se produce un cambio importante en con el lanzamiento la serie Sun-4 que adopta por primera vez la arquitectura SPARC V7 RISC. SunOS 4 (1989) es la primera versión del sistema operativo que soporta la nueva arquitectura Sparc de la serie Sun-4 que continua basada en BSD 4.3 pero con cambios hacia la arquitectura System V. Con la versión SunOs 4.1.1 finaliza una primera etapa del sistema operativo a la que Sun Microsystem denomina Solaris 1 y utilizara este nombre para referirse al sistema SunOs desde 1982 a 1990. Evolución Solaris 1 SunOs de 1982 a 1990: 1982 Febrero SunOS 1.0 basada en BSD. 1984 Abril SunOS 1.1 basada en BSD. 1985 Enero SunOS 1.2 basada en BSD. 1985 Mayo SunOS 2.0 basada en BSD. 1986 Febrero SunOS 3.0 Introduce utilidades de System V. 1986 Septiembre SunOS 3.2 Introduce utilidades de System V. 1988 SunOS 3.5 Introduce utilidades de System V. 1989 SunOS 4.0 Soporte microprocesador Sparc/arquitectura System V STREAMS I/O. 1990 Noviembre Solaris 1.0 (SunOS 4.1.1). En Julio de 1991 se produce el lanzamiento de SunOS 5.0 que incorpora importantes cambios: Pasa a denominarse Solaris 2, Se basa en System V Release 4, Se introduce CDE (Common Desktop Environment) como escritorio estándar aunque conserva Open Windows y Soporte de Multiprocesamiento Simétrico (SMP) que posibilita el uso de múltiples CPUs. Desde 1991 se produce un rápido avance de versiones de Solaris hasta la actual Solaris 10, la siguiente lista es un breve resumen de la evolución de Solaris y las tecnologías que a incorporado al sistema: Solaris 1.0 (SunOS 4.1.1) 1990. Solaris 2.3 (SunOS 5.3) 1993 NFS V3 Y CDE. Solaris 2.4 (SunOS 5.4) 1994 x86 platform. Solaris 2.6(SunOS 5.6) 1998 Kerberos, PAM, TrueType. Solaris 7(SunOS 5.7) 1998. 64 bits para plataforma. UltraSPARC. Solaris 8 beta 1999 IPv6 support. Solaris 9 SPARC 2002 Solaris Volume Manager. Solaris 10 2004 Java Desktop. Solaris 10 2006 Java Desktop. Solaris Containers. Service Management Facility (SMF) NFSv4 /ZFS. Durante este tiempo Sun ha desarrollado nuevas tecnologías para mantener su sistema operativo entre los más potentes y fiables del mercado. Sun Microsystems también ha integrado en Solaris tecnologías de Software Libre y como ejemplo de esta sinergia tenemos el escritorio Gnome. OpenSolaris nace en Junio de 2005 y es el resultado de la liberación de la mayor parte del código fuente de Solaris pasando a ser un proyecto de software libre. Desde este nuevo enfoque nacen nuevas distribuciones que aportan mejoras al sistema además de enriquecerlas con más software. OpenSolaris.org es el punto de encuentro donde se pueden ver los proyectos abiertos ya sean para crear nuevas distribuciones o grupos de trabajo que aportan nuevas funcionalidades, mejoras, software etc. De las diferentes aportaciones realizadas por comunidades de usuarios o desarrolladores nacen las siguientes distribuciones: Solaris 10 y Solaris 10 Express. Es la versión oficial de Sun Microsystems disponible para arquitectura Sparc y x86. Es estable y robusta estando diseñada para entornos de producción donde se necesita estabilidad. Es gratuita y podemos descargarla del sitio web oficial de Sun. Solaris 10 Express contiene todas las nuevas incorporaciones de funcionalidades y software que darán lugar a la próxima versión estable de Solaris por lo tanto está recomendado para entornos de desarrollo o preproducción. 11.1.3. SISTEMA OPERATIVO LINUX Entre los sistemas operativos que había hace una década estaba Minix, un sistema operativo tipo Unix, de fuentes públicas, que se había escrito a modo didáctico para los estudiantes de ingeniería informática. Funcionaba en un 8086, por lo que era un poco limitado. Linus Tolvards un estudiante finlandés de informática que investigando y profundizando en los entresijos de los microprocesadores 386 decidió hacer, partiendo de cero, un sistema operativo, basado en Minix, pero que aprovechase toda la potencia del 386, memoria virtual, multitarea y otras cosas. Así que empezó a crearlo, las primeras versiones eran poco atractivas, apenas ejecutaban el GCC ( un compilador de C creado según el estilo GNU) el bash ( el equivalente al command.com). Pero Linus, lo público en internet, con sus fuentes, y un montón de gente se intereso en él, modificándolo, mejorándolo y añadiéndole cosas, a la vez que Linus lo mejoraba y coordinaba todo el trabajo que hacían el resto de la gente. Y así sigue siendo hoy, cientos de versiones después hasta convertirse en lo que tenemos delante. La gente de GNU creó un montón de programas para su sistema operativo que gracias a que son software libre son también usados Linux y por eso a Linux se le llama muchas veces GNU/Linux. Linux se distribuye bajo la licencia GPL, es un tipo de licencia, dentro de lo que podríamos llamar el Open Source Software, básicamente dice que se coge el programa, lo usa, aprende, lo mejora y comparte esas mejoras con el resto del mundo. Además la licencia GNU fija una serie de derechos a programador que le protegen, pero en resumidas cuentas: Un Programa con Licencia GPL puede ser vendido, alquilado, prestado modificado, lo que se quiera, pero: No se puede limitar el número de usuarios o copias. No se puede cobrar por usar el programa ( pero sí por distribuirlo). No se puede impedir que otros lo vendan o distribuyan. Tienes que dar las fuentes del programa de una manera publica. Puedes modificar el programa, o aprovechar parte del código, pero el resultado tiene que seguir la misma filosofía. Características de Linux 32 Bits Básicamente significa que necesita como mínimo 386 para ejecutarlo, significa además bastantes más cosas, rapidez, seguridad, eficacia, únicamente diré que es un sistema 100% de verdad de 32 Bits, no como otros, no tiene código de 16 bits. Multitarea Esto significa que el ordenador puede estar haciendo varias cosas a la vez, y que no tendrás que esperar a que acabe una para hacer otra, la multitarea está controlada por el S.O. no por las aplicaciones, por lo que a diferencia de otros S.O. Nunca se te quedara parado por culpa de una mala aplicación que consuma todos los recursos del ordenador. Aquí si podrás bajar correo de Internet, formatear un disco, imprimir 100 hojas y jugar al Quake a la vez, y sin problemas. Multiusuario Si ha manejado antes un ordenador, seguramente usaría MAC OS o Windows, en estos S.O, en Linux, puede haber varias personas usando el ordenador, compartiendo el microprocesador, así puede ponerle un par de pantallas y teclados mas a los puertos serie del ordenador, y estar haciendo tres cosas a la vez ( suponiendo que tuvieses manos para todo) o puede estar otra persona navegando por internet, escribiendo una carta, jugando en su pantalla, mientras se hacen otras actividades completamente diferentes, y ambos estan en el mismo computador. POSIX Esto a los usuarios normales les importa poco, POSIX es un estándar de la industria, que asegura una calidad mínima en ciertas partes del S.O. y asegura su compatibilidad, a nivel de código, es decir, programas POSIX que funcionan en otros Unix, no tendrán problema para compilarse y ejecutarse en Linux, Para muchas empresas esto es muy importante, a la hora de decantarse por un S.O. u otro (por eso Windows NT es compatible POSIX). Compatibilidad Cuando tocamos este tema, siempre pasa lo mismo, la gente dice, JO!!!, No puedo ejecutar mi aplicación favorita XXXX for windows 95, bueno, tampoco alguien con MAC, ni con IRIX, etc., además en Linux hay peros: Pero Nº 1: Ficheros: Linux No tiene ningún problema para tragarse cualquier tipo de disco de cualquier cosa que excita, leerlo y usar su contenido, además existen Suites como OpenOffice o Corel WordPerfect que permiten leer y usar ficheros de aplicaciones comunes como puedan ser Word o Excel. Pero Nº 2: Programas: Si puedes ejecutar programas de otros S.O. para MAC tienes el Executor, que si bien hay que pagar por él, dicen que es buenísimo. De pago también está el WABI, un emulador de Windows 3.1, con el que no tendrás problemas. Pero además existe Wine, un emulador gratuito de windows 3.1 y windows 95, con el que podrás ejecutar (y si no puedes espera un poco que aun lo están desarrollando) cualquier programa. Además si el programa es para MS-Dos existe DosEmu, un emulador de MS-Dos (bueno no exactamente, más bien habría que decir de 386) donde podrás ejecutar a pantalla completa, como en la realidad, o en ventana de X Window, cualquier programa para este S.O. Estabilidad: Linux es robusto, no se colgara ( el S.O. una aplicación si está mal hecha por supuesto que se colgara, pero no afectara al resto del sistema, nunca tendrás que reiniciar el ordenador por qué un programa lo ha colgado), hay que notar que es posible bloquear el teclado o la pantalla, pero eso no significa que se cuelgue el ordenador, puedes entrar al ordenador por otro sitio ( un terminal, por red) y desbloquearlo, y seguir usándolo, o si se te bloquea un programa mientras estabas conectado a Internet y cogiendo correo, quizás no puedas usar el ordenado, pero seguirá bajando el correo sin problemas. Las Sesiones : Por ser multiusuario, varios usuarios, personas ( o una misma persona en varios sitios) puede estar usando el ordenador a la vez, bien por varios terminales, en el caso de que estén conectados al ordenador ( por el puerto serie, por ejemplo) a través de telnet, o mediante las consolas virtuales ( a estas se acede de manera general pulsando ALT+Fx siendo x un numero generalmente entre el 1 y el 6, aunque esto varia y se puede configurar a tu gusto, como TODO en linux. Si estamos en una sesión X, no funcionara, tendremos que usar CTRL+ALT+Fx, que nadie se espere encontrar otra sesión X vacía, aparecerá otra sesión en modo texto, si queremos tener dos pantallas X a la vez, deberemos lanzar la 2º a mano desde la sesión de modo texto ( es fácil, pero consume mucha memoria) o utilizar los escritorios virtuales, que es bastante mas practico. Al principio pide un login, esto es el nombre por el que se conoce dentro de la maquina, después de eso una clave, te la tiene que haber dado tu administrador, si no te gusta después de haber entrado, esto es introducido los dos valores correctamente ( el primero aparecerá en pantalla, pero el segundo no, es una medida de seguridad, para que no puedan ver lo que tecleas). Puedes cambiarlo, basta con escribir passwd, y te pedirá el antiguo ( para comprobar) y que escribas es nuevo dos veces ( para verificar que está bien escrito). Ahora estas en el prompt del sistema, veras algunas cosas y al final el signo $ si entraste como usuario normal y # si entraste como root, si has entrado como root, créate un nuevo usuario, con adduser nombre, te hará un par de preguntas, nombre, clave, grupo al que pertenece, dirección, teléfono, directorio del home, introduce el nombre que quieras para el login, la clave, y el resto admite los que te propone, por ahora vale con lo que el ordenador da, luego cuando estés mas avanzado, ya comprenderás para que sirven. Ahora lo interesante es salir, si quieres acabar la sesión, por ejemplo, para entrar como otro usuario, (muy habitual si eres root, el root, solo debería ser utilizado en casos de necesidad, por ejemplo cuando quieres instalar algo, o quieres cambiar algo de la configuración, en cualquier otro caso es recomendable ser un usuario normal, por seguridad, y por comodidad, aunque al principio te parezca poco cómodo el estar cambiando cada 2x3 de usuario, cuando tengas el ordenador a tu gusto, no necesitaras entrar como root para nada. Basta con escribir logout o exit, más o menos es lo mismo. Y por ultimo no puedes apagar el ordenador por las buenas, como harías con la tele, debes antes decirle que lo vas a apagar, para que el ordenador deje las cosas en orden, (el ordenador no guarda todos los datos en disco duro, los guarda en memoria, y cuando lo cree conveniente los pasa al disco duro, así esa carta, que acabas de hacer, puede que Mac os X aun no esté en el disco duro, si no en memoria, debes decirle que pase todo lo que tiene pendiente al ordenador antes de apagar, esto se conoce como cache, además ciertos procesos ( otros programas que están funcionando y que no ves, he aquí la multitarea) tienen que cerrarse civilizadamente. Apagar es algo que solo puede, hacer el root, o habitualmente el que está situado en la consola ( consola es el conjunto de monitor-teclado principal, es decir el que está conectado directamente al ordenador y no a un puerto serie, o por telnet) Si estas situado en la consola, pulsa ctrl-alt-del, esto debería iniciar el proceso de apagado o reinicio de la maquina, según lo configures, al final, deberías ver un mensaje que pone SYSTEM HALTED, o el típico mensaje de la bios al arrancar, ahora es cuando debes apagar el equipo. Suponiendo que seas root, para apagar el equipo teclea shutdown -fh now, no es necesario que estés en la consola. La f significa que el próximo arranque sea rápido, es decir que no compruebe los discos al iniciarse. La h significa que se pare, ( al final veras el mensaje system halted) si hubieses puesto una r se reiniciaría, y verías el mensaje de la bios. Now, significa que reinicies en ese instante, si pones una hora, el reinicio se realizara a esa hora, si pones +n, el reinicio se hará en n minutos, esto es útil, por que se envía un mensaje a todos los usuarios que hay indicándoles que en n ( o a la hora x) se reinicia el ordenador, y de paso impide nuevas entradas de usuarios. Si hubiese un proceso de reinicio en curso (por ejemplo has dicho que reinicie dentro de 5 minutos) puedes cancelarlo con shutdown -c. 11.1.4. SISTEMA OPERATIVO MAC OS X Mac OS X es el nuevo sistema operativo de Apple. La X de 10 no debe entenderse como una evolución de Mac OS 9, sino como un sistema operativo totalmente distinto, diseñado desde cero una con una base distinta. La historia de Mac OS X empezó con NextStep, un sistema operativo diseñado con fines experimentales y de investigación, creado por Steve Jobs tras abandonar Apple. Cuando se abrió el código fuente de este sistema operativo pasó a llamarse OpenStep, y después, tras comprarlo Apple como la base de su sistema operativo, se le volvió a cambiar el nombre por Rhapsody, y por último cuando se terminó de retocar para comercializarlo pasó a llamarse Mac OS X. A diferencia de las API de otros sistemas operativos, como Windows, Unix, OS/2; Mac OS X tiene una API totalmente orientada a objetos, con un diseño realmente bueno. En Mac OS X, aunque da soporte a muchos lenguajes de programación, los lenguajes más usados para trabajar directamente con su API son dos: Objective-C y Java. Por otro lado la máquina virtual de Apple, dispone de todas las librerías estándar de Java y de hecho está certificada por SUN como una máquina virtual 100% puro Java. Interface Builder es una herramienta de desarrollo visual que nos ayuda a crear rápidamente la parte de la interfaz gráfica de la aplicación. Esta herramienta además de código, genera ficheros .nib que son ficheros con una descripción de los componentes de interfaz gráfica, que se cargar al arrancar la aplicación y que usa Cocoa (API) para pintar la ventana y sus componentes en pantalla, es decir es equivalente a los recursos de otros sistemas. 11.2 SISTEMA OPERATIVO WINDOWS 11.2.1 sistema operativo Windows server 2000/2003 En cuanto a la historia, se da a conocer una evolución notable en los sistemas operativos Windows, iniciando con las aplicaciones que corren bajo DOS, que tienen todos los privilegios del sistema. Ellas pueden acceder a cualquier almacenamiento, cambiar las funciones de control de la CPU, y utilizar cualquier dispositivo de hardware. Esto permite que los programas extiendan el sistema operativo DOS con funciones adicionales. Aunque DOS 6.x se distribuye en 4 ó 5 discos, el espacio está lleno con programas de utilidad que comprimen datos, realizan respaldos, y verifican la existencia de algún virus. En otros sistemas operativos, una aplicación debe realizar una llamada al sistema (system call) para requerir servicios, como, por ejemplo, en UNIX. Los programas de aplicación DOS corren con total privilegio; de esta manera, un programa puede hacer cualquier cosa que desee si tiene la suficiente lógica de programa para manejar el hardware directamente. Los servicios de DOS proveen, en cambio, un conjunto conveniente de servicios útiles que los programas solicitan debido a que ellos no quieren lidiar con detalles. Otro dato importante es la distribución de los archivos. DOS maneja la FAT (File Allocation Table) o Tabla de Asignación de Archivos, que divide al disco en subdirectorios y archivos. La mayoría de los servicios DOS ofrecidos a los programas se relacionan con el acceso a los archivos en disco (abrir, cerrar, leer, escribir, renombrar, eliminar, crear directorio, eliminar un directorio, listar un directorio). Es por eso el nombre de DOS (Disk Operating System) o Sistema Operativo de Disco.Existen algunos programas que se "saltan" a los servicios de DOS e interpretan la FAT por ellos mismos. Los programas de respaldo usualmente proveen su propio soporte a nivel de hardware para los discos duros y los discos flexibles, con el objetivo de evitar las limitaciones impuestas por DOS/BIOS y poder realizar I/O de forma asincrónica en segundo plano. DOS también asigna almacenamiento en el área del usuario. Además de los 640 KB, DOS puede ser configurado para utilizar el hardware de administración de memoria 386 para "completar" áreas no usadas de los 128 KB, que es el rango de dirección de hardware (desde C0000 hasta DFFFF, utilizando notación hexadecimal). Esto se convierte en los Bloques de Memoria Superior (Upper Memory Blocks o UMB) y se utiliza para cargar dispositivos y otras rutinas residentes.Las restantes funciones de DOS son de mantención. Por ejemplo, hay servicios que solicitan o fijan la hora o la fecha. DOS mismo provee muy poca cantidad de funciones. Es posible cargar otros programas que provean servicios adicionales (video, mouse, red, compresión, etc.). DOS fue capaz de sobrevivir por 15 años debido a su simpleza y facilidad de extensión. Si bien Microsoft seguía desarrollando DOS, sabía que tarde o temprano había que dar un vuelco. Windows fue a esta alternativa y pronto tomaría un auge tan grande que se tomaría el mercado. Primero llega Windows 1.0 y Windows 2.0. En realidad, Windows, como interfaz de usuario estable, como sistema estable y como éxito comercial llegó en la versión 3.0 y es ahí, en la versión 3.x donde se ahondará más en estas versiones de 16 bits de Windows. La primera versión de Microsoft Windows, lanzada el 20 de Noviembre de 1985. Tomó un total de 55 programadores para desarrollarlo y no permitía ventanas en cascada, solamente en mosaico. Microsoft comenzó el desarrollo del "ADMINISTRADOR DE INTERFAZ", que posteriormente derivó en Microsoft Windows en Septiembre de 1981. La interfaz inicial tenía menús ubicados en la parte inferior de la ventana y la interfaz sufrió un cambio en 1982 cuando se diseñaron los ahora comunes menús desplegables. Esto ocurrió después de Apple Lisa, un experimento de Apple por llevar una interfaz gráfica al usuario. Sin embargo, ocurrió antes de Macintosh. Windows prometía una interfaz gráfica fácil de usar y la utilización de gráfica independiente del dispositivo, así como el soporte de multitarea. Las siguientes fueron las principales características de Windows 1.0: Interfaz gráfica con menús desplegables, no había ventanas en cascada y soporte para mouse. Gráficos de pantalla e impresora independientes del dispositivo. Multitarea cooperativa entre las aplicaciones Windows. La segunda versión de Microsoft Windows, lanzada en 1987. Windows 2.0 que tenía más características que Windows 1.0, tales como iconos y ventanas traslapadas. Cuando se lanzó Windows/386, Windows 2.0 fue renombrado como Windows/286. Nacen aplicaciones como Excel, Word for Windows, Corel Draw!, Ami y PageMaker. Sus principales características fueron las siguientes: Las siguientes fueron las principales características de Windows 2.0: Ventanas traslapadas, Archivos PIF para aplicaciones DOS. En 1987 Microsoft lanzó Windows/386. A pesar de ser equivalente a su hermano Windows/286, mientras corrían aplicaciones Windows, Windows/386 proveía la capacidad de ejecutar múltiples aplicaciones DOS simultáneamente en memoria extendida. Características: Múltiples máquinas virtuales DOS con multitarea. Una completa reconstrucción de Windows con muchas nuevas facilidades, tales como la habilidad de direccionar más allá de 640 KB. Fue lanzado en 1990, y vendió más de 10 millones de copias, este fue Windows 3.0, con sus características: Modo estándar (286), con soporte de memoria grande (large memory), modo mejorado 386, con memoria grande y soporte de múltiples sesiones DOS, se agregó el Administrador de Programas y Administrador de Archivos, soporte para Red, soporte para más de 16 colores, soporte para cajas de selección, menús jerárquicos y los archivos, INI privados para cada aplicación empezaron a cobrar más valor. Luego llega Windows 3.1, una versión de Windows con muchas mejoras a Windows 3.0. Incluye soporte para fuentes True Type y OLE. Esta versión fue testigo de la pérdida del modo real, lo cual significa que no corre en procesadores Intel 8086. Características: No hay soporte para el modo Real (8086), fuentes TrueType, OLE - Object Linking and Embedding, capacidad para que una aplicación reinicie la máquina, soporte de API de multimedia y red. Como anteriormente se dijo, Windows 3.x fue en realidad la primera versión estable de este nuevo entorno y los subsiguientes sistemas operativos Windows heredan muchas cosas de este Windows 3.x. Por tal motivo vale la pena estudiar las aplicaciones y su comportamiento en Windows 3.x. Cuando Microsoft anunció Windows 95 lo describió como un sistema operativo de 32 bits. En realidad, Windows 95 es un híbrido que mezcla código de 16 bits y código de 32 bits. Lo importante es que provee un ambiente en el cual pueden correr aplicaciones de 32 bits. Cuando Windows 3.x corre en un 386, 486, o Pentium, algo de la administración de memoria y del soporte de E/S de disco corrían ya en 32 bits en Windows 3.11. A estos elementos se les llamó drivers de dispositivos virtuales o VxD. Inicialmente los módulos VxD eran utilizados para la administración de la memoria y para manejar unos pocos dispositivos como módems y tarjetas de sonido. Windows 3.x utilizaba los servicios de DOS para otros dispositivos, como los discos duros, CD-ROMs, y tarjetas de red. Windows for Workgroup otorgó una opción para llevar el soporte de red (excepto para Novell) hacia VxD de 32 bits. El soporte de disco, al menos para los drivers estándar IDE, también pudo habilitarse a través de VxD de 32 bits. Cuando Windows 95 arranca, el Administrador de la Máquina Virtual (VMM) de Windows se inicializa (un enfoque más detallado sobre VMM se encuentra en Parte II: Arquitectura de Windows) y carga los módulos VxD que antes eran drivers de dispositivos Windows. Existen drivers VxD para discos IDE y SCSI y para el sistema de archivos extendido VFAT (Virtual FAT). El soporte de red carga soporte para Windows NT y Novell. Debido a que este soporte corre como un VxD, éste puede cargarse por sobre el primer megabyte de memoria RAM. A pesar que los VxDs soportan aplicaciones Windows, también soportan programas de DOS que se ejecutan bajo control del VMM. Windows 98, el siguiente escalón en la familia de sistemas operativos Windows. De cierta forma es la continuación que se podía esperar de Windows 95. Como era obvio predecir, esta nueva versión continúa soportando 32 bits en su total dimensión aunque todavía se debe esperar para que se incorpore toda la funcionalidad de seguridad presente en los 32 bits y que hoy es una característica de la familia NT. Desde el punto de vista del usuario común, Windows 98 no trae nada nuevo. Microsoft no ha hecho cambios relativamente importantes en la interfaz, por lo que, si un usuario sabe usar Windows 95, también sabe usar Windows 98. Se puede decir que la interfaz de Windows 98 es la interfaz que deja Internet Explorer 4.0 cuando se le instala en Windows 95 con la opción "Actualización de Escritorio", que es una versión mejorada de la interfaz nativa de Windows 95. Así como para un usuario común, Windows 98 será familiar, para un programador Windows también, hasta que abra el velo que cubre a Windows 98 y descubra lo que hay en esta nueva versión de Windows: Modelo de Driver Win32 (Win32 Driver Model o WDM), soporte para Múltiples Monitores, tecnología de administración de poder OnNow, soporte para USB. Con Windows 98, no hay que preocuparse por la compatibilidad que tengan las aplicaciones escritas para sistemas operativos Windows anteriores a Windows 98. Todas las aplicaciones escritas para Windows 95 correrán en Windows 98 pero, si se mira más de cerca a este nuevo sistema operativo, se pueden encontrar nuevas características que las aplicaciones pueden tomar. Una de las cosas que los programadores adorarán de Windows 98 y de Windows NT 5.0 (que se encuentra en una fase Beta al momento de escribir este texto), es el soporte de Win32 Driver Model, abreviado WDM, que consiste en un modelo de drivers únicos que permite a los desarrolladores escribir un único driver que corra en Windows 98 y en Windows NT. Para que esto se haga realidad Microsoft copia servicios del Kernel de NT a Windows 98 vía un driver de dispositivo virtual que en la práctica es un archivo llamado NTkern.VXD. Este nuevo método permitirá que Windows 98 maneje los mismos drivers de NT y el mismo método mantiene soporte para las tarjetas existentes. 11.2.2. SISTEMA OPERATIVO WINDOWS NT 3.51 y 4.0 DOS fue escrito en 1980 para la familia de procesadores Intel 8086. En 1985 IBM y Microsoft realizaron un acuerdo para desarrollar un nuevo sistema operativo para el chip de CPU 286. La versión 1.0 de OS/2 no fue lanzada sino hasta 1988, y por entonces el 386 se estaba haciendo popular. Se hizo claro que el hardware estaba cambiando muy rápido con relación al desarrollo de software. De manera que en 1988 decidieron hacerlo de nuevo, IBM y Microsoft decidieron comenzar a trabajar simultáneamente en dos productos. OS/2 versión 2 sería un refinamiento evolutivo de sistemas previos, actualizado para las nuevas características de hardware del 386. Continuaría el soporte a las aplicaciones y a los drivers de dispositivos desarrollados para el sistema previo. Esto se convirtió en el IBM OS/2. OS/2 versión 3 se basaría sobre Nueva Tecnología. Este sería escrito desde cero y se desarrollaría un sistema basado sobre los mejores principios de ingeniería de software. En un principio sería para CPUs Intel, pero sería portable a otros chips de CPU. Esto se convirtió en Windows NT. Unix rápidamente se fragmentó en "sectas". Los programas escritos por BSD no corren en UNIX SVR4. Así, hay UNIX SunOS, AIX, Ultrix, OSF, Linux, NextStep, USL, y una docena más. Todos los sistemas UNIX comparten un conjunto común de servicios, pero cada uno tiene características únicas que producen dependencias de los programas. El Microkernel era una idea desarrollada para reunir a la comunidad UNIX. Un conjunto rico de servicios del sistema operativo (libre de toda idiosincrasia) que está contenido en un pequeño y puro kernel del sistema. Los programas de aplicación no acceden a los servicios del kernel directamente. En cambio, realizan las solicitudes a través de subsistemas programados para duplicar la personalidad de un sistema UNIX particular. Al momento de escribir estas líneas Windows NT 5.0 (Windows 2000)se encuentra aún en etapa de desarrollo y Microsoft ha anunciado un cambio de nomenclatura para su sistema NT. Así, Windows NT 5.0 se pasa a llamar Windows 2000. Hasta la versión 4.0 Windows NT se comercializaba en tres versiones: Workstation, Server, y Advanced Server. Desde Windows 2000, también se pierde la nomenclatura Workstation y Server, siendo la siguiente: Windows 2000 Professional anteriormente NT Workstation, Windows 2000 Server anteriormente NT Server, Windows 2000 Advanced Server anteriormente NT Advanced Server. Windows 2000 Datacenter Server. Producto nuevo y que es el nuevo y más poderoso sistema operativo de Microsoft con posibilidad de hasta 16 procesadores simétricos y 64 GB de memoria física. Desde el lanzamiento de los sistemas operativos de Redes, pasando por Windows NT, los sistemas se fueron perfeccionando a la medida de las necesidades de las empresas. Desde las ya conocidas diferencias que introdujo Windows 2000 sobre su predecesor Windows NT 4.0, llegan a al Sistema Operativo óptimo para las exigencias del mercado Informático, donde se han implementado notables mejoras con respecto a su predecesor Windows 2000. En el caso de Windows Server 2003, este está basado en experiencias del mercado consumidor Informático, y es por eso que en l encontraremos muchas características de las que siempre nos preguntamos: ¿Se puede hacer esto?.... ¿y aquello? Hasta el momento sin respuesta, pero a partir de ahora, esas preguntas encuentran posibles respuestas en Windows Server 2003. Entre los diferentes sistemas operativos para servidores encontramos el Microsoft Windows NT Server que es un sistema operativo diseñado para su uso en servidores de red de área local (LAN). Ofrece la potencia, la manejabilidad y la capacidad de ampliación de Windows NT en una plataforma de servidor e incluye características, como la administración centralizada de la seguridad y tolerancia a fallos más avanzada, que hacen de él un sistema operativo idóneo para servidores de red. Windows NT Server es a la vez un sistema operativo para ordenadores personales y un sistema operativo para red, puesto que incorpora funciones de red, las redes de Windows NT Server se integran de forma óptima con el sistema operativo básico, facilitando el uso y la administración de las funciones. Además es un sistema operativo para servidores, ampliable e independiente de la plataforma. Puede ejecutarse en sistemas basados en procesadores Intel x86, RISC y DEC Alpha, ofreciendo al usuario mayor libertad a la hora de elegir sus sistemas informáticos. Es ampliable a sistemas de multiproceso simétrico, lo que permite incorporar procesadores adicionales cuando se desee aumentar el rendimiento. Luego en su evolución se puede hablar de Windows 2000, que es un sistema operativo con varios propósitos, con un soporte integrado para cliente/servidor y redes parejas. Se ha diseñado la familia de productos Windows 2000 para aumentar la fiabilidad, proporcionar mayores niveles de disponibilidad del sistema y conseguir dimensionabilidad de una pequeña red a una gran red entre empresas. Windows 2000 incorpora tecnologías que reducen el costo total de licencia permitiendo a las organizaciones aumentar el valor de sus inversiones existentes mientras disminuyen los costes totales de informática. Además, Windows 2000 incorpora un amplio soporte de Internet y aplicaciones, y ha sido construido a partir del éxito conseguido con Windows NT como un sistema operativo servidor para aplicaciones a Internet. Y por último también se encuentra la versión Windows Server 2003, versión mejorada con sus nuevas características que hacen que sea, hasta el momento, el sistema operativo más estable, robusto, escalable y sobre todo mejor orientado a perfeccionar la performance y las prestaciones para Servidores en distintos roles: Aplicación, Servicios Web, Servicios de Directorio, Servicios de Archivos e Impresión, y Servicios de Infraestructura. La optimización de todas estas características, sin duda, también configuran a la familia Windows Server 2003, como la plataforma que más recomendable para los negocios, reduciendo notablemente aspectos tales como el costo, que se comentó anteriormente. No hay que dejar a un lado, que próximamente saldrá al mercado Windows Server 2008, que tiene grandes expectativas. Windows 2000, (conocido también como Win2K) sistema operativo de Microsoft introdujo algunas modificaciones respecto a sus predecesores, como el sistema de archivos NTFS 5, la capacidad de cifrar y comprimir archivos. Introdujo también las mejoras en el sistema de componentes COM, introduciendo COM+ que unificó en un solo paquete de servicios anexados, la tecnología COM y MTS de Windows NT4, con nuevas ventajas. Este sistema fue el primer intento de Microsoft por juntar su versión MS-DOS (Windows 95, 98, ME) y la NT (3.51, 4) aunque la fusión definitiva llegaría con Windows XP. Esta versión ha tenido mucho éxito en empresas, que todavía hoy la usan, pero entre los usuarios de hogares no tuvo mucho éxito. Los requerimientos mínimos para Windows 2000 Professional son un Pentium 166 MHz, 64 Mb de RAM y 2Gb de disco duro, con espacio libre de, al menos, 1 Gb. Entre las mejoras destacó la estabilidad del sistema y el aumento en seguridad respecto a las versiones anteriores de Windows, muy criticadas por sus cuelgues continuos. Hoy en día Windows 2000 sigue considerándose por muchos el mejor sistema de la casa Microsoft. Microsoft publicó 4 service packs corrigiendo la mayoría de errores y aumentando todavía más su estabilidad y seguridad. Existen cuatro variantes de Windows 2000 que son: Professional, Server, Advanced Server y Datacenter Server. Estas dos últimas variantes no son más que ampliaciones del propio Windows 2000 Server. Windows 2000 Server es el sistema operativo de servidor principal para empresas de todos los tamaños y es ideal para ejecutar sus servidores de red o los servidores de archivo, impresión, intranet o de aplicaciones. No es novedad que Windows 2003 es un sistema operativo que puede ser administrado remotamente, teniendo opciones de gestión remota que van desde Windows Terminal Services hasta los scripts de línea de comandos. Es así que ha habido relativamente muy pocos cambios arquitectónicos hechos de Windows Server 2000. Sin embargo, hay un número de realces que tendrán un impacto beneficioso en la administración con Windows Server 2003. El sistema integrado de servicios de administración, en Windows Server 2003, reduce los costes asociados con las tareas de gestión de sistema, es por eso que durante la fase de diseño de un sistema operativo se deciden las funcionalidades básicas y características del sistema: El sistema de archivos a utilizar, el módulo de gestión de memoria, la gestión de los procesos, etc. También, mantener protegido el sistema operativo es una norma básica que cualquier persona interesada en la seguridad que debe seguir. La estructura del sistema operativo y la relación de componentes son fundamentales desplegándose y operando en ambientes Windows Server 2003. Es así que, entendiendo la arquitectura de sistema operativo, el administrador de sistema estará en una mejor posición para instalar, configurar, optimizar, y localizar y solucionar los daños de Windows Server 2003, esto ayuda a integradores de sistemas y profesionales de tecnología de la información con guías arquitectónicas validadas que establece a la plataforma Microsoft como la plataforma más confiable para el negocio. Pues cada parte, funcionalidad y servicios de tecnología de la información cubierta dentro de la arquitectura de Windows Server, articulando opciones del diseño, ayuda asegurar que el diseño más correcto está realizado para un panorama particular. Otro punto es acerca de su sistema multiusuario, las aplicaciones están separadas del sistema operativo, esto significa que el código del sistema se ejecuta en un modo privilegiado de procesador (kernel mode), con acceso a las estructuras de datos y al hardware. El código de aplicación corre en un modo no privilegiado de procesador (user mode), con un número limitado de funciones de sistema. Cuando un programa en modo usuario llama a un servicio de sistema, el procesador recoge la llamada y cambia el proceso a modo kernel. Cuando el servicio de sistema acaba, el sistema operativo vuelve a cambiar el contexto de la llamada a modo usuario y permite seguir funcionando al programa. La arquitectura Interna de Windows Server 2003 permite un mejor diseño basado en prácticas de una infraestructura de tecnología de la información, lo cual conduce estandarización a través de la plataforma aplicando principios arquitectónicos sólidos alrededor de la seguridad, manejabilidad y otros factores para asegurar un acercamiento coherente para la definición de servicios de tecnología de la información. El gestor de memoria virtual de Windows 2000 (W2K) controla como se asigna la memoria y como se realiza la paginación. Cada proceso de usuario de W2K dispone de un espacio de direcciones separado de 32 bits, lo que permite 4 Gbytes de memoria por proceso. Por lo que, una parte de esta memoria está reservada para el sistema operativo y cada usuario tiene 2 Gbytes de espacio de direcciones virtual disponible. Cuando se crea un proceso en principio puede hacer uso de todo el espacio de usuario de 2 Gbytes. Este espacio se divide en paginas de tamaño fijo, y cualquiera puede cargarse en la memoria principal. En la práctica una página puede estar en uno de estos tres estados: 1. Disponible: las páginas no usadas actualmente por este proceso. 2. Reservada: un conjunto de paginas contiguas que el gestor de la memoria virtual separa para un proceso pero no cuentan para la cuota de memoria del proceso hasta que se usan. 3. Confirmada: paginas para las cuales el gestor de memoria virtual mantiene un conjunto de espacio separado en su archivo de paginación. Windows Server 2003 ofrece mejoras en el manejo de la memoria en las siguientes áreas: Address Windowing Extension (AWE) permite a un servidor o aplicación mapear, remapear y desmapear direcciones virtuales en un espacio de direcciones físicas muy grande. Con ello, servidores como SQL Server 2000 pueden acceder a toda la memoria física (hasta 64 Gb) en un sistema basado en x86 limitado a dos gigabytes de espacio de memoria virtual. Acceso E/S a disco usando Direct Memory Access (DMA), cuando se necesita gestión de la memoria para el bloqueo de buffers de E/S en memoria mientras tiene lugar la operación de E/S La administración de memoria mapea páginas dentro del espacio de direcciones virtual bajo demanda. Los errores flexibles de página tienen lugar cuando los datos buscados existen en la memoria física, pero no en la memoria virtual, lo que puede ser el resultado de una operación de desmapeo de memoria efectuada por una aplicación o por el gestor de memoria, para reutilizar las direcciones virtuales para otro propósito. Se usan páginas iniciadas a ceros bajo demanda para aumentar la seguridad de las secciones de datos y en respuesta a peticiones de páginas de datos por parte de una aplicación. Windows rellena con ceros proactivamente, de modo que la puesta a cero de una página pueda hacerse a petición, para reducir el coste de un error en petición de páginas a cero. La gestión de memoria de Windows Server 2003 mejora la escalabilidad reduciendo drásticamente la contención por bloqueos. Entre otras mejoras, se incluyen: Reducción en los bloqueos de borde de página. Reducción de la frecuencia de activaciones en muchas rutas, incluyendo bloqueo y desbloqueo de páginas de E/S de disco y errores flexibles de página. Reducción del tiempo mantenimiento del bloqueo y la contención Eliminación del bloqueo del espacio dedicado en el sistema para mapeo de direcciones del sistema. Soporte para páginas grandes en modo usuario, disponible con la función VirtualAlloc, pero restringida al uso de un solo proceso (no puede compartirse entre varios procesos). En términos de tamaño de página, están disponibles: Páginas de 4 Mb en sistemas basados en x86. Páginas de 16 MB en sistemas basados en arquitectura Itanium. Eliminación de AweLock, mejorando la escalabilidad de las operaciones de mapeo y desmapeo de páginas AWE. Bypass del bloqueo de borde de página para E/S de disco a AWE y páginas grandes. Realmente el gran avance el cual se pudo lograr con estos dos sistemas operativos son el sistemas de archivos, ya que fue creado para darle una mejor organización a la distribución de los mismos, así como también la reducción de costos es la búsqueda de la información, es el sistema NTFS. En cuanto a la memoria auxiliar, permiten ambos la utilización del caché como las unidades ROM que ya en la Introducción hemos hablado. Existen diversas áreas en las cuales se está adaptando la seguridad en Windows 2000 para soportara las empresas basadas en Internet. Algunos de estos cambios reflejan los avances en el soporte que se proporciona a grandes organizaciones por medio del uso del Directorio Activo jerárquico de Windows 2000. Otros cambios aprovechan la flexibilidad de la arquitectura de seguridad de Windows para integrar la autenticación, utilizando certificados de clave pública de Internet. A continuación se presenta una lista de las nuevas funciones de seguridad Windows 2000: El Directorio Activo proporciona almacenamiento para toda la información relativa a políticas de seguridad de dominios e información de cuentas. El Directorio Activo, el cual provee duplicación y disponibilidad de información de cuenta a múltiples Controladores de dominio, está disponible para la administración remota. El Directorio Activo soporta un espacio de nombre jerárquico para el usuario, grupo e información de cuenta del PC. Las cuentas se pueden agrupar según las unidades organizacionales, en lugar de hacerlo según el espacio del nombre de la cuenta de dominio proporcionado en versiones anteriores de Windows NT. Se pueden delegar derechos del administrador para crear y administrar cuentas del usuario o de grupo a nivel de unidades organizacionales. Los derechos de acceso se pueden otorgar a propiedades individuales en objetos del usuario, con el fin de permitir, por ejemplo, que una persona o grupo específicos tenga derecho a restablecer contraseñas, pero no a modificar otra información de la cuenta. La duplicación del Directorio Activo permite actualizaciones a las cuentas en cualquier controlador de dominio, y no únicamente para el controlador de dominio primario (PDC). Se actualizan y sincronizan de forma automática réplicas maestras múltiples de Directorio Activo en otros controladores de dominio, los cuales se conocen como controladores de dominio de respaldo (BDC). Windows 2000 emplea un nuevo modelo de dominio que utiliza el Directorio Activo para soportar un árbol de dominios jerárquico de niveles múltiples. La administración de relaciones de confianza entre dominios se simplifica a través de confianzas transitorias a lo largo de los árboles que cubren todo el árbol del dominio. La seguridad de Windows incluye nueva autenticación basada en los protocolos de seguridad estándar de Internet, incluyendo Kerberos versión 5 y Seguridad de niveles de transporte (TLS) para protocolos de seguridad distribuidos, además de soportar protocolos de autenticación del administrador LAN de Windows NT para compatibilidad. La implementación de los protocolos de seguridad de canal seguros (SSL 3.0/TLS) soporta la autenticación sólida del cliente mediante la relación de credenciales del usuario en la forma de certificados de clave pública para las cuentas Windows NT existentes. Se utilizan herramientas de administración comunes para administrar la información de las cuentas y el control de acceso, ya sea utilizando la autenticación secreta compartida o la seguridad de clave pública. Windows 2000 soporta el uso opcional de tarjetas inteligentes para la conexión interactiva, además de las contraseñas. Las tarjetas inteligentes soportan criptografía y almacenamiento seguro para claves y certificados privados, habilitando una autenticación sólida desde el escritorio al dominio. Windows 2000 incluye Microsoft Certificate Server para que las organizaciones emitan certificados X.509 versión 3 a sus empleados o socios de negocios. Esto incluye la introducción de CryptoAPI para la administración de certificados y módulos para manejar certificados de clave pública, incluyendo certificados de formato estándar emitidos por cualquier Autoridad de certificado comercial (CA), CA de terceros o Microsoft Certificate Server, incluido en Windows. Los administradores del sistema definen cuáles CAs son de confianza en su entorno y, de esta forma, cuáles certificados se aceptan para la autenticación del cliente y el acceso a los recursos. Los usuarios externos que no tienen cuentas Windows 2000 pueden ser autenticados utilizando certificados de clave pública y relacionados a una cuenta Windows existente. Los derechos de acceso definidos para la cuenta Windows determinan los recursos que los usuarios externos pueden utilizar en el sistema. La autenticación del cliente, utilizando certificados de clave pública, permiten que Windows 2000 autentique usuarios externos, con base en certificados emitidos por Autoridades de certificados acreditadas. Los usuarios de Windows 2000 cuentan con herramientas fáciles de usar y diálogos de interfaz comunes para la administración de pares de claves pública/privada y de certificados que se utilizan para acceder a los recursos basados en Internet. El almacenamiento de credenciales de seguridad personales, las cuales utilizan el almacenamiento basado en disco seguro, se transportan fácilmente con el protocolo estándar en la industria propuesto, Intercambio de información personal. Asimismo, el sistema operativo ha integrado soporte para los dispositivos de tarjeta inteligente. La tecnología de encriptación está integrada dentro del sistema operativo en muchas formas, con el fin aprovechar el uso de firmas digitales para proporcionar flujos de datos autenticados. Además de los controles firmados ActiveX™ y Clases Java para Internet Explorer, Windows 2000 utiliza firmas digitales para la integridad de imágenes de una variedad de componentes del programa. Los desarrolladores internos también pueden crear software firmado para distribución y protección de virus. Windows Server 2003: Los virus existen y por ello que la seguridad del software es un reto constante. Para hacer frente a ello, Microsoft ha convertido la informática de confianza en una iniciativa clave para todos sus productos. La informática de confianza es un marco para desarrollar dispositivos basados en equipos y software seguros y confiables, como los dispositivos y aparatos domésticos que utilizamos diariamente. Aunque en la actualidad no exista ninguna plataforma de informática de confianza, el nuevo diseño básico de Windows Server 2003 es un sólido hacia la conversión e este concepto en realidad. El motor de software del lenguaje compartido en tiempo de ejecución es un elemento clave de Windows Server 2003 que mejora la confiabilidad y facilita un entorno informático seguro. Asimismo reduce el número de errores y los agujeros de seguridad causados por errores comunes de programación que existan menos vulnerabilidades que los atacantes puedan explotar. El lenguaje compartido en tiempo de ejecución verifica que las aplicaciones puedan realizarse sin errores, y a la vez comprueba los permisos de seguridad adecuados, asegurando que realice exclusivamente las operaciones correctas. Esto se lleva a cabo comprobando aspectos como los siguientes: la ubicación desde la cual se ha descargado o instalado el si el código tiene una firma digital de un desarrollador de confianza, y si código ha sido alterado desde su firma digital. 11.2.3 SISTEMA OPERATIVO WINDOWS VISTA Windows Vista apareció en enero de 2007. Los continuos retrasos en las fechas de entrega han llevado a Microsoft a tomar diversas medidas, por ejemplo, en Argentina, se podrá comprar Windows Vista con un "ticket" que la persona adquiere al momento de comprar una nueva PC que no tiene instalado todavía Windows Vista. Podrán canjear el "ticket" por una copia original de Windows Vista y así actualizar su sistema. Las diferentes versiones que se podrán adquirir son tres para el consumidor, Vista Home Basic, Home Premium y Ultimate Edition y dos versiones para las empresas, Vista Business y Enterprise, más Vista Starter, para los mercados emergentes. Los requisitos minimos para que la versión básica de Windows Vista funcione son los siguientes: Procesador de 32 Bits de por lo menos 800Mhz 512 MB de RAM (para trabajar a una velocidad aceptable), se recomienda 1GB Tarjeta Gráfica con por lo menos 32MB de memoria, se recomienda 128MB. Disco duro de 40GB con 15GB disponibles Grabadora y lectora de DVD-ROM Describe la interfaz de usuario de Windows Vista, prestando especial atención a las tareas más habituales de un usuario en este sistema operativo: el manejo de archivos y carpetas, la administración de impresoras, la instalación e inicio de aplicaciones, la reproducción de archivos multimedia (audio, vídeo, animación, etc.). También se estudian algunos accesorios útiles de Windows, como el Paint para dibujar y los editores de texto Bloc de notas y WordPad. Finaliza con el estudio de las opciones de accesibilidad disponibles. Describe lo que podemos encontrar en el Escritorio de Windows Vista, con su barra de tareas, la barra Windows Sidebar de gadgets, la papelera de reciclaje, etc. Estudia el papel que juega el menú Inicio para ejecutar las aplicaciones que necesitamos, así como la forma de alternar entre las tareas o ventanas abiertas mediante la barra de tareas o visualmente en 3D si disponemos del entorno Aero. Además, incluye una vista rápida del sistema de ayuda y estudia las distintas opciones que tenemos a la hora de cerrar Windows Vista correctamente. Windows Vista en relación a sus predecesores incorpora una mayor seguridad, que se debe, en gran parte al Control de Cuentas de Usuario (UAC) que incorpora. El Control de Cuentas de Usuario habilita un conjunto de permisos para cada usuario o grupo de usuarios. De este modo no todos los usuarios podrán hacer cuanto deseen con los ficheros o carpetas del PC. Tipos de permisos del UAC de Windows Vista total: Otorga todos los permisos disponibles. Modificar: Otorga los permisos necesarios para modificar archivos o carpetas. Lectura y ejecución: Permite la apertura o ejecución de ficheros. Mostrar el contenido de una carpeta: Otorga permisos para abrir o ver el contenido de una carpeta. Lectura: Permite la lectura del fichero o carpeta, es decir, otorga los permisos necesarios para que el fichero no nos sea oculto. Escritura: Otorga permisos de escritura o modificación sobre un fichero o carpeta. Permisos especiales: Dentro de los permisos especiales encontramos los permisos que son necesarios para poder sincronizar un archivo, cambiar permisos, cambiar el propietario de un archivo o carpeta y tomar posesión sobre un fichero o carpeta. Con esta lista podremos dar / limitar de manera muy amplia los permisos sobre cualquier fichero o carpeta a los usuarios del PC. Usuarios y grupos del UAC de Windows Vista. Los usuarios y grupos son los portadores u objetivo final del los permisos disponibles. De este modo la asignación de un permiso se realiza sobre un determinado usuario o grupo, es decir, que un mismo fichero o carpeta puede tener distintos permisos en función de qué usuario este accediendo a él. Así se consigue una escala de privilegios entre los usuarios del equipo, habrá usuarios con más privilegios que otros en el mismo sistema. Un grupo es un conjunto de usuarios que poseen los mismos permisos, es decir, si cambiamos los permisos de un grupo cambiaremos también los permisos de todos los usuarios que pertenezcan a él. La asignación de usuarios dentro de grupos facilita mucho la tarea de gestionar los permisos. Además un usuario puede pertenecer a varios grupos y adquirir los permisos de varios grupos para complementar los permisos que necesite ese usuario.(Sólo se permite este modo de administración en las versiones de Windows Vista Enterprise, Business y Ultimate.) 11.2.4 SISTEMA OPERATIVO WINDOWS CE Un "Embedded System" - sistema empotrado - es cualquier sistema o dispositivo que ejecuta una función “dedicada”. Los sistemas embarcados utilizan un sistema operacional instalado en la ROM, o en el disco, como en el caso de un PC. Los sistemas embarcados no tienen como objetivo substituir el sistema operacional tradicional de las empresas y de las oficinas, tanto que sus funciones no son permitidas para automatización de oficinas y computación personal (e_email, procesamiento de textos, planillas, banco de datos, pesquisas en la red,etc.) cuando está permitido en la forma embarcada. La plataforma Microsoft Windows Embedded permite el desarrollo de dispositivos inteligentes, de una forma más rápida. Esta plataforma incluye: EL Microsoft Windows CE .NET es un sistema operacional vigoroso, en tiempo real, para el desarrollo ágil de dispositivos de última generación conectados, inteligentes y compactos. Éste incluye el software necesario para crear dispositivos basados en el Windows CE, adicionando un conjunto completo de herramientas de desarrollo para la construcción de productos de diseño sofisticados, con aplicaciones poderosas para rodar en el hardware más actual. El Microsoft Windows XP Embedded es una versión componentizada del sistema operacional líder del mercado, que posibilita el rápido desarrollo de dispositivos más confiables, completos y conectados. Basado en el mismo código binario del Windows XP Profesional. El Windows XP Embedded permite que los diseñadores seleccionen individualmente los componentes y recursos necesarios para la creación de dispositivos embarcados personalizados y de pequeño porte. Justo cuando los programadores se estaban acostumbrando a Windows 9x y Windows NT, Microsoft ha agregado un nuevo hermano: Windows CE. Sin embargo este nuevo integrante de la familia Windows tiene un objetivo especial. En los últimos años se ha visto que Windows 95 y Windows 98 se dedican a entregar compatibilidad con las aplicaciones y hardware existentes, mientras intentan entregar nuevas características como la multitarea. El objetivo de Windows NT es convertirse a largo plazo en el mejor sistema operativo de empresa. Sin embargo, Windows CE tiene otro objetivo: proveer un moderno sistema operativo de plataforma cruzada, multihilado y de tamaño pequeño. Esta última característica es la principal diferencia con Windows 95 y Windows NT. Cuando se habla de tamaño, se refiere a la cantidad de memoria y de almacenamiento necesario para albergar al sistema operativo. Mientras se desarrollaba Windows CE se le dio el nombre de Pegasus y junto a él se estaba diseñando un nuevo dispositivo, que tendría más tarde a Windows CE como sistema operativo. A este nuevo dispositivo se le llamó Handheld PC (HPC) o PC de bolsillo. Es así como el HPC sería la primera de muchas plataformas en aceptar el uso de Windows CE. Windows CE también funciona con otros dispositivos denominados Palm-size PC o "PC del porte de la palma", que son más pequeños que los HPC y que carecen de teclado, reemplazado por un reconocimiento de un sistema de tacto y un panel de entrada que aparece en pantalla. La figura muestra un Palm-size PC. Los dispositivos para Windows CE se sirven de baterías para poder durar 20 horas con uso continuo o una semana si el uso es discontinuo. Como una regla general se puede decir que las máquinas Windows CE tienen baterías con vida más corta. A diferencia de Windows 9x o NT, el sistema operativo Windows CE no tiene que ser re iniciado cada vez que el usuario lo desea utilizar. De hecho, se pueden configurar las máquinas para que se reemprendan instantáneamente a la respuesta al input del usuario, y el sistema vuelve al estado justo antes de apagarse. El sistema operativo no viene en discos, ni en CD-ROM sino que lo encontraremos en una pequeña tarjeta que se inserta en un HPC o en un Palmsize PC. Desde 1996, Microsoft creo el nuevo Sistema Operativo (SO) Windows CE en su primera versión, el cual se instaló en la memoria ROM de los primeros dispositivos de información con procesadores RISC, llamados Handheld PC los cuales eran similares a las Laptop, pero de tamaño reducido, pudiendo ser guardados en el bolsillo, con memorias RAM para almacenar datos de 2 MB hasta 4 MB y velocidades de 44 MHz Este SO venía acompañado de programas como Word, Excel, Outlook e Internet Explorer en sus versiones Pocket. En 1998 introduce al mercado la versión 2.0 con nuevos dispositivos tales como la Palm-size PC, el AutoPC (Computadora para el automóvil), el Sega Dreamcast (primer juego de video con capacidad de juego en línea a través de Internet) y las mismas Handheld PC pero ahora incluyen un visualizador de Power Point con 8 MB. En 1999 introduce la versión 2.11 con capacidad de manejar pantallas a color, en su nueva versión Handheld PC Pro con la base de datos "Access" (Mini Laptop) y las HMI (Human Machine Interface). En el año 2000, deciden hacer un gran cambio, reconstruir el SO Windows CE, para lograr sea de tiempo real, es decir que sea mucho mas rápido, sobre todo para el caso de las HMI (Industria), así se lanza su tercera versión, en la cual aun nos encontramos. A las anteriores Palm-size PC, se les adapta el Windows CE 3.0 de una forma diferente para hacerlas mas sencillas de usar y a esta adaptación se le llamo Pocket PC. Se instalo por primera vez, en este tipo de dispositivos las aplicaciones de Word, Excel, Internet Explorer, Microsoft Reader (Libros digitales), Microsoft Media (Música digital MP3), en sus versiones Pocket, con memorias RAM de 16 MB. En el presente podemos encontrar equipos con 64 MB en su RAM, con la posibilidad de agregarles hasta 5 GB; con procesadores de 200 o 400 MHz Esta gran potencia con la que cuentan los equipos Pocket PC, los próximos Pocket PC Phone y Smart Phone, les permite aprovechar el gran potencial de Windows CE (Sistema Operativo de Tiempo Real), con lo cual podrá usted aprovechar la capacidad de multitareas y multimedia (AutoPC) con la que cuentan, es decir podrá ejecutar varias aplicaciones al mismo tiempo, con lo cual será mas productivo y eficiente. Un ejemplo seria el estar navegando por Internet para realizar una compra, mientras está enviando y recibiendo su correo electrónico, así mismo le esta contestando al programa de Ajedrez y mientras lee su revista favorita (Reader) escuchando su música (Media). En este ejemplo se están ejecutando solo 5 aplicaciones diferentes de las 32 permitidas: Internet Explorer, Inbox, Ajedrez, Reader y Media. Esto solo será posible cuando usted use Windows CE en alguna de sus diferentes presentaciones (Pocket PC, Handheld PC, etc.), no cuando use las famosas Palm de 3Com o la nueva de Sony. Windows CE es un sistema operativo modular compuesto de varios elementos software. Estos elementos son interfaces compatibles con Win32 y estas interfaces permiten que cada uno de los elementos software puedan integrarse entre sí. Cada elemento comprende varios componentes de nivel más bajo y los diseñadores del sistema tienen la posibilidad de incluir o excluir estos componentes de nivel más bajo según sus necesidades. Es posible que un desarrollador excluya módulos como USER y GDI, obteniendo así un Windows CE sin interfaz de usuario. Bueno, esa característica ahora ha permitido que Windows CE funcione en sistemas empotrados (Embedded Systems) en los cuales todo es controlado mediante memoria ROM y no hay interfaz de usuario, ya que por lo general los sistemas empotrados son automatizaciones donde no hay intervención humana. Windows CE debido a su tamaño se hace ideal para realizar trabajo en tiempo real y permite llevar la API Win32 a sistemas automatizados de tiempo real. Comenzando por el fondo, los principales elementos que conforman el sistema operativo son: la capa de abstracción OEM denominada OAL (OEM Abstraction Layer), que incluye la administración de poder, los drivers de dispositivos y los servicios de las tarjeta de PC (PC Card), el Kernel de Windows CE, USER, GDI, sistemas de archivos y bases de datos; los protocolos de comunicaciones IRDA y TCP/IP; las distintas APIs; la conectividad remota, Internet Explorer para Windows CE y el shell. Como se dijo anteriormente un diseñador puede incluir o excluir algunos de estos elementos (por ejemplo, el Internet Explorer) según sus necesidades. El Kernel de Windows CE fue escrito específicamente para dispositivos "no PC". Implementa el modelo de proceso, hilo y memoria virtual de Win32. Al igual que Windows NT y Windows 9x, presenta un sistema multitarea con desalojo basado en prioridad, también provee una rica variedad de primitivas de sincronización, incluyendo semáforos, mutex y eventos. El Kernel de Windows soporta la ejecución de programas en ROM o RAM. También implementa paginación bajo demanda para las aplicaciones que se almacenan comprimidas y/o se almacenan en un medio que soporta ejecución en el lugar (como lo es para RAM o ROM). El kernel tiene una rutina de bajo nivel de servicios de interrupción y baja latencia de hilo (a los hilos se les puede asignar la CPU y hace cambio de contexto en menos de 100 microsegundos en un HPC a 33 MHz). Esto permite que Windows CE sea utilizado en muchos tipos de sistemas de tiempo real. Windows CE exporta un subconjunto de Win32 API. Dentro de este subconjunto se incluyen sobre 500 de las más utilizadas API3s de Win32. Aplicaciones como Pocket Word y Pocket Excel han sido escritas con este subconjunto. Junto con los protocolos de comunicaciones, Windows CE provee varias de las APIs familiares para comunicaciones de Windows, incluyendo Windows Sockets, TAPI4 y Unimodem. RESUMEN Un Sistema Operativo es un programa que actúa como interface entre el usuario y el hardware de una computadora. El propósito es proveer un entorno en el cual el usuario puede ejecutar programas, es decir que el objetivo principal de un Sistema Operativo es hacer que un sistema sea conveniente de usar. Para entender qué son los Sistemas Operativos hay que entender como fueron desarrollándose. Un sistema tiene diversos recursos que pueden requerirse para resolver un problema: tiempo de CPU, espacio de memoria, espacio de almacenamiento de archivos, procesos, dispositivos de E/S, etc. El Sistema Operativo actúa como el gerente de esos recursos y se los otorga a programas específicos y usuarios a medida que son necesarios. HISTORIA Y EVOLUCION DE LOS SISTEMAS OPERATIVOS Los sistemas operativos han venido evolucionando a través de los años, ya que estos se han apegado íntimamente a la arquitectura de las computadoras en las cuales se ejecutan. La primera computadora digital real fue diseñada por el matemático ingles Charles Babbage (1792 - 1871). Aunque Babbage gasto la mayor parte de su vida y de su fortuna intentando construir una “maquina analítica. La cual no tuvo un Sistema Operativo. Con el logro de Babbage, se fueron acoplando herramientas y mecanismos que permitieran un mejor funcionamiento en estas maquinas. De allí las diferentes generaciones de Sistemas Operativos que se fueron desarrollando. Los cuales tuvieron su época de reconocimiento y aporte al servicio del hombre. LA GENERACIÓN CERO (DÉCADA DE 1940) En 1940, las computadoras electrónicas digitales más nuevas no tenían sistema operativo. Las Máquinas de ese tiempo eran tan primitivas que los programas por lo regular manejaban un bit a la vez en columnas de switch's mecánicos. Los usuarios tenían completo acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano. PRIMERA GENERACIÓN (1945 - 1955): TUBOS DE VACIO Y TABLEROS ENCHUFABLES Los laboratorios de investigación de la General Motors implementaron el primer sistema operativo en los 50's, el cual generalmente corría una tarea a la vez y suavizó la transición entre tareas para obtener máxima utilización del sistema de la computadora. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunían por grupo o lotes. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual "limpiaba" y leía e inicia el trabajo siguiente. SEGUNDA GENERACIÓN (1955 - 1965): TRANSISTORES Y SISTEMAS DE LOTE La característica de la segunda generación de los sistemas operativos fue el desarrollo de los sistemas compartido con multiprogramación, y los principios del multiprocesamiento. Un programador primeramente escribiría el programa en papel (en FORTRAN o en lenguaje ensamblador) y después lo perforaría en tarjetas. La introducción del transistor a mediados de la década de 1950 cambio la imagen radicalmente. TERCERA GENERACIÓN (1965 - 1980): CIRCUITOS INTEGRADOS (CI) Y MULTIPROGRAMACIÓN En 1964, con la introducción de la familia de computadores Sistemas/360 de IBM las variadas computadoras 360 fueron diseñadas para ser compatibles con el hardware, para usar el OS/360 sistema operativo, y para ofrecer mayor poder computacional a como iba avanzando el usuario en las series. Sistemas operativos mas avanzados fueron desarrollados para servir a múltiples usuarios interactivos a la vez. CUARTA GENERACIÓN (1980 - 1990): COMPUTADORAS PERSONALES Estos sistemas constituyen el estado actual de la tecnología. El microprocesador ha hecho posible la aparición de la computadora personal. Dos sistemas operativos han dominado la escena de la computadora personal: MS-DOS, escrito por Microsoft, Inc., para la IBM PC y otras computadoras que utilizan la CPU Intel 8088 y sus sucesores, y UNIX, que domina en las computadoras personales mayores que hacen uso de CPU Motorola 68000. Los sistemas operativos que han evolucionado a través del tiempo son: Sistema Operativo Unix Sistema Operativo Solaris Sistema Operativo Linux Sistema Operativo Mac os x Sistema Operativo Windows server 2000/2003 Sistema Operativo Windows NT 3.51 y 4.0 Sistema Operativo Windows vista Sistema Operativo Windows Ce Características de los Sistemas Operativos En general, se puede decir que un Sistema Operativo tiene las siguientes características: Conveniencia. Un Sistema Operativo hace más conveniente el uso de una computadora. Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más eficiente posible. Habilidad para evolucionar. Un Sistema Operativo deberá construirse de manera que permita el desarrollo, prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. Relacionar periféricos (gestionar a través del kernel), cuando el usuario así lo requiera. Organizar datos para acceso rápido y seguro. Manejar las comunicaciones en red. Procesamiento por bytes de flujo a través del bus de datos. Facilitar las entradas y salidas de dispositivos. Técnicas de recuperación de errores. Generación de cálculos estadísticas. Permite que se puedan compartir el hardware y los datos entre los usuarios. Clasificación de los sistemas operativos Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba. Sistemas Operativos por lotes. Sistemas Operativos de tiempo real. Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea). Sistemas Operativos de tiempo compartido. Sistemas Operativos distribuidos. Estructura de los Sistemas Operativos La estructura interna de los sistemas operativos puede ser muy diferente. Se deben tener en cuenta: Metas de los usuarios: ser amigable, intuitivo, confiable, seguro, rápido. Metas del sistema: fácil de diseñar, implementar y mantener, también flexible, confiable y eficiente. Las distintas estructuras que presentan los actuales sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener son: Estructura Monolítica. Estructura Jerárquica. Máquina Virtual. Cliente-Servidor (Microkernel). CONCEPTOS Y VISION GENERAL DE LOS SISTEMAS OPERATIVOS Gestión del Procesador Para que el procesador cumpla adecuadamente con sus funciones se consideran tres niveles importantes de planificación, los cuales son: Planificación de alto nivel. Planificación de nivel intermedio. Planificación de bajo nivel. Administración de recursos: El Administrador de recursos del servidor de archivos es un conjunto de herramientas que permite a los administradores entender, controlar y administrar la cantidad y el tipo de datos almacenados en los servidores. Planeación y despacho El sistema debe ser capaz de cargar un programa a memoria y ejecutarlo. El programa deberá poder finalizar su ejecución y finalizar de forma normal o anormal (indicando un error). Los llamados al sistema (system calls) son una interfaz, provista por el núcleo, para que los procesos de usuarios accedan a los diferentes servicios que brinda el sistema operativo. Administración de Procesos Un proceso es un programa en ejecución con un estado asociado. Las distintas aplicaciones que se pueden ejecutar en un sistema operativo multitarea son procesos independientes. Cada proceso cuenta con un contador de programa (PC program counter) que determina la próxima instrucción de código a ejecutar. Gestión de memoria La memoria principal es un arreglo de palabras o bytes. Este repositorio de datos de rápido acceso es compartido por las CPU y los dispositivos, además actúa como un área de almacenamiento común a los procesadores y dispositivos del sistema dónde se almacenan programas, para su ejecución. El sistema operativo es responsable de las siguientes tareas: Mantener que partes de la memoria están siendo utilizadas y por quién. Decidir cuales procesos serán cargados a memoria cuando exista espacio de memoria disponible. Asignar y quitar espacio de memoria según sea necesario. Gestión de archivos /Entrada/Salida Un Sistema de gestión de archivos es aquel conjunto de software del sistema que proporciona servicios a usuarios y aplicaciones para el uso de archivos. Cuando se habla de archivos, habitualmente se utilizan cuatro términos: 1. Campo 2. Registro. 3. Archivo 4. Base de datos Objetivos para un sistema de gestión de archivos: Funciones de la gestión de archivos: Arquitectura de los sistemas de archivos Criterios en la elección de una organización de archivos Las cinco organizaciones fundamentales son: 1. Pilas 2. Archivos secuénciales 3. Archivos secuénciales indexados 4. Archivos indexados 5. Archivos directos o de dispersión Los sistemas operativos de tiempo real, embebidos Los sistemas embebidos y los de tiempo real son tecnologías inmersas en el diario vivir y generalmente no se identifican fácil y tampoco se definen los sistemas operativos que hacen posible su manipulación y que a la vez administran los recursos de dichos dispositivos para maximizar el desempeño. Un sistema operativo embebido es aquel que esta integrado en los circuitos de los dispositivos electrónicos, entre estos dispositivos se encuentra electrodomésticos, teléfonos móviles, radios, televisores, automóviles, lectores de códigos de barras, equipos médicos, asistentes digitales personales (PDA), etc. Características de los sistemas de tiempo real Objetivo es proporcionar rápidos tiempos de respuesta y cambios de contexto. Minimizar el tiempo en el que esta deshabilitadas las interrupciones. Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso de mayor prioridad expropia recursos. Generalmente se utiliza planificación expropiativa basada en prioridades. Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. Entre otras. Muchas aplicaciones de tiempo real son embebidas, pero no todas las aplicaciones embebidas se desempeñan en tiempo real. Mientras que aplicaciones en tiempo real siempre se adhieren a características estrictas en el tiempo, los sistemas embebidos no son tan simples de categorizar. Algunos sistemas operativos embebidos y de tiempo real son: 10.1 Windows XP Embedded Es una versión de Windows XP recortada (componetizada) para dispositivos móviles. Está pensado para arquitecturas tipo X86 y soporta practicamente el mismo software y hardware que XP. 10.2 RTLinux Es un sistema operativo en tiempo real que ejecuta Linux como un thread (hilo de ejecución) de menos prioridad que las tareas de tiempo real. Con este diseño, las tareas de tiempo real y los manejadores de interrupciones nunca se ven retrasados por operaciones que no son de tiempo real. Características de los sistemas RTLinux Sistema operativo de tiempo real estricto. Extensiones para entorno multiprocesador SMP (x86). API "próximo" al de POSIX threads. Planificador expulsivo por prioridades fijas, señales, sistema de archivos POSIX (open, close, etc.) semáforos y variables condición. Depuración de código mediante GDB (GNU Debugger). Entre otras. 10.3 ChorusOS ChorusOS es un sistema operativo para aplicaciones empotradas o en tiempo real, desarrollado por la empresa Sun Microsystems. Actualmente está liberado bajo código abierto. 10.4 VxWorks VxWorks es un sistema operativo de tiempo real, basado en Unix, vendido y fabricado por Wind River Systems. Las características distintivas de VxWorks son: La compatibilidad con POSIX. El tratamiento de memoria. Las características de multi-procesador. VxWorks se usa generalmente en sistemas empotrados. 10.5 QNX QNX (pronunciado Q.N.X. o Q-nix) es un sistema operativo de tiempo real basado en Unix que cumple con la norma POSIX. Es desarrollado principalmente para su uso en dispositivos empotrados. Desarrollado por QNX Software Systems empresa canadiense. 10.6 S. O. µlTRON µMore es un sistema operativo en tiempo real para dispositivos móviles de próxima generación que cumple las especificaciones de perfiles estándar ulTRON 4.0. Entre sus prestaciones se incluye la función Easy Power Save (ahorro de energía sencillo) y el módulo de red AVE-TCP (que cumple las especificaciones IPv6). µMore puede implementarse independientemente o en combinación con los navegadores ACCESS para la electrónica de consumo, NetFront o Compact NetFront. 10.7 Windows Embedded CE Es una versión distinta de Windows pensada para dispositivos móviles solamente y construida desde cero para este fin. Es más pequeña que XP Embeded llegando a tener como mínimo 300KB (vs 40MB de XPe) y con 700 componentes que se pueden escoger (como un lego tambien). 10.8 freertos Sistema operativo de tiempo real para los sistemas empotrados pequeños. Los programas preconfigurados de la demostración son incluidos para varias arquitecturas del microcontrolador - ARM7, CORTEZA M3, 8051, AVR (MegaAVR), x86, PIC (PicMicro PIC18), HCS12, H8S, RDC del BRAZO.。 10.9 NetBSD Es un sistema operativo de la familia Unix (en sí no se le puede llamar "un Unix", ya que esta es una marca comercial de AT&T, pero se denomina como "sistema de tipo UNIX" o "derivado de UNIX"), open source y libre, y, a noviembre de 2006, disponible para más de 50 plataformas hardware. Características de los sistemas NetBSD: Actualmente NetBSD se centra en ofrecer un sistema operativo estable, multiplataforma, seguro y orientado a la investigación. Está diseñado teniendo como prioridad escribir código de calidad y bien organizado, y teniendo muy en cuenta también el cumplimiento de estándares (POSIX, X/Open y otros más relevantes): prueba de este buen diseño es su amplia portabilidad, actualmente a 56 plataformas. Se trata de un sistema operativo maduro, producto de años de desarrollo (los orígenes de BSD están sobre el año 1977), y partiendo del sistema UNIX sexta edición. 10.10 OpenBSD Sistema operativo libre tipo Unix, multiplataforma, basado en 4.4BSD. Es un descendiente de NetBSD, con un foco especial en la seguridad y la criptografía. Este sistema operativo, se concentra en la portabilidad, cumplimiento de normas y regulaciones, corrección, seguridad proactiva y criptografía integrada. Se distribuye bajo la licencia BSD, aprobada por la OSI. Características Sistema operativo tipo UNIX. Se distingue de Linux por sus fuentes y su licencia. Libre, Funcional, Seguro. Entre otras. 10.11 Linux empotrado (Embedded Linux) Se refiere al uso del sistema operativo Linux en un sistema embebido, como por ejemplo PDA's, teléfonos móviles, robots, enrutadores / servidores, dispositivos electrónicos y aplicaciones industriales con microcontroladores y microprocesadores. CONCLUSIONES Los sistemas operativos crecieron de una manera favorable para el desarrollo de las interpretaciones manejadas por una maquina. Los Sistemas Operativos se fueron moldeando adecuadamente, permitiendo relacionarse cada vez más a las arquitecturas de las computadoras desde las cuales se ejecutaban. El desarrollo del transistor, permitió incorporar mejoras a las actividades realizadas por las computadoras, viéndose reflejado este cambio en el desempeño y estructura de estas maquinas. Cada nuevo esfuerzo por incorporar tecnología en una maquina perfecciono su funcionamiento, tal es el caso de la incorporación de el microprocesador que hizo posible la aparición de la computadora personal, viéndose beneficiados todos los usuarios que hacen uso de este know-how. A medida que se fue adentrando en el análisis e interpretación de la manera como se debía desarrollar un Sistema Operativo, se logro agregar una serie de recursos claves que este debía administrar como lo son Los procesadores y los dispositivos de E/S, el almacenamiento y los datos, que garantizan un correcto desempeño de las actividades ejecutadas por un usuario. Logros como diseñar la interfaz de usuario, realizar varias actividades a la vez, tener abiertas varias sesiones; son el resultado de varias épocas de arduo trabajo realizado por técnicos, tecnólogos e ingenieros de sistemas, que lograron interpretar las funciones adecuadas a estas actividades. A lo largo de todas las épocas de desarrollo de los Sistemas Operativos, y a raíz de su capacidad de funcionamiento, estos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba, viéndose beneficiado en definitiva el usuario que hacia uso de sus recursos. Gracias a los esfuerzos realizados por diferentes actores (gobierno, ingenieros de sistemas, programadores, etc.); el futuro de los Sistemas Operativos es promisorio y lleno de nuevos avances, tanto en sus estructuras como en su desempeño; garantizando una actividad constantemente amigable entre el y los usuarios que lo manipulan. BIBLIOGRAFIA http//www.monografias.com http://www.todobytes.net/Articulos/Historia_SO/historia_so.html http://es.wikipedia.org/wiki/Sistema_operativo http://www.mitecnologico.com/ http://www.elprisma.com/apuntes/ingenieria_de_sistemas/gestiondem emoria/ Sistemas Operativos, Una Visión Aplicada, Jesús Carretero Pérez, (McGraw-Hill) http://www.ual.es/~rguirado/so/tema6.pdf http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/Mo nogSO/SEGSO00.htm http://www.europe.redhat.com/documentation/rhl7/ref-guidees/chpartitions.php3 http://www.tau.org.ar/base/lara.pue.udlap.mx/sistoper/ http://www.microsoft.com/spanish/MSDN/estudiantes/ssoo/diseno/esar chivos.asp Sistemas Operativos Stallines - 4ta edición Sistemas Operativos – Master David Luis La Red Martínez Mastering Windows 2000 Server (Third Edition) MCSE Training Kit Microsoft Windows 2000 Professional WINDOWS SERVER 2003 (Personal) Kit de 10 DVD’s of Setup, administration and foundations advanced Windows 2000 and Windows server 2003( McGraw-Hill) Red Hat Linux Networking and System Administration, 3ª Edition, Willey Documentos Solaris, Unix, Windows Vista (pdf), Biblioteca Personal