How does segmentation fault work internally?

In segfault.c:

void
main()
{
    int *p = NULL;

    *p = 10;
}

Obviously a segmentation fault will occur when running above program. A message will be printed out:

# ./segfault
Segmentation Fault
#

How does segmentation fault work internally? what prints the message "Segmentation Fault"?

Comments (5)