Posteado por: eduhesc | Junio 3, 2008

Unidad 4 - Sistemas Operativos Propietarios

Unidad 4 - Sistemas Operativos Propietarios

Concepto de Software Propietario

El software no libre (también llamado software propietario, software privativo, software privado, software con propietario o software de propiedad) se refiere a cualquier programa informático en el que los usuarios tienen limitadas las posibilidades de usarlo, modificarlo o redistribuirlo (con o sin modificaciones), o cuyo código fuente no está disponible o el acceso a éste se encuentra restringido .

En el software no libre una persona física o jurídica (compañía, corporación, fundación, etc.) posee los derechos de autor sobre un software negando o no otorgando, al mismo tiempo, los derechos de usar el programa con cualquier propósito; de estudiar cómo funciona el programa y adaptarlo a las propias necesidades (donde el acceso al código fuente es una condición previa); de distribuir copias; o de mejorar el programa y hacer públicas las mejoras (para esto el acceso al código fuente es un requisito previo).

Ventajas del Software Propietario

1. Propiedad y decisión de uso del software por parte de la empresa

El desarrollo de la mayoría de software requiere importantes inversiones para su estudio y desarrollo. Este esfuerzo, de no ser protegido se haría en balde, puesto que la competencia se podría apropiar inmediatamente del producto una vez finalizado, para sus propios fines. Esto garantiza al productor ser compensado por la inversión, fomentando así el continuo desarrollo.

2. Soporte para todo tipo de hardware

Refiriéndonos por supuesto solo al mercado del sistema operativo mayoritario, que es Microsoft Windows, y no al resto de sistemas operativos de tipo Unix, que es minoritario. Se da, que el actual dominio de mercado invita a los fabricantes de dispositivos para ordenadores personales a producir drivers o hardware solo compatible con Windows. Por lo que la elección del sistema operativo de Microsoft tiene garantizado un soporte de hardware seguro.

Aunque siendo justos, habría que decir que dicho soporte por parte de los fabricantes se limita generalmente al sistema operativo actual. Las siguientes versiones de sistemas operativos no se suelen soportar, a fin de vender nuevos dispositivos.

3. Mejor acabado de la mayoría de aplicaciones

El desarrollador de software propietario, generalmente, da un mejor acabado a las aplicaciones en cuestiones, tanto de estética, como de usabilidad de la aplicación. Aunque muchas aplicaciones de software libre tienen un excelente acabado, aquí se nota de forma especial el cuidado y el esfuerzo del desarrollador de software propietario. Al fin y al cabo gana

dinero directamente con su producto y debe demostrar porqué su producto es una mejor opción.

4. Las aplicaciones número uno son propietarias

Obviamente, el actual dominio de mercado no sólo interesa a los fabricantes de hardware, sino que también a los de software. Algunas de las aplicaciones más demandadas son, según ámbitos: Microsoft Office, Nero Burning Rom, 3DStudio, etc…

5. El ocio para ordenadores personales está destinado al mercado propietario

Los desarrolladores de juegos tienen sus miras en el mercado más lucrativo, que es el de las consolas y en última instancia el de los ordenadores personales. Además, en estos últimos la practica totalidad de títulos benefician a Microsoft Windows.

6. Menor necesidad de técnicos especializados

El mejor acabado de la mayoría de sistemas de software propietario y los estándares de facto actuales permiten una simplificación del tratamiento de dichos sistemas, dando acceso a su uso y administración, a técnicos que requieren una menor formación, reduciendo costes de mantenimiento.

Esto ciertamente es una ventaja de cara a la implantación de dichos sistemas, aunque no hay que olvidar que el menor conocimiento del sistema redunda en la imposibilidad de rodear las herramientas de simple manejo para solventar errores o ampliar las posibilidades de las mismas.

7. Mayor mercado laboral actual

Como muchas de las ventajas restantes se deben al dominio del mercado, no hay que ignorar que cualquier trabajo relacionado con la informática pasará, en casi todos los casos, por conocer herramientas de software propietario.

8. Mejor protección de las obras con copyright

Las obras protegidas por copyright se ven beneficiadas por mecanismos anticopia, como el DRM y otras medidas, que palían o dificultan en cierto grado la piratería. El fenómeno de la piratería, está en constante debate sobre a quien perjudica y quien beneficia realmente (veanse cuáles son las empresas que mayores beneficios han obtenido, a pesar de ser las más pirateadas y ofreciendo la competencia en ocasiones mejores productos), aunque eso, por supuesto, es otra discusión que merece ser tratada a parte.

9. Unificación de productos

Una de las ventajas más destacables del software propietario es la toma de decisiones centralizada que se hace en torno a una línea de productos, haciendo que no se desvíe de la idea principal y generando productos funcionales y altamente compatibles.

Aquí, el software libre tiene una clara desventaja, al ser producido y tomadas las decisiones por un exceso de grupos y organismos descentralizados que trabajan en líneas paralelas y no llegan muchas veces a acuerdos entre ellos. Esto ocasiona que en algunas ocasiones haya un gran caos a programadores y usuarios finales que no saben que vías tomar. Además genera productos cuya compatibilidad deja bastante que desear.

El análisis de puntos realizado, como se puede comprobar está referido principalmente, al uso del software sobre ordenadores personales, aunque también es extensible en gran medida a productos de electrónica de consumo (routers, reproductores de vídeo, etc…), superordenadores y otros sistemas informáticos.

Evolución Historica de los Sistema Propietario (Windows)

Windows 1.0

En 1985 Microsoft publicó la primera versión de Windows, una interfaz gráfica de usuario (GUI) para su propio sistema operativo (MS-DOS) que había sido incluido en el IBM PC y ordenadores compatibles desde 1981.

La primera versión de Microsoft Windows Premium nunca fue demasiado potente ni tampoco se hizo popular. Estaba severamente limitada debido a los recursos legales de Apple, que no permitía imitaciones de sus interfaces de usuario. Por ejemplo, las ventanas sólo podían disponerse en mosaico sobre la pantalla; esto es, nunca podían solaparse u ocultarse unas a otras. Tampoco había “papelera de reciclaje” debido a que Apple creía que ellos tenían la patente de este paradigma o concepto. Ambas limitaciones fueron eliminadas cuando el recurso de Apple fue rechazado en los tribunales. Por otro lado, los programas incluidos en la primera versión eran aplicaciones “de juguete” con poco atractivo para los usuarios profesionales.

Windows 2.0

Apareció en 1987, y fue un poco más popular que la versión inicial. Gran parte de esta popularidad la obtuvo de la inclusión en forma de versión “run-time” de nuevas aplicaciones gráficas de Microsoft, Microsoft Excel y Microsoft Word para Windows. Éstas podían cargarse desde MS-DOS, ejecutando Windows a la vez que el programa, y cerrando Windows al salir de ellas. Windows 2 todavía usaba el modelo de memoria 8088 y por ello estaba limitado a 1 megabyte de memoria; sin embargo, mucha gente consiguió hacerlo funcionar bajo sistemas multitareas como DesqView.

Windows 3.0

La primera versión realmente popular de Windows fue la versión 3.0, publicada en 1990. Ésta se benefició de las mejoradas capacidades gráficas para PC de esta época, y también del microprocesador 80386, que permitía mejoras en las capacidades multitarea de las aplicaciones Windows. Esto permitiría ejecutar en modo multitarea viejas aplicaciones basadas en MS-DOS. Windows 3 convirtió al IBM PC en un serio competidor para el Apple Macintosh.

Windows 3.1 y Windows 3.11

En respuesta a la aparición de OS/2 2.0 , Microsoft desarrolló Windows 3.1, que incluía diversas pequeñas mejoras a Windows 3.0 (como las fuentes escalables TrueType), pero que consistía principalmente en soporte multimedia. Más tarde Microsoft publicó el Windows 3.11 (denominado Windows para trabajo en grupo), que incluía controladores y protocolos mejorados para las comunicaciones en red y soporte para redes punto a punto.

Windows NT

Siendo un sistema operativo completamente nuevo, Windows NT sufrió problemas de compatibilidad con el hardware y el software existentes. También necesitaba gran cantidad de recursos y éstos estaban solamente disponibles en equipos grandes y caros. Debido a esto muchos usuarios no pudieron pasarse a Windows NT. La interfaz gráfica de NT todavía estaba basada en la de Windows 3.1 que era inferior a la Workplace Shell de OS/2

Windows NT 3.1

Windows NT 3.1 (la estrategia de marketing de Microsoft era que Windows NT pareciera una continuación de Windows 3.1) apareció en su versión beta para desarrolladores en la Conferencia de Desarrolladores Profesionales de Julio de 1992 en San Francisco. Microsoft anunció en la conferencia su intención de desarrollar un sucesor para Windows NT y Chicago (que aún no había sido lanzada). Este sucesor habría de unificar ambos sistemas en uno sólo y su nombre clave era Cairo. (Visto en retrospectiva Cairo fue un proyecto más difícil de lo que Microsoft había previsto y como resultado NT y Chicago no sería unificados hasta la aparición de Windows XP). Las versiones antiguas de Windows NT se distribuían en disquettes y requerían unos elevados recursos de hardware (además de soportar relativamente poco hardware) por lo que no se difundieron demasiado hasta llegar a Windows NT 4.0 y sobre todo a Windows 2000. Por primera vez daba soporte para el sistema de ficheros NTFS.

Windows NT 3.5/3.51

Cabe destacar que la interfaz gráfica de Windows NT 3.5 y Windows 3.51 era la misma que la de sus predecesores, Windows NT 3.1 y Windows 3.1, con el Administrador de Programas. Por otra parte, Microsoft distribuyó un añadido llamado NewShell, cuyo nombre completo es “Shell Technology Preview Update”, que no era otra cosa más que una versión Beta de la nueva interfaz gráfica de Windows 95 y NT 4.0, con el botón y menú inicio, pero para Windows NT 3.5x. Su función principal era que los usuarios de Windows evaluaran el nuevo interfaz gráfico, que iba a ser presentado en Windows 95 y NT 4.0, pero como “daño colateral” le daba a Windows NT 3.5x la nueva interfaz gráfica.

Windows NT 4.0

Windows NT 4.0 presentaba varios componentes tecnológicos de vanguardia y soporte para diferentes plataformas como MIPS, ALPHA, Intel, etc. Las diferentes versiones como Workstation, Server, Terminal server, Advancer server, permitían poder adaptarlo a varias necesidades. El uso de componentes como tarjetas de sonido, modems, etc, tenían que ser diseñados específicamente para este sistema operativo.

Windows 95

Microsoft adoptó “Windows 95″ como nombre de producto para Chicago cuando fue publicado en Agosto de 1995. Chicago iba encaminado a incorporar una nueva interfaz gráfica que compitiera con la de OS/2. Aunque compartía mucho código con Windows 3.x e incluso con MS-DOS, también se pretendía introducir arquitectura de 32 bits y dar soporte a multitarea preemptiva, como OS/2 o el mismo Windows NT. Sin embargo sólo una parte de Chicago comenzó a utilizar arquitectura de 32 bits, la mayor parte siguió usando una arquitectura de 16 bits, Microsoft argumentaba que una conversión completa retrasaría demasiado la publicación de Chicago y sería demasiado costosa.

Microsoft desarrolló una nueva API para remplazar la API de Windows de 16 bits. Esta API fue denominada Win32, desde entonces Microsoft denominó a la antigua API de 16 bits como Win16. Esta API fue desarrollada en tres versiones: una para Windows NT, una para Chicago y otra llamada Win32s, que era un subconjunto de Win32 que podía ser utilizado en sistemas con Windows 3.1. de este modo Microsoft intentó asegurar algún grado de compatibilidad entre Chicago y Windows NT, aunque los dos sistemas tenían arquitecturas radicalmente diferentes

Windows 95 tenía dos grandes ventajas para el consumidor medio. Primero, aunque su interfaz todavía corría sobre MS-DOS, tenía una instalación integrada que le hacía aparecer como un solo sistema operativo (ya no se necesitaba comprar MS-DOS e instalar Windows encima). Segundo, introducía un subsistema en modo protegido que estaba especialmente escrito a procesadores 80386 o superiores, lo cual impediría que las nuevas aplicaciones Win32 dañaran el área de memoria de otras aplicaciones Win32. En este respecto Windows 95 se acercaba más a Windows NT, pero a la vez, dado que compartía código de Windows 3.x, las aplicaciones podían seguir bloqueando completamente el sistema en caso de que invadiesen el área de aplicaciones de Win16.

Tenía también como novedad el incluir soporte para la tecnología Plug&Play. Windows 95 se convirtió en el primer gran éxito de los de Redmond a nivel mundial. La evolución de Internet y la potencia de los equipos, cada vez más capaces, dio lugar a un binomio en el que Intel y Microsoft dominaban el panorama mundial con solvencia. Los fabricantes comenzaban a volcarse en este sistema a la hora de sacar sus controladores de dispositivos y, aunque con algunos problemas por incompatibilidades inevitables, el éxito de la plataforma fue absoluto.

Mas adelante fue lanzada una versión con compatibilidad para USB (1.0) que permitía ejecutarse en computadores (Ordenadores) con pocas prestaciones en Hardware. Esta versión salió al mercado en octubre de 1998

Windows 98

El 25 de Junio de 1998 llegó Windows 98. Incluía nuevos controladores de hardware y el sistema de ficheros FAT32 (también soportado por Windows 95 OSR 2 y OSR 2.5) que soportaba particiones mayores a los 2 GB permitidos por Windows 95. Dio soporte también a las nuevas tecnologías como DVD, FireWire, USB o AGP. Era novedosa también la integración del explorador de Internet en todos los ámbitos del sistema.

Pero la principal diferencia de Windows 98 sobre Windows 95 era que su núcleo había sido modificado para permitir el uso de controladores de Windows NT en Windows 9x y viceversa. Esto se consiguió con la migración de parte del núcleo de Windows NT a Windows 98 aunque éste siguiera manteniendo su arquitectura MS-DOS/Windows GUI. Esto permitió la reducción de costes de producción, dado que Windows NT y Windows 98 ahora podían utilizar casi idénticos controladores.

Windows 98 Second Edition (SE)

A principios de 1998 se desarrolló este sistema operativo, saliendo al mercado a finales de 1998 cuando Microsoft sacó al mercado Windows 98 Second Edition, cuya característica más notable era la capacidad de compartir entre varios equipos una conexión a Internet a través de una sola línea telefónica. También eliminaba gran parte de los errores producidos por Internet Explorer en el sistema. Esta versión es la más estable de todas las de esta serie, y aún se sigue utilizando en muchos equipos.

Mejorando en si dos cosas importantes:

1) El grave error de solicitud de Licencia que simplemente de puede dejar pasar por alto en la instalación cuando se copian los archivos con extensión “.CAB” (sin comillas) a la unidad de disco duro de la computadora (CPU u ordenador) en la primera versión de este sistema operativo

2) Se corrigen las extensiones de archivo y aplicaciones para una optimización y mejor administración de memoria virtual, reduciendo así los famosos mensajes de error en pantalla azul

Windows Millenium Edition (ME)

En 2000 Microsoft introdujo Windows ME que era una copia de Windows 98 con más aplicaciones añadidas. Windows ME fue un proyecto rápido de un año para rellenar el hueco entre Windows 98 y el nuevo Windows XP, y eso se notó mucho en la poca estabilidad de esta versión. En teoría Windows 2000 iba a ser la unificación entre las dos familias de Windows, la empresarial y la de hogar, pero por retrasos se lanzó este pequeño avance. En esta versión se aceleraba el inicio del sistema y oficialmente ya no se podía distinguir entre el MS-DOS y el entorno gráfico (aunque aparecieron parches que permitían volver a separarlo como se hacía en versiones anteriores).

Esta versión no traía unidad de proceso de 16 bits, centrándose únicamente en la compatibilidad con nuevo hardware de 32 bits. Como consecuencia, sólo funcionaba correctamente con los equipos nuevos que lo tenían instalado, ya que si se instalaba sobre un equipo antiguo (mediante una actualización de software) el hardware de 16 bits era más complejo de configurar, o bien no funcionaba en absoluto.

Cabe destacar que este sistema operativo fue muy poco popular por sus continuos errores y muchas desventajas de uso(bugs). Estos inconvenientes hicieron que salvo en contadas ocasiones, sus usuarios retornaran rápidamente al uso de Windows 98, o bien que dieran el salto a Windows 2000.

Windows 2000

En este mismo año vio la luz Windows 2000, una nueva versión de Windows NT muy útil para los administradores de sistemas y con una gran cantidad de servicios de red y lo más importante: admitía dispositivos Plug&Play que venían siendo un problema con Windows NT.

La familia de Windows 2000 estaba formada por varias versiones del sistema: una para las estaciones de trabajo (Windows 2000 Professional) y varias para servidores (Windows 2000 server, advanced server, datacenter server).

Windows 2000 incorporaba importantes innovaciones tecnológicas para entornos Microsoft, tanto en nuevos servicios como en la mejora de los existentes. Algunas de las características que posee son:

Almacenamiento:

* Soporte para FAT16, FAT32 y NTFS.

* Cifrado de ficheros (EFS).

* Servicio de indexación.

* Sistema de archivos distribuido (DFS).

* Nuevo sistema de backup (ASR).

* Sistema de tolerancia a fallos (RAID) con discos dinámicos (software).

Comunicaciones:

* Servicios de acceso remoto (RAS, VPN, RADIUS y Enrutamiento).

* Nueva versión de IIS con soporte para HTTP/1.1.

* Active Directory.

* Balanceo de carga (clustering)

* Servicios de instalación desatendida por red (RIS).

* Servicios nativos de Terminal Server.

Estos avances marcan un antes y un después en la historia de Microsoft.

Windows XP (eXPerience)

La unión de Windows NT/2000 y la familia de Windows 9.x se alcanzó con Windows XP puesto en venta en 2001 en su versión Home y Professional. Windows XP usa el núcleo de Windows NT. Incorpora una nueva interfaz y hace alarde de mayores capacidades multimedia. Además dispone de otras novedades como la multitarea mejorada, soporte para redes inalámbricas y asistencia remota. Se puede agregar inmediatamente de haber lanzado el último Service Pack (SP2) Microsoft diseño un sistema orientado a Empresas y Corporaciones llamado Microsoft Windows XP Corporate Edition, algo similar al Windows XP Profesional, solo que diseñado especialmente a Empresas. En el apartado multimedia, XP da un avance con la versión Media Center(2002-2005). Esta versión ofrece una interfaz de acceso fácil a todo lo relacionado con multimedia (TV, fotos, reproductor DVD, Internet…)

Windows Server 2003

Sucesor de la familia de servidores de Microsoft a Windows 2000 Server. Es la versión de Windows para servidores lanzada por Microsoft en el año 2003. Está basada en el núcleo de Windows XP, al que se le han añadido una serie de servicios, y se le han bloqueado algunas de sus características (para mejorar el rendimiento, o simplemente porque no serán usadas).

Windows Vista

Windows Vista apareció en el mercado el 30 de enero de 2007. Cabe destacar los continuos retrasos en las fechas de entrega del sistema operativo. Inicialmente se anunció su salida al mercado a inicios-mediados de 2006, posteriormente y debido a problemas durante el proceso de desarrollo, se retrasó su salida hasta finales de 2006. El último retraso traslado la fecha hasta finales de enero de 2007. Estos continuos retrasos han llevado a Microsoft a tomar diversas medidas para minimizar los gastos extras derivados de los retrasos. Por ejemplo, en Argentina, se podrá comprar Windows Vista con un “ticket” que la persona adquiere al momento de comprar un nuevo 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. También cabe destacar que Windows Vista trae una nueva interfaz grafica llamada Aero que es una evolución de la interfaz gráfica denominada Luna de Windows XP.

Windows Server 2008

Al igual que su sucesor, Windows Server 2003 se basaba en la ultima version del SO domestica publicada. Éste se basa en Windows Vista en cuanto a su interfaz Aero mucho mas amigable y sencilla, y en Windows Server 2003 SP2.

1984: Sistema 1

Apple - Sistema 1El Sistema 1 tenía escritorio, ventanas, iconos, mouse, menús y scrollbars.

El basurero “Trash” funcionaba como un tobogán de basura, todo desaparecía luego de reiniciar el ordenador, no se podía trabajar en dos aplicaciones al mismo tiempo, solo en una, ya que la memoria virtual no existía.

En el Sistema 1 era imposible crear un folder dentro de otro folder, de hecho todos los archivos eran guardados en la misma dirección del disco, se creaba una nota en la tabla de archivos para que cada archivo estuviera en su respectivo folder y así el Finder podría parecer como que el archivo estaba en su folder.

Luego el Sistema 1.1 agregó la caja de avisos de diálogo, también el comando para limpiar tu Mac y algunos implementos para la velocidad.

1985: Sistema 2

El Sistema 2 fue notable en mejoras. Incrementó la velocidad del Finder haciéndolo un veinte por ciento más rápido, los comandos de regresar y cerrar se eliminaros. Fueron agregadas más opciones como: crear nuevos folders, apagar, la impresora de escritorio y los ítems eran listados de forma vertical con un pequeño icono. Los discos o unidades podían ser arrastrados al icono de basura y podían ser extraídos.

1986: Sistema 3

Apple - Sistema 3En el Sistema 3 el Finder fue mejorado y más rápido, el orden de los archivos HFS (Hierarchical File System) fue reemplazado por el nuevo sistema de Macintosh MFS (Macintosh File System) de los Sistemas 1 y 2.

Los folders eran reales y se podían crear folders dentro de folders. Los iconos con Zoom fueron agregados en la parte inferior derecha en la ventana dentro del Dashboard, haciendo clic sobre estos se podía cambiar el tamaño para ajustar los contenidos del folder si era posible.

Haciendo clic nuevamente se podía hacer que la ventana regresara a su tamaño normal. El icono del basurero sobresalía cuando algo era puesto sobre este y las líneas punteadas en dirección contraria.

  • El Sistema 3.2, se corrigieron treinta errores, la calculadora fue actualizada así que el teclado numérico en pantalla se parecía al teclado numérico en el teclado.
  • El Sistema 3.3, fue agregado por AppleShare el antiguo compartidor de archivos de Macintosh.

1987: Sistema 4

Apple - Sistema 4El Sistema 4 fue introducido como Macintosh SE y Macintosh II. A este sistema se le agregó múltiple soporte al monitor.

  • El Sistema 4.1, soportaba discos de 32+ MB, se le implemento el Finder múltiple, los usuarios podían cambiar entre el Finder, que solo soportaba un programa y el Finder múltiple que soportaba múltiples programas al mismo tiempo.Ahora el Finder mostraba cuanta memoria utilizaba cada programa, también se le agregó un Panel de control configurable.
  • El Sistema 4.3, fue un sistema actualizado, se le arreglaron algunos errores y controladores de impresora.

1988: Sistema 6

En el Sistema 6 se agregaron colores, aun así el Finder no tenía color, aunque las máquinas ya eran capaces. A la opción de “Borrar Disco” se le agrego un botón para poder cancelar esta acción, también fue agregada la opción de mostrar el número de versión del archivo.

Fue así también agregada una notificación en el monitor permitiendo a los programas notificar a lo usuario por medio de la barra de menú si ellos necesitaban conectarlo.

  • El Sistema 6.0.1-6.0.8, simplemente se agregados algunos soportes para los nuevos modelos que ellos iban lanzando.

1990: Sistema 7

Apple - Sistema 7El Sistema 7 fue el gran cambio de software para esta época, se eliminó el Finder y el Finder múltiple. El Sistema 7 ya sólo tenía el Finder múltiple permitiendo hacer muchas tareas simultáneamente.

La memoria también tuvo un gran cambio a 32b, esto permitió a las Macs usar mas de 8 MB de Ram, en el sistema operativo, esto fue también implementado en el Sistema 7.

El Networking por Apple Talk y compartir archivos por AppleShare fue agregado al sistema operativo, como opción adicional. El software QuickTime multimedia también fue trabajado en este sistema, pero estaba disponible como un software extra. El Sistema 7 agregó muchas características que iban a ser construidas en el nuevo sistema Mac OS X.

Un menú fue agregado en la parte inferior derecha del Dashboard, que mostraba la lista de los programas que estaban siendo utilizados en ese momento y permitía a los usuarios cambiarse entre ellos. Luego de la aplicación de menú fue agregado el menú de “Ayuda”, el “basurero” fue cambiado a un verdadero folder permitiendo eliminar los archivos hasta que se seleccionaba la opción de “Vaciar” el basurero.

Fue implementada la opción de arrastrar que permitía llevar un texto de un programa a otro sin necesidad de copiar y pegar. En el Sistema 7 el buscador finalmente tomo una ventaja en los objetos con color, haciendo que los elementos en la interfaz se vieran como en 3D.

  • El Sistema 7.0.1p Performa, fue lanzado junto con el Sistema 7.0.1’s, arreglando algunas características especiales para usuarios principiantes de este Sistema.
  • El Sistema 7.1, se le implemento un folder de Fuentes así que podían ser fácilmente agregados o removidos, luego estos fueron agregados y utilizados por el mismo Sistema.
  • El Sistema 7.1.1, también conocido como Sistema 7 Pro, Incorporando AppleScript, QuickTime, y PowerTalk, estos estaban disponibles como extras del sistema.
  • El Sistema 7.1.2, fue creado para soportar Chips de microprocesadores.
  • El Sistema 7.5, integraba todas las características del Performa, también agregaba mucha más información de la Guía de ayuda del sistema de Apple (Apple Guide help system). Finalmente en la pantalla de arranque existió una pequeña barra.

A pesar de que Mac había trabajado durante once años llegando hasta el Sistema 7.5, esto mostraba claramente de que Mac necesitaba completamente una nueva creación del Sistema Operativo.

Mac OS 7.6, fue el primer sistema operativo lanzado con una estrategia de Apple para luego ser actualizado como el actual Mac OS cada 6 meses, hasta que Rhapsody/Mac OS X fuera finalizado. Fueron corregidos algunos errores vía Mac Os 7.6.1

1997: Mac OS 8

Apples - Sistema 8Mac OS 8 incluyó otra renovación al Finder que podía hacer más cosas al mismo tiempo, dando la opción de controlar múltiples aplicaciones al mismo tiempo con un mejor desempeño de las computadoras con procesador.

La apariencia del Finder fue renovada para que tuviera un mejor aspecto 3D, también podía ser personalizada. El Web Sharing permitía a los usuario hospedar páginas en sus computadoras.

  • Mac OS 8.1, fue mas notable para el HFS+ (Esta improvisada versión del Sistema de archivos jerárquica que fue introducido en el Sistema 3) liberaba gran cantidad de espacio (Cientos de Megabytes) en el disco duro despejaba mas de 1 GB. Mac OS 8.1. También fue la ultima versión que soportaba Macs de 68K, todas las versiones anteriores eran solo para PowerPC.
  • Mac OS 8.5, introdujo Sherlock un avanzado programa de búsqueda que trabaja en el disco local, servicios de redes y la Internet.
  • Mac OS 8.6, agregó una opción de contenido a Sherlock aumentando su forma de administración y un agregado soporte de USB y FireWire.

1999: Mac OS 9

Apple - Sistema 9La opción de tener varios usuarios en una Mac fue agregada en esta versión, permitía a los usuarios ingresar y tener sus propias configuraciones. AppleTalk sobre TCP/IP fue también implementado.

Software Update permitía a los usuarios tener las actualizaciones de softwares fuera de Internet, y podía informar a los usuarios de las nuevas actualizaciones cuando ellos salían.

  • Mac OS 9.0.2 y 9.0.3, llegaron con sus modelos específicos, Mac OS 9.0.4 unificó todo nuevamente y es la única versión del Classic Mac OS compatible con el Entorno Classic del Mac OS X Public Beta.
  • Mac OS 9.1, agregó estabilidad y la ventana de menú. Esto es lo mínimo del Classic en Mac OS X 10.0 y 10.1.
  • Mac OS 9.2, estaba disponible como pre-instalación del sistema iniciando con “Quicksilver” Power Mac G4s lanzado en el verano del 2001.

Mac OS X

Apple MacOSXEsta basado fuertemente en las PowerPC-port de OpenStep. Por eso Mac OS X hereda la memoria y procesador de Mach’s y el driver del dispositivo de la interfaz, BSD’s POSIX - UNIX Protocolo del programa que soporta y trabaja en interfaz de redes, también algunos elementos de la interfaz de NeXT’s.

Mac OS X, hoy en día este sistema operativo esta virtualmente en todas las Mac’s, y fue trabajado por una década para poder obtener el éxito que tiene ahora.

2001: Mac OS X 10.0 “Cheetah”

Apple - Sistema10Mac OS X 10.0 fue lanzada el 24 de marzo del 2001, este incorporaba muchas características que fueron agregadas por las personas que colaboraron en Mac OS X Public Beta.

Mac OS X 10.0 también contenía todas características de un sistema operativo moderno, protegía la memoria, y así los programas no podían utilizar la información de otros programas, de esta forma el procesador no se bloqueaba, los drivers de los dispositivos podían ser cargados o descargados si eran necesario.

Mac OS X también agrego Cocoa, derivado de NeXT’s un muy sofisticado y desarrollado ambiente OpenSTEP. Existían algunos asuntos pendientes, como el original Mac OS. Los usuarios de Mac OS X iniciaron a crear una gran queja sobre nombre que tenia este sistema operativo “Cheetah” que era muy salvaje e inapropiado.

El ambiente Classic en 10.0, también era mejor que el Public Beta, aun tenia una extraña compatibilidad de problemas y conducta caprichosa. Los interfaz de Mac OS X se veía muy parecida a la interfaz de Mac OS y los usuarios creían que tenían las mismas características sin embargo no fue así y tuvieron que aprender nuevos hábitos y dejar los viejos.

2001: Mac OS X 10.1 “Puma”

Mac OS 10.1 fue lanzado luego de un año del 10.0, e incorporaba mejor desempeño especialmente en Macs G3. Las versiones 10.1.1, 10.1.2, 10.1.3, 10.1.4, y 10.1.5 todas tenían mejora en los errores, y actualizaciones en sus componentes. La mayoría de open source como utilidades de UNIX fueron incluidas en las Mac OS X y drivers adicionales para poder soportar mas dispositivos.

2002: Mac OS X 10.2 “Jaguar”

Apple JaguarEl 25 de agosto de 2002 fue lanzada esta versión y Apple prosiguió con la andadura de su sistema operativo con el lanzamiento de Mac OS X v10.2 “Jaguar”) y que contaba con un nuevo incremento en su rendimiento, un nuevo y depurado look y más de 150 mejoras, entre estas estaba el mayor soporte para redes de Microsoft Windows, Quartz Extreme para la composición de gráficos sea procesada directamente por la tarjeta de video y un filtro contra spam.

Apple Address Book para almacenar la información de contactos, tambien agregaba el sistema de red Rendezvous. iChat que consistía en un programa de chateo con soporte de AOL Instant Messenger, incluía así un renovado Finder con búsquedas integradas en cada ventana.

2003: Mac OS X 10.3 “Panther”

Apple - PantherMac OS X v10.3 “Panther” se lanzó el 24 de octubre de 2003. Además de tener un rendimiento mucho mayor, incorporó la mayor actualización en la interfaz de usuario, y muchas mejoras que Jaguar el año anterior. Esta versión ya no era compatible en los antiguos modelos G3.

Algunas de las mejoras de esta versión es que el Finder fue actualizado e incorpora una interfaz metálica y búsqueda rápida. Exposé permitía una nueva forma de manipular ventanas, también incorporo el Cambio Rápido de Usuarios, que permite tener sesiones con diferentes usuarios abiertas al mismo tiempo y pasar de una a otra rápidamente.

Ahora esta nueva versión incluía soporte integrado de fax. FileVault era un Sistema de cifrado en tiempo real del directorio privado de cada usuario. Incrementaba velocidad en todo el sistema con un mayor soporte para los G5.

2005: Mac OS X 10.4 “Tiger”

Mac OS X v10.4 “Tiger” fue lanzado el 29 de abril de 2005 y fue la versión disponible más reciente, contenía más de 200 nuevas mejoras, pero como sucedió con el lanzamiento de Panther, algunas máquinas antiguas no podían soportarlo, en particular, cualquier equipo Apple que no contara con conexión FireWire no podía ser soportado en Tiger.

Esta versión incluya nuevas características como Spotlight un sistema de búsqueda basado en contenidos y metadatos, así también Dashboard se encontraban widgets, unas miniaplicaciones que permiten realizar tareas comunes y ofrecen acceso instantáneo a la información.

QuickTime 7 era la nueva versión que incluía soporte para H.264 y un interfaz completamente rediseñada. Safari como una nueva versión del navegador por defecto del sistema incorpora soporte para RSS, mayor velocidad y seguridad, etc.Esta versión tenía soporte de memoria de 64 bits para los nuevos G5, usando el sistema LP64.

2006: Mac OS X 10.5 “Leopard”

Posteado por: eduhesc | Mayo 27, 2008

Evaluaciones

Taller 20% Examen 20% Trabajo 20% Taller 20% Proyecto 20% Nota Definitiva
6.267.508 17 17 20 16 19 18
10.110.447 16 15 19 17 19 17
11.163.266 16 8 20 18 20 16
12.386.764 15 3
14.098.126 16 15 19 17 13
14.687.486 15 20 17 17 20 18
15.577.610 17 10 17 16 18 16
16.229.501 15 18 19 16 19 17
16.671.561 18 7 12 16 18 14
16.819.055 18 17 16 16 13
17.118.440 17 15 17 16 19 17
17.119.673 15 13 16 16 19 16
17.147.074 15 17 19 16 20 17
17.652.204 15 6 16 17 11
17.907.273 13 12 12 13 19 14
18.441.708 18 17 20 20 19 19
18.555.628 17 9 12 8
18.556.411 15 16 16 17 19 17
18.556.990 18 20 20 20 19 19
18.753.316 16 9 20 18 19 16
18.954.417 15 19 19 16 19 18
19.023.728 15 15 16 18 13
19.154.277 17 14 19 16 18 17
19.155.535 15 12 13 18 12
19.399.723 15 11 16 19 12
20.593.369 17 9 17 19 12

Proceso

Un proceso es básicamente un programa en ejecución y, de una forma un poco más precisa, como la unidad de procesamiento gestionada por el sistema operativo. El sistema operativo mantiene por cada proceso una serie de estructuras de información que permiten identificar las características de éste, así como los recursos que tiene asignados. Cada proceso tiene asociado un espacio de direcciones, una lista de posiciones de memoria desde algún mínimo (usualmente O) hasta algún máximo, que el proceso puede leer y escribir. El espacio de direcciones contiene el programa ejecutable, los datos del programa, y su pila. A cada proceso también se asocia un conjunto de registros, que incluyen el contador del programa, el apuntador de la pila y otros registros de hardware, así como toda la demás información necesaria para ejecutar el program a.

Estado de los Procesos

  • Nuevo. (New) El Proceso se esta Creando.

  • Ejecución. (Running) En este estado está el proceso que está siendo ejecutado por el procesador, es decir, que está en fase de procesamiento. En esta fase el estado del proceso reside en los registros del procesador.

  • Bloqueado o Esperando. (Waiting) Un proceso bloqueado está esperando a que ocurra un evento y no puede seguir ejecutando hasta que suceda el evento. Una situación típica de proceso bloqueado se produce cuando el proceso solicita una operación de E/S. Hasta que no termina esta operación, el proceso queda bloqueado. En esta fase, el estado del proceso reside en el BCP.

  • Listo. (Ready) Un proceso está listo para ejecutar cuando puede entrar en fase de procesamiento. Dado que puede haber varios procesos en este estado, una de las tareas del sistema operativo será seleccionar aquel que debe pasar a ejecución. El módulo del sistema operativo que toma esta decisión se denomina planificador. En esta fase, el estado del proceso reside en el BCP.

  • Terminado. (Terminated). El proceso a terminado su ejecución.

  • Estados suspendidos

Además de los tres estados básicos de ejecución, listo y bloqueado, los procesos pueden estar en los estados de espera y de suspendido. El diagrama de estados completo de un proceso se representa en la Figura siguiente. Los procesos entran en el sistema porque lo solicita un proceso de usuario o porque está prevista su ejecución hatch. Es frecuente tener una lista de procesos batch en espera para ser ejecutados cuando se pueda. El sistema operativo ha de ir analizando dicha lista para lanzar la ejecución de los procesos a medida que disponga de los recursos necesarios. Los procesos salen del sistema cuando mueren, es decir, al ejecutar el servicio correspondiente o al producir algún error irrecuperable.

Bloque de Control de Procesos

Cada proceso se representa en el sistema operativo con un bloque de control de proceso (PCB. Process control block), también llamado bloque de control de tarea.

El Bloque de control del proceso ó BCP o en inglés PCB (Process Control Block) es un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular. Cada vez que se crea un proceso el sistema operativo crea el BCP correspondiente para que sirva como descripción en tiempo de ejecución durante toda la vida del proceso.

Cuando el proceso termina, su BCP es borrado y el registro puede ser utilizado para otros procesos. Un proceso resulta conocido para el sistema operativo y por tanto elegible para competir por los recursos del sistema sólo cuando existe un BCP activo asociado a él. El bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecución del proceso y de la utilización de recursos. La información almacenada en un BCP incluye típicamente algunos o todos los campos siguientes:

  • Identificación de Proceso (Process Identificator -PID-, de sus siglas en Inglés): Los identificadores numéricos que se pueden guardar en el bloque de control de proceso incluyen:

    • Identificador de este proceso

    • Identificador del proceso que creó a este proceso (el proceso padre)

    • Identificador del usuario

  • Registros Visibles para el Usuario Un registro visible para el usuario es aquél al que puede hacerse referencia por medio del lenguaje máquina que ejecuta el procesador. Normalmente, existen de 8 a 32 de estos registros, aunque algunas implementaciones RISC tienen más de 100.

  • Registros de Control y de Estado: Hay varios registros del procesador que se emplean para controlar su funcinamiento. Entre estos se incluyen:

      • Contador de programa: Contiene la dirección de la próxima instrucción a ser tratada.

      • Códigos de condición: Muestran el resultado de la operación aritmética o lógica más reciente (signo, cero, acarreo, igualdad, desbordamiento).

      • Información de estado: Incluye los indicadores de habilitación o inhabilitación de interrupciones y el modo de ejecución.

  • Punteros de pila: Cada proceso tiene una o más pilas LIFO de sistema asociadas. Las pilas se utilizan para almacenar los parámetros y las direcciones de retorno de los procedimientos y de las llamadas al sistema. El puntero de pila siempre apunta a la cima de la pila.

  • Información de Planificación y de Estado: Es la información que se necesita por el sistema operativo para llevar a cabo sus funciones de planificación. Los elementos típicos de esta información son los siguientes:

      • Estado del proceso: Define la disposición del proceso para ser planificado para ejecutar (en ejecución, listo, esperando, detenido).

      • Prioridad: Se puede usar uno o más campos para describir la prioridad de planificación de los procesos. En algunos sistemas se necesitan varios valores (por omisión, actual, la más alta permitida).

      • Información de planificación: Ésta dependerá del algoritmo de planificación utilizado. Como ejemplos se tienen la cantidad de tiempo que el proceso ha estado esperando y la cantidad de tiempo que el proceso ejecutó la última vez.

      • Suceso: La identidad del suceso que el proceso está esperando antes de poder reanudarse.

  • Estructuración de datos: Un proceso puede estar enlazado con otros procesos en una cola, un anillo o alguna otra estructura. Por ejemplo, todos los procesos que están en estado de espera de un nivel determinado de prioridad pueden estar enlazados en una cola. Un proceso puede mostrar una relación padre-hijo (creador-creado) con otro proceso. El bloque de control de proceso puede contener punteros a otros procesos para dar soporte a estas estructuras.

  • Comunicación entre Procesos: Puede haber varios indicadores, señales y mensajes asociados con la comunicación entre dos procesos independientes. Una parte de esta información o toda ella se puede guardar en el bloque de control de proceso.

  • Privilegios de los procesos: A los procesos se les otorgan privilegios en términos de la memoria a la que pueden acceder y el tipo de instrucciones que pueden ejecutar. Además, también se pueden aplicar privilegios al uso de los servicios y utilidades del sistema.

  • Gestión de Memoria: Esta sección puede incluir punteros a las tablas de páginas y/o segmentos que describen la memoria virtual asignada al proceso.

  • Propiedad de los Recursos y Utilización: Se pueden indicar los recursos controlados por el proceso, tales como los archivos abiertos. También se puede incluir un histórico de la utilización del procesador o de otros recursos; esta información puede ser necesaria para el planificador.

Esta lista es simplemente indicativa, cada sistema operativo tiene su propio diseño de BCP, con el conjunto de metadatos necesarios para la administración. Puede medir desde 32 bits a 1024. Su denominación cambia según el sistema operativo.

Algunos sistemas de multiprogramación incluyen información de mantenimiento con el propósito de facturar a los usuarios individuales el tiempo de procesador, el almacenamiento, las operaciones de E/S y otras utilizaciones de recursos.

Una vez creado, el BCP se rellena con los atributos definidos como parámetros que se hallan en la plantilla del proceso o que son especificados como parámetros de la llamada al sistema operativo crear_proceso. En ese momento el sistema operativo suele asignar valores a otros campos. Por ejemplo, cuando se crea un proceso, los registros e indicadores hardware se fijan a los valores proporcionados por el cargador/enlazador. Cada vez que un proceso queda suspendido, el contenido de los registros del procesador es generalmente guardado en la pila, y el puntero al marco de la pila en cuestión se almacena en el BCP. De este modo los valores de los registros son restaurados cuando el proceso es seleccionado para ejecutarse nuevamente.

Planificación de Procesos

El objetivo de la planificación de procesos y procesos ligeros es el reparto del tiempo de procesador entre los procesos que pueden ejecutar. El planificador es el módulo del sistema operativo que realiza la función de seleccionar el proceso en estado de listo que pasa a estado de ejecución, mientras que el activador es el módulo que pone en ejecución el proceso planificado.

Los sistemas pueden incluir varios niveles de planificación de procesos.

La planificación a largo plazo tiene por objetivo añadir nuevos procesos al sistema, tomándolos de la lista de espera. Estos procesos son procesos de tipo batch, en los que no importa el instante preciso en el que se ejecuten (siempre que se cumplan ciertos límites de espera).

La planificación a medio plazo trata la suspensión de procesos. Es la que decide qué procesos pasan a suspendido y cuáles dejan de estar suspendidos. Añade o elimina procesos de memoria principal modificando, por tanto, el grado de multiprogramación.

La planificación a corto plazo se encarga de seleccionar el proceso en estado de listo que pasa a estado de ejecución. Es, por tanto, la que asigna el procesador. También es importante la planificación de entrada/salida. Esta planificación decide el orden en que se ejecutan las operaciones de entrada/salida que están encoladas para cada periférico.

Planificación expropiativa es la estrategia de permitir que procesos lógicamente ejecutables se suspendan temporalmente y contrasta con el método de ejecución hasta terminar de los primeros sistemas por lotes.

Planificación No Expropiativa es la estrategia de no detener o suspender la ejecución hasta terminar.

En la época de los sistemas por lote con entradas en forma de imágenes de tarjetas en una cinta magnética, el algoritmo de planificación era sencillo: simplemente se ejecutaba el siguiente trabajo de la cinta. En los sistemas de tiempo compartido, el algoritmo de planificación es más complejo, pues es

común que haya varios usuarios en espera de ser atendidos, y también puede haber uno o más flujos por lotes (p. ej., en una compañía de seguros, para procesar reclamaciones). Incluso en las computadoras personales, puede haber varios procesos iniciados por el usuario compitiendo por la CPU, sin mencionar los trabajos de segundo plano, como los demonios de red o de correo electrónico que envían o reciben mensajes.

Objetivos de la Planificación

  • Reparto equitativo del procesador.

  • Eficiencia (optimizar el uso del procesador).

  • Menor tiempo de respuesta en uso interactivo.

  • Menor tiempo de espera en lotes (batch).

  • Mayor número de trabajos por unidad de tiempo (batch).

  • Cumplir los plazos de ejecución de un sistema de tiempo real.

Algoritmo de Planificación

Planificación round robin (de torneo)

Examinemos ahora algunos algoritmos de planificación específicos. Uno de los más antiguos, sencillos,

equitativos y ampliamente utilizados es el de round robin. A cada proceso se le asigna un intervalo de tiempo, llamado cuanto, durante el cual se le permite ejecutarse. Si el proceso todavía se está ejecutando al expirar su cuanto, el sistema operativo se apropia de la CPU y se la da a otro proceso. Si el proceso se bloquea o termina antes de expirar el cuanto, la conmutación de CPU naturalmente se efectúa cuando el proceso se bloquee. El round robin es fácil de implementar. Todo lo que el planificador tiene que hacer es mantener una lista de procesos ejecutables. Cuando un proceso gasta su cuanto, se le coloca al final de la lista.

La única cuestión interesante cuando se usa el round robin es la duración del cuanto. La conmutación de un proceso a otro requiere cierto tiempo para llevar a cabo las tareas administrativas: guardar y cargar registros y mapas de memoria, actualizar diversas tablas y listas, etc.

FIFO

En este caso, la cola de procesos en estado de listo está ordenada de acuerdo al instante en que los procesos pasan al estado de listo. Los que llevan más tiempo esperando están más cerca de la cabecera.

El algoritmo es sencillo, puesto que consiste en tomar para ejecutar al proceso de la cabecera de la cola. No se plantea expulsión, por lo que el proceso ejecuta hasta que realiza una llamada bloqueante al sistema operativo. Es aplicable a los sistemas batch, pero no a los interactivos.

Prioridades

En el algoritmo de prioridades se selecciona para ejecutar el proceso en estado de listo que tenga la máxima prioridad. Cuando las prioridades son fijas puede surgir el problema de la inanición, que implica que un proceso puede estar esperando indefinidamente sin llegar a ejecutar. Esto ocurrirá si van apareciendo siempre procesos de mayor prioridad que estén en estado de listo. Para evitar este problema, se puede añadir un mecanismo de envejecimiento, que se encargue dc aumentar la prioridad a los procesos que lleven un determinado tiempo esperando a ser ejecutados. Por ejemplo, suponiendo que la mayor prioridad es la 0, un proceso de prioridad 22 que lleve más de X ms esperando en estado de listo pasaría a prioridad 21, si pasados otros X ms siguiese sin ejecutar pasaría a prioridad 20 y así sucesivamente. Una vez que haya ejecutado volverá a tomar su prioridad normal de 22. Dado que puede haber varios procesos listos con el mismo nivel de prioridad, es necesario utilizar otro algoritmo para decidir entre ellos. Se podría utilizar, por ejemplo, un cíclico, si el sistema es interactivo o un FIFO si es hatch.

Primero el trabajo más corto

Este algoritmo exige conocer a priori el tiempo de ejecución de los procesos, por lo que es aplicable a trabajos batch repetitivos cuyo comportamiento se tenga analizado. El algoritmo consiste en seleccionar para ejecución al proceso listo con menor tiempo de ejecución. No se plantea expulsión, por lo que el proceso sigue ejecutándose mientras lo desee.

La ventaja de este algoritmo es que produce el menor tiempo de respuesta, pero a costa de penalizar los trabajos de mayor tiempo de ejecución. También puede sufrir de inanición, puesto que, en el caso de que estén continuamente apareciendo procesos con tiempo de ejecución pequeño, un proceso largo puede no llegar a ejecutar.

Aleatorio o lotería

Este algoritmo consiste en elegir al azar el proceso a ejecutar. Se puede basar en un generador de números pseudoaleatorios.

Planificación de sistemas de tiempo real

Los sistemas de tiempo real se caracterizan porque los procesos tienen que ejecutar en instantes predeterminados.

Se pueden diferenciar dos tipos de procesos de tiempo real:

  • a plazo fijo

  • periódico.

La diferencia estriba en que los de plazo fijo tienen que ejecutar una vez, en un instante determinado, mientras que los periódicos deben ejecutar de forma repetitiva cada cierto tiempo.

Como muestra la Figura, se asocia a cada proceso el instante en el que debe ejecutar. Los procesos que no han alcanzado su tiempo de ejecución están en una cola de espera, mientras que los que han alcanzado el tiempo de ejecución pasan a las colas de listo para ejecutar. La planificación consiste en seleccionar de entre estos últimos el proceso a ejecutar.

La planificación de tiempo real está basada en el reloj de tiempo de la computadora y su objetivo es conseguir que no se retrase la ejecución de los procesos. En los denominados sistemas de tiempo real críticos, los procesos tienen asignada una franja de tiempo en la cual deben ejecutar y. en ningún caso, se ha de rebasar el tiempo máximo sin que el proceso complete su ejecución.

Posteado por: eduhesc | Mayo 11, 2008

Unidad 2: Arquitectura y Tipos de Sistemas Operativos

Sistemas de tiempo real

Una forma de sistema operativo de propósito especial es el sistema de tiempo real. Se usa un sistema de tiempo real cuando los requisitos de tiempo de la operación de un procesador o del flujo de datos son estrictos; por ello, a menudo se utilizan como dispositivos de control de aplicaciones dedicadas. Los sensores envían datos al computador, el cual debe analizar estos datos y posiblemente ajustar controles a fin de modificar las entradas de los sensores. Los sistemas que controlan experimentos científicos, los que producen imágenes médicas, los de control industrial y algunos sistemas de exhibición son sistemas de tiempo real. Esta clasificación también incluye algunos sistemas de inyección de combustible para motores de automóviles, controladores de aparatos domésticos y sistemas de armamentos. Un sistema operativo de tiempo real tiene restricciones de tiempo fijas bien definidas. El procesamiento debe efectuarse dentro de los intervalos definidos, o el sistema fallará. Por ejemplo, no es conveniente ordenar a un brazo robot que se detenga después de haber chocado con el automóvil que está construyendo. Se considera que un sistema de tiempo real está funcionando correctamente sólo si produce el resultado correcto dentro de los intervalos de tiempo estipulados. Podemos contrastar este requisito con un con un sistema de tiempo compartido, en el que es deseable (pero no obligatorio) responder rápidamente, o con un sistema por lotes, en el que tal vez no haya restricciones de tiempo.

Hay dos tipos de sistemas de tiempo real:

  1. Un sistema de tiempo real duro garantiza que las tareas críticas se terminarán a tiempo. Este objetivo requiere que todos los retardos del sistema estén limitados, desde la obtención de datos almacenados hasta el tiempo que el sistema operativo tarda en atender cada solicitud que se le presenta. Tales restricciones de tiempo determinan los recursos que están disponibles en este tipo de sistemas. El almacenamiento secundario de cualquier índole suele estar limitado o ausente, y los datos se almacenan de preferencia en memoria de corto plazo o en memoria sólo de lectura (ROM, read-only memory). La ROM se encuentra en dispositivos de almacenamiento no volátiles que conservan su contenido aun en caso de fallar el suministro de electricidad; casi todos los demás tipos de memoria son volátiles. También está ausente la mayor parte de las funciones avanzadas de los sistemas operativos, ya que tienden a separar al usuario aún más del hardware, y tal separación causa incertidumbre acerca del tiempo que una operación tarda. Por ejemplo, los sistemas de tiempo real casi nunca tiene memoria virtual. Por ello, los sistemas de tiempo real duros son incompatibles con el funcionamiento de los sistemas de tiempo compartido, y no pueden combinarse con ellos. Puesto que ninguno de los sistemas operativos de propósito general existentes apoya la funcionalidad de tiempo real dura.

  2. Un tipo menos restrictivo de sistema de tiempo real es el de tiempo real blando, en ql que una tarea de tiempo real crítica goza de prioridad respecto a otras tareas, y conserva es prioridad hasta que se lleva a cabo. Al igual que en los sistemas de tiempo real duros, es preciso limitar los retardos del núcleo; no es posible mantener a una tarea de tiempo real esperando indefinidamente a que el núcleo la ejecute. El tiempo real blando es una meta alcanzable que puede combinarse con otros tipos de sistemas. No obstante, los sistemas de tiempo real blandos tiene una utilidad más limitada que los duros. En vista de que no apoyan el cumplimiento estricto de plazos, es riesgoso utilizarlos en control industrial y robótica, aunque hay varias áreas en las que pueden ser útiles, como multimedia, realidad virtual y proyectos científicos avanzados como como la exploración submarina y planetaria. Estos sistemas requieren características avanzadas de los sistemas operativos que no pueden incluirse en los sistemas de tiempo real duro. La proliferación del uso de funciones de tiempo real blando ha hecho que se incluyan en la mayor parte de los sistemas operativos actuales, incluidas versiones importantes de UNIX.

Sistemas multiprogramación

Aún con el secuenciamiento automático de los trabajos ofrecido por un sistema operativo sencillo por lotes, el procesador está desocupado a menudo. El problema es que los dispositivos de E/S son lentos comparados con el procesador. La figura 2.5 detalla un cálculo representativo. Los números corresponden a un programa que procesa un archivo de registros y ejecuta, en promedio, 100 instrucciones de máquina por cada registro. En este ejemplo, el computador gasta más del 96% del tiempo esperando a que los dispositivos de E/S terminen de transferir sus datos. La figura 2.6 ilustra esta situación. El procesador gasta parte del tiempo ejecutando hasta que encuentra una instrucción de E/S. Entonces debe esperar a que concluya la instrucción de E/S antes de continuar.

Esta ineficiencia no es necesaria. Se sabe que hay memoria suficiente para almacenar el sistema operativo (el monitor residente) y un programa de usuario. Supóngase que hay espacio suficiente para el sistema operativo y tres programas usuarios. Ahora, cuando un trabajo necesite esperar una E/S, el procesador puede cambiar al otro trabajo, que probablemente no estará esperando a la E/S (figura 2.6c). Además, se podría ampliar la memoria para almacenar tres, cuatro o más programas y conmutar entre todos ellos (figura 2.6c). Este proceso es conocido como multiprogramador o multitarea. Éste es el punto central de los sistemas operativos modernos.

Para ilustrar el beneficio de la multiprogramación, considérese un ejemplo basado en uno de Tumer [TURN86]. Sea un computador con 256K palabras de memoria disponible (no utilizadas por el sistema operativo), un disco, una terminal y una impresora. Tres programas, TRABAJO 1, TRABAJ02 y TRABAJOS, son enviados para su ejecución al mismo tiempo . Se suponen unos requisitos mínimos de procesador para el TRABAJ02 y el TRABAJOS y un uso continuado del disco y de la impresora por parte del TRABAJOS. En un sistema sencillo por lotes, estos trabajos serían ejecutados en secuencia. Así pues, el TRABAJO 1 termina en 5 minutos. El TRABAJ02 debe esperar a que transcurran esos 5 minutos y terminar 15 minutos después. El TRABAJOS comienza después de los 20 minutos para terminar SO minutos después del momento en que fue lanzado. Es evidente que hay una infrautilización neta de todos los recursos cuando se promedian los tiempos de uso en el período exigido de SO minutos.

Supóngase ahora que los trabajos se ejecutan concurrentemente en un sistema operativo con monoprogramación. Como hay poca contención de recursos entre los trabajos, cada uno de los tres puede ejecutarse en un tiempo cercano a 1 mínimo mientras coexiste con los otros en el computador (suponiendo que a TRABAJ02 y TRABAJO3 se les adjudica tiempo suficiente de procesador para mantener activas sus operaciones de E/S). El TRABAJO1 requerirá 5 minutos para terminar, pero al finalizar este tiempo, el TRABAJO2 estará terminado en una tercera parte y el TRABAJO3 estará a la mitad. Los tres trabajos habrán terminado dentro de 15 minutos.

Al igual que un sistema sencillo por lotes, un sistema por lotes con multiprogramación tiene que depender de ciertas características del hardware del computador. La característica adicional más notable y útil para la multiprogramación es que el hardware respalde las interrupciones de E/S y el DMA. Con E/S dirigida por interrupciones y con DMA, el procesador puede enviar una orden de E/S para un trabajo y continuar con la ejecución de otro, mientras la E/S es efectuada por el controlador del dispositivo. Cuando termina la operación de E/S, el procesador es interrumpido y el control pasa a un programa de tratamiento de interrupciones del sis-tema operativo. El sistema operativo le pasa entonces el control a otro trabajo.

Los sistemas operativos con multiprogramación son bastante más sofisticados en comparación con los sistemas de monoprogramación o de un solo programa. Para tener varios trabajos listos para ejecutar, éstos deben mantenerse en la memoria principal, lo que requiere cierto tipo de gestión de memoria. Además, si hay varios trabajos listos para ejecutarse, el procesador debe decidir cuál de ellos va a ejecutar, lo que requiere un algoritmo de planificación.

Sistema Multiproceso

Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados indistintamente a cualesquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema.

MULTIPROCESO: Las computadoras que tienen mas de un CPU son llamadas multiproceso. Un sistema operativo multiproceso coordina las operaciones de la computadoras multiprocesadoras. Ya que cada CPU en una computadora de multiproceso puede estar ejecutando una instrucción, el otro procesador queda liberado para procesar otras instrucciones simultáneamente.

Al usar una computadora con capacidades de multiproceso incrementamos su velocidad de respuesta y procesos. Casi todas las computadoras que tienen capacidad de multiproceso ofrecen una gran ventaja.

Los primeros Sistemas Operativos Multiproceso realizaban lo que se conoce como:

Multiproceso asimétrico: Una CPU principal retiene el control global de la computadora, así como el de los otros procesadores. Esto fue un primer paso hacia el multiproceso pero no fue la dirección ideal a seguir ya que la CPU principal podía convertirse en un cuello de botella.

Multiproceso simétrico: En un sistema multiproceso simétrico, no existe una CPU controladora única. La barrera a vencer al implementar el multiproceso simétrico es que los SO tienen que ser rediseñados o diseñados desde el principio para trabajar en u n ambiente multiproceso. Las extensiones de Unix, que soportan multiproceso asimétrico ya están disponibles y las extensiones simétricas se están haciendo disponibles. Windows NT de Microsoft soporta multiproceso simétrico.

Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un área de memoria, un conjunto de registros con valores específicos, la pila y otros valores de contexto. Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción las más de las veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o más tiempo a la

paralelización que a elaborar el algoritmo inicial.

Sistemas de tiempo compartido

Con el uso de la multiprogramación, el tratamiento por lotes puede llegar a ser bastante eficiente. Sin embargo, para muchas tareas, es conveniente suministrar un modo en que el usuario interactúe directamente con el computador. De hecho, para algunos trabajos, tales como el proceso de transacciones, este modo interactivo es fundamental.

Hoy en día, los requisitos de un servicio de computación interactiva pueden y suelen llevarse a cabo con el empleo de un computador dedicada. Esta opción no estaba disponible en los años 60, cuando la mayoría de los computadores eran grandes y costosas. En su lugar, se desarrollaron las técnicas de tiempo compartido.

Al igual que la multiprogramación permite al procesador manejar varias tareas por lotes al mismo tiempo, la multiprogramación puede también utilizarse para manejar varias tareas in-teractivas. En este último caso, la técnica se conoce como tiempo compartido, porque refleja el hecho de que el tiempo del procesador es compartido entre los diversos usuarios. La técnica básica de un sistema de tiempo compartido es tener a varios usuarios utilizando simultáneamente el sistema mediante terminales, mientras que el sistema operativo intercala la ejecución de cada programa de usuario en ráfagas cortas de cómputo o cuantos (quantum). De esta manera, si hay n usuarios que solicitan servicio a la vez, cada usuario sólo dispondrá, en promedio, de Un de la atención efectiva del computador, sin contar con la sobrecarga del sistema operativo. Sin embargo, dado el tiempo de reacción relativamente lento que tiene el ser humano, el tiempo de respuesta en un sistema correctamente diseñado debería ser comparable al de un computador dedicada.

Tanto la multiprogramación por lotes como el tiempo compartido utilizan multiprogramación.

Uno de los primeros sistemas de tiempo compartido que se desarrollaron fue el Sistema Compatible de Tiempo Compartido (CTSS, Compatible Time-Sharing System) [CORB62, CORB63], desarrollado en el MIT por un grupo conocido como Proyecto MAC (Machine-Aided Cognition, Multiple-Access Computers)3. El sistema fue desarrollado primero para una IBM 709 en 1961 y luego pasado a una IBM 7094.

Comparado con sistemas posteriores, el CTSS era bastante primitivo y su funcionamiento básico es fácil de explicar. El sistema se ejecutaba en una máquina con una memoria de 32K palabras de 36 bits, con un monitor residente que consumía 5K del total. Cuando había que asignar el control a un usuario interactivo, el programa del usuario y los datos eran cargados en las restantes 27K de la memoria principal. Un reloj del sistema generaba interrupciones a razón de aproximadamente una cada 0,2 segundos (sg). En cada interrupción de reloj, el sistema operativo se adueñaba del control y le podía asignar el procesador a otro usuario. De esta manera, a intervalos regulares, el usuario en curso era expulsado y se cargaba otro usuario en su lugar. Para conservar el estado del usuario anterior, para su reanudación posterior, los programas del usuario anterior y sus datos eran escritos en el disco antes de leer los programas del nuevo usuario y sus datos. En consecuencia, el espacio de memoria del usuario anterior debía ser restaurado cuando le llegara de nuevo su tumo.

Para minimizar el tráfico en el disco, la memoria del usuario se escribía a disco sólo cuando el nuevo programa a cargar podía sobrescribirla. Este principio se ilustra en la figura. Supóngase que hay cuatro usuarios interactivos con los siguientes requisitos de memoria:

  • TRABAJO1: 15K
  • TRABAJO2: 20K
  • TRABAJO3: 5K
  • TRABAJO4: I0K

Al principio, el monitor carga el TRABAJOl y le transfiere el control (figura a). Pos-teriormente, el monitor decide transferir el control al TRABAJ02. Puesto que el TRABAJ02 requiere más memoria que el TRABAJOl, éste debe sacarse primero, para luego cargar el TRABAJ02 (figura b). A continuación, se carga el TRABAJO3 para ser ejecutado. Sin embargo, como el TRABAJO3 es más pequeño que el TRABAJ02, entonces una parte del TRABAJ02 puede quedarse en la memoria, lo que reduce el tiempo de escritura en el disco (figura c). Más tarde, el monitor decide transferir de nuevo el control al TRABAJOl. Una parte adicional del TRABAJ02 debe sacarse cuando el TRABAJOl se cargue de nuevo a memoria (figura d). Cuando se cargue el TRABAJ04, parte del TRABAJOl y de la parte remanente del TRABAJO2 se retienen en memoria (figura e). En este punto, tanto si el TRABAJOl como el TRABAJO2 son activados, sólo se necesita una carga parcial. En este ejemplo es el TRABAJ02 el que se ejecuta a continuación. Esto exige que se saquen el TRABAJ04 y la parte remanente que estaba residente del TRABAJOl, para que se pueda leer la parte que falta del TRABAJ02.

El enfoque del CTSS era muy primitivo, si se compara con los sistemas actuales de tiempo compartido, pero funcionaba. Era extremadamente simple, lo que minimizaba el tamaño del monitor. Como un trabajo siempre se cargaba en las mismas posiciones de memoria, no había necesidad de utilizar técnicas de reubicación durante la carga (que se discutirán más adelante). La técnica de escribir en el disco sólo cuándo era necesario minimizaba la actividad con el disco. Ejecutado sobre una 7094, el CTSS daba soporte a un máximo de 32 usuarios.

El tiempo compartido y la multiprogramación plantean una multitud de problemas nuevos para el sistema operativo. Si hay varios trabajos en memoria, entonces deben protegerse de injerencias unos de otros, como, por ejemplo, que uno modifique los datos de otro. Con varios usuarios interactivos, el sistema de archivos debe protegerse de forma que sólo los usuarios autorizados puedan tener acceso a un archivo en particular. La contención de recursos tales como la impresora y los dispositivos de almacenamiento masivo debe estar controlada.

Sistemas para Redes Multiusuarios

Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes.

En otras palabras consiste en el fraccionamiento del tiempo (timesharing).

Al igual que un equipo no puede trabajar sin un sistema operativo, una red de equipos no puede funcionar sin un sistema operativo de red. Si no se dispone de ningún sistema operativo de red, los equipos no pueden compartir recursos y los usuarios no pueden utilizar estos recursos.

Dependiendo del fabricante del sistema operativo de red, tenemos que el software de red para un equipo personal se puede añadir al propio sistema operativo del equipo o integrarse con él.

NetWare de Novell es el ejemplo más familiar y famoso de sistema operativo de red donde el software de red del equipo cliente se incorpora en el sistema operativo del equipo. El equipo personal necesita ambos sistema operativos para gestionar conjuntamente las funciones de red y las funciones individuales.

El software del sistema operativo de red se integra en un número importante de sistemas operativos conocidos, incluyendo Windows 2000 Server/Professional, Windows NT Server/Workstation, Windows 95/98/ME y Apple Talk.

Cada configuración (sistemas operativos de red y del equipo separados, o sistema operativo combinando las funciones de ambos) tiene sus ventajas e inconvenientes. Por tanto, nuestro trabajo como especialistas en redes es determinar la configuración que mejor se adapte a las necesidades de nuestra red.

Coordinación del software y del hardware

El sistema operativo de un equipo coordina la interacción entre el equipo y los programas (o aplicaciones) que está ejecutando. Controla la asignación y utilización de los recursos hardware tales como:

* Memoria.

* Tiempo de CPU.

* Espacio de disco.

*Dispositivos periféricos.

En un entorno de red, los servidores proporcionan recursos a los clientes de la red y el software de red del cliente permite que estos recursos estén disponibles para los equipos clientes. La red y el sistema operativo del cliente están coordinados de forma que todos los elementos de la red funcionen correctamente.

Multitarea

Un sistema operativo multitarea, como su nombre indica, proporciona el medio que permite a un equipo procesar más de una tarea a la vez. Un sistema operativo multitarea real puede ejecutar tantas tareas como procesadores tenga. Si el número de tareas es superior al número de procesadores, el equipo debe ordenar los procesadores disponibles para dedicar una cierta cantidad de tiempo a cada tarea, alternándolos hasta que se completen las citadas tareas. Con este sistema, el equipo parece que está trabajando sobre varias tareas a la vez.

Componentes software

El software cliente de red debe instalarse sobre el sistema operativo existente, en aquellos sistemas operativos de equipo que no incluyan funciones propias de red. Otros sistemas operativos, como Windows NT/2000, integran el sistema operativo de red y sistema operativo del equipo. A pesar de que estos sistema integrados tienen algunas ventajas, no evitan la utilización de otros Sistema Operativo de Red. Es importante considerar la propiedad de interoperabilidad cuando se configuran entornos de red multiplataforma. Se dice que los elementos o componentes de los sistemas operativos «interoperan» cuando pueden funcionar en diferentes entornos de trabajo. Por ejemplo, un servidor NetWare puede interoperar (es decir, acceder a los recursos) con servidores NetWare y servidores Windows NT/2000.

Un sistema operativo de red:

  • Conecta todos los equipos y periféricos.

  • Coordina las funciones de todos los periféricos y equipos.

  • Proporciona seguridad controlando el acceso a los datos y periféricos.

Las dos componentes principales del software de red son:

  • El software de red que se instala en los clientes.

  • El software de red que se instala en los servidores.

Software de cliente

En un sistema autónomo, cuando un usuario escribe un comando que solicita el equipo para realizar una tarea, la petición circula a través del bus local del equipo hasta la CPU del mismo. Por ejemplo, si quiere ver un listado de directorios de uno de los discos duros locales, la CPU interpreta y ejecuta la petición y, a continuación, muestra el resultado del listado de directorios en una ventana.

Sin embargo, en un entorno de red, cuando un usuario inicia una petición para utilizar un recurso que está en un servidor en otra parte de la red, el comportamiento es distinto. La petición se tiene que enviar, o redirigir, desde el bus local a la red y desde allí al servidor que tiene el recurso solicitado. Este envío es realizado por el redirector.

Redirector

Un redirector procesa el envío de peticiones. Dependiendo del software de red, este redirector se conoce como «Shell» o «generador de peticiones». El redirector es una pequeña sección del código de un Sistema Operativo de Red que:

*Intercepta peticiones en el equipo.

*Determina si la peticiones deben continuar en el bus del equipo local o deben redirigirse a través de la red a otro servidor

Software de servidor

El software de servidor permite a los usuarios en otras máquinas, y a los equipos clientes, poder compartir los datos y periféricos del servidor incluyendo impresoras, trazadores y directorios.

Si un usuario solicita un listado de directorios de un disco duro remoto compartido. El redirector envía la petición por la red, se pasa al servidor de archivos que contiene el directorio compartido. Se concede la petición y se proporciona el listado de directorios.

Compartir recursos

Compartir es el término utilizado para describir los recursos que públicamente están disponibles para cualquier usuario de la red. La mayoría de los sistemas operativos de red no sólo permiten compartir, sino también determinar el grado de compartición. Las opciones para la compartición de recursos incluyen:

*Permitir diferentes usuarios con diferentes niveles de acceso a los recursos.

*Coordinación en el acceso a los recursos asegurando que dos usuarios no utilizan el mismo recurso en el mismo instante.

Gestión de usuarios

Los sistemas operativos de red permiten al administrador de la red determinar las personas, o grupos de personas, que tendrán la posibilidad de acceder a los recursos de la red. El administrador de una red puede utilizar el Sistema Operativo de Red para:

*Crear permisos de usuario, controlados por el sistema operativo de red, que indican quién puede utilizar la red.

*Asignar o denegar permisos de usuario en la red.

*Eliminar usuarios de la lista de usuarios que controla el sistema operativo de red.

Gestión de la red

Algunos sistemas operativos de red avanzados incluyen herramientas de gestión que ayudan a los administradores a controlar el comportamiento de la red. Cuando se produce un problema en la red, estas herramientas de gestión permiten detectar síntomas de la presencia del problema y presentar estos síntomas en un gráfico o en otro formato. Con estas herramientas, el administrador de la red puede tomar la decisión correcta antes de que el problema suponga la caída de la red.

Arquitectura

MICROKERNEL

Esquema del funcionamiento de un micronúcleo

Se conoce como microkernel al modelo de kernel de sistema operativo, que consiste en distribuir en porciones de código modulares y sencillas, las operaciones necesarias para construir una máquina virtual sobre el hardware de un sistema de cómputo.

Así construído, un microkernel consta de un conjunto limitado de operaciones (mayormente de bajo nivel) que se ejecutan en espacio de kernel, mientras que las restantes (llamadas de sistema, gestión de memoria, sistema de archivos, operaciones de E/S, etc.), se ejecutan por medio de procesos servidores en espacio de usuario.

Las principales ventajas de su utilización son la reducción de la complejidad, la descentralización de los fallos (un fallo en una parte del sistema no lo colapsaría por completo) y la facilitación para crear y depurar controladores de dispositivos.

Por otro lado, sus principales dificultades son la complejidad en la sincronización de todos los módulos que componen el micronúcleo y su acceso a la memoria, la anulación de las ventajas de Zero Copy, la Integración con las aplicaciones. Además, los procesadores y arquitecturas modernas de hardware están optimizadas para sistemas de núcleo que pueden mapear toda la memoria.

Esto mejora la tolerancia a fallos y eleva la portabilidad entre plataformas de hardware, según los defensores de esta tendencia. Sus detractores le achacan, fundamentalmente, mayor complejidad en el código, menor rendimiento, o limitaciones en diversas funciones.

Algunos ejemplos de sistemas operativos con microkernel:

* AIX

* Minix

* Hurd

* BeOS

* AmoebaOS

* RaOS

* MacOSX

KERNEL MONOLITICO

Un Núcleo monolítico es el núcleo o kernel de un sistema operativo. Como ejemplo de sistema operativo de núcleo monolítico están UNIX y Linux. Estos sistemas tienen un núcleo grande y complejo, que engloba todos los servicios del sistema. Está programado de forma no modular, y tiene un rendimiento mayor que un micronúcleo. Sin embargo, cualquier cambio a realizar en cualquier servicio requiere la recompilación del núcleo y el reinicio del sistema para aplicar los nuevos cambios.

Vista gráfica general de un núcleo monolÃtico

Un sistema operativo con núcleo monolítico concentra todas las funcionalidades posibles (planificación, sistema de archivos, redes, controladores de dispositivos, gestión de memoria, etc) dentro de un gran programa. El mismo puede tener un tamaño considerable, y deberá ser recompilado por completo al añadir una nueva funcionalidad. Todos los componentes funcionales del núcleo tienen acceso a todas sus estructuras de datos internas y a sus rutinas. Un error en una rutina puede propagarse a todo el núcleo. Todos sus componentes se encuentran integrados en un único programa que ejecuta en un único espacio de direcciones. En este tipo de sistemas, todas las funciones que ofrece el sistema operativo se ejecutan en modo supervisor.

El problema que plantean este tipo de sistemas radica en lo complicado que es modificar el sistema operativo para añadir nuevas funcionalidades y servicios. En efecto, añadir una nueva característica implica la modificación de un gran programa, compuesto por miles de líneas de código fuente y funciones, cada una de las cuales puede invocar a otras cuando así lo requiera. Además en este tipo de sistemas no se sigue el principio de ocultación de la información. Para solucionar este problema es necesario dotar de cierta estructura al sistema operativo.

Ejemplos de núcleos monolíticos

o Linux

o Unix

+ Solaris

+ AIX

* DOS

+ Sistemas operativos Microsoft Windows 9x (95, 98, 98SE, Me)

* OpenVMS

  • XTS-400

Ensambladores

Funciones De Un Ensamblador

La tarea fundamental de un ensamblador es traducir un programa en lenguaje de ensamblador al código correspondiente en lenguaje de máquina. En esencia, el ensamblador debe realizar las siguientes tareas:

1. Convertir los códigos (”opcode” o mnemónicos: ej. LDA, STX) a su código equivalente en lenguaje de máquina

2. Convertir los operandos simbólicos (las etiquetas o variables) en las direcciones correspondientes de los operandos

3. Construir las instrucciones en lenguaje de máquina en el formato apropiado

4. Convertir las constantes definidas en el programa en su verdadera representación

5. Escribir el “listing” en lenguaje de ensamblador con el código en lenguaje de máquina correspondiente

6. Procesar las directrices al ensamblador (las directrices son instrucciones o comandos dirigidos al ensamblador, que éste procesa y ejecuta al hallarlos en el programa en lenguaje de ensamblador; estas directrices no se traducen a lenguaje de máquina, si no que el ensamblador ejecuta alguna acción, como reservar memoria para variables, entre otras)

Cargadores y Enlazadores

Un enlazador es un programa de sistema que combina dos o mas programas objeto separados y permite que se hagan referencias unos a otros, o sea, que cada uno de estos programas pueden hacer referencia a código ó variables de los otros programas con los que está enlazado.

En muchos programas el cargador hace la labor del programa de enlace, por que existe solo un “linking loader” y no existe programa de enlace independiente. Es importante señalar que no se necesita un programa de enlace ni un cargador separado para cada traductor en el sistema, ya que estos programas trabajan con el programa objeto, sin importar el lenguaje fuente. Por otro lado es importante que cada compilador o ensamblador produzca el programa objeto usando el mismo formato. Cada programa objeto es un archivo de récord.

Un cargador es un programa que coloca en la memoria para su ejecución, el programa guardado en algún dispositivo de almacenamiento secundario.

Algunos sistemas tienen un enlazador para realizar las operaciones de enlaces y un cargador separado para manejar la relocalización y la carga.

Los procesos de ensamblado y carga están íntimamente relacionados.

El cargador consiste en un juego de instrucciones que permiten al dispositivo de entrada ( teclado ó unidad de cinta ) asignar la dirección de inicio de la memoria y asegurar que el computador leerá el programa y lo cargara byte a byte.

Funciones De Un Cargador Y Un Enlazador

Las funciones mas importantes de un cargador son: colocar un programa objeto en la memoria e iniciar su ejecución. Si tenemos un cargador que no necesita realizar las funciones de ligado y relocalización de programas, su operación es simple pues todas las funciones se realizan en un solo paso.

Relocalización que modifica el programa objeto de forma que puede cargarse en una dirección diferente de la localidad especificada originalmente.

Enlazado que combina dos o mas programas objeto independientes y proporciona la información necesaria para realizar diferencias entre ellos.

El cargador es un programa del sistema que realiza la función de carga pero muchos cargadores también incluyen relocalización y ligado. Algunos sistemas tienen un enlazador (ó editor de ligado ) para realizar las operaciones de enlace, y un cargador separado para manera la relocalización y la carga.

Se han desarrollado herramientas especiales de software, llamadas cargadores para asistir, al programados en la carga del programa. El cargador es normalmente un programa pequeño que permite al usuario entrar directamente las palabras de instrucción y datos a direcciones concretas de la memoria mediante, ó un teclado ó una cinta magnética.

COMPILADORES E INTERPRETES

Compiladores

Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es código máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.

Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora

Interprete

Un intérprete es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código máquina del sistema destino, los primeros (los interpretes) sólo realizan la traducción a medida que sea necesario, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.

Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual).

Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.

Posteado por: eduhesc | Mayo 7, 2008

Plan de Evaluación-Seccion 204A3-Semestre Abr-Jul 2008

<

Evaluacion

Porcentaje

Unidad

Fecha

Taller

10%

1-2

13-05-2008

Examen

20%

3

27-05-2008

Trabajo

20%

03-06-2008

Examen

15%

4

17-06-2008