Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux上的分段错误原因_Linux_Segmentation Fault - Fatal编程技术网

Linux上的分段错误原因

Linux上的分段错误原因,linux,segmentation-fault,Linux,Segmentation Fault,根据各种来源,x86上的Linux试图通过将所有4个段的用户代码、用户数据、内核代码、内核数据设置为基数0x00000000和限制0xfffff来摆脱分段,并在分页级别处理内存访问 使用此设置,为什么仍然可以获得SIGSEGV segfault 或者SIGSEGV用于更广泛的访问冲突含义,实际原因是pagefault?如果在没有备份内存的情况下访问页面,则页面错误只会导致分段冲突;否则,MM将尝试从磁盘或交换加载页面。如果进程试图访问内存底部的64KiB,也可能出现分段冲突,因为它受到保护,以捕

根据各种来源,x86上的Linux试图通过将所有4个段的用户代码、用户数据、内核代码、内核数据设置为基数0x00000000和限制0xfffff来摆脱分段,并在分页级别处理内存访问

使用此设置,为什么仍然可以获得SIGSEGV segfault


或者SIGSEGV用于更广泛的访问冲突含义,实际原因是pagefault?

如果在没有备份内存的情况下访问页面,则页面错误只会导致分段冲突;否则,MM将尝试从磁盘或交换加载页面。如果进程试图访问内存底部的64KiB,也可能出现分段冲突,因为它受到保护,以捕获愚蠢的程序员错误,如空解引用。

如果在没有备份内存的情况下访问页面,则页面错误只会导致分段冲突;否则,MM将尝试从磁盘或交换加载页面。如果进程试图访问内存底部的64KiB,也可能出现分段冲突,因为它受到保护,以捕获愚蠢的程序员错误,如空解引用。

正如您所说,SIGSEGV被用作访问冲突。 实际原因是您访问了指向当前进程中未映射的内存的指针。
这有几种变体,例如不存在的页面、不存在的段、内核页面、写入只读页面,它们都以SIGSEGV结束。

正如您所说,SIGSEGV被用作访问冲突。 实际原因是您访问了指向当前进程中未映射的内存的指针。 这有几种变体,例如不存在的页面、不存在的段、内核页面、写入只读页面,它们都以SIGSEGV结束