lunes, 27 de mayo de 2013

UNIDAD 1 INTRODUCCION A LOS SISTEMAS OPERATIVOS

Es un programa o conjunto de programas que en un sistema informático gestiona los recursos de hardware y provee servicios a los programas de aplicación, ejecutándose en modo privilegiado respecto de los restantes.[2]
Nótese que es un error común muy extendido denominar al conjunto completo de herramientas sistema operativo, es decir, la inclusión en el mismo término de programas como el 
explorador de ficheros, el navegador web y todo tipo de herramientas que permiten la interacción con el sistema operativo, también llamado núcleo o kernel. Esta identidad entre kernel y sistema operativo es solo cierta si el núcleo es monolítico. Otro ejemplo para comprender esta diferencia se encuentra en la plataforma Amiga, donde el entorno gráfico de usuario se distribuía por separado, de modo que, también podía reemplazarse por otro, como era el caso de directory Opus o incluso manejarlo arrancando con una línea de comandos y el sistema gráfico. De este modo, al arrancar un Amiga, comenzaba a funcionar con el propio sistema operativo que llevaba incluido en una ROM, por lo que era cuestión del usuario decidir si necesitaba un entorno gráfico para manejar el sistema operativo o simplemente otra aplicación. Uno de los más prominentes ejemplos de esta diferencia, es el núcleo Linux, usado en las llamadas distribuciones Linux, ya que al estar también basadas en Unix, proporcionan un sistema de funcionamiento similar. Este error de precisión, se debe a la modernización de la informática llevada a cabo a finales de los 80, cuando la filosofía de estructura básica de funcionamiento de los grandes computadores[3] se rediseñó a fin de llevarla a los hogares y facilitar su uso, cambiando el concepto de computadormultiusuario, (muchos usuarios al mismo tiempo) por un sistema monousuario (únicamente un usuario al mismo tiempo) más sencillo de gestionar.[4] (Véase AmigaOSbeOS o MacOS como los pioneros[5] de dicha modernización, cuando los Amiga fueron bautizados con el sobrenombre de Video Toasters[6] por su capacidad para la Edición de vídeoen entorno multitarea round robin, con gestión de miles de colores e interfaces intuitivos para diseño en 3D.

                                           1.2  FUNCIONES Y CARACTERISTICAS
En general, se puede decir que un Sistema Operativo tiene las siguientes caracteristicas:
Conveniencia. Un Sistema Operativo hace mas conveniente el uso de una computadora.
Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera mas eficiente posible.
Habilidad para evolucionar. Un Sistema Operativo debera construirse de manera que permita el desarrollo, prueba o introduccion efectiva de nuevas funciones del sistema sin interferir con el servicio.
Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos.
Relacionar dispositivos (gestionar a traves del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos perifericos, cuando el usuario asi lo requiera. 

Organizar datos para acceso rapido y seguro.
Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalación y uso de las redes de computadoras. 

Procesamiento por bytes de flujo a través del bus de datos.
Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora.
Técnicas de recuperación de errores.
Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informándoles si esa aplicación esta siendo ocupada por otro usuario.
Generación de estadísticas.
Permite que se puedan compartir el hardware y los datos entre los usuarios. 

El software de aplicación son programas que se utilizan para diseñar, tal como el procesador de palabras, lenguajes de programación, hojas de cálculo, etc.
El software de base sirve para interactuar el usuario con la máquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite el diseño del mismo.
El Software de base está compuesto por :
Cargadores.
Compiladores.
Ensambladores.
Macros.
                                                      1.3  EVOLUCION HISTORICA
Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales caracteristicas de un Sistema Operativo contemporaneo, es util considerar como han ido evolucionando estos con el tiempo.
Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas Operativos La primera de estas versiones podria ser esta:
En los 40's, se introducen los programas bit a bit, por medio de interruptores mecanicos y despues se introdujo el lenguaje maquina que trabajaba por tarjetas perforadas.
Con las primeras computadoras, desde finales de los años 40 hasta la mitad de los años 50, el programador interactuaba de manera directa con el hardware de la computadora, no existia realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a traves del lenguaje maquina (bits) o a traves de interruptores.

Durante los años 50's y 60's.- A principio de los 50's, la compania General's Motors implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, disenadores, capturistas, etc.), se encarguen de modificar sus programas. Establecian o apartaban tiempo, metian o introducian sus programas, corregian y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traducia en perdida de tiempo y tiempos de programas excesivos.

En los años 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta epoca surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo.

En los 80's, inicio el auge de la INTERNET en los Estados Unidos de America. A finales de los años 80's comienza el gran auge y evolucion de los Sistemas Operativos. Se descubre el concepto de multiprogramacion que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales.


Los 90's y el futuro, entramos a la era de la computacion distribuida y del multiprocesamiento a traves de multiples redes de computadoras, aprovechando el ciclo del procesador.

Se tendra una configuracion dinamica con un reconocimiento inmediato de dispositivos y software que se anada o elimine de las redes a traves de procesos de registro y localizadores.

La conectividad se facilita gracias a estandares y protocolos de sistemas abiertos por organizaciones como la Organizacion Internacional de normas, fundacion de software abierto, todo estara mas controlado por los protocolos de comunicacion OSI y por la red de servicios digital ISDN.

Se ha desarrollado otra version, la cual se ha hecho en base a etapas o generaciones:
1a. Etapa (1945-1955): Bulbos y conexiones. 


Despues de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construccion de las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la decada de los 40's, Howard Aiken (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), asi como Conrad Zuse (Alemania), entre otros lograron construir maquinas de calculo mediante bulbos. Estas maquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho mas lentas que la computadora casera mas economica en nuestros dias.
Toda la programacion se llevaba a cabo en lenguaje de maquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones basicas de la maquina. Los lenguajes de programacion eran desconocidos (incluso el lenguaje ensamblador). No se oia de los Sistemas Operativos el modo usual de operacion consistia en que el programador reservaba cierto periodo en una hoja de reservacion pegada a la pared, iba al cuarto de la maquina, insertaba su conexion a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o mas bulbos se quemara durante la ejecucion. La inmensa mayoria de los problemas eran calculos numericos directos, por ejemplo, el calculo de valores para tablas de senos y cosenos.
A principio de la decada de los 50's la rutina mejoro un poco con la introduccion de las tarjetas perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo demas el proceso era el mismo.
2a. Etapa. (1955-1965): Transistores y Sistemas de Procesamiento por lotes.
La introduccion del transistor a mediados de los años 50's modifico en forma radical el panorama. Las computadoras se volvieron confiables de forma que podian fabricarse y venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma.
Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por demas rapidas vias para reducir el tiempo invertido. La solucion que, por lo general se adopto, fue la del sistema de procesamiento por lotes.
3ra Etapa (1965-1980): Circuitos integrados y multiprogramacion.

  

La 360 de IBM fue la primera linea principal de computadoras que utilizo los circuitos integrados, lo que proporciono una gran ventaja en el precio y desempeno con respecto a las maquinas de la segunda generacion, construidas a partir de transistores individuales. Se trabajo con un sistema operativo enorme y extraordinariamente complejo. A pesar de su enorme tamano y sus problemas el sistema operativo de la linea IBM 360 y los sistemas operativos similares de esta generacion producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayoria de sus clientes. Tambien popularizaron varias tecnicas fundamentales, ausentes de los sistemas operativos de la segunda generacion, de las cuales la mas importante era la de multiprogramacion.

Otra caracteristica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de computo. Asi, siempre que concluyera un trabajo el sistema operativo podia cargar un nuevo trabajo del disco en la particion que quedara desocupada y ejecutarlo.
4ta Etapa (1980-Actualidad): Computadoras personales.
Un interesante desarrollo que comenzo a llevarse a cabo a mediados de la decada de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos.
En los sistemas operativos de red, los usuarios estan conscientes de la existencia de varias computadoras y pueden conectarse con maquinas remotas y copiar archivos de una maquina a otra. Cada maquina ejecuta su propio sistema operativo local y tiene su propio usuario.
Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando esta compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automatica y eficaz por el sistema operativo. 
                                                     1.4 CLASIFICACION
Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus características:

Sistemas Operativos de multiprogramación (o Sistemas Operativos demultitarea).

Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutación de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicación que se encuentra en primer plano (la que ve el usuario).En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh.
Funciona en los Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea.
Sistema Operativo Monotareas.
Los sistemas operativos monotareas son más primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión.
Sistema Operativo Monousuario.
Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se este ejecutando.
Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y están orientados principalmente por los microcomputadores.
Sistema Operativo Multiusuario.
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).
Sistemas Operativos por lotes.
Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas.
Sistemas Operativos de tiempo real.
Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos.
Sistemas Operativos de tiempo compartido.
Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario.
Sistemas Operativos distribuidos.
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.
Sistemas Operativos de red.
Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware.
Sistemas Operativos paralelos.
En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo.
En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso.

                          1.5 ESTRUCTURA: NIVELES O ESTRACTOS DE DISEÑO
El nucleo o kernel se divide en 5 capas o niveles:
Nivel 1. Gestion de Memoria:Proporciona las facilidades de bajo nivel para la gestion de memoria secundaria necesaria para la ejecucion de procesos.
Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas.
Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por los procesos.
Nivel 4. Informacion o Aplicacion o Interprete de Lenguajes: Facilita la comunicacion con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes.
                                                            
 1.6 NUCLEO

El Kernel consiste en la parte principal del codigo del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, en otras palabras, el kernel es el corazon del sistema operativo.

Cada sistema operativo tiene un tipo distinto de kernel: asi los Unix mas tradicionales como FreeBSD usan un kernel " monolitico" en el que esta todo compilado dentro, otros usan los llamados "microkernels" como el Darwin, Hurd e incluso Windows (krnl32.dll). GNU/Linux usa un kernel "modular" (vmlinuz); un nucleo bastante grande comparado con un microkernel, pero que es capaz de delegar funciones en los llamados " modulos" , partes independientes del nucleo que pueden ser incorporadas dinamicamente si hacen falta y luego descargadas si molestan. Asi se pueden cargar "drivers" para hardware, firewall o funciones especiales de red (ppp, rdsi, etc) cuando se necesiten y cuando por ejemplo, se cierre la conexion a internet, liberar la memoria que usaba ese modulo.

Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulacion de archivos con nombre, va asignando espacio y acceso de datos en memoria.
El nucleo o kernel realiza diferentes funciones tales como:
·                     Manejo de interrupciones.
·                     Creacion y destruccion de procesos.
·                     Cambio de estado de los procesos.
·                     Despacho
·                     Suspension y reanudacion de procesos.
·                     Sincronizacion de procesos.
·                     Comunicacion entre procesos.
·                     Manipulacion de los bloques de control de procesos.
·                     Apoyo para las actividades de entrada/salida.
·                     Apoyo para asignacion y liberacion de memoria.
·                     Apoyo para el sistema de archivos.
·                     Apoyo para el mecanismo de llamada y retorno de un procedimiento.
·                     Apoyo para ciertas funciones de contabilidad del sistema.
El nucleo y los procesos
Una definicion mas especifica de lo que es el nucleo ( Kernel ) de un sistema operativo es: un conjunto de rutinas cuya mision es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalacion. Toda esta gestion la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema.
El esquema general de la gestion del procesador, es el siguiente: 
·                     Definicion y concepto de proceso.
·                     El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado del proceso.
·                     Estados por los que pasa un proceso a lo largo de su existencia en la computadora.
·                     Operaciones que se pueden realizar sobre un proceso.
·                     Clasificacion de los procesos segun su forma de ejecucion, de carga, etc.
Por proceso debe entenderse: un programa en ejecucion junto con el entorno asociado (registros, variables ,etc.). 

No hay comentarios.:

Publicar un comentario