memory-managementsegmentation-faultpagingvirtual-memorypage-fault

segmentation fault vs page fault


  1. I was wondering what differences and relations are between segmentation fault and page fault?

  2. Does segmentation fault only belong to segmented memory model?

    Does page fault only belong to paged memory model?

    If both are yes, since most computer systems such as x86 and Linux use paged memory model instead of segmented memory model, why does GCC C compiler sometimes report segmentation fault error?

Thanks and regards!


Solution

  • These two things are very dissimilar, actually. A segmentation fault means a program tried to access an invalid or illegal memory address: for example, 0, or a value larger than any valid pointer. A page fault is when a pointer tries to access a page of address space that's currently not mapped onto physical memory, so that the MMU needs to grab it off of disk before it can be used. The former is an illegal condition and the program will generally be aborted; the latter is perfectly normal and the program won't even know about it.

    "Segmentation" isn't at all related to the old "segmented memory model" used by early x86 processors; it's an earlier use which just refers to a portion or segment of memory.