Gestion de Memoria en Windows Phone Fin

UNIVERSIDAD ANDINA DEL CUSCO ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS “GESTION DE MEMORIA EN WINDOWS PHONE” DOCEN

Views 60 Downloads 5 File size 470KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • olger
Citation preview

UNIVERSIDAD ANDINA DEL CUSCO ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

“GESTION DE MEMORIA EN WINDOWS PHONE”

DOCENTE ESTUDIANTE

: ING. PALOMINO OLIVERA EMILIO : MUÑIZ VELÁSQUEZ JORGE PALOMINO MENDOZA JOSEPH PEÑA PALOMINO OLGER

ASIGNATURA

: SISTEMAS OPERATIVOS CUSCO – PERÚ 2016

Página 0

INDICE

Contenido INTRODUCCIÓN

3

PROCEDIMIENTO

4

OBJETIVOS GENERALES

4

OBJETIVOS ESPECÍFICOS

4

1.

5

Gestión de Memoria

1.1 Definición:

5

Objetivos De La Gestión De Memoria

5

1.2

Región De Memoria:

5

2.

OPERACIONES SOBRE REGIONES DE UN PROCESO

6

2.1

Asignar una región

6

2.2

Asociar una región a un proceso

7

2.3

Cambio de Tamaño de una Región

7

2.4

Cargar una región

8

2.5

Liberar una región

9

2.6

Desligar región y proceso

9

2.7

Duplicar una región

10

3.1

ALGORITMO FIFO

11

Ejemplo 1:.....................................................................................12 Ejemplo 2:.....................................................................................12 Ejemplo 3: (con tiempos de llegada)......................................................13 14

3.2 ALGORITMO LIFO

3.3 ALGORITMO INSERTAR ELEMENTOS (PUSH):.....................................15 3.4 ALGORITMO ELIMINAR ELEMENTOS (POP):.......................................15 Ejemplo 1:.....................................................................................16 Ejemplo 2:.....................................................................................16 16

3.5 REEMPLAZO DE PÁGINAS

3.6 ALGORITMO DE REEMPLAZO DE PÁGINAS SEGÚN EL USO NO TAN RECIENTE.....................................................................................18 3.7 ALGORITMOS DE REEMPLAZO DE PÁGINAS:.....................................19 3.8 ALGORITMOS DE APROXIMACIÓN AL LRU........................................20 3.8.1 Algoritmos con bits de referencia adicionales:..................................20 Página 1

3.9 ALGORITMO DE SEGUNDA OPORTUNIDAD 4.

26

LLAMADAS AL SISTEMA POR ALGORITMO Y EQUIVALENCIAS...............28

5. WINDOWS PHONE

29

5.1

Interfaz

29

5.3

Manejo de Procesos

31

5.4

Procesos Concurrentes

31

5.5

Manejo de Memoria

32

5.6

Manejo de Archivos

33

5.7

Manejo de Dispositivo

34

5.8

Accesibilidad de Red

34

CONCLUSIONES

35

RECOMENDACIONES

35

Bibliografía

36

Página 2

Primero agradecer a Dios por darnos la vida y la salud ya que gracias a esto podemos realizar el presente trabajo .Dedicamos este proyecto a nuestros padres, hermanos y personas cercanas, quienes siempre están con INTRODUCCIÓN nosotros apoyándonos e impulsándonos en el transcurso de nuestra carrera. La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario. La parte del sistema operativo que administra la memoria se llama administrador de memoria, su labor consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella. Esto se hace de diversas formas, pero todas controlan las regiones de memoria mediante una serie de algoritmos y operaciones que se realizan mediante llamadas al sistema, cuyo funcionamiento explicaremos a continuación. Uno de los elementos principales que caracterizan un proceso es la memoria que utiliza. Ésta está lógicamente separada de la de cualquier otro proceso del sistema (excepto los threads de un mismo proceso que comparten normalmente la mayor parte de la memoria que tienen asignada). Un proceso no puede acceder, al espacio de memoria asignado a otro proceso, lo cual es imprescindible para la seguridad y estabilidad del sistema. El direccionamiento es una parte importante de la gestión de memoria, puesto que influye mucho en la visión del mismo por parte de un proceso, como en el aprovechamiento del hardware y el rendimiento del sistema.

Página 3

PROCEDIMIENTO Recurrimos a la web donde pudimos contar con PDF’s, libros, artículos, etc. Luego pasamos a la lectura de los textos repartiéndonos temas para al final concluir con nuestro informe. Para la elaboración del informe se utilizó la metodología Desarrollo rápido de aplicaciones (RAD) ya que primero se procedió a la elaboración de informes que sufrió cambios durante el proceso de pruebas y así mejorar el informe, seguido de la implementación de algoritmos.

DEFINICIÓN PROBLEMA La gestión de memoria se encarga del reparto adecuado de regiones de memoria según lo requiera cada proceso, realizando distintas operaciones sobre las mismas tales como creación, duplicación, cambio de tamaño y eliminación, entre otras. Dichas operaciones cuentan con sus algoritmos, pero la pregunta es: ¿en qué instante, función la llamada al sistema y como se les invocan? Y ¿Cómo funcionan estos algoritmos en Windows Phone? OBJETIVOS GENERALES – –

Simular el comportamiento de los algoritmos empleados para las políticas de reemplazo, los cuales serán implementados en Windows phone. Estos algoritmos también nos ayudaran a entender y explicar las políticas de remplazo de memoria principal.

OBJETIVOS ESPECÍFICOS – – – –

Señalar como se hace el reparto de memoria para cada proceso. Explicar los algoritmos de operaciones sobre regiones. Explicar que llamadas al sistema usan los algoritmos. Explicar su funcionamiento en Windows Phone.

Página 4

JUSTIFICACION El presente trabajo se realizó con la intención de mostrar cuales son los algoritmos que usan las llamadas al sistema que ya todos conocemos en Linux (fork(),exec(),shmdt(),shmget(),sbrk() y exit()) y sus equivalentes en Windows (createProcess(),createFile(),heapAlloc(),UnmapViewOfFile() y exitProcess()) que generalmente son más de uno por llamada al sistema.

MARCO TEORICO 1. Gestión de Memoria 1.1 Definición: La gestión de memoria representa un vínculo delicado entre el rendimiento (tiempo de acceso) y la cantidad (espacio disponible). Siempre se busca obtener el mayor espacio disponible en la memoria, pero pocas veces existe la predisposición para comprometer el rendimiento.

Objetivos De La Gestión De Memoria En un sistema con multiprogramación, el sistema operativo debe encargarse de realizar un reparto transparente, eficiente y seguro de los distintos recursos de la máquina entre los diversos procesos, de forma que cada uno de ellos crea que «tiene una máquina para él solo». Esto es, el sistema operativo debe permitir que los programadores desarrollen sus aplicaciones sin verse afectados por la posible coexistencia de su programa con otros durante su ejecución. Sea cual sea la política de gestión de memoria empleada en un determinado sistema, se pueden destacar las siguientes características como objetivos deseables del sistema de gestión de memoria:    

Ofrecer a cada proceso un espacio lógico propio. Proporcionar protección entre los procesos. Permitir que los procesos compartan memoria. Dar soporte a las distintas regiones del proceso.

Página 5

1.2 Región De Memoria: Un proceso está compuesto por múltiples regiones. Una región es una zona contigua del espacio de direcciones de un proceso con las mismas propiedades. Existen tipos de regiones básicos tales como   

Texto o código Datos Pila

Cada región de memoria se caracteriza por varios atributos:   

Sus direcciones de inicio y fin Los derechos que tiene asociada El objeto asociado (por ejemplo, un archivo ejecutable que contiene el código ejecutable del proceso)

La información necesaria para describir una región esta almacenada en la tabla de regiones. Los campos más importantes que esta almacena son:     



Puntero al indo del archivo, cuyo contenido está cargado inicialmente en la región Tipo de la región (texto (código), memoria compartida, datos privados o pila) Tamaño de la región Localización de la región en memoria física Estado de la región: es una combinación de: o Bloqueada o En demanda o En proceso a ser cargada a memoria (cargándose) o Valida (cargada en memoria) Cuenta de referencia: número de procesos que la referencian

2. OPERACIONES SOBRE REGIONES DE UN PROCESO Durante la vida de un proceso, su mapa de memoria va evolucionando y con él las regiones incluidas en el mismo. Existen ciertas operaciones que se pueden realizar sobre una región dentro del mapa del proceso tales como: 2.1

Asignar una región

El Kernel asigna una región (allocreg) en las llamadas al sistema fork, exec y shmget (sharedmemory). Con pocas excepciones cada proceso Página 6

está asociado como resultado de una exec, entonces la región se asocia al i-nodo (con ello se identificara una región que se desee compartir y se encuentre cargada). El contador de la i-nodo se incrementa para evitar que por ejemplo el ejecutable sea borrado mientras va a ser utilizado. Algoritmo allocreg (i-nodo, tipo) { Retirar primera región de libres; Asignar tipo de región If (i-nodo) Incrementar contador de referencias en indo; Insertar la región en lista de activas; Return región bloqueada; }

2.2

Asociar una región a un proceso

En las llamadas al sistema fork, exec y shmget el kernel asocia el espacio de direcciones de un proceso con una región vía este algoritmo (attachreg). La región puede ser nueva o ya existir (shared). La región a ser asociada al proceso lo será en una dirección virtual para el proceso, por lo que será necesario controlar la legalidad (tamaño final del espacio de direcciones del proceso) Algoritmo attachreg (región, proceso, dir_Virtual, tipo) { Asignar una tabla de pregion para el proceso; Inicializar tabla de pregion; Puntero a la región; Tipo de región; Dirección virtual de la región para el proceso; Controlar legalidad de dir_Virtual, tamaño de región; Incrementar contador de referencias a la región; Incrementar tamaño del proceso de acuerdo a la región asociada; Inicializar registros hardware para el proceso (tripleta) Return (tabla pregion); } 2.3

Cambio de Tamaño de una Región

Página 7

Un proceso puede expandir o contraer su espacio virtual con la llamada al sistema sbrk, aunque la pila del proceso lo hace automáticamente de acuerdo a la profundidad en que se pueden anidar llamadas al sistema. Internamente la función sbrk llama al algoritmo growreg para cambiar el tamaño. Cuando una región se expande el kernel debe asegurar que no se solapen regiones o que no se superen los límites impuestos a los procesos. Las regiones compartidas no pueden ser expandidas sin causar efectos laterales en los otros procesos, por esta razón el kernel usa growreg en las regiones privadas (datos y automáticamente en la pila). Se asignan tablas de páginas (dependiente del modelo usado, programa entero, demanda de páginas, etc.). Debe asegurarse que existe memoria antes de hacer la llamada.

Algoritmo growreg (pregion, incremento) { If (incremento es positivo) { Controlar legalidad del nuevo tamaño; Asignar tablas de páginas; If (modelo de programa entero) { Asignar memoria física; Inicialización de tablas necesarias; } } Else { Liberar memoria física; Liberar tablas; } Otras inicializaciones; Cambiar tamaño de proceso en la Tabla de procesos; } 2.4

Cargar una región

Si el sistema soporta paginación por demanda, el sistema puede mapear el espacio de direcciones del ejecutable durante la exec de tal forma que solo cuando sea necesario leerá las paginas a memoria. Si el modelo es de programa entero se debe copiar el ejecutable cargando las regiones en las direcciones virtuales que se especifique en el archivo (posibles paginas vacías). Para cargar el archivo en la región debe expandirla de Página 8

acuerdo a la memoria que necesite. Marca la región en el estado Cargándose y usa una variación de la llamada al sistema read para leer el ejecutable (porque puede ganarse velocidad y porque en un modelo de paginación por demanda se podría producir un fallo de página durante una read). El offset que se indica como parámetro indica el desplazamiento dentro del archivo del inicio de la región y count el número de datos a leer. Algoritmoloadreg (pregion, dir_Virtual, i-node, Offset, count) { Incrementar tamaño (growreg); Marcar estado Cargándose; Desbloquear región (unlock); Poner parámetros de lectura en u-Área; Leer ejecutable en la región (variación de read); Bloquear región; Marcar estado Valida; Despertar procesos que esperan por región cargándose; }

2.5

Liberar una región

Algoritmofreereg (region-bloqueada) { If (algún proceso está usando la región) { Retirar el bloqueo de la región; If (región tiene un i-nodo asociado) Retirar el bloqueo de la i-nodo; Return; } If (región tiene un i-nodo asociado) Liberar i-nodo (input); Liberar memoria física; Página 9

Liberar tablas de página; Limpiar campos de la región; Pasar la región a la lista de libres; Retirar el bloque de la región; } 2.6

Desligar región y proceso

Esta acción se realiza en las llamadas al Sistema exec, exit y shmdt. Un contador de referencias a la región diferente de cero indica que hay mas proceso utilizando la región y por tanto no se debe liberar la región. Para algunos procesos de uso muy frecuente resulta de interés mantener su texto en memoria aun cuando no hay ningún proceso que haga uso del sticky-bit (es decir, un compilador, editor, etc. que son frecuentemente utilizados). La llamada al sistema chmod puede permitir activar un stickybit a un archivo de tal forma que cuando se encuentra en memoria sus páginas no son liberadas aun cuando no queden proceso referenciándolas (esto permitirá que cuando se lance un nuevo proceso que utilice este texto lo encontrara ya en memoria asignada a una región)

Algoritmo deattachreg (pregion) { Invalidar las tablas auxiliares asociadas al proceso (pregion, tripletas, etc); Disminuir el tamaño del proceso; Disminuir el contador de referencias de la región; If (contador llega a 0 y la región no tiene sticky-bit) Liberar la región; //freereg Else //el contador no es 0 o tiene sticky-bit { Retirar el bloqueo del i-nodo, si hay i-nodo asociado a la región; Retirar el bloquea a la región; } } 2.7

Duplicar una región

Este algoritmo es usado por fork. Si la región es compartida no es necesario hacer una nueva copia de la región, bastara incrementar el Página 10

contador de referencias y padre/hijo compartirá la región. Si no es compartida se debe realizar físicamente la copia para lo cual se necesita una nueva entrada en la tabla de regiones, tablas de páginas y memoria física para las páginas. Algoritmodupreg (Old_region, New_region) { If (old_region es compartida) { El proceso que llama incrementare el Contador de referencias, que referencias esa región; Return New_region=Old_region; } Asignar nueva región (allocreg); Preparar tablas iguales a las de Old_Region; Asignar Memoria física para el contenido de New_region; Copiar el contenido de Old_region en New_region; Return Puntero a New_region }

3. POLITICAS DE REEMPLAZO Las estrategias de reemplazo se puedan clasificar en dos categorias reemplazo global y reemplazo local. Con una estrategia de reemplazo global, se puede seleecionar, para satisfacer el fallo de pagina de un proceso, un marco que actualmente tenga asociada una pagina de otro proceso. Esto es, un proceso puede quitarle un marco de pagina a otro. La estrategia de reemplazo local require que para servir el fallo de pagina de un proceso, solo puedan usarse marcos de pagina libres o marcos ya asociados al proceso.

3. Politicas de Reemplazo 3.1 ALGORITMO FIFO Tal vez la disciplina más simple de planificación sea la de primeras entradas primeras salidas (PEPS). Los procesos se despachan de acuerdo con su tiempo de llegada a la cola de procesos listos. Cuando un proceso tiene la CPU, se ejecuta hasta terminar. Es junto en el sentido formal, pero algo injusta en cuanto a que los trabajos largos hacen esperar a los cortos y los trabajos sin importancia hacen esperar a los importantes. FIFO ofrece variaciones relativamente pequeñas en los tiempos de respuesta y por lo Página 11

tanto es más predecible que los otros esquemas. No es útil en la planificación para los usuarios interactivos porque no puede garantizar buenos tiempos de respuesta. El esquema FIFO rara vez se usa como esquema principal en los sistemas actuales, pero a menudo está incorporado en otros sistemas. Por ejemplo, muchos esquemas de planificación despachan los procesos de acuerdo con la prioridad, pero los procesos con la misma prioridad se despachan de acuerdo con el esquema FIFO. Este es un algoritmo que no usa apropiación, y que consiste en atender a los procesos por estricto orden de llegada a la lista de procesos listos. Cada proceso se ejecuta hasta que termina, o hasta que hace una llamada bloqueante (de E/S). Se trata de una política muy simple y sencilla de llevar a la práctica, pero muy pobre en cuanto a su comportamiento. Características: 

No es apropiativa.



Es justa, aunque los procesos largos hacen esperar mucho a los cortos.



Es una política predecible.



El tiempo promedio de servicio es muy variable ya que esta en función del número de procesos y la duración promedio que tenga.

Página 12

3.2 ALGORITMO LIFO

Una pila es una colección de elementos en la que sólo se pueden insertar y eliminar datos por uno de los extremos de la lista. Al igual que toda estructura de datos, se consideran algunas operaciones básicas como la inserción y el borrado, que se denominan comúnmente como operación "push" y "pop" respectivamente. Los elementos de una pila se eliminan en orden inverso al que fueron insertados. Es decir, el último elemento que entra a la pila es el primer elemento que se saca. Esta estructura se le conoce como estructura LIFO (Last-In, First-Out / último en entrar - primero en salir). En informática, el término LIFO se utiliza en estructuras de datos y teoría de colas. Guarda analogía con una pila de platos, en la que los platos van poniéndose uno sobre el otro, y si se quiere sacar uno, se saca primero el último que se ha puesto. LIFO es el algoritmo utilizado para implementar pilas.

Página 13

3.3 ALGORITMO INSERTAR ELEMENTOS (PUSH): Este algoritmo pone el DATO en PILA. Actualiza el valor de TOPE. MAX es una variable que indica el máximo de elementos que puede almacenar la pila.

SI (TOPE 0 ) inicio DATO = PILA[TOPE] TOPE = TOPE – 1 fin SI NO

“PILA VACIA”

Ejemplo 1:

Ejemplo 2:

3.8 ALGORITMOS DE APROXIMACIÓN AL LRU

3.8.1 Algoritmos con bits de referencia adicionales:



Las técnicas basadas en LRU utilizan un bit de referencia puesto por el hardware.

Página 15



El hardware enciende el bit de referencia (lo pone a 1) de una página cada vez que se hace referencia a ella (lectura o escritura).



Examinando este bit no conocemos el orden de uso, pero sí sabemos cuáles páginas se usaron y cuáles no.



Es posible obtener información de ordenamiento adicional si registramos los bits de referencia a intervalos adicionales.



Bytehistórico: Por ej.: 11000100 se usó más recientemente que 01110111.

 

LRU: página con el número más bajo. Si el nº de bits históricos es cero, es decir, dejamos sólo el bit de referencia Algoritmo de segunda oportunidad.

3.9 ALGORITMO DE SEGUNDA OPORTUNIDAD Este es un algoritmo que deriva del algoritmo FIFO. El Algoritmo de Segunda Oportunidad evita deshacerse de una página de uso frecuente, hace uso del bit R inspeccionándolo de tal forma que, si es 0, la página es antigua y no utilizada, por lo que, en caso de fallo de página, es reemplazada de manera inmediata. En caso de que dicho bit sea 1, es cambiado a cero y se cambia al final de la lista de páginas como si hubiera llegado en ese momento a la memoria. Luego continúa la búsqueda siguiendo lo que avanza en la lista. En la imagen vemos como se ejecuta el algoritmo, las páginas fueron identificadas, a modo de este ejemplo, con letras de la Aa la H según el orden de llegada y mostradas en una lista enlazada. A es la primera página cargada y la que con menos frecuencia se ocupa mientras que H es la página más reciente cargada. Página 16

Supongamos que ocurre un fallo de página. La página más antigua en nuestro ejemplo es A, si éste tiene el bit R a cero, se saca de la memoria. Por el contrario, si R vale 1, A se coloca al final de la lista, poniéndose a cero el bit R. Dejando como búsqueda adecuada de página con B. Lo principal de este algoritmo de segunda oportunidad es ir viendo las páginas antiguas sin referencias, si es que todas tienen más de una referencia entonces se aplica normalmente el algoritmo FIFO.

3.10CLOCK Existe una mejora en el algoritmo de segunda oportunidad que presenta una mejora en la implementación. Es el algoritmo del CLOCK, que lo que hace es tener una lista circular, de forma que al llegar al último elemento de la lista, pasa automáticamente al primero. Los elementos no se mueven al final de la cola cuando son accedidos, simplemente se cambia el bit de referencia a 1. Esto nos evita tener que hacer movimientos de punteros en el caso de implementarlo con una lista enlazada. De Página Páginaaaeliminar cargarpuede hecho, se implementar con un array perfectamente,

Marco elegido para intercambio de página

Página 17

La siguiente figura muestra que las páginas de la A a la H se mantienen en una lista enlazada, ordenadas según la hora a la que llegaron a la memoria. Supongamos que hay un fallo de página en el tiempo 20. La página más antigua es A, que llegó en el tiempo 0, cuando se inició el proceso. Si el bit R de A está apagado (0), se le desaloja de la memoria, escribiéndola en disco (si esta modificada) o simplemente abandonándola si está limpia. Pero si el bit está encendido (1), A se coloca al final de la lista y su "hora de carga" se cambia al tiempo actual 20. También se apaga el bit R. La búsqueda de una página apropiada continúa con B.

Página 18

4. LLAMADAS AL SISTEMA POR ALGORITMO Y EQUIVALENCIAS. Para resumir todo esto podemos estructurar el uso de los algoritmos por las llamadas al sistema de la siguiente forma fork()

allocreg

exec()

attachreg

exit()

growreg loadreg

shmget()

freereg

shmdt()

deattachreg

sbrk() fork()

dupreg

allocreg

Pero al ser nuestro trabajo sobre Windows Phone debemos hablar sobre attachreg dichas funciones exec() en Windows, ya que la ventaja que tenemos es que la última versión de Windows Phone trabaja de igual forma que el Windows para PC, pero esto growreg exit() lo explicaremos más adelante. loadreg

createProce shmget() Páginashmdt() 19 sbrk()

freereg deattachreg dupreg

exitProce

createFil UnmapViewOfF HeapAllo

5. WINDOWS PHONE 5.1 Interfaz Principio GUI: El usuario puede interactuar con todo lo que visualiza en la pantalla además de todos los objetos. (Como controles de usuario por ejemplo) Componentes del sistema: “No existe el concepto de una pila de navegación de todo el sistema. Los datos se comparten entre aplicaciones a través de contratos. Llamar a un contrato (por ejemplo, el contrato de búsqueda) muestra la aplicación de destino. Cuando se realiza la llamada, el control vuelve a la aplicación de llamadas. Dentro de una aplicación, los usuarios pueden navegar entre las páginas con las API disponibles de navegación "(visión general de programación de interfaz de usuario (Android a Windows) -Windows el desarrollo de aplicaciones de 2014)” - La interfaz de aplicación al sistema (no usuario) es la página que integra la aplicación al evento controlador del sistema, la cual espera por eventos. - El manejo de eventos es similar al sistema operativo de IOS con la delegación de patrones de diseño. - La aplicación de Windows es una instancia de la clase Panel creada para cada aplicación en tiempo de ejecución. Componentes de la aplicación: Las aplicaciones son construidas usan objetos del Panel, el cual mantiene todas las instancias incluyendo: - Objetos de Panel y de marcos.

Página 20

-

Los objetos de página son vistas individuales. Esta clase provee funcionalidad para dibujar objetos en pantalla. Otros componentes ofrecidos al sistema similares a Android.

Entradas: Incluye Controles, Eventos, Menús, Barras de acción, campos de textos, checkboxes, toggles y zooms (no inclusivos). 5.2 Procesador: Requiere mínimamente 1Ghz; 1.7Ghz en promedio a dos núcleos. Set de instrucciones de 32 o 64 bits. Planificación De Tareas: De preferencia con la política de round robin entre hilos. El intervalo de tiempo depende del procesador del sistema, pero “es generalmente alrededor de 20 milisegundos” (Multitasking (Windows), 2014 Microsoft). Cuando ocurre un switch, el “data estate” es guardado en el hilo saliente y el data estate es restaurando por el hilo entrante. Generalmente la contención no es un problema gracias a la política de round robin. Planificación En Modo Usuario (Ums): UMS es un mecanismo de peso ligero con la API del sistema que las aplicaciones pueden usar para planificar sus propios hilos. Una aplicación puede cambiar entre hilos UMS en modo usuario sin involucrar el planificador del sistema y mantener el control del procesador si un hilo UMS bloquea el kernel. Los hilos UMS difieren de las fibras porque cada hilo UMS tiene su propio contexto de hilo, en lugar de compartir el contexto de hilo de un solo hilo. La habilidad de cambiar entre hilos en modo usuario hace de UMS más eficiente que los pools de hilos para manejar grandes números de ítems de corta duración que requieren pocas llamadas al sistema. Políticas De Interrupciones: Una aplicación en estado de ejecución va a interactuar con los objetos de eventos. Si se produce una interrupción, (por ejemplo, una llamada telefónica), aplicación inmediatamente se pondrá en un estado inactivo (pero sólo en dispositivos compatibles con multitarea); el usuario decide que aplicación va a usar. Si no se selecciona la primera aplicación, se suspenderá. Si la memoria es baja, la aplicación terminará. Es similar la de IOS pero con sus propios objetos nativos e implementaciones de llamadas. Aplicación De Reiteración (Reinstating App): Página 21

“applicationWillEnterForeground ()” el método del objeto de la aplicación de interfaz de usuario es llamado y las notificaciones repartidas, las cuales son todas métodos del objeto de la aplicación de interfaz de usuario. Existen por lo menos 15 métodos similares que incluyen dicha funcionalidad como ajuste por cambio de tiempo, orientación del dispositivo, nivel de batería y más. 5.3 Manejo de Procesos Lenguaje De Programación A Nivel De Kernel: C++ y C# Aplicaciones De Lenguaje De Programación: C++ o C# con XAML; JavaScript con HTML/CSS. Aplicaciones (Apps): Programación de interfaces, Win32 para servicios de núcleo como: IPC; Clases encapsuladas. Procesos: Cada proceso provee los recursos requeridos para ejecutar el programa. Un proceso tiene espacio de dirección virtual, código ejecutable, manejos abiertos para objetos de sistema, un contexto de seguridad, un identificador de proceso único, variables de entorno, prioridad de clases, mínimos y máximos conjuntos de tamaños de trabajo, y por lo menos un hilo de ejecución. Cada proceso es iniciado con un único hilo, normalmente llamado Hilo Primario, pero puede crear hilos adicionales de cada uno de sus hilos. Hilos: Un hilo es una entidad dentro de un proceso que puede ser planificada para ser ejecutada. Todos los hilos de un proceso comparten su espacio de dirección virtual y recursos del sistema. En adición a esto, cada hilo mantiene controladores de excepción, prioridad de planificación, almacenamiento local de hilos, un identificador único de hilos, y un set de estructuras que el sistema va a usar para guardar el contexto del hilo hasta que sea planificado. 5.4 Procesos Concurrentes Núcleos: 2 Procesamiento paralelo: Página 22

Las computadoras con múltiples procesadores son diseñadas típicamente para una de 2 arquitecturas: acceso a memoria no uniforme (NUMA) o multiprocesamiento simétrico (SMP) (MultipleProcessors (Windows) 2014) NUMA.- cada procesador es cercano a algunas partes de memoria que a otras, haciendo el acceso a memoria más rápido para ciertas partes de memora que otras partes. Bajo el modelo NUMA, el sistema intenta hacer un registro de los hilos en procesadores que son los más cercanos a ser usados por la memoria. SMP.- 2 o más procesadores o núcleos idénticos se conectan a una memoria compartida. Bajo el modelo SMP, cualquier hilo puede ser asignado a cualquier procesador. Por consiguiente, planificar hilos en una computadora SMP es similar a planificarlos en una computadora con un solo procesador. Sin embargo, el planificador tiene un pozo de procesadores, de forma que pueda planificar hilos para correr concurrentemente. Planificación sigue siendo determinada por la prioridad del hilo, pero puede ser influenciada colocando la afinidad ideal hilo-procesador. 5.5 Manejo de Memoria Manejo de memoria: “La memoria virtual es respaldada por memoria física paginada, y el rango de direcciones virtuales puede ser respaldada por páginas de memoria no contiguas. Los espacios de memoria virtual de usuario y los espacios de memoria de sistema asignados del bloque paginado son siempre paginables. Cualquier espacio de código de usuario o datos puede ser extraídos en un almacenamiento secundario en cualquier momento, incluso cuando el proceso eta en ejecución. Asigna miento De Memoria: Un controlador tiene acceso pleno a los espacios de direcciones virtuales soportadas por el procesador. En un procesador de 32 bits, los espacios de direcciones virtuales representan 4 gigabytes. El CPU traduce las direcciones en los espacios de dirección virtuales en los espacios de dirección físicos usando una tabla de paginados. Cada página de entrada de tabla (PTE) mapea una página de memoria virtual a una página de memoria física, resultando en una operación de paginado cuando sea necesario. Y MDL (Lista de descripción de memoria) provee un mapeo similar ara un buffer asociado con un controlador para operaciones DMA” Recolección De Basura:

Página 23

El lenguaje común de ejecución (CommonLanguageRuntime) asigna memoria para objetos, mientras el espacio de direcciones está disponible en el montón administrado, el tiempo de ejecución sigue para asignar espacio para los nuevos objetos. Finalmente, el recolector de basura debe realizar una colección con el fin de liberar memoria. El motor de optimización de los recolectores de basura determina el mejor momento para realizar una colección, en base a las asignaciones se realizan. Cuando el recolector de basura realiza una colección, se comprueba si hay objetos en el montón administrado que ya no están siendo utilizados por la aplicación y realiza las operaciones necesarias para recuperar su memoria. Memoria Virtual: Objetos instanciados de la librería de almacenamiento del lenguaje común de ejecución. 5.6 Manejo de Archivos Sistema De Archivos: Sistema de archivos FAT y exFAT. Sandbox: “Las aplicaciones de Windows store se ejecutan separadamente una de otra, un mecanismo conocido como sandboxing, el cual controla fuertemente el acceso a los recursos del sistema. Manejo De Archivos: Los folder de archivos son particionados en tres áreas de memoria los cuales son principalmente de sistema operativo, data de usuario y data de usuario removible. -

-

El SO principal es contenido en un directorio raíz. Es dividido en dos caminos, uno incluye programas como aplicaciones de desarrollador y también construidas en aplicaciones como Office, que en versiones anteriores, fueron segregadas de aplicaciones de desarrolladores. El segundo camino del principal SO se conecta a los controladores de system32 y archivos de configuración de system32. El folder de controladores contiene todos los archivos para las rutinas de controladores de los dispositivos. El folder de configuración contiene los archivos de registros. Los datos de usuario almacena datos y el estado de la aplicación. Este folder es equivalente al disco en una computadora de escritorio. En el arranque, el servicio de booteo crea 5 fólderes los cuales son “Programs”, “Users”, “SystemData”, “SharedSata” y “Test”. Página 24

-

-

Los datos removibles de usuario es data de usuario en una memoria SD removible, la cal es similar al flash drive en una computadora de escritorio. Archivos internos: siempre disponibles, los archivos guardados son accesibles solo por la aplicación por defecto, cuando el usuario desinstala la aplicación, el sistema remueve todos los archivos de aplicación de la memoria interna. Archivos externos: No siempre está disponible, porque el usuario puede montar la memoria externa como una memoria externa USB y en algunos casos extraerlos del dispositivo. Es leíble universalmente, por lo cal los archivos guardados aquí pueden ser leídos fuera de su control. Cundo el usuario desinstala la aplicación, el sistema remueve los archivos de la aplicación de aquí solo si se guardaron en el directorio de getExternalFilesDir.

5.7 Manejo de Dispositivo El sistema de e/s de Windows provee un modelo de controlador de capas llamado pilas. Típicamente los IRP’s (paquetes de llamadas de interrupción) van de un driver a otro en la misma pila para facilitar la comunicación. Por ejemplo, un joystick driver necesitaría comunicarse con un hub USB, el cual en turno necesitaría comunicarse con un host de controlador USB, el cual necesitaría comunicase a través un bus PCI al resto del hardware de la computadora. El stack consiste en un controlador del joystick, un hub USB, controlador de host USB, y el bus PCI, Esta comunicación es coordinada teniendo cada driver en el stack de envío y recepción IRP’s. Disco: No hay disco, pero una memoria SD permitida para contener datos de usuario, el cual es cargado o transferido a un dispositivo directo de la memoria. Datos de usuario almacenados. No usados para paginado. 5.8 Accesibilidad de Red Manejo De Red: Windows 8 y Windows 8.1 incluye un número de pólizas para controla el manejo de conexión. Esas pólizas no son expuestas en el interfaz de usuario pero pueden ser configuradas usando el WcmSetProperty, API o Póliza de grupo. Página 25

Windows usa un Access Control Entry (ACE) el cual describe los derechos de acceso asociado con un particular SID. La entrada de control de acceso es evaluada por el SO para computar el acceso permitido a un programa en particular basado en sus credenciales. Una lista de control de acceso ACL, es una lista de ACE’s creada por el SO para controlar el comportamiento de seguridad asociada con un objeto protegido de algún tipo.

CONCLUSIONES En el informe pudimos observar las diferentes maneras y formas de gestionar memoria en elun sistema operativo de Windows phone, con los algoritmos de creación, eliminación, duplicidad entre otras que nos ayudaran al adecuado reparto de regiones de memoria. Los algoritmos nos ayudaran a llevara llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen.

RECOMENDACIONES Utilizar los algoritmos implementados y desarrollados en este informe, ya que estos ayudaran a entender y ejecutar las políticas de reemplazo sobre gestión de memoria acerca del sistema operativo de wondws phone.

Página 26

Bibliografía Ringgaard, M. (2002). Kernel32. Recuperado el 19 de Junio de 2016, de http://www.jbox.dk/sanos/source/include/os.h.html#:339 Perez, J. C. (2001). Sistemas Operativos Una Vision Aplicada. (C. F. Madrid, Ed.) Esapña. Recuperado el 19 de Junio de 2016 Mobile Operating Systems Comparison: Windows Phone, Apple ios, and Google Android.(2014). Recuperado el 19 de Junio de 2016, de http://docplayer.net/2470658-Mobile-operating-systems-comparisonwindows-phone-apple-ios-and-google-android.html Marshall, D. (5 de Enero de 1999). IPC:Shared Memory. Recuperado el 19 de Junio de 2016, de https://www.cs.cf.ac.uk/Dave/C/node27.html Rubio, C. G. (s.f.). Sistemas operativos de dispositivos moviles. (D. d. Telematica, Ed.) Recuperado el 19 de Junio de 2016, de http://ocw.uc3m.es/ingenieria-telematica/aplicacionesmoviles/material-de-clase-2/sistemas-operativos Bullock, B. (09 de Octubre de 2010). Windows and Unix command line equivalents.Recuperado el 19 de Junio de 2016, de http://www.lemoda.net/windows/windows2unix/windows2unix.html CISCO. (13 de Julio de 2000). CreateFile.c. Recuperado el 19 de Junio de 2016, de http://read.pudn.com/downloads33/sourcecode/hack/firewall/105210/C DROM/Chapter5/5-1/CreateFile.c__.htm Ejercicios sobre procesos y señales. (s.f.). Recuperado el 19 de Junio de 2016, de http://www.e-recursos.net/funciones/ejercicios01.html

Página 27

Free Software Foundation, Inc. (Agosto de 1995). shmdt.c. Recuperado el 19 de Junio de 2016, de https://fossies.org/dox/glibc2.22/sysdeps_2unix_2sysv_2linux_2shmdt_8c_source.html Free Software Foundation.Inc. (11 de Marzo de 2001). malloc.c. Recuperado el 19 de Junio de 2016, de https://sourceware.org/git/? p=glibc.git;a=blob;f=malloc/malloc.c;h=d20d5955db4d814b73a5b1829d 1bc7874c94024d;hb=HEAD#l5085

Página 28