What exactly are `process` and `update` in PrimeFaces `p:commandXxx` components and `execute` and `render` in `f:ajax` tag?

Which works at the time of validation? What does `update` attribute do rather than updating value to component from back end? Do `process` attribute bind value to model? What exactly do `@this`, `@parent`, `@all` and `@form` in both attributes?

The example below is working fine, but I am a little confused in basic concepts.

```html
<p:commandButton process="@parent"
                 update="@form"
                 action="#{bean.submit}" 
                 value="Submit" />

```