The page table is used to translate from virtual to physical pages.
Assuming 4KB pages (PAGE_SHIFT=12), the address 0xA100 is composed of:
Virtual address: 0xA100
Virtual page number: 0xA
Offset: 0x100
The role of page table is to translate virtual page number (0xA) to the respective physical page number (let's say 0xB).
Finally, since the offset is the same for both virtual and physical pages, the physical memory address is composed in the following way:
Physical address: 0xB100
Physical page number: 0xB
Offset: 0x100
I was wandering if, given a physical page, a process can access to all the addresses within the page? In other words, after checking page permissions in the page table, are there any checks on the offset?
No more checks on that.
If the virtual memory is organized in pages, a page is a unit of memory management.
OS always gives pages to a process. The process might organize it in some way. It can check the length of an array, or it can organize some chunks of memory like malloc. But the check handled by hardware and OS is only page-level. Inside a page, you need to do it yourself.