A process is not just a representation of a running program in memory, but is also a container of all the information of the running application. This container encapsulates all the virtual memory for that process (each process in Windows x86 has an address space of 4 GB and on x64, it is 16 TB) and their equivalent physical memory. It includes all the loaded DLLs, opened files, opened sockets, the list of threads running in this process (we will cover this later), the process ID, and much more.
A process is basically a structure in the kernel that holds all of this information inside, working as an entity to represent this running executable file, as shown in the following diagram:
Let's compare the various aspects of virtual memory and physical memory in the next section.