Para una dirección virtual donde P = pg. no. y d = pg. offset ¿podemos decir P = dirección virtual / tamaño de página yd = dirección virtual% tamaño de página?

Sí.
Por supuesto, esa no es la forma en que se decodificará en la práctica, ya que el tamaño de la página siempre será una potencia de dos, por lo que puede decir “primeros m bits = P, últimos n bits = d” con m + n = dirección virtual longitud, 2 ^ n = tamaño de página y 2 ^ (m + n) = tamaño del espacio de direcciones virtuales.
Aún así, aritméticamente eso se traduce en lo que preguntaste.

Aquí hay un ejemplo más detallado:

Suponga una dirección virtual de 16 bits (la mantengo pequeña para simplificar el ejemplo).
Los primeros 10 bits son la dirección de la página, los últimos 6 son el desplazamiento dentro de la página.
Por lo tanto, tenemos un tamaño de página (y también marco) de 64 (2 ^ 6) entradas y un tamaño de tabla de página de 2 ^ 10 = 1024 páginas.

Si obtenemos la dirección virtual $ 1A1 (417 decimal), podemos contar bits …

$ 1A1 =% 0001 1010 0001
y descubro que los últimos seis son
% 10 0001 = $ 21 = 33 dec.
y el primero (sin ceros a la izquierda)
% 110 = $ 6 = 6 dec.
Entonces P = 6, d = 33 decimal.

… o, alternativamente, podemos dividir 417 por el tamaño de página de 64:
417/64 = 6 resto 33

… mismo resultado, como se esperaba.

Por lo tanto, buscamos la entrada 6 de la tabla de páginas para encontrar la dirección de inicio del marco físico que contiene los datos, agregamos 33 a lo que encontramos allí y buscamos la dirección física de los datos.