lunes, 8 de septiembre de 2014


Introducción a los sistemas operativos


 1.1 Concepto y definición de Sistemas Operativos

Un Sistema Operativo es una parte importante de cualquier sistema de computacion.
Un sistema de computacion puede dividirse en cuatro componentes: el hardware,
el Sistema Operativo, los programas de aplicacion y los usuarios. El hardware (Unidad
Central de Procesamiento (UCP), memoria y dispositivos de entrada/salida (E/S))
proporciona los recursos de computacion basicos. Los programas de aplicacion
(compiladores, sistemas de bases de datos, juegos de video y programas para negocios)
definen la forma en que estos recursos se emplean para resolver los problemas de
computacion de los usuarios.

u1-2
Recursos administrados por el Sistema Operativo
Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definicion exacta, es decir una que sea estandar; a continuacion se presentan algunas:
1.- Se pueden imaginar un Sistema Operativo como los programas, instalados en el software o firmware, que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de computo "; los sistemas operativos ponen dicha capacidad de a.C. al alcance de los usuarios y administran cuidadosamente el hardware para lograr un buen rendimiento.
2.- Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que administran es el hardware del computador; ademas de los procesadores, los medios de almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicacion y los datos.
3.- Un Sistema Operativo es un programa que actua como intermediario entre el usuario y el hardware del computador y su proposito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computacion se use de manera comoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente.
4.- Un Sistema Operativo es un conjunto de programas que controla la ejecucion de programas de aplicacion y actua como una interfaz entre el usuario y el hardware de una computadora, esto es, un Sistema Operativo explota y administra los recursos de hardware de la computadora con el objeto de proporcionar un conjunto de servicios a los usuarios del sistema.
En resumen, se podria decir que los Sistemas Operativos son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son:
Gestionar el hardware.- Se refiere al hecho de administrar de una forma mas eficiente los recursos de la maquina.
Facilitar el trabajo al usuario.- Permite una comunicacion con los dispositivos de la maquina.
El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de codigo que se encuentra en el procesador, el cual carga el BIOS, y este a su vez carga el Sistema Operativo que carga todos los programas de aplicacion y software variado.



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

Los Sistemas Operativos, al igual que el Hardware de los computadores, han sufrido una serie de cambios revolucionarios llamados generaciones.

En el caso del Hardware, las generaciones han sido marcadas por grandes avances en los componentes utilizados, pasando de válvulas ( primera generación ) a  transistores ( segunda generación ) a circuitos integrados ( tercera generación), a circuitos integrados de gran y muy gran escala (cuarta generación).


 


Cada generación Sucesiva de hardware ha ido acompañada de reducciones substanciales en los costos, tamaño, emisión de calor y consumo de energia de energía, y por incrementos notables en velocidad y capacidad.




Generación Cero (década de 1940)

Los primeros sistemas computacionales no poseían sistemas operativos. Los usuarios tenían completo acceso al  de la maquina. Todas las instrucciones eran codificadas a mano.

Primera Generacion (década de 1950)

Los sistemas operativos de los años cincuenta fueron diseñados para hacer mas fluida la transición entre trabajos. Antes de que los sistemas fueran diseñados, se perdía un tiempo considerable entre la terminación de un trabajo y el inicio del siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunían por grupos o lotes. Cuando el trabajo estaba en ejecución, este tenia control total de la maquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual limpiaba y leía e iniciaba el trabajo siguiente.
Al inicio de los 50's esto había mejorado un poco con la introduccion de tarjetas perforadas (las cuales servían para introducir los programas de lenguajes de máquina), puesto que ya no había necesidad de utilizar los tableros enchufables.


Además el laboratorio de investigacion General Motors implementó el primer sistema operativo para la IBM 701. Los sistemas de los 50's generalmente ejecutaban una sola tarea, y la transición entre tareas se suavizaba para lograr la máxima utilización del sistema. Esto se conoce como sistemas de procesamiento por lotes de un sólo flujo, ya que los programas y los datos eran sometidos en grupos o lotes.



La introducción del transistor a mediados de los 50's cambió la imagen radicalmente.
Se crearon maquinas suficientemente confiables las cuales se instalaban en lugares especialmente acondicionados, aunque sólo las grandes universidades y las grandes corporaciones o bien las oficinas del gobierno  se podían dar el lujo de tenerlas.


Para poder correr un trabajo (programa), tenían que escribirlo en papel (en Fortran o en lenguaje ensamblador) y después se perforaría en tarjetas. Enseguida se llevaría la pila de tarjetas al cuarto de introducción al sistema y la entregaría a uno de los operadores. Cuando la computadora terminara el trabajo, un operador se dirigiría a la impresora y desprendería la salida y la llevaría al cuarto de salida, para que la recogiera el programador.



Segunda Generacion (a mitad de la década de 1960)

La característica de los sistemas operativos fue el desarrollo de los sistemas compartidos con multiprogramación, y los principios del multiprocesamiento. En los sistemas de multiprogramación, varios programas de usuario se encuentran al mismo tiempo en el almacenamiento principal, y el procesador se cambia rápidamente de un trabajo a otro. En los sistemas de multiprocesamiento se utilizan varios procesadores en un solo sistema computacional, con la finalidad de incrementar el poder de procesamiento de la maquina.
La independencia de dispositivos aparece después. Un usuario que desea escribir datos en una cinta en sistemas de la primera generación tenia que hacer referencia especifica a una unidad de cinta particular. En la segunda generación, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto numero de pistas y cierta densidad.
Se desarrollo sistemas compartidos, en la que los usuarios podían acoplarse directamente con el computador a través de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron utilizados en el control de procesos industriales. Los sistemas de tiempo real se caracterizan por proveer una respuesta inmediata.

Tercera Generacion (mitad de década 1960 a mitad década de 1970)

Se inicia en 1964, con la introducción de la familia de computadores Sistema/360 de IBM. Los computadores de esta generación fueron diseñados como sistemas para usos generales . Casi siempre eran sistemas grandes, voluminosos, con el propósito de serlo todo para toda la gente. Eran sistemas de modos múltiples, algunos de ellos soportaban simultáneamente procesos por lotes, tiempo compartido, procesamiento de tiempo real y multiprocesamiento. Eran grandes y costosos, nunca antes se había construido algo similar, y muchos de los esfuerzos de desarrollo terminaron muy por arriba del presupuesto y mucho después de lo que el planificador marcaba como fecha de terminación.


Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual, en un principio, no estaban acostumbrados los usuarios.

Cuarta Generación (mitad de década de 1970 en adelante)

Los sistemas de la cuarta generación constituyen el estado actual de la tecnología  Muchos diseñadores y usuarios se sienten aun incómodos, después de sus experiencias con los sistemas operativos de la tercera generación.
Con la ampliación del uso de redes de computadores y del procesamiento en línea los usuarios obtienen acceso a computadores alejados geográficamente a través de varios tipos de terminales.
Los sistemas de seguridad se ha incrementado mucho ahora que la información pasa a través de varios tipos vulnerables de líneas de comunicación  La clave de cifrado esta recibiendo mucha atención  han sido necesario codificar los datos personales o de gran intimidad para que; aun si los datos son expuestos, no sean de utilidad a nadie mas que a los receptores adecuados.


El porcentaje de la población que tiene acceso a un computador en la década de los ochenta es mucho mayor que nunca y aumenta rápidamente.
El concepto de maquinas virtuales es utilizado. El usuario ya no se encuentra interesado en los detalles físicos de; sistema de computación que esta siendo accedida. En su lugar, el usuario ve un panorama llamado maquina virtual creado por el sistema operativo.
Los sistemas de bases de datos han adquirido gran importancia. Nuestro mundo es una sociedad orientada hacia la información, y el trabajo de las bases de datos es hacer que esta información sea conveniente accesible de una manera controlada para aquellos que tienen derechos de acceso.





1.4 Clasificación de los sistemas operativos



Con el paso de los tiempos los sistemas operativos fueron cambiando de muchas maneras, por ejemplo:
·         Sistemas Operativos de multitarea: con este sistema operativo es que la computadora procesa diferentes tareas al mismo tiempo. Existen varios tipos de multitareas. Estos sistemas Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización.
Los sistemas operativos que soportan estas multitareas son: UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2.

·         Sistema Operativo Monotareas: los sistemas operativos monotareas son más primitivos y es todo lo contrario a los de multitareas 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 está imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión. El sistema operativo que soporta el monotareas  es DOS.


·         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 está utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuarios. Los sistemas operativos que soportan el monousuario son DOS e incluso  en  el actual Windows XP y sus predecesores.

·         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.                                                                                     Los sistemas operativos que soportan el multiusuario son con el Linux, Windows 2003 y sus predecesores.


·         Sistemas Operativos por lotes: Con este sistema operativo 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,pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos. Los sistemas operativos que soportan por lotes son el SCOPE, del DC6600, y el EXEC II para el UNIVAC 1107.


·         Sistemas Operativos de tiempo real: este sistema operativo 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.Los sistemas operativos que soportan el tiempo real son  VxWorks, Solaris, Lyns OS y Spectra.



·         Sistemas Operativos de tiempo compartido: estos sistemas Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario.Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Los sistemas operativos que soportan el tiempo compartido son  Multics, OS/360 y DEC-10.

·      Sistemas Operativos distribuidos: Este sistema operativo permite 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 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: Los sistemas operativos de red son aquellos que mantienen a dos o más computadoras unidas a través de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware.  Los sistemas operativos  más utilizados que soportan la red son Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.

·         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. Así, en lugar de esperar a que el proceso termine de ejecutarse, regresa a atender al usuario inmediatamente.Los sistemas operativos que soportan a los paralelos sonAlpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.






1.5 Estructuras niveles o estratos 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. 
    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.). 
 HGHJH



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.
HGH
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.


No hay comentarios:

Publicar un comentario