depende del hardware exacto pero, en general, en un sistema de direcciones planas como Windows o Linux, un programa recibe una porción de memoria para el código, otra porción de datos y la dirección base de esos segmentos se carga en un código y datos registro de segmento Por ejemplo, si imprime lo que está en los registros DS y CS, tendrán un pequeño índice como $ 2F y $ 3F. El programa simplemente se ejecuta, y si quiere almacenar $ 1234 en su ubicación de memoria $ 5678, solo usa algunas instrucciones como: mov $ 1234, ds: [$ 5678]. La CPU luego busca el valor en el DS, que es $ 2F, luego se indexa en la tabla de segmentos global y encuentra que el segmento $ 2F comienza en la dirección física absoluta $ 3000000 y continúa por $ 15000 bytes, por lo que está bien almacenar $ 1234 en dirección $ 30005678 y lo hace.
La mayoría de los programas se compilan y vinculan suponiendo que en tiempo de ejecución tendrán acceso a un espacio de memoria local dirigido a partir de alguna dirección, varía, pero a menudo puede comenzar en 00000 si se desea. El compilador y el enlazador asignan este espacio de direcciones. Es solo en el tiempo de ejecución del programa, luego el sistema operativo selecciona un área libre de memoria, apunta DS y CS y el programa se ejecuta.
- Las matemáticas de aprendizaje automático utilizan números reales, pero las computadoras son digitales. ¿Por qué es esto? ¿Podría ser diferente?
- ¿Puede una persona aprender Java sin C ++?
- ¿Qué tan difícil es ingresar al programa CSE en la Universidad de Washington?
- ¿Cuál es el estado del arte en la compresión de datos?
- ¿Podrías hacer un Barack Obama generado por computadora?