The kernel receives the trap because the address is either invalid or has the wrong permissions. The exact details of how this could happen are architecture-dependent, and indeed, the UNIX use of the phrase &quot;Segmentation fault&quot; instead of &quot;Page fault&quot; is a holdover from platforms which used segmentation instead of paging. (Windows 9x&#x27;s &quot;This program has performed an illegal operation&quot; dialog box gave it the much more accurate name of an &quot;invalid page fault&quot;; I think current Windows goes with &quot;access violation&quot;.)<p>The CPU doesn&#x27;t really know about processes. (Some CPUs have features to manage &quot;tasks&quot;, but they are not commonly used 1-to-1 with actual processes, largely for efficiency&#x2F;performance reasons as I understand it.) The OS tells the CPU that any time it hits a page fault, it should start running code at this address with kernel privilege; this configuration itself also requires kernel privilege. Then it drops privileges and jumps to user code. When the user code makes an invalid memory access, the CPU follows the previous configuration about what to do in the case of an error. That runs a kernel function that delivers the signal (which is an entirely UNIX-specific concept).