What is the purpose of abstractions, session, session leader and process groups?

view story

http://unix.stackexchange.com – I understand from Informit article that sessions and process groups are used to terminate descendant processes on exit and send signals to related processes with job control. I believe this information can be extracted at any point using the PPID of every process. Do these concepts exist in place just to have a data structure that enables getting descendants of a process quickly? Do session and process groups get employed in things other than job control and termination of descendants? do they store any context information? Any good references will be helpful. (HowTos)