hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
25 de Julio de 2008, 05:41:12
Noticias: Te gusta el nuevo diseño?
Opina al respecto en:
Para ver este enlace Registrate o Inicia Sesion
Este Tema

+  Foros pOrtal Hacker
|-+  Temas de Interés
| |-+  Sistemas Operativos (Moderador: WaesWaes)
| | |-+  Comprendiendo un SO ---> construccion
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: 1 [2]  Todos Ir Abajo Imprimir
Autor Tema: Comprendiendo un SO ---> construccion  (Leído 581 veces)
WaesWaes
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,355


Señor de Outland, de la sentencia del Templo Negro


Ver Perfil WWW
« Respuesta #15 : 13 de Julio de 2008, 04:46:31 »

Modelo de programacion de una computadora

El modelo de programación a bajo nivel de una computadora se caracteriza por los siguientes aspectos:

Elementos de almacenamiento: En esta sección se consideran aquellos elementos de almacenamiento de la computadora que son visibles a las instrucciones maquina. En esta categoría están incluidos los registros generales, el contador de programa, el puntero de pila, el registro de estado, la memoria principal y el mapa de E/S.

Es muy frecuente que las computadoras incluyan el mapa de E/S dentro del mapa de memoria.
En este caso, se reserva una parte del mapa de memoria para realizar la E/S.


Juego de instrucciones con sus correspondient es modos de direccionamien to: El juego de instrucciones máquina define las operaciones que es capaz de hacer la computadora. Los modos de direccionamien to determinan la forma en que se especifica la identidad de los elementos de almacenamiento que intervienen en las instrucciones máquina.

Secuencia de funcionamiento: Define el modo en que se van ejecutando las instrucciones máquina.

• Un aspecto crucial de las computadoras, que está presente en todas ellas menos en los modelos más simples, es que disponen de más de un nivel de ejecución.
« Última modificación: 14 de Julio de 2008, 11:03:15 por WaesWaes » En línea


Para ver este enlace Registrate o Inicia Sesion

Cita de: Mejor usuario de cph
1.WaesWaes, 2.Alfa, 3.TxShack
WaesWaes
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,355


Señor de Outland, de la sentencia del Templo Negro


Ver Perfil WWW
« Respuesta #16 : 13 de Julio de 2008, 04:57:17 »

Niveles de ejecucion

La mayoría de las computadoras actuales presentan dos o más niveles de ejecución. En el nivel menos permisivo, generalmente llamado nivel de usuario, la computadora ejecuta solamente un subconjunto de las instrucciones máquina, quedando prohibidas las demás.

Además, el acceso a determinados registros, o a partes de esos registros, y a determinadas zonas del mapa de memoria y de E/S tambien queda prohibido. En el nivel más permisivo, denominado nivel de núcleo, la computadora ejecuta todas sus instrucciones sin ninguna
restricción y permite el acceso a todos los registros y mapas de direcciones.

Se puede decir que la computadora presenta mas de un modelo de programación. Uno más restrictivo, que permite realizar un conjunto limitado de acciones, y otros más permisivos que permiten realizar un mayor conjunto de acciones. Uno o varios bits del registro de estado
establecen el nivel en el que está ejecutando la máquina. Modificando esto. bits se cambia de nivel de ejecución.

Como veremos más adelante, los niveles de ejecución se incluyen en las computadoras para dar soporte al sistema operativo. Los programas de usuario, por razones de seguridad, no podrán realizar determinadas acciones al ejecutar en nivel de usuario. Por su lado, el sistema operativo, que ejecuta en nivel de núcleo, puede ejecutar todo tipo de acciones.
Típicamente, en el nivel de usuario la computadora no permite operaciones de E/S, ni modificar una gran parte del registro de estado, ni modificar los registros de soporte de gestión de memoria.
« Última modificación: 14 de Julio de 2008, 11:07:03 por WaesWaes » En línea


Para ver este enlace Registrate o Inicia Sesion

Cita de: Mejor usuario de cph
1.WaesWaes, 2.Alfa, 3.TxShack
WaesWaes
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,355


Señor de Outland, de la sentencia del Templo Negro


Ver Perfil WWW
« Respuesta #17 : 13 de Julio de 2008, 05:00:43 »

El reloj

El término reloj se aplica a las computadoras con tres acepciones diferentes, si bien relacionadas. Estas tres acepciones son las siguientes:

• Señal que gobierna el ritmo de ejecución de las instrucciones máquina.
• Generador de interrupciones periódicas.
• Contador de fecha y hora.

El oscilador que gobierna las fases de ejecución de las instrucciones máquina se denomina reloj. Cuando se dice que un microprocesado r es de 600 MHz, lo que se está especificando es que el oscilador que gobierna el ritmo de su funcionamiento interno produce una onda cuadrada con una frecuencia de 600 MHz.

La señal producida por el oscilador anterior, o por otro oscilador, se divide
mediante un divisor de frecuencia para generar una interrupción cada cierto intervalo de tiempo.

Estas interrupciones, que se están produciendo constantemente, se denominan interrupciones de reloj o ticks, dando lugar al segundo concepto de reloj. El objetivo de estas interrupciones es, hacer que el sistema operativo entre a ejecutar de forma
sistemática cada cierto intervalo de tiempo. De esta manera, el sistema operativo puede evitar que un programa monopolice el uso de la computadora y puede hacer que entren a ejecutarse programas en determinados instantes de tiempo. Estas interrupciones se producen cada varios milisegundos, por ejemplo cada 20 milisegundos.

La tercera acepción de reloj se aplica a un contador que permite conocer la fecha y la hora. Este contador se va incrementando con cada interrupción de reloj de forma que,
tomando como referencia un determinado instante (p. ej: unix toma las 0 hora de 1de enero de 1970), se puede calcular la hora y fecha en que estamos. En las computadoras actuales esta cuenta
se hace mediante un circuito dedicado que, además, está permanentement e alimentado, de forma que, aunque se apague la computadora, se siga manteniendo el reloj.

En sistemas más antiguos,el sistema operativo se encargaba de hacer esta cuenta, por lo que había que introducir la fecha y
la hora al arrancar la computadora.

« Última modificación: 14 de Julio de 2008, 02:05:10 por WaesWaes » En línea


Para ver este enlace Registrate o Inicia Sesion

Cita de: Mejor usuario de cph
1.WaesWaes, 2.Alfa, 3.TxShack
WaesWaes
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,355


Señor de Outland, de la sentencia del Templo Negro


Ver Perfil WWW
« Respuesta #18 : 15 de Julio de 2008, 03:09:14 »

Memoria virtual

Debido a que muchas aplicaciones requieren el acceso a más información que la que se puede mantener en memoria física. Enlos sistemas operativos modernos deve surgir el concepto de memoria virtual, que permite al software usar mas memoria principal de la que realmente posee una computadora.

En un sistema operativo sin memoria virtual, lo que el sistema hace es dividir la memoria principal en pedazos y asigna cada pedazo a cada programa que se este ejecutando en un instante determinado.

en la sigiente imagen se ve que pasa en la memoria principal cuando se ejecuta un solo programa y tambien cuando se ejecutan varios a la vez en un mismo instante.



Como pueden observar la distribucion de la memoria en contigua, es todo un espacio junto, no hay distintos espacios disjuntos por la memoria principal para un mismo programa, eso implica a una complicacion, porque al no poder dividir en segmentos la memoria para un mismo programa, si hay unas celdas que interrumpen el espacio que queramos usar no se va a poder ejecutar el programa ya que no estara cargado en la memoria principal.

En el caso de la memoria virtual no es nesesario que existan estas contiguidades, asi que podesmos dividir en segmentos los espacios que usara la memoria fisica para un misma programa sin problemas.

Concepto de Memoria virtual

La memoria virtual utiliza dos niveles de jerarquia de memoria: la memoria principal y una memoria de respaldo que suele ser el HDD o tambien una memoria expandida.
Sobre la memoria de respaldo se establece un mapa uniforme de memoria virtual. Las direcciones generadas por el procesador se refieren a este mapa virtual, pero, sin embargo, los accesos reales se realiza sobre la memoria principal.

Para su funcionamiento, la memoria virtual exige una gestión automática de la parte de la jerarquía de memoria formada por los niveles de memoria principal y de disco (de eta automatizacion se encarga el sistema operativo con ayuda del hardware).


esta gestión incluye toda la memoria principal y una parte del disco, que sirve de respaldo a la memoria
virtual.


Los aspectos principales en los que se basa la memoria virtual son los siguientes:

  • Las direcciones generadas por las instrucciones máquina, tanto para referirse a datos como a otras instrucciones, están referidas al espacio virtual, es decir, forman parte del mapa de memoria virtual. En este sentido se suele decir que el procesador genera direcciones virtuales
  • Las direcciones generadas por las instrucciones máquina, tanto para referirse a datos como a otras instrucciones, están referidas al espacio virtual, es decir, forman parte del mapa de memoria virtual. En este sentido se suele decir que el procesador genera direcciones virtuales
  • Aunque el programa genera direcciones virtuales, para que éste pueda ejecutarse, han de residir en memoria principal las instrucciones y los datos utilizados en cada momento. Si, por ejemplo, un dato referenciado por una instrucción máquina no reside en la memoria principal es necesario realizar un trasvase de información (migración de información) entre el disco y la memoria principal antes de que el programa pueda seguir ejecutando.
  • Los espacios virtual y físico se dividen en páginas. Se denominan páginas virtuales a las páginas del espacio virtual, paginas de intercambio a las páginas residentes en el disco y marcos de página a los espacios en los que se divide la memoria principal.
  • Cada marco de página es capaz de albergar una página virtual cualquiera, sin ninguna restricción de direccionamien to.
  • Existe una unidad hardware, denominada MMU (Memo Management Unit), que traduce las direcciones virtuales a direcciones de memoria principal. Aplicando lo visto anteriormente, se puede decir que esta traducción se restringe a traducir el número de página virtual en el correspondient e número de marco de página.
    Esta traducción hay que hacerla por hardware dada la alta
    velocidad a la que debe hacerse (una fracción del tiempo de acceso de la memoria principal).
  • Dado que en cada instante determinado solamente reside en memoria principal una fracción de las páginas del programa, la traducción no siempre es posible. Por tanto, la MMU producirá una excepción de fallo de página cuando ésta no esté en memoria principal.

Los fallos de página son atendidos por el sistema operativo (o sea los atiende el software) que se encarga de realizar la adecuada migración de páginas, para traer la página requerida por el programa a un marco de página. Se denomina paginación al proceso de migración necesario para atender los fallos de pagina.

El tamaño del espacio virtual suele ser muy grande. En la actualidad se emplean direcciones de 32, 48 o hasta 64 bits, lo que significa
espacios virtuales de 232, 248 y 264 bytes. Dado que los programas requieren en general mucho menos espacio, una de las funciones que realiza el sistema operativo es la asignación de espacio virtual a los programas para su ejecución. El programa no podrá utilizar todo el
espacio virtual sino que ha de restringirse a la zona o zonas que le asigne el sistema operativo.



La figura muestra que el espacio virtual reservado al programa A puede estar en una única zona o puede estar dividido en varias zonas, que se denominan segmentos.


Tabla de paginas

La tabla de páginas es una estructura de información que contiene la información de dónde residen las páginas de un programa en ejecución. Esta tabla permite, por tanto, saber si una página esta en memoria principal y, en su caso, en que marco específico reside.
Según se ha visto anteriormente, dado que el tamaño del espacio virtual suele ser muy grande, el tamaño de la correspondient e tabla de páginas puede ser muy grande (de millones de elementos). Sin embargo, como hemos visto, el sistema operativo se encarga de asignar a cada programa en ejecución un espacio virtual de tamaño ajustado a su: necesidades. De esta forma, la tabla de páginas queda reducida al valor necesario para que ejecute el programa.


La Figura muestra la solución más sencilla de tabla de páginas de un nivel. En este caso se supone que toda la memoria asignada al programa es contigua. El número de la página virtual se utiliza como índice para entrar en la tabla. Cada elemento de la tabla tiene un bit para indicar si la página está en memoria principal y el número de marco en el que se
encuentra la mencionada página o un valor nulo.



La Figura muestra un ejemplo de traducción para el caso de tabla de paginas de un nivel

Se supone que las página son de 2 KB, por lo que los 11 bits inferiores de la
dirección virtual sirven para especificar el byte dentro de la pagina, mientras que el resto especifican la página virtual, que en este caso es la 5. Entrando en la posición N0 5 de la tabla observamos que la página está en memoria principal y que esta en el marco numero 6.738.
Concatenando el número de marco con los 11 bits inferiores de la dirección virtual se obtiene la dirección de memoria principal donde reside la información buscada.
El mayor inconveniente de la tabla de un nivel es su falta de flexibilidad. Toda la memoria virtual asignada ha de ser contigua (El espacio virtual asignado es contiguo, pero no los marcos de pagina que pertenezcan en un momento dado, ya que estaran dispersos por toda la memoria principal) y la ampliación de memoria asignada solamente puede hacerse final de la existente.

Sin embargo, los programas están compuestos por varios elementos, como son el propio programa objeto, la pila y los bloques de datos. Además, tanto la pila como los bloques de datos han de poder crecer. Por ello, un esquema de tabla de un nivel obliga a dejar grandes huecos de memoria virtual sin utilizar , pero que están presentes en la tabla con el consiguiente
desperdicio de espacio.

Por ello se emplean esquemas de tablas de páginas de más de un nivel. Con este tipo de tabla, la memoria asignada esta compuesta por una serie de bloques de memoria virtual, es decir, por unos segmentos.

Cada segmento está formado por una serie contigua de byte. que puede variar su tamaño, siempre y cuando no choque con otro segmento. La dirección se divide en tres partes.

La primera identifica el segmento de memoria donde esta la información que se desea acceder. Con este valor se entra en una subtabla de segmentos, que contiene un puntero por segmento,
puntero que indica el comienzo de la subtabla de paginas del segmento.

Con la segunda parte de la dirección se entra en la subtabla de páginas seleccionada. Lo que permite obtener el marco en el que está la información
deseada.



Se ha añadido a cada subtabla su tamaño. De esta forma se detectan las llamadas violaciones de memoria, producidas cuando el programa en ejecución intenta acceder una dirección que no pertenezca a los espacios asignados por el sistema operativo.

La ventaja del diseño con varios niveles es que permite una asignación de memoria más flexible que con un solo nivel, puesto que se pueden asignar bloques de memoria virtual disjuntos, por lo que pueden crecer de forma a independiente. Además, la tabla de páginas no tiene espacios vacíos, por lo que ocupa solamente el espacio imprescindible .

Las computadoras actuales suelen proporcionar tablas de varios niveles, algunos llegan hasta cuatro, con lo que se consigue una mayor flexibilidad en la asignación de espacio de memoria.


La Figura muestra un ejemplo de traducción mediante tabla de páginas de dos niveles. El segmento direccionado es el 5, por lo que hay que leer la entrada 5 de la tabla de segmentos.
Con ello se obtiene la dirección donde comienza la tabla de páginas de este segmento. La página direccionada es la 3, por lo que entramos en el elemento 3 de la tabla anterior. En esta tabla encontramos que el marco es el Hex4A24, por lo que se puede formar la dirección física en la que se encuentra la información buscada.


Traduccion de direcciones

La asignación de memoria y, por tanto, la construcción de la tabla de páginas es misión del sistema operativo. Sin embargo, es la MMU la que se encarga de realizar la traducción de las direcciones.

Esta división de trabajo es necesaria puesto que la traducción de direcciones hay que hacerla de forma muy rápida para que no afecte negativamente al tiempo de acceso a la memoria.

Para que una computadora con memoria virtual pueda competir con una sin
memoria virtual, la traducción ha de tardar una fracción del tiempo de acceso a memoria. En caso contrario, sería mucho más rápido y por ende mas económico el sistema sin memoria virtual.

Suponiendo una memoria principal de 100 ns y un traductor de 5 ns, el tiempo de acceso para el caso de memoria virtual es de 105 ns, es decir, un 5 por 100 más lento que en el caso de no tener memoria virtual. Sin embargo, si la traducción tardase 100 ns, la computadora con memoria virtual sería la mitad de rápida, algo que la haría imposible de competir.

La tabla de páginas es una estructura que mantiene el sistema operativo y que
reside en memoria principal (a veces, hay una parte en la propia MMU y otra en memoria principal). Esto parece un contrasentido, puesto que para acceder a memoria hay que traducir la dirección virtual, lo que supone realizar un acceso a memoria por cada nivel que
tenga la tabla de páginas. Según se ha visto, esto suponía un retardo inadmisible en los accesos a memoria. Para resolver este problema se dota a la MMU de una memoria muy rápida que permite hacer la traducción para la mayoría de los casos en una fracción del tiempo que se tarda en acceder a la memoria principal.

nota: La memoria muy rapida incluida en la MMU para realizar la traduccion de direcciones es una memoria asosiativa que se denomina TLB (traslation lookaside buffer) . en esta memoria se encuentran almacenadas las parejas paginas-marco de las paginas mas recientementa accedidas.

En caso de no encontrarse la pagina mas reciente en la TLB, es nesesario acceder a ñla tabla de paginas con el tiempo que esto conlleva.

Por lo tanto la taza de acierto de la MMU debera de ser elevada, para que el tiempo medio efectivo de traduccion sea menor al de acceso a la memoria principal.



Ejemplo de traducciones incorrectas

Finalmente, hay que destacar que la encargada de mantener la información de que página están sucias es la MMU. En efecto, al mismo tiempo que hace la traducción, en caso de que acceso sea de escritura marca a esa pagina como sucia.

nota: La MMU cuando encuentra uan pagina sucia lo guarda en la TLB y luego esta informacion se escribe en la tabla de paginas para que el sistema operativo sepa sobre esto cuando haga la migracion de paginas.

Caso de varios programas activos

Los sistemas operativos permiten que existan varios programas
activos en un mismo tiempo. De estos programas solamente puede haber uno en ejecución en cada instante, encargándose el sistema operativo de ir poniendo en ejecución uno detrás de otro de forma ordenada. Sin embargo, cada uno de los programas ha de tener asignado un espacio de
memoria, por lo que ha de tener su propia tabla de páginas.

La MMU ha de utilizar la tabla de paginas correspondient e al programa que está en ejecución. Para ello, el procesador tiene un registro
identificador de espacio de direccionamien to
(RIED). Este registro contiene la dirección en la cual está almacenada la tabla de índices o segmentos del programa.

Cuando el sistema operativo pone en ejecución un programa ha de actualizar el valor del RIED para que apunte a la tabla de páginas adecuada.


Asignacion de memoria principal y memoria virtual

En un sistema con memoria virtual, un programa en ejecución tiene asignado un espacio virtual, parte del cual reside en unos marcos de pagina de la memoria principal.

El objetivo de la políticas de extracción y de reemplazo que utilice el sistema operativo para hacer la migración de información entre el intercambio y la memoria principal tiene como objetivo conseguir, con el mínimo trabajo posible, que estén en cada momento en memoria
principal las páginas que necesitan los programas en ejecución.

Se denomina conjunto de trabajo (working set) W(k,q) de un programa en ejecución en el intervalo [k;q] al conjunto de páginas referenciadas entre el elemento k y el q de su traza.

Por otro lado, se denomina conjunto residente R(t) a la parte del proceso que está realmente almacenada u memoria principal en el instante t.


El registro RIED permite determinar la tabla de páginas en uso.

Supóngase que en el instante t el programa está por su referencia k y que el conjunto residente R(t) coincide con el conjunto de trabajo W(k,q). Esto significaría que ese programa tiene la garantía de que sus próximas q — k referencias se refieren a pagina: que están en memoria principal, por lo que no se generaría ningún fallo de página.

Dado que el sistema operativo no conoce de antemano cuales van a ser las referencias que generará un programa, ha de basarse en la trayectoria pasada de la ejecución del mismo para mantener un conjunto reciente que sea lo más parecido posible a su futuro conjunto de trabajo, para así minimizar la paginación.

Gran parte de este articulo fua extraido de "Sistemas operativos: una vision aplicada."
« Última modificación: 23 de Julio de 2008, 03:11:09 por WaesWaes » En línea


Para ver este enlace Registrate o Inicia Sesion

Cita de: Mejor usuario de cph
1.WaesWaes, 2.Alfa, 3.TxShack
WaesWaes
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,355


Señor de Outland, de la sentencia del Templo Negro


Ver Perfil WWW
« Respuesta #19 : 15 de Julio de 2008, 03:10:06 »

Entrada/Salida

en construccion.. .
« Última modificación: 20 de Julio de 2008, 03:28:03 por WaesWaes » En línea


Para ver este enlace Registrate o Inicia Sesion

Cita de: Mejor usuario de cph
1.WaesWaes, 2.Alfa, 3.TxShack
WaesWaes
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,355


Señor de Outland, de la sentencia del Templo Negro


Ver Perfil WWW
« Respuesta #20 : 19 de Julio de 2008, 05:59:01 »

E/S & Memoria Virtual

La memoria virtual presenta un problema importante frente a la E/S, el programa que solicita una operación de E/S especifica una variable que determina un buffer de memoria sobre el que se hace la operación.

Para que el controlador del periférico que realiza la operación pueda operar por DMA, el buffer ha de residir en memoria principal.

En caso contrario, se intentaría hacer, por ejemplo, una lectura de unos datos de disco para escribir en una página, que también está en disco, pero el hardware no es capaz de hacer este tipo de operación.

El sistema operativo ha de garantizar que los buffers de usuario sobre los que se hacen operaciones de E/S estén en la memoria principal durante toda la duración de la operación. En especial los marcos afectados no podrán ser objeto de paginación.

En línea


Para ver este enlace Registrate o Inicia Sesion

Cita de: Mejor usuario de cph
1.WaesWaes, 2.Alfa, 3.TxShack
WaesWaes
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,355


Señor de Outland, de la sentencia del Templo Negro


Ver Perfil WWW
« Respuesta #21 : 19 de Julio de 2008, 06:07:25 »

Protecciones

en construccion.. .
« Última modificación: 20 de Julio de 2008, 03:28:32 por WaesWaes » En línea


Para ver este enlace Registrate o Inicia Sesion

Cita de: Mejor usuario de cph
1.WaesWaes, 2.Alfa, 3.TxShack
Páginas: 1 [2]  Todos Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online