so_memppal
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
so_memppal [2020/04/01 14:45] – mariano | so_memppal [2020/04/01 18:42] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 30: | Línea 30: | ||
Los registros base y límite sólo pueden ser cargados por el sistema operativo, que utiliza una instrucción privilegiada especial. Puesto que las instrucciones privilegiadas sólo pueden ser ejecutadas en modo kernel y como sólo el sistema operativo se ejecuta en modo kernel, únicamente el sistema operativo podrá cargar los registros base y límite. Este esquema permite al sistema operativo modificar el valor de los registros, pero evita que los programas de usuario cambien el contenido de esos registros. | Los registros base y límite sólo pueden ser cargados por el sistema operativo, que utiliza una instrucción privilegiada especial. Puesto que las instrucciones privilegiadas sólo pueden ser ejecutadas en modo kernel y como sólo el sistema operativo se ejecuta en modo kernel, únicamente el sistema operativo podrá cargar los registros base y límite. Este esquema permite al sistema operativo modificar el valor de los registros, pero evita que los programas de usuario cambien el contenido de esos registros. | ||
- | El sistema operativo, que se ejecuta en modo //kernel//, tiene acceso no restringido a la memoria tanto del sistema operativo como de los usuarios. Esto le permite cargar los programas de los usuarios en la memoria de los usuarios, volcar dichos programas en caso de error, leer y modificar parámetros de las llamadas al sistema, etc.{{ : | + | {{ : |
+ | El sistema operativo, que se ejecuta en modo //kernel//, tiene acceso no restringido a la memoria tanto del sistema operativo como de los usuarios. Esto le permite cargar los programas de los usuarios en la memoria de los usuarios, volcar dichos programas en caso de error, leer y modificar parámetros de las llamadas al sistema, etc. | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | ==== Reasignacion de direcciones ==== | ||
+ | Usualmente, los programas residen en disco en forma de archivos ejecutables binarios. Para poder ejecutarse, un programa deberá ser cargado en memoria y colocado dentro de un proceso. Dependiendo del mecanismo de gestión de memoria que se utilice, el proceso puede desplazarse entre disco y memoria durante su ejecución. Los procesos del disco que estén esperando a ser cargados en memoria para su ejecución forman lo que se denomina **cola de entrada.** | ||
+ | |||
+ | El procedimiento normal consiste en seleccionar uno de los procesos de la cola de entrada y cargar dicho proceso en memoria. A medida que se ejecuta el proceso, éste accede a las instrucciones y datos contenidos en la memoria. Eventualmente, | ||
+ | |||
+ | La mayoría de los sistemas permiten que un proceso de usuario resida en cualquier parte de la memoria física. Así, aunque el espacio de direcciones de la computadora comience en 00000, la primera dirección del proceso de usuario no tiene por qué ser 00000. Esta técnica afecta a las direcciones que el programa de usuario puede utilizar. | ||
+ | |||
+ | Clásicamente, | ||
+ | |||
+ | * **Tiempo de compilación.** Si sabemos en el momento de realizar la compilación dónde va a residir el proceso en memoria, podremos generar código absoluto. Por ejemplo, si sabemos que un proceso de usuario va a residir en una zona de memoria que comienza en la ubicación R, el código generado por el compilador comenzará en dicha ubicación y se extenderá a partir de ahí. Si la ubicación inicial cambiase en algún instante posterior, entonces sería necesario recompilar ese código. Los programas en formato .COM de MS-DOS :-( se acoplaban en tiempo de compilación. | ||
+ | |||
+ | * **Tiempo de carga.** Si no conocemos en tiempo de compilación dónde va a residir el proceso en memoria, el compilador deberá generar código reubicable. En este caso, se retarda la reasignación final hasta el momento de la carga. Si cambia la dirección inicial, tan sólo es necesario volver á cargar el código de usuario para incorporar el valor modificado.: | ||
+ | |||
+ | * **Tiempo de ejecución.** Si el proceso puede desplazarse durante su ejecución desde un segmento de memoria a otro, entonces es necesario retardar la reasignación hasta el instante de la ejecución. Para que este esquema pueda funcionar, será preciso disponer de hardware especial. La mayoría de los sistemas operativos de propósito general utilizan este método.:-D | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | [[so|Volver]] | ||
+ | |||
+ | |||
+ | ~~NOCACHE~~ | ||
+ | ({{counter|total}}) | ||
×
iphelper toolbox
you see this when javscript or css is not working correct
Untested
so_memppal.1585752300.txt.gz · Última modificación: 2020/04/01 14:45 por mariano