sistemas operativos

sistemas operativos
¡Conocelos a fondo!

miércoles, 30 de abril de 2014

Sincronizacion de procesos



El primer gran avance en la resolución de los problemas de los procesos concurrentes llego en 1965,  con el tratado de Dijkstra  sobre la cooperación entre procesos secuenciales (DIJK65) dijkstra estaba interesado en el diseño de un sistema operativo como un conjunto de procesos secuenciales cooperantes y en el desarrollo de mecanismos eficientes y fiables para dar soporte  a la cooperación. Los procesos de usuario podrán utilizar estos mecanismos eficientes y fiables para dar soporte a la cooperación.

Los procesos de usuario podrán utilizar estos mecanismos en tanto que el procesador y el sistema operativo los hagan disponibles.

A fin de facilitar la escritura de programas correctos, hoare y brinch Hansen  propusieron una primitiva de sincronización de nivel más alto llamada monitor. Sus propuestas tenían  pequeñas diferencias, que describiremos mas adelante. Un monitor es una colección de procedimientos, variables y estructuras de datos que se agrupan en un tipo especial de modulo o paquete. Los procesos pueden invocar los procedimientos de un monitor en el momento en que deseen, pero no pueden acceder directamente a las estructuras de datos internas del monitor desde procedimientos declarados afuera del monitor.

Es el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros. A diferencia  de otros problemas de la gestión concurrente de procesos, para el caso general no existe una solución eficiente. En esta sección, se examinara la naturaleza del problema del interbloqueo.

La estrategia de prevención del interbloqueo consiste, a grandes rasgos,  en diseñar un sistema de manera que está excluida, a priori, la posibilidad de interbloqueo. Los métodos para prevenir el interbloqueo son de dos tipos.  Los métodos indirectos consisten en impedir la aparición de alguna  de las tres condiciones necesarias. Los métodos directos consisten en evitar la aparición del círculo vicioso de espera.

Se examinaran a continuación las técnicas relacionadas con cada una de las cuatro condiciones.
 


En general, la primera de las cuatro condiciones no puede anularse. Si el acceso a un recurso necesita exclusión mutua, el sistema operativo debe soportar la exclusión mutua.  Algunos recursos, como los archivos, pueden permitir varios accesos para lectura, pero solo accesos exclusivos para escritura. Incluso en este caso, se puede producir interbloqueo si más de un proceso necesita permiso de escritura.
 


La condición de retención y espera puede prevenirse exigiendo que todos los procesos soliciten todos los recursos que necesiten a un mismo tiempo y bloqueando el proceso hasta que todos los recursos puedan concederse  simultáneamente. Esta solución resulta ineficiente por dos factores. En primer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando que se concedan todas sus solicitudes de recursos, cuando de hecho podría haber avanzado con solo algunos de los recursos.  Y en segundo lugar, los recursos asignados a un proceso pueden permanecer sin usarse durante periodos considerables, tiempo durante el cual se priva del acceso a otros procesos

La condición de no apropiación puede prevenirse de varias formas. Primero, si a unos procesos que retiene ciertos recursos se le deniega una nueva solicitud, dicho procesos deberá liberar sus recursos anteriores y solicitarlos de nuevo, cuando sea necesario, junto con el recurso adicional.


La condición del círculo vicioso de espera puede prevenirse definiendo una ordenación lineal de los tipos de recursos. Si a un proceso se le han asignado recursos de tipo R, entonces solo podrá realizar peticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenación.
 


Las estrategias de prevención del interbloqueo son muy conservadoras; solucionan el problema del interbloqueo  limitando el accesos a los recursos e imponiendo restricciones a  los procesos. En el lado opuesto, las estrategias de  detección del interbloqueo no limitan el acceso a los recursos ni restringen las acciones de los procesos. Con detección del interbloqueo, se concederán los recursos que los procesos necesiten  siempre que sea posible. Periódicamente, el sistema operativo ejecuta un algoritmo que permite detectar la condición de círculo vicioso de espera descrita en el punto 4 anterior. Puede emplearse cualquier algoritmo de detección de ciclos en grafos dirigidos.


Un sistema que pretenda recuperarse  del interbloqueo, debe invocar un  algoritmo de detección cuando lo considere oportuno.

sábado, 19 de abril de 2014

Concurrencia y secuencialidad


La concurrencia es el punto clave de los tres campos anteriores y fundamentales para el diseño de sistemas operativos. La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos de varios procesos y asignación del tiempo  de procesador a los procesos. Se verá que estas cuestiones no solo surgen en entornos de multiprocesadores y procesos distribuidos, sino incluso en sistemas multiprogramados con un solo procesador.
 
 

Hay varias formas de satisfacer los requisitos de exclusión mutua. Una manera es dejar la responsabilidad a los procesos que deseen ejecutar concurrentemente. Así pues, tanto si  son programas del sistema como de aplicación, los procesos deben coordinarse unos  con otros para cumplir la exclusión mutua, sin ayuda por parte del lenguaje de programación o del sistema operativo. Estos métodos se conocen como soluciones por software. Aunque las soluciones por software son propensas a errores y a una fuerte carga de proceso, resulta útil estudiar estos métodos para tener un mejor entendimiento de la complejidad del proceso concurrente. Un segundo método propone el uso de instrucciones de la maquina a tal efecto. Estas tienen la ventaja de reducir  la sobrecarga. El tercer método consiste en dar algún tipo de soporte en el sistema operativo.

jueves, 17 de abril de 2014

Administracion de procesos y del procesador.


El concepto de proceso es fundamental en la estructura de los sistemas operativos. Este término fue acuñado por primera vez por los diseñadores en los años 60. Es un término algo más general que el de trabajo. Se han dado muchas definiciones para el término proceso, entre las que se incluyen las siguientes:

Ø  Un programa de ejecución.

Ø  El “espíritu animado” de un programa.

Ø  La entidad que puede ser asignada al procesador y ejecutada por el.

Ø  Estados y transiciones de los procesos

El estado de un proceso puede plasmarse como un gráfico el  cual asemeja una máquina virtual. Cuando ninguno de los procesos  en memoria principal está en estado listo el sistema operativo expulsa hacia el disco a alguno de los procesos que este bloqueado y lo  pasa a alguna lista de suspendidos.



En la mayoría de los sistemas operativos, estas dos características son, de hecho, la esencia de un proceso.  Sin embargo, algunos argumentos  pueden convencer de estas dos características  son independientes y que deben ser tratadas de manera independiente por el sistema operativo. Esto se hace así en una serie de sistemas operativos, en partículas en algunos sistemas operativos de desarrollo reciente. Para distinguir estas dos características, la unidad de expedición se conoce como hilo (thread) o proceso ligero (lightweight process). Mientras que a la unidad de propiedad de los recursos se le suele llamar procesos o tarea.

 

miércoles, 9 de abril de 2014

Nucleo o kernel


El Núcleo o kernel es una colección de módulos de software que se ejecutan en forma privilegiada, lo que significa que tienen acceso pleno a los recursos del sistema. El Núcleo normalmente representa solo 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.
 
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.


Casi todos los computadores tienen un mecanismo mediante el cual otros modulos pueden interrumpir la ejecución normal de procesador. Enumera las clases mas comunes de interrupciones.

Las interrupciones aparecen,  principalmente, como una vía para mejorar la eficiencia del procesamiento. Por ejemplo, la mayoría de los dispositivos externos son mucho más lentos.
 

Con las interrupciones, el procesador se puede dedicar a la ejecución de otras instrucciones mientras una operación de E/S está en proceso. Al igual que antes, el programa de usuario alcanza un punto en el que  hace una llamada al sistema en forma de una llamada escribir. El programa E/S que se invoca consta solo del código de preparación y de la orden concreta de E/S. Después de que se ejecuten estas pocas instrucciones, se devuelve el control al programa de usuario. Mientras tanto, el dispositivo externo estará ocupado recibiendo datos desde la memoria del computador e imprimiéndolos. Esta operación E/S se lleva a cabo concurrentemente con la ejecución de las instrucciones del programa de usuario.


Optimiza la eficiencia del sistema, de acuerdo con criterios considerados importantes para el ambiente del sistema operativo. Sus funciones son:

Ø  Examina la prioridad de los procesos.

Ø  Controla los dispositivos de periféricos conectados a la máquina.

Ø  Cambio de contexto.

Ø  Cambio a modo usuario.
 

Es una función básica de los sistemas operativos. Los procesos pueden comunicarse entre sí a través de compartir espacios de memoria, ya sean variables compartidas o buffers o a través de las herramientas provistas por las rutinas de IPC.

La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre sí. Normalmente a través de un sistema de bajo nivel de paro de mensajes que ofrece la red subyacente.

La comunicación se establece siguiendo una serie de reglas (protocolos de comunicación).

 Los protocolos desarrollados para internet son los mayormente usados: protocolo de internet (capa de red),  protocolo de control de transmisión (capa de transporte) y protocolo de transferencia de archivos, protocolo de transferencia de hipertexto  (capa de aplicación).
 

 

lunes, 7 de abril de 2014

Introduccion al sistema operativo

Introducción al sistema operativo



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. En sistemas grandes, el sistema operativo tiene incluso mayor responsabilidad y poder, es como un policía de tráfico, se asegura de que los programas y usuarios que están funcionando al mismo tiempo no interfieran entre ellos. El sistema operativo también es responsable de la seguridad, asegurándose de que los usuarios no autorizados no tengan acceso al sistema.


Un sistema operativo es un software que proporciona un acceso sencillo y seguro  al soporte físico del ordenador (hardware), ocultando al usuario detalles de la implementación particular y creando la ilusión de existencia de recursos ilimitados o abundantes.


Un sistema operativo es un programa que controla la ejecución de los programas de aplicación y que actúa como interfaz entre el usuario de un computador y el hardware de la misma. Puede considerarse que un sistema operativo tiene tres objetivos o lleva a cabo tres funciones:

Comodidad: un sistema operativo hace que un computador sea más cómodo de utilizar.

Eficiencia: un sistema operativo permite que los recursos de un sistema informático se aprovechen de una manera más eficiente.

Capacidad de evolución: un sistema operativo debe construirse de modo que permita el desarrollo efectivo, la verificación y la introducción de nuevas funciones en el sistema y, a la vez, no interferir en los servicios que brinda.



Los sistemas operativos han estado evolucionando durante muchos años. La primera computadora digital verdadera fue diseñada por el matemático ingles charles Babbage ( 1792-1871). Aunque Babbage invirtió la mayor parte de su vida y su fortuna tratando de construir su “maquina analítica”, nunca logro que funcionara correctamente porque era totalmente mecánica, y la tecnología de su época no podía producir las ruedas, engranes y levas con la elevada precisión que el requería. Huelga decir que la maquina analítica no contaba con un sistema operativo.

Como acotación histórica interesante, diremos que Babbage se dio cuenta de que necesitaría software para su máquina analítica, así que contrato a una joven mujer, Ada Lovelace, hija del famoso poeta británico, Lord Byron, como la primera programadora de la historia. El lenguaje de programación Ada recibió su nombre en honor a ella.

Ø  La primera generación (1945-55): tubos de vacío y tableros de conmutación.

Ø  La segunda generación (1955-65): transistores y sistemas por lote
 


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 mostraran diversos tipos de sistemas operativos que existen en la actualidad:

Ø  Sistemas operativos de multiprogramación (multitarea).

Ø  Sistema operativo Monotarea.

Ø  Sistema operativo Monousuario.

Ø  Sistema operativo Multiusuario.

Ø  Sistemas operativos por lotes.

Ø  Sistemas operativos de tiempo real.

Ø  Sistemas operativos de tiempo compartido.

Ø  Sistemas operativos distribuidos.

Ø  Sistemas operativos de red.

Ø  Sistemas operativos paralelos.
 


 

Cargador: cualquier programa que requiere ser ejecutado en la computadora, deberá ser transferido desde su lugar de residencia a la memoria principal.

Cargador para el sistema operativo: este programa se encarga de transferir desde algún medio de almacenamiento externo (disco, cinta o tambor) a la memoria principal, los programas del sistema operativo que tienen como finalidad establecer el ambiente de trabajo del equipo de cómputo, existe un programa especial almacenado en memoria ROM que se encarga de accesar a este programa cargador.

Cargador incluido en el sistema operativo: su función es cargar a memoria todos los archivos necesarios para la ejecución de un proceso.

Supervisor (ejecutivo o monitor): es el administrador del sistema que controla todo el proceso de la información por medio de un gran número de rutinas que entran en acción cuando son requeridos funge como enlace entre los programas del usuario y todas las rutinas que controlan los recursos requeridos por el programa para posteriormente continuar con su ejecución.

El supervisor también realiza otras funciones como son: administrar la memoria, las rutinas que controlan el funcionamiento de los recursos de la computadora, manejo de archivos, administración y control de la ejecución de los programas.

Lenguaje de comunicación: es el medio a través del cual el usuario interactúa directamente con el sistema operativo y está formado por comandos que son introducidos a través de algún dispositivo.

Utilería de sistema: son programas  o rutinas del sistema operativo que realizan diversas funciones de uso común o aplicación frecuente como son: clasificar, copiar e imprimir informacion