Informally, the definition of the process is just a running program.
One would often want to run more than a program at once, but that would “need” multiple CPU to work simultaneously. However, the OS can promote the illusion that many virtual CPUs exist when in fact there is only one physical CPU. This technique is known as time sharing, which allow users to run as many concurrent processes as they would like.
Time sharing: by allowing the resource to be used for a little while by one entity, and then a little while by another and so forth, the resource in question can be shared by many.
Space sharing: a resource is divided(in space) among those who wish to use it
The abstraction provided by the OS of a running program is called a process. And machine state is what a program can read or update when it is running.
A little more detail about how the OS get a program up and running