INTRODUCCION A LOS SISTEMAS OPERATIVOS


                     Resultado de imagen para SISTEMAS OPERATIVOS


Sin el software, una computadora no es más que una masa metálica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar información, encontrar errores de ortografía en manuscritos, tener aventuras e intervenir en muchas otras valiosas actividades para ganar el sustento. El software para computadoras puede clasificarse en general en dos clases: los programas de sistema, que controlan la operación de la computadora en si y los programas de aplicación, los cuales resuelven problemas para sus usuarios. El programa fundamental de todos los programas de sistema es el sistema operativo (SO), que controla todos los recursos de la computadora y proporciona la base sobre la cual pueden escribirse los programas de aplicación.




1.1 DEFINICIÓN Y CONCEPTO





El conjunto de programas informáticos que permite la administración eficaz de los recursos de una computadora es conocido como sistema operativo o software de sistema. Estos programas comienzan a trabajar apenas se enciende el equipo, ya que gestionan el hardware desde los niveles más básicos y permiten además la interacción con el usuario.

Cabe destacar que los sistemas operativos no funcionan sólo en las computadoras. Por el contrario, este tipo de sistemas se encuentran en la mayoría de los dispositivos electrónicos que utilizan microprocesadores: el software de sistema posibilita que el aparato cumpla con sus funciones (por ejemplo, un teléfono móvil o un reproductor de DVD).

El sistema operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc.


Un sistema operativo es un programa que actúa como intermediario entre los usuarios y el hardware de una computadora. El propósito de un sistema operativo es ofrecer un ambiente en el que un usuario pueda ejecutar programas.

1.2 FUNCIONES Y CARACTERÍSTICAS






FUNCIONES:
  1. Administración del procesador: el sistema operativo administra la distribución del procesador entre los distintos programas por medio de un algoritmo de programación. El tipo de programador depende completamente del sistema operativo, según el objetivo deseado.
  2. Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de gestionar el espacio de memoria asignado para cada aplicación y para cada usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el sistema operativo puede crear una zona de memoria en el disco duro, denominada memoria virtual. La memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la memoria RAM disponible en el sistema. Sin embargo, esta memoria es mucho más lenta.
  3. Gestión de entradas/salidas: el sistema operativo permite unificar y controlar el acceso de los programas a los recursos materiales a través de los drivers (también conocidos como administradores periféricos o de entrada/salida). 
  4. Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que las aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesitan para funcionar. Esto significa que si una aplicación no responde correctamente puede "sucumbir". 
  5. Administración de autorizaciones: el sistema operativo se encarga de la seguridad en relación con la ejecución de programas garantizando que los recursos sean utilizados sólo por programas y usuarios que posean las autorizaciones correspondientes. 
  6. Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el sistema de archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios. 
  7. Gestión de la información: el sistema operativo proporciona cierta cantidad de indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto del equipo.
CARACTERÍSTICAS:


  • Sistema Operativo tiene las siguientes características:
  • Conveniencia. Un Sistema Operativo hace más conveniente el uso de una computadora.
  • Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más eficiente posible.
  • Habilidad para evolucionar. Un Sistema Operativo deberá construirse de manera que permita el desarrollo, prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio.
  • Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos.
  • Relacionar dispositivos (gestionar a través del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos periféricos, cuando el usuario así lo requiera.
  • Organizar datos para acceso rápido y seguro.
  • Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalación y uso de las redes de computadoras.
  • Procesamiento por bytes de flujo a través del bus de datos.
  • Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora.
  • Técnicas de recuperación de errores.
  • Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informándoles si esa aplicación está 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.

1.3 EVOLUCIÓN HISTÓRICA

*1940 Generación cero:
La generación cero abarca la década de los años cuarenta y se caracteriza porque no existían los sistemas operativos, el usuario debía codificar manualmente en lenguaje máquina las instrucciones que le permitían usarlos recursos de la computadora y controlar así la ejecución de sus programas.

*1950 Primera generación:
La primera generación abarca los años cincuenta. Surge el concepto de sistema operativo cuando los laboratorios de investigación de la General Motors desarrollaron el primer sistema operativo para su computadora IBM 701. En 1955 General Motors y North American Aviation desarrollan el sistema operativo para la computadora IBM 704, básicamente lo único que hacía era comenzar la ejecución de un programa cuando terminaba el anterior; para 1957 ya se habían desarrollado, de manera particular, distintos sistemas operativos para ese modelo de computadora.
 Los primeros sistemas operativos tenían como objetivo eliminar el tiempo perdido entre el término de un proceso y el inicio de otro, esto se logró desarrollando un sistema operativo que realizara procesos por lotes, en donde los programas se ejecutaban uno después del otro hasta analizar el lote completo, o si antes se producía un error, el programa en ejecución tenía control total de la máquina.

*1960 Segunda generación:
La segunda generación abarca la primera mitad de los años sesenta. El elevado costo de operación de las computadoras de esos tiempos obligó a buscar formas de optimizar el tiempo de ejecución de los programas, mejorando el rendimiento de las computadoras y aumentando el número de procesos en ejecución por unidad de tiempo. Aparecen conceptos como multiprogramación y multiprocesamiento.
Cuando un programa se ejecutaba y producía una operación de e/s, el programa se detenía hasta que esta operación culminara, estos tiempos de espera originaban tiempos muertos de uso del procesador; sin embargo, con la multiprogramación varios programas podían residir a la vez en memoria y el procesador podía conmutar entre ellos, de esta forma, al compartir el procesador (tiempo de procesamiento) y los demás recursos hardware, se pueden ejecutar varios procesos a la vez. El multiprocesamiento significó que se utilizaban varios procesadores en una misma computadora.
Durante esta generación aparecen también los primeros sistemas de tiempo real dedicados al control de procesos industriales y monitoreo de miles de puntos con fines militares, la prioridad en estos sistemas era obtener una velocidad de respuesta en tiempo real. Por ejemplo, el incremento de la temperatura en un reactor nuclear debía comunicarse rápidamente para tomar las acciones necesarias y evitar una catástrofe nuclear. También surge Master Control Program (MCP) y SABRE de IBM de Burroughs diseñado para su computadoraB5000. MCP fue desarrollado con lenguaje de alto nivel e incorporó muchas de las características de los sistemas actuales: multiprogramación, multiproceso, memoria virtual y capacidad de depurar el código fuente. Mientras que SABRE era un sistema de tiempo compartido con terminales remotas que podía interactuar directamente con el usuario.
El primer sistema de tiempo compartido de propósito general fue el Compatible Time-Sharing System (CTSS), desarrollado para la IBM 709/7090, sus características más relevantes fueron: Empleo de numerosas terminales, cada terminal parecía tener disponible todos los recursos hardware y software de la computadora, alta velocidad de procesamiento y disponía de varios compiladores, utilidades y aplicaciones.

*1970 Tercera generación:.
La tercera generación abarca hasta mediados de los años setenta. Comienza con la familia de computadoras IBM/360 y el sistema operativo OS/360 que incorporaba una mayor gama de utilidades que facilitaban el uso dela computadora y se podían adquirir actualizaciones para el mismo SO. 
En esta generación surgen grandes y costosos sistemas operativos. Los sistemas operativos aumentan sus prestaciones y gestionan eficientemente los recursos del ordenador y el usuario experimenta mayor facilidad para su manejo. IBM separa los costos de hardware y software, por lo que el sistema operativo se puede adquirir en independencia del hardware.

*1980 Cuarta generación:
La cuarta generación comprende hasta mediados de los años ochenta. Los sistemas operativos aumentan sus prestaciones y gestionan eficientemente los recursos del ordenador. Es en esta época donde el usuario experimenta una mayor facilidad para su manejo. Surgen sistemas operativos tales como: Honeywell, VMS yVM/370 de IBM y el Scope de Control Data, todos ellos disponían de multiprogramación, tiempo compartido, memorial virtual, procesos secuenciales que operan por medio de semáforos, sistema jerárquico de archivos ye/s independiente del dispositivo.
En esta generación surge el sistema operativo UNIX, desarrollado en lenguaje de alto nivel (lenguaje C) que le otorga una alta portabilidad, desde grandes computadoras hasta computadoras personales. En los años 80 se desarrolla una gran cantidad de sistemas operativos para computadoras personales (de 8 y 16 bits) entre los que destacan: MS-DOS, Xenix, Apple-DOS y CP/M.
Los sistemas operativos incorporan programas de comunicaciones y evolucionan hasta adaptarse para gestionar redes de computadoras. Sun desarrolla el sistema de archivos distribuidos NFS (Network File System) que ofrecía un espacio único de nombres de archivos para los nodos de una red.

*1990 Quinta generación:
La quinta generación abarca de los años noventa a la fecha. Cobran importancia los entornos gráficos o GUI’s(Interfaces Gráficas de Usuario - Graphical User Interface) colocándose como las más populares la de Windows, Linux y Mac, desplazando a los sistemas operativos con interfaz en modo consola originados en la segunda generación.
En esta generación se explota al máximo el concepto de multitareas para mantener trabajando al procesador con más de un proceso a la vez, es decir, el procesador puede correr parte de un  proceso A y mientras se realizan operaciones de e/s de este proceso, el procesador puede ejecutar un proceso B. También se desarrollan sistemas operativos que permiten realizar procesamientos en paralelo, permitiendo la comunicación y sincronización de procesos extremadamente rápidos.

1.4 CLASIFICACIÓN


1. Por el numero de usuarios:
  • Sistemas operativos monousuarios
Los sistemas operativos monousuarios son aquellos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales típicamente se han clasificado en este renglón.

  • Sistemas operativos multiusuarios
Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente.



2. Por el numero de tarea:
  • Sistemas operativos monotareas
Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez.

  • Sistemas operativos multitareas
Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad.


3. Número de procesadores:
  • Sistemas operativos uniproceso
Un sistema operativo uniproceso es aquél capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS.

  • Sistemas operativos 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 son enviados indistintamente a cualquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema.

1.5 ESTRUCTURA





1. Sistema Monolítico:

 Estos sistemas no tienen una estructura definida, sino que son escritos como una colección de procedimientos donde cualquier procedimiento puede invocar a otro.
Ejemplos de estos sistemas pueden ser MS-DOS o Linux (aunque incluye algo de capas). Es importante tener en cuenta que ningún sistema es puramente de un tipo.


2. Sistema en capas:

 El diseño se organiza en una jerarquía de capas, donde los servicios que brinda una capa son consumidos solamente por la capa superior. La capa 0 es del Hardware y la N es la de los procesos de Usuario.
 Estos sistemas tienen como ventaja que son modulares y la verificación se puede hacer a cada capa por separado (son más mantenibles). Sin embargo el diseño es muy costoso y es menos eficiente que el sistema monolítico ya que pierde tiempo pasando por cada capa.


3. Sistema con micronúcleo:

La idea consiste en tener un núcleo que brinde los servicios mínimos de manejo de procesos, memoria y que provea la comunicación entre procesos. Todos los restantes servicios se construyen como procesos separados del micronúcleo, que ejecutan en modo usuario. Estos sistemas tienen como ventaja un diseño simple y funcional, que aumenta la portabilidad y la escalabilidad. Para agregar un nuevo servicio no es necesario modificar el núcleo, y es más seguro ya que los servicios corren en modo usuario.


4. Sistemas por módulos:

La mayoría de los sistemas operativos modernos implementan este enfoque. Lo que caracteriza este tipo de estructura es que el kernel se compone por módulos, y cada uno de estos módulos se encuentra separado de forma independiente, tal que, si alguno falla no afecta a los otros, ni al núcleo, por ejemplo, si el módulo de software que se encarga de controlar el proceso de Telnet en una unidad se bloquea o es atacado, sólo este proceso se verá afectado. El resto de las operaciones siguen sus funciones habituales. Los módulos se pueden cargar dinámicamente en el núcleo cuando se necesiten, ya sea, en tiempo de ejecución o durante el arranque del sistema. El kernel dispone de los componentes fundamentales y se conectan directamente con servicios adicionales

Ejemplos:
  • Unix modernos
  • Solaris
  • Linux
  • Mac OSX


1.6 NÚCLEO



El núcleo normalmente representa sólo una pequeña parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el código que más se utiliza. Por esta razón, el núcleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal sólo cuando se necesitan.
Los núcleos se diseñan para realizar "el mínimo" posible de procesamiento en cada interrupción y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el núcleo se habilita para atender otras interrupciones.

El Kernel consiste en la parte principal del código 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; cada sistema operativo tiene un tipo distinto de kernel.

El núcleo de un sistema operativo normalmente contiene el código necesario para realizar las siguientes funciones:
  • Manejo de interrupciones.
  • Creación y destrucción de procesos.
  • Cambio de estado de los procesos.
  • Despacho.
  • Suspensión y reanudación de procesos.
  • Sincronización de procesos.
  • Comunicación entre procesos.
  • Manipulación de los bloques de control de procesos.
  • Apoyo para las actividades de entrada/salida.
  • Apoyo para asignación y liberación 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.
  • Núcleo o Kernel y niveles de un Sistema Operativo.

El Kernel consiste en la parte principal del código 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, este se divide en 5 capas:
  • Nivel 1. Gestión de Memoria: que proporciona las facilidades de bajo nivel para la gestión de memoria secundaria necesaria para la ejecución 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 procesos.
  • Nivel 4. Información o Aplicación o Intérprete de Lenguajes: Facilita la comunicación con los lenguajes y el sistema operativo para aceptar las órdenes en cada una de las aplicaciones. Cuando se solicitan 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 manipulación de archivos con nombre, va asignando espacio y acceso de datos en memoria.