martes, 23 de agosto de 2011

unidades1 y 2 sistemas operativos1

 







Definición de 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. Clasificación de los Sistemas Operativos
Los sistemas operativos pueden ser clasificados de la siguiente forma:
•Multiusuario: Permite que dos o más usuarios utilicen sus programas al mismo tiempo. Algunos sistemas operativos permiten a centenares o millares de usuarios al mismo tiempo.
•Multiprocesador: soporta el abrir un mismo programa en más de una CPU.
•Multitarea: Permite que varios programas se ejecuten al mismo tiempo.
•Multitramo: Permite que diversas partes de un solo programa funcionen al mismo tiempo.
•Tiempo Real: Responde a las entradas inmediatamente. Los sistemas operativos como DOS y UNIX, no funcionan en tiempo real.


¿Cómo funciona un Sistema Operativo?
Los sistemas operativos proporcionan una plataforma de software encima de la cual otros programas, llamados aplicaciones, puedan funcionar. Las aplicaciones se programan para que funcionen encima de un sistema operativo particular, por tanto, la elección del sistema operativo determina en gran medida las aplicaciones que puedes utilizar.
Los sistemas operativos más utilizados en los PC son DOS, OS/2, y Windows, pero hay otros que también se utilizan, como por ejemplo Linux.
¿Cómo se utiliza un Sistema Operativo?
Un usuario normalmente interactúa con el sistema operativo a través de un sistema de comandos, por ejemplo, el sistema operativo DOS contiene comandos como copiar y pegar para copiar y pegar archivos respectivamente. Los comandos son aceptados y ejecutados por una parte del sistema operativo llamada procesador de comandos o intérprete de la línea de comandos. Las interfaces gráficas permiten que utilices los comandos señalando y pinchando en objetos que aparecen en la pantalla.

El objetivo fundamental de los sistemas operativos
Es gestionar y administrar eficientemente los recursos hardware, permitiendo que se ejecuten concurrentemente varios programas, sin que haya conflictos en el acceso de cada uno de ellos a cada uno de los recursos que necesite, y sin que ningún programa monopolice alguno de ellos. Un sistema operativo es un programa (o conjunto de programas) de control que tiene por objeto facilitar el uso de la computadora y conseguir que ésta se utilice eficientemente. Es un programa de control, ya que se encarga de gestionar y asignar los recursos hardware que requieren los programas.

Sus funciones más importantes son:

-Gestiona los recursos del ordenador en sus niveles más bajos. -Dispone de una interface (elemento que hace posible la fácil comunicación usuario maquina) liberando al usuario


Esta organización sugiere una estructura básica del sistema operativo:

  •  Un conjunto de procedimientos de utilidades que ayudan a los procedimientos de servicio.
     Un conjunto de procedimientos de servicio que lleva a cabo las llamadas al sistema.
En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de ella. Los procedimientos de utilidad hacen cosas necesarias para varios procedimientos de servicio, como por ejemplo, buscar los datos del programa del usuario. Esta división de los procedimientos en tres capas se muestra en la figura 5.2.



Una tendencia de los sistema operativos modernos es la de trasladar el código a capas superiores, y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo. El punto de vista usual es el implantar la mayoría de las funciones del sistema operativo como procesos de usuario. Para solicitar un servicio, como la lectura de un bloque de cierto fichero, un proceso de usuario (denominado en este caso proceso cliente) envía la solicitud a un proceso servidor, que realiza el trabajo y devuelve la respuesta.

En este modelo, que se muestra en la figura 5.3, lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a ficheros, servicio a procesos, servicio a terminales o servicio a la memoria; cada parte es pequeña y controlable. Además, puesto que todos los servidores se ejecutan como procesos en modo usuario, y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia, si hay un error en el servidor de ficheros éste puede fallar, pero esto no afectará en general a toda la máquina.

Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en sistemas distribuidos (véase la figura 5.4). Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se gestiona de forma local, en su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta.



La idea anterior de un núcleo que sólo controla el transporte de mensajes de clientes a servidores, y viceversa, no es totalmente real. Algunas funciones del sistema operativo (como la introducción de órdenes en los registros físicos de los controladores de E/S) son difíciles, si no es que imposible de realizar, a partir de programas de usuario. Existen dos formas de afrontar este problema. Una es hacer que algunos procesos de servidores críticos (por ejemplo, los gestores de los dispositivos de E/S) se ejecuten en realidad en modo núcleo, con acceso total al hardware, pero de forma que se comuniquen con los demás procesos mediante el mecanismo normal de mensajes.

La otra forma es construir una cantidad mínima de mecanismos dentro del núcleo, pero manteniendo las decisiones de política relativos a los usuarios dentro del espacio de los usuarios.

Por ejemplo, el núcleo podría reconocer que cierto mensaje enviado a una dirección especial indica que se tome el contenido de ese mensaje y se cargue en los registros del controlador de algún disco, para iniciar la lectura del disco. En este ejemplo, el núcleo ni siquiera inspeccionaría los bytes del mensaje para ver si son válidos o tienen algún sentido; sólo los copiaría ciegamente en los registros del controlador del disco. Es evidente que debe utilizarse cierto esquema para limitar tales mensajes sólo a los procesos autorizados. La separación entre mecanismos y política es un concepto importante, aparece una y otra vez en diversos contextos de los sistemas operativos.



Análisis de los SO más comerciales.(LINUX, UNÍX, Windows, MACH,OS/2, VAX,MVS, etc.).

LINUX
Creado por Linus Torvalds creándose la primera versión 0.01 en lenguaje ensamblador y C que fue la primera versión en 1991.

ESTRUCTURA

 
·         Shell
·         Núcleo
·         Sistema de archivo
·         Utilidades

 

TIPOS DE ARCHIVOS

 
·         /dev
·         /lib
·         /mnt
·         /proc
·         /sbin
·         /tmp
·         /usr
/var

 

 

 
UNIX
Fue escrita en 1969 por Ken Thompson. En 1973 Ritchie y Thompson recibieron en C el Kernel de Unix, el corazón del Sistema Operativo.

ESTRUCTURA

 
·         Shell
·         WC
·         Kernel
·         Hardware
·         A.Out

 

TIPOS DE ARCHIVOS

 
·         Físico
·         Directorios
·         Enlaces
·         Simbólicos
·         Rígidos
·         Virtuales
·         Dispositivos

 
WINDOWS
Creado por Bill Gates en 1985 año en que surgió.

ESTRUCTURA

 
·         Java
·         Media
·         DownLoads
·         Drives cache
·         TeM twan-32
·         Tasks

 

TIPOS DE ARCHIVOS
Fat 32
N TFS
En algunos sistemas operativos como en los de tiempo compartido, cada programa que se ejecuta, por ejemplo mediante una orden de EJECUTAR dada por el usuario, se trata como un proceso independiente. Estos procesos generados por el O.S se denominan IMPLÍCITOS. Una vez terminada la ejecución de los mismos, su eliminación también la realiza el propio O.S. Así mismo, el O.S proporciona en tiempo real los servicios que son necesarios para que el usuario pueda definir procesos de forma explícita. Los programas acceden a estos servicios realizando LLAMADAS AL.
Estas llamadas pueden aparecer incrustadas en el código de un programa de usuario o del propio sistema, en cuyo caso, se asemejan a llamadas a procedimientos o funciones que dan lugar a transferencias de rutinas del O.S cuando se invocan en tiempo real. Las llamadas al sistema se realizan también, pero de forma indirecta, cuando se dan ordenes al O.S
De este modo, al comienzo de la ejecución del programa principal de un usuario se inicia la ejecución de un proceso. A su vez el proceso podría crear nuevos procesos. En este caso, el proceso que crea otro nuevo se denomina proceso padre (parent process), y el proceso creado de denomina proceso hijo (child process). Una vez creado un proceso hijo, la ejecución de padre e hijo transcurre de manera concurrente.

Definición de proceso
Cuando hablamos de proceso nos referimos a un concepto que se maneja dentro del ámbito de los sistemas operativos, como por ejemplo Windows, GNU/Linux, Mac OS X u otros. En este contexto, un proceso se refiere a las instrucciones que ejecutará el microprocesador mientras lee un programa determinado. Esto también implica a la memoria reservada y a sus contenidos, el estado de ejecución en determinado momento, y la información que permite al sistema operativo planificar.

Entonces, es el mismo sistema operativo el que inicia o termina procesos, y el que se encarga de la comunicación entre los mimos: esto último se produce a partir de que determinados procesos hacen peticiones al SO. En el caso de que un proceso cree otro proceso por sí mismo (algo que se da todo el tiempo), ese derivado es llamado fork, lo cual significa bifurcación. Tales procesos bifurcados pueden no compartir el espacio de memoria con el proceso creado, siendo independientes, o pueden compartir tal espacio de memoria.

Siendo que el procesador o CPU de una computadora ejecutará las instrucciones de los procesos una tras otra (o intercaladas, en el caso de un sistema multitarea), estas se encuentran a mano almacenadas en la memoria principal, generalmente memoria RAM. Tales instrucciones no son otra cosa que programas de computación ejecutándose en lenguaje de máquina, es decir, en código binario solamente entendible por computadoras.

Estados de procesos
Como se ha puesto de manifiesto, el proceso es un elemento dinámico que puede pasar por diferentes estados a lo lo largo de su existencia. De forma general, un proceso puede encontrarse en un instante determinado en uno de los siguientes estados:
  • Activo, Preparado, Bloqueado o suspendido, Nonato y Muerto.
  • La tarea activa es la que está ejecutándose en un instante dado. En el caso de sistemas con un único procesador, sólo puede haber una tarea en dicho estado en cada instante.
  • En el estado de preparado, se encuentran todas las tareas que están listas para ejecutarse pero que esperan a que un/el procesador quede libre(hay otros procesos más prioritarios en ejecución).
  • Las tareas que están a la espera de que se cumpla una condición y que por lo tanto, no están preparadas para ejecutase, se dice que están en el estado bloqueado o suspendido; alguno ejemplos de condición son: que se termine una operación de E/S o que se reciba una señal de sincronización.
  • Un proceso esta muerto cuando ha terminado su ejecución o bien el sistema operativo a detectado un error fatal y lo ha transferido a dicho estado. También es posible que haya entrado él como resultado de un fallo del propio sistema operativo(cuestión que desgraciadamente suele ocurrir frecuentemente en algunos OS.
  • El estado de nonato indica que el programa realmente existe pero todavía no es conocido por el OS.

Control de procesos
A la mayoría de los procesadores dan soporte para dos modos de ejecución por lo menos. Ciertas instrucciones pueden ejecutarse sólo en modo privilegiado. Entre éstas están la lectura o modificación de registros de control (como la palabra de estado del programa), instrucciones primitivas de E/S e instrucciones relativas a la gestión de memoria. Además, se puede acceder a ciertas regiones de memoria sólo en el modo más privilegiado.

El modo menos privilegiado a menudo se conoce como modo de usuario, ya que los pro¬ gramas de usuario ejecutan normalmente en ese modo. Al modo más privilegiado normal¬ mente se le conoce como modo del sistema, modo de controlo modo del núcleo. Este último término se refiere al núcleo del sistema operativo, que es la parte del sistema operativo que lleva a cabo las funciones importantes del sistema. La tabla 3.10 enumera las funciones que normalmente se hallan en el núcleo de un sistema operativo.
La razón por la que se usan dos modos debe quedar clara. Es necesario proteger al sistema operativo y a las tablas importantes del mismo, tales como los bloques de control de procesos, de las injerencias de los programas de usuario. En el modo del núcleo, el software tiene control completo del procesador y de todas sus instrucciones, registros y memoria. Este nivel de con¬ trol no es necesario y, por seguridad, tampoco conveniente para los programas de usuario.
Procesos e hilos
Unidad mínima de asignación: tarea.
Unidad mínima de expedición: hilo.

Dos hilos de una misma tarea (denominados hilos pares) comparten el segmento de código, el segmento de datos y un espacio de pila, es decir, los recursos asignados a la tarea.
Podemos captar la funcionalidad de los hilos si comparamos el control de múltiples hilos con el control de múltiples procesos. En el caso de los procesos, cada uno opera independientemente de los otros; cada proceso tiene su propio contador de programa, registro de pila, y espacio de direcciones. Este tipo de organización es muy útil cuando los trabajos que los procesos efectúan no tienen ninguna relación entre si.
Pero cuando los trabajos a realizar van a necesitar, por ejemplo, la llamada a una misma función o bien, la compartición de una variable en memoria, nos interesará englobarlos en una tarea. Ejemplo: Avión-Torre.
Cuando un hilo está en ejecución, posee el acceso a todos los recursos que tiene asignados la tarea.
Un hilo tendrá lo siguiente:
  • Estado.
  • Contexto del procesador. Punto en el que estamos ejecutando, la instrucción concretamente en la que nos hallamos. Es útil a la hora de reanudar un hilo que fue interrumpido con anterioridad, puesto que al guardar el contexto, guardamos la ultima instrucción que ejecutamos, y así podemos conocer por donde tenemos que continuar la ejecución del hilo.
  • Pila de ejecución donde se irá metiendo y sacando instrucciones. (Lugar donde almacenaremos las instrucciones que van a ser ejecutadas).
  • Espacio de almacenamiento estático donde almacenará las variables.
  • Acceso a los recursos de la tarea, que son compartidos por todos los hilos de la tarea.}

* Ventajas del uso de hilos.
  • Se tarda menos tiempo en crear un hilo de una tarea existente que en crear un nuevo proceso.
  • Se tarda menos tiempo en terminar un hilo que en terminar un proceso.
  • Se tarda menos tiempo en cambiar entre dos hilos de una misma tarea que en cambiar entre dos procesos (porque los recursos no cambian, por ejemplo)
  • Es mas sencillo la comunicación (paso de mensajes por ejemplo) entre hilos de una misma tarea que entre diferentes procesos.
  • Cuando se cambia de un proceso a otro, tiene que intervenir el núcleo del sistema operativo para que haya protección. Cuando se cambia de un hilo a otro, puesto que la asignación de recursos es la misma, no hace falta que intervenga el sistema operativo.

Concurrencia exclusión mutua y sincronización

Los temas fundamentales del diseño de sistemas operativos están relacionados con la gestión de procesos e hilos:
• Multiprogramación: consiste en la gestión de varios procesos dentro de un sistema mono-procesador.
• Multiprocesamiento: consiste en la gestión de varios procesos, dentro de un sistema multiprocesador.
• Procesamiento distribuido: consiste en la gestión de varios procesos, ejecutándose en sistemas de computadores múltiples y distribuidos. La reciente proliferación de las agrupaciones es el principal ejemplo de este tipo de sistemas.
La concurrencia es fundamental en todas estas áreas y para el diseño sistemas operativos. La concurrencia comprende un gran número de cuestiones de diseño, incluida la comunicación entre procesos, compartición y competencia por los recursos, sincronización de la ejecución 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 proceso distribuido, sino incluso en sistemas multiprogramado con un solo procesador.
La concurrencia puede presentarse en tres contextos diferentes:
• Múltiples aplicaciones: la multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varias aplicaciones activas.
• Aplicaciones estructuradas: como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.
• Estructura del sistema operativo: las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos o hilos.
Principios generales de la concurrencia

En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo aparentando una ejecución simultánea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecución intercalada produce beneficios en la eficiencia del procesamiento y en la estructuración de los programas.
La intercalación y la superposición pueden contemplarse como ejemplos de procesamiento concurrente en un sistema monoprocesador, los problemas son consecuencia de la velocidad de ejecución de los procesos que no pueden predecirse y depende de las actividades de otros procesos, de la forma en que el sistema operativo trata las interrupciones surgen las siguientes dificultades:
  1. Compartir recursos globales es riesgos o
  2. Para el sistema operativo es difícil gestionar la asignación óptima de recursos.
Las dificultades anteriores también se presentan en los sistemas multiprocesador.
El hecho de compartir recursos ocasiona problemas, por esto es necesario proteger a dichos recursos.
Los problemas de concurrencia se producen incluso cuando hay un único procesad

Exclusión mutua; solución por hardware y software


Regiones críticas
Es posible clasificar las interacciones de los procesos en función del nivel de conocimiento que cada proceso tiene de la existencia de los demás:
• Los procesos no tienen conocimiento de los demás: Estos son procesos independientes que no están pensados para operar juntos.
• Los procesos tienen un conocimiento indirecto de los otros: Los procesos no conocen necesariamente a los otros, pero comparten el acceso a algunos objetos.
• Los procesos tienen un conocimiento directo de los otros: Los procesos son capaces de comunicarse con los demás y están diseñados para trabajar conjuntamente en alguna actividad.
Competencia entre procesos por los recursos
Los procesos concurrentes entran en conflicto cuando compiten por el uso del mismo recurso, es decir, quieren acceder a un recurso al mismo tiempo. Y la ejecución de un proceso puede influir en el comportamiento de los procesos que compiten y el sistema operativo le asignará el recurso a uno de ellos y el otro tendrá que esperar. Por lo que el proceso que quede esperando, se retrasará, se bloqueara y en el peor de los casos nunca se terminará con éxito
Es en estos procesos concurrentes, donde, se plantean una serie de situaciones clásicas de comunicación y sincronización, entre ellos el problema de la sección crítica.
El problema de la sección crítica es uno de los problemas que con mayor frecuencia aparece cuando se ejecutan procesos concurrentes.
Para entender un poco mejor el concepto se presenta el siguiente ejemplo: Se tiene un Sistema Operativo que debe asignar un identificador de proceso (PID) a dos procesos en un sistema multiprocesador.
Cuando el SO realiza esta acción en dos procesadores de forma simultánea sin ningún tipo de control, se pueden producir errores, ya que se puede asignar el mismo PID a dos procesos distintos. Este problema se debe a que constituyen una sección crítica que debe ejecutarse en forma atómica, es decir, de forma completa e indivisible y ningún otro proceso podrá ejecutar dicho código mientras el primero no haya acabado su sección.









Semáforo
Semáforo es un algoritmo de control de procesos, que tiene solo dos operaciones básicas, las cuales son:
Wait.- Pregunta a los procesos si su contador es > ó = que cero, en caso de no ser así, los decremento. El proceso que cambia en este caso a negativo (−1) desde la cola de procesos Listos a ser ejecutados es el que automáticamente toma el control del procesador.
Signal.- A partir de un tiempo t definido por el despachador se ejecuta, y pregunta a los procesos si su contador es < que cero en caso de que sea afirmativa la respuesta, saca a este proceso de su ejecución y depende de su estado
Estas instrucciones pueden modificarse para evitar la espera activa, haciendo que la operación P duerma al mismo proceso que la ejecuta si no puede decrementar el valor, mientras que la operación V despierta a un proceso que no es quien la ejecuta. En un pseudolenguaje más entendible, la operación P suele denominarse "Wait" o "espera" y la operación V "signal" o "señal".
El porqué de los nombres de estas funciones, V y P, tiene su origen en el idioma holandés. "Verhogen" significa incrementar y "Proberen" probar, aunque Dijkstra usó la palabra inventada prolaag , que es una combinación de proveer te ver la gen (intentar decrementar). El valor del semáforo es el número de unidades del recurso que están disponibles (si sólo hay un recurso, se utiliza un "semáforo binario" con los valores 0 y 1).

Monitor

Multi-monitor o multi-cabezal son los términos sinónimos que se refieren al uso de dispositivos de visualización físicos múltiples como monitores, los televisores y proyectores en orden incrementando la zona disponible para los programas de computadora que funcionan en un sistema de computadora sólo. Poner monitores múltiples puede ser una manera económica de mejorar el uso de computadora. Incrementa el área de visualización, aunque todavía es limitado por el tamaño, la solución y número de los monitores. Los monitores usados para cabeza doble pueden ser tipos diferentes (LCD o CRT) y los tamaños. El sistema operativo lleva las soluciones de los monitores por separado. El producto de vídeo sobre una computadora es generado por una tarjeta de vídeo y es interpretado y exhibido por una variedad de dispositivos. Las tarjetas de vídeo están típicamente conectadas con un monitor (el de tipo TRC o el tipo de LCD), algunas veces están conectados a un equipo de proyección o a juegos de la televisión cada vez más. Como consecuencia de esta tendencia, los fabricantes han producido tarjetas de vídeo que pueden conectarse a algunos tipos de dispositivos de visualización que usan la interfaz apropiada.


El soporte de monitor doble dependía de drivers de vídeo reservados para pocas tarjetas de video, pero recientemente, el soporte para la configuración de monitor doble viene como una característica usual en el Microsoft Windows, el SO X de Mac de Apple Computer, y sobre el X Windows System.

Paso de mensajes
El paso de mensajes es una técnica empleada en programación concurrente para aportar sincronización entre procesos y permitir la exclusión mutua, de manera similar a como se hace con los semáforos, monitores, etc.
Su principal característica es que no precisa de memoria compartida, por lo que es muy importante en la programación para sistemas distribuidos.
Los elementos principales que intervienen en el paso de mensajes son el proceso que envía, el que recibe y el mensaje.

Concurrencia e interbloqueo (deadlock).
DEADLOCK
Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados.
Un proceso puede estar identificado con tres estados diferentes: leyendo (ready), ejecutando (running) o bloqueado (blocked). En el estado de lectura, un proceso está parado, concediendo que otro proceso sea ejecutado; en el estado de ejecución, un proceso está utilizando algún recurso; y en el estado de bloqueo, el proceso está parado y no se ejecutará mientras algo lo restaure.
Una condición común no deseable es descripta como deadlock, que es cuando dos procesos están en un estado de ejecución, y requieren intercambiar recursos entre sí para continuar. Ambos procesos están esperando por la liberación del recurso requerido, que nunca será realizada; como no hay ningún resultado, tomará un camino que llevará a un estado de deadlock. Muchos escenarios han sido construidos para ilustrar las condiciones de deadlock, siendo el más popular el Problema de Comida de los Filósofos. Cinco filósofos tienen cinco platos de fideos enfrente suyo y cinco tenedores, uno a cada lado del plato. Los filósofos necesitan ambos tenedores (derecha e izquierda) para comer. Durante la comida realizarán solo dos operaciones mutuamente excluyentes, pensar o comer. El problema es un paralelismo simplista entre procesos (los filósofos) tratando de obtener recursos (tenedores); mientras están en estado de ejecución (comiendo) o de lectura (pensando). Una condición posible de deadlock puede ocurrir, si todos los filósofos quieren coger el tenedor de la derecha y, a la vez, el de la izquierda: la comida terminará en estado de deadlock.

Principios de Interbloqueo y Acciones a Realizar en Interbloqueo


Interbloqueos
Concepto:
Un Interbloqueo supone un bloqueo permanente de un conjunto de procesos que compiten por recursos o bien se comunican o sincronizan si.
Los procesos de los sistemas no solo son independientes, sino que compiten en el uso exclusivo de recursos, se comunican y se sincronizan entre si. El sistema operativo debe encargarse de asegurar que estas interacciones se llevan a cabo aproximadamente proporcionando la exclusión mutua requerida por las mismas. La necesidad de los algunos procesos pueden entrar en conflicto entre si causando que estos se bloqueen indefinidamente.

El Interbloqueo surge debido a que produce un conflicto entre las necesidades de los procesos y el recurso que necesita cada proceso lo posee el otro.
Se caracteriza por la existencia de un conjunto de entidades activas que utilizan un conjunto de recursos para llevar a cabo su labor.

-          Entidades: activas que corresponden con los procesos existentes en el sistema. Un SO proporciona threads que representan las entidades activas y son la unidad de ejecución del sistema.
-          Recursos existentes en el sistema: son utilizados por los procesos para llevar a cabo su valor.

Tipos de recursos:

1-Recursos reutilizables o consumibles:
Se caracteriza por que el recurso  existiendo después de que un proceso lo use queda disponible para otros procesos. El recurso es independiente de su utilización.
2-Recursos consumibles:
Estos se caracterizan por que dejan de existir una vez que los usa.
3-Recursos compartidos o exclusivos:
Estos recursos no se ven afectados por Interbloqueos ya que los procesos que quieran usarlos pueden hacerlo inmediatamente sin posibilidad de quedarse bloqueados.
4-Recursos con un único ejemplar o con múltiples:
Una solicitud de este recurso por parte de un proceso podría satisfacerse con cualquier ejemplar del mismo.

Prevención de interbloqueo
Con la estrategia de prevención se intenta eliminar el problema de raíz, asegurando que nunca se pueden producir interbloqueos. Dado que, como se realizó previamente, es necesario que se cumpla las cuatro condiciones de Coffman  (exclusión mutua, retención y espera, sin expropiación, espera circular) para que se produzca un interbloqueo, bastaría únicamente con asegurar que una de estas condiciones no se puede satisfacer para eliminar los interbloqueos  en  sistema. A continuación se analizaran cada una de estas cuatro condiciones para ver  si es posible establecer estrategias que aseguren que no puede cumplirse.

EXCLUSION MUTUA
Esta condición establece que para que se produzca el interbloqueo, los recursos implicados en el mismo deben de ser de uso exclusivo. Esta condición es imposible de evitar ya que existen recursos que por definición se presentan como exclusivos, tal es el caso de la impresora, que solo puede ser utilizada por un proceso a la vez.

RETENCIÓN Y ESPERA.
Esta condición especifica que para que se presente un interbloqueo tiene que haber procesos que tengas asignados recursos y estén bloqueados en la espera de otro recurso. Una primera estrategia para evitar que esta condición se presente es asegurar que todos los procesos hagan la solicitud de todos los recursos, que necesitaran, desde el principio de su ejecución.
Esta estrategia asegura que el proceso no se bloqueara en la espera de algún recurso debido a que puede hacer uso de todos los que necesite desde el principio. Esta estrategia conlleva una tasa muy baja de utilización de recursos debido a que siempre existirán recursos bloqueados, por procesos, en espera de su utilización, asi como también retrasa el inicio de los procesos al tener que esperar por la liberación de todos los recursos.

SIN EXPROPIACION.
 La tercera condición especifica que a un proceso no se le pueden expropiar los recursos que ya tiene asignados,  hasta que el mismo los libere voluntariamente. Para esta condición no existe una alternativa viable debido a que existen recursos que en ningún momento pueden ser retirados a un proceso mientras estén en ejecución. Al igual que en la exclusión mutua un ejemplo seria la impresora.

ESPERA CIRCULAR.
La última condición establece la necesidad de que exista una lista circular de dependencias entre procesos, esto es, que un proceso A este esperando un recurso que tiene asignado el proceso B y a su vez el proceso B este esperando un recurso que tiene asignado el proceso A.

Acciones a realizar ante un interbloqueo. Prevención, detección, predicción y evitar.

Detección de Interbloqueo:
La detección del interbloqueo es el proceso de determinar si realmente existe un interbloqueo e identificar los procesos  y recursos implicados en él. Una posibilidad detectar un interbloqueo es monitorear cada cierto tiempo el estado de los recursos. Cada vez que se solicita o se devuelve un recurso, se actualiza el estado de los recursos y se hace una verificación para observar si existe algún ciclo.
Este método está basado en suponer que un interbloqueo no ser presente y que los recursos del sistema que han sido asignados, se liberarán en el momento que otro proceso lo requiera.
Una comprobación para interbloqueo puede hacerse con igual o menor frecuencia que cada solicitud de recursos, dependiendo de que tan probable es que ocurra un interbloqueo. Comprobar cada solicitud de recursos tiene dos ventajas: Conduce a la detección temprana y el algoritmo es simple, de manera relativa porque se basa en cambios crecientes al estado del sistema. Además, las comprobaciones frecuentes consumen un tiempo considerable de procesador.
El empleo de algoritmos de detección de interbloqueo implica cierto gasto extra durante la ejecución. Así pues, se presenta de nuevo la cuestión de costeabilidad, tan habitual en los sistemas operativos. Los algoritmos de detección de interbloqueo determinan por lo general si existe una espera circular.

 
Evitar interbloqueos
En vez de restringir la forma o el orden en que los procesos deben solicitar recursos, antes se debe conocer si es  seguro otorgar dichos recursos. Es decir, si se presentan las condiciones suficientes para un interbloqueo, todavía es posible evitarlos por medio de una restricción en la asignación de los procesos para tratar de buscar estados seguros. Estas restricciones aseguran que al menos una de las condiciones necesarias para el interbloqueo no pueda presentarse y por lo tanto, tampoco el interbloqueo.
Otro método para evitar los interbloqueo consiste en requerir información adicional sobre cómo se solicitará los recursos. Esta información puede ser:
  • La necesidad máxima de recursos de los procesos que se está ejecutando
  • La asignación actual de recursos a procesos
  • La cantidad actual de instancias libres de cada recurso
En base al orden en que se solicitarán los recursos, se puede tomar la decisión de ejecutar el proceso o si debe esperar. Por lo tanto, la evitación del interbloqueo solo anticipa la posibilidad de interbloqueo y asegura que no exista nunca tal posibilidad.
En los mecanismos para evitar interbloqueos viene relacionado los estados seguros e inseguros de los procesos en los sistemas operativos.
Los estados seguros e inseguros
Un estado de asignación de recursos se considera seguro si en él no hay posibilidad de interbloqueo. Para que un estado sea seguro, es necesario que los procesos formen una secuencia segura.
Una secuencia segura es una ordenación de los procesos de modo que los recursos que aún puede pedir cualquier proceso pueden ser otorgados con los recursos libres más los recursos retenidos por los demás procesos. En base a ello, cuando un proceso realice una solicitud de recursos, el sistema se los concederá sólo en el caso de que la solicitud mantenga al sistema en un estado seguro. Un estado inseguro es aquel en el que puede presentarse un interbloqueo.
Aún presentándose las condiciones para un interbloqueo, todavía es posible evitarlo mediante una asignación cuidadosa de los recursos. Tal vez el algoritmo más famoso para evitar el interbloqueo sea el algoritmo del banquero de Dijkstra, cuyo interesante nombre se debe a que un banquero que otorga préstamos y recibe pagos a partir de una determinada fuente de capital.
Algoritmo Dijkstra
El algoritmo del banquero permite la asignación de unidades de cinta a los usuarios solamente cuando la asignación conduzca a estados seguros, y no a estados inseguros. Un estado seguro es una situación tal en la que todos los procesos son capaces de terminar en algún momento. Un estado inseguro es aquel en el cual puede presentarse un bloqueo mutuo.


Ejemplos de  interbloqueo
  El Interbloqueo se puede definir como el bloque permanente de un conjunto de procesos que compiten por los recursos del sistema, todos los interbloqueos suponen necesidades contradictorias de recursos, por parte de dos o más procesos.
  Un ejemplo clásico de interbloqueo es el interbloqueo de tráfico



2.- Ahora se describe una situación de interbloqueo, en la que intervienen procesos y recursos informáticos, al siguiente gráfico se le asigna la siguiente forma:
n  Proceso P                               Proceso Q
         Obtener A                               Obtener B
         Obtener B                               Obtener A
         Liberar A                                Liberar B
         Liberar B                                Liberar A



El que se produzca interbloqueo o no, depende de la dinámica de la ejecución, por ejemplo; supóngase que p no necesitara ambos recursos en el mismo instante y tuviera la siguiente forma:
Proceso P
Obtener A
Liberar A
Obtener B
Liberar B

Ejemplo Ilustrativo:
•         Dos procesos compiten por el acceso exclusivo a un archivo D del disco y a una unidad de cinta C. Guiarse por la tabla  6.4, el interbloqueo se produce si un proceso pide un recurso y retiene otro.
                                      p0p1q0q1p2q2
Esta es la forma para que se produzca un interbloqueo en un sistema multiprogramado.

 

 
 Un programa principal que llama al procedimiento del servicio solicitado.
del conocimiento del hardware. El SO Windows se basa en una interface gráficas, “GUI” (Interface Gráfica de Usuario), permitiendo al usuario interactuar con el hardware de una forma sencilla y rápida. -Sobre el SO funcionan el resto de programas y aplicaciones del software.

Historia y evolución de los S.O.
Años 50
A principios de los años 50 con el objeto de facilitar la interacción entre persona y computador, los sistemas operativos hacen una aparición discreta y bastante simple, con conceptos tales como el monitor residente, el proceso por lotes y el almacenamiento temporal.
Monitor residente
Su funcionamiento era bastante simple, se limitaba a cargar los programas a memoria, leyéndolos de una cinta o de tarjetas perforadas, y ejecutarlos. El problema era encontrar una forma de optimizar el tiempo entre la retirada de un trabajo y el montaje del siguiente.
Procesamiento por lotes
Como solución para optimizar el tiempo de montaje surgió la idea de agrupar los trabajos en lotes, en una misma cinta o conjunto de tarjetas, de forma que se ejecutaran uno a continuación de otro sin perder apenas tiempo en la transición.
Almacenamiento temporal
Su objetivo era disminuir el tiempo de carga de los programas, haciendo simultánea la carga del programa o la salida de datos con la ejecución de la siguiente tarea. Para ello se utilizaban dos técnicas, el buffering y el spooling.
Años 60
En los años 1960 se produjeron cambios notorios en varios campos de la informática,con la aparicion de el circuito cerrado la mayoría orientados a seguir incrementando el potencial de los computadores. Para ello se utilizaban técnicas de lo más diversas:
Multiprogramación
En un sistema multiprogramado la memoria principal alberga a más de un programa de usuario. La CPU ejecuta instrucciones de un programa, cuando el que se encuentra en ejecución realiza una operación de E/S; en lugar de esperar a que termine la operación de E/S, se pasa a ejecutar otro programa. Si éste realiza, a su vez, otra operación de E/S, se mandan las órdenes oportunas al controlador, y pasa a ejecutarse otro. De esta forma es posible, teniendo almacenado un conjunto adecuado de tareas en cada momento, utilizar de manera óptima los recursos disponibles.
Tiempo compartido
En este punto tenemos un sistema que hace buen uso de la electrónica disponible, pero adolece de falta de interactividad; para conseguirla debe convertirse en un sistema multiusuario, en el cual existen varios usuarios con un terminal en línea, utilizando el modo de operación de tiempo compartido. En estos sistemas los programas de los distintos usuarios residen en memoria. Al realizar una operación de E/S los programas ceden la CPU a otro programa, al igual que en la multiprogramación. Pero, a diferencia de ésta, cuando un programa lleva cierto tiempo ejecutándose el sistema operativo lo detiene para que se ejecute otro aplicación. Con esto se consigue repartir la CPU por igual entre los programas de los distintos usuarios, y los programas de los usuarios no se sienten demasiado lentos por el hecho de que los recursos sean compartidos y aparentemente se ejecutan de manera concurrente.
Tiempo real
Estos sistemas se usan en entornos donde se deben aceptar y procesar en tiempos muy breves un gran número de sucesos, en su mayoría externos al ordenador. Si el sistema no respeta las restricciones de tiempo en las que las operaciones deben entregar su resultado se dice que ha fallado. El tiempo de respuesta a su vez debe servir para resolver el problema o hecho planteado. El procesamiento de archivos se hace de una forma continua, pues se procesa el archivo antes de que entre el siguiente, sus primeros usos fueron y siguen siendo en telecomunicaciones.
Multiprocesador
Permite trabajar con máquinas que poseen más de un microprocesador. En un multiprocesador los procesadores comparten memoria y reloj.
Sistemas operativos desarrollados
Además del Atlas Supervisor y el OS/360, los sesenta marcaron el inicio de UNIX, a mediados de los 60 aparece Multics, sistema operativo multiusuario – multitarea desarrollado por los laboratorios Bell de AT&T y programado en PL/1 uno de los pocos SO desarrollados en un lenguaje de alto nivel en aquel tiempo, luego del fracaso del proyecto UNIX comienza a desarrollarse a partir de este a finales de la década.
Años 70
Debido al avance de la electrónica, pudieron empezar a crearse circuitos con miles de transistores en un centímetro cuadrado de silicio, lo que llevaría, pocos años después, a producirse los primeros sistemas integrados. Ésta década se podría definir como la de los sistemas de propósito general y en ella se desarrollan tecnologías que se siguen utilizando en la actualidad. Es en los años 1970 cuando se produce el boom de los miniordenadores y la informática se acerca al nivel de usuario. En lo relativo a lenguajes de programación, es de señalar la aparición de Pascal y C, el último de los cuales se creó específicamente para reescribir por completo el código del sistema operativo Unix, convirtiéndolo en uno de los pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación lógica se dio a luz la primera implementación de Prolog, y en la revolucionaria orientación a objetos, Smalltalk.
Inconvenientes de los sistemas existentes
Se trataba de sistemas grandes y costosos, pues antes no se había construido nada similar y muchos de los proyectos desarrollados terminaron con costos muy por encima del presupuesto y mucho después de lo que se marcaba como fecha de finalización. Además, aunque formaban una capa entre el hardware y el usuario, éste debía conocer un complejo lenguaje de control para realizar sus trabajos. Otro de los inconvenientes es el gran consumo de recursos que ocasionaban, debido a los grandes espacios de memoria principal y secundaria ocupados, así como el tiempo de procesador consumido. Es por esto que se intentó hacer hincapié en mejorar las técnicas ya existentes de multiprogramación y tiempo compartido.
Características de los nuevos sistemas
Para solventar los problemas antes comentados, se realizó un costosísimo trabajo para interponer una amplia capa de software entre el usuario y la máquina, de forma que el primero no tuviese que conocer ningún detalle de la circuitería.
Sistemas operativos desarrollados
* MULTICS (Multiplexed Information and Computing Service): Originalmente era un proyecto cooperativo liderado por Fernando Corbató del MIT, con General Electric y los laboratorios Bell, que comenzó en los 60, pero los laboratorios Bell abandonaron en 1969 para comenzar a crear el sistema UNIX. Se desarrolló inicialmente para el mainframe GE-645, un sistema de 36 bits; después fue soportado por la serie de máquinas Honeywell 6180.
Fue uno de los primeros sistemas operativos de tiempo compartido, que implementó un solo nivel de almacenamiento para el acceso a los datos, desechando la clara distinción entre los ficheros y los procesos en memoria, y uno de los primeros sistemas multiprocesador.
* MVS (Multiple Virtual Storage): Fue el sistema operativo más usado en los modelos de mainframes -ordenadores grandes, potentes y caros usados principalmente por grandes compañías para el procesamiento de grandes cantidades de datos- System/370 y System/390 de IBM, desarrollado también por IBM y lanzado al mercado por primera vez en 1974. Como características destacables, permitía la ejecución de múltiples tareas, además de que introdujo el concepto de memoria virtual y finalmente añadió la capacidad de que cada programa tuviera su propio espacio de direccionamiento de memoria, de ahí su nombre.
* CP/M (Control Program/Monitor): Desarrollado por Gary Kildall para el microprocesador 8080/85 de Intel y el Zilog Z80, salió al mercado en 1976, distribuyéndose en disquetes de ocho pulgadas. Fue el SO más usado en las computadoras personales de esta década. Su éxito se debió a que era portátil, permitiendo que diferentes programas interactuasen con el hardware de una manera estandarizada. Estaba compuesto de dos subsistemas:
o CCP (Comand Control Processor): Intérprete de comandos que permitía introducir los mandatos con sus parámetros separados por espacios. Además, los traducía a instrucciones de alto nivel destinadas a BDOS.
o BDOS (Basic Disk Operating System): Traductor de las instrucciones en llamadas a la BIOS.
El hecho de que, años después, IBM eligiera para sus PCs a MS-DOS supuso su mayor fracaso, por lo que acabó desapareciendo.
Años 80
Con la creación de los circuitos LSI -integración a gran escala-, chips que contenían miles de transistores en un centímetro cuadrado de silicio, empezó el auge de los ordenadores personales. En éstos se dejó un poco de lado el rendimiento y se buscó más que el sistema operativo fuera amigable, surgiendo menús, e interfaces gráficas. Esto reducía la rapidez de las aplicaciones, pero se volvían más prácticos y simples para los usuarios. En esta época, siguieron utilizándose lenguajes ya existentes, como Smalltalk o C, y nacieron otros nuevos, de los cuales se podrían destacar: C++ y Eiffel dentro del paradigma de la orientación a objetos, y Haskell y Miranda en el campo de la programación declarativa. Un avance importante que se estableció a mediados de la década de 1980 fue el desarrollo de redes de computadoras personales que corrían sistemas operativos en red y sistemas operativos distribuidos. En esta escena, dos sistemas operativos eran los mayoritarios: MS-DOS, escrito por Microsoft para IBM PC y otras computadoras que utilizaban la CPU Intel 8088 y sus sucesores, y UNIX, que dominaba en los ordenadores personales que hacían uso del Motorola 68000.
Apple Macintosh
El lanzamiento oficial se produjo en enero de 1984, al precio de 2495 dólares. Muchos usuarios, al ver que estaba completamente diseñado para funcionar a través de una GUI (Graphic User Interface), acostumbrados a la línea de comandos, lo tacharon de juguete. A pesar de todo, el Mac se situó a la cabeza en el mundo de la edición a nivel gráfico.
MS-DOS
En 1981 Microsoft compró un sistema operativo llamado QDOS que, tras realizar unas pocas modificaciones, se convirtió en la primera versión de MS-DOS (MicroSoft Disk Operating System). A partir de aquí se sucedieron una serie de cambios hasta llegar a la versión 7.1, a partir de la cual MS-DOS dejó de existir como tal y se convirtió en una parte integrada del sistema operativo Windows.
Microsoft Windows
Familia de sistemas operativos propietarios desarrollados por la empresa de software Microsoft Corporation, fundada por Bill Gates y Paul Allen. Todos ellos tienen en común el estar basados en una interfaz gráfica de usuario basada en el paradigma de ventanas, de ahí su nombre en inglés. Las versiones de Windows que han aparecido hasta el momento se basan en dos líneas separadas de desarrollo que finalmente convergen en una sola con la llegada de Windows XP. La primera de ellas conformaba la apariencia de un sistema operativo, aunque realmente se ejecutaba sobre MS-DOS.
Actualmente existe Windows Vista.
Años 90
GNU/Linux
En 1991 aparece la primer versión del núcleo de Linux. Creado por Linus Torvalds y un sinfín de colaboradores a través de Internet. Este sistema se basa en Unix, un sistema que en principio trabajaba en modo comandos, estilo MS-DOS. Hoy en día dispone de Ventanas, gracias a un servidor grafico y a gestores de ventanas como KDE, GNOME entre muchos. Recientemente GNU/Linux dispone de un aplicativo que convierte las ventanas en un entorno 3D como por ejemplo Beryl. Lo que permite utilizar linux de una forma muy visual y atractiva.

Mac OS X

Esta basado fuertemente en las PowerPC-port de OpenStep. Por eso Mac OS X hereda la memoria y procesador de Mach’s y el driver del dispositivo de la interfaz, BSD’s POSIX – UNIX Protocolo del programa que soporta y trabaja en interfaz de redes, también algunos elementos de la interfaz de NeXT’s.
Mac OS X, hoy en día este sistema operativo esta virtualmente en todas las Mac’s, y fue trabajado por una década para poder obtener el éxito que tiene ahora.

2001: Mac OS X 10.0 “Cheetah”

 

Mac OS X 10.0 fue lanzada el 24 de marzo del 2001, este incorporaba muchas características que fueron agregadas por las personas que colaboraron en Mac OS X Public Beta.
Mac OS X 10.0 también contenía todas características de un sistema operativo moderno, protegía la memoria, y así los programas no podían utilizar la información de otros programas, de esta forma el procesador no se bloqueaba, los drivers de los dispositivos podían ser cargados o descargados si eran necesario.
Mac OS X también agrego Cocoa, derivado de NeXT’s un muy sofisticado y desarrollado ambiente OpenSTEP. Existían algunos asuntos pendientes, como el original Mac OS. Los usuarios de Mac OS X iniciaron a crear una gran queja sobre nombre que tenia este sistema operativo “Cheetah” que era muy salvaje e inapropiado.
El ambiente Classic en 10.0, también era mejor que el Public Beta, aun tenia una extraña compatibilidad de problemas y conducta caprichosa. Los interfaz de Mac OS X se veía muy parecida a la interfaz de Mac OS y los usuarios creían que tenían las mismas características sin embargo no fue así y tuvieron que aprender nuevos hábitos y dejar los viejos.

2001: Mac OS X 10.1 “Puma”

Mac OS 10.1 fue lanzado luego de un año del 10.0, e incorporaba mejor desempeño especialmente en Macs G3. Las versiones 10.1.1, 10.1.2, 10.1.3, 10.1.4, y 10.1.5 todas tenían mejora en los errores, y actualizaciones en sus componentes. La mayoría de open source como utilidades de UNIX fueron incluidas en las Mac OS X y drivers adicionales para poder soportar mas dispositivos.

2002: Mac OS X 10.2 “Jaguar”

El 25 de agosto de 2002 fue lanzada esta versión y Apple prosiguió con la andadura de su sistema operativo con el lanzamiento de Mac OS X v10.2 “Jaguar”) y que contaba con un nuevo incremento en su rendimiento, un nuevo y depurado look y más de 150 mejoras, entre estas estaba el mayor soporte para redes de Microsoft Windows, Quartz Extreme para la composición de gráficos sea procesada directamente por la tarjeta de video y un filtro contra spam.
Apple Address Book para almacenar la información de contactos, tambien agregaba el sistema de red Rendezvous. iChat que consistía en un programa de chateo con soporte de AOL Instant Messenger, incluía así un renovado Finder con búsquedas integradas en cada ventana.

2003: Mac OS X 10.3 “Panther”

Mac OS X v10.3 “Panther” se lanzó el 24 de octubre de 2003. Además de tener un rendimiento mucho mayor, incorporó la mayor actualización en la interfaz de usuario, y muchas mejoras que Jaguar el año anterior. Esta versión ya no era compatible en los antiguos modelos G3.
Algunas de las mejoras de esta versión es que el Finder fue actualizado e incorpora una interfaz metálica y búsqueda rápida. Exposé permitía una nueva forma de manipular ventanas, también incorporo el Cambio Rápido de Usuarios, que permite tener sesiones con diferentes usuarios abiertas al mismo tiempo y pasar de una a otra rápidamente.
Ahora esta nueva versión incluía soporte integrado de fax. FileVault era un Sistema de cifrado en tiempo real del directorio privado de cada usuario. Incrementaba velocidad en todo el sistema con un mayor soporte para los G5.

2005: Mac OS X 10.4 “Tiger”

Mac OS X v10.4 “Tiger” fue lanzado el 29 de abril de 2005 y fue la versión disponible más reciente, contenía más de 200 nuevas mejoras, pero como sucedió con el lanzamiento de Panther, algunas máquinas antiguas no podían soportarlo, en particular, cualquier equipo Apple que no contara con conexión FireWire no podía ser soportado en Tiger.
Esta versión incluya nuevas características como Spotlight un sistema de búsqueda basado en contenidos y metadatos, así también Dashboard se encontraban widgets, unas miniaplicaciones que permiten realizar tareas comunes y ofrecen acceso instantáneo a la información.
QuickTime 7 era la nueva versión que incluía soporte para H.264 y un interfaz completamente rediseñada. Safari como una nueva versión del navegador por defecto del sistema incorpora soporte para RSS, mayor velocidad y seguridad, etc.Esta versión tenía soporte de memoria de 64 bits para los nuevos G5, usando el sistema LP64.

2006: Mac OS X 10.5 “Leopard”

Mac OS X v10.5 “Leopard” es lanzada hoy 26 de Octubre de 2007. Esta versión es compatible con las PowerPC y con la nueva tecnología Intel. Entre las características de la nueva versión encontramos:
  • Time Machine: da la posibilidad de poder volver en el tiempo a una versión especifica de los contenidos de una carpeta, del disco duro completo, de un sólo archivo, de un rollo de fotos en iPhoto, etc.
  • Mail 3: es la tercera versión de este programa de correo electrónico de Apple ahora incluye Notas y To-Dos así como variados Templates para enviar email HTML.
  • iChat: da la posibilidad de chatear con tabs o de tener iconos animados, ahora también se tiene muchas funciones adicionales para los vídeochats. Desde presentar vídeos, compartir el escritorio, etc.
  • El Dashboard: trae una herramienta llamada Dashcode para crear Widgets fácilmente. Adicionalmente Safari tiene un botón “Webclip” que permite tomar cualquier fragmento de una página que se esté viendo y convertirla en un Widget. Accesibilidad, se crearon mejoras en las funciones de accesibilidad para que “todos puedan usar un Mac”.
  • El Finder: ahora con CoverFlow similar al de iTunes, tiene una función denominada QuickLook la cual permite abrir varios archivos a la vez con diferentes extensiones y no hay necesidad de abrir el programa, incluso los usuarios podrán hacer búsquedas en otras Mac conectadas en red.
  • El Dock: parece una bandeja de vidrio que recibe reflejos, cuenta con un stacks que permite apilar una serie de elementos y cuando se hace clic sobre él se despliegan en un abanico de opciones.
La mayor de ellas siendo un gran avance en las funciones de texto-a-voz con una nueva voz sintetizada llamada Alex, que incluso puede hablar claramente a altas velocidades. Además, trae soporte para pantallas Braille.

2009: Mac OS X 10.6 “Snow Leopard”

UPDATE: La más reciente versión del sistema operativo de Mac, apodado Snow Leopard, fue lanzado el 28 de agosto de 2009 y es más rápido que sus predecesores, además de tener varias nuevas características interesantes:
  • Nuevo exposé integrado en el Dock.
  • Es posible utilizar el touchpad para insertar caracteres chinos.
  • La zona horaria se ajusta automáticamente.
  • Ofrece soporte para conectarse a los servidores Microsoft Exchange 2007.
  • Menor consumo de espacio en disco duro y soporte (teórico) para un máximo de 16TB de RAM.
También hay que destacar las siguientes innovaciones:
  • Grand Central es una tecnología de programación que permite utilizar los procesadores multinúcleo y optimizar el rendimiento.
  • Quicktime X tendrá soporte optimizado para códecs actuales.
  • OpenCL (Open Computing Language) permitirá programar aplicaciones que utilicen la unidad de procesamiento gráfico para usos no gráficos.

Subsistemas de un sistema operativo
Un subsistema es un sistema que se ejecuta sobre un sistema operativo, este puede ser un shell (intérprete de comandos) del sistema operativo primario o puede ser una máquina virtual.

Intérprete de comandos

Un intérprete de comandos es una interfaz de consola que puede interpretar uno o varios comandos por línea, este tipo de interfaz es muy utilizada por administradores de redes o usuarios de UNIX (sistema operativo) en el cual el intérprete de comandos cumple un papel fundamental), en Windows, el intérprete de comandos por defecto es el símbolo del sistema, un subsistema que se encarga de ejecutar archivos de 16 bits y es utilizado también como cliente telnet por defecto en Windows.

Máquina virtual

Una máquina virtual emula el kernel del sistema operativo o se basa de algunas librerías incluidas en su instalación para el cuál una aplicación está destinada, de esta forma los problemas de compatibilidad son solucionados o notablemente reducidos.


En el apartado 3 se ha visto el aspecto externo de los sistemas operativos (es decir, la interfaz con el programador y con el usuario), en este apartado se echará un vistazo al interior del sistema operativo. En las subsecciones siguientes se examinarán algunas de las formas posibles de estructurar el código de un sistema operativo. Los diseños estudiados no son exhaustivos, pero dan una idea de las posibilidades.




Este tipo de organización es, con diferencia, la más común. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados, y cada uno de ellos es libre de llamar a cualquier otro, si éste último proporciona un cálculo útil para el primero.

Para construir el programa objeto real del sistema operativo siguiendo este punto de vista, se compilan de forma individual los procedimientos, o los ficheros que contienen los procedimientos, y después se enlazan en un sólo fichero objeto con el enlazador. En términos de ocultación de la información, ésta es prácticamente nula: cada procedimiento es visible a los demás (en contraste con una estructura con módulos o paquetes, en la que la mayoría de la información es local a un módulo, y donde sólo los datos señalados de forma expresa pueden ser llamados desde el exterior del módulo).

Los servicios (mediante llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como los registros o la pila, para después ejecutar una instrucción especial de trampa, a veces referida como llamada al núcleo o llamada al supervisor.

 Esta instrucción cambia la máquina del modo usuario al modo núcleo (también conocido como modo supervisor), y transfiere el control al sistema operativo, lo que se muestra en el evento (1) de la figura 5.1.

El sistema operativo examina entonces los parámetros de la llamada para determinar cual de ellas se desea realizar, como se muestra en (2) de la figura 5.1.

A continuación, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que implementa la k-ésima llamada al sistema.

Esta operación, que se muestra en (3) de la figura 5.1, identifica el procedimiento de servicio, al cual se llama. Por último, la llamada al sistema termina y el control vuelve al programa del usuario.

No hay comentarios:

Publicar un comentario