21 may 2015

Posted by Elisa Martinez On 15:24
¿Quien es ANDY y quien fue su creador/a?
Andy es muñeco verde, logotipo del sistema operativo Android. Salió
por primera vez en el año 2005, cuando Google compró la empresa
Android Inc. Desde entonces, este se ha convertido en la imagen
referencia de Google, en cuanto a Smartphone y tabletas se refiere.
No se esperaban la buena aceptación y la repercusión que tuvo, desde
el primer momento, el susodicho robot verde.

Aunque existen teorías que dicen que "Andy" está inspirado en R2D2
(de la ya famosa saga de Star Wars).
Andy, el muñequito, se parece a un robotito en un videojuego de los años 90.
 Entre los personajes de ese juego se haya uno que deja una
clara pista sobre si Andy es una copia o un diseño 100% original. La
verdad es que las similitudes entre ambos son asombrosas. Desde las
antenas y su forma regordeta, hasta llegar a las extremidades. Si no
fuera por esa cinta azul en el torso, además, los dos se llaman
igual, Android.










La diseñadora encargada del proyecto es Irina Blok.








Versiones
Android 1.0 (G1).
El primer dispositivo contaba con GPS y Bluetooth, Multitarea,
Estrecha integración con los servicios de Google como Gmail, Google
Maps (con Street View), y Google Calendar, Aplicaciones: Amazon MP3
Store, YouTube, Android Market (cerca de 35 aplicaciones en el
lanzamiento), No Microsoft Exchange Server, sin cámara de video.
Android 1.1-Petit Four.
En febrero de 2009 llego la primera actualización para Android, unos
tres meses después del lanzamiento del G1. La versión 1.1 fue
dedicada básicamente a reparar errores e implementar las
actualizaciones “over the air” que hasta ese momento ninguna
plataforma estaba haciendo.
Android Cupcake-Versión 1.5
Android 1.5 es mejor conocido por su nombre en clave, Cup cake, fue la primera versión en utilizar nombre de postres. Cada versión después de Cup cake ha sido nombrada con un nombre de postre continuando el orden alfabético.
En esta versión se comenzaron a ver algunos cambios en la interfaz
de usuario, como son los cambios en la barra del buscador y en la
barra del menú, también cambió el logo del navegador.
Android Donut-Versión 1.6
El sistema operativo lanza una nueva versión en el mes de Septiembre del año 2009 que es novedad y muy aceptada entre todos los usuario Android que en este lapso ya comienza el auge dentro del mercado.
La versión se destaca por las funciones con las que cuenta entre las
que se destacan son la de navegación en Google Maps paso-a-paso,
mejora en el interfaz de la cámara de foto y video, búsquedas por
voz.
Android Eclair-Versión 2.0
Versión del sistema operativo lanzada al mercado en el mes de Diciembre de 2009, con zoom digital de la cámara de fotos y video, mejoras en Google Maps, nuevo navegador de internet con soporte de video e incluso de Flash, salvapantallas animadas.
Esta es la versión que comienza a demostrar la robustez y
estabilidad como sistema operativo para dispositivos móviles.
Android 2.1-Eclair 2.
Versión lanzada en Enero de 2010, entre sus características principales se encuentran las siguientes:
Fondo de pantalla en vivo, cinco pantallas de inicio, Voz a texto
añadido a cualquier campo de texto, icono del micrófono para el
dictado de voz en mensajes en correo electrónico, los textos, y así
sucesivamente.
Android Froyo-Versión 2.2
Fue lanzado en Mayo de 2010, dentro de las funciones del sistema se encuentran la mejora de memoria, mucho más veloz que las versiones anteriores, hotspot WiFi incluido, soporte de correo electrónico Microsoft Exchange y video llamada. Soporta Flash.
Ya tomando su sitio de honor entre la mayoría de los dispositivos
móviles a nivel mundial. Excelente aceptación por parte de lo
susuarios.
Android Gingerbread-Versión 2.3
Versión de Android que se lanza en el mes de Diciembre de 2010 cuya aceptación en el mercado sigue siendo muy buena, ya que cuenta con mejores características visuales dentro de las aplicaciones que se muestran en el menú del dispositivo móvil.
Dentro de las funciones que se encuentran en la versión son la
mejora del soporte de video online, mejora de la gestión de la
energía (y consumo de la batería), mejora del teclado virtual,
soporte para pagos. Posibilidades para usuarios totalmente
conectados.
Android Honey Comb-Versión 3.0/3.4
Sistema operativo optimizado para tabletas, posee plenas funcionalidades multitareas multitasking para cambiar de aplicaciones en uso dejando las demás en espera visibles en una columna, soporte Flash y DivX, aparte de los navegadores privados tradicionales integra Dolphin, home page personalizable y widgets.
Soporte de gráficos 3D, Side-by-side las pestañas del navegador,
navegación privada, Panel de doble modo de libreta de direcciones,
e-mail, Interfaz de usuario rediseñada incluye miniaturas del
programa,  Video chat con Google Talk, Pantalla completa en modo de
galería de fotos, Bluetooth tethering.
Android Icecream Sandwich-Versión 4.0
Lanzada al mercado a finales del año 2011, cuenta con las funciones
de diseñado para todos los dispositivos móviles en que se puede
instalar como son Smartphone, tabletas y notebooks de todas las
medidas y marcas, pantalla principal con imágenes 3D, barras de
estado y widgets redimensionables, reconocimiento facial, mejora de
reconocimiento de voz; soporte USB para teclados y controles para
PS3. Novedades y mejoras en la navegación e interfaz, con el
objetivo de dinamizar y facilitar la experiencia del usuario.
Android 4.2-Jelly Bean.
Lanzada en 2012, la versión mencionada se destaca sobre todo que cada vez más el sistema se irá depurando y solucionado todo, y así también llegará también a más público alrededor del mundo, que es su objetivo final.
Para lograrlo se utiliza el proyecto mantequilla que fue como decidieron nombrarlo los programadores del sistema, o mejor descrito como Project Butter que es el nombre que se ha escogido para describir algunos objetivos en esta versión Android.
Entrando a términos de software, la siguiente versión será mucho más
fluida, más rápida y más suave, para el agrado de los usuarios.
Android 5.0-Key Lime Pie.
La denominación como ya es una costumbre vuelve a basarse en la
curiosa correlación de postres ordenados de forma alfabética y en la
imagen se muestra al androide verde comiendo cada uno de ellos desde
que se lanzó la primera versión hace cinco años, bautizada como
Apple Pie. 


Posted by Elisa Martinez On 14:52
Android” fue una creación de Andy Rubin, quien comenzó con la
propuesta de crear un sistema desde que se encontraba en la
Universidad de Utica, Nueva York.
En la carrera de Ciencias de la computación en el año de 1986
después de haber terminado la carrera comienza a trabajar de una
empresa a otra hasta que logró trabajar como ingeniero Apple, donde
pasó a una empresa que surgió de Apple llamada General Magic, y aquí
empezó con lo importante, ya que participó en el desarrollo de Magic
Cup, lo que pretendía ser un sistema operativo para teléfonos.

Sin embargo General Magic fracasó y se fue a la ruina, momento en el
cual Andy se unió a Artemis Research, que fue comprada por
Microsoft.
Después de un lapso ambicionó hacer algo por cuenta propia, y fundó
Danger Inc., que finalmente sería también comprada por Microsoft. En
Danger Inc. suceden cosas muy importantes:
La primera es que desarrollan el Hip-top, lo que es ya un teléfono
que marcaría las primeras líneas de lo que serían los Smartphone, y
la segunda es que se ve tan frustrado que decide abandonar la
compañía de la que era CEO.
Todo ello le llevo a su paso final en esta etapa, fundar en 2003
Android Inc.
En Agosto de 2005, cuando Android Inc. contaba con veintidós meses
de vida, Google adquirió la empresa, pero esta vez se ve que Andy se
mostró satisfecho con esta venta, no como ocurrió con Danger Inc.
Andy pasa a formar parte del equipo de Google, y es donde trabaja
como vicepresidente de ingeniería de Google supervisando el
desarrollo de Android.
El 5 de Noviembre de 2007 que se hizo el anuncio oficial de Android.
Pero durante estos dos años Google había estado trabajando,
moviéndose, y una de ella fue llegar a acuerdos con fabricantes de
teléfonos móviles para desarrollar el primer dispositivo Android de
la historia.
Versiones Android
Versiones previas de Android, aparecen Astro boy o Bender.
Android 1.0  o Apple Pie.
Android 1.1 – Petit Four.
Android 1.5 – Cup cake.
Android 1.6 – Donut.
Android 2.0 – Éclair.
Android 2.1 – Éclair.
Android 2.2 – Froyo.
Android 2.3 – Ginger bread.
Android 3.0 – Honeycomb.
Android 4.0 – Ice Cream Sándwich.
Android 4.1 – Jelly Bean.

10 RAZONES PARA ELEGIR ANDROID
1. Es el más utilizado del mundo.
2. Es libre.
3. Es muy personalizable.
4. Es legal modificarlo.
5. Cuenta con más aplicaciones.
6. Hay más aplicaciones gratuitas.
7. Los Smarthphone Android son más baratos.
8. Cuenta con una mayor comunidad.
9. No es Apple.
10. Android es de Google.

Posted by Elisa Martinez On 13:16
SISTEMAS OPERATIVOS PARA DISPOSITIVOS MOVILES


ANTECEDENTES:
  En la actualidad son muchos los avances tecnológicos que se tienen y se esperan aún más, por el momento tenemos los suficientes para saber qué es lo que está pasando en el mundo entero, esto gracias a las telecomunicaciones y a los dispositivos móviles.
Observando el panorama en una ciudad, cualquier persona se da cuenta
que la población está ocupada utilizando un dispositivo móvil,
generando la incógnita de saber cuál es el sistema operativo dentro
de ese dispositivo, y conocer que es lo que ha pasado con el sistema
operativo desde sus inicios, lograr conocer un poco a su creador y
ventajas sobre otro sistemas operativos para dispositivos móviles. 
Los celulares surgieron por la necesidad de estar comunicados uno
con otros, su evolución ha sido muy grande y muy rápida, los
primeros ejemplares solo servían para hacer llamadas y eran de un
gran tamaño y peso, luego se fueron haciendo más pequeños y con
mayores funciones.
Hoy en día se pueden enviar mensajes de texto a otros celulares,
incluyeron en ellos la capacidad para reproducir música y la
posibilidad de conectarse vía infrarrojo y posteriormente vía
bluetooth.
Incluyendo en los mismos dispositivos la posibilidad de tomar fotos
y/o videos así como una mayor capacidad de almacenamiento y una
mayor definición, en un corto lapso se crearon celulares con la
capacidad de conectarse a internet ya sea por la cobertura de la
compañía o por medio de wifi y así facilitar la descarga de
diferentes tipos de archivos. 
Cada fabricante de celulares y/o dispositivos móviles tiene un
sistema operativo con un sinfín de aplicaciones, hasta ahora los
sistemas operativos para Smartphone más conocidos son el IOs de la
compañía Apple, el sistema de Microsoft para móviles que es Windows
phone, el sistema propio de Black Berry y el sistema operativo que
fue adquirido por la empresa de google llamado Android.

Posted by Elisa Martinez On 9:27
 ARQUITECTURA DE MEMORIA

  La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos). Sin una memoria de la que los procesadores leyeran o escribieran la información, no habría ordenadores digitales de programa almacenado (como son los actuales desde EDVANC desde 1945).
Por una parte tenemos que la velocidad de ejecución de los programas es muy dependiente de la velocidad a la que se pueden transferir los datos entre la CPU y la memoria. Por otra parte también es importante disponer de una gran cantidad de memoria para facilitar la ejecución de programas que son grandes o que trabajan con gran cantidad de datos.
Por esto idealmente, la memoria debería de ser rápida, grande y barata. Como cabría esperar, hay un compromiso entre estas tres características de la memoria que mantienen las siguientes relaciones:
·         A menor tiempo de acceso → mayor coste por bit.
·         A mayor capacidad → menor coste por bit.
·         A mayor capacidad → mayor tiempo de acceso.
Posted by Elisa Martinez On 9:19

1) ¿Cuáles son los problemas clásicos de Comunicación y Sincronización de Procesos?
* La Sección Crítica:
Es uno de los problemas que con mayor frecuencia aparece cuando se ejecutan procesos concurrentes tanto si son cooperantes como independientes. Considérese un sistema compuesto por n procesos {P1, P2,..., PN} en el que cada uno tiene un fragmento de código, que se denomina sección crítica. Dentro de la sección crítica, los procesos pueden estar accediendo y modificando variables comunes, registros de una base de datos, un archivo, en general cualquier recurso compartido. La característica más importante de este sistema es que cuando un proceso se encuentra ejecutando código de la sección crítica, ningún otro proceso puede ejecutar en su sección. Para resolver el problema de la sección crítica es necesario utilizar algún mecanismo de sincronización que permita a los procesos cooperar entre ellos sin problemas. Este mecanismo debe proteger el código de la sección crítica y su funcionamiento básico es el siguiente:     
· Cada proceso debe solicitar permiso para entrar en la sección crítica mediante algún fragmento de código, que se denomina de forma genérica entrada en la sección crítica.
. Cuando un proceso sale de la sección crítica debe indicarlo mediante otro fragmento de código, que se denomina salida de la sección crítica. Este fragmento permitirá que otros procesos entren a ejecutar el código de la sección crítica.

                             
*Productor-Consumidor:

El problema del productor-consumidor es uno de los problemas más habituales que surge cuando se programan aplicaciones utilizando procesos concurrentes. En este tipo de problemas, uno o más procesos, que se denominan productores, generan cierto tipo de datos que son utilizados o consumidos por otros procesos, que se denominan consumidores. Un claro ejemplo de este tipo de problemas es el del compilador. En este ejemplo el compilador hace las funciones de productor al generar el código ensamblador que consumirá el proceso ensamblador para generar el código máquina. En esta clase de problemas es necesario disponer de algún mecanismo de comunicación que permita a los procesos productor y consumidor intercambiar información. Ambos procesos, además, deben sincronizar su acceso al mecanismo de comunicación para que la interacción entre ellos no sea problemática: cuando el mecanismo de comunicación se llene, el proceso productor se deberá quedar bloqueado hasta que haya hueco para seguir insertando elementos. A su vez, el proceso consumidor deberá quedarse bloqueado cuando el mecanismo de comunicación este vacío, ya que en este caso no podrá continuar su ejecución al no disponer de información a consumir. Por tanto, este tipo de problema requiere servicios para que los procesos puedan comunicarse y servicios para que se sincronicen a la hora de acceder al mecanismo de comunicación.




* Los lectores-escritores:

En este problema existe un determinado objeto, que puede ser un archivo, un registro dentro de un archivo, etc., que va a ser utilizado y compartido por una serie de procesos concurrentes. Algunos de estos procesos sólo van a acceder al objeto sin modificarlo, mientras que otros van a acceder al objeto para modificar su contenido. Esta actualización implica leerlo, modificar su contenido y escribirlo. A los primeros procesos se les denomina lectores y a los segundos se les denomina escritores. En este tipo de problemas existe una serie de restricciones que han de seguirse:

·         Sólo se permite que un escritor tenga acceso al objeto al mismo tiempo. Mientras el escritor esté accediendo al objeto, ningún otro proceso lector ni escritor podrá acceder a él.
·         Se permite, sin embargo, que múltiples lectores tengan acceso al objeto, ya que ellos nunca van a modificar el contenido del mismo.

En este tipo de problemas es necesario disponer de servicios de sincronización que permitan a los procesos lectores y escritores sincronizarse adecuadamente en el acceso al objeto.

Ejemplo:
Problemas: Existe un recurso (archivo, registro, etc.) que va a ser utilizado y compartido por una serie de procesos concurrentes,  algunos procesos acceden sin modificarlo (lectores). Otros procesos acceden para modificarlo (escritores). Restricciones en estos problemas: 1 escritor exclusivamente Múltiples lectores Se requieren servicios de sincronización para que lectores y escritores se sincronicen en el acceso al recurso.

*Comunicación Cliente-Servidor:

En el modelo cliente-servidor, los procesos llamados servidores ofrecen una serie de servicios a otros procesos que se denominan clientes. El proceso servidor puede residir en la misma máquina que el cliente o en una distinta, en cuyo caso la comunicación deberá realizarse a través de una red de interconexión. Muchas aplicaciones y servicios de red, como el correo electrónico y la transferencia de archivos, se basan en este modelo.
En este tipo de aplicaciones es necesario que el sistema operativo ofrezca servicios que permitan comunicarse a los procesos cliente y servidor. Cuando los procesos ejecutan en la misma máquina, se pueden emplear técnicas basadas en memoria compartida o archivos. Sin embargo, este modelo de comunicación suele emplearse en aplicaciones que ejecutan en computadores que no comparten memoria y, por tanto, se usan técnicas basadas en paso de mensajes.
Algunos ejemplos de aplicación computacionales del modelo cliente servidor son: El correo electrónico, un servidor de impresión, y la World Wide Web.

2). Mencione ¿Cuáles son los mecanismos de Sincronización entre Proceso?
*Tuberías (pipes):
Una tubería es un mecanismo de comunicación y sincronización. Desde el punto de vista de su utilización, es como un seudoarchivo mantenido por el sistema operativo. Conceptualmente, cada proceso ve la tubería como un conducto con dos extremos, uno de los cuales se utiliza para escribir o insertar datos y el otro para extraer o leer datos de la tubería. La escritura se realiza mediante el servicio que se utiliza para escribir datos en un archivo. De igual forma, la lectura se lleva a cabo mediante el servicio que se emplea para leer de un archivo
Ejemplos:

* Semáforos:

Un semáforo es un mecanismo de sincronización que se utiliza generalmente en sistemas con memoria compartida, bien sea un monoprocesador o un multiprocesador. Su uso en un multicomputador depende del sistema operativo en particular. Un semáforo es un objeto con un valor entero al que se le puede asignar un valor inicial no negativo y al que sólo se puede acceder utilizando dos operaciones atómicas: wait y signal (también llamadas Down o up, respectivamente).
Ejemplo:
Los semáforos pueden ser usados para diferentes propósitos, entre ellos:
·         Implementar cierres de exclusión mutua o locks
·         Barreras
·         Permitir a un máximo de N threads (hilos) acceder a un recurso, inicializando el semáforo en N
·         Notificación. Inicializando el semáforo en 0 puede usarse para comunicación entre threads sobre la disponibilidad de un recurso
En el siguiente ejemplo se crean y ejecutan n procesos que intentarán entrar en su sección crítica cada vez que puedan, y lo lograrán siempre de a uno por vez, gracias al uso del semáforo s inicializado en 1. El mismo tiene la misma función que un lock.
   Const int n    /* número de procesos */
   Variable semáforo s; /* declaración de la variable semáforo de valor entero*/
   Inicia (s, 1)   /* Inicializa un semáforo de nombre s con valor 1 */
  
   Void P (int i)
   {
       While (cierto)
       {
           P(s)    /* En semáforos binarios, lo correcto es poner un P(s) antes de entrar en
                      La sección crítica, para restringir el uso de esta región del código*/

           /* SECCIÓN CRÍTICA */
         

           V(s)    /* Tras la sección crítica, volvemos a poner el semáforo a 1 para que otro                                        
                      Proceso pueda usarla */

           /* RESTO DEL CÓDIGO */
       }
   }
   Int main ()
   {
   Comenzar-procesos (P (1), P (2),..., P(n));
  

*Mutex:


Los mutex y las variables condicionales son mecanismos especialmente concebidos para la sincronización de procesos ligeros. Un mutex es el mecanismo de sincronización de procesos ligeros más sencillo y eficiente. Los mutex se emplean para obtener acceso exclusivo a recursos compartidos y para asegurar la exclusión mutua sobre secciones críticas.
Un Mutex consiste en una especie de semáforo binario con dos estados, cerrado y no cerrado. Un Mutex es un acceso que permite a los hilos asegurar la integridad de un recurso compartido al que tienen acceso. Tienen dos estados: Bloqueado y Desbloqueado.
Ejemplo:
Un ejemplo de de utilización de Mutex es aquel en el que un hilo A y un hilo B están compartiendo un recurso típico, como puede ser una variable global. El hilo A bloquea el Mutex, con lo que obtiene el acceso a la variable. Cuando el hilo B intenta bloquear el Mutex, el hilo B es puesto a la espera, puesto que le Mutex ya ha sido bloqueado antes. Cuando el hilo A finaliza el acceso a la variable global, desbloquea el Mutex. Cuando esto sucede, el hilo B continuara la ejecución adquiriendo el bloqueo, pudiendo entonces acceder a la variable.
* Interbloqueo:
Un interbloqueo supone un bloqueo permanente de un conjunto de procesos que compiten por recursos o bien se comunican o sincronizan entre sí. Los    interbloqueos que aparecen cuando se utilizan mecanismos de comunicación y sincronización se deben a un mal uso de los mismos.
Ejemplos:
Proceso P1                     Proceso P2
  Solicita (C)                      Solicita (l)
  Solicita   (l)                      Solicita (C)
  Uso de rec.                       Uso de rec.
  Libera (l)                           Libera (C)
  Libera (C)                          Libera  (l)
O cuando dos procesos compiten por dos recursos que necesitan para funcionar, que solo pueden ser usador por un proceso a la vez.

3). Defina ¿Qué es POSIX? Y ¿Cómo se relaciona con la Comunicación y    Sincronización de Procesos?
POSIX: Es un estándar de interfaces de Sistema Operativo, basado en el popular sistema operativo UNIX. Su principal objetivo es permitir la portabilidad de aplicaciones a nivel de código fuente, es decir, que sea posible portar una aplicación de un computador a otro sin más que recompilar su código. Junto a las interfaces de servicios del sistema, se estandarizan también perfiles de entornos de aplicaciones que permitirán a los implementadores desarrollar Sistemas Operativos POSIX de tiempo real para una gran variedad de plataformas, desde los sistemas empotrados pequeños hasta los sistemas de tiempo real grandes. El estándar define interfaces  en diferentes lenguajes de programación. En particular, las interfaces de tiempo real están siendo definidas para C y Ada, que son los lenguajes estándar de programación más importantes para los sistemas prácticos de tiempo real.
POSIX se relaciona con la Comunicación de procesos, especificando un mecanismo sencillo de colas de mensajes para la comunicación entre procesos. Las colas de mensajes están identificadas por un nombre perteneciente a un espacio de nombres dependiente de la implementación.
POSIX se relaciona con la Sincronización de procesos, definiendo funciones para permitir la sincronización de procesos a través de semáforos contadores.
Ejemplos:
El número de semáforos disponibles es fijo (constante NUM_SEM). Cada semáforo tiene asociado un nombre que consiste en una cadena de caracteres con un tamaño máximo igual a MAX_NOM_SEM (incluyendo el carácter nulo de terminación de la cadena). Comunicación y sincronización de procesos.
Cuando se crea un semáforo, el proceso obtiene un descriptor (similar al descriptor de archivo de POSIX) que le permite acceder al mismo. Si ya existe un semáforo con ese nombre, se devuelve un error. En caso de que no exista colisión, se debe comprobar si se ha alcanzado el número máximo de semáforos en el sistema. Si esto ocurre, se debe bloquear al proceso hasta que se elimine algún semáforo. La operación que crea el semáforo también lo deja abierto para poder ser usado.
Para poder usar un semáforo ya existente se debe abrir especificando su nombre. El proceso obtiene un descriptor asociado al mismo, cada proceso tiene asociado un conjunto de descriptores a los semáforos que está usando. El número de descriptores por proceso está limitado a NUM_SEM_PROC. Si al abrir o crear un semáforo no hay ningún descriptor libre, se devuelve un error. Las primitivas de uso del semáforo (signal y wait) tienen básicamente la semántica convencional. Ambas reciben como parámetro un descriptor de semáforo. La única característica un poco especial es que la primitiva signal incluye como argumento el número de unidades que se incrementa el semáforo.
Por tanto, esta llamada puede causar el desbloqueo de varios procesos, cuando un proceso no necesita usar un semáforo, lo cierra.
El semáforo se eliminará realmente cuando no haya ningún proceso que lo utilice, o sea, no haya ningún descriptor asociado al semáforo. En el momento de la liberación real es cuando hay que comprobar si había algún proceso bloqueado esperando para crear un semáforo debido a que se había alcanzado el número máximo de semáforos en el sistema.
Señales POSIX permiten:
v  Un proceso puede bloquearse mediante el servicio “pause” y esperar una señal de otro proceso enviada con “Kill”.
v  Desventajas: Las señales tienen comportamientos asíncronos, podría recibir una señal en cualquier momento  aunque no la espere.
v  Las señales no se encolan, solo la última de un tipo, con lo cual se podrían perder eventos de sincronización importantes.
v  No se pueden usar para sincronizar procesos, excepto casos muy simples. 



Resumen sobre la Unidad 06:
La comunicación entre procesos  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 paso 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: IP (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).
Los procesos pueden estar ejecutándose en una o más computadoras conectadas a una red. Las técnicas de IPC están divididas dentro de métodos para: paso de mensajes, sincronización, memoria compartida y llamadas de procedimientos remotos (RPC). El método de IPC usado puede variar dependiendo del ancho de banda y latencia (el tiempo desde el pedido de información y el comienzo del envío de la misma) de la comunicación entre procesos, y del tipo de datos que están siendo comunicados. En muchos casos, los procesos se reúnen para realizar tareas en conjunto, a este tipo de relación se le llama procesos cooperativos. Para lograr la comunicación, los procesos deben sincronizarse, de no ser así pueden ocurrir problemas no deseados.
La sincronización es la transmisión y recepción de señales que tiene por objeto llevar a cabo el trabajo de un grupo de procesos cooperativos. Es la coordinación y cooperación de un conjunto de procesos para asegurar la comparación de recursos de cómputo. La sincronización entre procesos es necesaria para prevenir y/o corregir errores de sincronización debidos al acceso concurrente a recursos compartidos, tales como estructuras de datos o dispositivos de E/S, de procesos contendientes.
La sincronización  también permite intercambiar señales de tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones específicas de precedencia impuestas por el problema que se resuelve. Sin una sincronización adecuada entre procesos, la actualización de variables compartidas puede inducir a errores de tiempo relacionados con la concurrencia que son con frecuencia difíciles de depurar. Una de las causas principales de este problema es que procesos concurrentes puedan observar valores temporalmente inconsistentes de una variable compartida mientras se actualizan. Una aproximación para resolver este problema es realizar actualizaciones de variables compartidas de manera mutuamente exclusiva. Se pueden mejorar permitiendo que a lo más un proceso entre a la vez en la sección crítica de código en la que se actualiza una variable compartida o estructura de datos en particular.
Para que los procesos puedan sincronizarse es necesario disponer de servicios que permitan bloquear o suspender bajo determinadas circunstancias la ejecución de un proceso. Los principales mecanismos de sincronización que ofrecen los sistemas operativos son:


  • Señales
  • Tuberías
  • Semáforos
  • Mutex y variables condicionales
  • Paso de mensajes