Sistemas Operativos Parte 2

Sistemas operativos multiprogramados

Surge un nuevo avance en el hardware: el hardware con protección de memoria. Lo que ofrece nuevas soluciones a los problemas de rendimiento:
  • Se solapa el cálculo de unos trabajos con la entrada/salida de otros trabajos.
  • Se pueden mantener en memoria varios programas.
  • Se asigna el uso de la CPU a los diferentes programas en memoria.
Debido a los cambios anteriores, se producen cambios en el monitor residente, con lo que éste debe abordar nuevas tareas, naciendo lo que se denomina como Sistemas Operativos multiprogramados, los cuales cumplen con las siguientes funciones:
  • Administrar la memoria.
  • Gestionar el uso de la CPU (planificación).
  • Administrar el uso de los dispositivos de E/S.
Cuando desempeña esas tareas, el monitor residente se transforma en un sistema operativo multiprogramado.
Llamadas al sistema operativo 
llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO. Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas es la interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Por ello si cambiamos de SO, y abrimos un programa diseñado para trabajar sobre el anterior, en general el programa no funcionará, a no ser que el nuevo SO tenga la misma interfaz. Para ello:
  • Las llamadas correspondientes deben tener el mismo formato.
  • Cada llamada al nuevo SO tiene que dar los mismos resultados que la correspondiente del anterior.

Modos de ejecución en un CPU

Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el Sistema Operativo, tiene que poder utilizar todo el juego de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes:
  • Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones.
  • Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones.

Llamadas al sistema

Una aplicación, normalmente no sabe dónde está situada la rutina de servicio de la llamada. Por lo que si ésta se codifica como una llamada de función, cualquier cambio en el SO haría que hubiera que reconstruir la aplicación.
Pero lo más importante es que una llamada de función no cambia el modo de ejecución de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que conocer su ubicación, y hacer que se fuerce un cambio de modo de operación de la CPU en la llamada (y la recuperación del modo anterior en el retorno).
Esto se hace utilizando instrucciones máquina diseñadas específicamente para este cometido, distintas de las que se usan para las llamadas de función.

Bibliotecas de interfaz de llamadas al sistema

Las llamadas al sistema no siempre tienen una expresión sencilla en los lenguajes de alto nivel, por ello se crean las bibliotecas de interfaz, que son bibliotecas de funciones que pueden usarse para efectuar llamadas al sistema. Las hay para distintos lenguajes de programación.
La aplicación llama a una función de la biblioteca de interfaz (mediante una llamada normal) y esa función es la que realmente hace la llamada al sistema.
Diferentes Sistemas Operativos 

  1. SISTEMAS OPERATIVOS
    • INDICE:
        • DOS( Disk Operating System ).
        • WINDOWS.
        • SOFTWARE LIBRES.
        • OTROS TIPOS DE SISTEMAS OPERATIVOS.
  2. DOS(Disk Operating System)
    • El DOS carece por completo de interfaz gráfica, y no utiliza el ratón, Desde el punto de vista de los programadores, este sistema operativo permitía un control total de la computadora, libre de las capas de abstracción y medidas de seguridad a las que obligan los sistemas multiusuario y multitarea.
    • ORDENES PRINCIPALES
      • DIR: muestra un listado de archivos, que están contenidos en un directorio.
      • DEL o ERASE: borra uno o varios archivos
      • MD o MKDIR: crea un nuevo directorio
      • RD o RMDIR: borra un directorio vacío
  3. DOS(Disk Operating System)
    • ATTRIB: permite asignar o quitar atributos de archivos
    • DELTREE: borra un directorio con todo su contenido, incluidos subdirectorios (apareció en las últimas versiones)
    • CLS: limpia la pantalla.
    • DATE: permite ver y cambiar la fecha.
    • TIME: permite ver y cambiar la hora.
  4. WINDOWS
    • Windows es una familia de sistemas operativos desarrollados y comercializados por Microsoft.
    • Es el sistema operativo mas utilizado del mundo,existen versiones para empresas,hogares y dispositivos móviles
  5. WINDOWS
    • Tipos de windows:
      • Windows 95.
      • Windows 98.
      • Windows 98 SECOND EDITION.
      • Windows Millenium Edition.
      • Windows 2000.
      • Windows XP.
      • Windows Server 2003.
      • Windows Live.
      • Windows Vista.

    Prema dúas veces para engadir imaxes

  6. SOFTWARE LIBRE.
    • Los software libres mas utilizados son:
      • LINUX:es un sistema operativo libre o gratuito con código de programación abierto,es decir,que un programador experto puede modificarlo o adaptarlo a sus necesidades. Por este motivo existen numerosas versiones de Linux.
  7. SOFTWARE LIBRE
    • Ya que se trata de software existen numerosas distribuciones y adaptaciones de este sistema operativo.
    • Las administraciones educativas de varias comunidades autónomas desenvolvieron con gran esfuerzo sus propias distribuciones Linux:
  8. SOFTWARE LIBRE
    • LinEX: se trata de una distribución GNU/LINUX ,que se basea en la distribución debian, que se desenvolvió en Estremadura. se trata de un simpático escritorio al que se adaptaron algunos nombres de programas al medio estremeño .
    • Se puede descargar en http://www.linex.org/ .

    aquí

  9. SOFTWARE LIBRE
    • Guadalinex : es una distribución lanzada por la Junta de Andalucía con la finalidad de promover el uso de software libre.
    • Este software se puede descargar en: http://www.guadalinex.org/
  10. SOFTWARE LIBRE
    • Lliurex: Es una distribución Linux de la Generalitat Valenciana.
    • Está baseada en la distribucion Debian y, ya anunció que en las próximas versiones van cambiar para el soporte ED UBUNTU.
    • Se puede descargar en http://www.lliurex.net/
  11. SOFTWARE LIBRE
    • Molinux : Es la distribución de Castela A Mancha.
    • La primera versión se lanzó en 2004.
    • Se puede descargar en http://www.molinux.info/ .
  12. SOFTWARE LIBRE.
    • Galinux : es una iniciativa de la Dirección General de Promoción Industrial y de la Sociedad de la información.
    • Se puede descargar en http://www.galinux.org/
  13. SOFTWARE LIBRE
    • Ubuntu: es una distribución Linux que ofrece un sistema operativo enfocado a ordenadores de escritorio aunque también proporciona soporte para servidores.
  14. SOFTWARE LIBRE
    • MAC OS:
      • es una abreviatura de MACintosh Operating System. es el nombre del primer sistema operativo de apple para ordenadores MACINTOSH. Elm
        •  AC OS original fue el primer sistema operativo en tener éxito
  15. SOFTWARE LIBRE
    • USO DE LOS DISTINTOS SISTEMAS OPERATIVOS:
  16. OTROS TIPOS DE SOFTWARE.
    • Teléfonos móviles: Los teléfonos móviles también tienen sus propios sistemas operativos, aunque son menos famosos que los de PC. Sin embargo, así como el mercado de los sistemas operativos para PC está dominado por Windows, en el caso de los móviles hay más competencia. Los mas importantes son:windows simbyan y linux.
  17. OTROS TIPOS DE SOFTWARE.
    • windows: Windows Mobile, antes conocido como Windows CE o Pocket PC,siempre estubo eclipsado por el sistema operativo PALM OS,pero hace unos pocos meses lo superó.una de las ventas de windows mobile es que los programadores pueden desarrollar para móbiles utilizando los mismos lenguajes que se emplean en el windows de PC.
  18. OTROS TIPOS DE SOFTWARE.
    • Symbian: Symbian es el sistema operativo para móviles más extendido. La empresa es propiedad de ericcson,Panasonic,Siemens AG,Nokia y Sony-Ericsson. Este sistema desciende de EPOC, empleado en los antiguos ordenadores de bolsillo Psion. Symbian fue diseñado pensando en dispositivos móviles, lo que hace que sea muy robusto.
  19. OTROS TIPOS DE SOFTWARE.
    • Linux: En los círculos del software libre se acaricia la idea de implantar Linux en el teléfono móvil desde hace años, pero ha tardado en llegar. Aún así, en los últimos tiempos se ha avanzado mucho y ya hay varios modelos de móvil en el mercado que utilizan una versión de Linux como su sistema operativo.

Lenguaje Ensamblador
 es la primera abstracción del Lenguaje de Máquina , consistente en asociar a los opcodes palabras clave que faciliten su uso por parte del programador

Como se puede ver, el Lenguaje Ensamblador es directamente traducible al Lenguaje de Máquina, y viceversa; simplemente, es una abstracción que facilita su uso para los seres humanos. Por otro lado, la computadora no entiende directamente al Lenguaje Ensamblador; es necesario traducirle a Lenguaje de Máquina. Originalmente, este proceso se hacía a mano, usando para ello hojas donde se escribían tablas de programa similares al ejemplo de la calculadora que vimos arriba . Pero, al ser tan directa la traducción, pronto aparecieron los programas Ensambladores, que son traductores que convierten el código fuente (en Lenguaje Ensamblador) a código objeto (es decir, a Lenguaje de Máquina).

Una característica que hay que resaltar, es que al depender estos lenguajes del hardware, hay un distinto Lenguaje de Máquina (y, por consiguiente, un distinto Lenguaje Ensamblador) para cada CPU. Por ejemplo, podemos mencionar tres lenguajes completamente diferentes, que sin embargo vienen de la aplicación de los conceptos anteriores:

1.Lenguaje Ensamblador de la familia Intel 80×86 2.Lenguaje Ensamblador de la familia Motorola 68000 3.Lenguaje Ensamblador del procesador POWER, usado en las IBM RS/6000.

Tenemos 3 fabricantes distintos, compitiendo entre sí y cada uno aplicando conceptos distintos en la manufactura de sus procesadores, su arquitectura y programación; todos estos aspectos, influyen en que el lenguaje de máquina y ensamblador cambie bastante.

Ventajas y desventajas del Lenguaje Ensamblador

Una vez que hemos visto la evolución de los lenguajes, cabe preguntarse: �En estos tiempos «modernos», para qué quiero el Lenguaje Ensamblador?

El proceso de evolución trajo consigo algunas desventajas, que ahora veremos como las ventajas de usar el Lenguaje Ensamblador, respecto a un lenguaje de alto nivel:

1.Velocidad

2.Eficiencia de tamaño

3.Flexibilidad

Por otro lado, al ser un lenguaje más primitivo, el Ensamblador tiene ciertas desventajas respecto a los lenguajes de alto nivel:

1.Tiempo de programación

2.Programas fuente grandes

3.Peligro de afectar recursos inesperadamente

4.Falta de portabilidad

Velocidad 

El proceso de traducción que realizan los intérpretes, implica un proceso de cómputo adicional al que el programador quiere realizar. Por ello, nos encontraremos con que un intérprete es siempre más lento que realizar la misma acción en Lenguaje Ensamblador, simplemente porque tiene el costo adicional de estar traduciendo el programa, cada vez que lo ejecutamos.

De ahí nacieron los compiladores, que son mucho más rápidos que los intérpretes, pues hacen la traducción una vez y dejan el código objeto, que ya es Lenguaje de Máquina, y se puede ejecutar muy rápidamente. Aunque el proceso de traducción es más complejo y costoso que el de ensamblar un programa, normalmente podemos despreciarlo, contra las ventajas de codificar el programa más rápidamente.

Sin embargo, la mayor parte de las veces, el código generado por un compilador es menos eficiente que el código equivalente que un programador escribiría. La razón es que el compilador no tiene tanta inteligencia, y requiere ser capaz de crear código genérico, que sirva tanto para un programa como para otro; en cambio, un programador humano puede aprovechar las características específicas del problema, reduciendo la generalidad pero al mismo tiempo, no desperdicia ninguna instrucción, no hace ningún proceso que no sea necesario.

Para darnos una idea, en una PC, y suponiendo que todos son buenos programadores, un programa para ordenar una lista tardará cerca de 20 veces más en Visual Basic (un intérprete), y 2 veces más en C (un compilador), que el equivalente en Ensamblador.

Por ello, cuando es crítica la velocidad del programa, Ensamblador se vuelve un candidato lógico como lenguaje.

Ahora bien, esto no es un absoluto; un programa bien hecho en C puede ser muchas veces más rápido que un programa mal hecho en Ensamblador; sigue siendo sumamente importante la elección apropiada de algoritmos y estructuras de datos. Por ello, se recomienda buscar optimizar primero estos aspectos, en el lenguaje que se desee, y solamente usar Ensamblador cuando se requiere más optimización y no se puede lograr por estos medios.

Tamaño 

Por las mismas razones que vimos en el aspecto de velocidad, los compiladores e intérpretes generan más código máquina del necesario; por ello, el programa ejecutable crece. Así, cuando es importante reducir el tamaño del ejecutable, mejorando el uso de la memoria y teniendo también beneficios en velocidad, puede convenir usar el lenguaje Ensamblador. Entre los programas que es crítico el uso mínimo de memoria, tenemos a los virus y manejadores de dispositivos (drivers). Muchos de ellos, por supuesto, están escritos en lenguaje Ensamblador.

Flexibilidad 
Las razones anteriores son cuestión de grado: podemos hacer las cosas en otro lenguaje, pero queremos hacerlas más eficientemente. Pero todos los lenguajes de alto nivel tienen limitantes en el control; al hacer abstracciones, limitan su propia capacidad. Es decir, existen tareas que la máquina puede hacer, pero que un lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic no es posible cambiar la resolución del monitor a medio programa; es una limitante, impuesta por la abstracción del GUI Windows. En cambio, en ensamblador es sumamente sencillo, pues tenemos el acceso directo al hardware del monitor.

Resumiendo, la flexibilidad consiste en reconocer el hecho de que

Todo lo que puede hacerse con una máquina, puede hacerse en el lenguaje ensamblador de esta máquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al máximo los recursos de la máquina.

Tiempo de programación 

Al ser de bajo nivel, el Lenguaje Ensamblador requiere más instrucciones para realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por otro lado, requiere de más cuidado por parte del programador, pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución.

Por todo esto, es más lento el desarrollo de programas comparables en Lenguaje Ensamblador que en un lenguaje de alto nivel, pues el programador goza de una menor abstracción.
Programas fuente grandes
Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente, requerimos más instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores.
Peligro de afectar recursos inesperadamente

Tenemos la ventaja de que todo lo que se puede hacer en la máquina, se puede hacer con el Lenguaje Ensamblador (flexibilidad). El problema es que todo error que podamos cometer, o todo riesgo que podamos tener, podemos tenerlo también en este Lenguaje. Dicho de otra forma, tener mucho poder es útil pero también es peligroso.

En la vida práctica, afortunadamente no ocurre mucho; sin embargo, al programar en este lenguaje verán que es mucho más común que la máquina se «cuelgue», «bloquee» o «se le vaya el avión»; y que se reinicialize. �Por qué?, porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel.

En ciertos casos extremos, puede llegarse a sobreescribir información del CMOS de la máquina (no he visto efectos más riesgosos); pero, si no la conservamos, esto puede causar que dejemos de «ver» el disco duro, junto con toda su información.

Falta de portabilidad
Como ya se mencionó, existe un lenguaje ensamblador para cada máquina; por ello, evidentemente no es una selección apropiada de lenguaje cuando deseamos codificar en una máquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras. Si bien esto es un problema general a todos los lenguajes, es mucho más notorio en ensamblador: yo puedo reutilizar un 90% o más del código que desarrollo en «C», en una PC, al llevarlo a una RS/6000 con UNIX, y lo mismo si después lo llevo a una Macintosh, siempre y cuando esté bien hecho y siga los estándares de «C», y los principios de la programación estructurada. En cambio, si escribimos el programa en Ensamblador de la PC, por bien que lo desarrollemos y muchos estándares que sigamos, tendremos prácticamente que reescribir el 100 % del código al llevarlo a UNIX, y otra vez lo mismo al llevarlo a Mac

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *