Rss Feed
  1. Sistemas Operativos para Dispositivos Móviles. 


    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. 
    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.
    Sistema Operativo Android

         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 Magicy 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 Researchque fue comprada por Microsoft. 
    Sistema Operativo Android
      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 Smartphoney 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.
           Verciones de 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 verciones de 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.


























































































































































































































































































































    SEGURIDAD  Y PRUEBAS DEL SOFTWARE
    DESARROLLO DEL TEMA EN EL SIGUENTE ENLACE

    TAREA

    Control de lectura




    SISTEMAS OPERATIVOS.
    CONTROL DE LECTURA

    Unidad 05 - Procesos de sistemas operativos.
    Concepto de proceso.
    En un sistema multiprogramado o de tiempo compartido, un proceso es la imagen en memoria de un programa, junto con la información relacionada con el estado de su ejecución.
    Un programa es una entidad pasiva, una lista de instrucciones; un proceso es una entidad activa, que –empleando al programa– define la actuación que tendrá el sistema. En contraposición con proceso, en un sistema por lotes se habla de tareas.
    Una tarea requiere mucha menos estructura, típicamente basta con guardar la información relacionada con la contabilidad de los recursos empleados. Una tarea no es interrumpida en el transcurso de su ejecución. Ahora bien, esta distinción no es completamente objetiva -y se pueden encontrar muchos textos que emplean indistintamente una u otra nomenclatura.
    Si bien el sistema brinda la ilusión de que muchos procesos se están ejecutando al mismo tiempo, la mayor parte de ellos típicamente está esperando para continuar su ejecución- en un momento determinado sólo puede estar ejecutando sus instrucciones un número de procesos igual o menor al número de procesadores que tenga el sistema.
    Estados de un proceso.
    Un proceso, a lo largo de su vida, alterna entre diferentes estados de ejecución. Éstos son:
    Nuevo: Se solicitó al sistema operativo la creación de un proceso, y sus recursos y estructuras están siendo creadas.
    Listo: Está listo para iniciar o continuar su ejecución pero el sistema no le ha asignado un procesador.
    En ejecución: El proceso está siendo ejecutado en este momento. Sus instrucciones están siendo procesadas en algún procesador.
    Bloqueado: En espera de algún evento para poder continuar su ejecución (aun si hubiera un procesador disponible, no podría avanzar).
    Zombie: El proceso ha finalizado su ejecución, pero el sistema operativo debe realizar ciertas operaciones de limpieza para poder eliminarlo de la lista.
    Terminado: El proceso terminó de ejecutarse; sus estructuras están a la espera de ser limpiadas por el sistema operativo.
    Procesos de Sistemas Operativos – Control de Lectura.
    Diagrama de transición entre los estados de un proceso.
    Componentes de los procesos.
    La información que debe manipular el sistema operativo relativa a cada uno de los procesos actuales se suele almacenar en una estructura llamada bloque de control de proceso (PCB - Process Control Block). El PCB incluye campos como:
    Estado del proceso: El estado actual del proceso.
    Contador de programa: Cuál es la siguiente instrucción a ser ejecutada por el proceso.
    Registros del CPU: La información específica del estado del CPU mientras el proceso está en ejecución (debe ser respaldada y restaurada cuando se registra un cambio de estado).
    Información de planificación (scheduling): La prioridad del proceso, la cola en que está agendado, y demás información que puede ayudar al sistema operativo a planificar los procesos.
    Información de administración de memoria: La información de mapeo de memoria (páginas o segmentos, dependiendo del sistema operativo), incluyendo la pila (stack) de llamadas.
    Información de contabilidad: Información de la utilización de recursos que ha tenido este proceso —puede incluir el tiempo total empleado y otros (de usuario, cuando el procesador va avanzando sobre las instrucciones del programa propiamente, de sistema cuando el sistema operativo está atendiendo las solicitudes del proceso), uso acumulado de memoria y dispositivos, etcétera.
    Estado de E/S: Listado de dispositivos y archivos asignados que el proceso tiene abiertos en un momento dado.
    Procesos de Sistemas Operativos – Control de Lectura.
    Procesos e Hilos.
    La cantidad de información que el sistema operativo debe manejar acerca de cada proceso es bastante significativa. Si cada vez que el planificador elige qué proceso pasar de Listo a En ejecución debe considerar buena parte de dicha información, la simple transferencia de todo esto entre la memoria y el procesador podría llevar a un desperdicio burocrático de recursos. Una respuesta a esta problemática fue la de utilizar los hilos de ejecución, a veces conocidos como procesos ligeros (LWP, Lightweight processes).
    Cuando se consideran procesos basados en un modelo de hilos, se puede proyectar en sentido inverso que todo proceso es como un solo hilo de ejecución. Un sistema operativo que no ofreciera soporte expreso a los hilos los planificaría exactamente del mismo modo.
    Pero visto desde la perspectiva del proceso hay una gran diferencia: si bien el sistema operativo se encarga de que cada proceso tenga una visión de virtual exclusividad sobre la computadora, todos los hilos de un proceso comparten un sólo espacio de direccionamiento en memoria y los archivos y dispositivos abiertos. Cada uno de los hilos se ejecuta de forma (aparentemente) secuencial y maneja su propio contador de programa y pila.

    Patrones de trabajo con hilos.
    Hay tres patrones en los que caen generalmente los modelos de hilos; se puede emplear más de uno de estos patrones en diferentes áreas de cada aplicación, e incluso se pueden anidar (esto es, se podría tener una línea de ensamblado dentro de la cual uno de los pasos sea un equipo de trabajo):
    a) Jefe/Trabajador: Un hilo tiene una tarea distinta de todos los demás: el hilo jefe genera o recopila tareas para realizar, las separa y se las entrega a los hilos trabajadores.
    Este modelo es el más común para procesos que implementan servidores (es el modelo clásico del servidor Web Apache) y para aplicaciones gráficas (GUI), en que hay una porción del programa (el hilo jefe) esperando a que ocurran eventos externos. El jefe realiza poco trabajo, se limita a invocar a los trabajadores para que hagan el trabajo de verdad; como mucho, puede llevar la contabilidad de los trabajos realizados. Típicamente, los hilos trabajadores realizan su operación, posiblemente notifican al jefe de su trabajo, y finalizan su ejecución.
    b) Equipo de trabajo: Al iniciar la porción multihilos del proceso, se crean muchos hilos idénticos, que realizarán las mismas tareas sobre diferentes datos. Este modelo es frecuentemente utilizado para cálculos matemáticos (p. ej.: criptografía, render, álgebra lineal). Puede combinarse con un estilo jefe/trabajador para irle dando al usuario una previsualización del resultado de su cálculo, dado que éste se irá ensamblando progresivamente, pedazo por pedazo.
    Patrón de hilos Equipo de Trabajo.
    c) Línea de Ensamblado: Si una tarea larga puede dividirse en pasos sobre bloques de la información total a procesar, cada hilo puede enfocarse a hacer sólo un paso y pasarle los datos a otro hilo conforme vaya terminando. Una de las principales ventajas de este modelo es que ayuda a mantener rutinas simples de comprender, y permite que el procesamiento de datos continúe, incluso si parte del programa está bloqueado esperando E/S. Un punto importante a tener en cuenta en una línea de ensamblado es que, si bien los hilos trabajan de forma secuencial, pueden estar ejecutándose paralelamente sobre bloques consecutivos de información y eventos.
    Patrón de hilos Línea de Ensamblado.

    Concurrencia.
    Desde un punto de vista formal, la concurrencia no se refiere a dos o más eventos que ocurren a la vez sino a dos o más eventos cuyo orden es no determinista, esto es, eventos acerca de los cuales no se puede predecir el orden relativo en que ocurrirán. Si bien dos procesos (o también dos hilos) completamente independientes entre sí ejecutándose simultáneamente son concurrentes, los temas que en la presente sección se expondrán se ocupan principalmente de procesos cuya ejecución está vinculada de alguna manera (p. ej.: dos procesos que comparten cierta información o que dependen uno del otro).
    Aunque una de las tareas principales de los sistemas operativos es dar a cada proceso la ilusión de que se está ejecutando en una computadora dedicada, de modo que el programador no tenga que pensar en la competencia por recursos, a veces un programa requiere interactuar con otros: parte del procesamiento puede depender de datos obtenidos en fuentes externas, y la cooperación con hilos o procesos externos es fundamental.
    Para presentar la problemática y los conceptos relacionados con la concurrencia suelen utilizarse algunos problemas clásicos, que presentan casos particulares muy simplificados, y puede encontrárseles relación con distintas cuestiones que un programador enfrentará en la vida real. Cada ejemplo presenta uno o más conceptos. Se recomienda comprender bien el ejemplo, el problema y la solución y desmenuzar buscando los casos límite como ejercicio antes de pasar al siguiente caso.
    Caso práctico: El Jardín Ornamental.
    Planteamiento.
    Un gran jardín ornamental se abre al público para que todos puedan apreciar sus fantásticas rosas, arbustos y plantas acuáticas. Por supuesto, se cobra una módica suma de dinero a la entrada para lo cual se colocan dos torniquetes, uno en cada una de sus dos entradas. Se desea conocer cuánta gente ha ingresado al jardín así que se instala una computadora conectada a ambos torniquetes: estos envían una señal cuando una persona ingresa al jardín. Se realiza un modelo simplificado de la situación, así que no se estudiarán los detalles del hardware utilizado. Aquí es importante notar que los dos torniquetes son objetos que existen y se comportan en paralelo e independientemente: los eventos que generan no tienen un orden predecible. Es decir, que cuando se escriba el software no se sabe en qué momento llegará cada visitante ni qué torniquete utilizará. Se simulará un experimento en el que 20 visitantes ingresan por cada torniquete. Al final de la simulación deberá haber 40 visitantes contados.
    Nota: Elabore un flujograma o algoritmo que represente la solución para el problema “El Jardín Ornamental”. Puede utilizar la estructura que mejor se adapte al caso.

    En un sistema operativo multitarea cuando un proceso agota su porción de tiempo de procesador (quantum) o detiene su ejecución por otra razón, los valores almacenados en registros se preservan (junto con la información sobre el proceso) para poder restaurarlo cuando la ejecución continúe (de esta forma se provee la ilusión de la multitarea en sistemas de un solo núcleo). Así, en el problema del jardín ornamental cada torniquete tiene su propia copia de los valores en los registros. Sin embargo, se supone que el resto de la memoria es compartida (en particular, se utiliza ese hecho para llevar la cuenta de personas que ingresan).
    Bloqueos mútuos e inanición.
    Bloqueo mútuo: Situación que ocurre cuando dos o más procesos poseen determinados recursos, y cada uno queda detenido, a la espera de alguno de los que tiene el otro. El sistema puede seguir operando normalmente, pero ninguno de los procesos involucrados podrán avanzar.
    Inanición: Situación en que un proceso no puede avanzar en su ejecución dado que necesita recursos que están (alternativamente) asignados a otros procesos.

    Caso práctico: La cena de los filósofos.
    Planteamiento.
    Cinco filósofos se dan cita para comer arroz en una mesa redonda. En ella, cada uno se sienta frente a un plato. A su derecha, tiene un palito chino, y a su izquierda tiene otro.
    Los filósofos sólo saben pensar() y comer(). Cada uno de ellos va a pensar() un tiempo arbitrario, hasta que le da hambre. El hambre es mala consejera, por lo que intenta comer(). Los requisitos son:
     Sólo un filósofo puede sostener determinado
    palito a la vez, esto es, los palitos son recursos
    de acceso exclusivo.
     Debe ser imposible que un filósofo muera de
    inanición estando a la espera de un palito.
     Debe ser imposible que se presente un bloqueo
    mutuo.
     Debe ser posible que más de un filósofo pueda
    comer al mismo tiempo.
    Nota: Elabore un flujograma o algoritmo que represente la solución para el problema “La cena de los filósofos”. Puede utilizar la estructura que mejor se adapte al caso.

    Ejemplo de Bloqueo Mútuo.
    Un bloqueo mutuo puede ejemplificarse con la situación que se presenta cuando cuatro automovilistas llegan al mismo tiempo al cruce de dos avenidas del mismo rango en que no hay un semáforo, cada uno desde otra dirección.
    Los reglamentos de tránsito señalan que la precedencia la tiene el automovilista que viene más por la derecha. En este caso, cada uno de los cuatro debe ceder el paso al que tiene a la derecha —y ante la ausencia de un criterio humano que rompa el bloqueo, deberían todos mantenerse esperando por siempre.
    Un bloqueo mutuo se presenta cuando (Condiciones de Coffman):
    1. Los procesos reclaman control exclusivo de los recursos que piden (condición de exclusión mutua).
    2. Los procesos mantienen los recursos que ya les han sido asignados mientras esperan por recursos adicionales (condición de espera por).
    3. Los recursos no pueden ser extraídos de los procesos que los tienen hasta su completa utilización (condición de no apropiatividad).
    4. Hay una cadena circular de procesos en la que cada uno mantiene a uno o más recursos que son requeridos por el siguiente proceso de la cadena (condición de espera circular).

    Servicios POSIX relacionados con el trabajo de procesos.
    El término POSIX corresponde a las iniciales de interfase de sistema operativo portable (Portable Operating System Interface). Es un estándar de interfase de sistema operativo, basado en el popular sistema operativo UNIX. El estándar POSIX está actualmente en desarrollo, y 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.
    El POSIX es un estándar de sistema operativo en evolución. Una importante parte de este estándar está pensada para proporcionar la portabilidad de las aplicaciones con requerimientos de tiempo real. Junto a las interfases 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.
    La funcionalidad especificada en el estándar POSIX es similar a la que se encuentra en la mayoría de los núcleos y sistemas operativos de tiempo real disponibles comercialmente. Las interfases POSIX se han definido de acuerdo con resultados recientes de la teoría de planificación con prioridades estáticas. Algunas implementaciones basadas en borradores iniciales de los estándares POSIX.4 y POSIX.4a ya han sido desarrolladas y muestran resultados muy prometedores. En resumen, el estándar POSIX permitirá construir sistemas predecibles y analizables que cumplen sus requerimientos de tiempo real, y que pueden ser fácilmente portables de unas plataformas a otras.
    Procesos de Sistemas Operativos – Control de Lectura.
    Términos básicos a investigar.
    1. Programa.
    2. Procesos.
    3. Hilos.
    4. Hebras.
    5. Multihilos.
    6. POSIX.
    7. Servicios del sistema operativo.
    8. API.
    9. Sincronización.
    10. Variable global.





    Unidad 06: Comunicación y Sincronización de procesos

    Guía de trabajo "A" Comunicación y Sincronización de procesos.
    1. problemas clásicos de comunicación
    2. Mecanismos de comunicación y Sincronización de procesos
    3. Servicios Posix relacionados con la comunicación y sincronización de procesos.


    Indicación general: Resuelva ordenadamente los ítems que se presentan a continuación. La solución de la guía deberá ser en parejas y presentarla impresa el miércoles 22 de abril sin excepciones.



    ÍTEMS
    1) Investigue ¿Cuáles son los problemas clásicos de comunicación y sincronización de procesos? Elabore un listado y descríbalos. Ejemplos.
    2) Mencione ¿Cuáles son los mecanismos de sincronización entre procesos? Descríbalos. Ejemplos.
    3) Defina ¿Qué es POSIX? Y ¿Cómo se relaciona con la comunicación y sincronización de procesos? Ejemplos.
    4) Agregue información adicional complementaria acerca de la Unidad 06. Máximo 1 página.

    Respuestas de preguntas.

    Universidad Gerardo Barrios

    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.

    Ejemplos:
                                 


    *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:
    Un proceso puede bloquearse mediante el servicio “pause” y esperar una señal de otro proceso enviada con “Kill”.
    Desventajas: Las señales tienen comportamientos asíncronos, podría recibir una señal en cualquier momento  aunque no la espere.
    Las señales no se encolan, solo la última de un tipo, con lo cual se podrían perder eventos de sincronización importantes.
    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

    Unidad 07: El Sistema Operativo y la gestión de recursos.

    GUÍA DE TRABAJO “B” Unidad 07 El sistema operativo y la gestión de recursos.
    7.1 Conceptos de arquitectura de memoria.
    7.2 Los sistemas operativos y la gestión de memoria.
    7.3 La memoria como mecanismo de comunicación.
    7.4 El sistema operativo y el manejo de archivos.
    7.5 Servicios POSIX relacionados con memoria compartida.


    Indicaciones generales:
     Resuelva ordenadamente los ítems que se presentan a continuación.

    PUNTOS A RESOLVER
    1) Defina el término: Arquitectura de memoria.
    2) Explique la diferencia entre memoria RAM, ROM y EPROM.
    3) ¿Qué es memoria real?
    4) ¿Qué es memoria virtual?
    5) Defina ¿Qué es unidad de manejo de memoria?
    6) ¿Qué es segmentación de memoria?
    7) La memoria como mecanismo de comunicación.
    8) El sistema operativo y el manejo de archivos.
    9) Servicios POSIX relacionados con memoria compartida.


    Respuesta de preguntas



  2. 0 comentarios:

    Publicar un comentario