Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Entrevista De Trabajo En Ea

Iniciado por Zaelsius, 20 de Enero de 2004, 02:44:55 PM

« anterior - próximo »

Thenend

 Carai, que lio.

Lo de la paginación lo he dicho sin querer porque es lo que primero que pensé al leer la pregunta ya que me pareció que los huecos que quedarían al borrar datos, podrían impedir que entraran otros datos mas gordos al no encontrar un cacho de memoria lo suficientemente grande y pensé que con la paginación podías amortiguar ese problema. Si no, habría que hacer una especie de "desfragmentación" igual que con el disco duro. Y luego el tio del post dice algo de "Virtual Page Table" que también me recrodó a "paginación" aunque no hace justo eso. Mas bien hace lo que dice ethernet de sobrecargar el new() (bueno, no se si yo haría eso) para que colocara las cosas donde pudiera.

La verdad es que la pregunta está bien pensada porque no tiene una respuesta clara. Puedes discutir varias posibilidades dependiendo del tamaño del buffer, tamaño de los datos a introducir... Y así se da pie a que el entrevistado se luzca o se atasque según controle el tema.

Zaelsius

 Respondiendo a Ethernet, lo más sencillito seria algo así:

- Tenemos una zona de memoria de tamaño X.
- Podemos elegir entre particionamiento estático(asignariamos zonas de Z*k bytes siempre, aunque sobrase espacio. Z seria el tamaño del bloque y k un entero) o particionamiento dinámico(asignamos zonas de R bytes, donde R serian los bytes pedidos en el new). Cada método tiene pros y contras.

- Conforme llegan las peticiones(news) de memoria, asignamos bloques de acuerdo a la política elegida en el anterior punto, y guardamos el estado del bloque en una lista, vector, etc, indicando que está ocupado.

- Hay que elegir una política a la hora de buscar huecos libres. Podemos asignar el hueco más pequeño que exista(implica recorrer la lista y perder cpu, o asignar el primer hueco libre que encontremos). Hay más opciones pero esas son las más usuales.

- Llegan más peticiones(news o deletes), y vamos actualizando la lista de bloques libres y ocupados. La cosa se pone fea y empezamos a tener huecos libres muy pequeños que nos son inútiles. Hace falta un mecanismo para reagrupar esos huecos libres y formar zonas más grandes. La reagrupación se puede hacer tras cada petición(mucho coste), de vez en cuando, o sólo cuando no encontremos un hueco libre del tamaño deseado.


En la práctica de la uni teniamos que hacer un programita que leia de un fichero de texto información sobre procesos, la memoria que requerian y en qué instante de tiempo entraban. El programa debía devolver por pantalla los diferentes estados(bloques libres y ocupados) de la memoria para cada instante de tiempo.

Mars Attacks

 
Cita de: "ethernet"ejem, tampoco estoy deacuerdo
Pues por mí como si te la machacas con dos piedras a ritmo de samba.
Con el libro "SISTEMAS OPERATIVOS" de Abraham Silberschatz y Peter Baen Galvin (quinta edición) en las manos:
MEMORIA VIRTUAL
-----------------------

En el capítulo 8 estudiamos diversas estrategias de gestión de memoria (nota marciana: habla, entre otras, de la paginación y la segmentación) que se han aplicado en sistemas de computador. Todas esas estrategias tienen el mismo objetivo: mantener muchos procesos en memoria simultáneamente y así hacer posible la multiprogramación. Sin embargo, en casi todas las estrategias es necesario que todo el proceso esté en memoria para que pueda ejecutarse.
La memoria virtual es una técnica que permite ejecutar procesos que podrían no estar totalmente en memoria. La principal ventaja tangible de este esquema es que los programas pueden ser mucho más grandes que la memoria física. Además, dicho esquema hace una abstracción de la memoria considerándola una matriz uniforme y extremadamente grande de almacenamiento, con lo que separa la memoria lógica que el usuario ve, de la memoria física. Esta técnica evita a los programadores tener que preocuparse por las limitaciones de la memoria. La memoria virtual no es fácil de implementar, y podría reducir sustancialmente el rendimiento si no se usa con cuidado. En este capítulo estudiaremos la memoria virtual en forma de paginación por demanada y examinaremos su complejidad y su costo.

--------

Resumiendo, que si la memoria virtual es más grande que la memoria física no hay más huevos que utilizar almacenamiento secundario para almacenar las páginas.

Por cierto, recomiendo este pedazo de libro (unas 900 páginas) para quien tenga dudas sobre estos temas.
Aparte, los dinosaurios de la portada quedan muy bien como adorno friki de estantería.

Grugnorr

 Sin ser tan gracioso como Mars....

A mí también me gustaría saber como leches se tiene memoria virtual sin un disco duro u otro medio de almecenamiento 2º... weno, terciario en cintas magnéticas se me puede ocurrir.... muy muy rápido  :P  
hat the hells!

Thenend

 A ver si esta web nos aclara algunas dudas, a mi por lo menos me lo ha dejado mas claro:

http://www.dia.uned.es/Asignaturas/Sistema...MARIO/tema4.htm

En ella se dice esto:

CitarNo obstante, se siguen presentando problemas de fragmentación externa. Una solución es permitir que los procesos puedan utilizar memoria no contigua, lo que se consigue mediante técnicas de paginación. En esta situación hay un mecanismo de traducción de las direcciones lógicas a las físicas mediante una tabla de páginas.

Que es a lo que yo me refería al decir paginación. La verdad es que, como ya he dicho, es lo primero que pensé. Ahora me parece un método que podria ser bastante lento e innecesario si el cacho de memoria es pequeño. Me gusta mas la idea de hacer el defrag que dice Zaelsius (yo lo haría llevando la cuenta de la memoria total disponible y cuando tienes suficiente pero no se encuentra esa cantidad seguida, pues ordenas la habitación un poco).

Y sobre la memoria virtual dice después de hablar de segmentacion y paginación:

CitarEn todos estos esquemas se supone que el proceso que se va a ejecutar está cargado totalmente en memoria. La idea de permitir ejecutar procesos que no están cargados totalmente en memoria e incluso que sus tamaños superen al de la memoria física instalada, da lugar al concepto de memoria virtual .

Pero bueno, si quereis, leedlo entero, que es cortito y esta muy bien.

EDIT: que curioso, en la URL sale de forma misteriosa mi nombre. Casualidad...

Thenend

 
Citar(yo lo haría llevando la cuenta de la memoria total disponible y cuando tienes suficiente pero no se encuentra esa cantidad seguida, pues ordenas la habitación un poco)

Pues pensándolo mejor, si el tamaño del trozo de memoria es muy grande en relación a los datos individuales, lo de la desfragmentación puede tomarse su tiempo, lo que podría originar un salto muy feo en la ejecución del juego. Igual es mejor ejecutarla cada vez que se borren X datos...

Bueno, ya veis lo que hago en vez de estudiar  :(  A ver si consigo concentrarme en lo que debo O_O

Y mientras todo el mundo de juerga  (grrr)  

[HiDDeN]

 
CitarEDIT: que curioso, en la URL sale de forma misteriosa mi nombre. Casualidad...

Sólo quería "desvelar" el misterio...  <_<

http://www.dia.uned.es/Asignaturas/Sistema...MARIO/tema4.htm

La URL completa es:

http://www.dia.uned.es/Asignaturas/Sistemas Operativos I/TEMARIO/tema4.htm

Se ve el misterio?  ;)  

newen_2

 nooooo porq se os ocurre hablar de paginaciones memorias virtuales etc HOY!!! hoy he tenido examen de arqitectura de computadores (una asignatura de teleco) y la he cagado pero bien cagada. Os voy a meter la MMU por donde yo me se.  (nooo)  (nooo)  (nooo)  (nooo)  






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.