Me pregunto cómo Windows distingue entre diferentes unidades y módulos de memoria, quiero decir, ¿cómo puede Windows escribir algo específicamente en el disco C o en el disco D. En todos los lenguajes de programación, cuando declaras una variable, se guarda en la memoria y cuando necesitas almacenar algo? a hdd, tienes que usar alguna biblioteca. Entonces, ¿cómo lo maneja Windows? ¿Trata todos los discos y módulos de memoria como una sola línea de datos y solo guarda la dirección inicial de cada medio? - como 0x00000 es donde comienza el disco C, 0x15616 es donde comienza el disco D.

0
Dave F. 12 mar. 2021 a las 14:24

2 respuestas

La mejor respuesta

Como dijo @MSalters,

C: es un enlace simbólico a algo como Device \ HarddiskVolume1.

Lo que significa es que los controladores de disco en Windows se implementan como sistemas de archivos virtuales un poco como en Linux. Lo explicaré para Linux, ya que hay mucha más documentación, pero la respuesta es bastante similar para Windows, aunque ambos sistemas operativos hacen las cosas de manera diferente.

Básicamente, en Linux todo es un archivo. Linux se envía con controladores de disco, ya que son la base de cada computadora. Linux expone un modelo de controlador como todos los sistemas operativos. El modelo de controlador de Linux para archivos (incluidos los discos duros) expone funciones que el kernel llamará para leer / escribir en el disco. Hay funciones de apertura, lectura y escritura que el kernel espera que estén presentes para un controlador de archivos.

Si lo desea, puede escribir un controlador de disco y reemplazar el existente. Escribe los controladores como módulos que luego puede cargar en el kernel usando ciertas utilidades que se incluyen con Linux. No compartiré más detalles ya que no estoy muy al tanto. Una vez que su código está cargado en el kernel, tiene acceso a todo el código del kernel y todo el hardware, ya que se ejecuta en modo kernel.

Hoy en día, los controladores de disco probablemente usan PCI DMA, que es un controlador conectado al bus PCI que permite realizar operaciones de disco que ignoran la CPU y cargan datos del disco en la RAM directamente. La convención PCI dice que todos los dispositivos compatibles (como los controladores PCI DMA) deben exponer una determinada interfaz a la computadora. Esta interfaz consiste principalmente en algunos registros mapeados en memoria que se pueden usar para enviar comandos al controlador. El sistema operativo escribirá datos en estos registros para decirle al controlador DMA que realice operaciones en el disco. Luego, el controlador DMA activará una interrupción una vez que haya terminado. El sistema operativo sabrá entonces que los datos se cargan fácilmente en la RAM y están listos para su uso. Lo mismo se aplica a la escritura.

El sistema operativo conoce la ubicación de estos registros al buscar en las tablas ACPI en el arranque.

1
user123 13 mar. 2021 a las 11:05

En Windows moderno (2000 o posterior) C: es un enlace simbólico a algo como Device\HarddiskVolume1. El número puede variar. Normalmente, \Device\Bootpartition también es un enlace simbólico al mismo HarddiskVolume.

Windows no usa bibliotecas para escribir en el disco. En su lugar, utiliza controladores . La principal diferencia es que los controladores se ejecutan como parte del kernel del sistema operativo, mientras que las bibliotecas se ejecutan como parte de las aplicaciones.

0
MSalters 12 mar. 2021 a las 12:11